add support for page hierarchy
This commit is contained in:
parent
259b65fefc
commit
ac0fba548e
|
@ -34,6 +34,10 @@ class Page(models.Model):
|
|||
title = models.CharField(_('Title'), max_length=50)
|
||||
slug = models.SlugField()
|
||||
template_name = models.CharField(max_length=50)
|
||||
parent = models.ForeignKey('self', null=True, blank=True)
|
||||
|
||||
def __unicode__(self):
|
||||
return self.title
|
||||
|
||||
|
||||
class CellBase(models.Model):
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from django.conf import settings
|
||||
from django.http import Http404
|
||||
from django.shortcuts import get_object_or_404, render
|
||||
|
||||
from combo.data.models import CellBase, Page
|
||||
|
@ -23,7 +24,12 @@ def page(request):
|
|||
parts = [x for x in request.path_info.strip('/').split('/') if x]
|
||||
if not parts:
|
||||
parts = ['index']
|
||||
page = get_object_or_404(Page, slug=parts[0])
|
||||
pages = [get_object_or_404(Page, slug=x) for x in parts]
|
||||
for i, page in enumerate(pages[1:]):
|
||||
if page.parent_id != pages[i].id:
|
||||
raise Http404()
|
||||
|
||||
page = pages[-1]
|
||||
ctx = {
|
||||
'page': page,
|
||||
'page_cells': CellBase.objects.filter(page_id=page.id
|
||||
|
|
Loading…
Reference in New Issue