from io import BytesIO
-from django.views.generic import TemplateView, ListView, DetailView
+import json
+from django.http import HttpResponse
+from django.views.generic import TemplateView, ListView, DetailView, View
from . import models
+from librarian.dcparser import BookInfo
from librarian.document import WLDocument
from librarian.builders import StandaloneHtmlBuilder
+from librarian.meta.types.wluri import WLURI
+from librarian.meta.types.text import LegimiCategory, Epoch, Kind, Genre, Audience, ThemaCategory, MainThemaCategory
+from depot.publishers.legimi import Legimi
class XslView(TemplateView):
for t in models.Tag.objects.all():
tags.setdefault(t.type, []).append(t.name)
ctx['tags'] = tags
+ ctx['namespaces'] = {
+ "http://www.w3.org/1999/02/22-rdf-syntax-ns#": "rdf",
+ "http://purl.org/dc/elements/1.1/": "dc",
+ "http://www.w3.org/XML/1998/namespace": "xml",
+ "": "wl",
+ }
return ctx
queryset = models.Tag.objects.all()
slug_field = 'name'
+
+VALUE_TYPES = {
+ LegimiCategory: {
+ 'widget': 'select',
+ 'options': [''] + list(Legimi.CATEGORIES.keys()),
+ },
+ Audience: {
+ 'autocomplete': {
+ 'source': '/catalogue/terms/audience/',
+ }
+ },
+ ThemaCategory: {
+ 'autocomplete': {
+ 'source': '/catalogue/terms/thema/',
+ },
+ 'chooser': {
+ 'source': '/catalogue/chooser/thema/',
+ },
+ },
+ MainThemaCategory: {
+ 'autocomplete': {
+ 'source': '/catalogue/terms/thema-main/',
+ },
+ 'chooser': {
+ 'source': '/catalogue/chooser/thema-main/',
+ },
+ },
+ Epoch: {
+ 'autocomplete': {
+ 'source': '/catalogue/terms/epoch/',
+ }
+ },
+ Kind: {
+ 'autocomplete': {
+ 'source': '/catalogue/terms/kind/',
+ }
+ },
+ Genre: {
+ 'autocomplete': {
+ 'source': '/catalogue/terms/genre/',
+ }
+ },
+ WLURI: {
+ "autocomplete": {
+ "source": "/catalogue/terms/wluri/",
+ }
+ },
+ "authors": {
+ "autocomplete": {
+ "source": "/catalogue/terms/author/",
+ }
+ },
+ "translators": {
+ "autocomplete": {
+ "source": "/catalogue/terms/author/",
+ }
+ },
+ "editors": {
+ "autocomplete": {
+ "source": "/catalogue/terms/editor/",
+ }
+ },
+ "technical_editors": {
+ "autocomplete": {
+ "source": "/catalogue/terms/editor/",
+ }
+ },
+ "type": {
+ "autocomplete": {
+ "source": ["text"]
+ }
+ },
+ "title": {
+ "autocomplete": {
+ "source": "/catalogue/terms/book_title/",
+ }
+ },
+
+ "language": {
+ 'widget': 'select',
+ 'options': [
+ '',
+ 'pol',
+ 'eng',
+ 'fre',
+ 'ger',
+ 'lit',
+ ],
+ },
+ "publisher": {
+ "autocomplete": {
+ "source": ["Fundacja Wolne Lektury"]
+ }
+ },
+
+}
+
+
+
+class MetaTagsView(View):
+ def get(self, request):
+ fields = []
+ for f in BookInfo.FIELDS:
+ d = {
+ 'name': f.name,
+ 'required': f.required,
+ 'multiple': f.multiple,
+ 'uri': f.uri,
+ 'value_type': {
+ 'hasLanguage': f.value_type.has_language,
+ 'name': f.value_type.__name__,
+ }
+ }
+ d['value_type'].update(
+ VALUE_TYPES.get(
+ f.value_type,
+ VALUE_TYPES.get(
+ f.name,
+ {}
+ )
+ )
+ )
+ if d['name'] == 'thema':
+ d_loc = d.copy()
+ d_time = d.copy()
+ d['filter'] = {'not': {'startswith': ['1', '3']}}
+ d_loc['filter'] = {'startswith': ['1']}
+ d_loc['name'] += ' (miejsca)'
+ d_time['filter'] = {'startswith': ['3']}
+ d_time['name'] += ' (czas)'
+ fields.extend([d, d_loc, d_time])
+ else:
+ fields.append(d)
+
+ return HttpResponse(
+ 'let META_FIELDS = ' + json.dumps(fields),
+ content_type='text/javascript')
+