Esempio n. 1
0
def catch_bare_integrity_error(method, logger=setup_custom_logger('dokomo')):
    """
    If an IntegrityError falls through a function, log it and raise the
    appropriate web error.

    :param method: the HTTP method
    :param logger: the logger to use (useful for testing)
    :return: the wrapped method
    :raise tornado.web.HTTPError: 422 when catching an IntegrityError
    """

    @functools.wraps(method)
    def wrapper(*args, **kwargs):
        try:
            return method(*args, **kwargs)
        except IntegrityError as e:
            logger.error('\n' + pformat(e))
            reason = validation_message('submission', '', 'invalid')
            raise tornado.web.HTTPError(422, reason=reason)

    return wrapper
Esempio n. 2
0
    SurveySubmissionsAPIHandler
from dokomoforms.handlers.util.base import BaseHandler, get_json_request_body
import dokomoforms.handlers.util.ui
from dokomoforms.handlers.debug import DebugLoginHandler, DebugLogoutHandler, \
    DebugUserCreationHandler
from dokomoforms.handlers.view.surveys import ViewHandler, ViewSurveyHandler, \
    ViewSurveyDataHandler
from dokomoforms.handlers.view.submissions import ViewSubmissionHandler
from dokomoforms.handlers.view.visualize import VisualizationHandler
from dokomoforms.utils.logger import setup_custom_logger
from dokomoforms.db.survey import SurveyPrefixDoesNotIdentifyASurveyError, \
    SurveyPrefixTooShortError, get_survey_id_from_prefix, get_surveys_by_email
from dokomoforms import settings


logger = setup_custom_logger('dokomo')


class Index(BaseHandler):
    def get(self, msg=""):
        surveys = get_surveys_by_email(self.db, self.current_user, 10)
        recent_submissions = submission_api.get_all(self.db,
                                                    email=self.current_user,
                                                    limit=5, direction='DESC')
        self.render('index.html', message=msg, surveys=surveys,
                    recent_submissions=recent_submissions)

    def post(self):
        LogoutHandler.post(self)  # TODO move to js
        self.get("You logged out")