Пример #1
0
def account(request, key):
  template = loader.get_template('page_account_details.html')

  account = get_account(key)
  splits = filters.TransactionSplitFilter(account)

  all_accounts = Account.get_all()
  all_accounts.sort(key=lambda a: a.path)
  all_accounts_dict = {}
  for a in all_accounts:
    all_accounts_dict[a.guid] = {
      'path': a.path,
      'name': a.name
    }

  choices = forms.AccountChoices(account)

  filter_form = forms.FilterForm(choices, request.GET)
  if filter_form.is_valid():
    splits.filter_splits(filter_form.cleaned_data)

  splits.order_filtered_splits()

  modify_form_data = request.GET.copy()
  modify_form_data['save_rule'] = True
  modify_form = forms.ModifyForm(choices, modify_form_data, auto_id="modify_id_%s")

  try:
    page_num = int(request.GET.get('page'))
  except:
    page_num = 1

  pages = Paginator(splits.filtered_splits, settings.NUM_TRANSACTIONS_PER_PAGE)

  try:
    page = pages.page(page_num)
  except PageNotAnInteger:
    page = pages.page(1)
  except EmptyPage:
    page = pages.page(pages.num_pages)

  Transaction.cache_from_splits(page.object_list)

  c = RequestContext(request, {
    'any_filters_applied': splits.any_filters_applied,
    'one_opposing_account_filter_applied': splits.one_opposing_account_filter_applied,
    'regex_chars_js': json.dumps(filters.TransactionSplitFilter.REGEX_CHARS),
    'all_accounts': all_accounts,
    'accounts_js': json.dumps(all_accounts_dict),
    'current_account_js': json.dumps(account.guid),
    'num_transactions_js': json.dumps(page.paginator.count),
    'api_functions_js': json.dumps(api.function_urls.urls_dict),
    'account': account,
    'page': page,
    'filter_form': filter_form,
    'modify_form': modify_form,
  })
  return HttpResponse(template.render(c))
Пример #2
0
def index(request):
  template = loader.get_template('page_index.html')
  accounts = [Account.from_path(path) for path in settings.ACCOUNTS_LIST]

  all_accounts = Account.get_all()
  all_accounts.sort(key=lambda a: a.path)

  c = RequestContext(request, {
    'accounts': accounts,
    'all_accounts': all_accounts,
    'showing_index': True,
  })
  return HttpResponse(template.render(c))
Пример #3
0
def account(request, key):
  template = loader.get_template('page_account_details.html')

  accounts = misc_functions.get_accounts_by_webapp_key(key)
  splits = filters.TransactionSplitFilter(accounts)

  all_accounts = Account.get_all()
  all_accounts.sort(key=lambda a: a.path)
  all_accounts_dict = {}
  for a in all_accounts:
    all_accounts_dict[a.guid] = {
      'path': a.path,
      'name': a.name
    }

  choices = forms.AccountChoices(accounts)

  filter_form = forms.FilterForm(choices, request.GET)
  if filter_form.is_valid():
    splits.filter_splits(filter_form.cleaned_data)

  splits.order_filtered_splits()

  modify_form_data = request.GET.copy()
  modify_form_data['save_rule'] = True
  modify_form = forms.ModifyForm(choices, modify_form_data, auto_id="modify_id_%s")

  try:
    can_add_transactions = settings.ENABLE_ADD_TRANSACTIONS
  except AttributeError:
    can_add_transactions = False

  can_add_transactions = (can_add_transactions and len(accounts) == 1)

  if can_add_transactions:
    new_transaction_form = forms.NewTransactionForm(choices, auto_id='id_new_trans_%s')
  else:
    new_transaction_form = None

  try:
    page_num = int(request.GET.get('page'))
  except:
    page_num = 1

  pages = Paginator(splits.filtered_splits, settings.NUM_TRANSACTIONS_PER_PAGE)

  try:
    page = pages.page(page_num)
  except PageNotAnInteger:
    page = pages.page(1)
  except EmptyPage:
    page = pages.page(pages.num_pages)

  Transaction.cache_from_splits(page.object_list)

  current_accounts_key = misc_functions.accounts_webapp_key(accounts)

  c = RequestContext(request, {
    'any_filters_applied': splits.any_filters_applied,
    'one_opposing_account_filter_applied': splits.one_opposing_account_filter_applied,
    'query_params_js': json.dumps(request.GET),
    'regex_chars_js': json.dumps(filters.TransactionSplitFilter.REGEX_CHARS),
    'all_accounts': all_accounts,
    'accounts_js': json.dumps(all_accounts_dict),
    'current_accounts_js': json.dumps([a.guid for a in accounts]),
    'num_transactions_js': json.dumps(page.paginator.count),
    'api_functions_js': json.dumps(api.function_urls.urls_dict),
    'accounts': accounts,
    'current_accounts_key': current_accounts_key,
    'current_accounts_key_js': json.dumps(current_accounts_key),
    'can_add_transactions': can_add_transactions,
    'account': accounts[0],
    'page': page,
    'filter_form': filter_form,
    'modify_form': modify_form,
    'new_transaction_form': new_transaction_form,
    'total_balance': sum(a.balance for a in accounts),
  })
  return HttpResponse(template.render(c))