class EnrollmentSerializer(serializers.ModelSerializer):
    subject = SubjectsSerializer(read_only=True)
    group = GroupSerailizer(read_only=True)
    lecturer = StaffSerializer(read_only=True)
    tutor = StaffSerializer(read_only=True)

    class Meta:
        model = Enrollment
        fields = ('id', 'subject', 'group', 'lecturer', 'tutor', 'semester')
Ejemplo n.º 2
0
    def test_retrieve_staffs(self, mock_jwt_auth):
        """Test retrieving the tags"""
        data = {
            "token_type": "access",
            "exp": 1582703472,
            "jti": "fcbaabbc963542429db9e93fd0aa158d",
            "user_id": 2
        }
        mock_jwt_auth.return_value = (data, None)

        Staff.objects.create(name='Topan',
                             address='Pondok Pinang',
                             contact='087739991234',
                             NIP='123456789')
        Staff.objects.create(name='Rizki',
                             address='Parung Panjang',
                             contact='087739991234',
                             NIP='432112345678')

        res = self.client.get(STAFFS_URL)

        staffs = Staff.objects.all().order_by('-name')
        serializer = StaffSerializer(staffs, many=True)
        self.assertEqual(res.status_code, status.HTTP_200_OK)
        self.assertEqual(res.data, serializer.data)
Ejemplo n.º 3
0
 def put(self, request, args):
     staff_id = args.pop("staff_id")
     shop_id = self.current_shop.id
     staff = get_staff_by_id_and_shop_id(staff_id, shop_id)
     if not staff:
         return self.send_fail(error_text="员工不存在")
     # 超管仅自己可以编辑,而且权限不可编辑
     elif staff.roles == StaffRole.SHOP_SUPER_ADMIN:
         if self.current_user.id != staff.user_id:
             return self.send_fail(error_text="超管信息仅自己可以编辑")
     serializer = StaffSerializer(staff, data=args)
     if not serializer.is_valid():
         return self.send_error(error_message=serializer.errors,
                                status_code=status.HTTP_400_BAD_REQUEST)
     serializer.save()
     return self.send_success()
Ejemplo n.º 4
0
class BillSerializer(serializers.ModelSerializer):
    items = BillItemSerializer(many=True, required=False)
    buyer = CustomerSerializer()
    seller = StaffSerializer()
    branch = BranchSerializer(read_only=True)
    payments = CustomerPaymentSerializer(many=True, required=False)
    price = serializers.ReadOnlyField()
    total_discount = serializers.ReadOnlyField()
    buyer_special_discount = serializers.ReadOnlyField()
    items_discount = serializers.ReadOnlyField()
    final_price = serializers.ReadOnlyField()
    paid = serializers.ReadOnlyField()
    cheque_paid = serializers.ReadOnlyField()
    card_paid = serializers.ReadOnlyField()
    cash_paid = serializers.ReadOnlyField()
    remaining_payment = serializers.ReadOnlyField()
    items_count = serializers.ReadOnlyField()
    profit = serializers.ReadOnlyField()

    class Meta:
        model = Bill
        fields = ('pk', 'bill_code', 'create_date', 'status', 'close_date',
                  'buyer', 'seller', 'discount', 'used_points', 'branch',
                  'payments', 'items', 'bill_image', 'price', 'total_discount',
                  'buyer_special_discount', 'items_discount', 'final_price',
                  'paid', 'cheque_paid', 'cash_paid', 'card_paid',
                  'remaining_payment', 'items_count', 'profit')
Ejemplo n.º 5
0
 def get(self, request, args):
     staff_id = args.get("staff_id")
     shop_id = self.current_shop
     staff = get_staff_by_id_and_shop_id(staff_id, shop_id)
     if not staff:
         return self.send_fail(error_text="员工不存在")
     serializer = StaffSerializer(staff)
     return self.send_success(data=serializer.data)
Ejemplo n.º 6
0
 def put(self, request, args):
     shop_id = self.current_shop.id
     staff_apply_id = args.pop("staff_apply_id")
     staff_apply = get_staff_apply_by_shop_id_and_id(
         shop_id, staff_apply_id)
     if not staff_apply:
         return self.send_fail(error_text='员工申请记录不存在')
     staff_apply_serializer = StaffApplySerializer(staff_apply, args)
     # 此处无需验证,仅为了save的执行
     staff_apply_serializer.is_valid()
     staff_apply_serializer.save()
     # 申请通过,创建员工
     staff_info = {"shop_id": shop_id, "user_id": staff_apply.user.id}
     staff_info.update(args)
     # 校验员工是否存在
     staff = get_staff_by_user_id_and_shop_id(staff_apply.user.id,
                                              shop_id,
                                              filter_delete=False)
     if not staff:
         staff_serializer = StaffSerializer(data=staff_info)
         if not staff_serializer.is_valid():
             return self.send_error(error_message=staff_serializer.errors,
                                    status_code=status.HTTP_400_BAD_REQUEST)
         staff = staff_serializer.save()
     elif staff.status == StaffStatus.NORMAL:
         return self.send_fail(error_text="已经为该店铺的员工")
     else:
         # 员工状态为被删除,则将状态修改为正常
         staff_info["status"] = StaffStatus.NORMAL
         for k, v in staff_info.items():
             setattr(staff, k, v)
         staff.save()
     # 创建操作日志
     log_info = {
         "shop_id": shop_id,
         "operator_id": self.current_user.id,
         "operate_type": StaffLogType.ADD_STAFF,
         "staff_id": staff.id,
     }
     create_staff_log_interface(log_info)
     return self.send_success(staff_id=staff.id)
Ejemplo n.º 7
0
    def test_retrieve_staff(self):
        """Test retrieving staff by user school"""
        sample_objects.get_staff(sample_objects.get_school())
        sample_objects.get_staff(self.staff_user.school)

        res = self.client1.get(STAFF_URL)
        staff = Staff.objects.filter(school=self.staff_user.school)
        serializer = StaffSerializer(staff, many=True)

        self.assertEquals(res.status_code, status.HTTP_200_OK)
        self.assertEquals(len(res.data), 1)
        self.assertEquals(res.data, serializer.data)
Ejemplo n.º 8
0
 def get(self, request, args):
     page = args.get("page")
     shop_id = self.current_shop.id
     staff_list = list_staff_by_shop_id(shop_id, args.get("keyword"))
     # page为-1时,不分页
     if page > 0:
         staff_list = self._get_paginated_data(staff_list, StaffSerializer)
     else:
         # 适配前端参数要求
         staff_list = {
             'results': StaffSerializer(staff_list, many=True).data
         }
     return self.send_success(data_list=staff_list)
Ejemplo n.º 9
0
def get_staff_profile(request):
    user = request.user
    if is_staff(user):
        staff = Staff.objects.get(user=user)
        staff_profile = StaffProfile.objects.get(staff=staff)
        staff_serializer = StaffSerializer(staff)
        profile_serializer = StaffProfileSerializer(staff_profile)
        if profile_serializer.data['avatar']:
            return Response({
                "staff": staff_serializer.data,
                "avatar": profile_serializer.data['avatar']
            })
        else:
            return Response({"staff": staff_serializer.data, "avatar": None})
    else:
        return Response({"You don't have permissions for this action"})
Ejemplo n.º 10
0
    def test_retrieve_staff_detail(self, mock_jwt_auth):
        """Test viewing staff detail"""
        data = {
            "token_type": "access",
            "exp": 1582703472,
            "jti": "fcbaabbc963542429db9e93fd0aa158d",
            "user_id": 2
        }
        mock_jwt_auth.return_value = (data, None)

        staff = sample_staff()

        url = detail_url(staff.id)
        res = self.client.get(url)

        serializer = StaffSerializer(staff)
        self.assertEqual(res.data, serializer.data)
Ejemplo n.º 11
0
 def get(self, request):
     user = self.current_user
     shop = self.current_shop
     staff = self.current_staff
     for _ in USER_OUTPUT_CONSTANT:
         setattr(staff, _, getattr(user, _))
     some_config = get_some_config_by_shop_id_interface(shop.id)
     some_config = SomeConfigSerializer(some_config).data
     baidu_token = Baidu.get_baidu_token()
     some_token = {"baidu_token": baidu_token}
     shop_serializer = AdminShopSerializer(shop)
     staff_serializer = StaffSerializer(staff)
     return self.send_success(
         shop_data=shop_serializer.data,
         user_data=staff_serializer.data,
         some_config=some_config,
         some_token=some_token,
     )
Ejemplo n.º 12
0
 def post(self, request, *args, **kwargs):
     username = request.data.get('username', '')
     password = request.data.get('password', '')
     try:
         member = Staff.objects.get(username=username)
     except Staff.DoesNotExist:
         raise ValidationError(
             {'non_field_errors': ['Member does not exist.']})
     if authenticate(request=request,
                     username=member.username,
                     password=password):
         login(request, member)
     if request.user.is_authenticated:
         token, created = Token.objects.get_or_create(user=member)
         return Response({
             'token': token.key,
             'is_admin': getattr(member, 'is_admin', False),
             'user': StaffSerializer(member).data
         })
     raise ValidationError({
         'non_field_errors': ['Unable to login with provided credentials.']
     })
class AdviserSerialaizer(serializers.ModelSerializer):
    staff = StaffSerializer(read_only=True)

    class Meta:
        model = Adviser
        fields = ('id', 'staff')