mirror of
https://github.com/sartography/cr-connect-workflow.git
synced 2025-02-22 12:48:25 +00:00
We now cache the LDAP records - so we look in our own database for the record before calling out to ldap for the details when given a straight up computing id like dhf8r. Added "date_approved" to the approval model. And moved the approver and primary investigator into real associated models to make it easier to dump. Fixed a problem with the validation that was causing it to throw incorrect errors on valid workflows. Getting it to behave a little more like the front end behaves, and respecting the read-only fields. But it was mainly to do with always returning all the data with each form submission.
46 lines
1.5 KiB
Python
46 lines
1.5 KiB
Python
from datetime import datetime
|
|
|
|
from flask import g
|
|
|
|
from crc import app, db, session
|
|
|
|
from crc.api.common import ApiError, ApiErrorSchema
|
|
from crc.models.approval import Approval, ApprovalModel, ApprovalSchema
|
|
from crc.services.approval_service import ApprovalService
|
|
|
|
|
|
def get_approvals(everything=False):
|
|
if everything:
|
|
approvals = ApprovalService.get_all_approvals()
|
|
else:
|
|
approvals = ApprovalService.get_approvals_per_user(g.user.uid)
|
|
results = ApprovalSchema(many=True).dump(approvals)
|
|
return results
|
|
|
|
|
|
def get_approvals_for_study(study_id=None):
|
|
db_approvals = ApprovalService.get_approvals_for_study(study_id)
|
|
approvals = [Approval.from_model(approval_model) for approval_model in db_approvals]
|
|
results = ApprovalSchema(many=True).dump(approvals)
|
|
return results
|
|
|
|
|
|
def update_approval(approval_id, body):
|
|
if approval_id is None:
|
|
raise ApiError('unknown_approval', 'Please provide a valid Approval ID.')
|
|
|
|
approval_model = session.query(ApprovalModel).get(approval_id)
|
|
if approval_model is None:
|
|
raise ApiError('unknown_approval', 'The approval "' + str(approval_id) + '" is not recognized.')
|
|
|
|
approval: Approval = ApprovalSchema().load(body)
|
|
if approval_model.approver_uid != g.user.uid:
|
|
raise ApiError("not_your_approval", "You may not modify this approval. It belongs to another user.")
|
|
|
|
approval.update_model(approval_model)
|
|
approval_model.date_approved = datetime.now()
|
|
session.commit()
|
|
|
|
result = ApprovalSchema().dump(approval)
|
|
return result
|