improve field naming, add cspell config
This commit is contained in:
parent
c899fd9200
commit
8762a51d27
6 changed files with 156 additions and 22 deletions
|
|
@ -4,11 +4,5 @@
|
||||||
"path": "."
|
"path": "."
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"settings": {
|
"settings": {}
|
||||||
"cSpell.words": [
|
|
||||||
"Reparateur",
|
|
||||||
"Reparateure",
|
|
||||||
"Reparateurs"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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'),
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
@ -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',
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
@ -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}'
|
||||||
|
|
|
||||||
Reference in a new issue