def get_access_token(request): """ Generates an access token for valid app users @param request: @type request: DJANGO WSGIRequest @return: An access token and its expiry time or a response code indicating invalid credentials supplied @rtype: dict """ try: data = get_request_data(request) app_user = AppUserService().get(user__username = data.get('username')) if app_user is not None: user = check_password(data.get('password'), app_user.user.password) if user: oauth = OauthService().filter( app_user = app_user, expires_at__gt = timezone.now(), state__name = 'Active').first() if oauth: oauth = OauthService().update(pk = oauth.id, expires_at = token_expiry()) else: oauth = OauthService().create( app_user = app_user, token = generate_access_token(), state = StateService().get(name = 'Active') ) if not oauth: return JsonResponse({'code': '800.400.001'}) return JsonResponse({ 'code': '800.200.001', 'data': { 'token': str(oauth.token), 'expires_at': calendar.timegm(oauth.expires_at.timetuple()) } }) return JsonResponse({'code': '800.403.001'}) except Exception as ex: lgr.exception("Get Access token Exception %s " % ex) return JsonResponse({'code': '800.400.001'})
def get_logged_in_user_details(request): """ @param request:The Django WSGI Request to process @return: dict """ try: data = get_request_data(request) user = UserAdministrator.get_logged_in_user_details(token = data.get('token')) return JsonResponse(user) except Exception as ex: lgr.exception('logged in user Details Exception: %s' % ex) return JsonResponse({'code': '800.500.001'})
def get_logged_in_user_recent_notifications(request): """ @param request: The Django WSGI Request to process @return: dict """ try: data = get_request_data(request) notifications = NotificationLogger.get_logged_in_user_recent_notifications(token = data.get('token')) return JsonResponse(notifications) except Exception as ex: lgr.exception('get logged in user recent notification Exception: %s' % ex) return JsonResponse({'code': '800.500.001'})
def get_system_response_time_data(request): """ @param request: The Django WSGI Request to process @return: dict """ try: data = get_request_data(request) data = MonitorInterface.get_system_endpoint_response_time( system_id = data.get('system_id'), start_date = data.get('start_date'), end_date = data.get('end_date')) return JsonResponse(data) except Exception as ex: lgr.exception('edit logged in user password update Exception: %s' % ex) return JsonResponse({'code': '800.500.001'})
def delete_endpoint(request): """ Delete a specific Recipient @param request:The Django WSGI Request to process @return:dict """ try: data = get_request_data(request) endpoint = EndpointAdministrator.delete_endpoint(endpoint_id = data.get('endpointId')) return JsonResponse(endpoint) except Exception as ex: lgr.exception('recipient get Exception: %s' % ex) return JsonResponse({'code': '800.500.001'})
def edit_logged_in_user_password(request): """ @param request: The Django WSGI Request to process @return: dict """ try: data = get_request_data(request) password = UserAdministrator.edit_logged_in_user_password( token = data.get('token'), current_password = data.get('currentPassword'), new_password = data.get( 'password')) return JsonResponse(password) except Exception as ex: lgr.exception('edit logged in user password update Exception: %s' % ex) return JsonResponse({'code': '800.500.001 %s'})
def get_notifications(request): """ Delete a specific Recipient @param request:The Django WSGI Request to process @return:dict """ try: data = get_request_data(request) notifications = NotificationLogger.get_system_notification(system_id = data.get('system_id')) return JsonResponse(notifications) except Exception as ex: lgr.exception('notifications get Exception: %s' % ex) return JsonResponse({'code': '800.500.001'})
def past_incidents(request): """ Retrieves past incidents within a system grouped by into dates @param request: The Django WSGI Request to process @type request: WSGIRequest @return: dict """ try: data = get_request_data(request) incidents = DashboardAdministration.past_incidents( system = data.get('system_id'), date_from = data.get('date_from'), date_to = data.get('date_to')) return JsonResponse(incidents) except Exception as ex: lgr.exception('Retrieve past incidents exception %s ' % ex) return JsonResponse({'code': '800.500.001'})
def incident_events(request): """ Retrieves incident events for a specified incident @param request: The Django WSGI Request to process @type request: WSGIRequest @return: A response code to indicate status and the incident events table data @rtype: dict """ try: data = get_request_data(request) data_source = TableData.incidents(system = data.get('system_id'), incident = data.get('incident_id')) return JsonResponse(data_source) except Exception as ex: lgr.exception('Get incident events table data exception %s' % ex) return JsonResponse({'code': '800.500.001'})
def get_system_status(request): """ Retrieves current status of registered endpoints and any current incidents, if any @param request: The Django WSGI Request to process @type request: WSGIRequest @return: A response code and a dictionary with the current status of a system and any current incidents @rtype: dict """ try: data = get_request_data(request) system_status = DashboardAdministration.get_current_status(system = data.get('system_id')) return JsonResponse(system_status) except Exception as ex: lgr.exception('Get System status exception %s' % ex) return {'code': '800.500.001'}
def edit_logged_in_user_details(request): """ @param request: The Django WSGI Request to process @return: dict """ try: data = get_request_data(request) user = UserAdministrator.edit_logged_in_user_details( token = data.get('token'), first_name = data.get('firstName'), last_name = data.get('lastName'), email = data.get('email'), password = data.get('password'), phone_number = data.get('phoneNumber'), username = data.get('userName')) return JsonResponse(user) except Exception as ex: lgr.exception('edit logged in user Exception: %s' % ex) return JsonResponse({'code': '800.500.001'})
def get_rules(request): """ Retrieves all rules for a system @param request: The Django WSGI Request to process @type request: WSGIRequest @return: A response code to indicate successful rule creation or otherwise @rtype: dict """ try: data = get_request_data(request) rules = EscalationRuleAdministrator.get_rules(system_id = data.get('system_id')) return JsonResponse(rules) except Exception as ex: lgr.exception('Rule creation Exception: %s' % ex) return JsonResponse({'code': '800.500.001'})
def get_endpoints(request): """ Retrieves endpoints for a public status page display @param request: The Django WSGI Request to process @type request: WSGIRequest @return: A response code and or configured services @rtype: dict """ try: data = get_request_data(request) endpoints = EndpointAdministrator.get_endpoints(system = data.get('system')) return JsonResponse(endpoints) except Exception as ex: lgr.exception('Get system services exception: %s ' % ex) return JsonResponse({'code': '800.500.001'})
def delete_user(request): """ Deletes a user @param request: The Django WSGI Request to process @type request: WSGIRequest @return: A response code to indicate successful user deletion or otherwise @rtype: dict """ try: data = get_request_data(request) user = UserAdministrator.delete_user(user_id = data.get('user_id')) return JsonResponse(user) except Exception as ex: lgr.exception('Delete User Exception: %s' % ex) return JsonResponse({'code': '800.500.001'})
def get_endpoint(request): """ Get a specific endpoint @param request: The Django WSGI Request to process @type request: WSGIRequest @return: The requested endpoint or a status code indicating errors if any. @rtype: dict """ try: data = get_request_data(request) endpoint = EndpointAdministrator.get_endpoint(endpoint_id = data.get('endpointId')) return JsonResponse(endpoint) except Exception as ex: lgr.exception('Endpoint get Exception: %s' % ex) return JsonResponse({'code': '800.500.001'})
def delete_system(request): """ Deletes a system @param request: The Django WSGI Request to process @type request: WSGIRequest @return:The system or a status code indicating errors if any. @rtype: dict """ try: data = get_request_data(request) deleted_system = SystemAdministrator.delete_system(system = data.get('id')) return JsonResponse(deleted_system) except Exception as ex: lgr.exception('Incident get Exception: %s' % ex) return JsonResponse({'code': '800.500.001'})
def get_system_status(request): """ Retrieves current system status @param request: The Django WSGI request to process @type request: WSGIRequest @return: A response code and the current system status information @rtype: dict """ try: data = get_request_data(request) system_status = DashboardAdministration.get_current_status(system = data.get('system_id')) return JsonResponse(system_status) except Exception as ex: lgr.exception('Get system status exception: %s' % ex) return JsonResponse({'code': '800.500.001'})
def get_users(request): """ Retrieves all users @param request: The Django WSGI Request to process @type request: WSGIRequest @return: A response code to indicate successful users retrieval or otherwise @rtype: dict """ try: data = get_request_data(request) users = UserAdministrator.get_users() return JsonResponse(users) except Exception as ex: lgr.exception('Get User Exception: %s' % ex) return JsonResponse({'code': '800.500.001'})
def get_system_recipient(request): """ Get a specific system recipient @param request: The Django WSGI Request to process @type request: WSGIRequest @return: The requested recipient or a status code indicating errors if any. @rtype: dict """ try: data = get_request_data(request) recipient = RecipientAdministrator.get_system_recipient( user_id = data.get('recipient_id'), system_id = data.get('system_id')) return JsonResponse(recipient) except Exception as ex: lgr.exception('Look up data get Exception: %s' % ex) return JsonResponse({'code': '800.500.001'})
def edit_user(request): """ @param request: The Django WSGI Request to process @type request: WSGIRequest @return: dict """ try: data = get_request_data(request) user = UserAdministrator.update_user( user_id = data.get('user_id'), username = data.get('username'), password = data.get('password'), email = data.get('email'), first_name = data.get('first_name'), last_name = data.get('last_name'), phone_number = data.get('phone_number')) return JsonResponse(user) except Exception as ex: lgr.exception('Edit User Exception %s ' % ex) return JsonResponse({'code': '800.500.001'})
def get_availability_trend(request): """ Retrieves availability trend for a system within a give period @param request: The Django WSGI Request to process @type request: WSGIRequest @return: A response code to indicate status and system uptime trend data @rtype: dict """ try: data = get_request_data(request) availability_trend = DashboardAdministration.availability_trend( system = data.get('system'), interval = data.get('interval')) return JsonResponse(availability_trend) except Exception as ex: lgr.exception('Get system availability percentage trend exception: %s' % ex) return JsonResponse({'code': '800.500.001'})
def wrapped_view(*args, **kwargs): """This method wraps the decorated method.""" is_checked = False for k in args: if isinstance(k, WSGIRequest): request_data = get_request_data(k) token = request_data.get("token", None) if token: is_checked = True oauth = OauthService().filter( token=token, expires_at__gt=timezone.now(), state__name="Active").first() if not oauth: response = HttpResponse( json.dumps({ 'status': 'failed', 'message': 'Unauthorized. Invalid credentials.', 'code': '800.403.001' }), content_type='application/json', status=401) response['WWW-Authenticate'] = 'Bearer realm=api' return response OauthService().update(oauth.id, expires_at=token_expiry()) setattr(k, 'app_user', oauth.app_user) else: return JsonResponse( { 'status': 'failed', 'message': 'Unauthorized. Authorization parameters not Found!', 'code': '800.403.001' }, status=401) if not is_checked: response = HttpResponse(json.dumps({ 'status': 'failed', 'message': 'Unauthorized. Credentials not Provided.', 'code': '800.403.001' }), content_type='application/json', status=401) response['WWW-Authenticate'] = 'Bearer realm=api' return response return view_func(*args, **kwargs)
def get_incident_events(request): """ Retrieves the events that have caused the incident in a selected system. @param request: The Django WSGI Request to process @type request: WSGIRequest @return: The requested incident_events or a status code indicating errors if any. @rtype: dict """ try: data = get_request_data(request) incident_events = IncidentAdministrator.get_incident_events( system_id = data.get('system_id'), incident_id = data.get('incident_id') ) return JsonResponse(incident_events) except Exception as ex: lgr.exception('Incident events get Exception: %s' % ex) return JsonResponse({'code': '800.500.001'})
def delete_incident(request): """ Deletes an incident @param request: The Django WSGI Request to process @type request: WSGIRequest @return: A message and a status code indicating errors if any. @rtype: dict """ try: data = get_request_data(request) incident = IncidentAdministrator.delete_incident( incident_id = data.get('incident_id'), system_id = data.get('system_id') ) return JsonResponse(incident) except Exception as ex: lgr.exception('Incident delete Exception: %s' % ex) return JsonResponse({'code': '800.500.001'})
def verify_token(request): """ Verifies an access token granted to a user @param request: The Django WSGI Request to process @type request: WSGIRequest @return: A response code and the token with its expiry time @rtype: dict @param request: @return: """ try: data = get_request_data(request) token = UserAdministrator.verify_token(data.get('token')) return JsonResponse(token) except Exception as ex: lgr.exception('Verify access token exception %s' % ex) return {'code': '800.500.001'}
def create_system(request): """ Creates a system @param request: The Django WSGI Request to process @type request: WSGIRequest @return: A response code to indicate successful rule creation or otherwise @rtype: dict """ try: data = get_request_data(request) rules = SystemAdministrator.create_system( name = data.get('name'), description = data.get('description'), admin_id = data.get('admin'), version = data.get('version')) return JsonResponse(rules) except Exception as ex: lgr.exception('System creation Exception: %s' % ex) return JsonResponse({'code': '800.500.001'})
def get_widgets_data(request): """ Retrieves Dashboard widgets data @param request: The Django WSGI Request to process @type request: WSGIRequest @return: A response code and or dashboard widgets data @rtype: dict """ try: data = get_request_data(request) widget_data = DashboardAdministration.dashboard_widgets_data( system = data.get('system_id'), date_from = data.get('date_from'), date_to = data.get('date_to') ) return JsonResponse(widget_data) except Exception as ex: lgr.exception('Get Dashboard widgets data exception %s' % ex) return JsonResponse({'code': '800.500.001'})
def update_system_recipient(request): """ Updates an existing incident's priority, resolution status or user assignment @param request: The Django WSGI Request to process @type request: WSGIRequest @return: A response code to indicate successful recipient update or otherwise @rtype: dict """ try: data = get_request_data(request) updated_recipient = RecipientAdministrator.update_system_recipient( recipient_id = data.get('recipient_id'), escalations = data.get('escalations') ) return JsonResponse(updated_recipient) except Exception as ex: lgr.exception('Recipient update Exception: %s' % ex) return JsonResponse({'code': '800.500.001'})
def create_recipient(request): """ Creates endpoints from users @param request: The Django WSGI Request to process @type request: WSGIRequest @return: A response code to indicate successful recipient creation or otherwise @rtype: dict """ try: data = get_request_data(request) recipient = RecipientAdministrator.create_recipient( state_id = data.get('stateId'), phone_number = data.get('phoneNumber'), user_id = data.get('userId') ) return JsonResponse(recipient) except Exception as ex: lgr.exception('Recipient creation Exception: %s' % ex) return JsonResponse({'code': '800.500.001'})
def create_user(request): """ Creates a user @param request: The Django WSGI Request to process @type request: WSGIRequest @return: A response code to indicate successful rule creation or otherwise @rtype: dict """ try: data = get_request_data(request) user = UserAdministrator.create_user( username = data.get('userName'), password = data.get('password'), email = data.get('email'), first_name = data.get('firstName'), last_name = data.get('lastName'), phone_number = data.get('phoneNumber')) return JsonResponse(user) except Exception as ex: lgr.exception('User creation Exception: %s' % ex) return JsonResponse({'code': '800.500.001'})