From 46477c4576ea794c65d574aa174676b1f950175b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniele=20Vigan=C3=B2?= Date: Sun, 7 Aug 2022 18:43:58 +0200 Subject: [PATCH 1/5] Introduce support for Flatpages Markdown support only --- ram/portal/admin.py | 33 ++++++++++++++++++- ram/portal/migrations/0008_flatpage.py | 22 +++++++++++++ ram/portal/migrations/0009_flatpage_path.py | 19 +++++++++++ ...age_creation_time_flatpage_updated_time.py | 25 ++++++++++++++ ram/portal/models.py | 25 +++++++++++++- ram/portal/templates/base.html | 4 ++- ram/portal/templates/companies.html | 2 +- ram/portal/templates/consist.html | 2 +- ram/portal/templates/consists.html | 2 +- ram/portal/templates/flatpage.html | 19 +++++++++++ ram/portal/templates/flatpage_menu.html | 12 +++++++ ram/portal/templates/home.html | 2 +- ram/portal/templates/scales.html | 2 +- ram/portal/templates/search.html | 2 +- ram/portal/templatetags/show_menu.py | 10 ++++++ ram/portal/urls.py | 6 ++++ ram/portal/views.py | 17 +++++++++- 17 files changed, 194 insertions(+), 10 deletions(-) create mode 100644 ram/portal/migrations/0008_flatpage.py create mode 100644 ram/portal/migrations/0009_flatpage_path.py create mode 100644 ram/portal/migrations/0010_flatpage_creation_time_flatpage_updated_time.py create mode 100644 ram/portal/templates/flatpage.html create mode 100644 ram/portal/templates/flatpage_menu.html create mode 100644 ram/portal/templatetags/show_menu.py diff --git a/ram/portal/admin.py b/ram/portal/admin.py index 3aafb97..ef8097e 100644 --- a/ram/portal/admin.py +++ b/ram/portal/admin.py @@ -1,6 +1,37 @@ from django.contrib import admin from solo.admin import SingletonModelAdmin -from portal.models import SiteConfiguration +from portal.models import SiteConfiguration, Flatpage admin.site.register(SiteConfiguration, SingletonModelAdmin) + + +@admin.register(Flatpage) +class FlatpageAdmin(admin.ModelAdmin): + readonly_fields = ("path", "creation_time", "updated_time") + list_display = ("name", "path") + search_fields = ("name",) + + fieldsets = ( + ( + None, + { + "fields": ( + "name", + "path", + "content", + "draft", + ) + }, + ), + ( + "Audit", + { + "classes": ("collapse",), + "fields": ( + "creation_time", + "updated_time", + ), + }, + ), + ) diff --git a/ram/portal/migrations/0008_flatpage.py b/ram/portal/migrations/0008_flatpage.py new file mode 100644 index 0000000..1f919f4 --- /dev/null +++ b/ram/portal/migrations/0008_flatpage.py @@ -0,0 +1,22 @@ +# Generated by Django 4.0.6 on 2022-08-07 15:01 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('portal', '0007_siteconfiguration_items_ordering'), + ] + + operations = [ + migrations.CreateModel( + name='Flatpage', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=256, unique=True)), + ('draft', models.BooleanField(default=True)), + ('content', models.TextField(blank=True)), + ], + ), + ] diff --git a/ram/portal/migrations/0009_flatpage_path.py b/ram/portal/migrations/0009_flatpage_path.py new file mode 100644 index 0000000..7aae1bc --- /dev/null +++ b/ram/portal/migrations/0009_flatpage_path.py @@ -0,0 +1,19 @@ +# Generated by Django 4.0.6 on 2022-08-07 15:19 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('portal', '0008_flatpage'), + ] + + operations = [ + migrations.AddField( + model_name='flatpage', + name='path', + field=models.CharField(default='', max_length=256, unique=True), + preserve_default=False, + ), + ] diff --git a/ram/portal/migrations/0010_flatpage_creation_time_flatpage_updated_time.py b/ram/portal/migrations/0010_flatpage_creation_time_flatpage_updated_time.py new file mode 100644 index 0000000..e05e3cd --- /dev/null +++ b/ram/portal/migrations/0010_flatpage_creation_time_flatpage_updated_time.py @@ -0,0 +1,25 @@ +# Generated by Django 4.0.6 on 2022-08-07 15:46 + +from django.db import migrations, models +import django.utils.timezone + + +class Migration(migrations.Migration): + + dependencies = [ + ('portal', '0009_flatpage_path'), + ] + + operations = [ + migrations.AddField( + model_name='flatpage', + name='creation_time', + field=models.DateTimeField(auto_now_add=True, default=django.utils.timezone.now), + preserve_default=False, + ), + migrations.AddField( + model_name='flatpage', + name='updated_time', + field=models.DateTimeField(auto_now=True), + ), + ] diff --git a/ram/portal/models.py b/ram/portal/models.py index 09b306e..225493f 100644 --- a/ram/portal/models.py +++ b/ram/portal/models.py @@ -1,8 +1,11 @@ import django from django.db import models +from django.urls import reverse +from django.dispatch.dispatcher import receiver +from solo.models import SingletonModel from ram import __version__ as app_version -from solo.models import SingletonModel +from ram.utils import slugify class SiteConfiguration(SingletonModel): @@ -40,3 +43,23 @@ class SiteConfiguration(SingletonModel): def django_version(self): return django.get_version() + + +class Flatpage(models.Model): + name = models.CharField(max_length=256, unique=True) + path = models.CharField(max_length=256, unique=True) + draft = models.BooleanField(default=True) + content = models.TextField(blank=True) + creation_time = models.DateTimeField(auto_now_add=True) + updated_time = models.DateTimeField(auto_now=True) + + def __str__(self): + return self.name + + def get_absolute_url(self): + return reverse("flatpage", kwargs={"flatpage": self.path}) + + +@receiver(models.signals.pre_save, sender=Flatpage) +def tag_pre_save(sender, instance, **kwargs): + instance.path = slugify(instance.name) diff --git a/ram/portal/templates/base.html b/ram/portal/templates/base.html index cf2e8c1..ed2f9ec 100644 --- a/ram/portal/templates/base.html +++ b/ram/portal/templates/base.html @@ -1,6 +1,7 @@ {% load static %} {% load solo_tags %} {% load markdown %} +{% load show_menu %} {% get_solo 'portal.SiteConfiguration' as site_conf %} @@ -71,6 +72,7 @@ + {% show_menu %} {% include 'includes/search.html' %} @@ -84,7 +86,7 @@ -
+
diff --git a/ram/portal/templates/companies.html b/ram/portal/templates/companies.html index 644c1a4..85630be 100644 --- a/ram/portal/templates/companies.html +++ b/ram/portal/templates/companies.html @@ -57,7 +57,7 @@ {% block pagination %} {% if company.has_other_pages %}