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.booking import Booking
|
||||
|
||||
from datetime import datetime
|
||||
from datetime import datetime, date
|
||||
from typing import TYPE_CHECKING
|
||||
if TYPE_CHECKING:
|
||||
from app.base.models import Account, Note, CourseVisit, TraitMapping
|
||||
|
||||
|
||||
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)
|
||||
last_name = models.CharField('Nachname', max_length=200)
|
||||
birth_date: 'models.DateField[date]' = DateField('Geburtsdatum')
|
||||
street = models.CharField('Straße', max_length=200)
|
||||
house_nr = models.CharField('Hausnummer', max_length=10)
|
||||
street = models.CharField('Straße & Hausnummer', max_length=200)
|
||||
zip_code = models.CharField('PLZ', max_length=10)
|
||||
city = models.CharField('Stadt', max_length=200)
|
||||
email = models.EmailField('Email', blank=True, null=True)
|
||||
@@ -52,13 +52,18 @@ class Person(models.Model):
|
||||
def __str__(self):
|
||||
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
|
||||
def display_name(self):
|
||||
return f'{self.first_name} {self.last_name}'
|
||||
|
||||
@property
|
||||
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
|
||||
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
|
||||
'first_name', 'last_name', 'birth_date', 'street', 'house_nr',
|
||||
'zip_code', 'city', 'email', 'phone', 'identified',
|
||||
'agreed_to_terms_of_service',
|
||||
'first_name', 'last_name', 'birth_date', 'street', 'zip_code', 'city',
|
||||
'email', 'phone', 'identified', 'agreed_to_terms_of_service',
|
||||
]
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user