add some unique constraints here and there to ensure data integrity
This commit is contained in:
parent
f6e18a6dbb
commit
9f082e63ec
31
camps/migrations/0018_auto_20170128_1841.py
Normal file
31
camps/migrations/0018_auto_20170128_1841.py
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Generated by Django 1.10.5 on 2017-01-28 17:41
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
import django.contrib.postgres.fields.ranges
|
||||||
|
from django.db import migrations
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('camps', '0017_remove_camp_description'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='camp',
|
||||||
|
name='buildup',
|
||||||
|
field=django.contrib.postgres.fields.ranges.DateTimeRangeField(help_text=b'The camp buildup period.', verbose_name=b'Buildup Period'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='camp',
|
||||||
|
name='camp',
|
||||||
|
field=django.contrib.postgres.fields.ranges.DateTimeRangeField(help_text=b'The camp period.', verbose_name=b'Camp Period'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='camp',
|
||||||
|
name='teardown',
|
||||||
|
field=django.contrib.postgres.fields.ranges.DateTimeRangeField(help_text=b'The camp teardown period.', verbose_name=b'Teardown period'),
|
||||||
|
),
|
||||||
|
]
|
34
program/migrations/0015_auto_20170128_1841.py
Normal file
34
program/migrations/0015_auto_20170128_1841.py
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Generated by Django 1.10.5 on 2017-01-28 17:41
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('camps', '0018_auto_20170128_1841'),
|
||||||
|
('program', '0014_speaker_camp'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='eventtype',
|
||||||
|
name='name',
|
||||||
|
field=models.CharField(max_length=100, unique=True),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='speaker',
|
||||||
|
name='events',
|
||||||
|
field=models.ManyToManyField(blank=True, to='program.Event'),
|
||||||
|
),
|
||||||
|
migrations.AlterUniqueTogether(
|
||||||
|
name='event',
|
||||||
|
unique_together=set([('camp', 'title'), ('camp', 'slug')]),
|
||||||
|
),
|
||||||
|
migrations.AlterUniqueTogether(
|
||||||
|
name='speaker',
|
||||||
|
unique_together=set([('camp', 'name'), ('camp', 'slug')]),
|
||||||
|
),
|
||||||
|
]
|
|
@ -10,7 +10,7 @@ from datetime import timedelta
|
||||||
|
|
||||||
class EventType(CreatedUpdatedModel):
|
class EventType(CreatedUpdatedModel):
|
||||||
""" Every event needs to have a type. """
|
""" Every event needs to have a type. """
|
||||||
name = models.CharField(max_length=100)
|
name = models.CharField(max_length=100, unique=True)
|
||||||
slug = models.SlugField()
|
slug = models.SlugField()
|
||||||
color = models.CharField(max_length=50)
|
color = models.CharField(max_length=50)
|
||||||
light_text = models.BooleanField(default=False)
|
light_text = models.BooleanField(default=False)
|
||||||
|
@ -29,6 +29,7 @@ class Event(CreatedUpdatedModel):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
ordering = ['title']
|
ordering = ['title']
|
||||||
|
unique_together = (('camp', 'slug'), ('camp', 'title'))
|
||||||
|
|
||||||
def __unicode__(self):
|
def __unicode__(self):
|
||||||
return '%s (%s)' % (self.title, self.camp.title)
|
return '%s (%s)' % (self.title, self.camp.title)
|
||||||
|
@ -104,6 +105,7 @@ class Speaker(CreatedUpdatedModel):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
ordering = ['name']
|
ordering = ['name']
|
||||||
|
unique_together = (('camp', 'name'), ('camp', 'slug'))
|
||||||
|
|
||||||
def __unicode__(self):
|
def __unicode__(self):
|
||||||
return '%s (%s)' % (self.name, self.camp)
|
return '%s (%s)' % (self.name, self.camp)
|
||||||
|
|
|
@ -103,6 +103,8 @@ class EventDetailView(CampViewMixin, DetailView):
|
||||||
model = models.Event
|
model = models.Event
|
||||||
template_name = 'program_event_detail.html'
|
template_name = 'program_event_detail.html'
|
||||||
|
|
||||||
|
def get_object(self):
|
||||||
|
return self.camp.events.get(slug=self.kwargs['slug'])
|
||||||
|
|
||||||
class CallForSpeakersView(CampViewMixin, TemplateView):
|
class CallForSpeakersView(CampViewMixin, TemplateView):
|
||||||
def get_template_names(self):
|
def get_template_names(self):
|
||||||
|
|
Loading…
Reference in a new issue