feat: merge street + person created field

This commit is contained in:
relikd
2023-06-06 01:15:11 +02:00
parent 3761ffd6a9
commit 2f5645907e
3 changed files with 63 additions and 8 deletions

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

View File

@@ -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):

View File

@@ -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',
]