Add possibility to add custom states to an association.
This commit is contained in:
		
							parent
							
								
									0d6482792c
								
							
						
					
					
						commit
						5555992f06
					
				
					 6 changed files with 94 additions and 2 deletions
				
			
		| 
						 | 
					@ -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…
	
	Add table
		Add a link
		
	
		Reference in a new issue