Move Event and Registration model to own app

This commit is contained in:
Aarni Halinen
2018-06-05 19:33:35 +03:00
parent 0207bdf22b
commit 4e8adebb2d
14 changed files with 172 additions and 66 deletions
+49
View File
@@ -0,0 +1,49 @@
# Ilmotunkki
## Terms
- Signup, Form with collection of questions
- Response, One answer to some signup
- Quota, Amount of people allowed to respond with some option selected.
- In generic case there is no option and quota is just max number of people.
## Requirements
- Officials may generate signups forms
- Officials may see results from signups
- Officials may see some stats from their signups
- for example distributions of multiple choice answers
- Officials should be able to edit signups wherever possible
- Propably not possible to edit after first response
- Officials should be able to delete responses
- Officials should be able to embed payment information to the signup?
- TODO: is there need for unique reference numbers for every response?
- Officials should be able to save a signup to a reusable template.
- Possibility to save templates?
- Signup may be attached to an event
- Multiple signups to a single event should be possible (FTMK uses for museum visits? Erna asked if it was possible in old web)
- Possibility for external service (Google Form, URL will suffice)
- Signup should support custom quotas
- Atleast quotas from multiple choices and checkboxes
- Text quotas are risky (typos everywhere!!)
- Signup should have start and end times
- Signup should support atleast following questiontypes
- Text
- multiple choice (select one)
- checkbox (boolean yes/no)
- Signup should support reserve slots.
- TODO: quota based reserves or generic? or both?
- Responding should send confirm email
- Response should be editable by responder and only by the responder until the closing of the signup
- TODO: is there need to custom edit period or disable?
- Responders should see amount of quotas left.
- Responders should see some information about other responses
- TODO: names? should this be editable by officials?
- Or superadmin can edit and the one signing up within edit period
- NOTE: Quota related info is exposed if any info is printed
- When quotas need to be hidden? PoTa?
View File
+3
View File
@@ -0,0 +1,3 @@
from django.contrib import admin
# Register your models here.
+5
View File
@@ -0,0 +1,5 @@
from django.apps import AppConfig
class IlmotunkkiConfig(AppConfig):
name = 'ilmotunkki'
View File
+63
View File
@@ -0,0 +1,63 @@
"""Signup and Event models."""
from django.db import models
from django.utils import timezone
from webapp.models import Tag, BaseFeed
from webapp.utils import month_from_now
from django.utils.translation import ugettext_lazy as _
from auditlog.registry import auditlog
from phonenumber_field.modelfields import PhoneNumberField
from django.contrib.postgres.fields import JSONField
import logging
VERBOSE_NAME = _('Webapp')
class Event(BaseFeed):
"""Model for event."""
start_time = models.DateTimeField(default=timezone.now)
end_time = models.DateTimeField(default=timezone.now)
registration = models.ForeignKey(
'Registration', on_delete=models.CASCADE, null=True)
def __str__(self):
return _('Event: {}').format(self.title)
class Meta:
verbose_name = _('Event')
verbose_name_plural = _('Events')
class Registration(models.Model):
"""Model for event registration."""
name = models.CharField(max_length=255)
email = models.EmailField()
options = JSONField()
def __str__(self):
return _('Registration: {}').format(self.name)
class Meta:
verbose_name = _('Registration')
verbose_name_plural = _('Registrations')
class Signup(models.Model):
start = models.DateTimeField()
end = models.DateTimeField()
class Question(models.Model):
pass
class Answer(models.Model):
signup = models.ForeignKey(Signup, on_delete=models.CASCADE)
question = models.ForeignKey(Question, on_delete=models.PROTECT)
auditlog.register(Event)
auditlog.register(Signup)
+3
View File
@@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.
+17
View File
@@ -0,0 +1,17 @@
"""Translation classes."""
from modeltranslation.translator import register, TranslationOptions
from signup.models import Event, Registration
@register(Event)
class EventTranslationOptions(TranslationOptions):
"""Class for event translation options."""
fields = ()
@register(Registration)
class RegistrationTranslationOptions(TranslationOptions):
"""Class for registration translation options."""
fields = ('name',)
+25
View File
@@ -0,0 +1,25 @@
"""Signup urls."""
from django.conf.urls import url
from django.conf import settings
from django.utils.translation import ugettext_lazy as _
# from kaehmy.views import view
# from kaehmy.views import list_view
# from kaehmy.views import submit
# from kaehmy.views import comment
# from kaehmy.views import statistics_view
# from kaehmy.views import export_view
urlpatterns = [
# kaehmy
# url(r'^new', new_form),
# url(r'^$', list_view),
# url(r'^submit', submit),
# url(r'^statistics', statistics_view),
# url(r'^export', export_view),
]
if settings.DEBUG:
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
urlpatterns += staticfiles_urlpatterns()
+3
View File
@@ -0,0 +1,3 @@
from django.shortcuts import render
# Create your views here.