Exemplo n.º 1
0
def edit_expense(expense_id):

    form = ExpenseForm(request.form)
    if request.method == 'POST':
        expense = Expense.objects.get(id=form.expense_id.data)
        if form.validate():
            if __get_expense_by_name(form.name.data, expense.id) != None:
                return render_template('views/expense_form.html', page_name='edit_expense', page_title='Edit Expense', expense=expense, categories=Category.objects(), error='An expense with that name already exists.')

            expense.name = form.name.data
            expense.category_id = form.category_id.data
            expense.amount = form.amount.data
            expense.date = form.date.data
            expense.save()

            return list_expenses(success='Updated expense "{}".'.format(form.name.data))
        else:
            return render_template('views/expense_form.html', page_name='edit_expense', page_title='Edit Expense', expense=expense, categories=Category.objects(), errors=parse_form_errors(form.errors.items()))

    expense = __get_expense(expense_id)

    if expense == None:
        return no_expense_found()

    return render_template('views/expense_form.html', page_name='edit_expense', page_title='Edit Expense', expense=expense, categories=Category.objects())
Exemplo n.º 2
0
def create_expense():
    form = ExpenseForm(request.form)
    if request.method == 'POST' and form.validate():
        email = session['email']
        user = User.query.filter_by(email=email).first()
        new_expense = Expense(form.item.data, form.quantity.data,
                              form.price.data)
        new_expense.owner = user
        db.session.add(new_expense)
        db.session.commit()
        return redirect(url_for('expense_list'))
    else:
        return render_template('Expense.html', form=form)
Exemplo n.º 3
0
def new(request):
    form = ExpenseForm(request.POST or None , initial = { 'year' : date.today().year , 'month' : date.today().month })
    
    type_id = 0
    if( request.POST ):
        type_id = int( request.POST.get('type') or 0 )
    form.fields['subtype'].queryset = ExpenseType.objects.filter( father_expense_type = type_id )
    if(form.is_valid()):
        expense = form.save(commit=False)
        expense.user = UserUtil.get_current_user()
        expense.year = expense.date_expense.year
        expense.month = expense.date_expense.month
        expense.save()
        return HttpResponseRedirect( "{}?month={}&year={}".format( reverse("search_expenses"),  expense.month , expense.year ) )
    return render(request ,"expenses/form.html" , { "form" : form } ) 
Exemplo n.º 4
0
def user_expenses():
    form = ExpenseForm()
    category_query = services.get_categories_query(current_user.id)
    form.category.query = category_query

    if form.validate_on_submit():
        # TODO: Insert expense here
        services.add_expense(name=form.name.data,
                             value=form.value.data,
                             category=form.category.data,
                             user=current_user)
        return redirect(url_for('register'))

    expenses = services.get_expenses_by_user(current_user.id)

    return render_template('expenses.html', expenses=expenses, form=form)
Exemplo n.º 5
0
    def _handler(self, post=False):
        user = users.get_current_user()
        if user:
            if post:
                form = ExpenseForm(user, data=self.request.POST)
                if form.is_valid():
                    transaction = form.save(commit=False)
                    transaction.user = user
                    transaction.put()
                    self.redirect(self.request.uri)
            else:
                form = ExpenseForm(user)

            start, end = get_start_end_range(self.request)
            account_key = self.request.get('account', None)
            filter_form = FilterForm(user)
            filter_form.fields['start'].initial = start
            filter_form.fields['end'].initial = end
            filter_form.fields['account'].initial = account_key

            expenses = Transaction.all()\
                .filter('user ='******'income =', False)\
                .filter('date >=', start)\
                .filter('date <=', end)

            if account_key:
                expenses = expenses.filter('account =', Account.get(account_key))

            expenses = expenses.order('-date').fetch(1000)

            prefetch_refprops(expenses, Transaction.account)

            path = os.path.join(os.path.dirname(__file__), 'templates/expenses.html')
            self.response.out.write(template.render(path, {
                'start': start,
                'end': end,
                'filter_form': filter_form,
                'expenses': expenses,
                'form': form,
                'user': user,
                'js_data': calc_expenses_js_data(expenses),
                'total': sum([expense.value for expense in expenses]),
                'logout_url': users.create_logout_url("/")
            }))
        else:
            self.redirect(users.create_login_url(self.request.uri))
Exemplo n.º 6
0
def edit(request , id):    
    user = UserUtil.get_current_user()
    obj = Expense.objects.get(pk=id, user = user )
    form = ExpenseForm(request.POST or None, instance = obj )
    
    type_id = obj.type.pk  
    if( request.POST ):
        type_id = int( request.POST.get('type') or 0 )
    
    form.fields['subtype'].queryset = ExpenseType.objects.filter( father_expense_type = type_id )
    if form.is_valid():
        expense = form.save(commit=False)
        expense.year = expense.date_expense.year
        expense.month = expense.date_expense.month
        form.save()
        return HttpResponseRedirect( "{}?month={}&year={}".format( reverse("search_expenses"),  expense.month , expense.year ) )
    return render(request ,"expenses/form.html" , { "form" : form } ) 
Exemplo n.º 7
0
def add_expense():
    user = g.user
    form = ExpenseForm()
    if form.validate_on_submit():
        expense = Expense(date=form.date.data,
                          description=form.description.data.strip(),
                          cost=''.join(i for i in form.cost.data.strip()
                                       if i.isdigit()),
                          merchant=form.merchant.data,
                          category=form.category.data,
                          creator=user)
        db.session.add(expense)
        db.session.commit()
        flash(
            "The Expense from: '{}' was added".format(form.merchant.data.name),
            'success')
        return redirect(url_for('dashboard'))
    return render_template('add_expense.html', user=user, form=form)
Exemplo n.º 8
0
def delete(request, id):
    if (request.POST):
        expense = Expense.objects.get(pk=id, user=UserUtil.get_current_user())
        expense.delete()
        return HttpResponseRedirect("{}?month={}&year={}".format(
            reverse("search_expenses"), expense.month, expense.year))
    else:
        form = ExpenseForm(instance=Expense.objects.get(
            pk=id, user=UserUtil.get_current_user()))
    return render(request, "expenses/delete.html", {"form": form})
Exemplo n.º 9
0
def add_expense():

    if len(Category.objects()) < 1:
        return list_expenses(error='You cannot create an expense until you create at least one category.')

    form = ExpenseForm(request.form)
    if request.method == 'POST':
        if form.validate(): 
            if __get_expense_by_name(form.name.data) != None:
                return render_template('views/expense_form.html', page_name='edit_expense', page_title='Edit Expense', categories=Category.objects(), error='An expense with that name already exists.')

            expense = Expense(name=form.name.data, category_id=form.category_id.data, amount=form.amount.data, date=form.date.data)
            expense.save()

            return list_expenses(success='Created new expense "{}".'.format(form.name.data))
        else:
            return render_template('views/expense_form.html', page_name='add_expense', page_title='Add Expense', categories=Category.objects(), errors=parse_form_errors(form.errors.items()))

    return render_template('views/expense_form.html', page_name='add_expense', page_title='Add Expense', categories=Category.objects())
Exemplo n.º 10
0
def expense_detail(id):

    form = ExpenseForm()
    category_query = services.get_categories_query(current_user.id)
    form.category.query = category_query

    if request.method == 'GET':
        expense = services.get_expense_by_id(id)
        form.name.data = expense.Expense.name
        form.value.data = expense.Expense.value
        form.category.data = expense.Category

    if form.validate_on_submit():
        services.update_expense(id=id,
                                name=form.name.data,
                                value=form.value.data,
                                category=form.category.data)
        return redirect(url_for('user_expenses'))

    return render_template('expenses_detail.html', form=form)
Exemplo n.º 11
0
def new(request):
    form = ExpenseForm(request.POST or None,
                       initial={
                           'year': date.today().year,
                           'month': date.today().month
                       })

    type_id = 0
    if (request.POST):
        type_id = int(request.POST.get('type') or 0)
    form.fields['subtype'].queryset = ExpenseType.objects.filter(
        father_expense_type=type_id)
    if (form.is_valid()):
        expense = form.save(commit=False)
        expense.user = UserUtil.get_current_user()
        expense.year = expense.date_expense.year
        expense.month = expense.date_expense.month
        expense.save()
        return HttpResponseRedirect("{}?month={}&year={}".format(
            reverse("search_expenses"), expense.month, expense.year))
    return render(request, "expenses/form.html", {"form": form})
Exemplo n.º 12
0
    def _handler(self, expense_key, post=False):
        user = users.get_current_user()

        if user:
            instance = Transaction.get(expense_key)
            if instance.user != user:
                self.redirect(users.create_login_url(self.request.uri))

            if post:
                form = ExpenseForm(user, instance=instance, data=self.request.POST)
                if form.is_valid():
                    form.save()
                    self.redirect("/despesas/")

            form = ExpenseForm(user, instance=instance)
            path = os.path.join(os.path.dirname(__file__), 'templates/expense.html')
            self.response.out.write(template.render(path, {
                'form': form,
                'user': user,
                'logout_url': users.create_logout_url("/")
            }))
        else:
            self.redirect(users.create_login_url(self.request.uri))
Exemplo n.º 13
0
def addAnExpense(request):
    from tuition.settings import SITE_SUPPORT_EMAIL
    from forms import ExpenseForm
    from tuition.utils.manager import AppManager

    form = ExpenseForm(
        initial={'dateOfExpense': datetime.date.today().strftime('%d/%m/%Y')})
    template_values = {
        'form':
        form,
        'loggedInEmployee':
        AppManager.getUserByEmail(AppManager.getCurrentLoggedInUser().email())
    }
    return render_to_response('newExpense.html',
                              template_values,
                              context_instance=RequestContext(request))
Exemplo n.º 14
0
def viewUserExpenses(request, userKey=None):
    from tuition.settings import SITE_SUPPORT_EMAIL
    from tuition.utils.manager import AppManager
    from models import Expenses
    from forms import ExpenseForm, ExpenseYearFilter
    from tuition.utils.appConstants import MONTH_NUM_FULL_NAME_DICT
    from tuition.utils.utils import ExportHandle, ExportClassHandle

    loggedInEmployee = AppManager.getUserByEmail(
        AppManager.getCurrentLoggedInUser().email())
    form = ExpenseForm(
        initial={'dateOfExpense': datetime.date.today().strftime('%d/%m/%Y')})
    template_values = {
        'loggedInEmployee': loggedInEmployee,
        'yearFilterForm': ExpenseYearFilter(),
        'monthNameDict': MONTH_NUM_FULL_NAME_DICT,
        'exportHandle': ExportHandle.asDict(),
        'classHandle': ExportClassHandle.asDict(),
        'form': form
    }
    return render_to_response('viewExpenses.html',
                              template_values,
                              context_instance=RequestContext(request))
Exemplo n.º 15
0
def edit(request, id):
    user = UserUtil.get_current_user()
    obj = Expense.objects.get(pk=id, user=user)
    form = ExpenseForm(request.POST or None, instance=obj)

    type_id = obj.type.pk
    if (request.POST):
        type_id = int(request.POST.get('type') or 0)

    form.fields['subtype'].queryset = ExpenseType.objects.filter(
        father_expense_type=type_id)
    if form.is_valid():
        expense = form.save(commit=False)
        expense.year = expense.date_expense.year
        expense.month = expense.date_expense.month
        form.save()
        return HttpResponseRedirect("{}?month={}&year={}".format(
            reverse("search_expenses"), expense.month, expense.year))
    return render(request, "expenses/form.html", {"form": form})
Exemplo n.º 16
0
 def get_form(self, form_class):
     return ExpenseForm(self.request.user.account.organisation,
                        **self.get_form_kwargs())