fnp
/
redakcja.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fixes #940
[redakcja.git]
/
apps
/
wiki
/
models.py
diff --git
a/apps/wiki/models.py
b/apps/wiki/models.py
index
acad2c3
..
ec9ded5
100644
(file)
--- a/
apps/wiki/models.py
+++ b/
apps/wiki/models.py
@@
-3,11
+3,13
@@
# This file is part of FNP-Redakcja, licensed under GNU Affero GPLv3 or later.
# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
#
# This file is part of FNP-Redakcja, licensed under GNU Affero GPLv3 or later.
# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
#
+from django.db import models
import re
import os
import vstorage
from vstorage import DocumentNotFound
from wiki import settings, constants
import re
import os
import vstorage
from vstorage import DocumentNotFound
from wiki import settings, constants
+from slughifi import slughifi
from django.utils.translation import ugettext_lazy as _
from django.http import Http404
from django.utils.translation import ugettext_lazy as _
from django.http import Http404
@@
-32,9
+34,9
@@
def join_name(*parts, **kwargs):
def normalize_name(name):
"""
>>> normalize_name("gąska".decode('utf-8'))
def normalize_name(name):
"""
>>> normalize_name("gąska".decode('utf-8'))
- u'g
a
ska'
+ u'g
\u0105
ska'
"""
"""
- return
name.translate(_PCHARS_DICT).lower(
)
+ return
unicode(name).translate(_PCHARS_DICT
)
STAGE_TAGS_RE = re.compile(r'^#stage-finished: (.*)$', re.MULTILINE)
STAGE_TAGS_RE = re.compile(r'^#stage-finished: (.*)$', re.MULTILINE)
@@
-51,6
+53,10
@@
class DocumentStorage(object):
text, rev = self.vstorage.page_text_by_tag(name, tag)
return Document(self, name=name, text=text, revision=rev)
text, rev = self.vstorage.page_text_by_tag(name, tag)
return Document(self, name=name, text=text, revision=rev)
+ def revert(self, name, revision):
+ text, rev = self.vstorage.revert(name, revision)
+ return Document(self, name=name, text=text, revision=rev)
+
def get_or_404(self, *args, **kwargs):
try:
return self.get(*args, **kwargs)
def get_or_404(self, *args, **kwargs):
try:
return self.get(*args, **kwargs)
@@
-68,7
+74,7
@@
class DocumentStorage(object):
return document
def create_document(self, text, name):
return document
def create_document(self, text, name):
- title = u', '.join(p.title for p in split_name(name))
+ title = u', '.join(p.title
()
for p in split_name(name))
if text is None:
text = u''
if text is None:
text = u''
@@
-91,6
+97,9
@@
class DocumentStorage(object):
changeset['description'] = STAGE_TAGS_RE.sub(stage_desc, changeset['description'])
yield changeset
changeset['description'] = STAGE_TAGS_RE.sub(stage_desc, changeset['description'])
yield changeset
+ def doc_meta(self, title, revision=None):
+ return self.vstorage.page_meta(title, revision)
+
class Document(object):
class Document(object):
@@
-122,7
+131,7
@@
class Document(object):
except ValueError:
continue
except ValueError:
continue
- gallery = result.get('gallery', s
elf.name.replace(' ', '_'
))
+ gallery = result.get('gallery', s
lughifi(self.name.replace(' ', '_')
))
if gallery.startswith('/'):
gallery = os.path.basename(gallery)
if gallery.startswith('/'):
gallery = os.path.basename(gallery)
@@
-139,3
+148,18
@@
def getstorage():
#
# Django models
#
#
# Django models
#
+
+class Theme(models.Model):
+ name = models.CharField(_('name'), max_length=50, unique=True)
+
+ class Meta:
+ ordering = ('name',)
+ verbose_name = _('theme')
+ verbose_name_plural = _('themes')
+
+ def __unicode__(self):
+ return self.name
+
+ def __repr__(self):
+ return "Theme(name=%r)" % self.name
+