From 6ecc96e347914e215ae6eb70ad7f744ec00c60df Mon Sep 17 00:00:00 2001 From: Tom Irgang Date: Sun, 16 Apr 2023 20:48:19 +0200 Subject: [PATCH] language, rename models, add verbose names --- rc_hip/rc_hip/settings.py | 2 +- rc_hip/repapp/admin.py | 8 +- ..._question_remove_termin_cafeid_and_more.py | 153 ++++++++++++++++++ ...ter_cafe_event_date_alter_cafe_location.py | 23 +++ rc_hip/repapp/models.py | 100 ++++++++---- 5 files changed, 246 insertions(+), 40 deletions(-) create mode 100644 rc_hip/repapp/migrations/0004_appointment_device_question_remove_termin_cafeid_and_more.py create mode 100644 rc_hip/repapp/migrations/0005_alter_cafe_event_date_alter_cafe_location.py diff --git a/rc_hip/rc_hip/settings.py b/rc_hip/rc_hip/settings.py index 3879b67..dcc181e 100644 --- a/rc_hip/rc_hip/settings.py +++ b/rc_hip/rc_hip/settings.py @@ -104,7 +104,7 @@ AUTH_PASSWORD_VALIDATORS = [ # Internationalization # https://docs.djangoproject.com/en/4.2/topics/i18n/ -LANGUAGE_CODE = 'en-us' +LANGUAGE_CODE = 'de' TIME_ZONE = 'Europe/Berlin' diff --git a/rc_hip/repapp/admin.py b/rc_hip/repapp/admin.py index b66eff3..c618799 100644 --- a/rc_hip/repapp/admin.py +++ b/rc_hip/repapp/admin.py @@ -1,10 +1,10 @@ from django.contrib import admin -from .models import Organisator, Cafe, Frage, Gerät, Reparateur, Termin +from .models import Organisator, Cafe, Question, Device, Reparateur, Appointment admin.site.register(Organisator) admin.site.register(Cafe) -admin.site.register(Frage) -admin.site.register(Gerät) +admin.site.register(Question) +admin.site.register(Device) admin.site.register(Reparateur) -admin.site.register(Termin) +admin.site.register(Appointment) diff --git a/rc_hip/repapp/migrations/0004_appointment_device_question_remove_termin_cafeid_and_more.py b/rc_hip/repapp/migrations/0004_appointment_device_question_remove_termin_cafeid_and_more.py new file mode 100644 index 0000000..c3a132a --- /dev/null +++ b/rc_hip/repapp/migrations/0004_appointment_device_question_remove_termin_cafeid_and_more.py @@ -0,0 +1,153 @@ +# Generated by Django 4.2 on 2023-04-16 18:44 + +import datetime +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('repapp', '0003_alter_frage_organisatorid_alter_frage_reparateurid_and_more'), + ] + + operations = [ + migrations.CreateModel( + name='Appointment', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('time', models.TimeField(verbose_name='Zeit')), + ('confirmed', models.BooleanField(verbose_name='bestätigt')), + ], + options={ + 'verbose_name': 'Termin', + 'verbose_name_plural': 'Termine', + }, + ), + migrations.CreateModel( + name='Device', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('identifier', models.CharField(max_length=200, verbose_name='ID')), + ('owner', models.CharField(max_length=200, verbose_name='Besitzer')), + ('mail', models.CharField(max_length=200, verbose_name='eMail')), + ('device', models.CharField(max_length=200, verbose_name='Gerät')), + ('error', models.TextField(verbose_name='Fehler')), + ('follow_up', models.BooleanField(verbose_name='Folgetermin')), + ], + options={ + 'verbose_name': 'Gerät', + 'verbose_name_plural': 'Geräte', + }, + ), + migrations.CreateModel( + name='Question', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('question', models.TextField(verbose_name='Frage')), + ('answer', models.TextField(verbose_name='Antwort')), + ('date', models.DateField(verbose_name='Erstellungsdatum')), + ('deviceid', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='repapp.device', verbose_name='Gerät')), + ], + options={ + 'verbose_name': 'Frage', + 'verbose_name_plural': 'Fragen', + }, + ), + migrations.RemoveField( + model_name='termin', + name='cafeid', + ), + migrations.RemoveField( + model_name='termin', + name='gerätid', + ), + migrations.RemoveField( + model_name='termin', + name='reparateurid', + ), + migrations.AlterModelOptions( + name='cafe', + options={'verbose_name': 'Repair-Café', 'verbose_name_plural': 'Repair-Cafés'}, + ), + migrations.AlterModelOptions( + name='organisator', + options={'verbose_name': 'Organisator', 'verbose_name_plural': 'Organisatoren'}, + ), + migrations.AlterModelOptions( + name='reparateur', + options={'verbose_name': 'Reparateur', 'verbose_name_plural': 'Reparateure'}, + ), + migrations.RemoveField( + model_name='cafe', + name='datum', + ), + migrations.RemoveField( + model_name='cafe', + name='ort', + ), + migrations.AddField( + model_name='cafe', + name='event_date', + field=models.DateField(default=datetime.date(2023, 4, 16), verbose_name='Datum'), + ), + migrations.AddField( + model_name='cafe', + name='location', + field=models.CharField(default='', max_length=200, verbose_name='Ort'), + ), + migrations.AlterField( + model_name='organisator', + name='mail', + field=models.CharField(max_length=200, verbose_name='eMail'), + ), + migrations.AlterField( + model_name='organisator', + name='name', + field=models.CharField(max_length=200, verbose_name='Name'), + ), + migrations.AlterField( + model_name='reparateur', + name='mail', + field=models.CharField(max_length=200, verbose_name='eMail'), + ), + migrations.AlterField( + model_name='reparateur', + name='name', + field=models.CharField(max_length=200, verbose_name='Name'), + ), + migrations.DeleteModel( + name='Frage', + ), + migrations.DeleteModel( + name='Gerät', + ), + migrations.DeleteModel( + name='Termin', + ), + migrations.AddField( + model_name='question', + name='organisatorid', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='repapp.organisator', verbose_name='Organisator'), + ), + migrations.AddField( + model_name='question', + name='reparateurid', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='repapp.reparateur', verbose_name='Reparateur'), + ), + migrations.AddField( + model_name='appointment', + name='cafeid', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='repapp.cafe', verbose_name='Repair-Café'), + ), + migrations.AddField( + model_name='appointment', + name='deviceid', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='repapp.device', verbose_name='Gerät'), + ), + migrations.AddField( + model_name='appointment', + name='reparateurid', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='repapp.reparateur', verbose_name='Reparateur'), + ), + ] diff --git a/rc_hip/repapp/migrations/0005_alter_cafe_event_date_alter_cafe_location.py b/rc_hip/repapp/migrations/0005_alter_cafe_event_date_alter_cafe_location.py new file mode 100644 index 0000000..1deaaa8 --- /dev/null +++ b/rc_hip/repapp/migrations/0005_alter_cafe_event_date_alter_cafe_location.py @@ -0,0 +1,23 @@ +# Generated by Django 4.2 on 2023-04-16 18:45 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('repapp', '0004_appointment_device_question_remove_termin_cafeid_and_more'), + ] + + operations = [ + migrations.AlterField( + model_name='cafe', + name='event_date', + field=models.DateField(verbose_name='Datum'), + ), + migrations.AlterField( + model_name='cafe', + name='location', + field=models.CharField(max_length=200, verbose_name='Ort'), + ), + ] diff --git a/rc_hip/repapp/models.py b/rc_hip/repapp/models.py index 2cb2793..e718c03 100644 --- a/rc_hip/repapp/models.py +++ b/rc_hip/repapp/models.py @@ -1,62 +1,92 @@ from django.db import models +from django.utils.translation import gettext_lazy as _ class Cafe(models.Model): - ort = models.CharField(max_length=200) - datum = models.DateField() + location = models.CharField( + max_length=200, verbose_name=_("Ort")) + event_date = models.DateField(verbose_name=_("Datum")) + + class Meta: + verbose_name = _('Repair-Café') + verbose_name_plural = _('Repair-Cafés') def __str__(self): - return f'Repair-Café am {self.datum} (Ort: {self.ort})' + return f'Repair-Café am {self.event_date} (Ort: {self.location})' class Reparateur(models.Model): - name = models.CharField(max_length=200) - mail = models.CharField(max_length=200) + name = models.CharField(max_length=200, verbose_name=_("Name")) + mail = models.CharField(max_length=200, verbose_name=_("eMail")) + + class Meta: + verbose_name = _('Reparateur') + verbose_name_plural = _('Reparateure') def __str__(self): return f'Reparatuer {self.name} (eMail: {self.mail})' class Organisator(models.Model): - name = models.CharField(max_length=200) - mail = models.CharField(max_length=200) + name = models.CharField(max_length=200, verbose_name=_("Name")) + mail = models.CharField(max_length=200, verbose_name=_("eMail")) + + class Meta: + verbose_name = _('Organisator') + verbose_name_plural = _('Organisatoren') def __str__(self): return f'Organisator {self.name} (eMail: {self.mail})' -class Gerät(models.Model): - identifier = models.CharField(max_length=200) - besitzer = models.CharField(max_length=200) - mail = models.CharField(max_length=200) - gerät = models.CharField(max_length=200) - fehler = models.TextField() - folgetermin = models.BooleanField() +class Device(models.Model): + identifier = models.CharField(max_length=200, verbose_name=_("ID")) + owner = models.CharField(max_length=200, verbose_name=_("Besitzer")) + mail = models.CharField(max_length=200, verbose_name=_("eMail")) + device = models.CharField(max_length=200, verbose_name=_("Gerät")) + error = models.TextField(verbose_name=_("Fehler")) + follow_up = models.BooleanField(verbose_name=_("Folgetermin")) + + class Meta: + verbose_name = _('Gerät') + verbose_name_plural = _('Geräte') def __str__(self): - return f'Gerät {self.gerät} von {self.besitzer} (eMail: {self.mail})' + return f'Gerät {self.device} von {self.owner} (eMail: {self.mail})' -class Termin(models.Model): - uhrzeit = models.TimeField() - bestätigt = models.BooleanField() - cafeid = models.ForeignKey(Cafe, on_delete=models.CASCADE) - reparateurid = models.ForeignKey(Reparateur, on_delete=models.CASCADE) - gerätid = models.ForeignKey(Gerät, on_delete=models.CASCADE, null=True) - - def __str__(self): - return f'Termin {self.cafeid.datum} {self.uhrzeit} für Gerät {self.gerätid.gerät} von {self.gerätid.besitzer}' - - -class Frage(models.Model): - frage = models.TextField() - antwort = models.TextField() - datum = models.DateField() - organisatorid = models.ForeignKey( - Organisator, on_delete=models.CASCADE, null=True) +class Appointment(models.Model): + time = models.TimeField(verbose_name=_("Zeit")) + confirmed = models.BooleanField(verbose_name=_("bestätigt")) + cafeid = models.ForeignKey( + Cafe, on_delete=models.CASCADE, verbose_name=_("Repair-Café")) reparateurid = models.ForeignKey( - Reparateur, on_delete=models.CASCADE, null=True) - gerätid = models.ForeignKey(Gerät, on_delete=models.CASCADE) + Reparateur, on_delete=models.CASCADE, verbose_name=_("Reparateur")) + deviceid = models.ForeignKey( + Device, on_delete=models.CASCADE, null=True, verbose_name=_("Gerät")) + + class Meta: + verbose_name = _('Termin') + verbose_name_plural = _('Termine') def __str__(self): - return f'Frage vom {self.datum} zum Gerät {self.gerätid.gerät}' + return f'Termin {self.cafeid.event_date} {self.time} für Gerät {self.deviceid.device} von {self.deviceid.owner}' + + +class Question(models.Model): + question = models.TextField(verbose_name=_("Frage")) + answer = models.TextField(verbose_name=_("Antwort")) + date = models.DateField(verbose_name=_("Erstellungsdatum")) + organisatorid = models.ForeignKey( + Organisator, on_delete=models.CASCADE, null=True, verbose_name=_("Organisator")) + reparateurid = models.ForeignKey( + Reparateur, on_delete=models.CASCADE, null=True, verbose_name=_("Reparateur")) + deviceid = models.ForeignKey( + Device, on_delete=models.CASCADE, verbose_name=_("Gerät")) + + class Meta: + verbose_name = _('Frage') + verbose_name_plural = _('Fragen') + + def __str__(self): + return f'Frage vom {self.date} zum Gerät {self.deviceid.device}'