コード例 #1
0
ファイル: form.py プロジェクト: institutotim/resposta-rapida
    def process_submission(self, sms, sub_type, return_submission=False):
        """Método que realiza o processamento de submissões novas e retorna uma resposta ao usuário"""

        # Defaults
        submission_status = Submission.NOT_CONFIRMED if self.requires_confirmation else Submission.CONFIRMED

        default_answer = self.ans_default or Config.get("ans_confirmed") \
            if not self.requires_confirmation else self.ans_waiting_confirmation

        # Form conditions
        action, answer, new_value, extra_vars = Condition.process_conditions(self.conditions.all(), sms.text)

        if new_value:
            sms.text = new_value

        if action == Submission.CANCELED and answer:
            self.save_submission(sms, action)
            return answer

        # Fields parsing
        text_fields = self.split_fields(sms.text)

        if len(text_fields) != self.fields.count():
            submission = self.save_submission(sms, Submission.INVALID, text_fields, raw=True)
            processed_answer = self.ans_incorrect_num_fields
        else:

            instance_fields = self.instatiate_fields(text_fields)

            # Fields conditions
            action, answer = self.process_field_conditions(instance_fields)
            if action:
                submission_status = action

            context = self.get_context(instance_fields)
            if context and extra_vars:
                context = dict(context.items() + extra_vars.items())

            submission = self.save_submission(sms, submission_status, instance_fields, sub_type=sub_type,
                                              context=context)

            # Remote server calls
            r_answer = submission.remote_process_submission()

            if r_answer:
                answer = r_answer
            else:
                if not answer:
                    answer = self.process_answer_template(default_answer, context)

            processed_answer = self.process_answer_template(answer, context)

        if return_submission:
            return processed_answer, submission
        else:
            return processed_answer
コード例 #2
0
ファイル: form.py プロジェクト: institutotim/resposta-rapida
 def process_confirmation_conditions(self, message):
     """Processa as condições em caso de mensagem de confirmação de envio"""
     return Condition.process_conditions(self.confirmation_conditions.all(), message)