"""
owner_organization = forms.CharField(required=False)
title = forms.CharField()
- language = forms.CharField()
publisher = forms.CharField(required=False)
description = forms.CharField(required=False)
- rights = forms.CharField(required=False)
- audience = forms.CharField()
-
cover = forms.FileField(required=False)
def clean_cover(self):
if self.instance:
self.field().initial = self.initial()
- def save(self):
- assert self.instance, 'No instance provided'
- self.instance.tags.remove(*self.instance.tags.filter(category=self.category))
- self.instance.tags.add(self.cleaned_tags())
+ def save(self, instance=None):
+ instance = instance or self.instance
+ assert instance, 'No instance provided'
+ instance.tags.remove(*instance.tags.filter(category=self.category))
+ instance.tags.add(*self.cleaned_tags())
def field(self):
raise NotImplementedError
def cleaned_tags(self):
raise NotImplementedError
+ def metadata_rows(self):
+ return '\n'.join(
+ '<dc:%(name)s>%(value)s</dc:%(name)s>' % {'name': tag.category.dc_tag, 'value': tag.dc_value}
+ for tag in self.cleaned_tags())
+
class TagSelect(forms.Select):
def render_option(self, selected_choices, option_value, option_label):
doc = Document.objects.create(**kwargs)
+ for tag_form in tag_forms:
+ tag_form.save(instance=doc)
+
cover = request.FILES.get('cover')
if cover:
uppath = 'uploads/%d/' % doc.pk
<metadata>
<dc:publisher>''' + form.cleaned_data['publisher'] + '''</dc:publisher>
<dc:description>''' + form.cleaned_data['description'] + '''</dc:description>
- <dc:language>''' + form.cleaned_data['language'] + '''</dc:language>
- <dc:rights>''' + form.cleaned_data['rights'] + '''</dc:rights>
- <dc:audience>''' + form.cleaned_data['audience'] + '''</dc:audience>
+ ''' + '\n'.join(tag_form.metadata_rows() for tag_form in tag_forms) + '''
<dc:relation.coverImage.url>''' + cover_url + '''</dc:relation.coverImage.url>
</metadata>
<header>''' + title + '''</header>