Files
2022-01-13 22:10:51 +02:00

107 lines
3.0 KiB
Python

from webapp.models import Signup, SignupForm
from django.utils import timezone
from webapp.utils import month_from_now
ALL_QUESTION_TYPES = [
{"id": "-naY2R1-h", "name": "Nimi", "type": "text", "options": []},
{"id": "5t1oN2Qev", "name": "Testi", "type": "info", "options": "teskstii"},
{"id": "MYaaAiOiU", "name": "Email", "type": "email", "options": []},
{
"id": "Wb5tmyvki",
"name": "Radio",
"type": "radiobutton",
"options": ["Yes", "no", "maybe"],
},
{
"id": "U41Zp9x0L",
"name": "Checkbox",
"type": "checkbox",
"options": ["A", "B", "C"],
},
{"id": "TnDqrvXKf", "name": "Numero", "type": "integer", "options": ["1", "100"]},
]
ALL_QUESTION_TYPES_ANSWER = {
"-naY2R1-h": "Testi",
"MYaaAiOiU": "test-spam@sahkoinsinoorikilta.fi",
"Wb5tmyvki": "maybe",
"U41Zp9x0L": ["B", "C"],
"TnDqrvXKf": 5,
}
ALL_QUESTIONS_SCHEMA = {
"type": "object",
"required": ["-naY2R1-h", "MYaaAiOiU", "Wb5tmyvki", "U41Zp9x0L", "TnDqrvXKf"],
"properties": {
"-naY2R1-h": {"type": "string"},
"MYaaAiOiU": {
"type": "string",
"format": "email",
"pattern": "^[a-zA-Z0-9.!#$%&\u2019*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*$",
},
"TnDqrvXKf": {
"type": "number",
"title": "Numero (1 -- 100)",
"maximum": 100,
"minimum": 1,
"multipleOf": 1,
},
"U41Zp9x0L": {
"type": "array",
"items": {"type": "string", "pattern": "^A$|^B$|^C$"},
"maxItems": 3,
"uniqueItems": True,
},
"Wb5tmyvki": {"type": "string", "pattern": "^Yes$|^no$|^maybe$"},
},
"minProperties": 5,
}
TEXT_SCHEMA = {
"type": "object",
"required": ["-naY2R1-h"],
"properties": {"-naY2R1-h": ALL_QUESTIONS_SCHEMA["properties"]["-naY2R1-h"]},
"minProperties": 1,
}
RADIO_SCHEMA = {
"type": "object",
"required": ["Wb5tmyvki"],
"properties": {"Wb5tmyvki": ALL_QUESTIONS_SCHEMA["properties"]["Wb5tmyvki"]},
"minProperties": 1,
}
CBOX_SCHEMA = {
"type": "object",
"required": ["U41Zp9x0L"],
"properties": {"U41Zp9x0L": ALL_QUESTIONS_SCHEMA["properties"]["U41Zp9x0L"]},
"minProperties": 1,
}
def createSignupForm(
name="Form1",
start_time=timezone.now(),
end_time=month_from_now(),
questions=ALL_QUESTION_TYPES,
schema=ALL_QUESTIONS_SCHEMA,
visible=True,
quota=1,
):
return SignupForm.objects.create(
title=name,
start_time=start_time,
end_time=end_time,
questions=questions,
visible=visible,
schema=schema,
quota=quota,
)
def createSignupObject(list_name, form, answer):
return Signup.objects.create(list_name=list_name, signupForm=form, answer=answer)
def createSignupRequest(list_name, form_id, answer):
return {"list_name": list_name, "signupForm_id": form_id, "answer": answer}