Bläddra i källkod

[people] Add a more general people app

Colin Powell 1 månad sedan
förälder
incheckning
3548c29f97

+ 0 - 0
vrobbler/apps/people/__init__.py


+ 10 - 0
vrobbler/apps/people/admin.py

@@ -0,0 +1,10 @@
+from django.contrib import admin
+from people.models import Person
+
+
+@admin.register(Person)
+class PersonAdmin(admin.ModelAdmin):
+    date_hierarchy = "created"
+    list_display = ("name", "bgg_username", "bgstat_id")
+    ordering = ("-created",)
+    search_fields = ("name",)

+ 74 - 0
vrobbler/apps/people/migrations/0001_initial.py

@@ -0,0 +1,74 @@
+# Generated by Django 4.2.19 on 2025-07-02 14:59
+
+from django.conf import settings
+from django.db import migrations, models
+import django.db.models.deletion
+import django_extensions.db.fields
+
+
+class Migration(migrations.Migration):
+
+    initial = True
+
+    dependencies = [
+        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name="Person",
+            fields=[
+                (
+                    "id",
+                    models.BigAutoField(
+                        auto_created=True,
+                        primary_key=True,
+                        serialize=False,
+                        verbose_name="ID",
+                    ),
+                ),
+                (
+                    "created",
+                    django_extensions.db.fields.CreationDateTimeField(
+                        auto_now_add=True, verbose_name="created"
+                    ),
+                ),
+                (
+                    "modified",
+                    django_extensions.db.fields.ModificationDateTimeField(
+                        auto_now=True, verbose_name="modified"
+                    ),
+                ),
+                (
+                    "name",
+                    models.CharField(blank=True, max_length=100, null=True),
+                ),
+                (
+                    "bgstat_id",
+                    models.CharField(blank=True, max_length=100, null=True),
+                ),
+                (
+                    "bgg_username",
+                    models.CharField(blank=True, max_length=100, null=True),
+                ),
+                (
+                    "lichess_username",
+                    models.CharField(blank=True, max_length=100, null=True),
+                ),
+                ("bio", models.TextField(blank=True, null=True)),
+                (
+                    "user",
+                    models.ForeignKey(
+                        blank=True,
+                        null=True,
+                        on_delete=django.db.models.deletion.DO_NOTHING,
+                        to=settings.AUTH_USER_MODEL,
+                    ),
+                ),
+            ],
+            options={
+                "get_latest_by": "modified",
+                "abstract": False,
+            },
+        ),
+    ]

+ 0 - 0
vrobbler/apps/people/migrations/__init__.py


+ 17 - 0
vrobbler/apps/people/models.py

@@ -0,0 +1,17 @@
+from django.contrib.auth import get_user_model
+from django.db import models
+from django_extensions.db.models import TimeStampedModel
+
+User = get_user_model()
+BNULL = {"blank": True, "null": True}
+
+
+class Person(TimeStampedModel):
+    """A non-system user model that can be optionally associated with a User."""
+
+    user = models.ForeignKey(User, on_delete=models.DO_NOTHING, **BNULL)
+    name = models.CharField(max_length=100, **BNULL)
+    bgstat_id = models.CharField(max_length=100, **BNULL)
+    bgg_username = models.CharField(max_length=100, **BNULL)
+    lichess_username = models.CharField(max_length=100, **BNULL)
+    bio = models.TextField(**BNULL)

+ 1 - 0
vrobbler/settings.py

@@ -134,6 +134,7 @@ INSTALLED_APPS = [
     "encrypted_field",
     "profiles",
     "scrobbles",
+    "people",
     "videos",
     "music",
     "podcasts",