mirror of
https://github.com/YunoHost-Apps/ihatemoney_ynh.git
synced 2024-09-03 19:26:15 +02:00
Last selected payer and translations. Fix #47.
- Last selected payer selected by default when creating a new bill - Fix some translation typos and modify a few labels
This commit is contained in:
parent
440ccb6e22
commit
1e0898dd87
7 changed files with 224 additions and 193 deletions
|
@ -13,6 +13,13 @@ def select_multi_checkbox(field, ul_class='', **kwargs):
|
||||||
kwargs.setdefault('type', 'checkbox')
|
kwargs.setdefault('type', 'checkbox')
|
||||||
field_id = kwargs.pop('id', field.id)
|
field_id = kwargs.pop('id', field.id)
|
||||||
html = [u'<ul %s>' % html_params(id=field_id, class_="inputs-list")]
|
html = [u'<ul %s>' % html_params(id=field_id, class_="inputs-list")]
|
||||||
|
|
||||||
|
choice_id = u'toggleField'
|
||||||
|
js_function = u'toggle();'
|
||||||
|
options = dict(kwargs, id=choice_id, onclick=js_function)
|
||||||
|
label = _("Select All/None")
|
||||||
|
html.append(u'<li><label for="%s">%s<span>%s</span></label></li>' % (choice_id, '<input %s /> ' % html_params(**options), label))
|
||||||
|
|
||||||
for value, label, checked in field.iter_choices():
|
for value, label, checked in field.iter_choices():
|
||||||
choice_id = u'%s-%s' % (field_id, value)
|
choice_id = u'%s-%s' % (field_id, value)
|
||||||
options = dict(kwargs, name=field.name, value=value, id=choice_id)
|
options = dict(kwargs, name=field.name, value=value, id=choice_id)
|
||||||
|
@ -96,7 +103,7 @@ class BillForm(Form):
|
||||||
what = TextField(_("What?"), validators=[Required()])
|
what = TextField(_("What?"), validators=[Required()])
|
||||||
payer = SelectField(_("Payer"), validators=[Required()], coerce=int)
|
payer = SelectField(_("Payer"), validators=[Required()], coerce=int)
|
||||||
amount = DecimalField(_("Amount payed"), validators=[Required()])
|
amount = DecimalField(_("Amount payed"), validators=[Required()])
|
||||||
payed_for = SelectMultipleField(_("Who has to pay for this?"),
|
payed_for = SelectMultipleField(_("For whom?"),
|
||||||
validators=[Required()], widget=select_multi_checkbox, coerce=int)
|
validators=[Required()], widget=select_multi_checkbox, coerce=int)
|
||||||
submit = SubmitField(_("Send the bill"))
|
submit = SubmitField(_("Send the bill"))
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PROJECT VERSION\n"
|
"Project-Id-Version: PROJECT VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2011-10-15 00:42+0200\n"
|
"POT-Creation-Date: 2011-10-20 02:32+0200\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
@ -17,31 +17,35 @@ msgstr ""
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Generated-By: Babel 0.9.6\n"
|
"Generated-By: Babel 0.9.6\n"
|
||||||
|
|
||||||
#: forms.py:44
|
#: forms.py:20
|
||||||
|
msgid "Select All/None"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: forms.py:51
|
||||||
msgid "Project name"
|
msgid "Project name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: forms.py:45 forms.py:70 forms.py:81
|
#: forms.py:52 forms.py:77 forms.py:88
|
||||||
msgid "Private code"
|
msgid "Private code"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: forms.py:46
|
#: forms.py:53
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: forms.py:47
|
#: forms.py:54
|
||||||
msgid "Edit the project"
|
msgid "Edit the project"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: forms.py:69 forms.py:80 forms.py:86
|
#: forms.py:76 forms.py:87 forms.py:93
|
||||||
msgid "Project identifier"
|
msgid "Project identifier"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: forms.py:71 templates/send_invites.html:5
|
#: forms.py:78 templates/send_invites.html:5
|
||||||
msgid "Create the project"
|
msgid "Create the project"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: forms.py:76
|
#: forms.py:83
|
||||||
msgid ""
|
msgid ""
|
||||||
"The project identifier is used to log in and for the URL of the project. "
|
"The project identifier is used to log in and for the URL of the project. "
|
||||||
"We tried to generate an identifier for you but a project with this "
|
"We tried to generate an identifier for you but a project with this "
|
||||||
|
@ -49,143 +53,147 @@ msgid ""
|
||||||
"able to remember."
|
"able to remember."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: forms.py:82
|
#: forms.py:89
|
||||||
msgid "Get in"
|
msgid "Get in"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: forms.py:87
|
#: forms.py:94
|
||||||
msgid "Send me the code by email"
|
msgid "Send me the code by email"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: forms.py:91
|
#: forms.py:98
|
||||||
msgid "This project does not exists"
|
msgid "This project does not exists"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: forms.py:95
|
#: forms.py:102
|
||||||
msgid "Date"
|
msgid "Date"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: forms.py:96
|
#: forms.py:103
|
||||||
msgid "What?"
|
msgid "What?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: forms.py:97
|
#: forms.py:104
|
||||||
msgid "Payer"
|
msgid "Payer"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: forms.py:98
|
#: forms.py:105
|
||||||
msgid "Amount payed"
|
msgid "Amount payed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: forms.py:99
|
#: forms.py:106 templates/list_bills.html:89
|
||||||
msgid "Who has to pay for this?"
|
msgid "For whom?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: forms.py:101
|
#: forms.py:108
|
||||||
msgid "Send the bill"
|
msgid "Send the bill"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: forms.py:126
|
#: forms.py:132
|
||||||
msgid "Name"
|
msgid "Bills can't be negative"
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: forms.py:127
|
|
||||||
msgid "Add a member"
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: forms.py:137
|
#: forms.py:137
|
||||||
msgid "This project already have this member"
|
msgid "Name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: forms.py:147
|
#: forms.py:138
|
||||||
msgid "People to notify"
|
msgid "Add a member"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: forms.py:148
|
#: forms.py:148
|
||||||
msgid "Send invites"
|
msgid "This project already have this member"
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: forms.py:154
|
|
||||||
#, python-format
|
|
||||||
msgid "The email %s is not valid"
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: forms.py:158
|
#: forms.py:158
|
||||||
msgid "Start date"
|
msgid "People to notify"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: forms.py:159
|
#: forms.py:159
|
||||||
|
msgid "Send invites"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: forms.py:165
|
||||||
|
#, python-format
|
||||||
|
msgid "The email %(email)s is not valid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: forms.py:170
|
||||||
|
msgid "Start date"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: forms.py:171
|
||||||
msgid "End date"
|
msgid "End date"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: forms.py:160
|
#: forms.py:172
|
||||||
msgid "Name for this archive (optional)"
|
msgid "Name for this archive (optional)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: web.py:91
|
#: web.py:89
|
||||||
msgid "This private code is not the right one"
|
msgid "This private code is not the right one"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: web.py:139
|
#: web.py:137
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "You have just created '%(projec)s' to share your expenses"
|
msgid "You have just created '%(project)s' to share your expenses"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: web.py:150
|
#: web.py:148
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "The project identifier is %(project)s"
|
msgid "The project identifier is %(project)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: web.py:167
|
#: web.py:166
|
||||||
msgid "a mail has been sent to you with the password"
|
msgid "a mail has been sent to you with the password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: web.py:225
|
#: web.py:224
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "You have been invited to share your expenses for %(project)s"
|
msgid "You have been invited to share your expenses for %(project)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: web.py:232
|
#: web.py:231
|
||||||
msgid "Your invitations have been sent"
|
msgid "Your invitations have been sent"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: web.py:253
|
#: web.py:252
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%(member)s had been added"
|
msgid "%(member)s had been added"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: web.py:265
|
#: web.py:264
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%(name)s is part of this project again"
|
msgid "%(name)s is part of this project again"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: web.py:273
|
#: web.py:272
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "User '%(name)s' has been deactivated"
|
msgid "User '%(name)s' has been deactivated"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: web.py:275
|
#: web.py:274
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "User '%(name)s' has been removed"
|
msgid "User '%(name)s' has been removed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: web.py:288
|
#: web.py:287
|
||||||
msgid "The bill has been added"
|
msgid "The bill has been added"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: web.py:303
|
#: web.py:302
|
||||||
msgid "The bill has been deleted"
|
msgid "The bill has been deleted"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: web.py:321
|
#: web.py:320
|
||||||
msgid "The bill has been modified"
|
msgid "The bill has been modified"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: web.py:338
|
#: web.py:344
|
||||||
msgid "The data from XX to XX has been archived"
|
msgid "The data from XX to XX has been archived"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/add_bill.html:4 templates/edit_bill.html:4
|
#: templates/add_bill.html:23 templates/edit_bill.html:23
|
||||||
msgid "Back to the list"
|
msgid "Back to the list"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -207,7 +215,7 @@ msgstr ""
|
||||||
msgid "Create a new project"
|
msgid "Create a new project"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/edit_bill.html:8
|
#: templates/edit_bill.html:27
|
||||||
msgid "Edit a bill"
|
msgid "Edit a bill"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -299,107 +307,103 @@ msgstr ""
|
||||||
msgid "Account manager"
|
msgid "Account manager"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/layout.html:48
|
#: templates/layout.html:52
|
||||||
msgid "Bills"
|
msgid "Bills"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/layout.html:49
|
#: templates/layout.html:56
|
||||||
msgid "Archives"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: templates/layout.html:53
|
|
||||||
msgid "options"
|
msgid "options"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/layout.html:55
|
#: templates/layout.html:58
|
||||||
msgid "Project settings"
|
msgid "Project settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/layout.html:59
|
#: templates/layout.html:62
|
||||||
msgid "switch to"
|
msgid "switch to"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/layout.html:62
|
#: templates/layout.html:65
|
||||||
msgid "Start a new project"
|
msgid "Start a new project"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/layout.html:64
|
#: templates/layout.html:67
|
||||||
msgid "Logout"
|
msgid "Logout"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/layout.html:85
|
#: templates/layout.html:93
|
||||||
msgid "This is a free software"
|
msgid "This is a free software"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/layout.html:85
|
#: templates/layout.html:93
|
||||||
msgid "you can contribute and improve it!"
|
msgid "you can contribute and improve it!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/list_bills.html:30
|
#: templates/list_bills.html:37
|
||||||
msgid "you sure?"
|
msgid "you sure?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/list_bills.html:45
|
#: templates/list_bills.html:56
|
||||||
msgid "Balance"
|
msgid "Balance"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/list_bills.html:56 templates/list_bills.html:88
|
#: templates/list_bills.html:67 templates/list_bills.html:99
|
||||||
msgid "delete"
|
msgid "delete"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/list_bills.html:56
|
#: templates/list_bills.html:67
|
||||||
msgid "reactivate"
|
msgid "reactivate"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/list_bills.html:68
|
#: templates/list_bills.html:80
|
||||||
msgid "The project identifier is"
|
msgid "The project identifier is"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/list_bills.html:68
|
#: templates/list_bills.html:80
|
||||||
msgid "remember it or add this page to you bookmarks!"
|
msgid "remember it!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/list_bills.html:70
|
#: templates/list_bills.html:81
|
||||||
msgid "Add a new bill"
|
msgid "Add a new bill"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/list_bills.html:72
|
#: templates/list_bills.html:83
|
||||||
msgid "hide this form"
|
msgid "hide this form"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/list_bills.html:78
|
#: templates/list_bills.html:89
|
||||||
msgid "When?"
|
msgid "When?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/list_bills.html:78
|
#: templates/list_bills.html:89
|
||||||
msgid "Who paid?"
|
msgid "Who paid?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/list_bills.html:78
|
#: templates/list_bills.html:89
|
||||||
msgid "For what?"
|
msgid "For what?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/list_bills.html:78
|
#: templates/list_bills.html:89
|
||||||
msgid "Owers"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: templates/list_bills.html:78
|
|
||||||
msgid "How much?"
|
msgid "How much?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/list_bills.html:78
|
#: templates/list_bills.html:89
|
||||||
msgid "Actions"
|
msgid "Actions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/list_bills.html:87
|
#: templates/list_bills.html:97
|
||||||
|
msgid "each"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/list_bills.html:98
|
||||||
msgid "edit"
|
msgid "edit"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/list_bills.html:95
|
#: templates/list_bills.html:106
|
||||||
msgid "Nothing to list yet. You probably want to"
|
msgid "Nothing to list yet. You probably want to"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/list_bills.html:95
|
#: templates/list_bills.html:106
|
||||||
msgid "add a bill"
|
msgid "add a bill"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -443,8 +447,3 @@ msgstr ""
|
||||||
msgid "and notify them yourself"
|
msgid "and notify them yourself"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "each"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Bills can't be negative"
|
|
||||||
msgstr ""
|
|
||||||
|
|
17
budget/static/ihatemoney/custom.js
Normal file
17
budget/static/ihatemoney/custom.js
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
// Add a script to select all or non of the checkboxes in the add_bill form
|
||||||
|
function toggle()
|
||||||
|
{
|
||||||
|
var els = document.getElementsByName('payed_for');
|
||||||
|
for(var i =0;i<els.length;i++)
|
||||||
|
{
|
||||||
|
if(document.getElementById('toggleField').checked)
|
||||||
|
{
|
||||||
|
els[i].checked=true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
els[i].checked=false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
{% if g.lang != "en" %}
|
{% if g.lang != "en" %}
|
||||||
<script src="{{ url_for("static", filename="jquery/i18n/jquery.ui.datepicker-%s.js" % g.lang ) }}"></script>
|
<script src="{{ url_for("static", filename="jquery/i18n/jquery.ui.datepicker-%s.js" % g.lang ) }}"></script>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
<script src="{{ url_for("static", filename="ihatemoney/custom.js") }}"></script>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
{% block js %}
|
{% block js %}
|
||||||
// display the form when clicking on the "add bill" button
|
// display the form when clicking on the "add bill" button
|
||||||
|
@ -77,7 +78,7 @@
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<div class="identifier">{{ _("The project identifier is") }} <a href="{{ url_for(".list_bills") }}">{{ g.project.id }}</a>, {{ _("remember it or add this page to you bookmarks!") }}</div>
|
<div class="identifier">{{ _("The project identifier is") }} <a href="{{ url_for(".list_bills") }}">{{ g.project.id }}</a>, {{ _("remember it!") }}</div>
|
||||||
<a id="new-bill" href="{{ url_for(".add_bill") }}" class="primary">{{ _("Add a new bill") }}</a>
|
<a id="new-bill" href="{{ url_for(".add_bill") }}" class="primary">{{ _("Add a new bill") }}</a>
|
||||||
<form id="bill-form" action="{{ url_for(".add_bill") }}" method="post" style="display: none">
|
<form id="bill-form" action="{{ url_for(".add_bill") }}" method="post" style="display: none">
|
||||||
<a id="hide-bill-form" href="#">{{ _("hide this form") }}</a>
|
<a id="hide-bill-form" href="#">{{ _("hide this form") }}</a>
|
||||||
|
@ -86,7 +87,7 @@
|
||||||
|
|
||||||
{% if bills.count() > 0 %}
|
{% if bills.count() > 0 %}
|
||||||
<table class="list_bills common-table zebra-striped">
|
<table class="list_bills common-table zebra-striped">
|
||||||
<thead><tr><th>{{ _("When?") }}</th><th>{{ _("Who paid?") }}</th><th>{{ _("For what?") }}</th><th>{{ _("Owers") }}</th><th>{{ _("How much?") }}</th><th>{{ _("Actions") }}</th></tr></thead>
|
<thead><tr><th>{{ _("When?") }}</th><th>{{ _("Who paid?") }}</th><th>{{ _("For what?") }}</th><th>{{ _("For whom?") }}</th><th>{{ _("How much?") }}</th><th>{{ _("Actions") }}</th></tr></thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{% for bill in bills %}
|
{% for bill in bills %}
|
||||||
<tr class="{{ loop.cycle("odd", "even") }}">
|
<tr class="{{ loop.cycle("odd", "even") }}">
|
||||||
|
|
Binary file not shown.
|
@ -7,7 +7,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PROJECT VERSION\n"
|
"Project-Id-Version: PROJECT VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2011-10-15 00:42+0200\n"
|
"POT-Creation-Date: 2011-10-20 02:32+0200\n"
|
||||||
"PO-Revision-Date: 2011-10-14 23:51+0200\n"
|
"PO-Revision-Date: 2011-10-14 23:51+0200\n"
|
||||||
"Last-Translator: Alexis Métaireau <alexis@notmyidea.org>\n"
|
"Last-Translator: Alexis Métaireau <alexis@notmyidea.org>\n"
|
||||||
"Language-Team: fr <LL@li.org>\n"
|
"Language-Team: fr <LL@li.org>\n"
|
||||||
|
@ -17,31 +17,35 @@ msgstr ""
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Generated-By: Babel 0.9.6\n"
|
"Generated-By: Babel 0.9.6\n"
|
||||||
|
|
||||||
#: forms.py:44
|
#: forms.py:20
|
||||||
|
msgid "Select All/None"
|
||||||
|
msgstr "Cocher Tous/Aucun"
|
||||||
|
|
||||||
|
#: forms.py:51
|
||||||
msgid "Project name"
|
msgid "Project name"
|
||||||
msgstr "Nom de projet"
|
msgstr "Nom de projet"
|
||||||
|
|
||||||
#: forms.py:45 forms.py:70 forms.py:81
|
#: forms.py:52 forms.py:77 forms.py:88
|
||||||
msgid "Private code"
|
msgid "Private code"
|
||||||
msgstr "Code d'accès"
|
msgstr "Code d'accès"
|
||||||
|
|
||||||
#: forms.py:46
|
#: forms.py:53
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "Email"
|
msgstr "Email"
|
||||||
|
|
||||||
#: forms.py:47
|
#: forms.py:54
|
||||||
msgid "Edit the project"
|
msgid "Edit the project"
|
||||||
msgstr "Éditer le projet"
|
msgstr "Éditer le projet"
|
||||||
|
|
||||||
#: forms.py:69 forms.py:80 forms.py:86
|
#: forms.py:76 forms.py:87 forms.py:93
|
||||||
msgid "Project identifier"
|
msgid "Project identifier"
|
||||||
msgstr "Identifiant de projet"
|
msgstr "Identifiant du projet"
|
||||||
|
|
||||||
#: forms.py:71 templates/send_invites.html:5
|
#: forms.py:78 templates/send_invites.html:5
|
||||||
msgid "Create the project"
|
msgid "Create the project"
|
||||||
msgstr "Créer le projet"
|
msgstr "Créer le projet"
|
||||||
|
|
||||||
#: forms.py:76
|
#: forms.py:83
|
||||||
msgid ""
|
msgid ""
|
||||||
"The project identifier is used to log in and for the URL of the project. "
|
"The project identifier is used to log in and for the URL of the project. "
|
||||||
"We tried to generate an identifier for you but a project with this "
|
"We tried to generate an identifier for you but a project with this "
|
||||||
|
@ -53,143 +57,147 @@ msgstr ""
|
||||||
"celui ci existe déjà. Merci de créer un nouvel identifiant que vous serez"
|
"celui ci existe déjà. Merci de créer un nouvel identifiant que vous serez"
|
||||||
" capable de retenir"
|
" capable de retenir"
|
||||||
|
|
||||||
#: forms.py:82
|
#: forms.py:89
|
||||||
msgid "Get in"
|
msgid "Get in"
|
||||||
msgstr "Entrer"
|
msgstr "Entrer"
|
||||||
|
|
||||||
#: forms.py:87
|
#: forms.py:94
|
||||||
msgid "Send me the code by email"
|
msgid "Send me the code by email"
|
||||||
msgstr "Envoyez moi le code par email"
|
msgstr "Envoyez moi le code par email"
|
||||||
|
|
||||||
#: forms.py:91
|
#: forms.py:98
|
||||||
msgid "This project does not exists"
|
msgid "This project does not exists"
|
||||||
msgstr "Ce projet n'existe pas"
|
msgstr "Ce projet n'existe pas"
|
||||||
|
|
||||||
#: forms.py:95
|
#: forms.py:102
|
||||||
msgid "Date"
|
msgid "Date"
|
||||||
msgstr "Date"
|
msgstr "Date"
|
||||||
|
|
||||||
#: forms.py:96
|
#: forms.py:103
|
||||||
msgid "What?"
|
msgid "What?"
|
||||||
msgstr "Quoi ?"
|
msgstr "Quoi ?"
|
||||||
|
|
||||||
#: forms.py:97
|
#: forms.py:104
|
||||||
msgid "Payer"
|
msgid "Payer"
|
||||||
msgstr "Payeur"
|
msgstr "Payeur"
|
||||||
|
|
||||||
#: forms.py:98
|
#: forms.py:105
|
||||||
msgid "Amount payed"
|
msgid "Amount payed"
|
||||||
msgstr "Montant"
|
msgstr "Montant"
|
||||||
|
|
||||||
#: forms.py:99
|
#: forms.py:106 templates/list_bills.html:89
|
||||||
msgid "Who has to pay for this?"
|
msgid "For whom?"
|
||||||
msgstr "Qui doit payer pour ça ?"
|
msgstr "Pour qui ?"
|
||||||
|
|
||||||
#: forms.py:101
|
#: forms.py:108
|
||||||
msgid "Send the bill"
|
msgid "Send the bill"
|
||||||
msgstr "Enregistrer la facture"
|
msgstr "Enregistrer la facture"
|
||||||
|
|
||||||
#: forms.py:126
|
#: forms.py:132
|
||||||
|
msgid "Bills can't be negative"
|
||||||
|
msgstr "Le montant d'une facture ne peut pas être négatif"
|
||||||
|
|
||||||
|
#: forms.py:137
|
||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr "Nom"
|
msgstr "Nom"
|
||||||
|
|
||||||
#: forms.py:127
|
#: forms.py:138
|
||||||
msgid "Add a member"
|
msgid "Add a member"
|
||||||
msgstr "Ajouter un membre"
|
msgstr "Ajouter un membre"
|
||||||
|
|
||||||
#: forms.py:137
|
#: forms.py:148
|
||||||
msgid "This project already have this member"
|
msgid "This project already have this member"
|
||||||
msgstr "Ce membre existe déjà pour ce projet"
|
msgstr "Ce membre existe déjà pour ce projet"
|
||||||
|
|
||||||
#: forms.py:147
|
#: forms.py:158
|
||||||
msgid "People to notify"
|
msgid "People to notify"
|
||||||
msgstr "Personnes à prévenir"
|
msgstr "Personnes à prévenir"
|
||||||
|
|
||||||
#: forms.py:148
|
#: forms.py:159
|
||||||
msgid "Send invites"
|
msgid "Send invites"
|
||||||
msgstr "Envoyer les invitations"
|
msgstr "Envoyer les invitations"
|
||||||
|
|
||||||
#: forms.py:154
|
#: forms.py:165
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "The email %s is not valid"
|
msgid "The email %(email)s is not valid"
|
||||||
msgstr "L'email %s est invalide"
|
msgstr "L'email %(email)s est invalide"
|
||||||
|
|
||||||
#: forms.py:158
|
#: forms.py:170
|
||||||
msgid "Start date"
|
msgid "Start date"
|
||||||
msgstr "Date de départ"
|
msgstr "Date de départ"
|
||||||
|
|
||||||
#: forms.py:159
|
#: forms.py:171
|
||||||
msgid "End date"
|
msgid "End date"
|
||||||
msgstr "Date de fin"
|
msgstr "Date de fin"
|
||||||
|
|
||||||
#: forms.py:160
|
#: forms.py:172
|
||||||
msgid "Name for this archive (optional)"
|
msgid "Name for this archive (optional)"
|
||||||
msgstr "Nom pour cette archive"
|
msgstr "Nom pour cette archive"
|
||||||
|
|
||||||
#: web.py:91
|
#: web.py:89
|
||||||
msgid "This private code is not the right one"
|
msgid "This private code is not the right one"
|
||||||
msgstr "Le code que vous avez entré n'est pas correct"
|
msgstr "Le code que vous avez entré n'est pas correct"
|
||||||
|
|
||||||
#: web.py:139
|
#: web.py:137
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "You have just created '%(project)s' to share your expenses"
|
msgid "You have just created '%(project)s' to share your expenses"
|
||||||
msgstr "Vous venez de créer '%(project)s' pour partager vos dépenses"
|
msgstr "Vous venez de créer '%(project)s' pour partager vos dépenses"
|
||||||
|
|
||||||
#: web.py:150
|
#: web.py:148
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "The project identifier is %(project)s"
|
msgid "The project identifier is %(project)s"
|
||||||
msgstr "L'identifiant de ce projet est '%(project)s'"
|
msgstr "L'identifiant de ce projet est '%(project)s'"
|
||||||
|
|
||||||
#: web.py:167
|
#: web.py:166
|
||||||
msgid "a mail has been sent to you with the password"
|
msgid "a mail has been sent to you with the password"
|
||||||
msgstr "Un email vous à été envoyé avec le mot de passe"
|
msgstr "Un email vous a été envoyé avec le mot de passe"
|
||||||
|
|
||||||
#: web.py:225
|
#: web.py:224
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "You have been invited to share your expenses for %(project)s"
|
msgid "You have been invited to share your expenses for %(project)s"
|
||||||
msgstr "Vous avez été invité à partager vos dépenses pour %(project)s"
|
msgstr "Vous avez été invité à partager vos dépenses pour %(project)s"
|
||||||
|
|
||||||
#: web.py:232
|
#: web.py:231
|
||||||
msgid "Your invitations have been sent"
|
msgid "Your invitations have been sent"
|
||||||
msgstr "Vos invitations ont bien été envoyées"
|
msgstr "Vos invitations ont bien été envoyées"
|
||||||
|
|
||||||
#: web.py:253
|
#: web.py:252
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%(member)s had been added"
|
msgid "%(member)s had been added"
|
||||||
msgstr "%(member)s à bien été ajouté"
|
msgstr "%(member)s a bien été ajouté"
|
||||||
|
|
||||||
#: web.py:265
|
#: web.py:264
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%(name)s is part of this project again"
|
msgid "%(name)s is part of this project again"
|
||||||
msgstr "%(name)s à rejoint le projet"
|
msgstr "%(name)s a rejoint le projet"
|
||||||
|
|
||||||
#: web.py:273
|
#: web.py:272
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "User '%(name)s' has been deactivated"
|
msgid "User '%(name)s' has been deactivated"
|
||||||
msgstr "Le membre '%(name)s' à été désactivé"
|
msgstr "Le membre '%(name)s' a été désactivé"
|
||||||
|
|
||||||
#: web.py:275
|
#: web.py:274
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "User '%(name)s' has been removed"
|
msgid "User '%(name)s' has been removed"
|
||||||
msgstr "Le membre '%(name)s' à été supprimé"
|
msgstr "Le membre '%(name)s' a été supprimé"
|
||||||
|
|
||||||
#: web.py:288
|
#: web.py:287
|
||||||
msgid "The bill has been added"
|
msgid "The bill has been added"
|
||||||
msgstr "La facture à bien été ajoutée"
|
msgstr "La facture a bien été ajoutée"
|
||||||
|
|
||||||
#: web.py:303
|
#: web.py:302
|
||||||
msgid "The bill has been deleted"
|
msgid "The bill has been deleted"
|
||||||
msgstr "La facture à été supprimée"
|
msgstr "La facture a été supprimée"
|
||||||
|
|
||||||
#: web.py:321
|
#: web.py:320
|
||||||
msgid "The bill has been modified"
|
msgid "The bill has been modified"
|
||||||
msgstr "La facture à été modifiée"
|
msgstr "La facture a été modifiée"
|
||||||
|
|
||||||
#: web.py:338
|
#: web.py:344
|
||||||
msgid "The data from XX to XX has been archived"
|
msgid "The data from XX to XX has been archived"
|
||||||
msgstr "Les données de XX à XX ont été archivées"
|
msgstr "Les données de XX à XX ont été archivées"
|
||||||
|
|
||||||
#: templates/add_bill.html:4 templates/edit_bill.html:4
|
#: templates/add_bill.html:23 templates/edit_bill.html:23
|
||||||
msgid "Back to the list"
|
msgid "Back to the list"
|
||||||
msgstr "Retourner à la liste"
|
msgstr "Retourner à la liste"
|
||||||
|
|
||||||
|
@ -211,7 +219,7 @@ msgstr " ?"
|
||||||
msgid "Create a new project"
|
msgid "Create a new project"
|
||||||
msgstr "Créer un nouveau projet"
|
msgstr "Créer un nouveau projet"
|
||||||
|
|
||||||
#: templates/edit_bill.html:8
|
#: templates/edit_bill.html:27
|
||||||
msgid "Edit a bill"
|
msgid "Edit a bill"
|
||||||
msgstr "Éditer une facture"
|
msgstr "Éditer une facture"
|
||||||
|
|
||||||
|
@ -221,7 +229,7 @@ msgstr "Éditer ce projet"
|
||||||
|
|
||||||
#: templates/forms.html:24
|
#: templates/forms.html:24
|
||||||
msgid "Can't remember the password?"
|
msgid "Can't remember the password?"
|
||||||
msgstr "Vous ne vous rappelez plus du code d'accès ?"
|
msgstr "Vous ne vous souvenez plus du code d'accès ?"
|
||||||
|
|
||||||
#: templates/forms.html:27
|
#: templates/forms.html:27
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
|
@ -289,7 +297,7 @@ msgstr "se connecter"
|
||||||
|
|
||||||
#: templates/home.html:29
|
#: templates/home.html:29
|
||||||
msgid "can't remember your password?"
|
msgid "can't remember your password?"
|
||||||
msgstr "vous ne vous rappelez plus du code d'accès ?"
|
msgstr "vous ne vous souvenez plus du code d'accès ?"
|
||||||
|
|
||||||
#: templates/home.html:34
|
#: templates/home.html:34
|
||||||
msgid "or create a new one"
|
msgid "or create a new one"
|
||||||
|
@ -303,107 +311,103 @@ msgstr "c'est parti !"
|
||||||
msgid "Account manager"
|
msgid "Account manager"
|
||||||
msgstr "Gestion de comptes"
|
msgstr "Gestion de comptes"
|
||||||
|
|
||||||
#: templates/layout.html:48
|
#: templates/layout.html:52
|
||||||
msgid "Bills"
|
msgid "Bills"
|
||||||
msgstr "Factures"
|
msgstr "Factures"
|
||||||
|
|
||||||
#: templates/layout.html:49
|
#: templates/layout.html:56
|
||||||
msgid "Archives"
|
|
||||||
msgstr "Archives"
|
|
||||||
|
|
||||||
#: templates/layout.html:53
|
|
||||||
msgid "options"
|
msgid "options"
|
||||||
msgstr "options"
|
msgstr "options"
|
||||||
|
|
||||||
#: templates/layout.html:55
|
#: templates/layout.html:58
|
||||||
msgid "Project settings"
|
msgid "Project settings"
|
||||||
msgstr "Options du projet"
|
msgstr "Options du projet"
|
||||||
|
|
||||||
#: templates/layout.html:59
|
#: templates/layout.html:62
|
||||||
msgid "switch to"
|
msgid "switch to"
|
||||||
msgstr "aller à"
|
msgstr "aller à"
|
||||||
|
|
||||||
#: templates/layout.html:62
|
#: templates/layout.html:65
|
||||||
msgid "Start a new project"
|
msgid "Start a new project"
|
||||||
msgstr "Nouveau projet"
|
msgstr "Nouveau projet"
|
||||||
|
|
||||||
#: templates/layout.html:64
|
#: templates/layout.html:67
|
||||||
msgid "Logout"
|
msgid "Logout"
|
||||||
msgstr "Se déconnecter"
|
msgstr "Se déconnecter"
|
||||||
|
|
||||||
#: templates/layout.html:85
|
#: templates/layout.html:93
|
||||||
msgid "This is a free software"
|
msgid "This is a free software"
|
||||||
msgstr "Ceci est un logiciel libre"
|
msgstr "Ceci est un logiciel libre"
|
||||||
|
|
||||||
#: templates/layout.html:85
|
#: templates/layout.html:93
|
||||||
msgid "you can contribute and improve it!"
|
msgid "you can contribute and improve it!"
|
||||||
msgstr "vous pouvez y contribuer et l'améliorer"
|
msgstr "vous pouvez y contribuer et l'améliorer"
|
||||||
|
|
||||||
#: templates/list_bills.html:30
|
#: templates/list_bills.html:37
|
||||||
msgid "you sure?"
|
msgid "you sure?"
|
||||||
msgstr "c'est sûr ?"
|
msgstr "c'est sûr ?"
|
||||||
|
|
||||||
#: templates/list_bills.html:45
|
#: templates/list_bills.html:56
|
||||||
msgid "Balance"
|
msgid "Balance"
|
||||||
msgstr "Balance"
|
msgstr "Balance"
|
||||||
|
|
||||||
#: templates/list_bills.html:56 templates/list_bills.html:88
|
#: templates/list_bills.html:67 templates/list_bills.html:99
|
||||||
msgid "delete"
|
msgid "delete"
|
||||||
msgstr "supprimer"
|
msgstr "supprimer"
|
||||||
|
|
||||||
#: templates/list_bills.html:56
|
#: templates/list_bills.html:67
|
||||||
msgid "reactivate"
|
msgid "reactivate"
|
||||||
msgstr "ré-activer"
|
msgstr "ré-activer"
|
||||||
|
|
||||||
#: templates/list_bills.html:68
|
#: templates/list_bills.html:80
|
||||||
msgid "The project identifier is"
|
msgid "The project identifier is"
|
||||||
msgstr "L'identifiant de ce projet est"
|
msgstr "L'identifiant de ce projet est"
|
||||||
|
|
||||||
#: templates/list_bills.html:68
|
#: templates/list_bills.html:80
|
||||||
msgid "remember it or add this page to you bookmarks!"
|
msgid "remember it!"
|
||||||
msgstr "rapellez vous en !"
|
msgstr "souvenez vous en !"
|
||||||
|
|
||||||
#: templates/list_bills.html:70
|
#: templates/list_bills.html:81
|
||||||
msgid "Add a new bill"
|
msgid "Add a new bill"
|
||||||
msgstr "Nouvelle facture"
|
msgstr "Nouvelle facture"
|
||||||
|
|
||||||
#: templates/list_bills.html:72
|
#: templates/list_bills.html:83
|
||||||
msgid "hide this form"
|
msgid "hide this form"
|
||||||
msgstr "cacher ce formulaire"
|
msgstr "cacher ce formulaire"
|
||||||
|
|
||||||
#: templates/list_bills.html:78
|
#: templates/list_bills.html:89
|
||||||
msgid "When?"
|
msgid "When?"
|
||||||
msgstr "Quand ?"
|
msgstr "Quand ?"
|
||||||
|
|
||||||
#: templates/list_bills.html:78
|
#: templates/list_bills.html:89
|
||||||
msgid "Who paid?"
|
msgid "Who paid?"
|
||||||
msgstr "Qui à payé ?"
|
msgstr "Qui a payé ?"
|
||||||
|
|
||||||
#: templates/list_bills.html:78
|
#: templates/list_bills.html:89
|
||||||
msgid "For what?"
|
msgid "For what?"
|
||||||
msgstr "Pour quoi ?"
|
msgstr "Pour quoi ?"
|
||||||
|
|
||||||
#: templates/list_bills.html:78
|
#: templates/list_bills.html:89
|
||||||
msgid "Owers"
|
|
||||||
msgstr "Pour qui ?"
|
|
||||||
|
|
||||||
#: templates/list_bills.html:78
|
|
||||||
msgid "How much?"
|
msgid "How much?"
|
||||||
msgstr "Combien ?"
|
msgstr "Combien ?"
|
||||||
|
|
||||||
#: templates/list_bills.html:78
|
#: templates/list_bills.html:89
|
||||||
msgid "Actions"
|
msgid "Actions"
|
||||||
msgstr "Actions"
|
msgstr "Actions"
|
||||||
|
|
||||||
#: templates/list_bills.html:87
|
#: templates/list_bills.html:97
|
||||||
|
msgid "each"
|
||||||
|
msgstr "chacun"
|
||||||
|
|
||||||
|
#: templates/list_bills.html:98
|
||||||
msgid "edit"
|
msgid "edit"
|
||||||
msgstr "éditer"
|
msgstr "éditer"
|
||||||
|
|
||||||
#: templates/list_bills.html:95
|
#: templates/list_bills.html:106
|
||||||
msgid "Nothing to list yet. You probably want to"
|
msgid "Nothing to list yet. You probably want to"
|
||||||
msgstr "Rien à lister pour l'instant. Vous voulez surement"
|
msgstr "Rien à lister pour l'instant. Vous voulez surement"
|
||||||
|
|
||||||
#: templates/list_bills.html:95
|
#: templates/list_bills.html:106
|
||||||
msgid "add a bill"
|
msgid "add a bill"
|
||||||
msgstr "ajouter une facture"
|
msgstr "ajouter une facture"
|
||||||
|
|
||||||
|
@ -449,8 +453,3 @@ msgstr "sauter cette étape"
|
||||||
msgid "and notify them yourself"
|
msgid "and notify them yourself"
|
||||||
msgstr "et les notifier vous même"
|
msgstr "et les notifier vous même"
|
||||||
|
|
||||||
msgid "each"
|
|
||||||
msgstr "chacun"
|
|
||||||
|
|
||||||
msgid "Bills can't be negative"
|
|
||||||
msgstr "Le montant d'une facture ne peut pas être négatif"
|
|
||||||
|
|
|
@ -235,10 +235,14 @@ def invite():
|
||||||
|
|
||||||
@main.route("/<project_id>/")
|
@main.route("/<project_id>/")
|
||||||
def list_bills():
|
def list_bills():
|
||||||
|
bill_form=get_billform_for(g.project)
|
||||||
|
# set the last selected payer as default choice if exists
|
||||||
|
if 'last_selected_payer' in session:
|
||||||
|
bill_form.payer.data = session['last_selected_payer']
|
||||||
bills = g.project.get_bills()
|
bills = g.project.get_bills()
|
||||||
return render_template("list_bills.html",
|
return render_template("list_bills.html",
|
||||||
bills=bills, member_form=MemberForm(g.project),
|
bills=bills, member_form=MemberForm(g.project),
|
||||||
bill_form=get_billform_for(g.project)
|
bill_form=bill_form
|
||||||
)
|
)
|
||||||
|
|
||||||
@main.route("/<project_id>/members/add", methods=["GET", "POST"])
|
@main.route("/<project_id>/members/add", methods=["GET", "POST"])
|
||||||
|
@ -280,6 +284,10 @@ def add_bill():
|
||||||
form = get_billform_for(g.project)
|
form = get_billform_for(g.project)
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
if form.validate():
|
if form.validate():
|
||||||
|
# save last selected payer in session
|
||||||
|
session['last_selected_payer'] = form.payer.data
|
||||||
|
session.update()
|
||||||
|
|
||||||
bill = Bill()
|
bill = Bill()
|
||||||
db.session.add(form.save(bill, g.project))
|
db.session.add(form.save(bill, g.project))
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
Loading…
Reference in a new issue