stages/prompt: only set placeholder when in context
Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org>
This commit is contained in:
parent
133bedafba
commit
99ef94b7aa
|
@ -13,6 +13,7 @@ from rest_framework.fields import (
|
||||||
EmailField,
|
EmailField,
|
||||||
HiddenField,
|
HiddenField,
|
||||||
IntegerField,
|
IntegerField,
|
||||||
|
ReadOnlyField,
|
||||||
)
|
)
|
||||||
from rest_framework.serializers import BaseSerializer
|
from rest_framework.serializers import BaseSerializer
|
||||||
|
|
||||||
|
@ -85,6 +86,8 @@ class Prompt(SerializerModel):
|
||||||
"required": self.required,
|
"required": self.required,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if self.type == FieldTypes.TEXT_READ_ONLY:
|
||||||
|
field_class = ReadOnlyField
|
||||||
if self.type == FieldTypes.EMAIL:
|
if self.type == FieldTypes.EMAIL:
|
||||||
field_class = EmailField
|
field_class = EmailField
|
||||||
if self.type == FieldTypes.NUMBER:
|
if self.type == FieldTypes.NUMBER:
|
||||||
|
@ -101,14 +104,14 @@ class Prompt(SerializerModel):
|
||||||
if self.type == FieldTypes.DATE_TIME:
|
if self.type == FieldTypes.DATE_TIME:
|
||||||
field_class = DateTimeField
|
field_class = DateTimeField
|
||||||
if self.type == FieldTypes.STATIC:
|
if self.type == FieldTypes.STATIC:
|
||||||
kwargs["initial"] = self.placeholder
|
kwargs["default"] = self.placeholder
|
||||||
kwargs["required"] = False
|
kwargs["required"] = False
|
||||||
kwargs["label"] = ""
|
kwargs["label"] = ""
|
||||||
if self.type == FieldTypes.SEPARATOR:
|
if self.type == FieldTypes.SEPARATOR:
|
||||||
kwargs["required"] = False
|
kwargs["required"] = False
|
||||||
kwargs["label"] = ""
|
kwargs["label"] = ""
|
||||||
if default:
|
if default:
|
||||||
kwargs["initial"] = default
|
kwargs["default"] = default
|
||||||
return field_class(**kwargs)
|
return field_class(**kwargs)
|
||||||
|
|
||||||
def save(self, *args, **kwargs):
|
def save(self, *args, **kwargs):
|
||||||
|
|
|
@ -100,7 +100,8 @@ class PromptChallengeResponse(ChallengeResponse):
|
||||||
type__in=[FieldTypes.HIDDEN, FieldTypes.STATIC, FieldTypes.TEXT_READ_ONLY]
|
type__in=[FieldTypes.HIDDEN, FieldTypes.STATIC, FieldTypes.TEXT_READ_ONLY]
|
||||||
)
|
)
|
||||||
for static_hidden in static_hidden_fields:
|
for static_hidden in static_hidden_fields:
|
||||||
attrs[static_hidden.field_key] = self.fields[static_hidden.field_key].initial
|
field = self.fields[static_hidden.field_key]
|
||||||
|
attrs[static_hidden.field_key] = field.default
|
||||||
|
|
||||||
# Check if we have two password fields, and make sure they are the same
|
# Check if we have two password fields, and make sure they are the same
|
||||||
password_fields: QuerySet[Prompt] = self.stage.fields.filter(type=FieldTypes.PASSWORD)
|
password_fields: QuerySet[Prompt] = self.stage.fields.filter(type=FieldTypes.PASSWORD)
|
||||||
|
@ -165,10 +166,11 @@ class PromptStageView(ChallengeStageView):
|
||||||
def get_challenge(self, *args, **kwargs) -> Challenge:
|
def get_challenge(self, *args, **kwargs) -> Challenge:
|
||||||
fields = list(self.executor.current_stage.fields.all().order_by("order"))
|
fields = list(self.executor.current_stage.fields.all().order_by("order"))
|
||||||
serializers = []
|
serializers = []
|
||||||
context_prompt = self.executor.plan.get(PLAN_CONTEXT_PROMPT, {})
|
context_prompt = self.executor.plan.context.get(PLAN_CONTEXT_PROMPT, {})
|
||||||
for field in fields:
|
for field in fields:
|
||||||
data = StagePromptSerializer(field).data
|
data = StagePromptSerializer(field).data
|
||||||
data["placeholder"] = context_prompt.get(field.field_key)
|
if field.field_key in context_prompt:
|
||||||
|
data["placeholder"] = context_prompt.get(field.field_key)
|
||||||
serializers.append(data)
|
serializers.append(data)
|
||||||
challenge = PromptChallenge(
|
challenge = PromptChallenge(
|
||||||
data={
|
data={
|
||||||
|
|
Reference in New Issue