Example #1
0
 def saverawrequestversion(self, _requestdatajson, _requestid, _assigneegroup, _assignee, status, userid, username, isministryuser, assigneefirstname, assigneemiddlename, assigneelastname):
     ispiiredacted = _requestdatajson["ispiiredacted"] if 'ispiiredacted' in _requestdatajson  else False
     #Get documents
     result = FOIRawRequest.saverawrequestversion(_requestdatajson, _requestid, _assigneegroup, _assignee, status,ispiiredacted, userid, assigneefirstname, assigneemiddlename, assigneelastname)
     documentservice().createrawrequestdocumentversion(_requestid)
     asyncio.create_task(eventservice().postevent(_requestid,"rawrequest",userid, username, isministryuser))
     return result
Example #2
0
 def post(requestid, ministryrequestid):
     try:
         requestjson = request.get_json()
         rquesextensionschema = FOIRequestExtensionSchema().load(
             requestjson)
         if (AuthHelper.isministrymember() == False):
             result = extensionservice().createrequestextension(
                 requestid, ministryrequestid, rquesextensionschema,
                 AuthHelper.getuserid())
             if result.success == True:
                 asyncio.create_task(eventservice().posteventforextension(
                     ministryrequestid, result.identifier,
                     AuthHelper.getuserid(), AuthHelper.getusername(),
                     "add"))
                 return {
                     'status': result.success,
                     'message': result.message,
                     'id': result.identifier
                 }, 200
     except KeyError as err:
         return {'status': False, 'message': err.messages}, 400
     except BusinessException as exception:
         return {
             'status': exception.status_code,
             'message': exception.message
         }, 500
Example #3
0
 def post(requestid=None):
     try:
         updaterequest = request.get_json()
         userid = updaterequest['assignedTo']
         username = '******'
         if int(requestid) and str(requestid) == "-1":
             result = rawrequestservice().saverawrequest(
                 updaterequest,
                 "intake",
                 userid,
                 notes="Request submitted from FOI Flow")
             asyncio.create_task(eventservice().postevent(
                 result.identifier, "rawrequest", userid, username, False))
             return {
                 'status': result.success,
                 'message': result.message,
                 'id': result.identifier
             }, 200
     except ValueError:
         return {'status': 500, 'message': INVALID_REQUEST_ID}, 500
     except BusinessException as exception:
         return {
             'status': exception.status_code,
             'message': exception.message
         }, 500
Example #4
0
    def createrequestextensionversion(self, foirequestid, ministryrequestid,
                                      extensionid, extensionschema, userid,
                                      username):
        updatedduedate = None
        ministryversion = self.__getversionforrequest(ministryrequestid)
        extension = FOIRequestExtension.getextension(extensionid)
        extensionversion = extension['version']
        prevstatus = extension["extensionstatusid"]
        currentstatus = extensionschema["extensionstatusid"]
        isstatuschangedfromapproved = self.__isstatuschangedfromapproved(
            prevstatus, currentstatus)
        if isstatuschangedfromapproved == True:
            # gets the latest approved request
            approvedextension = self.getlatestapprovedrequest(
                extensionid, ministryrequestid, ministryversion)
            # gets the latest approved due date if any else gets the original due date
            updatedduedate = self.getlatestapprovedduedate(
                prevstatus, ministryrequestid, approvedextension)

        isdeletedocument = self.__isdeletedocument(isstatuschangedfromapproved,
                                                   extensionid,
                                                   extensionversion)
        if isdeletedocument == True:
            self.deletedocuments(extensionid, extensionversion,
                                 ministryrequestid, userid)

        #copyextension has the updated extension with data passed from FE with the new version of extension
        updatedextension = self.__copyextensionproperties(
            extension, extensionschema, extensionversion)
        # if current state is approved then gets the current extended due date
        extendedduedate = self.getextendedduedate(updatedextension)

        extensionresult = FOIRequestExtension.createextensionversion(
            ministryrequestid, ministryversion, updatedextension, userid)
        # save documents if it is part of current extension (update to the ministrydocuments table and extensiondocumentmapping table)
        if 'documents' in updatedextension and updatedextension[
                'documents'] and updatedextension['extensionstatusid'] != 1:
            self.saveextensiondocument(updatedextension['documents'],
                                       ministryrequestid, userid, extensionid)
        # Post event for system generated comments
        asyncio.create_task(eventservice().posteventforextension(
            ministryrequestid, extensionid, userid, username, "modify"))
        # updates the duedate to extendedduedate or updatedduedate
        # new ministry, extension, extensionmapping and document version gets created
        if extensionresult.success == True and (
                isstatuschangedfromapproved == True
                or updatedextension['extensionstatusid'] == 2):
            ministryrequestschema = {
                "duedate":
                extendedduedate if extendedduedate else updatedduedate
            }
            requestservice().saveministryrequestversion(
                ministryrequestschema, foirequestid, ministryrequestid, userid)
        return extensionresult
Example #5
0
    def post(requestid=None):
        try:
            updaterequest = request.get_json()
            if int(requestid) and str(requestid) != "-1":
                status = rawrequestservice().getstatus(updaterequest)
                rawrequest = rawrequestservice().getrawrequest(requestid)
                requestdata = getparams(updaterequest)

                assigneegroup = requestdata['assigneegroup']
                assignee = requestdata['assignee']
                assigneefirstname = requestdata['assigneefirstname']
                assigneemiddlename = requestdata['assigneemiddlename']
                assigneelastname = requestdata['assigneelastname']
                result = rawrequestservice().saverawrequestversion(
                    updaterequest, requestid, assigneegroup, assignee, status,
                    AuthHelper.getuserid(), AuthHelper.getusername(),
                    AuthHelper.isministrymember(), assigneefirstname,
                    assigneemiddlename, assigneelastname)
                if result.success == True:
                    asyncio.create_task(
                        rawrequestservice().posteventtoworkflow(
                            result.identifier, rawrequest['wfinstanceid'],
                            updaterequest, status))
                    return {
                        'status': result.success,
                        'message': result.message
                    }, 200
            elif int(requestid) and str(requestid) == "-1":
                result = rawrequestservice().saverawrequest(
                    updaterequest,
                    "intake",
                    AuthHelper.getuserid(),
                    notes="Request submitted from FOI Flow")
                asyncio.create_task(eventservice().postevent(
                    result.identifier, "rawrequest", AuthHelper.getuserid(),
                    AuthHelper.getusername(), AuthHelper.isministrymember()))
                return {
                    'status': result.success,
                    'message': result.message,
                    'id': result.identifier
                }, 200
        except ValueError:
            return {'status': 500, 'message': INVALID_REQUEST_ID}, 500
        except BusinessException as exception:
            return {
                'status': exception.status_code,
                'message': exception.message
            }, 500
Example #6
0
 def post():
     try:
         reminderresponse = eventservice().postreminderevent()
         respcode = 200 if reminderresponse.success == True else 500
         return {
             'status': reminderresponse.success,
             'message': reminderresponse.message,
             'id': reminderresponse.identifier
         }, respcode
     except KeyError as err:
         return {'status': False, 'message': err.messages}, 400
     except BusinessException as exception:
         return {
             'status': exception.status_code,
             'message': exception.message
         }, 500
Example #7
0
 def post(foirequestid, foiministryrequestid, usertype):
     """ POST Method for capturing FOI requests before processing"""
     try:
         if usertype != "ministry":
             return {'status': False, 'message': 'Bad Request'}, 400
         request_json = request.get_json()
         ministryrequestschema = FOIRequestMinistrySchema().load(
             request_json)
         result = requestservice().saveministryrequestversion(
             ministryrequestschema, foirequestid, foiministryrequestid,
             AuthHelper.getuserid())
         if result.success == True:
             metadata = json.dumps({
                 "id": result.identifier,
                 "ministries": result.args[0]
             })
             asyncio.create_task(requestservice().posteventtoworkflow(
                 foiministryrequestid, result.args[1],
                 ministryrequestschema, json.loads(metadata), "ministry"))
             asyncio.create_task(eventservice().postevent(
                 foiministryrequestid, "ministryrequest",
                 AuthHelper.getuserid(), AuthHelper.getusername(),
                 AuthHelper.isministrymember()))
             return {
                 'status': result.success,
                 'message': result.message,
                 'id': result.identifier,
                 'ministryRequests': result.args[0]
             }, 200
         else:
             return {
                 'status': False,
                 'message': EXCEPTION_MESSAGE_NOTFOUND_REQUEST,
                 'id': foirequestid
             }, 404
     except ValidationError as err:
         return {'status': False, 'message': err.messages}, 400
     except KeyError as err:
         return {'status': False, 'message': err.messages}, 400
     except BusinessException as exception:
         return {
             'status': exception.status_code,
             'message': exception.message
         }, 500
Example #8
0
 def post():
     try:
         requestjson = request.get_json()
         rawrqcommentschema = FOIRawRequestCommentSchema().load(requestjson)
         result = commentservice().createrawrequestcomment(
             rawrqcommentschema, AuthHelper.getuserid())
         if result.success == True:
             asyncio.create_task(eventservice().postcommentevent(
                 result.identifier, "rawrequest", AuthHelper.getuserid()))
         return {
             'status': result.success,
             'message': result.message,
             'id': result.identifier
         }, 200
     except KeyError as err:
         return {'status': False, 'message': err.messages}, 400
     except BusinessException as exception:
         return {
             'status': exception.status_code,
             'message': exception.message
         }, 500
Example #9
0
 def post(requestid, ministryrequestid, extensionid):
     try:
         if (AuthHelper.isministrymember() == False):
             result = extensionservice().deleterequestextension(
                 requestid, ministryrequestid, extensionid,
                 AuthHelper.getuserid())
             if result.success == True:
                 asyncio.create_task(eventservice().posteventforextension(
                     ministryrequestid, extensionid, AuthHelper.getuserid(),
                     AuthHelper.getusername(), "delete"))
                 return {
                     'status': result.success,
                     'message': result.message,
                     'id': result.identifier
                 }, 200
     except KeyError as err:
         return {'status': False, 'message': err.messages}, 400
     except BusinessException as exception:
         return {
             'status': exception.status_code,
             'message': exception.message
         }, 500