def decline_agreement(user_info):
    supplier_code = user_info.get('supplier_code')
    email_address = user_info.get('email_address')

    supplier = suppliers.get_supplier_by_code(supplier_code)
    mandatory_supplier_checks(supplier)

    if email_address != supplier.data.get('email'):
        raise UnauthorisedError('Unauthorised to decline agreement')

    supplier_users = users.find(supplier_code=supplier_code).all()
    supplier.status = 'deleted'
    for user in supplier_users:
        user.active = False
        users.add_to_session(user)

    users.commit_changes()
    suppliers.save(supplier)

    send_decline_master_agreement_email(supplier.code)

    publish_tasks.supplier.delay(publish_tasks.compress_supplier(supplier),
                                 'declined_agreement',
                                 updated_by=email_address)

    audit_service.log_audit_event(
        audit_type=audit_types.declined_master_agreement,
        user=email_address,
        data={
            'supplierCode': supplier.code,
            'supplierData': supplier.data
        },
        db_object=supplier)
def process_auth_rep_email(supplier, data, user_info):
    email_address = supplier.data.get('email', '').encode('utf-8')
    user = users.find(email_address=email_address).one_or_none()
    if not user:
        framework = data.get('framework', 'digital-marketplace')
        user_data = {
            'name': supplier.data.get('representative'),
            'user_type': 'seller',
            'framework': framework,
            'supplier_code': supplier.code
        }
        claim = user_claims_service.make_claim(type='signup',
                                               email_address=email_address,
                                               data=user_data)
        if not claim:
            return jsonify(
                message="There was an issue completing the signup process."
            ), 500

        send_team_member_account_activation_email(
            token=claim.token,
            email_address=email_address,
            framework=framework,
            user_name=user_info.get('name'),
            supplier_name=supplier.name)
Example #3
0
def get_previous_evidence_and_feedback(evidence_id):
    evidence = evidence_service.get_evidence_by_id(evidence_id)
    if not evidence:
        abort(404)
    if evidence.status not in ['assessed', 'rejected']:
        abort(404)
    evidence_data = evidence.serialize()
    if evidence_data:
        domain_criteria = domain_criteria_service.get_criteria_by_domain_id(
            evidence_data['domainId'])
        evidence_data['domain_criteria'] = [
            x.serialize() for x in domain_criteria
        ]
        evidence_data['domain_price_maximum'] = evidence.domain.price_maximum
        feedback = evidence_assessment_service.find(
            evidence_id=evidence.id).one_or_none()
        if feedback:
            evidence_data['feedback'] = feedback.serialize()
            assessor = users.find(id=int(feedback.user_id)).one_or_none()
            evidence_data['assessor'] = assessor.name if assessor else ''
        evidence_data['domainName'] = evidence.domain.name
        supplier = suppliers.get_supplier_by_code(evidence.supplier_code)
        evidence_data['supplierName'] = supplier.name if supplier else ''
        try:
            evidence_data['criteriaNeeded'] = int(
                DomainCriteria(
                    domain_id=evidence_data.get('domainId', None),
                    rate=evidence_data.get('maxDailyRate',
                                           None)).get_criteria_needed())
        except DomainCriteriaInvalidRateException as e:
            abort(400, str(e))
    return jsonify(evidence=evidence_data), 200
Example #4
0
def send_evidence_assessment_rejection_notification(evidence):
    template_filename = 'evidence_assessment_rejected.md'

    frontend_address = current_app.config['FRONTEND_ADDRESS']

    domain = domain_service.find(id=evidence.domain_id).one_or_none()
    user = users.find(id=evidence.user_id).one_or_none()

    if not domain or not user:
        raise Exception('invalid domain id or user id')

    email_addresses = [user.email_address]

    # prepare copy
    email_body = render_email_template(template_filename,
                                       domain_name=domain.name,
                                       frontend_address=frontend_address)

    subject = "Outcome of assessment for %s" % (domain.name)

    send_or_handle_error(
        email_addresses,
        email_body,
        subject,
        current_app.config['DM_GENERIC_NOREPLY_EMAIL'],
        current_app.config['DM_GENERIC_SUPPORT_NAME'],
        event_description_for_errors='evidence assessment approved')
def deactivate_user(user_id):
    if current_user.id == user_id:
        return jsonify(message='Cannot deactivate yourself'), 400

    user = users.find(id=user_id,
                      active=True,
                      role='supplier',
                      supplier_code=current_user.supplier_code).one_or_none()

    if not user:
        return jsonify(message='User not found'), 400

    user.active = False

    saved = users.save(user)
    return jsonify(user=saved)