def update_note(alert_id, note_id): if not request.json: raise ApiError('nothing to change', 400) customers = g.get('customers', None) alert = Alert.find_by_id(alert_id, customers) if not alert: raise ApiError('not found', 404) note = Note.find_by_id(note_id) if not note: raise ApiError('not found', 404) update = request.json update['user'] = g.login write_audit_trail.send(current_app._get_current_object(), event='alert-note-updated', message='', user=g.login, customers=g.customers, scopes=g.scopes, resource_id=note.id, type='note', request=request) _, update['text'] = process_note(alert, update.get('text')) updated = note.update(**update) if updated: return jsonify(status='ok', note=updated.serialize) else: raise ApiError('failed to update note', 500)
def add_note(alert_id): note_text = request.json.get('text') or request.json.get('note') if not note_text: raise ApiError("must supply 'note' text", 400) customers = g.get('customers', None) alert = Alert.find_by_id(alert_id, customers) if not alert: raise ApiError('not found', 404) try: alert, note_text = process_note(alert, note_text) note = alert.add_note(note_text) except RejectException as e: write_audit_trail.send(current_app._get_current_object(), event='alert-note-rejected', message='', user=g.login, customers=g.customers, scopes=g.scopes, resource_id=note.id, type='note', request=request) raise ApiError(str(e), 400) except ForwardingLoop as e: return jsonify(status='ok', message=str(e)), 202 except AlertaException as e: raise ApiError(e.message, code=e.code, errors=e.errors) except Exception as e: raise ApiError(str(e), 500) write_audit_trail.send(current_app._get_current_object(), event='alert-note-added', message='', user=g.login, customers=g.customers, scopes=g.scopes, resource_id=note.id, type='note', request=request) if note: return jsonify(status='ok', id=note.id, note=note.serialize), 201, {'Location': absolute_url('/alert/{}/note/{}'.format(alert.id, note.id))} else: raise ApiError('failed to add note for alert', 500)