コード例 #1
0
    def create(self, request, *args, **kwargs):
        try:
            # data = deepcopy(request.data)
            # del_dict = {}
            print("has_perm, add_coupon::",
                  request.user.has_perm('app_api.add_coupon'))
            if not request.user.has_perm('app_api.add_coupon'):
                print("has_perm, add_coupon::",
                      request.user.has_perm('app_api.add_coupon'))
                # return HttpResponse("{'status':405, 'msg':'添加出错'}", content_type='application/json')
                return Response({'msg': '添加出错'},
                                status=status.HTTP_403_FORBIDDEN)

            self_serializer_class = self.get_serializer_class()
            serializer = self_serializer_class(data=request.data)
            serializer.is_valid(raise_exception=True)
            # for key, value in del_dict.items():
            #     serializer.validated_data[key] = value
            self.perform_create(serializer)
            headers = self.get_success_headers(serializer.data)
            ret = Response(serializer.data,
                           status=status.HTTP_201_CREATED,
                           headers=headers)
            log_save(
                user=request.user.username,
                request=self.request,
                flag="新增",
                message=
                f'{self.serializer_class.Meta.model._meta.verbose_name}: {ret.data.__str__()}被新增',
                log_type=self.serializer_class.Meta.model._meta.model_name)
            print("create11111.....")
            return ret
        except DjangoValidationError as e:
            raise ValidationError(e.error_dict)
コード例 #2
0
 def create(self, request, *args, **kwargs):
     try:
         data = deepcopy(request.data)
         del_dict = {}
         for key, value in request.data.items():
             print(
                 getattr(self.serializer_class.Meta.model,
                         key).__class__.__name__)
             print(value)
             print(type(value))
             if getattr(
                     self.serializer_class.Meta.model, key
             ).__class__.__name__ == "ManyToManyDescriptor" and isinstance(
                     value, str):
                 del_dict[key] = eval(value)
                 del data[key]
         serializer = self.get_serializer(data=data)
         serializer.is_valid(raise_exception=True)
         for key, value in del_dict.items():
             serializer.validated_data[key] = value
         self.perform_create(serializer)
         headers = self.get_success_headers(serializer.data)
         ret = Response(serializer.data,
                        status=status.HTTP_201_CREATED,
                        headers=headers)
         log_save(
             user=request.user.username,
             request=self.request,
             flag="新增",
             message=
             f'{self.serializer_class.Meta.model._meta.verbose_name}: {ret.data.__str__()}被新增',
             log_type=self.serializer_class.Meta.model._meta.model_name)
         return ret
     except DjangoValidationError as e:
         raise ValidationError(e.error_dict)
コード例 #3
0
 def post(self, request, *args, **kwargs):
     if request.data["type"] == "account":
         pic_captcha = request.data["pic_captcha"]
         key = request.data["key"]
         try:
             captcha = CaptchaStore.objects.get(
                 challenge=pic_captcha.upper(), hashkey=key)
             captcha.delete()
         except CaptchaStore.DoesNotExist:
             raise ValidationError({"pic_captcha": ["验证码不正确"]})
         user = authenticate(request,
                             username=request.data["userName"],
                             password=request.data["password"])
         log_save(user=request.user.username,
                  request=self.request,
                  flag="登录",
                  message=f'{request.user.username}登录成功',
                  log_type="login")
         if user is not None:
             login(request, user)
             return JsonResponse({
                 "status": 'ok',
                 "type": "account",
                 "currentAuthority": ""
             })
         else:
             raise ValidationError({"password": ["密码错误"]})
コード例 #4
0
ファイル: custom.py プロジェクト: roofxixi/tyadmin_api_cli
 def create(self, request, *args, **kwargs):
     ret = super().create(request, args, kwargs)
     log_save(
         user=request.user.username,
         request=self.request,
         flag="新增",
         message=
         f'{self.serializer_class.Meta.model._meta.verbose_name}: {ret.data.__str__()}被新增',
         log_type=self.serializer_class.Meta.model._meta.model_name)
     return ret
コード例 #5
0
    def update(self, request, *args, **kwargs):
        partial = kwargs.pop('partial', False)
        instance = self.get_object()
        data = deepcopy(request.data)
        del_dict = {}
        for key, value in request.data.items():
            if isinstance(getattr(instance, key),
                          ImageFieldFile) and isinstance(value, str):
                print(value)
                print(self.request.META['HTTP_HOST'] + settings.MEDIA_URL)
                pure_value = value.replace(
                    "http://" + self.request.META['HTTP_HOST'] +
                    settings.MEDIA_URL, "")
                print(pure_value)
                del_dict[key] = pure_value
                del data[key]
            elif isinstance(getattr(instance, key), FieldFile) and isinstance(
                    value, str):
                print(value)
                print(self.request.META['HTTP_HOST'] + settings.MEDIA_URL)
                pure_value = value.replace(
                    "http://" + self.request.META['HTTP_HOST'] +
                    settings.MEDIA_URL, "")
                print(pure_value)
                del_dict[key] = pure_value
                del data[key]
            elif getattr(
                    instance, key
            ).__class__.__name__ == "ManyRelatedManager" and isinstance(
                    value, str):
                del_dict[key] = eval(value)
                del data[key]
        serializer = self.get_serializer(instance, data=data, partial=True)
        serializer.is_valid(raise_exception=True)
        for key, value in del_dict.items():
            serializer.validated_data[key] = value
        self.perform_update(serializer)

        if getattr(instance, '_prefetched_objects_cache', None):
            # If 'prefetch_related' has been applied to a queryset, we need to
            # forcibly invalidate the prefetch cache on the instance.
            instance._prefetched_objects_cache = {}

        ret = Response(serializer.data)
        log_save(
            user=request.user.username,
            request=self.request,
            flag="更新",
            message=
            f'{self.serializer_class.Meta.model._meta.verbose_name}: {ret.data.__str__()}被更新',
            log_type=self.serializer_class.Meta.model._meta.model_name)
        return ret
コード例 #6
0
ファイル: custom.py プロジェクト: xuanlvdgg/django-tyadmin
 def destroy(self, request, *args, **kwargs):
     # return Response({
     #     "演示模式"
     # },status=status.HTTP_403_FORBIDDEN)
     ids = kwargs["pk"].split(",")
     names = []
     for one in self.serializer_class.Meta.model.objects.filter(id__in=ids):
         names.append(one.__str__())
     self.serializer_class.Meta.model.objects.filter(pk__in=ids).delete()
     log_save(user=request.user.username, request=self.request, flag="删除",
              message=f'{self.serializer_class.Meta.model._meta.verbose_name}: {"".join(names)}被删除',
              log_type=self.serializer_class.Meta.model._meta.model_name)
     return Response({
         "code": 200
     })
コード例 #7
0
ファイル: custom.py プロジェクト: xuanlvdgg/django-tyadmin
 def create(self, request, *args, **kwargs):
     try:
         # data = deepcopy(request.data)
         # del_dict = {}
         self_serializer_class = self.get_serializer_class()
         serializer = self_serializer_class(data=request.data)
         serializer.is_valid(raise_exception=True)
         # for key, value in del_dict.items():
         #     serializer.validated_data[key] = value
         self.perform_create(serializer)
         headers = self.get_success_headers(serializer.data)
         ret = Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers)
         log_save(user=request.user.username, request=self.request, flag="新增",
                  message=f'{self.serializer_class.Meta.model._meta.verbose_name}: {ret.data.__str__()}被新增',
                  log_type=self.serializer_class.Meta.model._meta.model_name)
         return ret
     except DjangoValidationError as e:
         raise ValidationError(e.error_dict)
コード例 #8
0
 def post(self, request, *args, **kwargs):
     current_username = self.request.data["username"]
     change_password = self.request.data["password"]
     change_re_password = self.request.data["re_password"]
     if change_password != change_re_password:
         raise ValidationError({"password": ["两次密码不可以不一致"]})
     try:
         cur_user = SysUser.objects.get(username=current_username)
         password = make_password(change_re_password)
         cur_user.password = password
         cur_user.save()
         log_save(user=request.user.get_username(), request=self.request, flag="修改", message=f'用户: {cur_user.get_username()}密码被修改', log_type="user")
     except SysUser.DoesNotExist:
         raise ValidationError({"username": ["用户名不存在"]})
     ret_info = {
         "retcode": 200,
         "retmsg": "Save Success"
     }
     res = {
         'retInfos': ret_info,
     }
     return JsonResponse(res)