X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/c5d631fe1a261b311725696eae54a55c68d674a8..eb61c7e9637a2744b4ffa748317f2b72bd16a27d:/apps/api/handlers/library_handlers.py diff --git a/apps/api/handlers/library_handlers.py b/apps/api/handlers/library_handlers.py index 93d650bb..b7260674 100644 --- a/apps/api/handlers/library_handlers.py +++ b/apps/api/handlers/library_handlers.py @@ -177,13 +177,14 @@ class DocumentHandler(BaseHandler): @hglibrary def read(self, request, docid, lib): """Read document's meta data""" - log.info("Read %s", docid) + log.info(u"Read %s (%s)" % (docid, type(docid)) ) try: doc = lib.document(docid) udoc = doc.take(request.user.username) except RevisionNotFound, e: return response.EntityNotFound().django_response({ - 'exception': type(e), 'message': e.message}) + 'exception': type(e), 'message': e.message, + 'docid': docid }) # is_shared = udoc.ancestorof(doc) # is_uptodate = is_shared or shared.ancestorof(document) @@ -231,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 @@ -241,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)