Exemplo n.º 1
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
Exemplo n.º 2
0
 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
Exemplo n.º 3
0
 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
Exemplo n.º 4
0
 def put(requesttype, commentid):
     if requesttype != "ministryrequest" and requesttype != "rawrequest":
         return {
             'status': False,
             'message': EXCEPTION_MESSAGE_BAD_REQUEST
         }, 400
     try:
         requestjson = request.get_json()
         if requesttype == "ministryrequest":
             commentschema = FOIMinistryRequestCommentSchema().load(
                 requestjson)
             result = commentservice().updateministryrequestcomment(
                 commentid, commentschema, AuthHelper.getuserid())
         else:
             commentschema = EditFOIRawRequestCommentSchema().load(
                 requestjson)
             result = commentservice().updaterawrequestcomment(
                 commentid, commentschema, 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
Exemplo n.º 5
0
    def get(queuetype="all"):
        try:
            DEFAULT_PAGE = 1
            DEFAULT_SIZE = 10
            DEFAULT_SORT_ITEMS = ['currentState']
            DEFAULT_SORT_ORDERS = ['desc']
            DEFAULT_FILTER_FIELDS = [
                'idNumber', 'currentState', 'firstName', 'lastName',
                'assignedToFirstName', 'assignedToLastName',
                'assignedministrypersonFirstName',
                'assignedministrypersonLastName', 'requestType'
            ]
            DEFAULT_ADDITIONAL_FILTER = 'All'
            _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[]')
            _filterfields = flask.request.args.getlist('filters[]')
            _additionalfilter = flask.request.args.get(
                'additionalfilter', DEFAULT_ADDITIONAL_FILTER, type=str)
            _userid = flask.request.args.get('userid', None, type=str)
            if (len(_sortingitems) == 0):
                _sortingitems = DEFAULT_SORT_ITEMS
            if (len(_sortingorders) == 0):
                _sortingorders = DEFAULT_SORT_ORDERS
            if (len(_filterfields) == 0):
                _filterfields = DEFAULT_FILTER_FIELDS
            _keyword = flask.request.args.get('keyword', None, type=str)

            groups = AuthHelper.getusergroups()
            statuscode = 200
            if (AuthHelper.getusertype() == "iao") and (queuetype is None
                                                        or queuetype == "all"):
                requests = dashboardservice().getrequestqueuepagination(
                    groups, _page, _size, _sortingitems, _sortingorders,
                    _filterfields, _keyword, _additionalfilter, _userid)
            elif queuetype is not None and queuetype == "ministry" and AuthHelper.getusertype(
            ) == "ministry":
                requests = dashboardservice(
                ).getministryrequestqueuepagination(
                    AuthHelper.getministrygroups(), _page, _size,
                    _sortingitems, _sortingorders, _filterfields, _keyword,
                    _additionalfilter, _userid)
            else:
                statuscode = 401

            return requests, statuscode
        except BusinessException as exception:
            return {
                'status': exception.status_code,
                'message': exception.message
            }, 500
Exemplo n.º 6
0
    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
Exemplo n.º 7
0
 def post():
     try:
         requestjson = request.get_json()
         rawrquestwatcherschema = FOIRawRequestWatcherSchema().load(
             requestjson)
         result = watcherservice().createrawrequestwatcher(
             rawrquestwatcherschema, AuthHelper.getuserid(),
             AuthHelper.getusergroups())
         return {'status': result.success, 'message': result.message}, 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
Exemplo n.º 8
0
    def put(_requestid=None):
        request_json = request.get_json()
        try:

            _wfinstanceid = request_json['wfinstanceid']
            notes = request_json['notes'] if request_json.get(
                'notes') is not None else 'Workflow Update'
            requestid = int(_requestid)
            result = rawrequestservice().updateworkflowinstancewithstatus(
                _wfinstanceid, requestid, notes, AuthHelper.getuserid())
            if result.identifier != -1:
                return {
                    'status': result.success,
                    'message': result.message
                }, 200
            else:
                return {
                    'status': result.success,
                    'message': result.message
                }, 404
        except KeyError:
            return {
                'status':
                "Invalid PUT request",
                'message':
                "Key Error on JSON input, please confirm requestid and wfinstanceid"
            }, 500
        except ValueError as valuexception:
            return {
                'status': "BAD Request",
                'message': str(valuexception)
            }, 500
Exemplo n.º 9
0
 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
Exemplo n.º 10
0
 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 
Exemplo n.º 11
0
def __getauthenticateduserid(message):
    if message.get("x-jwt-token") is not None:
        try:
            return AuthHelper.getwsuserid(message.get("x-jwt-token"))
        except BusinessException as exception:
            current_app.logger.error(
                "%s,%s" % ('Unable to get user details', exception.message))
    return None
Exemplo n.º 12
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
Exemplo n.º 13
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
Exemplo n.º 14
0
 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
Exemplo n.º 15
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
Exemplo n.º 16
0
 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
Exemplo n.º 17
0
 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
Exemplo n.º 18
0
 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
Exemplo n.º 19
0
 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
Exemplo n.º 20
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
Exemplo n.º 21
0
 def __getauditfromrawrequest(self, type, id, groups):
     _rawdescriptions = []
     if type == "ministryrequest":
         requestrecord  = FOIRequest().getrequest(id)
         rawrequestid= requestrecord['foirawrequestid']
     else:
         rawrequestid= id
     rawrecords = FOIRawRequest().getDescriptionSummaryById(rawrequestid) 
     
     
     for entry in rawrecords:
         fromdate =dateutil.parser.parse(entry['fromdate']).strftime('%Y-%m-%d') if entry['fromdate'] is not None else None 
         todate = dateutil.parser.parse(entry['todate']).strftime('%Y-%m-%d') if entry['todate'] is not None else None
         if AuthHelper.getusertype() == "iao":
             _rawdescriptions.append({"description": entry['description'], "fromdate": fromdate, "todate": todate, "createdat": entry['createdat'] , "createdby": entry['createdby'], "status": entry['status']})        
         else:
             if entry['ispiiredacted'] == True:
                 _rawdescriptions.append({"description": entry['description'], "fromdate": fromdate, "todate": todate, "createdat": entry['createdat'] , "createdby": entry['createdby'], "status": entry['status']})            
     return _rawdescriptions
Exemplo n.º 22
0
    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
Exemplo n.º 23
0
 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
Exemplo n.º 24
0
 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   
Exemplo n.º 25
0
 def post(requestid, requesttype):      
     try:
         if requesttype != "ministryrequest" and requesttype != "rawrequest":
             return {'status': False, 'message':'Bad Request'}, 400
         requestjson = request.get_json() 
         documentschema = CreateDocumentSchema().load(requestjson)
         result = documentservice().createrequestdocument(requestid, documentschema, AuthHelper.getuserid(), requesttype)
         return {'status': result.success, 'message':result.message} , 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 
Exemplo n.º 26
0
 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