diff --git a/services/backend/backend/urls.py b/services/backend/backend/urls.py index 21f7739..78ddfa3 100644 --- a/services/backend/backend/urls.py +++ b/services/backend/backend/urls.py @@ -28,8 +28,8 @@ from django.conf import settings from tko.views import ContactView, NewArticleListView, AllArticleListView, EventListView urlpatterns = [ - path('django-admin/', admin.site.urls), - path('admin/', include(wagtailadmin_urls)), + path('', include(wagtailadmin_urls)), + path('admin/', admin.site.urls), path('create-contact/', ContactView.as_view(), name='create-contact'), path('load-articles/', NewArticleListView.as_view(), name='load-articles'), path('load-all-articles/', AllArticleListView.as_view(), name='load-all-articles'), diff --git a/services/backend/media/avatar_images/avatar_1867e3f4-e03a-4e7a-8e45-ca35966b399c_image0_0_20.jpg b/services/backend/media/avatar_images/avatar_1867e3f4-e03a-4e7a-8e45-ca35966b399c_image0_0_20.jpg new file mode 100644 index 0000000..2b0f4db Binary files /dev/null and b/services/backend/media/avatar_images/avatar_1867e3f4-e03a-4e7a-8e45-ca35966b399c_image0_0_20.jpg differ diff --git a/services/backend/tko/migrations/0005_alter_article_date_articlepage.py b/services/backend/tko/migrations/0005_alter_article_date_articlepage.py new file mode 100644 index 0000000..7329359 --- /dev/null +++ b/services/backend/tko/migrations/0005_alter_article_date_articlepage.py @@ -0,0 +1,39 @@ +# Generated by Django 5.1.5 on 2025-03-12 17:04 + +import datetime +import django.db.models.deletion +import wagtail.fields +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('tko', '0004_alter_article_image'), + ('wagtailcore', '0094_alter_page_locale'), + ('wagtailimages', '0027_image_description'), + ] + + operations = [ + migrations.AlterField( + model_name='article', + name='date', + field=models.DateField(auto_now_add=True), + ), + migrations.CreateModel( + name='ArticlePage', + fields=[ + ('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')), + ('name', models.CharField(max_length=100)), + ('content', wagtail.fields.RichTextField()), + ('date', models.DateField(default=datetime.date.today)), + ('author', models.CharField(max_length=100)), + ('active_to', models.DateField(null=True)), + ('image', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='wagtailimages.image')), + ], + options={ + 'abstract': False, + }, + bases=('wagtailcore.page',), + ), + ] diff --git a/services/backend/tko/migrations/0006_eventpage_remove_articlepage_active_to_and_more.py b/services/backend/tko/migrations/0006_eventpage_remove_articlepage_active_to_and_more.py new file mode 100644 index 0000000..fdfe231 --- /dev/null +++ b/services/backend/tko/migrations/0006_eventpage_remove_articlepage_active_to_and_more.py @@ -0,0 +1,47 @@ +# Generated by Django 5.1.5 on 2025-03-12 19:01 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('tko', '0005_alter_article_date_articlepage'), + ('wagtailcore', '0094_alter_page_locale'), + ('wagtailimages', '0027_image_description'), + ] + + operations = [ + migrations.CreateModel( + name='EventPage', + fields=[ + ('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')), + ('start_date', models.DateTimeField()), + ('end_date', models.DateTimeField()), + ('color', models.CharField(max_length=100)), + ], + options={ + 'abstract': False, + }, + bases=('wagtailcore.page',), + ), + migrations.RemoveField( + model_name='articlepage', + name='active_to', + ), + migrations.AlterField( + model_name='articlepage', + name='content', + field=models.CharField(max_length=500), + ), + migrations.RemoveField( + model_name='articlepage', + name='image', + ), + migrations.AddField( + model_name='articlepage', + name='image', + field=models.ManyToManyField(to='wagtailimages.image'), + ), + ] diff --git a/services/backend/tko/models.py b/services/backend/tko/models.py index f2a4083..cf3c2af 100644 --- a/services/backend/tko/models.py +++ b/services/backend/tko/models.py @@ -1,4 +1,9 @@ from django.db import models +from wagtail.admin.panels import FieldPanel +from wagtail.fields import RichTextField +from wagtail.models import Page +from datetime import date + # Create your models here. class Contact(models.Model): @@ -32,3 +37,21 @@ class Event(models.Model): def __str__(self): return self.title + + +class EventPage(Page): + start_date = models.DateTimeField() + end_date = models.DateTimeField() + color = models.CharField(max_length=100) + + content_panels = Page.content_panels + ["start_date", "end_date", "color"] + + +class ArticlePage(Page): + name = models.CharField(max_length=100) + content = models.CharField(max_length=500) + image = models.ManyToManyField('wagtailimages.Image') + date = models.DateField(default=date.today) + author = models.CharField(max_length=100) + + content_panels = Page.content_panels + ["name", "content", "image", "date", "author", "expire_at"] \ No newline at end of file diff --git a/services/backend/tko/wagtail_hooks.py b/services/backend/tko/wagtail_hooks.py new file mode 100644 index 0000000..322fc59 --- /dev/null +++ b/services/backend/tko/wagtail_hooks.py @@ -0,0 +1,23 @@ +from wagtail import hooks +from wagtail.admin.viewsets.pages import PageListingViewSet + +from tko.models import ArticlePage +from wagtail.admin.wagtail_hooks import ExplorerMenuItem + + +class ArticlePageListingViewSet(PageListingViewSet): + icon = "globe" + menu_label = "Articles" + add_to_admin_menu = True + model = ArticlePage + + +article_page_listing_viewset = ArticlePageListingViewSet("article_pages") +@hooks.register('register_admin_viewset') +def register_article_page_listing_viewset(): + return article_page_listing_viewset + + +# @hooks.register('construct_main_menu') +# def hide_snippets_menu_item(request, menu_items): +# menu_items[:] = [item for item in menu_items if not isinstance(item, ExplorerMenuItem)]