def remove(request, portfolio, is_sample, read_only, transaction_id): transaction = Transaction.objects.filter(id = transaction_id)[0] if transaction.portfolio.id == portfolio.id: transaction.delete() refresh_positions(portfolio, force = True) return redirect_to_portfolio_action('transactions', portfolio)
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)
def new_portfolio(request, user): form = PortfolioNameForm(request.POST) if not form.is_valid(): return redirect("/account.html") name = _get_effective_portfolio_name(user, form.cleaned_data.get('portfolioName').encode('UTF-8')) portfolio = create_portfolio(user, name) return redirect_to_portfolio_action('importTransactions', portfolio)
def request_import_type(request, portfolio, is_sample, read_only): form = RequestImportForm(request.POST, request.FILES) if not form.is_valid(): raise Exception('Bad file for request'); type = request.POST.get('type') uploaded_file = request.FILES['file'] body = "Request for import for type: %s\nRequest for portfolio: %s (%d)\nRequest made from:%s" % ( type, ('Demo' if is_sample else portfolio.name), portfolio.id, ('Demo user' if is_sample else portfolio.user.email) ) email = EmailMessage("Import type requested", body, "*****@*****.**", [ "*****@*****.**" ], [ ]) email.attach(uploaded_file.name, uploaded_file.read(), uploaded_file.content_type) email.send(fail_silently = False) return redirect_to_portfolio_action('importTransactions', portfolio, 'requestSent=true')
def remove_all(request, portfolio, is_sample, read_only): Transaction.objects.filter(portfolio__id__exact = portfolio.id).delete() refresh_positions(portfolio, force = True) return redirect_to_portfolio_action('importTransactions', portfolio)