コード例 #1
0
ファイル: views.py プロジェクト: andlister/frano
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) 
コード例 #2
0
ファイル: views.py プロジェクト: andlister/frano
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)
コード例 #3
0
ファイル: views.py プロジェクト: andlister/frano
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)
コード例 #4
0
ファイル: views.py プロジェクト: andlister/frano
def update(request, portfolio, is_sample, read_only, transaction_id):
  transaction = Transaction.objects.filter(id = transaction_id)[0]
  success = False
  if transaction.portfolio.id == portfolio.id:
    form = UpdateTransactionForm(request.POST)
    if form.is_valid():
      current_commission = transaction.total - (transaction.price * transaction.quantity)
      
      type = form.get_if_present('type')
      if type != None and type != '':
        transaction.type = type.encode('UTF-8')
      
      as_of_date = form.get_if_present('date')
      if as_of_date != None:
        transaction.as_of_date = as_of_date
        
      symbol = form.get_if_present('symbol')
      if symbol != None and symbol != '':
        transaction.symbol = symbol.encode('UTF-8').upper()
        
      quantity = form.get_if_present('quantity')
      if quantity != None:
        transaction.quantity = quantity
        transaction.total = (transaction.price * transaction.quantity) + current_commission
      
      price = form.get_if_present('price')
      if price != None:
        transaction.price = price
        transaction.total = (transaction.price * transaction.quantity) + current_commission
      
      total = form.get_if_present('total')
      if total != None:
        transaction.total = total
        if transaction.symbol == CASH_SYMBOL:
          transaction.quantity = transaction.total
      
      linked_symbol = form.get_if_present('linkedsymbol')
      if linked_symbol != None:
        transaction.linked_symbol = (linked_symbol.encode('UTF-8').upper() if linked_symbol.strip() != '' else None)
      
      transaction.save()
      refresh_positions(portfolio, force = True)
      success = True
    
  return HttpResponse("{ \"success\": \"%s\" }" % success)
コード例 #5
0
ファイル: views.py プロジェクト: andlister/frano
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)