Source code for evesrp.views

from __future__ import absolute_import
from __future__ import unicode_literals
from flask import redirect, url_for, render_template, make_response, request,\
        jsonify
from flask.ext.login import login_required, current_user
from .. import db
from ..models import Request, ActionType
from ..auth import PermissionType
from ..auth.models import Permission, Division


@login_required
[docs]def index(): """The index page for EVE-SRP.""" return redirect(url_for('requests.personal_requests'))
def error_page(error): """View function for displaying error pages.""" # Try to get some meaningful bits of information about the error # HTTPExceptions (raised by abort()) have code and description attributes. # Try to prefer those rich values over more generic information. code = error.code if hasattr(error, 'code') else 500 if hasattr(error, 'description'): description = error.description else: description = str(error) name = error.name if hasattr(error, 'name') else u'Application Error' # Give the error information in a machine readable format for APIs if request.is_json or request.is_xhr: response_content = jsonify(description=error.description, code=code) elif request.is_xml: pass else: response_content = render_template('error.html', code=code, description=description, name=name) # Give a default response code for generic exceptions return make_response(response_content, code) def request_count(permission, statuses=None): """Function intended for counting the number of requests for Jinja templates. """ if statuses is None: if permission == PermissionType.review: statuses = (ActionType.evaluating,) elif permission == PermissionType.pay: statuses = (ActionType.approved,) elif permission == PermissionType.submit: statuses = (ActionType.incomplete,) else: return 0 elif statuses in ActionType.statuses: statuses = (statuses,) permissions = current_user.permissions.\ filter(Permission.permission==permission).\ subquery() divisions = db.session.query(Division.id).\ join(permissions).\ subquery() requests = db.session.query(db.func.count(db.distinct(Request.id))).\ join(divisions).\ filter(Request.status.in_(statuses)) if permission == PermissionType.submit: requests = requests.filter(Request.submitter==current_user) return requests.one()[0]