k4ever/k4ever/transaction/forms.py

56 lines
1.8 KiB
Python

# -*- coding: utf-8 -*-
# This file is part of k4ever, a point-of-sale system
# Contact............ <k4ever@lists.someserver.de>
# Website............ http://k4ever.someserver.de/
# Bug tracker........ http://k4ever.someserver.de/report
#
# Licensed under GNU Affero General Public License v3 or later
from django import forms
from django.contrib.auth.models import User
from django.core.exceptions import ValidationError
from main.fields import CurrencyField
from transaction.models import Transaction, VirtualTransaction
class TransactionForm(forms.ModelForm):
""" ModelForm for :class:`Transactions <Transaction>` with a currency field. """
amount = CurrencyField(label='Betrag')
class Meta:
model = Transaction
exclude = ('user', 'dateTime', 'checked')
def clean(self):
# needed to enforce TransactionTypes needsCheck "default value"
cleaned_data = super(TransactionForm, self).clean()
if "transactionType" in cleaned_data:
self.instance.checked = not cleaned_data['transactionType'].needsCheck
return cleaned_data
class VirtualTransactionForm(forms.ModelForm):
""" ModelForm for :class:`Virtual Transactions <VirtualTransaction>` with a
currency field. """
recipient = forms.CharField(max_length=100)
amount = CurrencyField(label='Betrag')
class Meta:
model = VirtualTransaction
exclude = ('user', 'dateTime')
def clean_recipient(self):
""" Checks for existance of the recipient and it is different from the
user issueing this transaction. """
try:
user = User.objects.get(username=self.cleaned_data['recipient'])
except User.DoesNotExist:
raise ValidationError(u"Emfpänger '%s' konnte nicht gefunden werden"\
% self.cleaned_data['recipient'])
if user == self.instance.user:
raise ValidationError(u"Emfpänger '%s' bist du selbst"\
% self.cleaned_data['recipient'])
return user