Esempio n. 1
0
 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))
Esempio n. 2
0
 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)
Esempio n. 3
0
 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))
Esempio n. 4
0
 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))
Esempio n. 5
0
 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))
Esempio n. 6
0
 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)
Esempio n. 7
0
 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))
Esempio n. 8
0
 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))
Esempio n. 9
0
 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))
Esempio n. 10
0
 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))
Esempio n. 11
0
 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))
Esempio n. 12
0
 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))
Esempio n. 13
0
    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, []))
Esempio n. 14
0
 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))
Esempio n. 15
0
 def list(self, request, *args, **kwargs):
     return Response(
         utils.build_response(
             True, None,
             self.get_serializer(self.get_queryset(), many=True).data))
Esempio n. 16
0
 def retrieve(self, request, *args, **kwargs):
     serializer = self.serializer_class(self.get_object())
     return Response(utils.build_response(True, None, serializer.data))
Esempio n. 17
0
 def destroy(self, request, *args, **kwargs):
     super(KraDeleteAPIView, self).destroy(request, *args, **kwargs)
     return Response(
         utils.build_response(True, "KRA deleted successfully", None))
Esempio n. 18
0
 def get(self, request, *args, **kwargs):
     bucket = self.get_object().bucket
     return Response(
         utils.build_response(bucket.allow_self_assessment, None, None))