from django.db import models
-from bpcms.content_val import is_unique_name
+from django.conf import settings
+from django.contrib import admin
+from django.core.cache import cache
+from django.core.urlresolvers import reverse
FORMAT_CHOICES = (
('rst', 'reStructuredText'),
('html', 'HTML'),
)
+class CSSDocument(models.Model):
+ title = models.CharField(max_length=150)
+ slug = models.SlugField()
+ content = models.TextField()
+
+ def __str__(self):
+ return self.__unicode__()
+
+ def __unicode__(self):
+ return u'%s' %(self.title,)
+
class Document(models.Model):
- title = models.CharField(maxlength=150)
+ title = models.CharField(max_length=150)
islive = models.BooleanField()
+ extracss = models.ManyToManyField(CSSDocument, null=True, blank=True)
folder = models.ForeignKey('Folder', null=True, blank=True)
- format = models.CharField(maxlength=10, choices=FORMAT_CHOICES)
- slug = models.SlugField(prepopulate_from=("title",), validator_list=[is_unique_name,])
+ format = models.CharField(max_length=10, choices=FORMAT_CHOICES)
+ slug = models.SlugField()
content = models.TextField()
+ class Meta:
+ ordering = ["folder"]
+
def __str__(self):
return self.__unicode__()
def __unicode__(self):
- return u'%s (%s)' %(self.title, self.slug)
+ return u'%s - %s' %(self.get_basic_url(), self.title)
def save(self):
super(Document, self).save()
doc.save()
def get_basic_url(self):
- folders = []
- curfolder = self.folder
- while curfolder != None:
- folders.append(curfolder.slug)
- curfolder = curfolder.parent
-
- folders.reverse()
- folderstring = "/".join(folders)
+ folderstring = self.get_folder_path()
if folderstring != u'':
folderstring = "%s/" %(folderstring,)
- return "%s%s/" %(folderstring, self.slug)
+ return "%s%s%s/" %(settings.BPCMS_ROOT, folderstring, self.slug)
- class Admin:
- pass
+ def get_folder_path(self):
+ if not self.folder:
+ return ''
+ else:
+ return self.folder.get_path()
+
+ def get_absolute_url(self):
+ if self.slug == 'index':
+ if self.folder.parent:
+ return reverse('bpcms.views.document_view', kwargs={'folders': self.folder.parent.get_path(), 'slug': self.folder.slug})
+ else:
+ return reverse('bpcms.views.document_view', kwargs={'slug': self.folder.slug})
+ else:
+ if self.folder:
+ return reverse('bpcms.views.document_view', kwargs={'folders': self.get_folder_path(), 'slug': self.slug})
+ else:
+ return reverse('bpcms.views.document_view', kwargs={'slug': self.slug})
class Folder(models.Model):
- title = models.CharField(maxlength=150)
- slug = models.SlugField(prepopulate_from=("title",))
+ title = models.CharField(max_length=150)
+ slug = models.SlugField()
parent = models.ForeignKey('self', null=True, blank=True)
def __str__(self):
return self.__unicode__()
def __unicode__(self):
- return u'%s' %(self.title)
+ return u'%s - %s' %(self.get_path(), self.title)
- def get_basic_url(self):
+ def get_path(self):
folders = []
curfolder = self
while curfolder != None:
folders.reverse()
folderstring = "/".join(folders)
- if folderstring != u'':
- folderstring = "%s/" %(folderstring,)
-
- return "%s" %(folderstring)
-
- class Admin:
- pass
+ return folderstring
+
+ def save(self, force_insert=False, force_update=False):
+ super(Folder, self).save(force_insert, force_update)
+ if self.parent == None:
+ cache.delete('bpcms_mainmenu')
+ else:
+ cache.delete('bpcms_submenu_%s' %(self.get_path()))
+
+ def get_absolute_url(self):
+ if self.parent:
+ return reverse('bpcms.views.document_view', kwargs={'folders': self.parent.get_path(), 'slug': self.slug})
+ else:
+ return reverse('bpcms.views.document_view', kwargs={'slug': self.slug})