summaryrefslogtreecommitdiffstats
path: root/django/engagementmanager/rest/nextsteps.py
diff options
context:
space:
mode:
Diffstat (limited to 'django/engagementmanager/rest/nextsteps.py')
-rwxr-xr-xdjango/engagementmanager/rest/nextsteps.py163
1 files changed, 163 insertions, 0 deletions
diff --git a/django/engagementmanager/rest/nextsteps.py b/django/engagementmanager/rest/nextsteps.py
new file mode 100755
index 0000000..7d4f850
--- /dev/null
+++ b/django/engagementmanager/rest/nextsteps.py
@@ -0,0 +1,163 @@
+#
+# ============LICENSE_START==========================================
+# org.onap.vvp/engagementmgr
+# ===================================================================
+# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+# ===================================================================
+#
+# Unless otherwise specified, all software contained herein is licensed
+# under the Apache License, Version 2.0 (the “License”);
+# you may not use this software except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+#
+#
+# Unless otherwise specified, all documentation contained herein is licensed
+# under the Creative Commons License, Attribution 4.0 Intl. (the “License”);
+# you may not use this documentation except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://creativecommons.org/licenses/by/4.0/
+#
+# Unless required by applicable law or agreed to in writing, documentation
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# ============LICENSE_END============================================
+#
+# ECOMP is a trademark and service mark of AT&T Intellectual Property.
+import json
+
+from rest_framework.response import Response
+from rest_framework.status import HTTP_400_BAD_REQUEST, HTTP_204_NO_CONTENT
+
+from engagementmanager.bus.messages.activity_event_message import ActivityEventMessage
+from engagementmanager.decorator.auth import auth
+from engagementmanager.decorator.class_decorator import classDecorator
+from engagementmanager.decorator.log_func_entry import logFuncEntry
+from engagementmanager.models import NextStep
+from engagementmanager.rest.vvp_api_view import VvpApiView
+from engagementmanager.utils.activities_data import DeleteNextStepsActivityData
+from engagementmanager.service.authorization_service import Permissions
+from engagementmanager.service.nextstep_service import NextStepSvc
+from engagementmanager.utils.constants import NextStepState
+from engagementmanager.utils.request_data_mgr import request_data_mgr
+from engagementmanager.apps import bus_service
+
+
+@classDecorator([logFuncEntry])
+class UserNextSteps(VvpApiView):
+
+ def get(self, request):
+ data_or_msg, count = NextStepSvc().get_user_next_steps(
+ 5, NextStepState.Incomplete.name) # @UndefinedVariable
+ return Response({'data': data_or_msg.data, 'count': count})
+
+
+@classDecorator([logFuncEntry])
+class NextSteps(VvpApiView):
+
+ @auth(Permissions.set_nextstep)
+ def post(self, request, **kwargs):
+ dataList = request.data
+ eng_uuid = request_data_mgr.get_eng_uuid()
+ user = request_data_mgr.get_user()
+
+ for data in dataList:
+ if ('description' not in data or not data['description']):
+ msg = "One of the input parameters is missing"
+ self.logger.error(msg)
+ return Response(msg, status=HTTP_400_BAD_REQUEST)
+
+ data = NextStepSvc().addNextStep(dataList)
+
+ for next_step in data:
+ if (next_step['files'] != None):
+ next_step['files'] = json.loads(next_step['files'])
+
+ self.logger.debug("Successfully added a Next Step to engagement_uuid=" +
+ eng_uuid + " for creator with uuid=" + str(user))
+ return Response(data)
+
+ @auth(Permissions.eng_membership)
+ def get(self, request, **kwargs):
+ next_steps_data = NextStepSvc().get_next_steps(eng_stage=kwargs['eng_stage'])
+ return Response(next_steps_data.data)
+
+ @auth(Permissions.update_personal_next_step)
+ def put(self, request, **kwargs):
+ data = request.data
+ ns_state = attribute = None
+ if ('attr' in kwargs):
+ attribute = kwargs['attr']
+ if ('state' in data):
+ ns_state = data['state']
+ NextStepSvc().set_next_step_status(attr=attribute, state=ns_state)
+ return Response()
+
+
+@classDecorator([logFuncEntry])
+class OrderNextSteps(VvpApiView):
+
+ @auth(Permissions.order_nextstep)
+ def put(self, request, eng_uuid):
+ data = request.data
+ NextStepSvc().update_next_steps_order(nextsteps=data)
+ return Response()
+
+
+@classDecorator([logFuncEntry])
+class EditNextSteps(VvpApiView):
+ @auth(Permissions.edit_nextstep)
+ def put(self, request, ns_uuid):
+ data = request.data
+ NextStepSvc().update_next_step(data)
+ return Response()
+
+ @auth(Permissions.delete_nextstep)
+ def delete(self, request, ns_uuid):
+ ns = self.get_entity(NextStep, request_data_mgr.get_ns_uuid())
+ ns.delete()
+
+ activity_data = DeleteNextStepsActivityData(request_data_mgr.get_user(), ns.engagement)
+ bus_service.send_message(ActivityEventMessage(activity_data))
+
+ return Response(status=HTTP_204_NO_CONTENT)
+
+
+@classDecorator([logFuncEntry])
+class ChecklistNextStep(VvpApiView):
+
+ @auth(Permissions.add_checklist_nextstep)
+ def post(self, request, eng_uuid, checklistUuid):
+ body_unicode = request.body
+ dataList = json.loads(body_unicode)
+ msg = "OK"
+
+ if (request_data_mgr.get_cl_uuid() == None or request_data_mgr.get_eng_uuid() == None):
+ msg = "check list uuid or engagement uuid is missing from the url path parameters"
+ self.logger.error(msg)
+ return Response(msg, status=HTTP_400_BAD_REQUEST)
+
+ for data in dataList:
+ if ('assigneesUuids' not in data or not data['assigneesUuids'] or
+ 'description' not in data or not data['description'] or
+ 'duedate' not in data or not data['duedate']):
+ msg = "One of the CheckList's input parameters is missing"
+ self.logger.error(msg)
+ return Response(msg, status=HTTP_400_BAD_REQUEST)
+
+ data = NextStepSvc().addNextStep(
+ dataList, desc="Checklist is denied due to a creation of a new NextStep")
+
+ return Response(data)