mirror of
https://github.com/JonathanHerrewijnen/calibre-web.git
synced 2024-11-14 15:14:07 +00:00
bbf6d9b026
Bugfix for feeds - removed categories related and up - load new books now working - category random now working login page is free of non accessible elements boolean custom column is vivible in UI books with only with certain languages can be shown book shelfs can be deleted from UI Anonymous user view is more resticted Added browse of series in sidebar Dependencys in vendor folder are updated to newer versions (licencs files are now present) Bugfix editing Authors names Made upload on windows working
74 lines
2.4 KiB
Python
74 lines
2.4 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""
|
|
werkzeug.contrib.testtools
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
This module implements extended wrappers for simplified testing.
|
|
|
|
`TestResponse`
|
|
A response wrapper which adds various cached attributes for
|
|
simplified assertions on various content types.
|
|
|
|
:copyright: (c) 2014 by the Werkzeug Team, see AUTHORS for more details.
|
|
:license: BSD, see LICENSE for more details.
|
|
"""
|
|
from werkzeug.utils import cached_property, import_string
|
|
from werkzeug.wrappers import Response
|
|
|
|
from warnings import warn
|
|
warn(DeprecationWarning('werkzeug.contrib.testtools is deprecated and '
|
|
'will be removed with Werkzeug 1.0'))
|
|
|
|
|
|
class ContentAccessors(object):
|
|
|
|
"""
|
|
A mixin class for response objects that provides a couple of useful
|
|
accessors for unittesting.
|
|
"""
|
|
|
|
def xml(self):
|
|
"""Get an etree if possible."""
|
|
if 'xml' not in self.mimetype:
|
|
raise AttributeError(
|
|
'Not a XML response (Content-Type: %s)'
|
|
% self.mimetype)
|
|
for module in ['xml.etree.ElementTree', 'ElementTree',
|
|
'elementtree.ElementTree']:
|
|
etree = import_string(module, silent=True)
|
|
if etree is not None:
|
|
return etree.XML(self.body)
|
|
raise RuntimeError('You must have ElementTree installed '
|
|
'to use TestResponse.xml')
|
|
xml = cached_property(xml)
|
|
|
|
def lxml(self):
|
|
"""Get an lxml etree if possible."""
|
|
if ('html' not in self.mimetype and 'xml' not in self.mimetype):
|
|
raise AttributeError('Not an HTML/XML response')
|
|
from lxml import etree
|
|
try:
|
|
from lxml.html import fromstring
|
|
except ImportError:
|
|
fromstring = etree.HTML
|
|
if self.mimetype == 'text/html':
|
|
return fromstring(self.data)
|
|
return etree.XML(self.data)
|
|
lxml = cached_property(lxml)
|
|
|
|
def json(self):
|
|
"""Get the result of simplejson.loads if possible."""
|
|
if 'json' not in self.mimetype:
|
|
raise AttributeError('Not a JSON response')
|
|
try:
|
|
from simplejson import loads
|
|
except ImportError:
|
|
from json import loads
|
|
return loads(self.data)
|
|
json = cached_property(json)
|
|
|
|
|
|
class TestResponse(Response, ContentAccessors):
|
|
|
|
"""Pass this to `werkzeug.test.Client` for easier unittesting."""
|