Example #1
0
    def put(self, request, **kwargs):
        """This method is intended for updating an existing Organization record"""
        content_type = request.META.get("CONTENT_TYPE")
        response = []

        if content_type == "application/json":

            for item in request.data:
                pkval = item.get('id')
                if not pkval:
                    log.error('Unable to update Organization. No identifier provided')
                    return Response(status=status.HTTP_422_UNPROCESSABLE_ENTITY)
                try:
                    org = Organization.objects.get(pk=int(pkval))
                    n = item.get('name', org.name)
                    label = item.get('subject_id_label', org.subject_id_label)
                    js = {"name": n, "subject_id_label": label}
                    form = OrganizationForm(js, instance=org)
                    FormHelpers.processFormJsonResponse(form, response, invalid_dict={'id': pkval})
                except Organization.DoesNotExist:
                    log.error("Organization[{0}] does not exist.".format(pkval))
                    response.append(
                        {
                            'id': pkval,
                            'success': False,
                            'errors': [
                                {
                                    'id': ErrorConstants.ERROR_RECORD_ID_NOT_FOUND
                                }
                            ]
                        }
                    )
            return Response(response)
Example #2
0
    def put(self, request):
        """This method is intended for updating an existing ExternalSystem record"""

        response = []

        for item in request.data:
            pkval = item.get('id')
            s = item.get('external_system')

            if not pkval or not s:
                log.error("Unable to update ExternalSystem. Identifier not provided")
                return Response(status=status.HTTP_400_BAD_REQUEST)

            try:
                es = ExternalSystem.objects.get(pk=pkval)
                name = s.get('name', es.name)
                desc = s.get('description', es.description)
                url = s.get('url', es.url)
                js = {"name": name, "description": desc, "url": url}
                form = ExternalSystemForm(js, instance=es)
                FormHelpers.processFormJsonResponse(form, response, invalid_dict={'id': pkval})
            except ExternalSystem.DoesNotExist:
                log.error("Unable to update ExternalSystem. ExternalSystem[{0}] not found".format(pkval))
                response.append(
                    {
                        'id': pkval,
                        'success': False,
                        'errors': [
                            {
                                'id': ErrorConstants.ERROR_RECORD_ID_NOT_FOUND
                            }
                        ]
                    }
                )
        return Response(response)
Example #3
0
    def post(self, request):
        response = []

        for s in request.data:
            form = UserAuditForm(s)
            FormHelpers.processFormJsonResponse(form, response)
        return Response(response)
Example #4
0
    def post(self, request):
        """This method is intended for adding new ExternalRecord records"""

        content_type = request.META.get("CONTENT_TYPE")

        response = []

        if content_type == "application/json":

            for s in request.data:
                label = s.get('label_id')
                recordid = s.get('record_id')
                path = s.get('path')
                form = ExternalRecordForm(s)
                args = {'record_id': recordid}

                if path:
                    args['path'] = path

                if label:
                    args['label_id'] = int(label)
                else:
                    args['label_id'] = 1

                FormHelpers.processFormJsonResponse(form, response, valid_dict=args, invalid_dict=args)

            return json.dumps(response)
Example #5
0
    def put(self, request):
        """This method is intended for updating an existing ExternalSystem record"""

        response = []

        for item in request.data:
            pkval = item.get('id')
            s = item.get('external_system')

            if not pkval or not s:
                log.error("Unable to update ExternalSystem. Identifier not provided")
                return HttpResponse(status=codes.bad_request)

            try:
                es = ExternalSystem.objects.get(pk=pkval)
                name = s.get('name', es.name)
                desc = s.get('description', es.description)
                url = s.get('url', es.url)
                js = {"name": name, "description": desc, "url": url}
                form = ExternalSystemForm(js, instance=es)
                FormHelpers.processFormJsonResponse(form, response, invalid_dict={'id': pkval})
            except ExternalSystem.DoesNotExist:
                log.error("Unable to update ExternalSystem. ExternalSystem[{0}] not found".format(pkval))
                response.append(
                    {
                        'id': pkval,
                        'success': False,
                        'errors': [
                            {
                                'id': ErrorConstants.ERROR_RECORD_ID_NOT_FOUND
                            }
                        ]
                    }
                )
        return json.dumps(response)
Example #6
0
    def post(self, request):
        """This method is intended for adding new ExternalRecord records"""

        content_type = request.META.get("CONTENT_TYPE")

        response = []

        if content_type == "application/json":

            for s in request.data:
                label = s.get('label_id')
                recordid = s.get('record_id')
                path = s.get('path')
                form = ExternalRecordForm(s)
                args = {'record_id': recordid}

                if path:
                    args['path'] = path

                if label:
                    args['label_id'] = int(label)
                else:
                    args['label_id'] = 1

                FormHelpers.processFormJsonResponse(form, response, valid_dict=args, invalid_dict=args)

            return Response(response)
Example #7
0
    def put(self, request, **kwargs):
        """This method is intended for updating an existing Organization record"""
        content_type = request.META.get("CONTENT_TYPE")
        response = []

        if content_type == "application/json":

            for item in request.data:
                pkval = item.get('id')
                if not pkval:
                    log.error('Unable to update Organization. No identifier provided')
                    return HttpResponse(status=codes.unprocessable_entity)
                try:
                    org = Organization.objects.get(pk=int(pkval))
                    n = item.get('name', org.name)
                    label = item.get('subject_id_label', org.subject_id_label)
                    js = {"name": n, "subject_id_label": label}
                    form = OrganizationForm(js, instance=org)
                    FormHelpers.processFormJsonResponse(form, response, invalid_dict={'id': pkval})
                except Organization.DoesNotExist:
                    log.error("Organization[{0}] does not exist.".format(pkval))
                    response.append(
                        {
                            'id': pkval,
                            'success': False,
                            'errors': [
                                {
                                    'id': ErrorConstants.ERROR_RECORD_ID_NOT_FOUND
                                }
                            ]
                        }
                    )

            return json.dumps(response)
Example #8
0
    def put(self, request):
        """This method is intended for updating an existing ExternalRecord record"""

        content_type = request.META.get("CONTENT_TYPE")
        response = []

        if content_type == "application/json":

            for item in request.data:

                pkval = item.get('id')
                s = item.get('external_record')

                if not pkval or not s:
                    log.error("Unable to update existing ExternalRecord no identifier provided")
                    return HttpResponse(status=codes.unprocessable_entity)

                try:
                    er = ExternalRecord.objects.get(pk=pkval)
                    subjid = s.get('subject', str(er.subject.pk))
                    esid = s.get('external_system', str(er.external_system.pk))
                    erri = s.get('record_id', er.record_id)
                    erpath = s.get('path', er.path)

                    if er.label:
                        label = s.get('label', er.label.id)
                    else:
                        label = s.get('label')

                    js = {
                        "subject": subjid,
                        "external_system": esid,
                        "record_id": erri,
                        "path": erpath,
                        "label": label
                    }
                    form = ExternalRecordForm(js, instance=er)

                    FormHelpers.processFormJsonResponse(form, response, invalid_dict={'id': pkval})

                except ExternalRecord.DoesNotExist:
                    log.error("Unable to update ExternalRecord. ExternalRecord not found")
                    response.append(
                        {
                            'id': pkval,
                            'success': False,
                            'errors': [
                                {
                                    'id': ErrorConstants.ERROR_RECORD_ID_NOT_FOUND
                                }
                            ]
                        }
                    )

            return json.dumps(response)
Example #9
0
    def put(self, request):
        """This method is intended for updating an existing ExternalRecord record"""

        content_type = request.META.get("CONTENT_TYPE")
        response = []

        if content_type == "application/json":

            for item in request.data:

                pkval = item.get('id')
                s = item.get('external_record')

                if not pkval or not s:
                    log.error("Unable to update existing ExternalRecord no identifier provided")
                    return Response(status=status.HTTP_422_UNPROCESSABLE_ENTITY)

                try:
                    er = ExternalRecord.objects.get(pk=pkval)
                    subjid = s.get('subject', str(er.subject.pk))
                    esid = s.get('external_system', str(er.external_system.pk))
                    erri = s.get('record_id', er.record_id)
                    erpath = s.get('path', er.path)

                    if er.label:
                        label = s.get('label', er.label.id)
                    else:
                        label = s.get('label')

                    js = {
                        "subject": subjid,
                        "external_system": esid,
                        "record_id": erri,
                        "path": erpath,
                        "label": label
                    }
                    form = ExternalRecordForm(js, instance=er)

                    FormHelpers.processFormJsonResponse(form, response, invalid_dict={'id': pkval})

                except ExternalRecord.DoesNotExist:
                    log.error("Unable to update ExternalRecord. ExternalRecord not found")
                    response.append(
                        {
                            'id': pkval,
                            'success': False,
                            'errors': [
                                {
                                    'id': ErrorConstants.ERROR_RECORD_ID_NOT_FOUND
                                }
                            ]
                        }
                    )

            return Response(response)
Example #10
0
 def post(self, request):
     """This method is intended for adding new Organization records"""
     content_type = request.META.get("CONTENT_TYPE")
     response = []
     if content_type == "application/json":
         for org in request.data:
             name = org.get('name')
             form = OrganizationForm(org)
             args = {'name': name}
             FormHelpers.processFormJsonResponse(form, response, valid_dict=args, invalid_dict=args)
         return Response(response)
Example #11
0
 def post(self, request):
     """This method is intended for adding new Organization records"""
     content_type = request.META.get("CONTENT_TYPE")
     response = []
     if content_type == "application/json":
         for org in request.data:
             name = org.get('name')
             form = OrganizationForm(org)
             args = {'name': name}
             FormHelpers.processFormJsonResponse(form, response, valid_dict=args, invalid_dict=args)
         return json.dumps(response)
Example #12
0
    def put(self, request):
        """This method is intended for updating an existing protocol relationship"""
        # This API request will take in ID and subject relationship attributes
        # {
        #     "id": "x",              PK of subject relationship
        #     "subject_1": 6738,      PK of subject
        #     "subject_2": 6739,      PK of subject
        #     "subject_1_role": 14,   PK of subject role
        #     "subject_2_role": 15,   PK of subject role
        #     "protocol_id": 1        PK of protocol in the BRP
        # }
        response = []

        for item in request.data:
            pkval = item.get('id')
            subj_relation = SubjectFamRelation.objects.get(pk=pkval)

            if not pkval:
                log.error(
                    "Unable to update Subject relationship. No identifier provided"
                )
                return Response(status=status.HTTP_400_BAD_REQUEST)
            try:
                args = {
                    "subject_1":
                    item.get('subject_1'),
                    "subject_2":
                    item.get('subject_2'),
                    "subject_1_role":
                    item.get('subject_1_role'),
                    "subject_2_role":
                    item.get('subject_2_role'),
                    "protocol_id":
                    item.get('protocol_id', subj_relation.protocol_id)
                }
                form = SubjectFamRelationForm(args, instance=subj_relation)
                FormHelpers.processFormJsonResponse(form,
                                                    response,
                                                    invalid_dict={'id': pkval})
            except SubjectFamRelation.DoesNotExist:
                log.error(
                    "Unable to update Subject relationship. Subject relationship[{0}] does not exist"
                    .format(pkval))
                response.append({
                    'id':
                    pkval,
                    'success':
                    False,
                    'errors': [{
                        'id': ErrorConstants.ERROR_RECORD_ID_NOT_FOUND
                    }]
                })
        return Response(response)
Example #13
0
    def post(self, request):
        """This method is intended for adding new ExternalSystem records"""

        response = []

        for s in request.data:
            name = s.get('name')
            form = ExternalSystemForm(s)
            args = {'name': name}

            FormHelpers.processFormJsonResponse(form, response, valid_dict=args, invalid_dict=args)

        return Response(response)
Example #14
0
    def post(self, request):
        """This method is intended for adding new ExternalSystem records"""

        response = []

        for s in request.data:
            name = s.get('name')
            form = ExternalSystemForm(s)
            args = {'name': name}

            FormHelpers.processFormJsonResponse(form, response, valid_dict=args, invalid_dict=args)

        return json.dumps(response)
Example #15
0
    def post(self, request, pk):
        '''
        This method is intended for adding new ExternalRecordRelation records
        {
            "related_record": 2,
            "relation_type": 1
        }
        '''

        content_type = request.META.get("CONTENT_TYPE")

        response = []

        if content_type == "application/json":
            s = request.data
            s['external_record'] = pk
            # Check if this already exists
            args = {}
            args['external_record'] = request.data.get('external_record')
            args['related_record'] = request.data.get('related_record')
            args['relation_type'] = request.data.get('relation_type')
            if len(ExternalRecordRelation.objects.filter(external_record=args['external_record'], related_record=args['related_record'], relation_type=args['relation_type'])) > 0:
                return Response(json.dumps({'success': False, 'error': 'Record relation already exists'}))
            form = ExternalRecordRelationForm(s)
            r = FormHelpers.processFormJsonResponse(form, response, invalid_dict=args, valid_dict=args)

            return Response(r)
Example #16
0
    def post(self, request, pk):
        '''
        This method is intended for adding new ExternalRecordRelation records
        {
            "related_record": 2,
            "relation_type": 1
        }
        '''

        content_type = request.META.get("CONTENT_TYPE")

        response = []

        if content_type == "application/json":
            s = request.data
            s['external_record'] = pk
            # Check if this already exists
            args = {}
            args['external_record'] = request.data.get('external_record')
            args['related_record'] = request.data.get('related_record')
            args['relation_type'] = request.data.get('relation_type')
            if len(ExternalRecordRelation.objects.filter(external_record=args['external_record'], related_record=args['related_record'], relation_type=args['relation_type'])) > 0:
                return json.dumps({'success': False, 'error': 'Record relation already exists'})
            form = ExternalRecordRelationForm(s)
            r = FormHelpers.processFormJsonResponse(form, response, invalid_dict=args, valid_dict=args)

            return json.dumps(r)
Example #17
0
    def post(self, request):
        """This method is intended for adding new Subject records"""
        content_type = request.META.get("CONTENT_TYPE")
        response = []

        if content_type == "application/json":

            for s in request.data:
                form = SubjectForm(s)
                args = {
                    'organization_subject_id': s.get('organization_subject_id'),
                    'organization_id': s.get('organization')
                }
                FormHelpers.processFormJsonResponse(form, response, valid_dict=args, invalid_dict=args)

            return json.dumps(response)
Example #18
0
    def put(self, request):
        '''This method is intended for updating Groups.'''
        response = []

        for item in request.data:
            pkval = item.get('id')
            g = item.get('group')

            if not (pkval and g):
                log.error("Unable to update group. No group or ID provided")
                return Response(status=status.HTTP_400_BAD_REQUEST)

            current_client_key = g.get('current_client_key', None)

            if not current_client_key:
                log.error("Unable to update group. No client key provided")
                return Response(status=status.HTTP_400_BAD_REQUEST)

            try:
                grp = Group.objects.get(pk=pkval)

                if not grp.verify_client_key(current_client_key):
                    log.error("Unable to update group. Bad client key")
                    return Response(status=status.HTTP_401_UNAUTHORIZED)

                name = g.get('name', grp.name)
                lock = g.get('is_locking', grp.is_locking)
                des = g.get('description', grp.description)
                client_key = g.get('client_key', current_client_key)
                js = {
                    "name": name,
                    "client_key": client_key,
                    "is_locking": lock,
                    "description": des
                }
                form = GroupForm(js, instance=grp)
                rd = FormHelpers.processFormJsonResponse(
                    form, response, invalid_dict={'id': pkval})

                if rd.get('success', False):
                    grp = Group.objects.get(pk=rd.get('id'))
                    rd['ehb_key'] = grp.ehb_key.key
                else:
                    return Response
            except Group.DoesNotExist:
                log.error("Unable to update group. Group does not exist.")
                response.append({
                    'id':
                    pkval,
                    'success':
                    False,
                    'errors': [{
                        'id': ErrorConstants.ERROR_RECORD_ID_NOT_FOUND
                    }]
                })

        return Response(response)
Example #19
0
    def put(self, request):
        """This method is intended for updating an existing Subject record"""
        response = []

        for item in request.data:
            pkval = item.get('id')
            s = item.get('new_subject')

            if not pkval or not s:
                log.error("Unable to update Subject. No identifier provided")
                return Response(status=status.HTTP_400_BAD_REQUEST)
            try:
                subj = Subject.objects.get(pk=pkval)
                fn = s.get('first_name', subj.first_name)
                ln = s.get('last_name', subj.last_name)
                orgid = s.get('organization', subj.organization)
                org_sub_id = s.get('organization_subject_id',
                                   subj.organization_subject_id)
                dob = s.get('dob', subj.dob)
                js = {
                    "first_name": fn,
                    "last_name": ln,
                    "organization": orgid,
                    "organization_subject_id": org_sub_id,
                    "dob": dob
                }
                form = SubjectForm(js, instance=subj)
                FormHelpers.processFormJsonResponse(form,
                                                    response,
                                                    invalid_dict={'id': pkval})
            except Subject.DoesNotExist:
                log.error(
                    "Unable to update Subject. Subject[{0}] does not exist".
                    format(pkval))
                response.append({
                    'id':
                    pkval,
                    'success':
                    False,
                    'errors': [{
                        'id': ErrorConstants.ERROR_RECORD_ID_NOT_FOUND
                    }]
                })
        return Response(response)
Example #20
0
    def post(self, request):
        """This method is intended for adding new Subject records"""
        content_type = request.META.get("CONTENT_TYPE")
        response = []

        if content_type == "application/json":

            for s in request.data:
                form = SubjectForm(s)
                args = {
                    'organization_subject_id':
                    s.get('organization_subject_id'),
                    'organization_id': s.get('organization')
                }
                FormHelpers.processFormJsonResponse(form,
                                                    response,
                                                    valid_dict=args,
                                                    invalid_dict=args)
            return Response(response)
Example #21
0
    def put(self, request):
        """This method is intended for updating an existing Subject record"""
        response = []

        for item in request.data:
            pkval = item.get('id')
            s = item.get('new_subject')

            if not pkval or not s:
                log.error("Unable to update Subject. No identifier provided")
                return HttpResponse(status=codes.bad_request)
            try:
                subj = Subject.objects.get(pk=pkval)
                fn = s.get('first_name', subj.first_name)
                ln = s.get('last_name', subj.last_name)
                orgid = s.get('organization', subj.organization)
                org_sub_id = s.get('organization_subject_id', subj.organization_subject_id)
                dob = s.get('dob', subj.dob)
                js = {
                    "first_name": fn,
                    "last_name": ln,
                    "organization": orgid,
                    "organization_subject_id": org_sub_id,
                    "dob": dob
                }
                form = SubjectForm(js, instance=subj)
                FormHelpers.processFormJsonResponse(form, response, invalid_dict={'id': pkval})
            except Subject.DoesNotExist:
                log.error("Unable to update Subject. Subject[{0}] does not exist".format(pkval))
                response.append(
                    {
                        'id': pkval,
                        'success': False,
                        'errors': [
                            {
                                'id': ErrorConstants.ERROR_RECORD_ID_NOT_FOUND
                            }
                        ]
                    }
                )

        return json.dumps(response)
Example #22
0
    def put(self, request):
        '''This method is intended for updating Groups.'''
        response = []

        for item in request.data:
            pkval = item.get('id')
            g = item.get('group')

            if not (pkval and g):
                log.error("Unable to update group. No group or ID provided")
                return HttpResponse(status=codes.bad_request)

            current_client_key = g.get('current_client_key', None)

            if not current_client_key:
                log.error("Unable to update group. No client key provided")
                return HttpResponse(status=codes.bad_request)

            try:
                grp = Group.objects.get(pk=pkval)

                if not grp.verify_client_key(current_client_key):
                    log.error("Unable to update group. Bad client key")
                    return HttpResponse(status=codes.unauthorized)

                name = g.get('name', grp.name)
                lock = g.get('is_locking', grp.is_locking)
                des = g.get('description', grp.description)
                client_key = g.get('client_key', current_client_key)
                js = {"name": name, "client_key": client_key, "is_locking": lock, "description": des}
                form = GroupForm(js, instance=grp)
                rd = FormHelpers.processFormJsonResponse(form, response, invalid_dict={'id': pkval})

                if rd.get('success', False):
                    grp = Group.objects.get(pk=rd.get('id'))
                    rd['ehb_key'] = grp.ehb_key.key
                else:
                    return HttpResponse
            except Group.DoesNotExist:
                log.error("Unable to update group. Group does not exist.")
                response.append(
                    {
                        'id': pkval,
                        'success': False,
                        'errors': [
                            {
                                'id': ErrorConstants.ERROR_RECORD_ID_NOT_FOUND
                            }
                        ]
                    }
                )

        return json.dumps(response)
Example #23
0
    def post(self, request):
        """This method is intended for adding new Protocol Relationships"""
        content_type = request.META.get("CONTENT_TYPE")
        response = []

        if content_type == "application/json":

            for relationship in request.data:
                form = SubjectFamRelationForm(relationship)
                args = {
                    'subject_1': relationship.get('subject_1'),
                    'subject_2': relationship.get('subject_2'),
                    'subject_1_role': relationship.get('subject_1_role'),
                    'subject_2_role': relationship.get('subject_2_role'),
                    'protocol_id': relationship.get('protocol_id')
                }
                FormHelpers.processFormJsonResponse(form,
                                                    response,
                                                    valid_dict=args,
                                                    invalid_dict=args)
            return Response(response)
Example #24
0
    def post(self, request):
        '''This method is intended for creating Groups.'''
        response = []

        for g in request.data:
            form = GroupForm(g)
            args = {'name': g.get('name')}
            rd = FormHelpers.processFormJsonResponse(form, response, valid_dict=args, invalid_dict=args)

            if rd.get('success', False):
                grp = Group.objects.get(pk=rd.get('id'))
                rd['ehb_key'] = grp.ehb_key.key

        return json.dumps(response)
Example #25
0
    def post(self, request):
        '''This method is intended for creating Groups.'''
        response = []

        for g in request.data:
            form = GroupForm(g)
            args = {'name': g.get('name')}
            rd = FormHelpers.processFormJsonResponse(form,
                                                     response,
                                                     valid_dict=args,
                                                     invalid_dict=args)

            if rd.get('success', False):
                grp = Group.objects.get(pk=rd.get('id'))
                rd['ehb_key'] = grp.ehb_key.key

        return Response(response)