manager: very rough hierarchy navigation

This commit is contained in:
Frédéric Péters 2014-12-13 16:43:29 +01:00
parent ee27b040c6
commit f11420e24f
3 changed files with 24 additions and 1 deletions

View File

@ -47,6 +47,9 @@ class Page(models.Model):
parts.append(page.slug)
return '/' + '/'.join(reversed(parts))
def has_children(self):
return Page.objects.filter(parent_id=self.id).exists()
class CellBase(models.Model):
page = models.ForeignKey(Page)

View File

@ -3,8 +3,13 @@
{% block content %}
<ul>
{% if parent %}
<li><a href="{% if parent.parent_id %}?parent={{ parent.parent_id }}{% else %}.{% endif %}">..</a></li>
{% endif %}
{% for page in object_list %}
<li><a href="{% url 'combo-manager-page-view' pk=page.id %}">{{ page.title }}</a></li>
<li><a href="{% url 'combo-manager-page-view' pk=page.id %}">{{ page.title }}</a>
{% if page.has_children %}<a href="?parent={{ page.id }}">+</a>{% endif %}
</li>
{% endfor %}
</ul>

View File

@ -38,6 +38,21 @@ class PagesListView(ListView):
model = Page
template_name = 'combo/pages_list.html'
def get_queryset(self):
queryset = super(PagesListView, self).get_queryset()
try:
parent_id = self.request.GET['parent']
except KeyError:
return queryset.filter(parent_id__isnull=True)
return queryset.filter(parent_id=parent_id)
def get_context_data(self, **kwargs):
context = super(PagesListView, self).get_context_data(**kwargs)
if self.request.GET.get('parent'):
context['parent'] = Page.objects.get(id=self.request.GET['parent'])
return context
pages_list = PagesListView.as_view()