def get_all_report_attachments(report=None): """ Get attached documents for a report """ if 'filters' in request.args: code, resp, nb_attached = ReportsController.get_all_attachments(report=report, filters=request.args['filters']) else: code, resp, nb_attached = ReportsController.get_all_attachments(report=report) return code, resp
def get_all_items_screenshot(report=None): """ Get all available screenshots for given report """ if 'filters' in request.args: code, resp = ReportsController.get_items_screenshot(report=report, filters=request.args['filters']) else: code, resp = ReportsController.get_items_screenshot(report=report) return code, resp
def update_report(report=None): """ Update a given report """ if request.method == 'PUT': body = request.get_json() code, resp = ReportsController.update(report, body, g.user) else: code, resp = ReportsController.destroy(report) return code, resp
def bulk_add_reports(): """ Bulk add on reports """ body = request.get_json() if request.method == 'PUT': code, resp = ReportsController.bulk_add(body, g.user, request.method) else: code, resp = ReportsController.bulk_delete(body, g.user, request.method) return code, resp
def get_all_reports(): """ Get abuse reports Filtering is possible through "filters" query string, JSON double encoded format """ if 'filters' in request.args: code, resp, nb_reps = ReportsController.index(filters=request.args['filters'], user=g.user) else: code, resp, nb_reps = ReportsController.index(user=g.user) return code, resp
def search(**kwargs): """ Global Search """ filters = {} user = kwargs['user'] if 'filters' in kwargs: try: filters = json.loads(unquote(unquote(kwargs['filters']))) except (ValueError, SyntaxError): return 400, {'status': 'Bad Request', 'code': 400, 'message': 'Unable to decode JSON'} custom_filters = { 'ticket': { 'fields': SEARCH_TICKET_FIELDS, 'filters': deepcopy(filters), }, 'report': { 'fields': SEARCH_REPORT_FIELDS, 'filters': deepcopy(filters), }, } try: for _, values in custom_filters.iteritems(): for key, val in filters.iteritems(): if key == 'queryFields': values['filters'][key] = [q for q in val if q in values['fields']] if key == 'sortBy': values['filters'][key] = {k: v for k, v in filters[key].iteritems() if k in values['fields']} if key == 'where': for key2 in filters[key].keys(): values['filters'][key][key2] = [a for a in filters[key][key2] if a.keys()[0] in values['fields']] except AttributeError: return 400, {'status': 'Bad Request', 'code': 400, 'message': 'Invalid fields in body'} for _, values in custom_filters.iteritems(): if 'where' in values['filters']: new_where = deepcopy(values['filters']['where']) for key, val in values['filters']['where'].iteritems(): for field in values['filters']['where'][key]: if field.keys()[0] in SEARCH_MAPPING: for new_field in SEARCH_MAPPING[field.keys()[0]]: new_where[key].append({new_field: field[field.keys()[0]]}) new_where[key].remove(field) elif 'ticketTag' in field: if Tag.objects.filter(name__in=field['ticketTag'], tagType='Report').count(): new_where[key].append({'reportsTag': field['ticketTag']}) else: new_where[key].append({'ticketsTag': field['ticketTag']}) new_where[key].remove(field) values['filters']['where'] = new_where from api.controllers import ReportsController, TicketsController code1, reps, nb_reps = ReportsController.index(filters=json.dumps(custom_filters['report']['filters']), user=user) code2, ticks, nb_ticks = TicketsController.index(filters=json.dumps(custom_filters['ticket']['filters']), user=user) code = code1 if code1 > code2 else code2 return code, {'tickets': ticks, 'reports': reps, 'ticketsCount': nb_ticks, 'reportsCount': nb_reps}
def get_report_attachment(report=None, attachment=None): """ Get attached documents for a report """ code, resp = ReportsController.get_attachment(report, attachment) if code != 200: return make_response(json.dumps(resp), code, {'content-type': 'application/json'}) bytes_io = BytesIO(resp['raw']) return send_file(bytes_io, attachment_filename=resp['filename'], mimetype=resp['filetype'], as_attachment=True)
def get_report(report=None): """ Get a given report """ code, resp = ReportsController.show(report) return code, resp
def post_feedback(report=None): """ Post feeback """ body = request.get_json() code, resp = ReportsController.parse_screenshot_feedback(report, body, g.user) return code, resp
def delete_report_tag(report=None, tag=None): """ Delete report tag """ code, resp = ReportsController.remove_tag(report, tag) return code, resp
def add_report_tag(report=None): """ Add tag to report """ body = request.get_json() code, resp = ReportsController.add_tag(report, body) return code, resp
def get_dehtmlified_report(report=None): """ Get raw email for a report """ code, resp = ReportsController.get_dehtmlified(report) return code, resp
def get_raw_report(report=None): """ Get raw email for a report """ code, resp = ReportsController.get_raw(report) return code, resp