Tags für Kontakte

Fixes #64
This commit is contained in:
gw3000 2023-10-22 12:32:21 +02:00
parent f8c1482ef8
commit accdb60a8c
9 changed files with 231 additions and 2 deletions

View file

@ -0,0 +1,29 @@
# Generated by Django 4.2.6 on 2023-10-22 09:59
from django.db import migrations, models
import uuid
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='Aviary',
fields=[
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
('description', models.CharField(max_length=256, unique=True, verbose_name='Beschreibung')),
('condition', models.CharField(choices=[('Offen', 'Offen'), ('Geschlossen', 'Geschlossen'), ('Gesperrt', 'Gesperrt')], max_length=256, verbose_name='Zustand')),
('last_ward_round', models.DateField(verbose_name='letzte Visite')),
('comment', models.CharField(blank=True, max_length=512, null=True, verbose_name='Bemerkungen')),
],
options={
'verbose_name': 'Voliere',
'verbose_name_plural': 'Volieren',
},
),
]

View file

@ -0,0 +1,81 @@
# Generated by Django 4.2.6 on 2023-10-22 09:59
import ckeditor.fields
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
import uuid
class Migration(migrations.Migration):
initial = True
dependencies = [
('aviary', '0001_initial'),
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
operations = [
migrations.CreateModel(
name='Bird',
fields=[
('id', models.BigAutoField(primary_key=True, serialize=False)),
('name', models.CharField(max_length=256, unique=True, verbose_name='Bezeichnung')),
('description', ckeditor.fields.RichTextField(verbose_name='Erläuterungen')),
],
options={
'verbose_name': 'Vogel',
'verbose_name_plural': 'Vögel',
'ordering': ['name'],
},
),
migrations.CreateModel(
name='BirdStatus',
fields=[
('id', models.BigAutoField(primary_key=True, serialize=False)),
('description', models.CharField(max_length=256, unique=True, verbose_name='Bezeichnung')),
],
options={
'verbose_name': 'Patientenstatus',
'verbose_name_plural': 'Patientenstatus',
},
),
migrations.CreateModel(
name='Circumstance',
fields=[
('id', models.BigAutoField(primary_key=True, serialize=False)),
('description', models.CharField(max_length=256, verbose_name='Bezeichnung')),
],
options={
'verbose_name': 'Fundumstand',
'verbose_name_plural': 'Fundumstände',
},
),
migrations.CreateModel(
name='FallenBird',
fields=[
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
('bird_identifier', models.CharField(max_length=256, verbose_name='Patienten Alias')),
('age', models.CharField(choices=[('unbekannt', 'unbekannt'), ('Ei', 'Ei'), ('Nestling', 'Nestling'), ('Ästling', 'Ästling'), ('Juvenil', 'Juvenil'), ('Adult', 'Adult')], max_length=15, verbose_name='Alter')),
('sex', models.CharField(choices=[('Weiblich', 'Weiblich'), ('Männlich', 'Männlich'), ('Unbekannt', 'Unbekannt')], max_length=15, verbose_name='Geschlecht')),
('date_found', models.DateField(verbose_name='Datum des Fundes')),
('place', models.CharField(max_length=256, verbose_name='Ort des Fundes')),
('created', models.DateTimeField(auto_now_add=True, verbose_name='angelegt am')),
('updated', models.DateTimeField(auto_now=True, verbose_name='geändert am')),
('diagnostic_finding', models.CharField(max_length=256, verbose_name='Diagnose bei Fund')),
('sent_to', models.CharField(blank=True, max_length=256, null=True, verbose_name='Übersandt nach')),
('comment', models.TextField(blank=True, null=True, verbose_name='Bemerkung')),
('finder', models.TextField(blank=True, default='Vorname: \nNachname: \nStraße: \nHausnummer: \nStadt: \nPLZ: \nTelefonnummer: ', null=True, verbose_name='Finder')),
('aviary', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='aviary.aviary', verbose_name='Voliere')),
('bird', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='bird.bird', verbose_name='Vogel')),
('find_circumstances', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='bird.circumstance', verbose_name='Fundumstände')),
('status', models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='bird.birdstatus')),
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Benutzer')),
],
options={
'verbose_name': 'Patient',
'verbose_name_plural': 'Patienten',
},
),
]

View file

@ -1,6 +1,6 @@
from django.contrib import admin
from .models import Contact
from .models import Contact, ContactTag
@admin.register(Contact)
@ -13,3 +13,10 @@ class FallenBirdAdmin(admin.ModelAdmin):
"comment",
]
list_filter = ("name", "phone", "email", "address", "comment")
@admin.register(ContactTag)
class ContactTagAdmin(admin.ModelAdmin):
list_display = [
"tag",
]
list_filter = ("tag",)

View file

@ -0,0 +1,30 @@
# Generated by Django 4.2.6 on 2023-10-22 09:59
from django.db import migrations, models
import uuid
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='Contact',
fields=[
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
('name', models.CharField(blank=True, max_length=50, null=True, verbose_name='Kontakt Name')),
('phone', models.CharField(blank=True, max_length=50, null=True, verbose_name='Telefon')),
('email', models.CharField(blank=True, max_length=50, null=True, verbose_name='Email')),
('address', models.CharField(blank=True, max_length=50, null=True, verbose_name='Adresse')),
('comment', models.CharField(blank=True, max_length=50, null=True, verbose_name='Bemerkungen')),
],
options={
'verbose_name': 'Kontakt',
'verbose_name_plural': 'Kontakte',
},
),
]

View file

@ -0,0 +1,31 @@
# Generated by Django 4.2.6 on 2023-10-22 10:14
from django.db import migrations, models
import django.db.models.deletion
import uuid
class Migration(migrations.Migration):
dependencies = [
('contact', '0001_initial'),
]
operations = [
migrations.CreateModel(
name='ContactTag',
fields=[
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
('tag', models.CharField(blank=True, max_length=50, null=True, verbose_name='Tag')),
],
options={
'verbose_name': 'Kontakt Tag',
'verbose_name_plural': 'Kontakt Tags',
},
),
migrations.AddField(
model_name='contact',
name='tag_id',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='contact.contacttag', verbose_name='Tag'),
),
]

View file

@ -21,7 +21,21 @@ class Contact(models.Model):
comment = models.CharField(
max_length=50, null=True, blank=True, verbose_name=_("Bemerkungen")
)
tag_id = models.ForeignKey("ContactTag", on_delete=models.CASCADE, null=True, blank=True, verbose_name=_("Tag"))
class Meta:
verbose_name = _("Kontakt")
verbose_name_plural = _("Kontakte")
class ContactTag(models.Model):
id = models.UUIDField(primary_key=True, default=uuid4, editable=False)
tag = models.CharField(
max_length=50, null=True, blank=True, verbose_name=_("Tag")
)
class Meta:
verbose_name = _("Kontakt Tag")
verbose_name_plural = _("Kontakt Tags")
def __str__(self):
return self.tag

View file

@ -29,7 +29,7 @@
"pagingType": "first_last_numbers",
responsive: true,
scrollX: true,
order: [[2, 'desc']],
order: [[0, 'asc']],
columnDefs: [
{ responsivePriority: 1, targets: 0 },
]
@ -57,6 +57,7 @@
<th>Email</th>
<th>Adresse</th>
<th>Bemerkung</th>
<th>Kategorie</th>
</tr>
</thead>
<tbody>
@ -67,6 +68,7 @@
<td> {{ item.email|default_if_none:"" }} </td>
<td> {{ item.address|default_if_none:"" }} </td>
<td> {{ item.comment|default_if_none:"" }} </td>
<td> {{ item.tag_id|default_if_none:"" }} </td>
</tr>
{% endfor %}
</tbody>

View file

@ -87,6 +87,7 @@ JAZZMIN_SETTINGS = {
"bird.FallenBird": "fas fa-solid fa-bed",
"costs.Costs": "fas fa-solid fa-money-bill",
"contact.Contact": "fas fa-solid fa-address-card",
"contact.ContactTag": "fas fa-solid fa-tags",
},
# Icons that are used when one is not manually specified
# "default_icon_parents": "fas fa-chevron-circle-right",

View file

@ -0,0 +1,34 @@
# Generated by Django 4.2.6 on 2023-10-22 09:59
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
import uuid
class Migration(migrations.Migration):
initial = True
dependencies = [
('bird', '0001_initial'),
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
operations = [
migrations.CreateModel(
name='Costs',
fields=[
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
('costs', models.DecimalField(decimal_places=2, default='0.00', max_digits=5, verbose_name='Betrag')),
('created', models.DateField(verbose_name='Gebucht am')),
('comment', models.CharField(blank=True, max_length=512, null=True, verbose_name='Bemerkungen')),
('id_bird', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='bird.fallenbird', verbose_name='Patient')),
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Benutzer')),
],
options={
'verbose_name': 'Kosten',
'verbose_name_plural': 'Kosten',
},
),
]