From 078edc908717572d175e6e094b62993b4f56ab6b Mon Sep 17 00:00:00 2001 From: SalahAdDin Date: Tue, 30 Jan 2018 20:26:56 +0300 Subject: [PATCH] Beginning to implements multi app support - Created a new related item name `FeedApp` that have both model and label app's fields. --- wagtail_feeds/models.py | 113 +++++++++++++++++++++++++++++++++------- 1 file changed, 94 insertions(+), 19 deletions(-) diff --git a/wagtail_feeds/models.py b/wagtail_feeds/models.py index db6ee92..199853b 100644 --- a/wagtail_feeds/models.py +++ b/wagtail_feeds/models.py @@ -1,36 +1,111 @@ from django.db import models +from django.utils.translation import ugettext_lazy as _ +from modelcluster.fields import ParentalKey -from wagtail.contrib.settings.models import BaseSetting, register_setting +from wagtail.contrib.settings.models import ( + BaseSetting, + register_setting +) # Create your models here. +from wagtail.wagtailadmin.edit_handlers import ( + InlinePanel, + FieldPanel +) +from wagtail.wagtailcore.models import Orderable -@register_setting -class RSSFeedsSettings(BaseSetting): +class FeedApp(models.Model): feed_app_label = models.CharField( - max_length=255, help_text='blog App whose Feed is to be generated', - null=True, blank=True) + _('Feed app label'), + max_length=255, + help_text=_('blog App whose Feed is to be generated'), + null=True, + blank=True + ) feed_model_name = models.CharField( - max_length=255, help_text='Model to be used for feed generation', - null=True, blank=True) + _('Feed model name'), + max_length=255, + help_text=_('Model to be used for feed generation'), + null=True, + blank=True + ) + + class Meta: + abstract = True + + +class RSSFeedRelatedFeedApp(Orderable, FeedApp): + app = ParentalKey( + 'wagtail_feeds.RSSFeedsSettings', + related_name='feed_apps', + on_delete=models.CASCADE, + ) + + +@register_setting +class RSSFeedsSettings(BaseSetting): feed_title = models.CharField( - max_length=255, help_text='Title of Feed', null=True, blank=True) + _('Feed title'), max_length=255, help_text=_('Title of Feed'), null=True, blank=True + ) feed_link = models.URLField( - max_length=255, help_text='link for Feed', null=True, blank=True) + _('Feed link'), max_length=255, help_text=_('link for Feed'), null=True, blank=True + ) feed_description = models.CharField( - max_length=255, help_text='Description of field', null=True, - blank=True) + _('Feed description'), + max_length=255, + help_text=_('Description of field'), + null=True, + blank=True + ) feed_author_email = models.EmailField( - max_length=255, help_text='Email of author', null=True, blank=True) + _('Feed author email'), + max_length=255, + help_text=_('Email of author'), + null=True, + blank=True + ) feed_author_link = models.URLField( - max_length=255, help_text='Link of author', null=True, blank=True) + _('Feed author link'), + max_length=255, + help_text=_('Link of author'), + null=True, + blank=True + ) feed_item_description_field = models.CharField( - max_length=255, help_text='Description field for feed item', - null=True, blank=True) + _('Feed item description field'), + max_length=255, + help_text=_('Description field for feed item'), + null=True, + blank=True + ) feed_item_content_field = models.CharField( - max_length=255, help_text='Content Field for feed item', - null=True, blank=True) + _('Feed item content field'), + max_length=255, + help_text=_('Content Field for feed item'), + null=True, + blank=True + ) feed_image_in_content = models.BooleanField( - help_text='Add feed image to content encoded field', - default=True) \ No newline at end of file + _('Feed image in content'), + help_text=_('Add feed image to content encoded field'), + default=True + ) + + content_panels = [ + InlinePanel('feed_apps', label=_('Feed apps')), + FieldPanel('feed_title'), + FieldPanel('feed_link'), + FieldPanel('feed_description'), + FieldPanel('feed_author_email'), + FieldPanel('feed_author_link'), + FieldPanel('feed_item_description_field'), + FieldPanel('feed_item_content_field'), + FieldPanel('feed_image_in_content'), + ] + + class Meta: + verbose_name = _('RSS feed setting') + verbose_name_plural = _('RSS feed settings') +