def put(self, request): try: assert 'id' in request.data editable_solution = Solution.objects.get(sol_id=request.data['id']) if editable_solution.poster == request.user: created_solution = SolutionSerializerFields( editable_solution, data=request.data['solution']) if created_solution.is_valid(): created_solution.save() return api_response(success=True, status=error_codes._OK, data=created_solution.data) else: return api_response(success=False, status=error_codes._BAD_PARAM, error=created_solution.errors) else: return api_response(success=False, status=error_codes._UNAUTHORISED, error=error_codes._UNAUTHORISED_ERROR) except AssertionError as e: print(e) return api_response(success=False, status=error_codes._BAD_PARAM, error=error_codes._ASSERTION_ERROR) except Exception as e: return api_response(success=False, status=error_codes._SERVER_ERROR, error=error_codes._EXCEPTION_ERROR)
def post(self, request): try: request.data['solution']['poster'] = request.user.user_id created_solution = SolutionSerializerFields( data=request.data['solution']) if created_solution.is_valid(): created_solution.save() try: parent_issue = Issue.objects.get( iss_id=request.data['solution']['parent_issue']) if parent_issue.status == 'pending' or parent_issue.status == 'unassigned': parent_issue.status = 'submitted' parent_issue.save() else: pass return api_response(success=True, status=error_codes._OK, data=created_solution.data) except Exception as e: return api_response(success=False, status=error_codes._SERVER_ERROR, error=error_codes._EXCEPTION_ERROR) else: return api_response(success=False, status=error_codes._BAD_PARAM, error=created_solution.errors) except AssertionError: return api_response(success=False, status=error_codes._BAD_PARAM, error=error_codes._ASSERTION_ERROR) except Exception as e: print(e) return api_response(success=False, status=error_codes._SERVER_ERROR, error=error_codes._EXCEPTION_ERROR)
def get(self, request): try: assert 'page_no' and 'id' in request.GET p_no = int(request.GET.get("page_no")) issue = Issue.objects.get(iss_id=request.GET.get('id')) assert issue data_set = Solution.objects.filter( parent_issue=issue, deleted=False).order_by('-updated_time')[p_no * 10:(p_no * 10) + 10] if data_set.exists(): serialized_data_set = SolutionSerializer(data_set, many=True) return api_response(True, status=error_codes._OK, data=serialized_data_set.data) else: return api_response(success=True, status=error_codes._OK, data=[]) except AssertionError as e: return api_response(success=False, status=error_codes._BAD_PARAM, error=error_codes._ASSERTION_ERROR) except Issue.DoesNotExist: return api_response(success=False, status=error_codes._BAD_PARAM, error=error_codes._NOT_FOUND_ERROR) except Exception as e: print(e) return api_response(success=False, status=error_codes._SERVER_ERROR, error=error_codes._EXCEPTION_ERROR)
def Login(request): try: assert 'username', 'password' in request.data u_name = request.data['username'] p_word = request.data['password'] user = authenticate(username=u_name, password=p_word) if user is not None: login(request, user) token = Token.objects.get_or_create(user=user) if type(token) == type((1, 2)): token_key = token[0].key else: token_key = token.key serialized_data = UserSerializerFields(user) return api_response(success=True, status=error_codes._OK, data=serialized_data.data) else: return api_response(success=False, status=error_codes._UNAUTHORISED, data="Login Failed.") except AssertionError as e: return api_response(success=False, status=error_codes._BAD_PARAM, error=error_codes._ASSERTION_ERROR) except Exception as e: return api_response(success=False, status=error_codes._SERVER_ERROR, error=error_codes._EXCEPTION_ERROR)
def get(self, request): try: data_set = Department.objects.all() if data_set.exists(): serialized_data_set = DepartmentSerializer(data_set, many=True) return api_response(success=True, status=error_codes._OK, data=serialized_data_set.data) else: return api_response(success=False, status=error_codes._NOT_FOUND, data="Departments not found.") except Exception as e: return api_response(success=False, status=error_codes._SERVER_ERROR, error=error_codes._EXCEPTION_ERROR)
def SignOff(request): try: assert 'solution_id' and 'issue_id' in request.data assert request.FILES issue = Issue.objects.get(iss_id=request.data['issue_id']) solution = Solution.objects.get(sol_id=request.data['solution_id']) if issue.status == 'submitted' or issue.status == 'pending' or issue.status == 'unassigned': if request.FILES: for i, img in enumerate(request.FILES): temp = Image.objects.create(parent_issue=issue, parent_solution=solution, image=request.FILES[img], signature_of=issue) temp.save() if i > 1: break if request.user == issue.ship.owner: try: assert not issue.resolved_by sol = Solution.objects.get( sol_id=request.data['solution_id']) issue.resolved_by = sol.poster issue.status = 'resolved' issue.save() serialized_data = IssueSerializerFields(issue) return api_response(success=True, status=error_codes._OK, data=serialized_data.data) except AssertionError: return api_response( success=False, status=error_codes._BAD_PARAM, error="This issue has already been signed off.") else: return api_response(success=False, status=error_codes._UNAUTHORISED, error=error_codes._UNAUTHORISED_ERROR) else: return api_response(success=False, status=error_codes._NOT_FOUND, error="There is no solution to be signed off.") except AssertionError: return api_response(success=False, status=error_codes._BAD_PARAM, error=error_codes._ASSERTION_ERROR) except (Issue.DoesNotExist, Solution.DoesNotExist) as e: return api_response(success=False, status=error_codes._NOT_FOUND, error=error_codes._NOT_FOUND_ERROR) except Exception as e: print(e) return api_response(success=False, status=error_codes._SERVER_ERROR, error=error_codes._EXCEPTION_ERROR)
def get(self, request): try: assert 'page_no' in request.GET p_no = int(request.GET.get("page_no")) filters = Q(deleted=False) filterKeys = list(request.GET.keys()) assert filterKeys avail_filters = [ 'ship', 'status', 'priority', 'reported_by', 'deparment' ] #Dynamic list for filters. for key in filterKeys: if key in avail_filters: filters &= Q(**{key: request.GET[key]}) else: pass data_set = Issue.objects.filter(filters).order_by( '-updated_time')[p_no * 10:(p_no * 10) + 10] if data_set.exists(): serialized_data_set = IssueSerializerFields(data_set, many=True) return api_response(True, status=error_codes._OK, data=serialized_data_set.data) else: return api_response(True, status=error_codes._OK, data=[]) except AssertionError as e: return api_response(success=False, status=error_codes._BAD_PARAM, error=error_codes._ASSERTION_ERROR) except Department.DoesNotExist: return api_response(success=False, status=error_codes._BAD_PARAM, error=error_codes._NOT_FOUND_ERROR) except Exception as e: print(e) return api_response(success=False, status=error_codes._SERVER_ERROR, error=error_codes._EXCEPTION_ERROR)
def post(self, request): try: request.data['issue']['recorded_by'] = request.user.user_id created_issue = IssueSerializer(data=request.data['issue']) if created_issue.is_valid(): created_issue.save() return api_response(success=True, status=error_codes._OK, data=created_issue.data) else: return api_response(success=False, status=error_codes._BAD_PARAM, error=created_issue.errors) except AssertionError: return api_response(success=False, status=error_codes._BAD_PARAM, error=error_codes._ASSERTION_ERROR) except Exception as e: print(e) return api_response(success=False, status=error_codes._SERVER_ERROR, error=error_codes._EXCEPTION_ERROR)
def put(self, request): try: assert 'id' in request.data editable_issue = Issue.objects.get(iss_id=request.data['id']) assert 'images' in request.data if editable_issue.recorded_by.user_id == request.user.user_id: created_issue = IssueSerializer(editable_issue, data=request.data['issue']) if created_issue.is_valid(): created_issue.save() return api_response(success=True, status=error_codes._OK, data=created_issue.data) else: return api_response(success=False, status=error_codes._BAD_PARAM, error=created_issue.errors) else: return api_response(success=False, status=error_codes._UNAUTHORISED, data=[]) except AssertionError as e: return api_response(success=False, status=error_codes._BAD_PARAM, error=error_codes._ASSERTION_ERROR) except Issue.DoesNotExist: return api_response(success=False, status=error_codes._BAD_PARAM, error=error_codes._NOT_FOUND_ERROR) except Exception as e: print(e) return api_response(success=False, status=error_codes._SERVER_ERROR, error=error_codes._EXCEPTION_ERROR)
def delete(self, request): try: assert 'id' in request.data solution_id = request.data['id'] try: data = Solution.objects.get(sol_id=solution_id) assert data.deleted is False if data.poster == request.user: data.deleted = True data.save() return api_response(success=True, status=error_codes._OK, data=[]) else: return api_response( success=False, status=error_codes._UNAUTHORISED, data="You are ont permitted to perform this action.") except Solution.DoesNotExist: return api_response(success=False, status=error_codes._NOT_FOUND, error=error_codes._NOT_FOUND_ERROR) except AssertionError: return api_response(success=False, status=error_codes._NOT_FOUND, error=error_codes._NOT_FOUND_ERROR) except AssertionError: return api_response(success=False, status=error_codes._BAD_PARAM, error=error_codes._ASSERTION_ERROR) except Exception as e: print(e) return api_response(success=False, status=error_codes._SERVER_ERROR, error=error_codes._EXCEPTION_ERROR)
def delete(self, request): try: assert 'id' in request.data issue_id = request.data['id'] try: data = Issue.objects.get(iss_id=issue_id) assert data.deleted is False if data.recorded_by == request.user or request.user.is_staff: data.deleted = True data.save() return api_response(success=True, status=error_codes._OK, data=[]) else: return api_response( success=False, status=error_codes._UNAUTHORISED, data="User is not authorised to delete this post.") except Issue.DoesNotExist: return api_response(success=False, status=error_codes._NOT_FOUND, error=error_codes._NOT_FOUND_ERROR) except AssertionError: return api_response(success=False, status=error_codes._NOT_FOUND, error=error_codes._NOT_FOUND_ERROR) except AssertionError: return api_response(success=False, status=error_codes._BAD_PARAM, error=error_codes._ASSERTION_ERROR) except Exception as e: print(e) return api_response(success=False, status=error_codes._SERVER_ERROR, error=error_codes._EXCEPTION_ERROR)
def UploadImages(request): try: assert 'id' and 'model' in request.data assert request.FILES if request.data['model'] == 'issue': try: assert Issue.objects.get(iss_id=request.data['id']) iss = Issue.objects.get(iss_id=request.data['id']) image = [] for it, img in enumerate(request.FILES): temp = Image.objects.create(parent_issue=iss, image=request.FILES[img]) temp.save() image.append(temp) serialized_image = ImageSerializer(image, many=True) return api_response(success=True, status=error_codes._OK, data=serialized_image.data) except AssertionError: return api_response(success=False, status=error_codes._NOT_FOUND, error=error_codes._NOT_FOUND_ERROR) except Issue.DoesNotExist: return api_response(success=False, status=error_codes._NOT_FOUND, error=error_codes._NOT_FOUND_ERROR) elif request.data['model'] == 'solution': try: assert Solution.objects.get(sol_id=request.data['id']) sol = Solution.objects.get(sol_id=request.data['id']) image = [] for it, img in enumerate(request.FILES): temp = Image.objects.create(parent_solution=sol, image=request.FILES[img]) temp.save() image.append(temp) serialized_image = ImageSerializer(image, many=True) return api_response(success=True, status=error_codes._OK, data=serialized_image.data) except AssertionError: return api_response(success=False, status=error_codes._NOT_FOUND, error=error_codes._NOT_FOUND_ERROR) except Solution.DoesNotExist: return api_response(success=False, status=error_codes._NOT_FOUND, error=error_codes._NOT_FOUND_ERROR) except AssertionError as e: print(e) return api_response(success=False, status=error_codes._BAD_PARAM, error=error_codes._ASSERTION_ERROR) except Exception as e: print(e) return api_response(success=True, status=error_codes._SERVER_ERROR, error=error_codes._EXCEPTION_ERROR)