Exemplo n.º 1
0
    def epilogue(self):
        if self.session_new.query(self.model_from['Tenant']).count() > 1:
            self.session_new.add(self.model_to['Config']({
                'tid': 1,
                'var_name': 'multisite',
                'value': True
            }))
            self.entries_count['Config'] += 1

        ids = [
            id[0]
            for id in self.session_old.query(self.model_from['Field'].id).
            filter(self.model_from['Field'].template_id ==
                   'whistleblower_identity')
        ]

        for internaltip in self.session_old.query(
                self.model_from['InternalTip']):
            answers = self.db_serialize_questionnaire_answers(
                self.session_old, internaltip)

            db_set_internaltip_answers(self.session_new, internaltip.id,
                                       internaltip.questionnaire_hash, answers)

            for id in ids:
                if id in answers:
                    db_set_internaltip_data(self.session_new, internaltip.id,
                                            'identity_provided', True)
                    db_set_internaltip_data(self.session_new, internaltip.id,
                                            'whistleblower_identity',
                                            answers[id])
                    break
Exemplo n.º 2
0
def store_additional_questionnaire_answers(session, tid, tip_id, answers,
                                           language):
    itip = session.query(models.InternalTip) \
                  .filter(models.InternalTip.id == tip_id,
                          models.InternalTip.status != 'closed',
                          models.InternalTip.tid == tid).one()

    if not itip.additional_questionnaire_id:
        return

    steps = db_get_questionnaire(session, tid,
                                 itip.additional_questionnaire_id,
                                 None)['steps']
    questionnaire_hash = db_archive_questionnaire_schema(session, steps)

    db_save_plaintext_answers(session, tid, itip.id, answers,
                              itip.crypto_tip_pub_key != '')

    if itip.crypto_tip_pub_key:
        answers = base64.b64encode(
            GCE.asymmetric_encrypt(itip.crypto_tip_pub_key,
                                   json.dumps(answers).encode())).decode()

    db_set_internaltip_answers(session, itip.id, questionnaire_hash, answers)

    itip.additional_questionnaire_id = ''
Exemplo n.º 3
0
    def epilogue(self):
        if self.session_new.query(self.model_from['Tenant']).count() > 1:
            obj = self.model_to['Config']()
            obj.tid = 1
            obj.var_name = 'multisite'
            obj.value = True
            self.session_new.add(obj)
            self.entries_count['Config'] += 1

        for obj in self.session_new.query(self.model_from['WhistleblowerTip']):
            obj.hash_alg = 'SCRYPT'

        ids = [
            id[0]
            for id in self.session_old.query(self.model_from['Field'].id).
            filter(self.model_from['Field'].template_id ==
                   'whistleblower_identity')
        ]

        for internaltip in self.session_old.query(
                self.model_from['InternalTip']):
            answers = self.db_serialize_questionnaire_answers(
                self.session_old, internaltip)

            db_set_internaltip_answers(self.session_new, internaltip.id,
                                       internaltip.questionnaire_hash, answers)

            for id in ids:
                if id in answers:
                    db_set_internaltip_data(self.session_new, internaltip.id,
                                            'identity_provided', True)
                    db_set_internaltip_data(self.session_new, internaltip.id,
                                            'whistleblower_identity',
                                            answers[id])
                    break
Exemplo n.º 4
0
def store_additional_questionnaire_answers(session, tid, tip_id, answers, language):
    internaltip = session.query(models.InternalTip) \
                         .filter(models.InternalTip.id == tip_id,
                                 models.InternalTip.tid == tid).one()

    if not internaltip.additional_questionnaire_id:
        return

    steps = db_get_questionnaire(session, tid, internaltip.additional_questionnaire_id, None)['steps']
    questionnaire_hash = db_archive_questionnaire_schema(session, steps)

    db_save_questionnaire_answers(session, tid, internaltip.id, answers)

    db_set_internaltip_answers(session,
                               internaltip.id,
                               questionnaire_hash,
                               answers,
                               False)

    internaltip.additional_questionnaire_id = ''
Exemplo n.º 5
0
def store_additional_questionnaire_answers(session, tid, tip_id, answers, language):
    internaltip = session.query(models.InternalTip) \
                         .filter(models.InternalTip.id == tip_id,
                                 models.InternalTip.tid == tid).one()

    if not internaltip.additional_questionnaire_id:
        return

    steps = db_get_questionnaire(session, tid, internaltip.additional_questionnaire_id, None)['steps']
    questionnaire_hash = db_archive_questionnaire_schema(session, steps)

    db_save_questionnaire_answers(session, tid, internaltip.id, answers)

    db_set_internaltip_answers(session,
                               internaltip.id,
                               questionnaire_hash,
                               answers,
                               False)

    internaltip.additional_questionnaire_id = ''
Exemplo n.º 6
0
    def epilogue(self):
        if self.session_new.query(self.model_from['Tenant']).count() > 1:
            self.session_new.add(self.model_to['Config']({'tid': 1, 'var_name': u'multisite', 'value': True}))
            self.entries_count['Config'] += 1

        ids = [id[0] for id in self.session_old.query(self.model_from['Field'].id)
                                               .filter(self.model_from['Field'].template_id == u'whistleblower_identity')]

        for internaltip in self.session_old.query(self.model_from['InternalTip']):
            answers = self.db_serialize_questionnaire_answers(self.session_old, internaltip.tid, internaltip)

            db_set_internaltip_answers(self.session_new,
                                       internaltip.id,
                                       internaltip.questionnaire_hash,
                                       answers,
                                       False)

            for id in ids:
                if id in answers:
                    db_set_internaltip_data(self.session_new, internaltip.id, 'identity_provided', True, False)
                    db_set_internaltip_data(self.session_new, internaltip.id, 'whistleblower_identity', answers[id], False)
                    break