Skip to content
Snippets Groups Projects
urls.py 2.2 KiB
Newer Older
Olivier Le Brouster's avatar
Olivier Le Brouster committed
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.utils.text import slugify
from django.conf.urls import patterns, url, include
from django.conf.urls.i18n import i18n_patterns

from .models import newsbox_models
from .views import NewsboxArchiveView, NewsboxYearArchiveView, \
    NewsboxMonthArchiveView, NewsboxDayArchiveView, NewsboxDetailView

def get_urls(
    archive_view=NewsboxArchiveView, 
    year_archive_view=NewsboxYearArchiveView, 
    month_archive_view=NewsboxMonthArchiveView, 
    day_archive_view=NewsboxDayArchiveView, 
    detail_view=NewsboxDetailView):
    
    urls = ['',]
    for model in newsbox_models :
        app_name = model._meta.app_label.lower()
        model_name = model.__name__.lower()
        
        viewurl = 'newsbox/%s/%s/'\
                    % (app_name, model_name,)
        urls.append(
            url(
                r'^%s$' % viewurl, 
                archive_view.as_view(
                    model=model,),
                name='%s_%s_list' % (app_name, model_name),
            ),
        )
        viewurl=viewurl+'(?P<year>\d{4})/' 
        urls.append(
            url(
                r'^%s$' % viewurl, 
                year_archive_view.as_view(
                    model=model,),
                name='%s_%s_list_y' % (app_name, model_name),
            ),
        )
        viewurl=viewurl+'(?P<month>\d{2})/' 
        urls.append(
            url(
                r'^%s$' % viewurl, 
                month_archive_view.as_view(
                    model=model,),
                name='%s_%s_list_ym' % (app_name, model_name),
            ),
        )
        viewurl=viewurl+'(?P<day>\d{2})/'
        urls.append(
            url(
                r'^%s$' % viewurl, 
                day_archive_view.as_view(
                    model=model,),
                name='%s_%s_list_ymd' % (app_name, model_name),
            ),
        )
        urls.append(
            url(
                r'^%s(?P<slug>[0-9a-zA-Z_-]+)/$' % viewurl, 
                detail_view.as_view(
                    model=model,),
                name='%s_%s_detail' % (app_name, model_name),
            ),
        )
    return urls

urls = get_urls()
urlpatterns = patterns(*urls)