def create(self, request, **kwargs): serializer = AddMemberSerializer(data=request.data) serializer.is_valid(raise_exception=True) id = request.user adder = User.objects.get(username=id) semester = get_semester_of_date(datetime.datetime.now()) lifetime = serializer.data['lifetime'] try: user = User.objects.get(email=serializer.data['email']) except: user = None member = Member( seller=adder, last_edited_by=adder, semester=semester, name=serializer.data['name'], lifetime=serializer.data['lifetime'], email=serializer.data['email'], honorary=False, ) if 'uio_username' in serializer.data: member.uio_username = serializer.data['uio_username'] if user is not None: member.user = user if lifetime: member.date_lifetime = timezone.now() member.save() return Response(MemberSerializer(member).data, status=status.HTTP_201_CREATED)
def create(self, request, **kwargs): serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) username = serializer.data['user'].strip().lower() user = User.objects.get_or_create(username=username)[0] if not user: raise ValidationError(detail=_('User %(user)s not found') % {'user': serializer.data['user']}) date = serializer.validated_data['date_worked'] wallet = VoucherWallet.objects.get_or_create( user=user, semester=get_semester_of_date(date))[0] worklog = WorkLog(wallet=wallet, date_worked=serializer.data['date_worked'], work_group=serializer.data['work_group'], hours=Decimal(serializer.data['hours']), issuing_user=request.user, comment=serializer.data['comment']) worklog.clean() worklog.save() return Response(WorkLogSerializer(worklog, context={ 'request': self.request }).data, status=status.HTTP_201_CREATED)
def create(self, request, **kwargs): serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) card_uid = serializer.data['card'].strip().lower() card = NfcCard.objects.get_or_create(card_uid=card_uid)[0] if not card: raise ValidationError(detail=_('Card %(card)s not found') % {'card': serializer.data['card_uid']}) wallet = CoffeeWallet.objects.get_or_create( card=card, semester=get_semester_of_date(datetime.now().date()))[0] registerlog = CoffeeRegisterLog(wallet=wallet, vouchers=Decimal( serializer.data['vouchers']), issuing_user=request.user, comment=serializer.data['comment']) registerlog.clean() registerlog.save() return Response(RegisterLogSerializer(registerlog, context={ 'request': self.request }).data, status=status.HTTP_201_CREATED)
def test_voucher_balance(self): user = User.objects.get(username="******") semester = get_semester_of_date(date(year=2016, month=7, day=10)) wallet = VoucherWallet.objects.get(user=user, semester=semester) self.assertEqual( wallet.cached_balance, 2.5, "Cached balance of voucher wallet is 2.5" )
def test_coffee_balance(self): card = NfcCard.objects.get(card_uid="3b2be5a2") semester = get_semester_of_date(date(year=2016, month=7, day=10)) wallet = CoffeeWallet.objects.get(card=card, semester=semester) self.assertEqual( wallet.cached_balance, 4, "Cached balance of coffee wallet is 4" )
def get_valid_semesters(): semesters = [] now = datetime.datetime.now() if now.month == 7 or now.month == 8 or now.month == 1: semesters.append(get_semester(-1)) # Corona-exception in 2020. if now.year == 2020 and now.month == 9: semesters.append(get_semester(-1)) # Corona-exception in 2021 if now.year == 2021 and now.month in [6, 7]: semesters.append(get_semester_of_date(datetime.date(2020, 12, 1))) semesters.append(get_semester()) return semesters
def update(self, instance, validated_data): if 'hours' in validated_data and validated_data['hours'] != instance.hours and \ ('vouchers' not in validated_data or validated_data['vouchers'] == instance.vouchers): instance.vouchers = instance.calculate_vouchers( validated_data['hours']) validated_data.pop('vouchers', None) if 'date_worked' in validated_data: date = validated_data['date_worked'] wallet = VoucherWallet.objects.get_or_create( user=instance.wallet.user, semester=get_semester_of_date(date))[0] instance.wallet = wallet return super().update(instance, validated_data)
def update(self, instance, validated_data): if ("hours" in validated_data and validated_data["hours"] != instance.hours and ("vouchers" not in validated_data or validated_data["vouchers"] == instance.vouchers)): instance.vouchers = instance.calculate_vouchers( validated_data["hours"]) validated_data.pop("vouchers", None) if "date_worked" in validated_data: date = validated_data["date_worked"] wallet = VoucherWallet.objects.get_or_create( user=instance.wallet.user, semester=get_semester_of_date(date))[0] instance.wallet = wallet return super().update(instance, validated_data)
def filter_valid(self, queryset, name, value): return queryset.filter( Q(semester=get_semester_of_date(datetime.datetime.now())) | Q(lifetime=True) | Q(honorary=True))
def filter_valid(self, queryset, name, value): return queryset.filter(Q(semester=get_semester_of_date(datetime.datetime.now())) | Q(lifetime=True) | Q(honorary=True))
def update(self, instance, validated_data): if 'hours' in validated_data and validated_data['hours'] != instance.hours and \ ('vouchers' not in validated_data or validated_data['vouchers'] == instance.vouchers): instance.vouchers = instance.calculate_vouchers(validated_data['hours']) validated_data.pop('vouchers', None) if 'date_worked' in validated_data: date = validated_data['date_worked'] wallet = VoucherWallet.objects.get_or_create(user=instance.wallet.user, semester=get_semester_of_date(date))[0] instance.wallet = wallet return super().update(instance, validated_data)