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": "."
}
],
"settings": {
"cSpell.words": [
"Reparateur",
"Reparateure",
"Reparateurs"
]
}
"settings": {}
}

View file

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

View file

@ -1,10 +1,14 @@
"""
Admin interface configuration for RepApp.
"""
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(Cafe)
admin.site.register(Question)
admin.site.register(Guest)
admin.site.register(Device)
admin.site.register(Reparateur)
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.utils.translation import gettext_lazy as _
class Cafe(models.Model):
"""
A Cafe is a "Repair-Café event.
"""
location = models.CharField(
max_length=200, verbose_name=_("Ort"))
event_date = models.DateField(verbose_name=_("Datum"))
@ -16,6 +22,9 @@ class Cafe(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"))
mail = models.CharField(max_length=200, verbose_name=_("eMail"))
@ -24,10 +33,13 @@ class Reparateur(models.Model):
verbose_name_plural = _('Reparateure')
def __str__(self):
return f'Reparatuer {self.name} (eMail: {self.mail})'
return f'Reparateur {self.name} (eMail: {self.mail})'
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"))
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})'
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"))
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"))
residence = models.CharField(max_length=200, verbose_name=_("Wohnort"))
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"))
error = models.TextField(verbose_name=_("Fehler"))
follow_up = models.BooleanField(verbose_name=_("Folgetermin"))
guest_id = models.ForeignKey(
Guest, on_delete=models.CASCADE, null=True, verbose_name=_("Gast"))
class Meta:
verbose_name = _('Gerät')
verbose_name_plural = _('Geräte')
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):
"""
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"))
confirmed = models.BooleanField(verbose_name=_("bestätigt"))
cafeid = models.ForeignKey(
cafe_id = models.ForeignKey(
Cafe, on_delete=models.CASCADE, verbose_name=_("Repair-Café"))
reparateurid = models.ForeignKey(
reparateur_id = models.ForeignKey(
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"))
class Meta:
@ -72,18 +107,21 @@ class Appointment(models.Model):
verbose_name_plural = _('Termine')
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):
"""
A Question is a request for information form a Organisator or a Reparateur for a Device.
"""
question = models.TextField(verbose_name=_("Frage"))
answer = models.TextField(verbose_name=_("Antwort"))
date = models.DateField(verbose_name=_("Erstellungsdatum"))
organisatorid = models.ForeignKey(
organisator_id = models.ForeignKey(
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"))
deviceid = models.ForeignKey(
device_id = models.ForeignKey(
Device, on_delete=models.CASCADE, verbose_name=_("Gerät"))
class Meta:
@ -91,4 +129,4 @@ class Question(models.Model):
verbose_name_plural = _('Fragen')
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}'