improve field naming, add cspell config

This commit is contained in:
Tom Irgang 2023-04-17 09:41:34 +02:00
parent c899fd9200
commit 8762a51d27
6 changed files with 156 additions and 22 deletions

View file

@ -4,11 +4,5 @@
"path": "." "path": "."
} }
], ],
"settings": { "settings": {}
"cSpell.words": [
"Reparateur",
"Reparateure",
"Reparateurs"
]
}
} }

View file

@ -74,8 +74,8 @@ Attribute:
Annahmen: Annahmen:
- Reparatuere sind immmer verfügbar, d.h. jeder Reparatuer wird zu einem neuen Repair-Café Termin automatisch hinzugefügt. - Reparateure sind immer verfügbar, d.h. jeder Reparateur wird zu einem neuen Repair-Café Termin automatisch hinzugefügt.
- Reparatuere können alles reparieren. Greäte Kategorien, Skills, ... können später hinzugefügt werden. - Reparateure können alles reparieren. Geräte Kategorien, Skills, ... können später hinzugefügt werden.
### Organisator ### Organisator

View file

@ -1,10 +1,14 @@
"""
Admin interface configuration for RepApp.
"""
from django.contrib import admin from django.contrib import admin
from .models import Organisator, Cafe, Question, Device, Reparateur, Appointment from .models import Organisator, Cafe, Question, Device, Reparateur, Appointment, Guest
admin.site.register(Organisator) admin.site.register(Organisator)
admin.site.register(Cafe) admin.site.register(Cafe)
admin.site.register(Question) admin.site.register(Question)
admin.site.register(Guest)
admin.site.register(Device) admin.site.register(Device)
admin.site.register(Reparateur) admin.site.register(Reparateur)
admin.site.register(Appointment) admin.site.register(Appointment)

View file

@ -0,0 +1,50 @@
# Generated by Django 4.2 on 2023-04-17 05:26
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('repapp', '0007_alter_device_phone_alter_device_residence'),
]
operations = [
migrations.CreateModel(
name='Guest',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('identifier', models.CharField(max_length=200, verbose_name='ID')),
('name', models.CharField(max_length=200, verbose_name='Name')),
('phone', models.CharField(max_length=200, verbose_name='Telefonnummer')),
('residence', models.CharField(max_length=200, verbose_name='Wohnort')),
('mail', models.CharField(max_length=200, verbose_name='eMail')),
],
options={
'verbose_name': 'Gast',
'verbose_name_plural': 'Gäste',
},
),
migrations.RemoveField(
model_name='device',
name='mail',
),
migrations.RemoveField(
model_name='device',
name='owner',
),
migrations.RemoveField(
model_name='device',
name='phone',
),
migrations.RemoveField(
model_name='device',
name='residence',
),
migrations.AddField(
model_name='device',
name='guestid',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='repapp.guest', verbose_name='Gast'),
),
]

View file

@ -0,0 +1,48 @@
# Generated by Django 4.2 on 2023-04-17 07:40
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('repapp', '0008_guest_remove_device_mail_remove_device_owner_and_more'),
]
operations = [
migrations.RenameField(
model_name='appointment',
old_name='cafeid',
new_name='cafe_id',
),
migrations.RenameField(
model_name='appointment',
old_name='deviceid',
new_name='device_id',
),
migrations.RenameField(
model_name='appointment',
old_name='reparateurid',
new_name='reparateur_id',
),
migrations.RenameField(
model_name='device',
old_name='guestid',
new_name='guest_id',
),
migrations.RenameField(
model_name='question',
old_name='deviceid',
new_name='device_id',
),
migrations.RenameField(
model_name='question',
old_name='organisatorid',
new_name='organisator_id',
),
migrations.RenameField(
model_name='question',
old_name='reparateurid',
new_name='reparateur_id',
),
]

View file

@ -1,8 +1,14 @@
"""
This module implements the models of RepApp.
"""
from django.db import models from django.db import models
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
class Cafe(models.Model): class Cafe(models.Model):
"""
A Cafe is a "Repair-Café event.
"""
location = models.CharField( location = models.CharField(
max_length=200, verbose_name=_("Ort")) max_length=200, verbose_name=_("Ort"))
event_date = models.DateField(verbose_name=_("Datum")) event_date = models.DateField(verbose_name=_("Datum"))
@ -16,6 +22,9 @@ class Cafe(models.Model):
class Reparateur(models.Model): class Reparateur(models.Model):
"""
A Reparateur is a member of the Repair-Café who supports guests with fixing their devices.
"""
name = models.CharField(max_length=200, verbose_name=_("Name")) name = models.CharField(max_length=200, verbose_name=_("Name"))
mail = models.CharField(max_length=200, verbose_name=_("eMail")) mail = models.CharField(max_length=200, verbose_name=_("eMail"))
@ -24,10 +33,13 @@ class Reparateur(models.Model):
verbose_name_plural = _('Reparateure') verbose_name_plural = _('Reparateure')
def __str__(self): def __str__(self):
return f'Reparatuer {self.name} (eMail: {self.mail})' return f'Reparateur {self.name} (eMail: {self.mail})'
class Organisator(models.Model): class Organisator(models.Model):
"""
A Organisator is a member of the Repair-Café who arranges repair appointments with guests.
"""
name = models.CharField(max_length=200, verbose_name=_("Name")) name = models.CharField(max_length=200, verbose_name=_("Name"))
mail = models.CharField(max_length=200, verbose_name=_("eMail")) mail = models.CharField(max_length=200, verbose_name=_("eMail"))
@ -39,32 +51,55 @@ class Organisator(models.Model):
return f'Organisator {self.name} (eMail: {self.mail})' return f'Organisator {self.name} (eMail: {self.mail})'
class Device(models.Model): class Guest(models.Model):
"""
A guest is a owner of a broken device who wants support in context of a Repair-Café.
"""
identifier = models.CharField(max_length=200, verbose_name=_("ID")) identifier = models.CharField(max_length=200, verbose_name=_("ID"))
owner = models.CharField(max_length=200, verbose_name=_("Besitzer")) name = models.CharField(max_length=200, verbose_name=_("Name"))
phone = models.CharField(max_length=200, verbose_name=_("Telefonnummer")) phone = models.CharField(max_length=200, verbose_name=_("Telefonnummer"))
residence = models.CharField(max_length=200, verbose_name=_("Wohnort")) residence = models.CharField(max_length=200, verbose_name=_("Wohnort"))
mail = models.CharField(max_length=200, verbose_name=_("eMail")) mail = models.CharField(max_length=200, verbose_name=_("eMail"))
class Meta:
verbose_name = _('Gast')
verbose_name_plural = _('Gäste')
def __str__(self):
return f'Gast {self.name} (eMail: {self.mail})'
class Device(models.Model):
"""
A Device is a broken device owned by a guest which shall be repaired during a Repair-Café.
"""
identifier = models.CharField(max_length=200, verbose_name=_("ID"))
device = models.CharField(max_length=200, verbose_name=_("Gerät")) device = models.CharField(max_length=200, verbose_name=_("Gerät"))
error = models.TextField(verbose_name=_("Fehler")) error = models.TextField(verbose_name=_("Fehler"))
follow_up = models.BooleanField(verbose_name=_("Folgetermin")) follow_up = models.BooleanField(verbose_name=_("Folgetermin"))
guest_id = models.ForeignKey(
Guest, on_delete=models.CASCADE, null=True, verbose_name=_("Gast"))
class Meta: class Meta:
verbose_name = _('Gerät') verbose_name = _('Gerät')
verbose_name_plural = _('Geräte') verbose_name_plural = _('Geräte')
def __str__(self): def __str__(self):
return f'Gerät {self.device} von {self.owner} (eMail: {self.mail})' return f'Gerät {self.device} von {self.guest_id.name}'
class Appointment(models.Model): class Appointment(models.Model):
"""
A Appointment is a match of a broken Device and a Reparateur during a Repair-Café
with a defined time slot.
"""
time = models.TimeField(verbose_name=_("Zeit")) time = models.TimeField(verbose_name=_("Zeit"))
confirmed = models.BooleanField(verbose_name=_("bestätigt")) confirmed = models.BooleanField(verbose_name=_("bestätigt"))
cafeid = models.ForeignKey( cafe_id = models.ForeignKey(
Cafe, on_delete=models.CASCADE, verbose_name=_("Repair-Café")) Cafe, on_delete=models.CASCADE, verbose_name=_("Repair-Café"))
reparateurid = models.ForeignKey( reparateur_id = models.ForeignKey(
Reparateur, on_delete=models.CASCADE, verbose_name=_("Reparateur")) Reparateur, on_delete=models.CASCADE, verbose_name=_("Reparateur"))
deviceid = models.ForeignKey( device_id = models.ForeignKey(
Device, on_delete=models.CASCADE, null=True, verbose_name=_("Gerät")) Device, on_delete=models.CASCADE, null=True, verbose_name=_("Gerät"))
class Meta: class Meta:
@ -72,18 +107,21 @@ class Appointment(models.Model):
verbose_name_plural = _('Termine') verbose_name_plural = _('Termine')
def __str__(self): def __str__(self):
return f'Termin {self.cafeid.event_date} {self.time} für Gerät {self.deviceid.device} von {self.deviceid.owner}' return f'Termin {self.cafe_id.event_date} {self.time} für Gerät {self.device_id.device}'
class Question(models.Model): class Question(models.Model):
"""
A Question is a request for information form a Organisator or a Reparateur for a Device.
"""
question = models.TextField(verbose_name=_("Frage")) question = models.TextField(verbose_name=_("Frage"))
answer = models.TextField(verbose_name=_("Antwort")) answer = models.TextField(verbose_name=_("Antwort"))
date = models.DateField(verbose_name=_("Erstellungsdatum")) date = models.DateField(verbose_name=_("Erstellungsdatum"))
organisatorid = models.ForeignKey( organisator_id = models.ForeignKey(
Organisator, on_delete=models.CASCADE, null=True, verbose_name=_("Organisator")) Organisator, on_delete=models.CASCADE, null=True, verbose_name=_("Organisator"))
reparateurid = models.ForeignKey( reparateur_id = models.ForeignKey(
Reparateur, on_delete=models.CASCADE, null=True, verbose_name=_("Reparateur")) Reparateur, on_delete=models.CASCADE, null=True, verbose_name=_("Reparateur"))
deviceid = models.ForeignKey( device_id = models.ForeignKey(
Device, on_delete=models.CASCADE, verbose_name=_("Gerät")) Device, on_delete=models.CASCADE, verbose_name=_("Gerät"))
class Meta: class Meta:
@ -91,4 +129,4 @@ class Question(models.Model):
verbose_name_plural = _('Fragen') verbose_name_plural = _('Fragen')
def __str__(self): def __str__(self):
return f'Frage vom {self.date} zum Gerät {self.deviceid.device}' return f'Frage vom {self.date} zum Gerät {self.device_id.device}'