X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/09c2bec530540e51e71822a8269bb994cc144065..3b9b115efb44c7570453c0729f05f83a3b45cd4d:/apps/api/handlers/library_handlers.py diff --git a/apps/api/handlers/library_handlers.py b/apps/api/handlers/library_handlers.py index c5c52564..b7260674 100644 --- a/apps/api/handlers/library_handlers.py +++ b/apps/api/handlers/library_handlers.py @@ -232,8 +232,10 @@ class DocumentHTMLHandler(BaseHandler): return librarian.html.transform(document.data('xml'), is_file=False, parse_dublincore=False) except (EntryNotFound, RevisionNotFound), e: return response.EntityNotFound().django_response({ - 'exception': type(e), 'message': e.message}) - + 'reason': 'not-found', 'message': e.message}) + except librarian.ParseError, e: + return response.InternalError().django_response({ + 'reason': 'xml-parse-error', 'message': e.message }) # # Image Gallery @@ -242,31 +244,35 @@ class DocumentHTMLHandler(BaseHandler): class DocumentGalleryHandler(BaseHandler): allowed_methods = ('GET') + def read(self, request, docid): """Read meta-data about scans for gallery of this document.""" galleries = [] + from urllib import quote for assoc in GalleryForDocument.objects.filter(document=docid): dirpath = os.path.join(settings.MEDIA_ROOT, assoc.subpath) if not os.path.isdir(dirpath): - log.info(u"[WARNING]: missing gallery %s", dirpath) + log.warn(u"[WARNING]: missing gallery %s", dirpath) continue gallery = {'name': assoc.name, 'pages': []} for file in os.listdir(dirpath): - file = file.decode('utf-8') - - log.info(file) + if not isinstance(file, unicode): + log.warn(u"File %r is gallery %r is not unicode. Ommiting."\ + % (file, dirpath) ) + continue + name, ext = os.path.splitext(os.path.basename(file)) if ext.lower() not in [u'.png', u'.jpeg', u'.jpg']: - log.info("Ignoring: %s %s", name, ext) + log.info(u"Ignoring: %s %s", name, ext) continue url = settings.MEDIA_URL + assoc.subpath + u'/' + file; - gallery['pages'].append(url) + gallery['pages'].append( quote(url.encode('utf-8')) ) gallery['pages'].sort() galleries.append(gallery)