diff options
| author | Bobby <[email protected]> | 2024-12-17 19:25:04 +0000 |
|---|---|---|
| committer | Bobby <[email protected]> | 2024-12-17 19:25:04 +0000 |
| commit | 79d44e676adeb998c3072b4a58d08815b45d4676 (patch) | |
| tree | 13dd865f0b809b0e77d5cfc491fa5909c1ea15c1 /apps | |
| parent | a12bd485351559af96d019d55a4b0f8dbc1b7265 (diff) | |
| download | thatcomputerscientist-79d44e676adeb998c3072b4a58d08815b45d4676.tar.xz thatcomputerscientist-79d44e676adeb998c3072b4a58d08815b45d4676.zip | |
journal stuff
Diffstat (limited to 'apps')
| -rw-r--r-- | apps/core/urls.py | 2 | ||||
| -rw-r--r-- | apps/core/views.py | 15 | ||||
| -rw-r--r-- | apps/journals/__init__.py | 0 | ||||
| -rw-r--r-- | apps/journals/admin.py | 7 | ||||
| -rw-r--r-- | apps/journals/apps.py | 6 | ||||
| -rw-r--r-- | apps/journals/migrations/0001_initial.py | 78 | ||||
| -rw-r--r-- | apps/journals/migrations/0002_journal_slug.py | 19 | ||||
| -rw-r--r-- | apps/journals/migrations/__init__.py | 0 | ||||
| -rw-r--r-- | apps/journals/models.py | 39 | ||||
| -rw-r--r-- | apps/journals/tests.py | 3 | ||||
| -rw-r--r-- | apps/journals/urls.py | 6 | ||||
| -rw-r--r-- | apps/journals/views.py | 3 |
12 files changed, 178 insertions, 0 deletions
diff --git a/apps/core/urls.py b/apps/core/urls.py index db770dd0..3d64a60d 100644 --- a/apps/core/urls.py +++ b/apps/core/urls.py @@ -5,4 +5,6 @@ from . import views app_name = "core" urlpatterns = [ path("", views.home, name="home"), + # My Pages + path("my/journals/", views.my_journals, name="my_journals"), ] diff --git a/apps/core/views.py b/apps/core/views.py index 037f52c2..1790098a 100644 --- a/apps/core/views.py +++ b/apps/core/views.py @@ -1,6 +1,7 @@ from django.shortcuts import render from thatcomputerscientist.utils import i18npatterns from apps.administration.models import Announcement +from apps.journals.models import Journal from internal.mal_wrapper import get_mal_recent_activity from internal.weblog_utilities import recent_weblogs @@ -20,3 +21,17 @@ def home(request): "recent_weblogs": recent_weblogs(lang=LANGUAGE_CODE), } return render(request, f"{LANGUAGE_CODE}/core/home.html", context) + + +# My Pages +def my_journals(request): + META = { + "title": "My Journals", + } + LANGUAGE_CODE = i18npatterns(request.LANGUAGE_CODE) + request.META.update(META) + journals = Journal.objects.filter(owner=request.user).order_by("-created_at") + context = { + "journals": journals, + } + return render(request, f"{LANGUAGE_CODE}/core/my/journals.html", context) diff --git a/apps/journals/__init__.py b/apps/journals/__init__.py new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/apps/journals/__init__.py diff --git a/apps/journals/admin.py b/apps/journals/admin.py new file mode 100644 index 00000000..e619370d --- /dev/null +++ b/apps/journals/admin.py @@ -0,0 +1,7 @@ +from django.contrib import admin + +# Register your models here. +from apps.journals.models import Journal, JournalEntry + +admin.site.register(Journal) +admin.site.register(JournalEntry) diff --git a/apps/journals/apps.py b/apps/journals/apps.py new file mode 100644 index 00000000..6b3c8ae9 --- /dev/null +++ b/apps/journals/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class JournalsConfig(AppConfig): + default_auto_field = "django.db.models.BigAutoField" + name = "apps.journals" diff --git a/apps/journals/migrations/0001_initial.py b/apps/journals/migrations/0001_initial.py new file mode 100644 index 00000000..485a5314 --- /dev/null +++ b/apps/journals/migrations/0001_initial.py @@ -0,0 +1,78 @@ +# Generated by Django 5.1.4 on 2024-12-17 17:38 + +import django.db.models.deletion +from django.conf import settings +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.CreateModel( + name="Journal", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("name", models.CharField(max_length=128)), + ("description", models.TextField(blank=True)), + ("private", models.BooleanField(default=False)), + ("custom_css", models.TextField(blank=True)), + ("created_at", models.DateTimeField(auto_now_add=True)), + ("updated_at", models.DateTimeField(auto_now=True)), + ( + "owner", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + to=settings.AUTH_USER_MODEL, + ), + ), + ( + "shared_with", + models.ManyToManyField( + blank=True, + related_name="shared_journals", + to=settings.AUTH_USER_MODEL, + ), + ), + ], + ), + migrations.CreateModel( + name="JournalEntry", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("title", models.CharField(max_length=128)), + ("body", models.TextField()), + ("created_at", models.DateTimeField(auto_now_add=True)), + ("updated_at", models.DateTimeField(auto_now=True)), + ( + "journal", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + related_name="entries", + to="journals.journal", + ), + ), + ], + ), + ] diff --git a/apps/journals/migrations/0002_journal_slug.py b/apps/journals/migrations/0002_journal_slug.py new file mode 100644 index 00000000..67082c3c --- /dev/null +++ b/apps/journals/migrations/0002_journal_slug.py @@ -0,0 +1,19 @@ +# Generated by Django 5.1.4 on 2024-12-17 18:37 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("journals", "0001_initial"), + ] + + operations = [ + migrations.AddField( + model_name="journal", + name="slug", + field=models.SlugField(default="", max_length=256, unique=True), + preserve_default=False, + ), + ] diff --git a/apps/journals/migrations/__init__.py b/apps/journals/migrations/__init__.py new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/apps/journals/migrations/__init__.py diff --git a/apps/journals/models.py b/apps/journals/models.py new file mode 100644 index 00000000..96214d56 --- /dev/null +++ b/apps/journals/models.py @@ -0,0 +1,39 @@ +from django.db import models +from django.conf import settings + + +class Journal(models.Model): + owner = models.ForeignKey( + settings.AUTH_USER_MODEL, + on_delete=models.CASCADE, + ) + name = models.CharField(max_length=128) + slug = models.SlugField(max_length=256, unique=True) + description = models.TextField(blank=True) + private = models.BooleanField(default=False) + shared_with = models.ManyToManyField( + settings.AUTH_USER_MODEL, + related_name="shared_journals", + blank=True, + ) + custom_css = models.TextField(blank=True) + created_at = models.DateTimeField(auto_now_add=True) + updated_at = models.DateTimeField(auto_now=True) + + def __str__(self): + return self.name + + +class JournalEntry(models.Model): + journal = models.ForeignKey( + Journal, + on_delete=models.CASCADE, + related_name="entries", + ) + title = models.CharField(max_length=128) + body = models.TextField() + created_at = models.DateTimeField(auto_now_add=True) + updated_at = models.DateTimeField(auto_now=True) + + def __str__(self): + return self.title diff --git a/apps/journals/tests.py b/apps/journals/tests.py new file mode 100644 index 00000000..7ce503c2 --- /dev/null +++ b/apps/journals/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/apps/journals/urls.py b/apps/journals/urls.py new file mode 100644 index 00000000..1f7413c2 --- /dev/null +++ b/apps/journals/urls.py @@ -0,0 +1,6 @@ +from django.urls import path + +from . import views + +app_name = "journal" +urlpatterns = [] diff --git a/apps/journals/views.py b/apps/journals/views.py new file mode 100644 index 00000000..91ea44a2 --- /dev/null +++ b/apps/journals/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here. |
