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