from datetime import date
from django.conf import settings
+from django.core.exceptions import ObjectDoesNotExist, MultipleObjectsReturned
from django.db import models
from django.template.loader import render_to_string
from django.utils.translation import ugettext_lazy as _
from dvcs.models import Ref
from organizations.models import Organization
from catalogue.constants import STAGES
+from .tag import Tag
class Document(Ref):
stage = models.CharField(_('stage'), max_length=128, blank=True, default=STAGES[0])
assigned_to = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, related_name='assignments')
deleted = models.BooleanField(default=False)
+ tags = models.ManyToManyField(Tag, blank=True)
+ # we need to know if it were ever published (for notifications)
+ published = models.BooleanField(default=False)
# Where to cache searchable stuff from metadata?
# Probably in some kind of search index.
def meta(self):
from lxml import etree
- # Wrong! should be metadata
- d = {}
+ metadata = {}
data = self.materialize()
data = data.replace(u'\ufeff', '')
header = t.find('.//header')
if header is None:
header = etree.fromstring(data).find('.//{http://nowoczesnapolska.org.pl/sst#}header')
- d['title'] = getattr(header, 'text', ' ') or ' '
- #print 'meta', d['title']
+ metadata['title'] = getattr(header, 'text', ' ') or ' '
+ # print 'meta', d['title']
m = t.find('metadata')
if m is None:
if m is not None:
c = m.find('{http://purl.org/dc/elements/1.1/}relation.coverimage.url')
if c is not None:
- d['cover_url'] = c.text
+ metadata['cover_url'] = c.text
c = m.find('{http://purl.org/dc/elements/1.1/}audience')
if c is not None:
- d['audience'] = c.text
+ metadata['audience'] = c.text
- return d
+ return metadata
def can_edit(self, user):
if self.owner_user:
def get_plan(self):
try:
plan = self.plan_set.get(stage=self.stage)
- except:
+ except (ObjectDoesNotExist, MultipleObjectsReturned):
return None
return plan