예제 #1
0
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'})
예제 #2
0
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'})
예제 #3
0
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'})
예제 #4
0
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'})
예제 #5
0
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'})
예제 #6
0
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'})
예제 #7
0
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'})
예제 #8
0
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'})
예제 #9
0
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'})
예제 #10
0
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'}
예제 #11
0
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'})
예제 #12
0
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'})
예제 #13
0
	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'})
예제 #14
0
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'})
예제 #15
0
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'})
예제 #16
0
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'})
예제 #17
0
	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'})
예제 #18
0
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'})
예제 #19
0
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'})
예제 #20
0
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'})
예제 #21
0
	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'})
예제 #22
0
 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)
예제 #23
0
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'})
예제 #24
0
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'})
예제 #25
0
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'}
예제 #26
0
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'})
예제 #27
0
	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'})
예제 #28
0
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'})
예제 #29
0
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'})
예제 #30
0
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'})