feat: add types for model fields
This commit is contained in:
@@ -1,12 +1,17 @@
|
||||
from django.db import models
|
||||
|
||||
from app.base.forms.fields import CurrencyField
|
||||
from app.base.models.person import Person
|
||||
|
||||
from typing import TYPE_CHECKING
|
||||
if TYPE_CHECKING:
|
||||
from decimal import Decimal
|
||||
from app.base.models.person import Person
|
||||
|
||||
|
||||
class Account(models.Model):
|
||||
user = models.OneToOneField(Person, on_delete=models.CASCADE)
|
||||
balance = CurrencyField('Guthaben')
|
||||
user: 'models.OneToOneField[Person]' = models.OneToOneField(
|
||||
'Person', on_delete=models.CASCADE)
|
||||
balance: 'models.DecimalField[Decimal]' = CurrencyField('Guthaben')
|
||||
locked = models.BooleanField('Gesperrt', default=False)
|
||||
|
||||
class Meta:
|
||||
|
||||
@@ -6,13 +6,11 @@ from django.urls import reverse
|
||||
from app.base.forms.fields import DateTimeField, TextField
|
||||
from app.base.forms.utils import datetime_now
|
||||
|
||||
from datetime import datetime
|
||||
from typing import TYPE_CHECKING
|
||||
if TYPE_CHECKING:
|
||||
from django.db.models import OuterRef
|
||||
from app.base.models.person import Person
|
||||
from app.base.models.booking_type import BookingType
|
||||
from datetime import timedelta # noqa F401
|
||||
from app.base.models import Person, BookingType
|
||||
from datetime import datetime, timedelta # noqa F401
|
||||
|
||||
|
||||
class Booking(models.Model):
|
||||
@@ -20,9 +18,12 @@ class Booking(models.Model):
|
||||
'BookingType', on_delete=models.PROTECT, verbose_name='Art')
|
||||
user: 'models.ForeignKey[Person]' = models.ForeignKey(
|
||||
'Person', on_delete=models.CASCADE, verbose_name='Nutzer:in')
|
||||
begin_time = DateTimeField('Beginn', default=datetime_now)
|
||||
end_time = DateTimeField('Ende', blank=True, null=True)
|
||||
comment = TextField('Kommentar', blank=True)
|
||||
begin_time: 'models.DateTimeField[datetime]' = DateTimeField(
|
||||
'Beginn', default=datetime_now)
|
||||
end_time: 'models.DateTimeField[datetime|None]' = DateTimeField(
|
||||
'Ende', blank=True, null=True)
|
||||
comment: 'models.TextField[str]' = TextField(
|
||||
'Kommentar', blank=True)
|
||||
|
||||
class Meta:
|
||||
verbose_name = 'Buchung'
|
||||
|
||||
@@ -10,7 +10,7 @@ from typing import Iterable
|
||||
class BookingType(models.Model):
|
||||
key = models.CharField('UUID', primary_key=True, max_length=20)
|
||||
label = models.CharField('Bezeichnung', max_length=200)
|
||||
price = CurrencyField('Preis (€)')
|
||||
price: 'models.DecimalField[Decimal]' = CurrencyField('Preis (€)')
|
||||
interval = models.IntegerField('Intervall (Min)', default=60)
|
||||
is_checkin = models.BooleanField('Ist Eincheck-Option', default=False)
|
||||
|
||||
|
||||
@@ -2,14 +2,20 @@ from django.db import models
|
||||
from django.urls import reverse
|
||||
|
||||
from app.base.forms.fields import TextField
|
||||
from app.base.models.course_visit import CourseVisit
|
||||
|
||||
from typing import TYPE_CHECKING
|
||||
if TYPE_CHECKING:
|
||||
from app.base.models import CourseVisit
|
||||
|
||||
|
||||
class Course(models.Model):
|
||||
instructed: models.QuerySet[CourseVisit]
|
||||
title = models.CharField('Titel', max_length=280)
|
||||
mandatory = models.BooleanField('Braucht jeder?', default=False)
|
||||
description = TextField('Beschreibung', blank=True)
|
||||
description: 'models.TextField[str]' = TextField(
|
||||
'Beschreibung', blank=True)
|
||||
|
||||
# related_name
|
||||
instructed: 'models.QuerySet[CourseVisit]'
|
||||
|
||||
class Meta:
|
||||
verbose_name = 'Einweisung'
|
||||
|
||||
@@ -6,22 +6,22 @@ from app.base.forms.fields import DateField
|
||||
from datetime import date
|
||||
from typing import TYPE_CHECKING
|
||||
if TYPE_CHECKING:
|
||||
from app.base.models.course import Course
|
||||
from app.base.models.person import Person
|
||||
from app.base.models import Course, Person
|
||||
|
||||
|
||||
class CourseVisit(models.Model):
|
||||
course: 'models.ForeignKey[Course]' = models.ForeignKey(
|
||||
'Course', on_delete=models.CASCADE,
|
||||
related_name='visits', verbose_name='Einweisung')
|
||||
'Course', on_delete=models.CASCADE, related_name='visits',
|
||||
verbose_name='Einweisung')
|
||||
participant: 'models.ForeignKey[Person]' = models.ForeignKey(
|
||||
'Person', on_delete=models.CASCADE,
|
||||
related_name='courses', verbose_name='Wer wurde eingewiesen?')
|
||||
'Person', on_delete=models.CASCADE, related_name='courses',
|
||||
verbose_name='Wer wurde eingewiesen?')
|
||||
teacher: 'models.ForeignKey[Person]|models.ForeignKey[None]' =\
|
||||
models.ForeignKey(
|
||||
'Person', on_delete=models.SET_NULL, blank=True, null=True,
|
||||
related_name='instructed', verbose_name='Durchgeführt von')
|
||||
date = DateField('Datum', default=date.today)
|
||||
date: 'models.DateField[date]' = DateField(
|
||||
'Datum', default=date.today)
|
||||
|
||||
class Meta:
|
||||
verbose_name = 'Teilnahme'
|
||||
|
||||
@@ -2,10 +2,15 @@ from django.db import models
|
||||
|
||||
from app.base.forms.fields import TextField
|
||||
|
||||
from typing import TYPE_CHECKING
|
||||
if TYPE_CHECKING:
|
||||
from app.base.models import Person
|
||||
|
||||
|
||||
class Note(models.Model):
|
||||
user = models.OneToOneField('Person', on_delete=models.CASCADE)
|
||||
text = TextField('Notiz', blank=True)
|
||||
user: 'models.OneToOneField[Person]' = models.OneToOneField(
|
||||
'Person', on_delete=models.CASCADE)
|
||||
text: 'models.TextField[str]' = TextField('Notiz', blank=True)
|
||||
|
||||
class Meta:
|
||||
verbose_name = 'Notiz'
|
||||
|
||||
@@ -17,15 +17,16 @@ class Person(models.Model):
|
||||
|
||||
first_name = models.CharField('Vorname', max_length=200)
|
||||
last_name = models.CharField('Nachname', max_length=200)
|
||||
email = models.EmailField('Email', blank=True, null=True)
|
||||
phone = models.CharField('Telefon', max_length=200, blank=True, null=True)
|
||||
birth_date = DateField('Geburtsdatum')
|
||||
zip_code = models.CharField('PLZ', max_length=10)
|
||||
city = models.CharField('Stadt', 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)
|
||||
zip_code = models.CharField('PLZ', max_length=10)
|
||||
city = models.CharField('Stadt', max_length=200)
|
||||
email = models.EmailField('Email', blank=True, null=True)
|
||||
phone = models.CharField('Telefon', max_length=200, blank=True, null=True)
|
||||
|
||||
identified = models.BooleanField('Ausweis vorgezeigt', default=False)
|
||||
identified = models.BooleanField(
|
||||
'Ausweis vorgezeigt', default=False)
|
||||
agreed_to_terms_of_service = models.BooleanField(
|
||||
'Nutzungsbedingungen zugestimmt', default=False)
|
||||
|
||||
|
||||
@@ -6,7 +6,8 @@ from app.base.forms.fields import TextField
|
||||
class Trait(models.Model):
|
||||
key = models.CharField('UUID', primary_key=True, max_length=20)
|
||||
label = models.CharField('Label', max_length=200)
|
||||
description = TextField('Beschreibung', blank=True)
|
||||
description: 'models.TextField[str]' = TextField(
|
||||
'Beschreibung', blank=True)
|
||||
|
||||
class Meta:
|
||||
verbose_name = 'Attribut'
|
||||
|
||||
@@ -6,8 +6,7 @@ from app.base.forms.fields import DateField
|
||||
from datetime import date
|
||||
from typing import TYPE_CHECKING
|
||||
if TYPE_CHECKING:
|
||||
from app.base.models.person import Person
|
||||
from app.base.models.trait import Trait
|
||||
from app.base.models import Person, Trait
|
||||
|
||||
|
||||
class TraitMapping(models.Model):
|
||||
@@ -16,8 +15,10 @@ class TraitMapping(models.Model):
|
||||
verbose_name='Werkstattnutzer:in')
|
||||
trait: 'models.ForeignKey[Trait]' = models.ForeignKey(
|
||||
'Trait', on_delete=models.CASCADE, verbose_name='Attribut')
|
||||
valid_from = DateField('Gültig von', default=date.today)
|
||||
valid_until = DateField('Gültig bis', blank=True, null=True)
|
||||
valid_from: 'models.DateField[date]' = DateField(
|
||||
'Gültig von', default=date.today)
|
||||
valid_until: 'models.DateField[date|None]' = DateField(
|
||||
'Gültig bis', blank=True, null=True)
|
||||
|
||||
class Meta:
|
||||
verbose_name = 'Attributzuweisung'
|
||||
|
||||
@@ -3,18 +3,27 @@ from django.urls import reverse
|
||||
|
||||
from app.base.forms.fields import CurrencyField, DateTimeField
|
||||
from app.base.forms.utils import datetime_now
|
||||
from app.base.models.account import Account
|
||||
|
||||
from typing import TYPE_CHECKING
|
||||
if TYPE_CHECKING:
|
||||
from datetime import datetime
|
||||
from decimal import Decimal
|
||||
from app.base.models import Account, Booking
|
||||
|
||||
|
||||
class Transaction(models.Model):
|
||||
account = models.ForeignKey(Account, on_delete=models.CASCADE,
|
||||
verbose_name='Konto')
|
||||
amount = CurrencyField('Betrag')
|
||||
booking = models.OneToOneField('Booking', on_delete=models.CASCADE,
|
||||
verbose_name='Zugehörige Zeitbuchung',
|
||||
null=True, blank=True, default=None)
|
||||
description = models.CharField('Beschreibung', max_length=500)
|
||||
time_stamp = DateTimeField('Datum / Uhrzeit', editable=False)
|
||||
account: 'models.ForeignKey[Account]' = models.ForeignKey(
|
||||
'Account', on_delete=models.CASCADE, verbose_name='Konto')
|
||||
amount: 'models.DecimalField[Decimal]' = CurrencyField(
|
||||
'Betrag')
|
||||
booking: 'models.OneToOneField[Booking]|models.OneToOneField[None]' = \
|
||||
models.OneToOneField('Booking', on_delete=models.CASCADE,
|
||||
verbose_name='Zugehörige Zeitbuchung',
|
||||
blank=True, null=True, default=None)
|
||||
description = models.CharField(
|
||||
'Beschreibung', max_length=500)
|
||||
time_stamp: 'models.DateTimeField[datetime]' = DateTimeField(
|
||||
'Datum / Uhrzeit', editable=False)
|
||||
|
||||
class Meta:
|
||||
verbose_name = 'Transaktion'
|
||||
|
||||
Reference in New Issue
Block a user