示例#1
0
def db_with_expenses(db):

    db.session.query(Expense).delete()

    for i in range(15):
        exp = Expense(user_id=1,
                      description=('Item ' + str(i + 1)),
                      date=datetime.date(2021, 1, i + 1),
                      mode_id=random.choice([1, 2]))
        exp.amount = random.randrange(100, 1000)
        db.session.add(exp)

    exp_user2 = Expense(user_id=2,
                        description='Item user2',
                        date=datetime.date(2021, 2, 1),
                        mode_id=1)
    exp_user2.amount = 100
    db.session.add(exp_user2)
    db.session.commit()

    yield

    db.session.query(Expense).delete()
    db.session.commit()

    # remove session else sqlalchemy warning may appear.
    db.session.close()
示例#2
0
def db_with_related_expenses(db):
    '''An expense can be related to a budget entry either by foreign
    key or by same description.
    '''

    db.session.query(Expense).delete()
    db.session.query(Budget).delete()

    budget_entry = Budget(user_id=1, item='Budget item 1', estimate=5000)
    related_expenses = []
    dates = [datetime.date(2020, 10, 20), datetime.date(2021, 2, 5)]
    amount = 1000
    for i in range(2):
        exp = Expense(user_id=1,
                      description='Related expense',
                      date=dates[i],
                      mode_id=1)
        amount += 1000
        exp.amount = amount
        related_expenses.append(exp)
    budget_entry.expenses = related_expenses

    db.session.add(budget_entry)

    related_expense = Expense(user_id=1,
                              description='Budget item 1',
                              date=datetime.date(2021, 3, 2),
                              mode_id=1)
    related_expense.amount = 500
    db.session.add(related_expense)

    # other expenses
    for i in range(5):
        exp = Expense(user_id=1,
                      description=('Item ' + str(i + 1)),
                      date=datetime.date(2021, 2, i + 1),
                      mode_id=1)
        exp.amount = 100
        db.session.add(exp)

    db.session.commit()

    yield

    db.session.query(Expense).delete()
    db.session.query(Budget).delete()
    db.session.commit()
    db.session.close()
示例#3
0
文件: routes.py 项目: deb17/moneycare
def create():

    form = ExpenseForm()
    modes = PaymentMode.query.filter_by(user_id=current_user.id)
    form.pay_mode.choices = [('', 'Choose one')] + [(m.id, m.mode)
                                                    for m in modes]
    estimates = Budget.query.filter(Budget.user_id == current_user.id,
                                    Budget.active.is_(True))
    form.estimate_entry.choices = [('', 'Choose one')] + [(e.id, e.item)
                                                          for e in estimates]

    if form.validate_on_submit():
        e = Expense()
        e.user_id = current_user.id
        e.description = form.description.data
        e.date = form.date.data
        e.amount = form.amount.data
        e.mode_id = int(form.pay_mode.data)
        e.budget_id = (int(form.estimate_entry.data)
                       if form.estimate_entry.data else None)
        e.comments = form.comments.data
        e.set_tags(form.taglist.data)
        db.session.add(e)
        db.session.commit()
        flash('New expense created.', 'success')
        if request.form.get('submit2') == 'Save and add another':
            return redirect(url_for('expense.create'))
        return redirect(url_for('expense.list_expenses'))

    return render_template('expense/new.html',
                           title='New expense',
                           form=form,
                           heading='Create new expense')
示例#4
0
def db_with_books(db_with_expenses):

    book1 = Expense(user_id=1,
                    description='Flask cookbook',
                    date=datetime.date(2021, 2, 1),
                    mode_id=1)
    book1.amount = 1200

    book2 = Expense(user_id=1,
                    description='Rest api',
                    comments='Book on Rest api.',
                    date=datetime.date(2021, 2, 10),
                    mode_id=2)
    book2.amount = 1500
    _db.session.add_all([book1, book2])
    _db.session.commit()
    _db.session.close()
示例#5
0
def db_with_expense_tags(db):

    db.session.query(Expense).delete()
    db.session.query(Tag).delete()

    tag1 = Tag(tagname='tag1', user_id=1)
    tag2 = Tag(tagname='tag2', user_id=1)
    tag3 = Tag(tagname='tag3', user_id=1)

    for i in range(2):
        exp = Expense(user_id=1,
                      description=('Item ' + str(i + 1)),
                      date=datetime.date(2021, 1, i + 1),
                      mode_id=1,
                      tags=[tag1])
        exp.amount = 150
        db.session.add(exp)

    exp = Expense(user_id=1,
                  description='Item 3',
                  date=datetime.date(2021, 1, 3),
                  mode_id=1,
                  tags=[tag1, tag2, tag3])
    exp.amount = 200
    db.session.add(exp)

    for i in range(4, 6):
        exp = Expense(user_id=1,
                      description=('Item ' + str(i)),
                      date=datetime.date(2021, 1, i),
                      mode_id=1,
                      tags=[tag2])
        exp.amount = 250
        db.session.add(exp)

    db.session.commit()

    yield

    db.session.query(Expense).delete()
    db.session.query(Tag).delete()
    db.session.commit()
    db.session.close()
示例#6
0
    def post(self, new_data):
        '''Create new expense.'''

        amount = new_data.pop('amount')
        user_id = get_jwt_identity()
        expense.current_user = User.query.get(user_id)
        exp = Expense(**new_data)
        exp.amount = amount
        exp.user_id = user_id

        db.session.add(exp)
        db.session.commit()

        return exp
示例#7
0
def db_with_expense_amounts(db):

    expense.current_user = User.query.get(1)
    db.session.query(Expense).delete()
    amts = [150, 200, 300, 350, 400]

    for i in range(5):
        exp = Expense(user_id=1,
                      description=('Item ' + str(i + 1)),
                      date=datetime.date(2021, 1, i + 1),
                      mode_id=1)
        exp.amount = amts[i]
        db.session.add(exp)

    db.session.commit()

    yield

    db.session.query(Expense).delete()
    db.session.commit()
    db.session.close()
示例#8
0
def db_with_months_data(db):

    db.session.query(Expense).delete()

    k = 0
    for i in range(3):
        for j in range(5):
            k += 1
            exp = Expense(user_id=1,
                          description=('Item ' + str(k)),
                          date=datetime.date(2021, i + 1, j + 1),
                          mode_id=1)
            exp.amount = 100
            db.session.add(exp)

    db.session.commit()

    yield

    db.session.query(Expense).delete()
    db.session.commit()
    db.session.close()
示例#9
0
def db_with_budget_expenses(db):

    db.session.query(Expense).delete()
    db.session.query(Budget).delete()

    desc = ['Item 1'] * 3 + ['Item 2'] * 2
    amount = 1000
    for i in range(5):
        exp = Expense(user_id=1,
                      description=desc[i],
                      date=datetime.date(2021, 2, i + 1),
                      mode_id=1)
        exp.amount = amount
        amount += 1000
        db.session.add(exp)

    db.session.commit()

    yield

    db.session.query(Expense).delete()
    db.session.query(Budget).delete()
    db.session.commit()
    db.session.close()