mirror of
https://github.com/spiral-project/ihatemoney.git
synced 2025-04-28 17:32:38 +02:00
Reformat code with black and isort
This commit is contained in:
parent
7466871d34
commit
f0921398fd
5 changed files with 75 additions and 56 deletions
|
@ -364,7 +364,12 @@ class BillForm(FlaskForm):
|
|||
payed_for = SelectMultipleField(
|
||||
_("For whom?"), validators=[DataRequired()], coerce=int
|
||||
)
|
||||
bill_type = SelectField(_("Bill Type"), choices=BillType.choices(), coerce=BillType, default=BillType.EXPENSE)
|
||||
bill_type = SelectField(
|
||||
_("Bill Type"),
|
||||
choices=BillType.choices(),
|
||||
coerce=BillType,
|
||||
default=BillType.EXPENSE,
|
||||
)
|
||||
submit = SubmitField(_("Submit"))
|
||||
submit2 = SubmitField(_("Submit and add a new one"))
|
||||
|
||||
|
|
|
@ -19,7 +19,10 @@ def upgrade():
|
|||
billtype_enum = sa.Enum(BillType)
|
||||
billtype_enum.create(op.get_bind(), checkfirst=True)
|
||||
|
||||
op.add_column("bill", sa.Column("bill_type", billtype_enum, server_default=BillType.EXPENSE.name))
|
||||
op.add_column(
|
||||
"bill",
|
||||
sa.Column("bill_type", billtype_enum, server_default=BillType.EXPENSE.name),
|
||||
)
|
||||
op.add_column("bill_version", sa.Column("bill_type", sa.UnicodeText()))
|
||||
|
||||
|
||||
|
@ -28,4 +31,4 @@ def downgrade():
|
|||
op.drop_column("bill_version", "bill_type")
|
||||
|
||||
billtype_enum = sa.Enum(BillType)
|
||||
billtype_enum.drop(op.get_bind())
|
||||
billtype_enum.drop(op.get_bind())
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
from collections import defaultdict
|
||||
from enum import Enum
|
||||
import datetime
|
||||
from enum import Enum
|
||||
import itertools
|
||||
|
||||
from dateutil.parser import parse
|
||||
|
@ -22,7 +22,7 @@ from sqlalchemy_continuum.plugins import FlaskPlugin
|
|||
|
||||
from ihatemoney.currency_convertor import CurrencyConverter
|
||||
from ihatemoney.monkeypath_continuum import PatchedTransactionFactory
|
||||
from ihatemoney.utils import generate_password_hash, get_members, same_bill, FormEnum
|
||||
from ihatemoney.utils import generate_password_hash, get_members, same_bill
|
||||
from ihatemoney.versioning import (
|
||||
ConditionalVersioningManager,
|
||||
LoggingMode,
|
||||
|
@ -51,6 +51,7 @@ make_versioned(
|
|||
],
|
||||
)
|
||||
|
||||
|
||||
class BillType(Enum):
|
||||
EXPENSE = "Expense"
|
||||
REIMBURSEMENT = "Reimbursement"
|
||||
|
@ -131,7 +132,9 @@ class Project(db.Model):
|
|||
if bill.bill_type == BillType.EXPENSE:
|
||||
should_receive[bill.payer.id] += bill.converted_amount
|
||||
for ower in bill.owers:
|
||||
should_pay[ower.id] += (ower.weight * bill.converted_amount / total_weight)
|
||||
should_pay[ower.id] += (
|
||||
ower.weight * bill.converted_amount / total_weight
|
||||
)
|
||||
|
||||
if bill.bill_type == BillType.REIMBURSEMENT:
|
||||
should_receive[bill.payer.id] += bill.converted_amount
|
||||
|
@ -563,7 +566,7 @@ class Project(db.Model):
|
|||
("Alice", 20, ("Amina", "Alice"), "Beer !", "Expense"),
|
||||
("Amina", 50, ("Amina", "Alice", "Georg"), "AMAP", "Expense"),
|
||||
)
|
||||
for (payer, amount, owers, what, bill_type) in operations:
|
||||
for payer, amount, owers, what, bill_type in operations:
|
||||
db.session.add(
|
||||
Bill(
|
||||
amount=amount,
|
||||
|
|
|
@ -1017,7 +1017,6 @@ class TestAPI(IhatemoneyTestCase):
|
|||
def test_validate_bill_type(self):
|
||||
self.api_create("raclette")
|
||||
self.api_add_member("raclette", "zorglub")
|
||||
|
||||
|
||||
req = self.client.post(
|
||||
"/api/projects/raclette/bills",
|
||||
|
@ -1029,7 +1028,7 @@ class TestAPI(IhatemoneyTestCase):
|
|||
"bill_type": "wrong_bill_type",
|
||||
"amount": "50",
|
||||
},
|
||||
headers=self.get_auth("raclette")
|
||||
headers=self.get_auth("raclette"),
|
||||
)
|
||||
|
||||
self.assertStatus(400, req)
|
||||
|
@ -1044,7 +1043,7 @@ class TestAPI(IhatemoneyTestCase):
|
|||
"bill_type": "Expense",
|
||||
"amount": "50",
|
||||
},
|
||||
headers=self.get_auth("raclette")
|
||||
headers=self.get_auth("raclette"),
|
||||
)
|
||||
|
||||
self.assertStatus(201, req)
|
||||
|
@ -1063,7 +1062,7 @@ class TestAPI(IhatemoneyTestCase):
|
|||
"payed_for": ["1"],
|
||||
"amount": "50",
|
||||
},
|
||||
headers=self.get_auth("raclette")
|
||||
headers=self.get_auth("raclette"),
|
||||
)
|
||||
|
||||
self.assertStatus(201, req)
|
||||
|
@ -1076,4 +1075,3 @@ class TestAPI(IhatemoneyTestCase):
|
|||
# Bill type should now be "Expense"
|
||||
got = json.loads(req.data.decode("utf-8"))
|
||||
assert got["bill_type"] == "Expense"
|
||||
|
||||
|
|
|
@ -716,8 +716,8 @@ class TestBudget(IhatemoneyTestCase):
|
|||
"amount": "17",
|
||||
},
|
||||
)
|
||||
|
||||
#transfer bill should not affect balances at all
|
||||
|
||||
# transfer bill should not affect balances at all
|
||||
self.client.post(
|
||||
"/raclette/add",
|
||||
data={
|
||||
|
@ -801,22 +801,22 @@ class TestBudget(IhatemoneyTestCase):
|
|||
self.client.post("/rent/members/add", data={"name": "alice"})
|
||||
|
||||
members_ids = [m.id for m in self.get_project("rent").members]
|
||||
# create a bill to test reimbursement
|
||||
# create a bill to test reimbursement
|
||||
self.client.post(
|
||||
"/rent/add",
|
||||
data={
|
||||
"date": "2022-12-12",
|
||||
"what": "december rent",
|
||||
"payer": members_ids[0], #bob
|
||||
"payed_for": members_ids, #bob and alice
|
||||
"payer": members_ids[0], # bob
|
||||
"payed_for": members_ids, # bob and alice
|
||||
"bill_type": "Expense",
|
||||
"amount": "1000",
|
||||
},
|
||||
)
|
||||
#check balance
|
||||
# check balance
|
||||
balance = self.get_project("rent").balance
|
||||
assert set(balance.values()), set([500 == -500])
|
||||
#check paid
|
||||
# check paid
|
||||
bob_paid = self.get_project("rent").full_balance[2][members_ids[0]]
|
||||
alice_paid = self.get_project("rent").full_balance[2][members_ids[1]]
|
||||
assert bob_paid == 1000
|
||||
|
@ -828,8 +828,8 @@ class TestBudget(IhatemoneyTestCase):
|
|||
data={
|
||||
"date": "2022-12-13",
|
||||
"what": "reimbursement for rent",
|
||||
"payer": members_ids[1], #alice
|
||||
"payed_for": members_ids[0], #bob
|
||||
"payer": members_ids[1], # alice
|
||||
"payed_for": members_ids[0], # bob
|
||||
"bill_type": "Reimbursement",
|
||||
"amount": "500",
|
||||
},
|
||||
|
@ -837,11 +837,12 @@ class TestBudget(IhatemoneyTestCase):
|
|||
|
||||
balance = self.get_project("rent").balance
|
||||
assert set(balance.values()), set([0 == 0])
|
||||
#check paid
|
||||
# check paid
|
||||
bob_paid = self.get_project("rent").full_balance[2][members_ids[0]]
|
||||
alice_paid = self.get_project("rent").full_balance[2][members_ids[1]]
|
||||
assert bob_paid == 500
|
||||
assert alice_paid == 500
|
||||
|
||||
def test_transfer_bill(self):
|
||||
self.post_project("random")
|
||||
|
||||
|
@ -855,8 +856,8 @@ class TestBudget(IhatemoneyTestCase):
|
|||
data={
|
||||
"date": "2022-10-10",
|
||||
"what": "Rent",
|
||||
"payer": members_ids[0], #zorglub
|
||||
"payed_for": members_ids, #zorglub + fred
|
||||
"payer": members_ids[0], # zorglub
|
||||
"payed_for": members_ids, # zorglub + fred
|
||||
"bill_type": "Expense",
|
||||
"amount": "1000",
|
||||
},
|
||||
|
@ -867,8 +868,8 @@ class TestBudget(IhatemoneyTestCase):
|
|||
data={
|
||||
"date": "2022-10-10",
|
||||
"what": "Transfer of 500 to fred",
|
||||
"payer": members_ids[0], #zorglub
|
||||
"payed_for": members_ids[1], #fred
|
||||
"payer": members_ids[0], # zorglub
|
||||
"payed_for": members_ids[1], # fred
|
||||
"bill_type": "Transfer",
|
||||
"amount": "500",
|
||||
},
|
||||
|
@ -884,22 +885,22 @@ class TestBudget(IhatemoneyTestCase):
|
|||
self.client.post("/rent/members/add", data={"name": "alice"})
|
||||
|
||||
members_ids = [m.id for m in self.get_project("rent").members]
|
||||
# create a bill to test reimbursement
|
||||
# create a bill to test reimbursement
|
||||
self.client.post(
|
||||
"/rent/add",
|
||||
data={
|
||||
"date": "2022-12-12",
|
||||
"what": "december rent",
|
||||
"payer": members_ids[0], #bob
|
||||
"payed_for": members_ids, #bob and alice
|
||||
"payer": members_ids[0], # bob
|
||||
"payed_for": members_ids, # bob and alice
|
||||
"bill_type": "Expense",
|
||||
"amount": "1000",
|
||||
},
|
||||
)
|
||||
#check balance
|
||||
# check balance
|
||||
balance = self.get_project("rent").balance
|
||||
assert set(balance.values()), set([500 == -500])
|
||||
#check paid
|
||||
# check paid
|
||||
bob_paid = self.get_project("rent").full_balance[2][members_ids[0]]
|
||||
alice_paid = self.get_project("rent").full_balance[2][members_ids[1]]
|
||||
assert bob_paid == 1000
|
||||
|
@ -911,8 +912,8 @@ class TestBudget(IhatemoneyTestCase):
|
|||
data={
|
||||
"date": "2022-12-13",
|
||||
"what": "reimbursement for rent",
|
||||
"payer": members_ids[1], #alice
|
||||
"payed_for": members_ids[0], #bob
|
||||
"payer": members_ids[1], # alice
|
||||
"payed_for": members_ids[0], # bob
|
||||
"bill_type": "Reimbursement",
|
||||
"amount": "500",
|
||||
},
|
||||
|
@ -920,11 +921,12 @@ class TestBudget(IhatemoneyTestCase):
|
|||
|
||||
balance = self.get_project("rent").balance
|
||||
assert set(balance.values()), set([0 == 0])
|
||||
#check paid
|
||||
# check paid
|
||||
bob_paid = self.get_project("rent").full_balance[2][members_ids[0]]
|
||||
alice_paid = self.get_project("rent").full_balance[2][members_ids[1]]
|
||||
assert bob_paid == 500
|
||||
assert alice_paid == 500
|
||||
|
||||
def test_transfer_bill(self):
|
||||
self.post_project("random")
|
||||
|
||||
|
@ -938,8 +940,8 @@ class TestBudget(IhatemoneyTestCase):
|
|||
data={
|
||||
"date": "2022-10-10",
|
||||
"what": "Rent",
|
||||
"payer": members_ids[0], #zorglub
|
||||
"payed_for": members_ids, #zorglub + fred
|
||||
"payer": members_ids[0], # zorglub
|
||||
"payed_for": members_ids, # zorglub + fred
|
||||
"bill_type": "Expense",
|
||||
"amount": "1000",
|
||||
},
|
||||
|
@ -950,8 +952,8 @@ class TestBudget(IhatemoneyTestCase):
|
|||
data={
|
||||
"date": "2022-10-10",
|
||||
"what": "Transfer of 500 to fred",
|
||||
"payer": members_ids[0], #zorglub
|
||||
"payed_for": members_ids[1], #fred
|
||||
"payer": members_ids[0], # zorglub
|
||||
"payed_for": members_ids[1], # fred
|
||||
"bill_type": "Transfer",
|
||||
"amount": "500",
|
||||
},
|
||||
|
@ -1433,7 +1435,7 @@ class TestBudget(IhatemoneyTestCase):
|
|||
for m, a in members.items():
|
||||
assert abs(a - balance[m.id]) < 0.01
|
||||
return
|
||||
|
||||
|
||||
def test_settle_button(self):
|
||||
self.post_project("raclette")
|
||||
|
||||
|
@ -1482,16 +1484,24 @@ class TestBudget(IhatemoneyTestCase):
|
|||
)
|
||||
project = self.get_project("raclette")
|
||||
transactions = project.get_transactions_to_settle_bill()
|
||||
|
||||
|
||||
count = 0
|
||||
for t in transactions:
|
||||
count+=1
|
||||
self.client.get("/raclette/settle"+"/"+str(t["amount"])+"/"+str(t["ower"].id)+"/"+str(t["receiver"].id))
|
||||
count += 1
|
||||
self.client.get(
|
||||
"/raclette/settle"
|
||||
+ "/"
|
||||
+ str(t["amount"])
|
||||
+ "/"
|
||||
+ str(t["ower"].id)
|
||||
+ "/"
|
||||
+ str(t["receiver"].id)
|
||||
)
|
||||
temp_transactions = project.get_transactions_to_settle_bill()
|
||||
#test if the one has disappeared
|
||||
assert len(temp_transactions) == len(transactions)-count
|
||||
|
||||
#test if theres a new one with bill_type reimbursement
|
||||
# test if the one has disappeared
|
||||
assert len(temp_transactions) == len(transactions) - count
|
||||
|
||||
# test if theres a new one with bill_type reimbursement
|
||||
bill = project.get_newest_bill()
|
||||
assert bill.bill_type == models.BillType.REIMBURSEMENT
|
||||
return
|
||||
|
@ -2005,7 +2015,7 @@ class TestBudget(IhatemoneyTestCase):
|
|||
"payed_for": [1, 2, 3],
|
||||
"amount": "12",
|
||||
"original_currency": "EUR",
|
||||
"bill_type": "Expense"
|
||||
"bill_type": "Expense",
|
||||
},
|
||||
)
|
||||
self.client.post(
|
||||
|
@ -2017,7 +2027,7 @@ class TestBudget(IhatemoneyTestCase):
|
|||
"payed_for": [1, 2],
|
||||
"amount": "15",
|
||||
"original_currency": "EUR",
|
||||
"bill_type": "Expense"
|
||||
"bill_type": "Expense",
|
||||
},
|
||||
)
|
||||
self.client.post(
|
||||
|
@ -2029,7 +2039,7 @@ class TestBudget(IhatemoneyTestCase):
|
|||
"payed_for": [1, 2],
|
||||
"amount": "10",
|
||||
"original_currency": "EUR",
|
||||
"bill_type": "Expense"
|
||||
"bill_type": "Expense",
|
||||
},
|
||||
)
|
||||
|
||||
|
@ -2092,7 +2102,7 @@ class TestBudget(IhatemoneyTestCase):
|
|||
"payed_for": [1, 2, 3],
|
||||
"amount": "12",
|
||||
"original_currency": "EUR",
|
||||
"bill_type": "Expense"
|
||||
"bill_type": "Expense",
|
||||
},
|
||||
)
|
||||
self.client.post(
|
||||
|
@ -2104,7 +2114,7 @@ class TestBudget(IhatemoneyTestCase):
|
|||
"payed_for": [1, 2],
|
||||
"amount": "15",
|
||||
"original_currency": "EUR",
|
||||
"bill_type": "Expense"
|
||||
"bill_type": "Expense",
|
||||
},
|
||||
)
|
||||
self.client.post(
|
||||
|
@ -2116,7 +2126,7 @@ class TestBudget(IhatemoneyTestCase):
|
|||
"payed_for": [1, 2],
|
||||
"amount": "10",
|
||||
"original_currency": "EUR",
|
||||
"bill_type": "Expense"
|
||||
"bill_type": "Expense",
|
||||
},
|
||||
)
|
||||
|
||||
|
@ -2195,7 +2205,7 @@ class TestBudget(IhatemoneyTestCase):
|
|||
"payed_for": [1],
|
||||
"amount": "12",
|
||||
"original_currency": "XXX",
|
||||
"bill_type": "Expense"
|
||||
"bill_type": "Expense",
|
||||
},
|
||||
follow_redirects=True,
|
||||
)
|
||||
|
@ -2364,7 +2374,7 @@ class TestBudget(IhatemoneyTestCase):
|
|||
"payer": members_ids[1],
|
||||
"payed_for": members_ids,
|
||||
"amount": "25",
|
||||
"bill_type": "Expense"
|
||||
"bill_type": "Expense",
|
||||
},
|
||||
)
|
||||
|
||||
|
@ -2382,7 +2392,7 @@ class TestBudget(IhatemoneyTestCase):
|
|||
"payer": members_ids_tartif[2],
|
||||
"payed_for": members_ids_tartif,
|
||||
"amount": "24",
|
||||
"bill_type": "Expense"
|
||||
"bill_type": "Expense",
|
||||
},
|
||||
)
|
||||
|
||||
|
@ -2417,7 +2427,7 @@ class TestBudget(IhatemoneyTestCase):
|
|||
"payer": members_ids[1],
|
||||
"payed_for": members_ids[1:],
|
||||
"amount": "25",
|
||||
"bill_type": "Expense"
|
||||
"bill_type": "Expense",
|
||||
},
|
||||
)
|
||||
|
||||
|
|
Loading…
Reference in a new issue