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)
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
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)