Add possibility to add custom states to an association.

This commit is contained in:
Kevin Alberts 2018-09-13 13:43:47 +02:00
parent 0d6482792c
commit 5555992f06
Signed by: Kurocon
GPG key ID: BCD496FEBA0C6BC1
6 changed files with 94 additions and 2 deletions

View file

@ -3,3 +3,4 @@ from dronken.models import *
admin.site.register(City)
admin.site.register(Association)
admin.site.register(ExtraState)

View 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'),
),
]

View 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),
),
]

View 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'),
),
]

View file

@ -21,10 +21,28 @@ class Association(models.Model):
short_name = models.CharField(max_length=255)
slug = models.CharField(max_length=255)
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)
has_intern = 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):
return self.name

View file

@ -2,7 +2,7 @@ from django import forms
from django.urls import reverse_lazy
from django.views.generic import ListView, UpdateView
from dronken.models import City, Association
from dronken.models import City, Association, ExtraState
class CityList(ListView):
@ -36,6 +36,17 @@ class DrunkUpdateForm(forms.ModelForm):
model = Association
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):
template_name = 'association.html'