From 91667a7da941e9e34f56f070c2b3b31492775a68 Mon Sep 17 00:00:00 2001 From: PlexSheep Date: Sun, 4 Jun 2023 01:53:21 +0200 Subject: [PATCH] regeneration for blogposts --- gawa/blog/admin.py | 8 ++ .../migrations/0005_auto_20230604_0050.py | 23 ++++ .../blog/migrations/0006_blogpost_markdown.py | 18 +++ .../migrations/0007_remove_blogpost_public.py | 17 +++ gawa/blog/models.py | 35 +++++- gawa/blog/templates/blog/featured.html | 116 +----------------- gawa/blog/views.py | 25 +++- gawa/migrate.sh | 2 + gawa/start/admin.py | 9 ++ gawa/start/apps.py | 1 - .../migrations/0003_searchable_public.py | 18 +++ gawa/start/models.py | 23 +++- gawa/start/views.py | 1 + gawa/thumbnails/thuglifemathemann.png | Bin 33594 -> 0 bytes 14 files changed, 173 insertions(+), 123 deletions(-) create mode 100644 gawa/blog/migrations/0005_auto_20230604_0050.py create mode 100644 gawa/blog/migrations/0006_blogpost_markdown.py create mode 100644 gawa/blog/migrations/0007_remove_blogpost_public.py create mode 100755 gawa/migrate.sh create mode 100644 gawa/start/migrations/0003_searchable_public.py delete mode 100644 gawa/thumbnails/thuglifemathemann.png diff --git a/gawa/blog/admin.py b/gawa/blog/admin.py index d976c95..7caa42b 100644 --- a/gawa/blog/admin.py +++ b/gawa/blog/admin.py @@ -1,4 +1,5 @@ from django.contrib import admin +from django.utils.translation import gettext as _ from .models import * @admin.register(Category) @@ -7,6 +8,11 @@ class CategoryAdmin(admin.ModelAdmin): The admin model for Category """ +@admin.action(description=_("Regenerate searchable traits")) +def regenerate(modeladmin, request, queryset): + for obj in queryset: + obj.regenerate() + @admin.register(BlogPost) class BlogPostAdmin(admin.ModelAdmin): """ @@ -14,3 +20,5 @@ class BlogPostAdmin(admin.ModelAdmin): """ list_display = ["title_en", "subtitle_en", "title_de", "subtitle_de", "date", "category", "slug", "suburl", "public"] date_hierarchy = "date" + ordering = ['title_de', 'title_en'] + actions = [regenerate] diff --git a/gawa/blog/migrations/0005_auto_20230604_0050.py b/gawa/blog/migrations/0005_auto_20230604_0050.py new file mode 100644 index 0000000..f831cf9 --- /dev/null +++ b/gawa/blog/migrations/0005_auto_20230604_0050.py @@ -0,0 +1,23 @@ +# Generated by Django 3.2.19 on 2023-06-03 22:50 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('blog', '0004_blogpost_slug'), + ] + + operations = [ + migrations.AddField( + model_name='blogpost', + name='featured', + field=models.BooleanField(default=False), + ), + migrations.AlterField( + model_name='blogpost', + name='thumbnail', + field=models.ImageField(blank=True, upload_to='img/thumbnails'), + ), + ] diff --git a/gawa/blog/migrations/0006_blogpost_markdown.py b/gawa/blog/migrations/0006_blogpost_markdown.py new file mode 100644 index 0000000..833d6ea --- /dev/null +++ b/gawa/blog/migrations/0006_blogpost_markdown.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.19 on 2023-06-03 22:55 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('blog', '0005_auto_20230604_0050'), + ] + + operations = [ + migrations.AddField( + model_name='blogpost', + name='markdown', + field=models.BooleanField(default=False), + ), + ] diff --git a/gawa/blog/migrations/0007_remove_blogpost_public.py b/gawa/blog/migrations/0007_remove_blogpost_public.py new file mode 100644 index 0000000..220197b --- /dev/null +++ b/gawa/blog/migrations/0007_remove_blogpost_public.py @@ -0,0 +1,17 @@ +# Generated by Django 3.2.19 on 2023-06-03 23:13 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('blog', '0006_blogpost_markdown'), + ] + + operations = [ + migrations.RemoveField( + model_name='blogpost', + name='public', + ), + ] diff --git a/gawa/blog/models.py b/gawa/blog/models.py index 0550fd3..b03d4d5 100644 --- a/gawa/blog/models.py +++ b/gawa/blog/models.py @@ -1,14 +1,27 @@ from django.db import models - +from django.utils.translation import gettext as _ from start.models import Searchable +import logging +logger = logging.getLogger(__name__) + class Category(models.Model): """ A category of blog posts + + Name not translated because it would make i18n in urls and Searchables specifically a pain. + Maybe some day it would be cool if these were Searchable """ - name = models.CharField(max_length=50) + name= models.CharField(max_length=50) slug = models.SlugField() + class Meta: + verbose_name = _("Category") + verbose_name_plural = _("Categories") + + def __str__(self): + return f"{{<{self.__class__.__name__}>\"{self.name}\"}}" + class BlogPost(Searchable): """ Should contain a blogpost @@ -16,5 +29,21 @@ class BlogPost(Searchable): body = models.TextField() category = models.ForeignKey(Category, on_delete=models.SET_NULL, null=True) thumbnail = models.ImageField(blank=True, upload_to="img/thumbnails") - public = models.BooleanField(default=True) + featured = models.BooleanField(default=False) + markdown = models.BooleanField(default=False) slug = models.SlugField() + + + def regenerate(self): + """ + regenerate a object + + Implements the abstract method of Searchable + """ + logger.info(f"regenerating {self.__class__.__name__} object: {self}") + self.suburl = f"/blog/{self.category.name}/{self.slug}" + self.save() + + class Meta: + verbose_name = _("blog post") + verbose_name_plural = _("blog posts") diff --git a/gawa/blog/templates/blog/featured.html b/gawa/blog/templates/blog/featured.html index f3de44c..0fd2484 100644 --- a/gawa/blog/templates/blog/featured.html +++ b/gawa/blog/templates/blog/featured.html @@ -2,6 +2,7 @@

{% trans "Featured" %}

+ {% for post in featured_posts %}
...
@@ -18,119 +19,6 @@ Another link
-
- ... -
-
Card title
-

Some quick example text to build on the card title and make up the bulk of the card's content.

-
-
    -
  • An item
  • -
  • A second item
  • -
  • A third item
  • -
- -
-
- ... -
-
Card title
-

Some quick example text to build on the card title and make up the bulk of the card's content.

-
-
    -
  • An item
  • -
  • A second item
  • -
  • A third item
  • -
- -
-
- ... -
-
Card title
-

Some quick example text to build on the card title and make up the bulk of the card's content.

-
-
    -
  • An item
  • -
  • A second item
  • -
  • A third item
  • -
- -
-
-
-
- ... -
-
Card title
-

Some quick example text to build on the card title and make up the bulk of the card's content.

-
-
    -
  • An item
  • -
  • A second item
  • -
  • A third item
  • -
- -
-
- ... -
-
Card title
-

Some quick example text to build on the card title and make up the bulk of the card's content.

-
-
    -
  • An item
  • -
  • A second item
  • -
  • A third item
  • -
- -
-
- ... -
-
Card title
-

Some quick example text to build on the card title and make up the bulk of the card's content.

-
-
    -
  • An item
  • -
  • A second item
  • -
  • A third item
  • -
- -
-
- ... -
-
Card title
-

Some quick example text to build on the card title and make up the bulk of the card's content.

-
-
    -
  • An item
  • -
  • A second item
  • -
  • A third item
  • -
- -
+ {% endfor %}
diff --git a/gawa/blog/views.py b/gawa/blog/views.py index baad3aa..f9090cb 100644 --- a/gawa/blog/views.py +++ b/gawa/blog/views.py @@ -6,7 +6,6 @@ from .models import BlogPost, Category from start.views import SearchableView import logging - logger = logging.getLogger(__name__) class Index(TemplateView, SearchableView): @@ -19,6 +18,12 @@ class Index(TemplateView, SearchableView): template_name: str = "blog/index.html" + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context['featured_posts'] = BlogPost.objects.filter(featured=True, public=True) + logger.debug(f"loaded featured posts: {context['featured_posts']}") + return context + class Post(DetailView): """ Main page of a blog post @@ -28,6 +33,12 @@ class Post(DetailView): template_name = "blog/blogpost.html" context_object_name = "post" + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context['featured_posts'] = BlogPost.objects.filter(featured=True) + logger.debug(f"loaded featured posts: {context['featured_posts']}") + return context + def get_object(self, queryset=None): obj = get_object_or_404( BlogPost, @@ -61,6 +72,12 @@ class CategoryList(ListView): template_name = "blog/categories.html" context_object_name = "categories" + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context['featured_posts'] = BlogPost.objects.filter(featured=True) + logger.debug(f"loaded featured posts: {context['featured_posts']}") + return context + class ArticleList(ListView): """ Scroll through a list of blog posts @@ -72,3 +89,9 @@ class ArticleList(ListView): model=BlogPost template_name = "blog/posts.html" context_object_name = "posts" + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context['featured_posts'] = BlogPost.objects.filter(featured=True) + logger.debug(f"loaded featured posts: {context['featured_posts']}") + return context diff --git a/gawa/migrate.sh b/gawa/migrate.sh new file mode 100755 index 0000000..1926a10 --- /dev/null +++ b/gawa/migrate.sh @@ -0,0 +1,2 @@ +#!/bin/bash +python manage.py makemigrations && python manage.py migrate diff --git a/gawa/start/admin.py b/gawa/start/admin.py index 4a31d70..7cb02d1 100644 --- a/gawa/start/admin.py +++ b/gawa/start/admin.py @@ -1,8 +1,15 @@ from django.contrib import admin from django.db.models import CASCADE, AutoField, OneToOneField from django.views.generic import View +from django.utils.translation import gettext as _ from .models import * + +@admin.action(description=_("Regenerate searchable traits")) +def regenerate(modeladmin, request, queryset): + for obj in queryset: + obj.regenerate() + @admin.register(Keyword) class KeywordAdmin(admin.ModelAdmin): """ @@ -16,3 +23,5 @@ class StaticSiteAdmin(admin.ModelAdmin): Admin Interface for StaticSite """ list_display = ["title_en", "subtitle_en", "title_de", "subtitle_de", "suburl"] + ordering = ['title_de', 'title_en'] + actions = [regenerate] diff --git a/gawa/start/apps.py b/gawa/start/apps.py index 9f48da5..7ec3c85 100644 --- a/gawa/start/apps.py +++ b/gawa/start/apps.py @@ -1,6 +1,5 @@ from django.apps import AppConfig - class StartConfig(AppConfig): default_auto_field = 'django.db.models.BigAutoField' name = 'start' diff --git a/gawa/start/migrations/0003_searchable_public.py b/gawa/start/migrations/0003_searchable_public.py new file mode 100644 index 0000000..a923f0c --- /dev/null +++ b/gawa/start/migrations/0003_searchable_public.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.19 on 2023-06-03 23:13 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('start', '0002_keyword_searchable_staticsite'), + ] + + operations = [ + migrations.AddField( + model_name='searchable', + name='public', + field=models.BooleanField(default=True), + ), + ] diff --git a/gawa/start/models.py b/gawa/start/models.py index 3037556..cec0708 100644 --- a/gawa/start/models.py +++ b/gawa/start/models.py @@ -1,8 +1,8 @@ from django.db import models from django.db.models.options import override -#from .views import SearchableView -# ^^^ raises Circular Import +import logging +logger = logging.getLogger(__name__) class Keyword(models.Model): """ @@ -11,6 +11,9 @@ class Keyword(models.Model): text_de = models.CharField(max_length=40) text_en = models.CharField(max_length=40) + def __str__(self): + return f"{{<{self.__class__.__name__}>\"{self.text_en}\"}}" + class Searchable(models.Model): """ Abstract class for any model that should be searchable. @@ -28,13 +31,25 @@ class Searchable(models.Model): date = models.DateField(blank=True, null=True) keywords = models.ManyToManyField(Keyword) suburl = models.CharField(max_length=200, blank=True, null=True) + public = models.BooleanField(default=True) @classmethod def regenerate_all_entries(cls): """ regenerate all searchable items """ - raise NotImplementedError + logger.info(f"regenerating all {Searchable.__name__} entries") + for obj in cls.objects.all(): + obj.regenerate() + + def __str__(self): + return f"{{<{self.__class__.__name__}>\"{self.title_en}\"}}" + + def regenerate(self): + """ + regenerate a object + """ + raise NotImplementedError("This model does not implement regenerate") class StaticSite(Searchable): """ @@ -54,4 +69,4 @@ class StaticSite(Searchable): # TODO automate searching for these #all_views: list[SearchableView] = [] - raise NotImplementedError + raise NotImplementedError("This model does not implement regenerate_all_entries") diff --git a/gawa/start/views.py b/gawa/start/views.py index c2953df..a0fd0bc 100644 --- a/gawa/start/views.py +++ b/gawa/start/views.py @@ -85,6 +85,7 @@ class MainSearch(ListView): Q(subtitle_de__icontains=search) | Q(subtitle_en__icontains=search) | Q(desc_de__icontains=search) | Q(desc_en__icontains=search) ) + object_list = object_list.filter(public=True) print(object_list) return object_list diff --git a/gawa/thumbnails/thuglifemathemann.png b/gawa/thumbnails/thuglifemathemann.png deleted file mode 100644 index a6daad637fe37e8153486d00764ec867eb0a941e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33594 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 *(n3m4gdOGl@(tql(?9TI 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 W?RMIG+G-^L0000