feat: merge street + person created field
This commit is contained in:
51
app/base/migrations/0004_person_created_merge_street.py
Normal file
51
app/base/migrations/0004_person_created_merge_street.py
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
# Generated by Django 4.2 on 2023-06-05 22:19
|
||||||
|
|
||||||
|
import app.base.forms.fields
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
def merge_street(apps, schema_editor):
|
||||||
|
Person = apps.get_model('base', 'Person')
|
||||||
|
for x in Person.objects.all():
|
||||||
|
x.street = f'{x.street} {x.house_nr}'
|
||||||
|
x.save()
|
||||||
|
|
||||||
|
|
||||||
|
def split_street(apps, schema_editor):
|
||||||
|
Person = apps.get_model('app.base', 'Person')
|
||||||
|
for x in Person.objects.all():
|
||||||
|
if ' ' in x.street:
|
||||||
|
street, nr = x.street.rsplit(' ', 1)
|
||||||
|
else:
|
||||||
|
street, nr = x.street, '?'
|
||||||
|
x.street = street.strip()
|
||||||
|
x.house_nr = nr.strip()
|
||||||
|
x.save()
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('base', '0003_alter_transaction_time_stamp'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.RunPython(merge_street, split_street),
|
||||||
|
migrations.RemoveField(
|
||||||
|
model_name='person',
|
||||||
|
name='house_nr',
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='person',
|
||||||
|
name='created',
|
||||||
|
field=app.base.forms.fields.DateField(
|
||||||
|
default='1970-01-01', editable=False, verbose_name='Angelegt'),
|
||||||
|
preserve_default=False,
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='person',
|
||||||
|
name='street',
|
||||||
|
field=models.CharField(
|
||||||
|
max_length=200, verbose_name='Straße & Hausnummer'),
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -6,20 +6,20 @@ from app.base.forms.fields import DateField
|
|||||||
from app.base.models.course import Course
|
from app.base.models.course import Course
|
||||||
from app.base.models.booking import Booking
|
from app.base.models.booking import Booking
|
||||||
|
|
||||||
from datetime import datetime
|
from datetime import datetime, date
|
||||||
from typing import TYPE_CHECKING
|
from typing import TYPE_CHECKING
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from app.base.models import Account, Note, CourseVisit, TraitMapping
|
from app.base.models import Account, Note, CourseVisit, TraitMapping
|
||||||
|
|
||||||
|
|
||||||
class Person(models.Model):
|
class Person(models.Model):
|
||||||
uuid = models.CharField('Karten-ID', max_length=200, blank=True)
|
created: 'models.DateField[date]' = DateField('Angelegt', editable=False)
|
||||||
|
|
||||||
|
uuid = models.CharField('Karten-ID', max_length=200, blank=True)
|
||||||
first_name = models.CharField('Vorname', max_length=200)
|
first_name = models.CharField('Vorname', max_length=200)
|
||||||
last_name = models.CharField('Nachname', max_length=200)
|
last_name = models.CharField('Nachname', max_length=200)
|
||||||
birth_date: 'models.DateField[date]' = DateField('Geburtsdatum')
|
birth_date: 'models.DateField[date]' = DateField('Geburtsdatum')
|
||||||
street = models.CharField('Straße', max_length=200)
|
street = models.CharField('Straße & Hausnummer', max_length=200)
|
||||||
house_nr = models.CharField('Hausnummer', max_length=10)
|
|
||||||
zip_code = models.CharField('PLZ', max_length=10)
|
zip_code = models.CharField('PLZ', max_length=10)
|
||||||
city = models.CharField('Stadt', max_length=200)
|
city = models.CharField('Stadt', max_length=200)
|
||||||
email = models.EmailField('Email', blank=True, null=True)
|
email = models.EmailField('Email', blank=True, null=True)
|
||||||
@@ -52,13 +52,18 @@ class Person(models.Model):
|
|||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f'{self.first_name} {self.last_name}'
|
return f'{self.first_name} {self.last_name}'
|
||||||
|
|
||||||
|
def save(self, *args, **kwargs):
|
||||||
|
if not self.pk:
|
||||||
|
self.created = date.today()
|
||||||
|
return super().save(*args, **kwargs)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def display_name(self):
|
def display_name(self):
|
||||||
return f'{self.first_name} {self.last_name}'
|
return f'{self.first_name} {self.last_name}'
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def address(self):
|
def address(self):
|
||||||
return f'{self.street} {self.house_nr}, {self.zip_code} {self.city}'
|
return f'{self.street}, {self.zip_code} {self.city}'
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def missing_courses(self):
|
def missing_courses(self):
|
||||||
|
|||||||
@@ -11,9 +11,8 @@ from app.base.views.model_views.base import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
FORM_FIELDS = [ # hide UUID, and many-to-many mappings
|
FORM_FIELDS = [ # hide UUID, and many-to-many mappings
|
||||||
'first_name', 'last_name', 'birth_date', 'street', 'house_nr',
|
'first_name', 'last_name', 'birth_date', 'street', 'zip_code', 'city',
|
||||||
'zip_code', 'city', 'email', 'phone', 'identified',
|
'email', 'phone', 'identified', 'agreed_to_terms_of_service',
|
||||||
'agreed_to_terms_of_service',
|
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user