def taps(request): taptypes = TapType.objects.filter(active=True).all() taptypes = taptypes.extra( select={'price_is_null': 'price IS NULL'}, order_by=['price_is_null', 'name'] ) users = my_custom_sql() if request.method == 'POST': try: user_id = int(request.POST['userid']) except: messages.error(request, "Invalid user id") return redirect('tapmanager:taps') if Tap.objects.filter( maker=request.user, user=user_id, date__gt=timezone.now() - datetime.timedelta(seconds=10)).count() > 0: messages.error(request, "Too frequent, wait 10s") return redirect('tapmanager:taps') # Checkataan kaikki taptypet, fiksuin tapa mita keksin added_funds = False for taptype in taptypes: amount = request.POST["type-" + str(taptype.id)] # Cheking that we can convert amount to decimal if amount: try: amount = decimal.Decimal(float(amount)) except: messages.error( request, 'Invalid value in "' + taptype.name + '", didnt add that.') amount = None # Jos amountti loyty ja on oikeessa muodossa if amount and amount <= 0: messages.error( request, 'Amount <= 0 in "' + taptype.name + '", didint add that.') elif amount: user = get_object_or_404(User, pk=user_id) t = Tap( user=user, maker=request.user, taptype=taptype, amount=amount, active=True) t.save() added_funds = True if added_funds: messages.success(request, "Addeds funds succesfully") else: messages.error(request, "Nothing added") return redirect('tapmanager:taps') return render( request, "tapmanager/taps.html", {'users': users, 'taptypes': taptypes, 'messages': messages.get_messages(request)})
def tapadmin(request): form = AdminForm(request.POST or None) if request.POST and form.is_valid(): amount = form.cleaned_data['amount'] maker = request.user user = form.cleaned_data['users'] t = Tap( taptype=None, user=user, maker=maker, active=True, amount=-amount) t.save() return redirect("tapmanager:tapadmin") return render(request, "tapmanager/admin.html", {'form': form})