def add(request, portfolio, is_sample, read_only): form = TransactionForm(request.POST) if form.is_valid(): commission = form.cleaned_data.get('commission') if commission == None: commission = 0.0 type = form.cleaned_data.get('type').encode('UTF-8') symbol = form.cleaned_data.get('symbol').encode('UTF-8').upper() linked_symbol = None if type == 'ADJUST': linked_symbol = symbol if type in ['DEPOSIT', 'WITHDRAW', 'ADJUST']: symbol = CASH_SYMBOL if symbol != None and len(symbol) > 0: transaction = Transaction() transaction.portfolio = portfolio transaction.type = type transaction.as_of_date = form.cleaned_data.get('as_of_date') transaction.symbol = symbol transaction.quantity = form.cleaned_data.get('quantity') transaction.price = form.cleaned_data.get('price') transaction.total = (transaction.quantity * transaction.price) + commission transaction.linked_symbol = linked_symbol transaction.save() refresh_positions(portfolio, force = True) return redirect_to_portfolio_action('transactions', portfolio)
def process_import(request, portfolio, is_sample, read_only): formset = ImportTransactionFormSet(request.POST) if not formset.is_valid(): raise Exception('Invalid import set'); for form in formset.forms: cd = form.cleaned_data if not cd.get('exclude'): transaction = Transaction() transaction.portfolio = portfolio transaction.type = cd.get('type').encode('UTF-8') transaction.as_of_date = cd.get('as_of_date') transaction.symbol = cd.get('symbol').encode('UTF-8').upper() transaction.quantity = cd.get('quantity') transaction.price = cd.get('price') transaction.total = cd.get('total') linked_symbol = cd.get('linked_symbol').encode('UTF-8') if linked_symbol != None and linked_symbol != '': transaction.linked_symbol = linked_symbol transaction.save() refresh_positions(portfolio, force = True) return redirect_to_portfolio_action('transactions', portfolio)