language, rename models, add verbose names
This commit is contained in:
parent
7a66820a24
commit
6ecc96e347
5 changed files with 246 additions and 40 deletions
|
|
@ -104,7 +104,7 @@ AUTH_PASSWORD_VALIDATORS = [
|
||||||
# Internationalization
|
# Internationalization
|
||||||
# https://docs.djangoproject.com/en/4.2/topics/i18n/
|
# https://docs.djangoproject.com/en/4.2/topics/i18n/
|
||||||
|
|
||||||
LANGUAGE_CODE = 'en-us'
|
LANGUAGE_CODE = 'de'
|
||||||
|
|
||||||
TIME_ZONE = 'Europe/Berlin'
|
TIME_ZONE = 'Europe/Berlin'
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
from django.contrib import admin
|
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(Organisator)
|
||||||
admin.site.register(Cafe)
|
admin.site.register(Cafe)
|
||||||
admin.site.register(Frage)
|
admin.site.register(Question)
|
||||||
admin.site.register(Gerät)
|
admin.site.register(Device)
|
||||||
admin.site.register(Reparateur)
|
admin.site.register(Reparateur)
|
||||||
admin.site.register(Termin)
|
admin.site.register(Appointment)
|
||||||
|
|
|
||||||
|
|
@ -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'),
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
@ -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'),
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
@ -1,62 +1,92 @@
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
class Cafe(models.Model):
|
class Cafe(models.Model):
|
||||||
ort = models.CharField(max_length=200)
|
location = models.CharField(
|
||||||
datum = models.DateField()
|
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):
|
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):
|
class Reparateur(models.Model):
|
||||||
name = models.CharField(max_length=200)
|
name = models.CharField(max_length=200, verbose_name=_("Name"))
|
||||||
mail = models.CharField(max_length=200)
|
mail = models.CharField(max_length=200, verbose_name=_("eMail"))
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
verbose_name = _('Reparateur')
|
||||||
|
verbose_name_plural = _('Reparateure')
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f'Reparatuer {self.name} (eMail: {self.mail})'
|
return f'Reparatuer {self.name} (eMail: {self.mail})'
|
||||||
|
|
||||||
|
|
||||||
class Organisator(models.Model):
|
class Organisator(models.Model):
|
||||||
name = models.CharField(max_length=200)
|
name = models.CharField(max_length=200, verbose_name=_("Name"))
|
||||||
mail = models.CharField(max_length=200)
|
mail = models.CharField(max_length=200, verbose_name=_("eMail"))
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
verbose_name = _('Organisator')
|
||||||
|
verbose_name_plural = _('Organisatoren')
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f'Organisator {self.name} (eMail: {self.mail})'
|
return f'Organisator {self.name} (eMail: {self.mail})'
|
||||||
|
|
||||||
|
|
||||||
class Gerät(models.Model):
|
class Device(models.Model):
|
||||||
identifier = models.CharField(max_length=200)
|
identifier = models.CharField(max_length=200, verbose_name=_("ID"))
|
||||||
besitzer = models.CharField(max_length=200)
|
owner = models.CharField(max_length=200, verbose_name=_("Besitzer"))
|
||||||
mail = models.CharField(max_length=200)
|
mail = models.CharField(max_length=200, verbose_name=_("eMail"))
|
||||||
gerät = models.CharField(max_length=200)
|
device = models.CharField(max_length=200, verbose_name=_("Gerät"))
|
||||||
fehler = models.TextField()
|
error = models.TextField(verbose_name=_("Fehler"))
|
||||||
folgetermin = models.BooleanField()
|
follow_up = models.BooleanField(verbose_name=_("Folgetermin"))
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
verbose_name = _('Gerät')
|
||||||
|
verbose_name_plural = _('Geräte')
|
||||||
|
|
||||||
def __str__(self):
|
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):
|
class Appointment(models.Model):
|
||||||
uhrzeit = models.TimeField()
|
time = models.TimeField(verbose_name=_("Zeit"))
|
||||||
bestätigt = models.BooleanField()
|
confirmed = models.BooleanField(verbose_name=_("bestätigt"))
|
||||||
cafeid = models.ForeignKey(Cafe, on_delete=models.CASCADE)
|
cafeid = models.ForeignKey(
|
||||||
reparateurid = models.ForeignKey(Reparateur, on_delete=models.CASCADE)
|
Cafe, on_delete=models.CASCADE, verbose_name=_("Repair-Café"))
|
||||||
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)
|
|
||||||
reparateurid = models.ForeignKey(
|
reparateurid = models.ForeignKey(
|
||||||
Reparateur, on_delete=models.CASCADE, null=True)
|
Reparateur, on_delete=models.CASCADE, verbose_name=_("Reparateur"))
|
||||||
gerätid = models.ForeignKey(Gerät, on_delete=models.CASCADE)
|
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):
|
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}'
|
||||||
|
|
|
||||||
Reference in a new issue