Add possibility to add custom states to an association.
This commit is contained in:
parent
0d6482792c
commit
5555992f06
|
@ -3,3 +3,4 @@ from dronken.models import *
|
||||||
|
|
||||||
admin.site.register(City)
|
admin.site.register(City)
|
||||||
admin.site.register(Association)
|
admin.site.register(Association)
|
||||||
|
admin.site.register(ExtraState)
|
||||||
|
|
26
dronken/migrations/0005_auto_20180913_1129.py
Normal file
26
dronken/migrations/0005_auto_20180913_1129.py
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
# Generated by Django 2.0 on 2018-09-13 11:29
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('dronken', '0004_auto_20180306_1341'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='ExtraState',
|
||||||
|
fields=[
|
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('name', models.CharField(max_length=255)),
|
||||||
|
('value', models.CharField(max_length=255)),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='association',
|
||||||
|
name='extra_states',
|
||||||
|
field=models.ManyToManyField(to='dronken.ExtraState'),
|
||||||
|
),
|
||||||
|
]
|
18
dronken/migrations/0006_auto_20180913_1135.py
Normal file
18
dronken/migrations/0006_auto_20180913_1135.py
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
# Generated by Django 2.0 on 2018-09-13 11:35
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('dronken', '0005_auto_20180913_1129'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='association',
|
||||||
|
name='state',
|
||||||
|
field=models.CharField(max_length=255),
|
||||||
|
),
|
||||||
|
]
|
18
dronken/migrations/0007_auto_20180913_1141.py
Normal file
18
dronken/migrations/0007_auto_20180913_1141.py
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
# Generated by Django 2.0 on 2018-09-13 11:41
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('dronken', '0006_auto_20180913_1135'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='association',
|
||||||
|
name='extra_states',
|
||||||
|
field=models.ManyToManyField(blank=True, null=True, to='dronken.ExtraState'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -21,10 +21,28 @@ class Association(models.Model):
|
||||||
short_name = models.CharField(max_length=255)
|
short_name = models.CharField(max_length=255)
|
||||||
slug = models.CharField(max_length=255)
|
slug = models.CharField(max_length=255)
|
||||||
intern = models.CharField(max_length=255, blank=True, null=True)
|
intern = models.CharField(max_length=255, blank=True, null=True)
|
||||||
state = models.CharField(choices=STATES, max_length=255)
|
state = models.CharField(max_length=255)
|
||||||
city = models.ForeignKey(to=City, on_delete=models.SET_NULL, blank=True, null=True)
|
city = models.ForeignKey(to=City, on_delete=models.SET_NULL, blank=True, null=True)
|
||||||
has_intern = models.BooleanField()
|
has_intern = models.BooleanField()
|
||||||
enabled = models.BooleanField()
|
enabled = models.BooleanField()
|
||||||
|
extra_states = models.ManyToManyField(to='ExtraState', blank=True, null=True)
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.name
|
||||||
|
|
||||||
|
def get_state_display(self):
|
||||||
|
values = dict(list(Association.STATES))
|
||||||
|
values.update(dict([(x.value, x.name) for x in self.extra_states.all()]))
|
||||||
|
|
||||||
|
try:
|
||||||
|
return values[self.state]
|
||||||
|
except KeyError:
|
||||||
|
return "Onbekend"
|
||||||
|
|
||||||
|
|
||||||
|
class ExtraState(models.Model):
|
||||||
|
name = models.CharField(max_length=255)
|
||||||
|
value = models.CharField(max_length=255)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.name
|
return self.name
|
||||||
|
|
|
@ -2,7 +2,7 @@ from django import forms
|
||||||
from django.urls import reverse_lazy
|
from django.urls import reverse_lazy
|
||||||
from django.views.generic import ListView, UpdateView
|
from django.views.generic import ListView, UpdateView
|
||||||
|
|
||||||
from dronken.models import City, Association
|
from dronken.models import City, Association, ExtraState
|
||||||
|
|
||||||
|
|
||||||
class CityList(ListView):
|
class CityList(ListView):
|
||||||
|
@ -36,6 +36,17 @@ class DrunkUpdateForm(forms.ModelForm):
|
||||||
model = Association
|
model = Association
|
||||||
fields = ['state']
|
fields = ['state']
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
super(DrunkUpdateForm, self).__init__(*args, **kwargs)
|
||||||
|
|
||||||
|
self.fields['state'] = forms.ChoiceField(
|
||||||
|
choices=list(Association.STATES) + [(o.value, o.name) for o in self.instance.extra_states.all()]
|
||||||
|
)
|
||||||
|
|
||||||
|
def clean(self):
|
||||||
|
print(self.instance.state)
|
||||||
|
return super(DrunkUpdateForm, self).clean()
|
||||||
|
|
||||||
|
|
||||||
class AssociationDetail(UpdateView):
|
class AssociationDetail(UpdateView):
|
||||||
template_name = 'association.html'
|
template_name = 'association.html'
|
||||||
|
|
Loading…
Reference in a new issue