Made a very stupid mistake with LDAP connections, pushing up quickly to production.

This commit is contained in:
Dan Funk 2020-06-04 11:57:00 -04:00
parent 68aeaf1273
commit 50d2acac9c
3 changed files with 11 additions and 8 deletions

View File

@ -24,7 +24,8 @@ def get_approvals(everything=False):
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]
ldap_service = LdapService()
approvals = [Approval.from_model(approval_model, ldap_service) for approval_model in db_approvals]
results = ApprovalSchema(many=True).dump(approvals)
return results

View File

@ -48,13 +48,12 @@ class ApprovalModel(db.Model):
class Approval(object):
ldap_service = LdapService()
def __init__(self, **kwargs):
self.__dict__.update(kwargs)
@classmethod
def from_model(cls, model: ApprovalModel):
def from_model(cls, model: ApprovalModel, ldap_service: LdapSchema):
# TODO: Reduce the code by iterating over model's dict keys
instance = cls()
instance.id = model.id
@ -73,8 +72,8 @@ class Approval(object):
if model.study:
instance.title = model.study.title
try:
instance.approver = Approval.ldap_service.user_info(model.approver_uid)
instance.primary_investigator = Approval.ldap_service.user_info(model.study.primary_investigator_id)
instance.approver = ldap_service.user_info(model.approver_uid)
instance.primary_investigator = ldap_service.user_info(model.study.primary_investigator_id)
except ApiError as ae:
app.logger.error("Ldap lookup failed for approval record %i" % model.id)

View File

@ -9,6 +9,7 @@ from crc.models.approval import ApprovalModel, ApprovalStatus, ApprovalFile, App
from crc.models.study import StudyModel
from crc.models.workflow import WorkflowModel
from crc.services.file_service import FileService
from crc.services.ldap_service import LdapService
class ApprovalService(object):
@ -27,11 +28,12 @@ class ApprovalService(object):
query=query.filter(ApprovalModel.status != ApprovalStatus.CANCELED.value)
approvals = query.all()
ldap_service = LdapService()
for approval_model in approvals:
if approval_model.approver_uid == approver_uid:
main_approval = Approval.from_model(approval_model)
main_approval = Approval.from_model(approval_model, ldap_service)
else:
related_approvals.append(Approval.from_model(approval_model))
related_approvals.append(Approval.from_model(approval_model, ldap_service))
if not main_approval and len(related_approvals) > 0:
main_approval = related_approvals[0]
related_approvals = related_approvals[1:]
@ -68,11 +70,12 @@ class ApprovalService(object):
def get_approvals_for_study(study_id, include_cancelled=True):
"""Returns an array of Approval objects for the study, it does not
compute the related approvals."""
ldap_service = LdapService()
query = session.query(ApprovalModel).filter_by(study_id=study_id)
if not include_cancelled:
query = query.filter(ApprovalModel.status != ApprovalStatus.CANCELED.value)
db_approvals = query.all()
return [Approval.from_model(approval_model) for approval_model in db_approvals]
return [Approval.from_model(approval_model, ldap_service) for approval_model in db_approvals]
@staticmethod