def update(cls, user_id, business_id, **kwargs): """ 用户信息修改 :param user_id: :param business_id: :param kwargs: :return: """ try: user = User.objects.get(pk=user_id, business_id=business_id) except ObjectDoesNotExist: raise UserNotExistException() try: with transaction.atomic("BusinessMysql"): serializer = UserSerializer(user, kwargs, partial=True) if serializer.is_valid(): serializer.save() else: raise ValidationException(detail=serializer.errors) if "role_ids" in kwargs: if not isinstance(kwargs["role_ids"], list): raise ValidationException(10007) new_role_ids = set(kwargs["role_ids"]) cls._update_role_relation(user_id, new_role_ids) if "department_ids" in kwargs: if not isinstance(kwargs["department_ids"], list): raise ValidationException(10007) new_department_ids = set(kwargs["department_ids"]) cls._update_department_relation(user_id, new_department_ids) except IntegrityError: raise return True
def check_stock(cls, product_list): """ 根据商品信息,检验库存是否足够 :param product_list: :return: """ if not isinstance(product_list, list): raise ValidationException(10007) if len(product_list) == 0: raise ValidationException(30005) res_dict = {"res": True, "failed": []} for info in product_list: for item in ["first_specification_name", "second_specification_name"]: if item not in info: info[item] = None try: stock_obj = StockInfo.objects.get(product_id=info['product_id']) except ObjectDoesNotExist: raise ObjectDoesNotExistException() res = stock_obj.check_stock(info["num"], info["first_specification_name"], info["first_specification_value"], info["second_specification_name"], info["second_specification_value"]) if not res: # 库存不满足 res_dict["res"] = False res_dict["failed"].append(info) return res_dict
def create_user(cls, **kwargs): """ 创建用户 :param kwargs: :return: """ exist = User.objects.filter(account=kwargs["account"]).exists() if exist: raise ValidationException(10008) try: with transaction.atomic('BusinessMysql'): serializer = UserSerializer(data=kwargs) if serializer.is_valid(): user = serializer.save() else: raise ValidationException(detail=serializer.errors) department_ids = kwargs["department_ids"] role_ids = kwargs["role_ids"] query_set_list = [] for role_id in role_ids: query_set_list.append(UserRoleRelation(user_id=user.id, role_id=role_id)) UserRoleRelation.objects.bulk_create(query_set_list) query_set_list = [] for department_id in department_ids: query_set_list.append(DepartmentUserRelation(department_id=department_id, user_id=user.id)) DepartmentUserRelation.objects.bulk_create(query_set_list) return user.id except IntegrityError: raise
def create(cls, business_id, **kwargs): data = kwargs data['business_id'] = business_id try: with transaction.atomic('ProductMysql'): serializer = CategorySerializer(data=data) if serializer.is_valid(): obj = serializer.save() else: raise ValidationException(serializer.errors) if "specification_list" in data: # 规格参数必传 if isinstance(data['specification_list'], list) and len(data['specification_list']) > 0: cls._create_specification(obj.id, data["specification_list"]) else: ValidationException(20010) else: raise ValidationException(20010) if "attribute_list" in data: if isinstance(data['attribute_list'], list) and len(data['attribute_list']) > 0: cls._create_attribute(obj.id, data["attribute_list"]) else: ValidationException(20011) return obj.id except IntegrityError: raise
def _validate_kwargs(cls, kwargs): if "product_id" not in kwargs: raise ValidationException(30003) if "currency_code" in kwargs: if len(kwargs["currency_code"]) != 3: raise ValidationException(30002) else: raise ValidationException(30001)
def login(self, request): if "account" not in request.data: raise ValidationException(10002) if "password" not in request.data: raise ValidationException(10003) token = UserService.login(request.data['account'], request.data['password']) return Response(return_format(200), headers={'Authorization': token})
def destroy(self, request, pk=None): if "vendor_id" not in request.data: raise ValidationException() vendor_id = request.data["vendor_id"] if not isinstance(vendor_id, int): raise ValidationException(10009) VendorContractService.delete(pk, vendor_id) return Response(return_format(200))
def approve(self, request, pk=None): if "vendor_id" not in request.data: raise ValidationException() vendor_id = request.data["vendor_id"] if not isinstance(vendor_id, int): raise ValidationException(10009) res = VendorContractService.approve(pk, vendor_id) return Response(return_format(200, '', data={"result": res}))
def retrieve(self, request, pk=None): if "vendor_id" not in request.data: raise ValidationException() vendor_id = request.data["vendor_id"] if not isinstance(vendor_id, int): raise ValidationException(10009) data = VendorContractService.detail(pk, vendor_id) return Response(return_format(200, data=data))
def update(self, request, pk=None): if "vendor_id" not in request.data: raise ValidationException() vendor_id = request.data["vendor_id"] del request.data["vendor_id"] if not isinstance(vendor_id, int): raise ValidationException(10009) VendorBankAccountService.update(pk, vendor_id, **request.data) return Response(return_format(200))
def list(self, request): if "vendor_id" not in request.data: raise ValidationException() vendor_id = request.data["vendor_id"] if not isinstance(vendor_id, int): raise ValidationException(10009) page_paginate = PagePaginate(request) result = VendorBankAccountService.list(vendor_id, page_paginate.page, page_paginate.page_size) return Response(return_format(200, data=result))
def __init__(self, request): if "page" in request.data: self.page = request.data["page"] if "page_size" in request.data: self.page_size = request.data["page_size"] if not isinstance(self.page, int): raise ValidationException(10009) if not isinstance(self.page_size, int): raise ValidationException(10009) if self.page < 1 or self.page_size <= 0: raise ValidationException(10010)
def _validate_describe_images(cls, attrs): for item in attrs: if not isinstance(item, dict): raise ValidationException(20018) if "img_id" not in item or "index_no" not in item: raise ValidationException(20018) if not isinstance(item["img_id"], int): raise ValidationException(20018) if not isinstance(item["index_no"], int): raise ValidationException(20018) return attrs
def _validate_attribute_list(cls, attrs): for item in attrs: if not isinstance(item, dict): raise ValidationException(20016) if "name" not in item or "option" not in item: raise ValidationException(20016) if not isinstance(item["name"], str): raise ValidationException(20016) if not isinstance(item["option"], str): raise ValidationException(20016) return attrs
def create(self, request): business_id = request.dmp_user['business_id'] if "department_ids" not in request.data: raise ValidationException() if type(request.data["department_ids"]) != list: raise ValidationException(10007) if "role_ids" not in request.data: raise ValidationException() if type(request.data["role_ids"]) != list: raise ValidationException(10007) user_id = UserService.create_user(**request.data, business=business_id) return Response(return_format(200, data={"id": user_id}))
def _validate_kwargs(cls, kwargs): if 'attribute_list' in kwargs: cls._validate_attribute_list(kwargs['attribute_list']) else: raise ValidationException(20016) if 'main_images' in kwargs: cls._validate_main_images(kwargs['main_images']) else: raise ValidationException(20017) if 'describe_images' in kwargs: cls._validate_describe_images(kwargs['describe_images']) else: raise ValidationException(20018)
def _verify_item(cls, item): """ 检验规格和属性 :param item: :return: """ if "name" not in item: raise ValidationException(20012) if "option" not in item: raise ValidationException(20013) if len(item["name"]) > 10: raise ValidationException(20014) if len(item["option"]) > 10: raise ValidationException(20015)
def update(cls, product_id, **kwargs): """ 修改库存信息 :param product_id: :param kwargs: :return: """ try: stock_obj = StockInfo.objects.get(product_id=product_id) except ObjectDoesNotExist: raise ObjectDoesNotExistException() if "product_id" in kwargs: del kwargs['product_id'] serializer = StockInfoSerializer(instance=stock_obj, data=kwargs, partial=True) specifications = kwargs['specifications'] stock_list = kwargs['stock_list'] try: with transaction.atomic('ProductMysql'): if serializer.is_valid(): serializer.save() else: raise ValidationException(detail=serializer.errors) if isinstance(specifications, dict) and isinstance(stock_list, list) and len(stock_list) > 0: stock_obj.stockspecificationdetail_set.all().delete() # 删除库存信息 stock_specifications_detail_list = [] for item in stock_list: stock_specifications_detail_list.append(StockSpecificationDetail(stock_id=stock_obj.id, **item)) StockSpecificationDetail.objects.bulk_create(stock_specifications_detail_list) return True except IntegrityError: raise except: raise
def create(cls, business_id, **kwargs): cls._validate_kwargs(kwargs) data = kwargs data['business_id'] = business_id try: with transaction.atomic('ProductMysql'): serializer = DetailSerializer(data=data) if serializer.is_valid(): obj = serializer.save() else: raise ValidationException(detail=serializer.errors) attribute_list = [] for item in kwargs['attribute_list']: attribute_list.append( DetailAttribute(detail_id=obj.id, **item)) DetailAttribute.objects.bulk_create(attribute_list) main_image_list = [] for item in kwargs['main_images']: main_image_list.append(MainImages(detail_id=obj.id, **item)) MainImages.objects.bulk_create(main_image_list) describe_image_list = [] for item in kwargs["describe_images"]: describe_image_list.append( DescribeImages(detail_id=obj.id, **item)) DescribeImages.objects.bulk_create(describe_image_list) return obj.id except IntegrityError: raise except: raise
def update(self, request, pk=None): business_id = request.dmp_user['business_id'] if "name" not in request.data: raise ValidationException() name = request.data['name'] DepartmentService.update(name=name, department_id=pk, business_id=business_id) return Response(return_format(200, msg="修改成功"))
def update(cls, business_id, pk, **kwargs): cls._validate_kwargs(kwargs) try: obj = Detail.objects.detail(pk, business_id) except ObjectDoesNotExist: raise ObjectDoesNotExistException try: with transaction.atomic('ProductMysql'): serializer = DetailSerializer(obj, kwargs, partial=True) if serializer.is_valid(): serializer.save() else: raise ValidationException(serializer.errors) attribute_list = [] for item in kwargs['attribute_list']: attribute_list.append( DetailAttribute(detail_id=obj.id, **item)) DetailAttribute.objects.filter(detail_id=obj.id).delete() DetailAttribute.objects.bulk_create(attribute_list) main_image_list = [] for item in kwargs['main_images']: main_image_list.append(MainImages(detail_id=obj.id, **item)) MainImages.objects.filter(detail_id=obj.id).delete() MainImages.objects.bulk_create(main_image_list) describe_image_list = [] for item in kwargs["describe_images"]: describe_image_list.append( DescribeImages(detail_id=obj.id, **item)) DescribeImages.objects.filter(detail_id=obj.id).delete() DescribeImages.objects.bulk_create(describe_image_list) return True except IntegrityError: raise
def create(self, request): business_id = request.dmp_user['business_id'] if "list" not in request.data: raise ValidationException() params = request.data['list'] for item in params: item['business'] = business_id DepartmentService.create(params) return Response(return_format(200, msg="创建成功"))
def delete(cls, department_id, business_id): try: department = Department.objects.detail(department_id=department_id, business_id=business_id) except ObjectDoesNotExist: raise ObjectDoesNotExistException() serializer = DepartmentSerializer(instance=department, data={"delete_flag": 1}, partial=True) if serializer.is_valid(): serializer.save() else: raise ValidationException(detail=serializer.errors)
def update(cls, pk, vendor_id, **kwargs): try: obj = VendorBankAccount.objects.get(pk=pk, vendor=vendor_id) except ObjectDoesNotExist: raise ObjectDoesNotExistException() serializer = VendorBankAccountSerializer(obj, kwargs, partial=True) if serializer.is_valid(): serializer.save() return True else: raise ValidationException(detail=serializer.errors)
def create(cls, **kwargs): """ 创建供应商银行账户 :param kwargs: :return: """ serializer = VendorBankAccountSerializer(data=kwargs) if serializer.is_valid(): bank_account = serializer.save() return bank_account.id else: raise ValidationException(detail=serializer.errors)
def create(cls, **kwargs): """ 创建部门 :param kwargs: :return: """ serializer = PermissionRoleSerializer(data=kwargs) if serializer.is_valid(): role = serializer.save() return role.id else: raise ValidationException(detail=serializer.errors)
def create(cls, **kwargs): """ 创建供应商 :param kwargs: :return: """ serializer = VendorSerializer(data=kwargs) if serializer.is_valid(): vendor = serializer.save() return vendor.id else: raise ValidationException(detail=serializer.errors)
def create(cls, **kwargs): """ 创建供应商银行账户 :param kwargs: :return: """ serializer = VendorContractSerializer(data=kwargs) if serializer.is_valid(): obj = serializer.save() return obj.id else: raise ValidationException(detail=serializer.errors)
def create(cls, department_list): """ 创建部门 :param department_list: :return: """ serializer = DepartmentSerializer(data=department_list, many=True) if serializer.is_valid(): serializer.save() return True else: raise ValidationException(detail=serializer.errors)
def create(cls, **kwargs): """ 新建库存 :param kwargs: :return: """ cls._validate_kwargs(kwargs) try: with transaction.atomic('ProductMysql'): specifications = kwargs['specifications'] stock_list = kwargs['stock_list'] data = {} data["product_id"] = kwargs["product_id"] data["currency_code"] = kwargs["currency_code"] if isinstance(specifications, dict) and isinstance(stock_list, list) and len(stock_list) > 0: data["default_specifications"] = json.dumps(specifications, ensure_ascii=False) serializer = StockInfoSerializer(data=data) if serializer.is_valid(): obj = serializer.save() stock_specifications_detail_list = [] for item in stock_list: stock_specifications_detail_list.append(StockSpecificationDetail(stock_id=obj.id, **item)) StockSpecificationDetail.objects.bulk_create(stock_specifications_detail_list) else: raise ValidationException(detail=serializer.errors) return obj.id else: # 没有具体规格 data['last_num'] = kwargs['last_num'] data['price'] = kwargs['price'] serializer = StockInfoSerializer(data=data) if serializer.is_valid(): obj = serializer.save() else: raise ValidationException(detail=serializer.errors) return obj.id except IntegrityError: raise except: raise