Exemplo n.º 1
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.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)

    if itip.crypto_tip_pub_key:
        answers = base64.b64encode(
            GCE.asymmetric_encrypt(itip.crypto_tip_pub_key,
                                   json.dumps(answers).encode())).decode()
    else:
        db_save_questionnaire_answers(session, tid, itip.id, answers)

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

    itip.additional_questionnaire_id = ''
Exemplo n.º 2
0
def update_identity_information(session, tid, tip_id, identity_field_id,
                                identity_field_answers, language):
    internaltip = models.db_get(session, models.InternalTip,
                                models.InternalTip.id == tip_id,
                                models.InternalTip.tid == tid)

    if internaltip.identity_provided:
        return

    aqs = session.query(models.ArchivedSchema).filter(
        models.ArchivedSchema.hash == internaltip.questionnaire_hash).one()

    questionnaire = db_serialize_archived_questionnaire_schema(
        session, aqs.schema, language)
    for step in questionnaire:
        for field in step['children']:
            if field['id'] == identity_field_id and field[
                    'id'] == 'whistleblower_identity':
                db_save_questionnaire_answers(
                    session, tid, internaltip.id,
                    {identity_field_id: [identity_field_answers]})
                now = datetime_now()
                internaltip.update_date = now
                internaltip.wb_last_access = now
                internaltip.identity_provided = True
                internaltip.identity_provided_date = now
                return
Exemplo n.º 3
0
def update_identity_information(store, tip_id, identity_field_id, identity_field_answers, language):
    wbtip = db_access_wbtip(store, tip_id)
    internaltip = wbtip.internaltip
    identity_provided = internaltip.identity_provided

    if not identity_provided:
        questionnaire = db_get_archived_questionnaire_schema(store, internaltip.questionnaire_hash, language)
        for step in questionnaire:
            for field in step['children']:
                if field['id'] == identity_field_id and field['key'] == 'whistleblower_identity':
                    db_save_questionnaire_answers(store, internaltip.id,
                                                  {identity_field_id: [identity_field_answers]})
                    now = datetime_now()
                    internaltip.update_date = now
                    internaltip.identity_provided = True
                    internaltip.identity_provided_date = now
                    return
Exemplo n.º 4
0
def update_identity_information(store, tip_id, identity_field_id, identity_field_answers, language):
    wbtip = db_access_wbtip(store, tip_id)
    internaltip = wbtip.internaltip
    identity_provided = internaltip.identity_provided

    if not identity_provided:
        questionnaire = db_get_archived_questionnaire_schema(store, internaltip.questionnaire_hash, language)
        for step in questionnaire:
            for field in step['children']:
                if field['id'] == identity_field_id and field['key'] == 'whistleblower_identity':
                    db_save_questionnaire_answers(store, internaltip.id,
                                                  {identity_field_id: [identity_field_answers]})
                    now = datetime_now()
                    internaltip.update_date = now
                    internaltip.identity_provided = True
                    internaltip.identity_provided_date = now
                    return
Exemplo n.º 5
0
def update_identity_information(store, tip_id, identity_field_id, identity_field_answers, language):
    internaltip = models.db_get(store, models.InternalTip, id=tip_id)

    if internaltip.identity_provided:
        return

    questionnaire = db_serialize_archived_questionnaire_schema(store, internaltip.questionnaire_hash, language)
    for step in questionnaire:
        for field in step['children']:
            if field['id'] == identity_field_id and field['id'] == 'whistleblower_identity':
                db_save_questionnaire_answers(store, internaltip.id,
                                              {identity_field_id: [identity_field_answers]})
                now = datetime_now()
                internaltip.update_date = now
                internaltip.identity_provided = True
                internaltip.identity_provided_date = now
                return
Exemplo n.º 6
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.º 7
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.º 8
0
    def handle_internaltip_fixes(self, new_obj, old_obj):
        old_node = self.store_old.find(self.model_from['Node']).one()
        new_archivedschema_model = self.model_to['ArchivedSchema']

        questionnaire, answers = self.extract_answers_from_wb_steps(
            old_obj.wb_steps)

        new_obj.questionnaire_hash = sha256(json.dumps(questionnaire))

        aqs = self.store_new.find(
            new_archivedschema_model, new_archivedschema_model.hash == unicode(
                new_obj.questionnaire_hash),
            new_archivedschema_model.type == u'questionnaire',
            new_archivedschema_model.language == unicode(
                old_node.default_language)).one()

        if not aqs:
            for lang in old_node.languages_enabled:
                aqs = new_archivedschema_model()
                aqs.hash = new_obj.questionnaire_hash
                aqs.type = u'questionnaire'
                aqs.language = lang
                aqs.schema = questionnaire
                self.store_new.add(aqs)

                preview = []
                for s in aqs.schema:
                    for f in s['children']:
                        if f['preview']:
                            preview.append(f)

                aqsp = new_archivedschema_model()
                aqsp.hash = new_obj.questionnaire_hash
                aqsp.type = u'preview'
                aqsp.language = lang
                aqsp.schema = preview
                self.store_new.add(aqsp)

        db_save_questionnaire_answers(self.store_new, new_obj.id, answers)

        new_obj.preview = extract_answers_preview(questionnaire, answers)
Exemplo n.º 9
0
    def handle_internaltip_fixes(self, new_obj, old_obj):
        old_node = self.store_old.find(self.model_from['Node']).one()
        new_archivedschema_model = self.model_to['ArchivedSchema']

        questionnaire, answers = self.extract_answers_from_wb_steps(old_obj.wb_steps)

        new_obj.questionnaire_hash = sha256(json.dumps(questionnaire))

        aqs = self.store_new.find(new_archivedschema_model,
                                  new_archivedschema_model.hash == unicode(new_obj.questionnaire_hash),
                                  new_archivedschema_model.type == u'questionnaire',
                                  new_archivedschema_model.language == unicode(old_node.default_language)).one()

        if not aqs:
            for lang in old_node.languages_enabled:
                aqs = new_archivedschema_model()
                aqs.hash = new_obj.questionnaire_hash
                aqs.type = u'questionnaire'
                aqs.language = lang
                aqs.schema = questionnaire
                self.store_new.add(aqs)

                preview = []
                for s in aqs.schema:
                    for f in s['children']:
                        if f['preview']:
                            preview.append(f)

                aqsp = new_archivedschema_model()
                aqsp.hash = new_obj.questionnaire_hash
                aqsp.type = u'preview'
                aqsp.language = lang
                aqsp.schema = preview
                self.store_new.add(aqsp)

        db_save_questionnaire_answers(self.store_new, new_obj.id, answers)

        new_obj.preview = extract_answers_preview(questionnaire, answers)