diff --git a/README.md b/README.md
index 534538e..ef59dd8 100644
--- a/README.md
+++ b/README.md
@@ -66,6 +66,7 @@ User erstellen:
Testdaten laden (optional):
./manage.py loaddata --app crowdfund testdata
+ ./manage.py loaddata --app memberdb testdata
Entwicklungsserver starten:
diff --git a/interna/front/templates/front/base.html b/interna/front/templates/front/base.html
index 1bd4b3b..8bae131 100644
--- a/interna/front/templates/front/base.html
+++ b/interna/front/templates/front/base.html
@@ -30,7 +30,7 @@
- coredump
+ Coredump Interna
{% block navigation %}
diff --git a/interna/front/templates/front/members.html b/interna/front/templates/front/members.html
index d03fb77..4e6a2cf 100644
--- a/interna/front/templates/front/members.html
+++ b/interna/front/templates/front/members.html
@@ -38,8 +38,9 @@
Aktivmitglieder ({{ active_memberships|length }
Email |
Natel |
Wohnort |
- Twitter |
Github |
+ Schlüssel |
+ Safe-Zugang |
CCC |
Mitglied seit |
@@ -52,8 +53,9 @@ Aktivmitglieder ({{ active_memberships|length }
{{ member.email|urlize }} |
{{ member.phone }} |
{{ member.city }} |
- {% if member.twitter %}{{ member.twitter }}{% endif %} |
{% if member.github %}{{ member.github }}{% endif %} |
+ {{ member.key_number|default:"-" }} |
+ {{ member.get_key_safe_display|default:"-" }} |
{{ membership.ccc|yesno:"Ja,Nein" }} |
{{ membership.start|date:"Y-m-d" }} |
diff --git a/interna/memberdb/admin.py b/interna/memberdb/admin.py
index cbce752..113489d 100644
--- a/interna/memberdb/admin.py
+++ b/interna/memberdb/admin.py
@@ -4,9 +4,9 @@
class MemberAdmin(admin.ModelAdmin):
- list_display = ('name', 'email', 'city', 'twitter', 'github')
- search_fields = ('name', 'pk', 'email', 'phone', 'city', 'twitter', 'github')
- list_filter = ('city',)
+ list_display = ('name', 'email', 'city', 'github', 'key_number', 'key_safe')
+ search_fields = ('name', 'pk', 'email', 'phone', 'city', 'github', 'key_number', 'key_safe')
+ list_filter = ('city', 'key_safe')
class MembershipAdmin(admin.ModelAdmin):
diff --git a/interna/memberdb/fixtures/testdata.json b/interna/memberdb/fixtures/testdata.json
new file mode 100644
index 0000000..063392d
--- /dev/null
+++ b/interna/memberdb/fixtures/testdata.json
@@ -0,0 +1,66 @@
+[
+{
+ "model": "memberdb.member",
+ "pk": 1,
+ "fields": {
+ "name": "Donald Knuth",
+ "email": "knuth@example.com",
+ "phone": "+41 79 000 11 22",
+ "city": "Stanford",
+ "key_safe": "app"
+ }
+},
+{
+ "model": "memberdb.member",
+ "pk": 2,
+ "fields": {
+ "name": "Ada Lovelace",
+ "email": "ada@example.com",
+ "phone": "+41 78 000 33 44",
+ "city": "London",
+ "key_number": "13",
+ "key_safe": "code"
+ }
+},
+{
+ "model": "memberdb.member",
+ "pk": 3,
+ "fields": {
+ "name": "Marvin Minsky",
+ "email": "marvin@example.com",
+ "phone": "+41 77 000 55 66",
+ "city": "Massachusetts"
+ }
+},
+{
+ "model": "memberdb.membership",
+ "pk": 1,
+ "fields": {
+ "Member": 1,
+ "start": "2017-08-20",
+ "category": 2,
+ "ccc": false
+ }
+},
+{
+ "model": "memberdb.membership",
+ "pk": 2,
+ "fields": {
+ "Member": 2,
+ "start": "2020-08-20",
+ "category": 1,
+ "ccc": true
+ }
+},
+{
+ "model": "memberdb.membership",
+ "pk": 3,
+ "fields": {
+ "Member": 3,
+ "start": "2015-08-20",
+ "end": "2020-08-20",
+ "category": 1,
+ "ccc": true
+ }
+}
+]
diff --git a/interna/memberdb/migrations/0004_remove_member_twitter.py b/interna/memberdb/migrations/0004_remove_member_twitter.py
new file mode 100644
index 0000000..0eeda4a
--- /dev/null
+++ b/interna/memberdb/migrations/0004_remove_member_twitter.py
@@ -0,0 +1,17 @@
+# Generated by Django 4.2.18 on 2025-01-22 12:02
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ("memberdb", "0003_remove_member_access_code"),
+ ]
+
+ operations = [
+ migrations.RemoveField(
+ model_name="member",
+ name="twitter",
+ ),
+ ]
diff --git a/interna/memberdb/migrations/0005_member_key_number_member_key_safe.py b/interna/memberdb/migrations/0005_member_key_number_member_key_safe.py
new file mode 100644
index 0000000..42ee585
--- /dev/null
+++ b/interna/memberdb/migrations/0005_member_key_number_member_key_safe.py
@@ -0,0 +1,30 @@
+# Generated by Django 4.2.18 on 2025-01-22 12:12
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ("memberdb", "0004_remove_member_twitter"),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name="member",
+ name="key_number",
+ field=models.CharField(
+ blank=True, help_text="Schlüsselnummer", max_length=100
+ ),
+ ),
+ migrations.AddField(
+ model_name="member",
+ name="key_safe",
+ field=models.CharField(
+ blank=True,
+ choices=[("app", "App"), ("code", "Code")],
+ help_text="Art des Schlüsselsafe-Zugriffs",
+ max_length=100,
+ ),
+ ),
+ ]
diff --git a/interna/memberdb/models.py b/interna/memberdb/models.py
index 7c59f25..cc511a2 100644
--- a/interna/memberdb/models.py
+++ b/interna/memberdb/models.py
@@ -7,16 +7,23 @@
class Member(models.Model):
"""A member of the association."""
+ class SafeAccessType(models.TextChoices):
+ APP = 'app', 'App'
+ CODE = 'code', 'Code'
+
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=100)
email = models.EmailField(unique=True)
phone = models.CharField(max_length=16, blank=True)
city = models.CharField(max_length=100, blank=True,
help_text='Wohnort')
- twitter = models.CharField(max_length=32, blank=True,
- help_text='Twitter Benutzername')
github = models.CharField(max_length=32, blank=True,
help_text='Github Benutzername')
+ key_number = models.CharField(max_length=100, blank=True,
+ help_text='Schlüsselnummer')
+ key_safe = models.CharField(max_length=100, blank=True,
+ choices=SafeAccessType.choices,
+ help_text='Art des Schlüsselsafe-Zugriffs')
class Meta:
ordering = ('name', 'id')