From 27bd360abe41826f720d3060bcdbfcc2834d01e9 Mon Sep 17 00:00:00 2001 From: Gregory Soutade Date: Sat, 8 Oct 2022 16:08:02 +0200 Subject: [PATCH] Add output language support --- dynastie/UserProfile.py | 4 ++++ dynastie/forms.py | 1 + dynastie/generators/index.py | 3 +++ dynastie/generators/post.py | 8 +++++++- dynastie/models.py | 9 +++++++-- dynastie/sites/blog.soutade.fr/_base.html | 4 ++-- dynastie/sites/blog.soutade.fr/_base_post.html | 3 ++- dynastie/sites/blog.soutade.fr/_post.html | 8 ++++---- dynastie/sites/blog.soutade.fr/about.html | 2 +- 9 files changed, 31 insertions(+), 11 deletions(-) diff --git a/dynastie/UserProfile.py b/dynastie/UserProfile.py index 5595d78..949c2ce 100755 --- a/dynastie/UserProfile.py +++ b/dynastie/UserProfile.py @@ -19,6 +19,7 @@ """ from django.contrib.auth.models import User +from dynastie.models import Language class UserProfile(models.Model): # This field is required. @@ -26,3 +27,6 @@ class UserProfile(models.Model): # Other fields here editor = models.CharField(max_length=20, default="TinyMCE") + + default_language = models.ForeignKey(Language, on_delete=models.CASCADE) + diff --git a/dynastie/forms.py b/dynastie/forms.py index 1d256ce..d42382f 100755 --- a/dynastie/forms.py +++ b/dynastie/forms.py @@ -38,6 +38,7 @@ class PostForm(ModelForm): def __init__(self, *args, **kwargs): super(PostForm, self).__init__(*args, **kwargs) self.fields['category'].choices = [(cat.id, cat.name) for cat in Category.objects.all()] + self.fields['language'].choices = [(lang.id, lang.name) for lang in Language.objects.all()] class DraftForm(PostForm): class Meta: diff --git a/dynastie/generators/index.py b/dynastie/generators/index.py index 8428a2d..96b789d 100755 --- a/dynastie/generators/index.py +++ b/dynastie/generators/index.py @@ -319,6 +319,9 @@ class Index(DynastieGenerator): except: pass + if post.language != None: + post_elem.setAttribute('lang', post.language.abbrev) + self.parent_posts = [] post_content = self._loadPostContent(post) if not post_content: return None diff --git a/dynastie/generators/post.py b/dynastie/generators/post.py index 766cfa6..c9f5158 100755 --- a/dynastie/generators/post.py +++ b/dynastie/generators/post.py @@ -134,7 +134,13 @@ class Post(Index): new_elem = self.createMeta(dom, name, post.author.first_name + ' ' + post.author.last_name) except: return None - + elif name == 'lang': + meta_elem.removeChild(root) + # Add attribute lang in tag + if post.language != None: + meta_elem.parentNode.setAttribute('lang', post.language.abbrev) + return None + if not new_elem is None: root.parentNode.replaceChild(new_elem, root) return new_elem diff --git a/dynastie/models.py b/dynastie/models.py index 6562957..282b6be 100755 --- a/dynastie/models.py +++ b/dynastie/models.py @@ -41,6 +41,10 @@ def slugify(name): name = sub('-+', '-', name) return name +class Language(models.Model): + name = models.CharField(max_length=255, unique=True) + abbrev = models.CharField(max_length=4, unique=True) + class Blog(models.Model): name = models.CharField(max_length=255, unique=True) title = models.CharField(max_length=255) @@ -281,12 +285,13 @@ class Post(models.Model): keywords = models.TextField(blank=True) tags = models.ManyToManyField(Tag, blank=True, null=True) blog = models.ForeignKey(Blog, on_delete=models.CASCADE) + language = models.ForeignKey(Language, null=True, on_delete=models.CASCADE) CONTENT_HTML = 0 CONTENT_TEXT = 1 CONTENT_FORMAT = ( (CONTENT_HTML, 'HTML'), (CONTENT_TEXT, 'Text')) - content_format = models.IntegerField(choices=CONTENT_FORMAT, default=CONTENT_HTML, blank=False, null=False) + content_format = models.IntegerField(choices=CONTENT_FORMAT, default=CONTENT_TEXT, blank=False, null=False) post_type = models.CharField(max_length=1, default='P') def getPath(self): @@ -460,7 +465,7 @@ class Comment(models.Model): def _remove_br(self): self.the_comment = self.the_comment.replace('
', '\n') - + class FileOutputCache(models.Model): name = models.CharField(max_length=512) hash = models.CharField(max_length=512) diff --git a/dynastie/sites/blog.soutade.fr/_base.html b/dynastie/sites/blog.soutade.fr/_base.html index 075f7b0..3a990cd 100755 --- a/dynastie/sites/blog.soutade.fr/_base.html +++ b/dynastie/sites/blog.soutade.fr/_base.html @@ -1,4 +1,4 @@ - + @@ -35,7 +35,7 @@ -