Exemple #1
0
class CreateFOIRawRequestComment(Resource):
    """Creates comment for raw(unopened) request."""
    @staticmethod
    @TRACER.trace()
    @cross_origin(origins=allowedorigins())
    @auth.require
    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
Exemple #2
0
class FOIRequests(Resource):
    """Creates foi request"""
    @staticmethod
    @TRACER.trace()
    @cross_origin(origins=allowedorigins())
    @auth.require
    def post():
        """ POST Method for capturing FOI requests before processing"""
        try:
            request_json = request.get_json()
            foirequestschema = FOIRequestWrapperSchema().load(request_json)
            assignedgroup = request_json[
                'assignedGroup'] if 'assignedGroup' in foirequestschema else None
            assignedto = request_json[
                'assignedTo'] if 'assignedTo' in foirequestschema else None
            assignedtofirstname = request_json[
                "assignedToFirstName"] if request_json.get(
                    "assignedToFirstName") != None else None
            assignedtomiddlename = request_json[
                "assignedToMiddleName"] if request_json.get(
                    "assignedToMiddleName") != None else None
            assignedtolastname = request_json[
                "assignedToLastName"] if request_json.get(
                    "assignedToLastName") != None else None
            rawresult = rawrequestservice().saverawrequestversion(
                request_json, request_json['id'], assignedgroup, assignedto,
                "Archived", AuthHelper.getuserid(), AuthHelper.getusername(),
                AuthHelper.isministrymember(), assignedtofirstname,
                assignedtomiddlename, assignedtolastname)
            if rawresult.success == True:
                result = requestservice().saverequest(foirequestschema,
                                                      AuthHelper.getuserid())
                if result.success == True:
                    requestservice().copywatchers(request_json['id'],
                                                  result.args[0],
                                                  AuthHelper.getuserid())
                    requestservice().copycomments(request_json['id'],
                                                  result.args[0],
                                                  AuthHelper.getuserid())
                    requestservice().copydocuments(request_json['id'],
                                                   result.args[0],
                                                   AuthHelper.getuserid())
                    requestservice().postopeneventtoworkflow(
                        result.identifier, rawresult.args[0], request_json,
                        result.args[0])
            return {
                'status': result.success,
                'message': result.message,
                'id': result.identifier,
                'ministryRequests': result.args[0]
            }, 200
        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
Exemple #3
0
class DashboardPagination(Resource):
    """ Retrives the foi request based on the queue type.
    """
    @staticmethod
    @TRACER.trace()
    @cross_origin(origins=allowedorigins())
    @auth.require
    @cors_preflight('GET,POST,OPTIONS')
    @auth.ismemberofgroups(getrequiredmemberships())
    def get():
        try:
            DEFAULT_PAGE = 1
            DEFAULT_SIZE = 10
            DEFAULT_SORT_ITEMS = ['currentState']
            DEFAULT_SORT_ORDERS = ['desc']

            params = {
                'groups': AuthHelper.getusergroups(),
                'page': flask.request.args.get('page', DEFAULT_PAGE, type=int),
                'size': flask.request.args.get('size', DEFAULT_SIZE, type=int),
                'sortingitems': flask.request.args.getlist('sortingitems[]'),
                'sortingorders': flask.request.args.getlist('sortingorders[]'),
                'requeststate': flask.request.args.getlist('requestState[]'),
                'requeststatus': flask.request.args.getlist('requestStatus[]'),
                'requesttype': flask.request.args.getlist('requestType[]'),
                'publicbody': flask.request.args.getlist('publicBodies[]'),
                'fromdate': flask.request.args.get('fromDate', None, type=str),
                'todate': flask.request.args.get('toDate', None, type=str),
                'search': flask.request.args.get('search', None, type=str),
                'keywords': flask.request.args.getlist('keywords[]'),
                'userid': flask.request.args.get('userid', None, type=str)
            }

            if len(params['sortingitems']) == 0:
                params['sortingitems'] = DEFAULT_SORT_ITEMS
            if len(params['sortingorders']) == 0:
                params['sortingorders'] = DEFAULT_SORT_ORDERS
            if params['requeststate'] is None:
                params['requeststate'] = []
            if params['requeststatus'] is None:
                params['requeststatus'] = []
            if params['requesttype'] is None:
                params['requesttype'] = []
            if params['publicbody'] is None:
                params['publicbody'] = []
            if params['keywords'] is None:
                params['keywords'] = []

            statuscode = 200
            if (AuthHelper.getusertype() == "iao"):
                requests = dashboardservice().advancedsearch(params)
            else:
                statuscode = 401

            return requests, statuscode
        except BusinessException as exception:
            return {
                'status': exception.status_code,
                'message': exception.message
            }, 500
Exemple #4
0
class FOIComment(Resource):
    """Retrieves comment based on type: ministry(opened) and raw(unopened)."""
    @staticmethod
    @TRACER.trace()
    @cross_origin(origins=allowedorigins())
    @auth.require
    def get(requesttype, requestid):
        if requesttype != "ministryrequest" and requesttype != "rawrequest":
            return {
                'status': False,
                'message': EXCEPTION_MESSAGE_BAD_REQUEST
            }, 400
        try:
            if requesttype == "ministryrequest":
                result = commentservice().getministryrequestcomments(requestid)
            else:
                result = commentservice().getrawrequestcomments(requestid)
            return json.dumps(result), 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
Exemple #5
0
class FOIDisableComment(Resource):
    """Disable comment based on type: ministry(opened) and raw(unopened)."""
    @staticmethod
    @TRACER.trace()
    @cross_origin(origins=allowedorigins())
    @auth.require
    def put(requesttype, commentid):
        if requesttype != "ministryrequest" and requesttype != "rawrequest":
            return {
                'status': False,
                'message': EXCEPTION_MESSAGE_BAD_REQUEST
            }, 400
        try:
            if requesttype == "ministryrequest":
                result = commentservice().disableministryrequestcomment(
                    commentid, AuthHelper.getuserid())
            else:
                result = commentservice().disablerawrequestcomment(
                    commentid, 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
Exemple #6
0
class FOIRawRequestLoadTest(Resource):
    """Consolidates create and retrival of raw request"""
    @staticmethod
    #@Tracer.trace()
    @cross_origin(origins=allowedorigins())
    @auth.require
    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
Exemple #7
0
class CreateFOIRequestExtension(Resource):
    """Creates extension for ministry(opened) request."""
    @staticmethod
    @TRACER.trace()
    @cross_origin(origins=allowedorigins())
    @auth.require
    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
Exemple #8
0
class EditFOIRequestExtension(Resource):
    """Edits extension for ministry(opened) request."""
    @staticmethod
    @TRACER.trace()
    @cross_origin(origins=allowedorigins())
    @auth.require
    def post(requestid, ministryrequestid, extensionid):
        try:
            requestjson = request.get_json()
            rquesextensionschema = FOIRequestExtensionSchema().load(
                requestjson)
            if (AuthHelper.isministrymember() == False):
                result = extensionservice().createrequestextensionversion(
                    requestid, ministryrequestid, extensionid,
                    rquesextensionschema, AuthHelper.getuserid(),
                    AuthHelper.getusername())
                if result.success == True:
                    # posteventforextension moved to createrequestextensionversion to generate the comments before updating the ministry table with new due date
                    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
Exemple #9
0
class FOIRequestUpdateById(Resource):
    """Updates an foi request"""
    @staticmethod
    @TRACER.trace()
    @cross_origin(origins=allowedorigins())
    @auth.require
    def put(foirequestid):
        """ PUT Method for capturing FOI requests before processing"""
        try:
            request_json = request.get_json()
            foirequestschema = EditableFOIRequestWrapperSchema().load(
                request_json)
            result = requestservice().updaterequest(foirequestschema,
                                                    foirequestid,
                                                    AuthHelper.getuserid())
            if result != {}:
                return {
                    'status': result.success,
                    'message': result.message,
                    'id': result.identifier
                }, 200
            else:
                return {
                    'status': False,
                    'message': EXCEPTION_MESSAGE_NOTFOUND_REQUEST,
                    'id': foirequestid
                }, 404
        except ValidationError as err:
            return {'status': False, 'message': err.messages}, 40
        except BusinessException as exception:
            return {
                'status': exception.status_code,
                'message': exception.message
            }, 500
Exemple #10
0
class FOIRequest(Resource):
    """Retrieve foi request for opened request"""
    @staticmethod
    @TRACER.trace()
    @cross_origin(origins=allowedorigins())
    @auth.require
    @auth.ismemberofgroups(getrequiredmemberships())
    def get(foirequestid, foiministryrequestid, usertype=None):
        try:
            jsondata = {}
            statuscode = 200
            if (AuthHelper.getusertype() == "iao") and (usertype is None or
                                                        (usertype == "iao")):
                jsondata = requestservice().getrequest(foirequestid,
                                                       foiministryrequestid)
            elif usertype is not None and usertype == "ministry" and AuthHelper.getusertype(
            ) == "ministry":
                jsondata = requestservice().getrequestdetailsforministry(
                    foirequestid, foiministryrequestid,
                    AuthHelper.getministrygroups())
            else:
                statuscode = 401
            return jsondata, statuscode
        except ValueError:
            return {'status': 500, 'message': "Invalid Request Id"}, 500
        except KeyError as err:
            return {'status': False, 'message': err.messages}, 400
        except BusinessException as exception:
            return {
                'status': exception.status_code,
                'message': exception.message
            }, 500
Exemple #11
0
class FOIDismissNotification(Resource):
    """Resource for managing FOI requests."""
    @staticmethod
    @TRACER.trace()
    @cross_origin(origins=allowedorigins())
    @auth.require
    def delete(type=None, idnumber=None, notficationid=None):
        try:
            result = notificationservice().dismissnotification(
                AuthHelper.getuserid(), type, idnumber, notficationid)
            if result.success == True:
                return {
                    'status': result.success,
                    'message': result.message,
                    'id': result.identifier
                }, 200
            return {
                'status': result.success,
                'message': result.message,
                'id': result.identifier
            }, 500
        except ValueError:
            return {'status': 500, 'message': "Invalid Request Id"}, 500
        except KeyError as err:
            return {'status': False, 'message': err.messages}, 400
        except BusinessException as exception:
            return {
                'status': exception.status_code,
                'message': exception.message
            }, 500
Exemple #12
0
class FOIAuditByField(Resource):
    """Resource for managing audit of FOI data."""
    @staticmethod
    @TRACER.trace()
    @cross_origin(origins=allowedorigins())
    @auth.require
    def get(type, id, field):
        """ GET Method for auditing of FOI request field"""

        if (type is None or id is None or field is None) or (
            (type is not None and type != "rawrequest"
             and type != "ministryrequest") or
            (field is not None and field != "description")):
            return {'status': False, 'message': 'Bad Request'}, 400

        try:
            isall = False if request.url.endswith('summary') else True
            result = auditservice().getauditforfield(
                type, id, field, AuthHelper.getusergroups(), isall)
            if result is not None:
                return {"audit": result}, 200
            else:
                return {'status': False, 'message': 'Not Found'}, 404
        except BusinessException as exception:
            return {
                'status': exception.status_code,
                'message': exception.message
            }, 500
Exemple #13
0
class Fee(Resource):

    @staticmethod
    @cross_origin(origins=allowedorigins())
    def get(code):
        try:
            date = request.args.get('date', datetime.today().strftime('%Y-%m-%d'))
            quantity = int(request.args.get('quantity', 1))
            return FeeService.get_fee(code=code, quantity=quantity, valid_date=date), 200
        except BusinessException as e:
            return {'status': e.code, 'message': e.message}, e.status_code
Exemple #14
0
class Payment(Resource):

    @staticmethod
    @cross_origin(origins=allowedorigins())
    def put(request_id: int, payment_id: int):
        try:
            request_json = request.get_json()
            fee_service: FeeService = FeeService(request_id=request_id, payment_id=payment_id)
            pay_response = fee_service.complete_payment(request_json)
            return pay_response, 201
        except BusinessException as e:
            return {'status': e.code, 'message': e.message}, e.status_code
Exemple #15
0
class FOIFlowDivisions(Resource):
    """Retrieves all active divisions for the passed in gov code    .
    """
    @staticmethod
    @TRACER.trace()
    @cross_origin(origins=allowedorigins())
    @auth.require
    def get(bcgovcode):
        try:
            data = divisionstageservice().getdivisionandstages(bcgovcode)
            jsondata = json.dumps(data)
            return jsondata, 200
        except BusinessException:
            return "Error happened while accessing divisions", 500
Exemple #16
0
class FOIRequestsByIdAndType(Resource):
    """Creates a new version of foi request for ministry updates"""
    @staticmethod
    @TRACER.trace()
    @cross_origin(origins=allowedorigins())
    @auth.require
    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
Exemple #17
0
class FOIFlowProgramAreas(Resource):
    """Retrieves all active program areas.
    """
    @staticmethod
    @TRACER.trace()
    @cross_origin(origins=allowedorigins())
    @auth.require
    #@request_api.cache.cached(key_prefix="programareas")
    def get():
        try:
            data = programareaservice().getprogramareas()
            jsondata = json.dumps(data)
            return jsondata, 200
        except BusinessException:
            return "Error happened while accessing applicant categories", 500
Exemple #18
0
class FOIFlowDeliveryModes(Resource):
    """Retrieves all active delivery modes.
    """
    @staticmethod
    @TRACER.trace()
    @cross_origin(origins=allowedorigins())
    @auth.require
    #@request_api.cache.cached(key_prefix="deliverymodes")
    def get():
        try:
            data = deliverymodeservice().getdeliverymodes()
            jsondata = json.dumps(data)
            return jsondata, 200
        except BusinessException:
            return "Error happened while accessing delivery modes", 500
Exemple #19
0
class DeleteFOIDocument(Resource):
    """Resource for managing FOI requests."""

       
    @staticmethod
    @TRACER.trace()
    @cross_origin(origins=allowedorigins())
    @auth.require
    def post(requestid, documentid, requesttype):      
        try:
            result = documentservice().deleterequestdocument(requestid, documentid, AuthHelper.getuserid(), requesttype)
            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 
Exemple #20
0
class FOIAssigneesByTypeAndStatus(Resource):
    """esource for retriving FOI assignees based on group."""

    @staticmethod
    @TRACER.trace()
    @cross_origin(origins=allowedorigins())
    @auth.require
    def get(groupname):
        """ POST Method for capturing FOI requests before processing"""
        try:
            result = assigneeservice().getmembersbygroupname(groupname)
            if result is not None:
                return json.dumps(result), 200
            else:
                return {'status': False, 'message':EXCEPTION_MESSAGE_NOT_FOUND}, 404 
        except BusinessException as exception:            
            return {'status': exception.status_code, 'message':exception.message}, 500    
Exemple #21
0
class GetFOIDocument(Resource):
    """Resource for managing FOI requests."""

       
    @staticmethod
    @TRACER.trace()
    @cross_origin(origins=allowedorigins())
    @auth.require
    def get(requestid, requesttype): 
        if requesttype != "ministryrequest" and requesttype != "rawrequest":
            return {'status': False, 'message':'Bad Request'}, 400          
        try:
            result = documentservice().getrequestdocumentsbyrole(requestid, requesttype, AuthHelper.isministrymember())
            return json.dumps(result), 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   
Exemple #22
0
class GetFOIExtension(Resource):
    """Resource for managing Extension."""
    @staticmethod
    @TRACER.trace()
    @cross_origin(origins=allowedorigins())
    @auth.require
    def get(extensionid):
        try:
            extensionrecord = extensionservice().getrequestextension(
                extensionid)
            return json.dumps(extensionrecord), 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
Exemple #23
0
class FOIFlowExtensionReasons(Resource):
    """Retrieves all active extension reasons.
    """
    @staticmethod
    @TRACER.trace()
    @cross_origin(origins=allowedorigins())
    @auth.require
    #@request_api.cache.cached(key_prefix="extensionreasons")
    def get():
        try:
            data = extensionreasonservice().getextensionreasons()
            jsondata = json.dumps(data)
            return jsondata, 200
        except BusinessException as exception:
            return {
                'status': exception.status_code,
                'message': exception.message
            }, 500
Exemple #24
0
class FOIAssigneesByTypeAndStatus(Resource):
    """Resource for retriving FOI assignees based on status."""

    @staticmethod
    @TRACER.trace()
    @cross_origin(origins=allowedorigins())
    @auth.require
    def get(requestype=None, status=None, bcgovcode=None):
        if requestype is not None and (requestype != "personal" and requestype != "general"):
            return {'status': False, 'message':EXCEPTION_MESSAGE_BAD_REQUEST}, 400   
        try:
            result = assigneeservice().getgroupsandmembersbytypeandstatus(requestype, status, bcgovcode)
            if result is not None:
                return json.dumps(result), 200
            else:
                return {'status': False, 'message':EXCEPTION_MESSAGE_NOT_FOUND}, 404   
        except BusinessException as exception:            
            return {'status': exception.status_code, 'message':exception.message}, 500    
Exemple #25
0
class FOIRequestWatcher(Resource):
    """Retrieve watchers for opened request"""
    @staticmethod
    @TRACER.trace()
    @cross_origin(origins=allowedorigins())
    @auth.require
    def get(ministryrequestid):
        try:
            result = watcherservice().getministryrequestwatchers(
                ministryrequestid, AuthHelper.isministrymember())
            return json.dumps(result), 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
Exemple #26
0
class RenameFOIDocument(Resource):
    """Resource for managing FOI requests."""

       
    @staticmethod
    @TRACER.trace()
    @cross_origin(origins=allowedorigins())
    @auth.require
    def post(requestid, documentid, requesttype):      
        try:
            requestjson = request.get_json() 
            documentschema = RenameDocumentSchema().load(requestjson)
            result = documentservice().createrequestdocumentversion(requestid, documentid, documentschema, AuthHelper.getuserid(), requesttype)
            return {'status': result.success, 'message':result.message,'id':result.identifier} , 200 
        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 
Exemple #27
0
class FOIRawRequestFields(Resource):
    """Consolidates create and retrival of raw request"""
    @staticmethod
    @TRACER.trace()
    @cross_origin(origins=allowedorigins())
    @auth.require
    def get(requestid):
        try:
            # here we want to get the value of names (i.e. ?names=ministries)
            if request.args['names'] == "ministries":
                baserequestinfo = rawrequestservice().getrawrequestfields(
                    requestid, ["ministries"])
                return json.dumps(baserequestinfo), 200
        except ValueError:
            return {'status': 500, 'message': "Invalid Request"}, 400
        except BusinessException as exception:
            return {
                'status': exception.status_code,
                'message': exception.message
            }, 500
Exemple #28
0
class FOINotification(Resource):
    """Resource for managing FOI requests."""
    @staticmethod
    @TRACER.trace()
    @cross_origin(origins=allowedorigins())
    @auth.require
    def get():
        try:
            result = notificationservice().getnotifications(
                AuthHelper.getuserid())
            return json.dumps(result), 200
        except ValueError:
            return {'status': 500, 'message': "Invalid Request Id"}, 500
        except KeyError as err:
            return {'status': False, 'message': err.messages}, 400
        except BusinessException as exception:
            return {
                'status': exception.status_code,
                'message': exception.message
            }, 500
Exemple #29
0
class FOIRawRequests(Resource):
    """Resource for retriving all raw requests."""
    @staticmethod
    @TRACER.trace()
    @cross_origin(origins=allowedorigins())
    @expects_json(schema)
    def post():
        """ POST Method for capturing RAW FOI requests before processing"""
        try:
            request_json = request.get_json()
            requestdatajson = request_json['requestData']
            #get attachments
            attachments = requestdatajson[
                'Attachments'] if 'Attachments' in requestdatajson else None
            notes = 'Request submission from FOI WebForm'
            #save request
            if attachments is not None:
                requestdatajson.pop('Attachments')
            result = rawrequestservice().saverawrequest(
                requestdatajson=requestdatajson,
                sourceofsubmission="onlineform",
                userid=None,
                notes=notes)
            if result.success:
                documentservice().uploadpersonaldocuments(
                    result.identifier, attachments)
            return {
                'status': result.success,
                'message': result.message,
                'id': result.identifier
            }, 200
        except TypeError:
            return {
                'status': "TypeError",
                'message': "Error while parsing JSON in request"
            }, 500
        except BusinessException as exception:
            return {
                'status': exception.status_code,
                'message': exception.message
            }, 500
Exemple #30
0
class DisableFOIRawRequestWatcher(Resource):
    """Disable watcher for unopened request"""
    @staticmethod
    @TRACER.trace()
    @cross_origin(origins=allowedorigins())
    @auth.require
    def put(requestid):
        try:
            result = watcherservice().disablerawrequestwatchers(
                requestid, 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