Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Replacing old generic views with class based ones. Making {% url tags 1.... #7

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@ build/
dist/
docs/_build
MANIFEST
*.egg-info
2 changes: 1 addition & 1 deletion faq/templates/faq/question_detail.html
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@


{% block header %}
<a href="{% url faq-topic-list %}">{% trans "FAQ" %}</a> ›
<a href="{% url 'faq-topic-list' %}">{% trans "FAQ" %}</a> ›
<a href="{{ topic.get_absolute_url }}">{{ topic }}</a> ›
{{ question }}
{% endblock %}
Expand Down
2 changes: 1 addition & 1 deletion faq/templates/faq/topic_detail.html
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@


{% block header %}
<a href="{% url faq-topic-list %}">{% trans "FAQ" %}</a> › {{ topic }}
<a href="{% url 'faq-topic-list' %}">{% trans "FAQ" %}</a> › {{ topic }}
{% endblock %}


Expand Down
20 changes: 12 additions & 8 deletions faq/urls/deep.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@

from django.conf.urls.defaults import *

from faq.views.shallow import topic_list
from faq.views.normal import topic_detail
from faq.views.deep import question_detail
from faq.views.shallow import TopicListView
from faq.views.normal import TopicDetailView
from faq.views.deep import QuestionDetailView


# Include these patterns if you want URLs like:
Expand All @@ -14,9 +14,13 @@
# /faq/topic/question/
#

urlpatterns = patterns('',
url(r'^$', topic_list, name='faq-topic-list'),
url(r'^(?P<slug>[-\w]+)/$', topic_detail, name='faq-topic-detail'),
url(r'^(?P<topic_slug>[-\w]+)/(?P<slug>[-\w]+)/$', question_detail,
name='faq-question-detail'),
urlpatterns = patterns(
'',
url(r'^$', TopicListView.as_view(), name='faq-topic-list'),
url(r'^(?P<slug>[-\w]+)/$', TopicDetailView.as_view(), name='faq-topic-detail'),
url(
r'^(?P<topic_slug>[-\w]+)/(?P<slug>[-\w]+)/$',
QuestionDetailView.as_view(),
name='faq-question-detail'
),
)
11 changes: 6 additions & 5 deletions faq/urls/normal.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

from django.conf.urls.defaults import *

from faq.views.shallow import topic_list
from faq.views.normal import topic_detail, question_detail
from faq.views.shallow import TopicListView
from faq.views.normal import TopicDetailView, question_detail


# Include these patterns if you want URLs like:
Expand All @@ -13,9 +13,10 @@
# /faq/topic/#question
#

urlpatterns = patterns('',
url(r'^$', topic_list, name='faq-topic-list'),
url(r'^(?P<slug>[-\w]+)/$', topic_detail, name='faq-topic-detail'),
urlpatterns = patterns(
'',
url(r'^$', TopicListView.as_view(), name='faq-topic-list'),
url(r'^(?P<slug>[-\w]+)/$', TopicDetailView.as_view(), name='faq-topic-detail'),
url(r'^(?P<topic_slug>[-\w]+)/(?P<slug>[-\w]+)/$', question_detail,
name='faq-question-detail'),
)
8 changes: 4 additions & 4 deletions faq/urls/shallow.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@

from django.conf.urls.defaults import *

from faq.views.shallow import topic_list, topic_detail, question_detail

from faq.views.shallow import TopicListView, topic_detail, question_detail

# Include these patterns if you want URLs like:
#
Expand All @@ -12,8 +11,9 @@
# /faq/#question
#

urlpatterns = patterns('',
url(r'^$', topic_list, name='faq-topic-list'),
urlpatterns = patterns(
'',
url(r'^$', TopicListView.as_view(), name='faq-topic-list'),
url(r'^(?P<slug>[-\w]+)/$', topic_detail, name='faq-topic-detail'),
url(r'^(?P<topic_slug>[-\w]+)/(?P<slug>[-\w]+)/$', question_detail,
name='faq-question-detail'),
Expand Down
30 changes: 11 additions & 19 deletions faq/views/deep.py
Original file line number Diff line number Diff line change
@@ -1,27 +1,19 @@
# -*- coding: utf-8 -*-

from django.views.generic.list_detail import object_detail

from faq.models import Topic, Question

from django.views.generic.detail import DetailView

def question_detail(request, topic_slug, slug):
"""
A detail view of a Question.

Templates:
:template:`faq/question_detail.html`
Context:
question
A :model:`faq.Question`.
topic
The :model:`faq.Topic` object related to ``question``.
class QuestionDetailView(DetailView):
model = Question

"""
extra_context = {
'topic': Topic.objects.published().get(slug=topic_slug),
}
def get_context_data(self, **kwargs):
context = super(QuestionDetailView, self).get_context_data(**kwargs)
context['topic'] = Topic.objects.published().get(
slug=context['question'].topic.slug
)
return context

return object_detail(request, queryset=Question.objects.published(),
extra_context=extra_context, template_object_name='question',
slug=slug)
def get_template_names(self):
return ['faq/question_detail.html']
31 changes: 11 additions & 20 deletions faq/views/normal.py
Original file line number Diff line number Diff line change
@@ -1,33 +1,24 @@
# -*- coding: utf-8 -*-

from django.core.urlresolvers import reverse
from django.shortcuts import get_object_or_404, redirect
from django.views.generic.list_detail import object_detail
from django.views.generic.detail import DetailView

from faq.models import Topic, Question
from faq.views.shallow import _fragmentify


def topic_detail(request, slug):
"""
A detail view of a Topic

Templates:
:template:`faq/topic_detail.html`
Context:
topic
An :model:`faq.Topic` object.
question_list
A list of all published :model:`faq.Question` objects that relate
to the given :model:`faq.Topic`.
class TopicDetailView(DetailView):
model = Topic

"""
extra_context = {
'question_list': Question.objects.published().filter(topic__slug=slug),
}
def get_context_data(self, **kwargs):
context = super(TopicDetailView, self).get_context_data(**kwargs)
context['question_list'] = Question.objects.published().filter(
topic__slug=context['topic'].slug
)
return context

return object_detail(request, queryset=Topic.objects.published(),
extra_context=extra_context, template_object_name='topic', slug=slug)
def get_template_names(self):
return ['faq/topic_detail.html']


def question_detail(request, topic_slug, slug):
Expand Down
20 changes: 6 additions & 14 deletions faq/views/shallow.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@

from django.core.urlresolvers import reverse
from django.shortcuts import get_object_or_404, redirect
from django.views.generic.list_detail import object_list

from django.views.generic.list import ListView

from faq.models import Topic, Question

Expand All @@ -15,20 +16,11 @@ def _fragmentify(model, slug, url=None):
return redirect(url + fragment, permanent=True)


def topic_list(request):
"""
A list view of all published Topics

Templates:
:template:`faq/topic_list.html`
Context:
topic_list
A list of all published :model:`faq.Topic` objects that
relate to the current :model:`sites.Site`.
class TopicListView(ListView):
model = Topic

"""
return object_list(request, queryset=Topic.objects.published(),
template_object_name='topic')
def get_template_names(self):
return ['faq/topic_list.html']


def topic_detail(request, slug):
Expand Down