Skip to content

Commit a73b1b9

Browse files
committed
Update dummy app with example models for development
1 parent 0e16f77 commit a73b1b9

File tree

12 files changed

+161
-7
lines changed

12 files changed

+161
-7
lines changed

app/admin.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,18 @@
77
class AddressAdmin(admin.ModelAdmin):
88
list_display = ("id", "__str__")
99
list_display_links = ("id", "__str__")
10-
search_fields = ("city", "country", "street", "zip_code")
10+
search_fields = ("id", "city", "country", "street", "zip_code")
11+
12+
13+
@admin.register(models.Municipality)
14+
class MunicipalityAdmin(admin.ModelAdmin):
15+
list_display = ("id", "__str__")
16+
list_display_links = ("id", "__str__")
17+
search_fields = ("id", "title")
1118

1219

1320
@admin.register(models.Person)
1421
class PersonAdmin(admin.ModelAdmin):
1522
list_display = ("id", "__str__", "email")
1623
list_display_links = ("id", "__str__")
17-
search_fields = ("email", "firstname", "lastname")
24+
search_fields = ("id", "email", "firstname", "lastname")
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
# Generated by Django 4.2.23 on 2025-10-09 08:55
2+
3+
import django.db.models.deletion
4+
import django_extensions.db.fields
5+
from django.db import migrations
6+
from django.db import models
7+
8+
9+
class Migration(migrations.Migration):
10+
11+
dependencies = [
12+
("app", "0002_add_person_type_and_relation"),
13+
]
14+
15+
operations = [
16+
migrations.CreateModel(
17+
name="Municipality",
18+
fields=[
19+
(
20+
"id",
21+
models.BigAutoField(
22+
auto_created=True,
23+
primary_key=True,
24+
serialize=False,
25+
verbose_name="ID",
26+
),
27+
),
28+
(
29+
"created",
30+
django_extensions.db.fields.CreationDateTimeField(
31+
auto_now_add=True, verbose_name="created"
32+
),
33+
),
34+
(
35+
"modified",
36+
django_extensions.db.fields.ModificationDateTimeField(
37+
auto_now=True, verbose_name="modified"
38+
),
39+
),
40+
("title", models.CharField(unique=True, verbose_name="title")),
41+
],
42+
options={
43+
"verbose_name": "Municipality",
44+
"verbose_name_plural": "Municipalities",
45+
},
46+
),
47+
migrations.AddField(
48+
model_name="person",
49+
name="place_of_residence",
50+
field=models.ForeignKey(
51+
blank=True,
52+
null=True,
53+
on_delete=django.db.models.deletion.PROTECT,
54+
related_name="persons",
55+
to="app.municipality",
56+
verbose_name="Place of residence",
57+
),
58+
),
59+
]
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# Generated by Django 4.2.23 on 2025-10-09 10:54
2+
3+
from django.db import migrations
4+
from django.db import models
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
dependencies = [
10+
("app", "0003_add_model_municipality"),
11+
]
12+
13+
operations = [
14+
migrations.AddField(
15+
model_name="address",
16+
name="external_uid",
17+
field=models.UUIDField(null=True, verbose_name="external uid"),
18+
),
19+
]

app/migrations/max_migration.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
0002_add_person_type_and_relation
1+
0004_add_external_uid_field

app/models/__init__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
__all__ = ["Address", "Person", "PersonType"]
1+
__all__ = ["Address", "Municipality", "Person", "PersonType"]
22

33
from .address import Address
4+
from .municipality import Municipality
45
from .person import Person
56
from .person import PersonType

app/models/address.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ class Address(CustomFieldBaseModel):
99
city = models.CharField(verbose_name="city", blank=True)
1010
country = models.CharField(verbose_name="country", blank=True)
1111
street = models.CharField(verbose_name="street", blank=True)
12+
external_uid = models.UUIDField(verbose_name="external uid", null=True)
1213
zip_code = models.CharField(verbose_name="postal code", blank=True)
1314

1415
target = GenericForeignKey("target_type", "target_id")

app/models/municipality.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
from django.db import models
2+
from django_extensions.db.models import TimeStampedModel
3+
4+
5+
class Municipality(TimeStampedModel):
6+
title = models.CharField(verbose_name="title", unique=True)
7+
8+
class Meta:
9+
verbose_name = "Municipality"
10+
verbose_name_plural = "Municipalities"
11+
12+
def __str__(self) -> str:
13+
return self.title

app/models/person.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,14 @@ class Person(CustomFieldBaseModel):
2727
on_delete=models.SET_NULL,
2828
verbose_name="Type",
2929
)
30+
place_of_residence = models.ForeignKey(
31+
"Municipality",
32+
on_delete=models.PROTECT,
33+
blank=True,
34+
null=True,
35+
verbose_name="Place of residence",
36+
related_name="persons",
37+
)
3038

3139
class Meta:
3240
verbose_name = "Person"

app/serializers/__init__.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
from typing import Any
2+
3+
from constance import config
4+
5+
from django_features.serializers import MappingSerializer
6+
7+
8+
class BaseMappingSerializer(MappingSerializer):
9+
@property
10+
def mapping(self) -> dict[str, dict[str, Any]]:
11+
return config.MODEL_MAPPING_FIELD

app/serializers/person.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
1+
from typing import Any
2+
3+
from constance import config
4+
15
from app.models import Person
6+
from app.serializers import BaseMappingSerializer
27
from django_features.custom_fields.serializers import CustomFieldBaseModelSerializer
38

49

@@ -10,3 +15,13 @@ class Meta:
1015
"firstname",
1116
"lastname",
1217
]
18+
19+
20+
class PersonMappingSerializer(BaseMappingSerializer):
21+
class Meta:
22+
model = Person
23+
fields = "__all__"
24+
25+
@property
26+
def mapping(self) -> dict[str, dict[str, Any]]:
27+
return config.MODEL_MAPPING_FIELD

0 commit comments

Comments
 (0)