def post(self, request, *args, **kwargs): kra = get_object_or_404(Kra, identifier=kwargs["identifier"]) if kra.user != request.user and kra.user.profile.manager != request.user.profile: return Response( utils.build_response(False, "Permission denied", None)) serializer = KraCreateMessageSerializer(data=request.data) if serializer.is_valid(): serializer.save( user=request.user, kra=kra, file_type=serializer.validated_data["file"].content_type if "file" in serializer.validated_data and serializer.validated_data["file"] else None, filename=serializer.validated_data["file"].name if "file" in serializer.validated_data and serializer.validated_data["file"] else None) if not kra.is_draft: NotificationManager.kra_update_notification(request, kra) return Response( utils.build_response( True, "Message sent", KraMessagesSerializer(kra.messages.all(), many=True, context={ "request": request }).data)) return Response(utils.build_response(False, None, serializer.errors))
def post(self, request, *args, **kwargs): serializer = LoginSerializer(data=request.data) if serializer.is_valid(): log_user = serializer.get_user() token, created = Token.objects.get_or_create(user=log_user) return Response( utils.build_response(True, None, {"token": token.key})) return Response(utils.build_response(False, None, serializer.errors), status=status.HTTP_400_BAD_REQUEST)
def get(self, request, *args, **kwargs): try: data = {} profile = request.user.profile.directing_department.members.get( id=kwargs['id']) kras = profile.user.kras.filter(is_draft=False) data["profile"] = ProfileSerializer(profile).data data["kras"] = KraSerializer(kras, many=True).data return Response(utils.build_response(True, None, data)) except: return Response(utils.build_response(False, "Invalid user", None))
def get(self, request, *args, **kwargs): kra = get_object_or_404(Kra, identifier=kwargs["identifier"]) if kra.user != request.user and kra.user.profile.manager != request.user.profile: return Response(utils.build_response(False, "Invalid KRA", [])) kra.messages.all().exclude(user=request.user).update(read=True) return Response( utils.build_response( True, None, KraMessagesSerializer(kra.messages.all(), many=True, context={ "request": request }).data))
def update(self, request, *args, **kwargs): partial = kwargs.pop('partial', False) instance = self.get_object() serializer = self.get_serializer(instance, data=request.data, partial=partial) if serializer.is_valid(): kra = self.perform_update(serializer) NotificationManager.kra_update_notification(self.request, kra) return Response( utils.build_response(True, None, KraSerializer(kra).data)) return Response(utils.build_response(False, None, serializer.errors))
def post(self, request, *args, **kwargs): serializer = ChangePasswordSerializer(data=request.data, context={'request': request}) if serializer.is_valid(): validated_data = serializer.validated_data password = validated_data['new_password'] user = request.user user.set_password(password) user.save() user.profile.password_changed = True return Response( utils.build_response(True, "Password changed successfully", None)) return Response(utils.build_response(False, None, serializer.errors), status=status.HTTP_400_BAD_REQUEST)
def get(self, request, *args, **kwargs): bucket = self.get_object().bucket ratings = self.request.user.profile.company.config.ratings.all() return Response( utils.build_response( bucket.allow_final_assessment, None, CompanyRatingSerializer(ratings, many=True).data))
def get(self, request, *args, **kwargs): user = request.user descendants = user.profile.directing_department.members.all().exclude( id=user.profile.id) if hasattr( user.profile, "directing_department") else user.profile.child_members.all() data = { "descendants": ProfileSerializer(descendants, many=True).data, "profile": ProfileSerializer(user.profile).data, "ancestor": ProfileSerializer(user.profile.manager).data, "tasks": TaskSerializer(user.profile.tasks, many=True).data, "pips": PipSerializer(user.pips.all(), many=True).data if hasattr( user, "pips") else [], "raised_pips": PipSerializer(user.raised_pips.all(), many=True).data if hasattr( user, "raised_pips") else [], "pending_tasks": TaskSerializer(user.profile.pending_tasks, many=True).data, "kras": KraSerializer(user.kras.all(), many=True).data if hasattr( user, "kras") else [] } return Response(utils.build_response(True, None, data))
def create(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.data) if serializer.is_valid(): validated_data = serializer.validated_data kra = self.perform_create(serializer) headers = self.get_success_headers(serializer.data) message = "KRA setting saved as draft" if not validated_data.get("is_draft", False): message = "KRA setting submitted for assessment" if self.request.user.profile.manager: NotificationManager.kra_setting_notification( self.request, kra) return Response(utils.build_response(True, message, serializer.data), headers=headers) return Response(utils.build_response(False, None, serializer.errors))
def create(self, request, *args, **kwargs): super(PipCreateAPIView, self).create(request, *args, **kwargs) NotificationManager.pip_notification(self.request, self.object.staff, self.object) return Response( utils.build_response(True, "PIP created successfully", PipSerializer(self.object).data))
def get(self, request, *args, **kwargs): try: request.user.auth_token.delete() except: pass return Response( utils.build_response(True, "Account logged out successfully", None))
def update(self, request, *args, **kwargs): partial = kwargs.pop('partial', False) instance = self.get_object() serializer = self.get_serializer(instance, data=request.data, partial=partial) if serializer.is_valid(): validated_data = serializer.validated_data kra = self.perform_update(serializer) message = "KRA setting saved as draft" if not validated_data.get("is_draft", False): message = "KRA setting submitted for assessment" if self.request.user.profile.manager: NotificationManager.kra_setting_notification( self.request, kra) return Response( utils.build_response(True, message, KraSerializer(kra).data)) return Response(utils.build_response(False, None, serializer.errors))
def get(self, request, *args, **kwargs): if "reference" in kwargs: user = request.user buckets = user.profile.company.kra_buckets.all() instance = buckets.get(reference=kwargs['reference']) serializer = KraBucketSerializer(instance) data = serializer.data if hasattr(instance, "company_kra"): data["company_kra"] = CompanyKraSerializer( instance.company_kra).data else: data["company_kra"] = None try: manager_kra = Kra.objects.get(user=user.profile.manager.user, bucket=instance, status__in=[ constants.KRA_LOCKED_STATUS, constants.KRA_OPEN_STATUS, constants.KRA_CLOSED_STATUS ], is_draft=False) data["manager_kra"] = KraSerializer(manager_kra).data except: data["manager_kra"] = None if hasattr(instance, "kras"): data["team_kras"] = KraSerializer( instance.kras.filter(user__profile__in=self.request.user. profile.child_members.all(), is_draft=False), many=True).data else: kwargs["team_kras"] = [] return Response(utils.build_response(True, None, data)) else: try: serializer = KraBucketSerializer( request.user.profile.company.kra_buckets.all(), many=True) return Response( utils.build_response(True, None, serializer.data)) except: return Response(utils.build_response(True, None, []))
def get(self, request, *args, **kwargs): messages = Message.objects.filter( kra__in=request.user.kras.all(), read=False).exclude(user=request.user) serializer = KraMessagesSerializer(messages, many=True, context={"request": request}) data = {"messages": serializer.data} tasks = request.user.profile.unseen_tasks serializer = TaskSerializer(tasks, many=True) data["tasks"] = serializer.data messages.update(read=True) tasks.update(seen=True) return Response(utils.build_response(True, None, data))
def list(self, request, *args, **kwargs): return Response( utils.build_response( True, None, self.get_serializer(self.get_queryset(), many=True).data))
def retrieve(self, request, *args, **kwargs): serializer = self.serializer_class(self.get_object()) return Response(utils.build_response(True, None, serializer.data))
def destroy(self, request, *args, **kwargs): super(KraDeleteAPIView, self).destroy(request, *args, **kwargs) return Response( utils.build_response(True, "KRA deleted successfully", None))
def get(self, request, *args, **kwargs): bucket = self.get_object().bucket return Response( utils.build_response(bucket.allow_self_assessment, None, None))