mirror of
https://github.com/nottinghamtec/PyRIGS.git
synced 2026-01-18 22:12:14 +00:00
Renamed app to avoid confusion with django forms
This commit is contained in:
0
rigForms/__init__.py
Normal file
0
rigForms/__init__.py
Normal file
10
rigForms/admin.py
Normal file
10
rigForms/admin.py
Normal file
@@ -0,0 +1,10 @@
|
||||
from django.contrib import admin
|
||||
|
||||
from rigForms 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)
|
||||
59
rigForms/migrations/0001_initial.py
Normal file
59
rigForms/migrations/0001_initial.py
Normal file
@@ -0,0 +1,59 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
import RIGS.models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('RIGS', '0023_auto_20150529_0048'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Form',
|
||||
fields=[
|
||||
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
||||
('data', models.TextField(default=b'{}')),
|
||||
('event', models.ForeignKey(related_name='forms', to='RIGS.Event')),
|
||||
],
|
||||
bases=(models.Model, RIGS.models.RevisionMixin),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Schema',
|
||||
fields=[
|
||||
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
||||
('start_at', models.DateTimeField()),
|
||||
('schema', models.TextField(default=b'{}')),
|
||||
('layout', models.TextField(default=b'{}')),
|
||||
('comment', models.CharField(max_length=255)),
|
||||
],
|
||||
options={
|
||||
'ordering': ['-start_at'],
|
||||
'get_latest_by': 'start_at',
|
||||
},
|
||||
bases=(models.Model, RIGS.models.RevisionMixin),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Type',
|
||||
fields=[
|
||||
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
||||
('name', models.CharField(max_length=255)),
|
||||
('description', models.CharField(max_length=255, null=True, blank=True)),
|
||||
('active', models.BooleanField(default=True)),
|
||||
],
|
||||
bases=(models.Model, RIGS.models.RevisionMixin),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='schema',
|
||||
name='schema_type',
|
||||
field=models.ForeignKey(related_name='schemas', to='forms.Type'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='form',
|
||||
name='schema',
|
||||
field=models.ForeignKey(related_name='forms', to='forms.Schema'),
|
||||
),
|
||||
]
|
||||
0
rigForms/migrations/__init__.py
Normal file
0
rigForms/migrations/__init__.py
Normal file
47
rigForms/models.py
Normal file
47
rigForms/models.py
Normal file
@@ -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="{}")
|
||||
18
rigForms/test_models.py
Normal file
18
rigForms/test_models.py
Normal file
@@ -0,0 +1,18 @@
|
||||
from django.test import TestCase
|
||||
from rigForms import models
|
||||
|
||||
class FormModelsTestCase(TestCase):
|
||||
def setUp(self):
|
||||
self.schemaType1 = models.Type.objects.create(name="Test Type",description="Description of a test type")
|
||||
models.Schema.objects.create(start_at='2014-03-01',comment='test1', schema_type=self.schemaType1)
|
||||
models.Schema.objects.create(start_at='2016-03-01',comment='test2', schema_type=self.schemaType1)
|
||||
|
||||
self.schemaType2 = models.Type.objects.create(name="Test Type 2",description="Description of the second test type")
|
||||
models.Schema.objects.create(start_at='2014-03-01',comment='test3', schema_type=self.schemaType2)
|
||||
models.Schema.objects.create(start_at='2016-03-01',comment='test4', schema_type=self.schemaType2)
|
||||
|
||||
def test_find_correct(self):
|
||||
r = models.Schema.objects.find_schema(self.schemaType1, '2015-03-01')
|
||||
self.assertEqual(r.comment, 'test1')
|
||||
r = models.Schema.objects.find_schema(self.schemaType1, '2016-03-01')
|
||||
self.assertEqual(r.comment, 'test2')
|
||||
20
rigForms/views.py
Normal file
20
rigForms/views.py
Normal file
@@ -0,0 +1,20 @@
|
||||
from django.shortcuts import render
|
||||
from django.views import generic
|
||||
from rigForms import models
|
||||
|
||||
class FormCreate(generic.CreateView):
|
||||
model = models.Form
|
||||
fields = ['data']
|
||||
|
||||
"""
|
||||
Expects kwarg "type_pk" to contain PK of required type
|
||||
"""
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super(FormCreate, self).get_context_data(**kwargs)
|
||||
schemaType = get_object_or_404(models.Type,kwargs["type_pk"])
|
||||
currentSchema = models.Schema.objects.current_schema(schemaType)
|
||||
|
||||
context["type"] = schemaType
|
||||
context["schema"] = currentSchema
|
||||
|
||||
return context
|
||||
Reference in New Issue
Block a user