diff --git a/forms/__init__.py b/forms/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/forms/admin.py b/forms/admin.py new file mode 100644 index 00000000..ab79164c --- /dev/null +++ b/forms/admin.py @@ -0,0 +1,10 @@ +from django.contrib import admin + +from forms import models + +import reversion + +# Register your models here. +admin.site.register(models.Type, reversion.VersionAdmin) +admin.site.register(models.Schema, reversion.VersionAdmin) +admin.site.register(models.Form, reversion.VersionAdmin) \ No newline at end of file diff --git a/forms/migrations/__init__.py b/forms/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/forms/models.py b/forms/models.py new file mode 100644 index 00000000..43de5794 --- /dev/null +++ b/forms/models.py @@ -0,0 +1,47 @@ +from django.db import models +from django.utils.encoding import python_2_unicode_compatible +import reversion + +from RIGS.models import RevisionMixin + + +@reversion.register +class Type(models.Model, RevisionMixin): + name = models.CharField(max_length=255, blank=False, null=False) + description = models.CharField(max_length=255, blank=True, null=True) + active = models.BooleanField(default=True) + +class SchemaManager(models.Manager): + def current_schema(self, schemaType): + return self.find_schema(schemaType, datetime.datetime.now()) + + def find_schema(self, schemaType, date): + return self.filter(schema_type=schemaType, start_at__lte=date).latest() + +@reversion.register +@python_2_unicode_compatible +class Schema(models.Model, RevisionMixin): + schema_type = models.ForeignKey('Type', related_name='schemas', blank=False) + + start_at = models.DateTimeField() + + schema = models.TextField(blank=False, null=False, default="{}") + layout = models.TextField(blank=False, null=False, default="{}") + + comment = models.CharField(max_length=255) + + objects = SchemaManager() + + class Meta: + ordering = ['-start_at'] + get_latest_by = 'start_at' + + def __str__(self): + return self.comment + " " + str(self.start_at) + " @ " + "%" + +@reversion.register +class Form(models.Model, RevisionMixin): + event = models.ForeignKey('RIGS.Event', related_name='forms', blank=False) + schema = models.ForeignKey('Schema', related_name='forms', blank=False) + + data = models.TextField(blank=False, null=False, default="{}") diff --git a/forms/tests.py b/forms/tests.py new file mode 100644 index 00000000..7ce503c2 --- /dev/null +++ b/forms/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/forms/views.py b/forms/views.py new file mode 100644 index 00000000..91ea44a2 --- /dev/null +++ b/forms/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here.