""" Start Audit Logic ================= This provides the logic layer for starting a new label audit. """ from labelaudit.logic import audit_persistence from labelaudit.logic.result import Result from labelaudit.models.label_audit import LabelAudit from labelaudit.tasks import label_tasks def start_label_audit(vendor_id, user_id): """Starts new label audit for vendor, on behalf of user Adds record to youtube_audit for given vendor_id. Adds vendor_id to LabelQ Args: vendor_id (int): the vendor identifier user_id (int): the user initiating the audit prep Return: labelaudit.logic.result.Result: result object containing the outcome. """ creation_result = create_new_youtube_audit(vendor_id, user_id) start_result = Result( message=creation_result.message, status=creation_result.status) if creation_result.success: audit = creation_result.message # pass user id in so we can so some hack-ish feature control label_tasks.process_audit.delay(audit.get('youtubeAuditId')) return start_result def create_new_youtube_audit(vendor_id, user_id): """Calls VAPI endpoint to POST new youtube_audit Args: vendor_id (int): the vendor identifier user_id (int): the user initiating the audit prep Return: labelaudit.logic.result.Result: result from audit_persistence.persist. """ # @todo: update persist to take a dict, then update this code label_audit = LabelAudit() label_audit.vendor_id = vendor_id label_audit.initiated_by_id = user_id label_audit.audit_status = 'requested' return audit_persistence.persist(label_audit)