Ejemplo n.º 1
0
    def survey_retry(self, survey_token, answer_token, **post):
        """ This route is called whenever the user has attempts left and hits the 'Retry' button
        after failing the survey."""
        access_data = self._get_access_data(survey_token,
                                            answer_token,
                                            ensure_token=True)
        if access_data['validity_code'] is not True:
            return self._redirect_with_error(access_data,
                                             access_data['validity_code'])

        survey_sudo, answer_sudo = access_data['survey_sudo'], access_data[
            'answer_sudo']
        if not answer_sudo:
            # attempts to 'retry' without having tried first
            return request.redirect("/")

        try:
            retry_answer_sudo = survey_sudo._create_answer(
                user=request.env.user,
                partner=answer_sudo.partner_id,
                email=answer_sudo.email,
                invite_token=answer_sudo.invite_token,
                test_entry=answer_sudo.test_entry,
                **self._prepare_retry_additional_values(answer_sudo))
        except:
            return request.redirect("/")
        return request.redirect(
            '/survey/start/%s?%s' %
            (survey_sudo.access_token,
             keep_query('*', answer_token=retry_answer_sudo.access_token)))
Ejemplo n.º 2
0
    def survey_retry(self, survey_token, answer_token, **post):
        """ This route is called whenever the user has attempts left and hits the 'Retry' button
        after failing the survey."""
        access_data = self._get_access_data(survey_token,
                                            answer_token,
                                            ensure_token=True)
        if access_data['validity_code'] is not True and access_data[
                'validity_code'] != 'answer_done':
            return self._redirect_with_error(access_data,
                                             access_data['validity_code'])

        survey_sudo, answer_sudo = access_data['survey_sudo'], access_data[
            'answer_sudo']
        if not answer_sudo:
            # attempts to 'retry' without having tried first
            return werkzeug.utils.redirect("/")

        try:
            retry_answer_sudo = survey_sudo._create_answer(
                user=request.env.user,
                partner=answer_sudo.partner_id,
                email=answer_sudo.email,
                invite_token=answer_sudo.invite_token,
                **{
                    'input_type': answer_sudo.input_type,
                    'deadline': answer_sudo.deadline,
                })
        except:
            return werkzeug.utils.redirect("/")
        return request.redirect(
            '/survey/start/%s?%s' %
            (survey_sudo.access_token,
             keep_query('*', answer_token=retry_answer_sudo.token)))
Ejemplo n.º 3
0
 def survey_test(self, survey_token, **kwargs):
     """ Test mode for surveys: create a test answer, only for managers or officers
     testing their surveys """
     survey_sudo, dummy = self._fetch_from_access_token(survey_token, False)
     try:
         answer_sudo = survey_sudo._create_answer(user=request.env.user, test_entry=True)
     except:
         return werkzeug.utils.redirect('/')
     return request.redirect('/survey/start/%s?%s' % (survey_sudo.access_token, keep_query('*', answer_token=answer_sudo.access_token)))
Ejemplo n.º 4
0
 def survey_test(self, survey_token, **kwargs):
     """ Test mode for surveys: create a test answer, only for managers or officers
     testing their surveys """
     survey_sudo, dummy = self._fetch_from_access_token(survey_token, False)
     try:
         answer_sudo = survey_sudo._create_answer(user=request.env.user, test_entry=True)
     except:
         return werkzeug.utils.redirect('/')
     return request.redirect('/survey/start/%s?%s' % (survey_sudo.access_token, keep_query('*', answer_token=answer_sudo.token)))
Ejemplo n.º 5
0
Archivo: main.py Proyecto: tuanace/odoo
 def survey_test(self, survey_id, token=None, **kwargs):
     """ Test mode for surveys: create a test answer, only for managers or officers
     testing their surveys """
     survey_sudo = request.env['survey.survey'].sudo().browse(survey_id)
     try:
         answer_sudo = survey_sudo._create_answer(user=request.env.user, test_entry=True)
     except:
         return werkzeug.utils.redirect('/')
     return request.redirect('/survey/start/%s?%s' % (survey_sudo.id, keep_query('*', token=answer_sudo.token)))
Ejemplo n.º 6
0
 def survey_test(self, survey_id, token=None, **kwargs):
     """ Test mode for surveys: create a test answer, only for managers or officers
     testing their surveys """
     survey_sudo = request.env['survey.survey'].sudo().browse(survey_id)
     try:
         answer_sudo = survey_sudo._create_answer(user=request.env.user,
                                                  test_entry=True)
     except:
         return werkzeug.utils.redirect('/')
     return request.redirect(
         '/survey/start/%s?%s' %
         (survey_sudo.id, keep_query('*', token=answer_sudo.token)))
Ejemplo n.º 7
0
    def survey_retry(self, survey_token, answer_token, **post):
        """ This route is called whenever the user has attempts left and hits the 'Retry' button
        after failing the survey."""
        access_data = self._get_access_data(survey_token, answer_token, ensure_token=True)
        if access_data['validity_code'] is not True and access_data['validity_code'] != 'answer_done':
            return self._redirect_with_error(access_data, access_data['validity_code'])

        survey_sudo, answer_sudo = access_data['survey_sudo'], access_data['answer_sudo']
        if not answer_sudo:
            # attempts to 'retry' without having tried first
            return werkzeug.utils.redirect("/")

        try:
            retry_answer_sudo = survey_sudo._create_answer(user=request.env.user, partner=answer_sudo.partner_id, email=answer_sudo.email, invite_token=answer_sudo.invite_token, **{
                'input_type': answer_sudo.input_type,
                'deadline': answer_sudo.deadline,
            })
        except:
            return werkzeug.utils.redirect("/")
        return request.redirect('/survey/start/%s?%s' % (survey_sudo.access_token, keep_query('*', answer_token=retry_answer_sudo.token)))
 def _get_action_download(self):
     if not self.zip_file:
         return {}
     url_base = "web/content"
     url_data = {
         'model': self._name,
         'id': self.id,
         'filename_field': 'zip_name',
         'field': 'zip_file',
         'download': 'true',
         'filename': self.zip_name,
     }
     action = {
         'name': 'Download attachment ZIP',
         'type': 'ir.actions.act_url',
         'url': "%s/?%s" % (url_base, keep_query(**url_data)),
         'target': 'self',
         'data': url_data,
     }
     return action
Ejemplo n.º 9
0
 def _get_action_download(self):
     if not self.csv_file:
         return {}
     url_base = "web/content"
     url_data = {
         'model': self._name,
         'id': self.id,
         'filename_field': 'csv_filename',
         'field': 'csv_file',
         'download': 'true',
         'filename': self.csv_filename,
     }
     action = {
         'name': 'Download csv report for stock valuation layer',
         'type': 'ir.actions.act_url',
         'url': "%s/?%s" % (url_base, keep_query(**url_data)),
         'target': 'self',
         'data': url_data,
     }
     return action
Ejemplo n.º 10
0
    def pager(self,
              total,
              page=1,
              step=10,
              scope=5,
              base_url='',
              url_getter=None):
        """Custom pager implementation."""
        # Compute Pager
        page_count = int(math.ceil(float(total) / step))

        page = max(1, min(int(page if str(page).isdigit() else 1), page_count))
        scope -= 1

        pmin = max(page - int(math.floor(scope / 2)), 1)
        pmax = min(pmin + scope, page_count)

        if pmax - pmin < scope:
            pmin = pmax - scope if pmax - scope > 0 else 1

        if not base_url:
            # default to current page url, and drop /listing path if any
            base_url = request.httprequest.path.split('/page')[0]

        qstring = keep_query()

        def get_url(page_nr):
            if page_nr <= 1:
                _url = base_url
            else:
                _url = "{}/page/{}".format(base_url, page_nr)
            if qstring:
                _url += '?' + qstring
            return _url

        if url_getter is None:
            url_getter = get_url

        page_prev = max(pmin, page - 1)
        page_next = min(pmax, page + 1)
        prev_url = url_getter(page_prev)
        next_url = url_getter(page_next)
        last_url = url_getter(pmax)
        paginated = AttrDict({
            "items_count":
            total,
            "need_nav":
            page_count > 1,
            "page_count":
            page_count,
            "has_prev":
            page > pmin,
            "has_next":
            page < pmax,
            "current":
            AttrDict({
                'url': url_getter(page),
                'num': page,
            }),
            "page_prev":
            AttrDict({
                'url': prev_url,
                'num': page_prev,
            }),
            "page_next":
            AttrDict({
                'url': next_url,
                'num': page_next,
            }),
            "page_last":
            AttrDict({
                'url': last_url,
                'num': pmax,
            }),
            "pages": [
                AttrDict({
                    'url': url_getter(i),
                    'num': i
                }) for i in xrange(pmin, pmax + 1)
            ]
        })
        return paginated