১৪.৩ : ডিপোজিট , উইথড্র , লোন রিকোয়েস্ট ফর্ম তৈরী

আজকে আমরা আমাদের ডিপোজিট, উইথড্র, লোন রিকোয়েস্ট ফরম এর কাজ করবো।

ফার্স্ট এ আসো ডিপোজিট ফরম

এখানে একজন ইউজার মিনিমাম ১০০ ডলার বা টাকা উইথড্র করতে পারবে, এর কম পারবে না। আর যদি সে এর কম ডিপোজিট করতে চায় তাকে একটা এরর দিবো যে ১০০ টাকার কম ডিপোজিট করতে পারবে না। এখানে একটা বিষয় মাথায় রাখবে যে, amount এর ভ্যালু দিয়েই কিন্তু আমরা চেক করতেছি সেটা মিনিমাম থেকে কম কিনা সেজন্যে clean_amount এই ফাংশন লিখে তার মধ্যে কাজ করছি। এখন যদি অন্য কোনো ভ্যালু নিয়ে কাজ করতাম তাইলে কি করতাম?? clean_seivaluename । বুঝতে পারছো তো?

class DepositForm(TransactionForm):
    def clean_amount(self): # amount field ke filter korbo
        min_deposit_amount = 100
        amount = self.cleaned_data.get('amount') # user er fill up kora form theke amra amount field er value ke niye aslam, 50
        if amount < min_deposit_amount:
            raise forms.ValidationError(
                f'You need to deposit at least {min_deposit_amount} $'
            )

        return amount

উইথড্র ফরম:

এখন আসো উইথড্র ফরম নিয়ে কাজ করি। খেয়াল করে দেখো যে এখানেও কিন্তু সেই amount নিয়েই কাজ আমাদের তাই clean_amount নিয়ে কাজ করবো । ইউজার মিনিমাম ৫০০ টাকা উইথড্র করতে পারবে আর ম্যাক্সিমাম ২০,০০০ টাকা। এর কম বা বেশি হলেই ভ্যালিডেশন এরর দিবো ইউজার কে। আরেকটা বিষয়, ব্যালান্স এর থেকে বেশী টাকা কিন্তু ইউজার কে তুলতে দেওয়া যাবে না সেটাও খেয়াল রাখতে হবে।

class WithdrawForm(TransactionForm):

    def clean_amount(self):
        account = self.account
        min_withdraw_amount = 500
        max_withdraw_amount = 20000
        balance = account.balance # 1000
        amount = self.cleaned_data.get('amount')
        if amount < min_withdraw_amount:
            raise forms.ValidationError(
                f'You can withdraw at least {min_withdraw_amount} $'
            )

        if amount > max_withdraw_amount:
            raise forms.ValidationError(
                f'You can withdraw at most {max_withdraw_amount} $'
            )

        if amount > balance: # amount = 5000, tar balance ache 200
            raise forms.ValidationError(
                f'You have {balance} $ in your account. '
                'You can not withdraw more than your account balance'
            )

        return amount

লোন রিকোয়েস্ট :

এখানেও আমাদের amount নিয়েই কাজ তবে কোনো ভ্যালিডেশন আমরা দেই নাই এখানে, তুমি চাইলে দিতে পারো যে এর বেশি বা account ব্যালান্স এর ২ গুন এর বেশি টাকা কেউ লোন রিকোয়েস্ট করতে পারবে না।

class LoanRequestForm(TransactionForm):
    def clean_amount(self):
        amount = self.cleaned_data.get('amount')

        return amount

যেহেতু amount ভ্যালিডেট করতেছি , সেটা ভ্যালিডেট হবার পরই কিন্তু আমরা amount কে রিটার্ন করে দিলাম

Last updated