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
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")