def get_absolute_url(self):
if self.slug == 'index':
if self.folder.parent:
- return reverse('bpcms-document-view', kwargs={'folders': self.folder.parent.get_path(), 'slug': self.folder.slug})
+ return reverse('bpcms-document-view', kwargs={'path': self.folder.parent.get_path() + "/" + self.folder.slug})
else:
- return reverse('bpcms-document-view', kwargs={'slug': self.folder.slug})
+ return reverse('bpcms-document-view', kwargs={'path': self.folder.slug})
else:
if self.folder:
- return reverse('bpcms-document-view', kwargs={'folders': self.get_folder_path(), 'slug': self.slug})
+ return reverse('bpcms-document-view', kwargs={'path': self.get_folder_path() + "/" + self.slug})
else:
- return reverse('bpcms-document-view', kwargs={'slug': self.slug})
+ return reverse('bpcms-document-view', kwargs={'path': self.slug})
class Folder(models.Model):
title = models.CharField(max_length=150)
def get_absolute_url(self):
if self.parent:
- return reverse('bpcms-document-view', kwargs={'folders': self.parent.get_path(), 'slug': self.slug})
+ return reverse('bpcms-document-view', kwargs={'path': self.parent.get_path() + "/" + self.slug})
else:
- return reverse('bpcms-document-view', kwargs={'slug': self.slug})
+ return reverse('bpcms-document-view', kwargs={'path': self.slug})
import bpcms.views
urlpatterns = [
- re_path(r'^$', bpcms.views.document_view, {'slug': 'index'}, name='bpcms-document-view'),
+ re_path(r'^$', bpcms.views.document_view, {'path': 'index'}, name='bpcms-document-view'),
re_path(r'^css-docs/(?P<slug>[^/]+)$', bpcms.views.css_view),
- re_path(r'^(?P<slug>[^/]+)/$', bpcms.views.document_view, name='bpcms-document-view'),
- re_path(r'^(?P<folders>.*)/(?P<slug>[^/]+)/$', bpcms.views.document_view, name='bpcms-document-view'),
+ re_path(r'^(?P<path>.*)/$', bpcms.views.document_view, name='bpcms-document-view'),
]
from django.template import RequestContext, loader
import sys
-def document_view(request, slug=None, folders=None):
- if folders == None and slug == None:
+def document_view(request, path = None):
+
+ if path == None:
raise Http404()
+ folders = path.split("/")
+ slug = None
folder = None
if folders != None:
- folders = folders.split('/')
resfolder = None
- for folder in folders:
+ prevfolder = None
+ for i,folder_name in enumerate(folders):
try:
if resfolder:
- resfolder = Folder.objects.get(slug__exact=folder, parent__exact=resfolder)
+ resfolder = Folder.objects.get(slug__exact=folder_name, parent__exact=resfolder)
else:
- resfolder = Folder.objects.get(slug__exact=folder, parent__isnull=True)
+ resfolder = Folder.objects.get(slug__exact=folder_name, parent__isnull=True)
resfolder = resfolder.id
except:
- raise Http404
+ slug = folders[i]
+ folders = folders[:i]
+ break
try:
- folder = Folder.objects.get(pk=resfolder)
+ if resfolder != None:
+ folder = Folder.objects.get(pk=resfolder)
except:
- raise Http404
+ raise Http404("Badgers")
+
+ if slug == None:
+ slug = "index"
if folder != None:
try:
else:
doc = Document.objects.get(slug__exact='index', folder__exact=folder)
except:
- raise Http404
+ raise Http404(folder + "/" + slug)
else:
try:
if not request.user.is_authenticated:
else:
doc = Document.objects.get(slug__exact=slug, folder__isnull=True)
except:
- sys.stderr.write("Unexpected error:", sys.exc_info()[0])
try:
folder = Folder.objects.get(slug__exact=slug, parent__isnull=True)
if not request.user.is_authenticated():
else:
doc = Document.objects.get(slug__exact='index', folder__exact=folder)
except:
- raise Http404
+ raise Http404(slug)
template_name = "bpcms/%s.html" %(doc.format,)
c = {
"content" : doc.content,
except:
pass
- if options.has_key("height") or options.has_key("width"):
- if options.has_key("width") and options.has_key("height"):
+ if "height" in options or "width" in options:
+ if "width" in options and "height" in options:
return helpers.make_thumbnail(image_url[len(settings.MEDIA_URL):], width=options["width"], height=options["height"])
- elif options.has_key("width"):
+ elif "width" in options:
return helpers.make_thumbnail(image_url[len(settings.MEDIA_URL):], width=options["width"])
else:
return helpers.make_thumbnail(image_url[len(settings.MEDIA_URL):], height=options["height"])
# (r'^sommitrealweird/', include('sommitrealweird.foo.urls')),
# Uncomment this for admin:
- re_path(r'^$', bpcms.views.document_view, {'slug': 'index'}),
+ re_path(r'^$', bpcms.views.document_view, {'path': 'index'}),
re_path(r'^media/(?P<path>.*)$', django.views.static.serve, {'document_root': MEDIA_ROOT, 'show_indexes': True}),
re_path(r'^static/(?P<path>.*)$', django.views.static.serve, {'document_root': STATIC_ROOT, 'show_indexes': True}),
re_path(r'^admin/', admin.site.urls),