Have solved the fully qualified path issue, but now throwing `'unicode' 
object has no attribute 'regex'` error. This one is more difficult to 
traceback.

On Thursday, July 6, 2017 at 8:12:00 PM UTC-7, [email protected] wrote:
>
> Hi, thanks for such a great resource! I have googled around for a few days 
> and have made some headway this problem, but have hit a wall. I'm trying to 
> use the Displayable model to create an easy way to add news stories and 
> have them displayed as a simple list view, which is very similar behavior 
> to the blog app. If there is a better solution using a ForeignKey, please 
> point me in the right direction!
>
> I read an older post 
> <https://groups.google.com/forum/#!msg/mezzanine-users/HmNGXkf4m4k/FDJ1Rd-h1KsJ>
>  about 
> creating a new Displayable, and have used Mezzanine's source code to 
> successfully extend the Displayable model and have it appear correctly in 
> the admin. The issue now is that I can't seem to get the views (views.py) 
> and url patterns to work. When clicked "view on site" from the admin, the 
> url seems to grab the model's slug ("news"), but ends up linking to 
> http://localhost:8000/en/admin/<myapp>/news/%28u/, and doesn't work 
> linking directly to the actual item's slug. Exploring the source code for 
> Mezzanine's blog's urls and views, I'm unsure how to correctly refactor. I 
> understand that I will need to create my own templates to act as 
> blog_post_list.html 
> and blog_post_detail.html, but don't know how to create the super basic 
> views to point to them.
>
> models.py:
> class News(Displayable, RichText):
>
>     pagetitle = models.CharField('Title', max_length=255, blank=True)
>     url = models.CharField('Link', max_length=255, blank=True)
>     summary = models.CharField('Summary', max_length=255, blank=True)
>     date = models.DateField(_("Date"), default=datetime.date.today)
>     categories = models.ManyToManyField("NewsCategory",
>                                         verbose_name=_("Categories 
> (Magazine, Award, etc.)"),
>                                         blank=True, 
> related_name="newsitems")
>     related_news = models.ManyToManyField("self",
>                                  verbose_name=_("Related News"), 
> blank=True)
>
>     class Meta:
>         verbose_name = _("News Item")
>         verbose_name_plural = _("News Items")
>
>     def get_absolute_url(self):
>         url_name = 'news'
>         kwargs = {
>             'slug': self.slug,
>         }
>         return (url_name, (), kwargs)
>
>
> class NewsCategory(Slugged):
>     """
>     A category for grouping news items into a series.
>     """
>
>     class Meta:
>         verbose_name = _("News Category")
>         verbose_name_plural = _("News Categories")
>         ordering = ("title",)
>
>     @models.permalink
>     def get_absolute_url(self):
>         return ("news_item_list_category", (), {"category": self.slug})
>
> admin.py
> news_fieldsets = deepcopy(DisplayableAdmin.fieldsets)
> news_fieldsets[0][1]["fields"].insert(1, "categories")
> news_fieldsets[0][1]["fields"].extend(["pagetitle", "url", "summary", 
> "date"])
> news_fieldsets = list(news_fieldsets)
> news_fieldsets.insert(1, (_("Other News"), {
>     "classes": ("collapse-closed",),
>     "fields": ("related_news",)}))
> news_list_filter = deepcopy(DisplayableAdmin.list_filter) + ("categories",)
>
>
> class NewsAdmin(DisplayableAdmin):
>     """
>     Admin class for news posts.
>     """
>
>     fieldsets = news_fieldsets
>     # list_display = news_list_display
>     list_filter = news_list_filter
>     filter_horizontal = ("categories", "related_news",)
>
>     def save_form(self, request, form, change):
>         """
>         Super class ordering is important here - user must get saved first.
>         """
>         DisplayableAdmin.save_form(self, request, form, change)
>         return DisplayableAdmin.save_form(self, request, form, change)
>
> class NewsCategoryAdmin(BaseTranslationModelAdmin):
>     """
>     Admin class for blog categories. Hides itself from the admin menu
>     unless explicitly specified.
>     """
>
>     fieldsets = ((None, {"fields": ("title",)}),)
>
>     def has_module_permission(self, request):
>         """
>         Hide from the admin menu unless explicitly set in 
> ``ADMIN_MENU_ORDER``.
>         """
>         for (name, items) in settings.ADMIN_MENU_ORDER:
>             if "blog.BlogCategory" in items:
>                 return True
>         return False
>
>
> admin.site.register(News, NewsAdmin)
> admin.site.register(NewsCategory, NewsCategoryAdmin)
>
> urls.py:
> from .models import News
> import .views
>
> _slashes = (
>     "/" if settings.BLOG_SLUG else "",
>     "/" if settings.APPEND_SLASH else "",
> )
>
> urlpatterns = patterns(
>     'news.views',
>     url("^%s(?P<slug>.*)%s$" % _slashes, "news", name="news"),
> )
>
> views.py:
> from django.shortcuts import render
>
> def news(request, slug):
>     return HttpResponse('Test')
>
> The view is currently not even returning "Test." Any direction at all 
> would be appreciated!
>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Mezzanine Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to