Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def category(self):
""" Get the category this entry belongs to. """
from .category import Category # pylint: disable=cyclic-import
return Category.load(self._record.category)
def handle_unauthorized(cur_user, category='', **kwargs):
""" Handle an unauthorized access to a page """
if cur_user:
# User is logged in already
tmpl = map_template(category, 'unauthorized')
if not tmpl:
# Use the default error handler
raise http_error.Forbidden(f"User {cur_user.name} does not have access")
# Render the category's unauthorized template
return render_publ_template(tmpl,
category=Category.load(category),
**kwargs)[0], 403, NO_CACHE
# User is not already logged in, so present a login page
raise http_error.Unauthorized()
current_id: typing.Optional[int] = int(entry_obj.get('Entry-ID')) # type:ignore
except (KeyError, TypeError, ValueError) as err:
LOGGER.debug("Error checking entry ID: %s", err)
current_id = record.id
if current_id != record.id:
LOGGER.debug("entry %s says it has id %d, index says %d",
entry_obj.file_path, current_id, record.id)
from .entry import scan_file
scan_file(entry_obj.file_path, None, True)
return redirect(url_for('entry', entry_id=current_id))
entry_template = (template
or entry_obj.get('Entry-Template')
or Category.load(category).get('Entry-Template')
or 'entry')
tmpl = map_template(category, entry_template)
if not tmpl:
raise http_error.BadRequest("Missing entry template" + entry_template)
rendered, etag = render_publ_template(
tmpl,
entry=entry_obj,
category=Category.load(category))
if request.if_none_match.contains(etag):
return 'Not modified', 304
headers = {
'Content-Type': entry_obj.get('Content-Type', mime_type(tmpl)),
error_message,
error_codes,
exception)
error_codes = utils.as_list(error_codes)
error_code = error_codes[0]
template_list = [str(code) for code in error_codes]
template_list.append(str(int(error_code / 100) * 100))
template_list.append('error')
template = map_template(category, template_list)
if template:
return render_publ_template(
template,
category=Category.load(category),
error={'code': error_code, 'message': error_message},
exception=exception)[0], error_code, headers
return '%d %s' % (error_code, error_message), error_code, headers
def root(self):
""" Get the root category object. Equivalent to `breadcrumb[0]` but faster/easier. """
if self.path:
return Category.load(None)
return self
LOGGER.debug("Checking for malformed category %s", test_path)
record = orm.select(
e for e in model.Entry if e.category == test_path).exists() # type:ignore
if record:
return redirect(url_for('category', category=test_path, **request.args))
# nope, we just don't know what this is
raise http_error.NotFound(f"No such view '{template}'")
view_spec = view.parse_view_spec(request.args)
view_spec['category'] = category
view_obj = view.View.load(view_spec)
rendered, etag = render_publ_template(
tmpl,
category=Category.load(category),
view=view_obj)
if request.if_none_match.contains(etag):
return 'Not modified', 304
return rendered, {'Content-Type': mime_type(tmpl),
'ETag': etag}