Add autocomplete search to "add payment" and add search bar to table views
This commit is contained in:
Binary file not shown.
@@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2017-09-25 13:38+0300\n"
|
"POT-Creation-Date: 2017-09-25 21:32+0300\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"
|
||||||
@@ -184,12 +184,12 @@ msgid "Language"
|
|||||||
msgstr "Language"
|
msgstr "Language"
|
||||||
|
|
||||||
#: infoscreen/templates/infoscreen_admin.html:161
|
#: infoscreen/templates/infoscreen_admin.html:161
|
||||||
#: members/templates/settings.html:20 sikweb/base.py:214
|
#: members/templates/settings.html:20 sikweb/base.py:216
|
||||||
msgid "Finnish"
|
msgid "Finnish"
|
||||||
msgstr "Finnish"
|
msgstr "Finnish"
|
||||||
|
|
||||||
#: infoscreen/templates/infoscreen_admin.html:162
|
#: infoscreen/templates/infoscreen_admin.html:162
|
||||||
#: members/templates/settings.html:21 sikweb/base.py:215
|
#: members/templates/settings.html:21 sikweb/base.py:217
|
||||||
msgid "English"
|
msgid "English"
|
||||||
msgstr "English"
|
msgstr "English"
|
||||||
|
|
||||||
@@ -200,56 +200,56 @@ msgstr "English"
|
|||||||
msgid "Submit"
|
msgid "Submit"
|
||||||
msgstr "Submitted"
|
msgstr "Submitted"
|
||||||
|
|
||||||
#: members/forms.py:97 members/tables.py:32
|
#: members/forms.py:103 members/tables.py:32
|
||||||
msgid "Member"
|
msgid "Member"
|
||||||
msgstr "Member"
|
msgstr "Member"
|
||||||
|
|
||||||
#: members/models.py:14
|
#: members/models.py:13
|
||||||
msgid "First name"
|
msgid "First name"
|
||||||
msgstr "First name"
|
msgstr "First name"
|
||||||
|
|
||||||
#: members/models.py:15
|
#: members/models.py:14
|
||||||
msgid "Last name"
|
msgid "Last name"
|
||||||
msgstr "Last name"
|
msgstr "Last name"
|
||||||
|
|
||||||
#: members/models.py:16 webapp/models.py:95 webapp/models.py:108
|
#: members/models.py:15 webapp/models.py:95 webapp/models.py:108
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "Email"
|
msgstr "Email"
|
||||||
|
|
||||||
#: members/models.py:17
|
#: members/models.py:16
|
||||||
msgid "Place of residence"
|
msgid "Place of residence"
|
||||||
msgstr "Place of residence"
|
msgstr "Place of residence"
|
||||||
|
|
||||||
#: members/models.py:19 members/models.py:84
|
#: members/models.py:18 members/models.py:83
|
||||||
#: members/templates/member_add_many.html:35
|
#: members/templates/member_add_many.html:35
|
||||||
msgid "AYY"
|
msgid "AYY"
|
||||||
msgstr "AYY"
|
msgstr "AYY"
|
||||||
|
|
||||||
#: members/models.py:20
|
#: members/models.py:19
|
||||||
msgid "JAS"
|
msgid "JAS"
|
||||||
msgstr "JAS"
|
msgstr "JAS"
|
||||||
|
|
||||||
#: members/models.py:70
|
#: members/models.py:69
|
||||||
msgid "Submitted"
|
msgid "Submitted"
|
||||||
msgstr "Submitted"
|
msgstr "Submitted"
|
||||||
|
|
||||||
#: members/models.py:82
|
#: members/models.py:81
|
||||||
msgid "Date"
|
msgid "Date"
|
||||||
msgstr "Date"
|
msgstr "Date"
|
||||||
|
|
||||||
#: members/models.py:83
|
#: members/models.py:82
|
||||||
msgid "Source"
|
msgid "Source"
|
||||||
msgstr "Source"
|
msgstr "Source"
|
||||||
|
|
||||||
#: members/models.py:85
|
#: members/models.py:84
|
||||||
msgid "Cash"
|
msgid "Cash"
|
||||||
msgstr "Cash"
|
msgstr "Cash"
|
||||||
|
|
||||||
#: members/models.py:86 members/templates/member_add_many.html:36
|
#: members/models.py:85 members/templates/member_add_many.html:36
|
||||||
msgid "Bank transfer"
|
msgid "Bank transfer"
|
||||||
msgstr "Bank transfer"
|
msgstr "Bank transfer"
|
||||||
|
|
||||||
#: members/models.py:103
|
#: members/models.py:102
|
||||||
msgid "Created"
|
msgid "Created"
|
||||||
msgstr "Created"
|
msgstr "Created"
|
||||||
|
|
||||||
@@ -294,7 +294,7 @@ msgid "Add member"
|
|||||||
msgstr "Add member"
|
msgstr "Add member"
|
||||||
|
|
||||||
#: members/templates/member_add.html:15 members/templates/member_edit.html:18
|
#: members/templates/member_add.html:15 members/templates/member_edit.html:18
|
||||||
#: members/templates/payment_add.html:15 members/templates/payment_edit.html:18
|
#: members/templates/payment_add.html:20 members/templates/payment_edit.html:18
|
||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr "Save"
|
msgstr "Save"
|
||||||
|
|
||||||
@@ -390,7 +390,15 @@ msgstr "Member register"
|
|||||||
msgid "Members in register:"
|
msgid "Members in register:"
|
||||||
msgstr "Member register"
|
msgstr "Member register"
|
||||||
|
|
||||||
#: members/templates/member_list.html:27
|
#: members/templates/member_list.html:28 members/templates/payment_list.html:25
|
||||||
|
msgid "Search"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: members/templates/member_list.html:36 members/templates/payment_list.html:33
|
||||||
|
msgid "Showing results for"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: members/templates/member_list.html:44
|
||||||
msgid "Download CSV"
|
msgid "Download CSV"
|
||||||
msgstr "Download CSV"
|
msgstr "Download CSV"
|
||||||
|
|
||||||
@@ -411,7 +419,7 @@ msgstr "Add multiple"
|
|||||||
msgid "List payments"
|
msgid "List payments"
|
||||||
msgstr "List payments"
|
msgstr "List payments"
|
||||||
|
|
||||||
#: members/templates/members_base.html:63 members/templates/payment_add.html:8
|
#: members/templates/members_base.html:63 members/templates/payment_add.html:13
|
||||||
msgid "Add payment"
|
msgid "Add payment"
|
||||||
msgstr "Add payment"
|
msgstr "Add payment"
|
||||||
|
|
||||||
@@ -439,82 +447,91 @@ msgstr "Edit payment"
|
|||||||
msgid "Payment events"
|
msgid "Payment events"
|
||||||
msgstr "Payment events"
|
msgstr "Payment events"
|
||||||
|
|
||||||
#: members/views.py:138 members/views.py:209 members/views.py:235
|
#: members/templates/payment_list.html:18
|
||||||
msgid "No member id specified"
|
#, fuzzy
|
||||||
msgstr "No member id specified"
|
#| msgid "Member register"
|
||||||
|
msgid "Payments in register:"
|
||||||
|
msgstr "Member register"
|
||||||
|
|
||||||
#: members/views.py:164
|
#: members/views/applications.py:49 members/views/applications.py:96
|
||||||
msgid "Successfully added member"
|
#: members/views/applications.py:124
|
||||||
msgstr "Successfully added member"
|
|
||||||
|
|
||||||
#: members/views.py:189
|
|
||||||
msgid "Successfully updated member"
|
|
||||||
msgstr "Successfully updated member"
|
|
||||||
|
|
||||||
#: members/views.py:197
|
|
||||||
msgid "Could not update member object"
|
|
||||||
msgstr "Could not update member object"
|
|
||||||
|
|
||||||
#: members/views.py:213
|
|
||||||
msgid "Successfully deleted member"
|
|
||||||
msgstr "Successfully deleted member"
|
|
||||||
|
|
||||||
#: members/views.py:224
|
|
||||||
msgid "Could not delete member object"
|
|
||||||
msgstr "Could not delete member object"
|
|
||||||
|
|
||||||
#: members/views.py:273 members/views.py:320 members/views.py:348
|
|
||||||
msgid "No application id specified"
|
msgid "No application id specified"
|
||||||
msgstr "No application id specified"
|
msgstr "No application id specified"
|
||||||
|
|
||||||
#: members/views.py:301
|
#: members/views/applications.py:77
|
||||||
msgid "Successfully accepted application"
|
msgid "Successfully accepted application"
|
||||||
msgstr "Successfully accepted application"
|
msgstr "Successfully accepted application"
|
||||||
|
|
||||||
#: members/views.py:308
|
#: members/views/applications.py:84
|
||||||
msgid "Could not accept application object"
|
msgid "Could not accept application object"
|
||||||
msgstr "Could not accept application object"
|
msgstr "Could not accept application object"
|
||||||
|
|
||||||
#: members/views.py:324
|
#: members/views/applications.py:100
|
||||||
msgid "Successfully deleted application"
|
msgid "Successfully deleted application"
|
||||||
msgstr "Successfully deleted application"
|
msgstr "Successfully deleted application"
|
||||||
|
|
||||||
#: members/views.py:336
|
#: members/views/applications.py:112
|
||||||
msgid "Could not delete application object"
|
msgid "Could not delete application object"
|
||||||
msgstr "Could not delete application object"
|
msgstr "Could not delete application object"
|
||||||
|
|
||||||
#: members/views.py:413
|
#: members/views/members.py:70 members/views/members.py:163
|
||||||
|
#: members/views/members.py:189
|
||||||
|
msgid "No member id specified"
|
||||||
|
msgstr "No member id specified"
|
||||||
|
|
||||||
|
#: members/views/members.py:105
|
||||||
|
msgid "Failed to import members"
|
||||||
|
msgstr "Failed to import members"
|
||||||
|
|
||||||
|
#: members/views/members.py:118
|
||||||
|
msgid "Successfully added member"
|
||||||
|
msgstr "Successfully added member"
|
||||||
|
|
||||||
|
#: members/views/members.py:143
|
||||||
|
msgid "Successfully updated member"
|
||||||
|
msgstr "Successfully updated member"
|
||||||
|
|
||||||
|
#: members/views/members.py:151
|
||||||
|
msgid "Could not update member object"
|
||||||
|
msgstr "Could not update member object"
|
||||||
|
|
||||||
|
#: members/views/members.py:167
|
||||||
|
msgid "Successfully deleted member"
|
||||||
|
msgstr "Successfully deleted member"
|
||||||
|
|
||||||
|
#: members/views/members.py:178
|
||||||
|
msgid "Could not delete member object"
|
||||||
|
msgstr "Could not delete member object"
|
||||||
|
|
||||||
|
#: members/views/payments.py:69
|
||||||
msgid "Successfully added payment for member"
|
msgid "Successfully added payment for member"
|
||||||
msgstr "Successfully added payment for member"
|
msgstr "Successfully added payment for member"
|
||||||
|
|
||||||
#: members/views.py:431 members/views.py:449 members/views.py:468
|
#: members/views/payments.py:87 members/views/payments.py:105
|
||||||
|
#: members/views/payments.py:124
|
||||||
msgid "No payment id specified"
|
msgid "No payment id specified"
|
||||||
msgstr "No payment id specified"
|
msgstr "No payment id specified"
|
||||||
|
|
||||||
#: members/views.py:473
|
#: members/views/payments.py:129
|
||||||
msgid "Successfully deleted payment"
|
msgid "Successfully deleted payment"
|
||||||
msgstr "Successfully deleted payment"
|
msgstr "Successfully deleted payment"
|
||||||
|
|
||||||
#: members/views.py:483
|
#: members/views/payments.py:139
|
||||||
msgid "Could not delete payment object"
|
msgid "Could not delete payment object"
|
||||||
msgstr "Could not delete payment object"
|
msgstr "Could not delete payment object"
|
||||||
|
|
||||||
#: members/views.py:502
|
#: members/views/payments.py:158
|
||||||
msgid "Successfully updated payment"
|
msgid "Successfully updated payment"
|
||||||
msgstr "Successfully updated payment"
|
msgstr "Successfully updated payment"
|
||||||
|
|
||||||
#: members/views.py:509
|
#: members/views/payments.py:165
|
||||||
msgid "Could not update payment object"
|
msgid "Could not update payment object"
|
||||||
msgstr "Could not update payment object"
|
msgstr "Could not update payment object"
|
||||||
|
|
||||||
#: members/views.py:531
|
#: members/views/utils.py:110
|
||||||
msgid "Missing \"textfield\" POST request field"
|
msgid "Missing \"textfield\" POST request field"
|
||||||
msgstr "Missing \"textfield\" POST request field"
|
msgstr "Missing \"textfield\" POST request field"
|
||||||
|
|
||||||
#: members/views.py:583
|
|
||||||
msgid "Failed to import members"
|
|
||||||
msgstr "Failed to import members"
|
|
||||||
|
|
||||||
#: templates/footer.html:7
|
#: templates/footer.html:7
|
||||||
msgid "Copyright Aalto-yliopiston Sähköinsinöörikilta ry"
|
msgid "Copyright Aalto-yliopiston Sähköinsinöörikilta ry"
|
||||||
msgstr "Copyright Aalto-yliopiston Sähköinsinöörikilta ry"
|
msgstr "Copyright Aalto-yliopiston Sähköinsinöörikilta ry"
|
||||||
|
|||||||
Binary file not shown.
@@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2017-09-25 13:38+0300\n"
|
"POT-Creation-Date: 2017-09-25 21:32+0300\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"
|
||||||
@@ -183,12 +183,12 @@ msgid "Language"
|
|||||||
msgstr "Kieli"
|
msgstr "Kieli"
|
||||||
|
|
||||||
#: infoscreen/templates/infoscreen_admin.html:161
|
#: infoscreen/templates/infoscreen_admin.html:161
|
||||||
#: members/templates/settings.html:20 sikweb/base.py:214
|
#: members/templates/settings.html:20 sikweb/base.py:216
|
||||||
msgid "Finnish"
|
msgid "Finnish"
|
||||||
msgstr "suomi"
|
msgstr "suomi"
|
||||||
|
|
||||||
#: infoscreen/templates/infoscreen_admin.html:162
|
#: infoscreen/templates/infoscreen_admin.html:162
|
||||||
#: members/templates/settings.html:21 sikweb/base.py:215
|
#: members/templates/settings.html:21 sikweb/base.py:217
|
||||||
msgid "English"
|
msgid "English"
|
||||||
msgstr "englanti"
|
msgstr "englanti"
|
||||||
|
|
||||||
@@ -197,56 +197,56 @@ msgstr "englanti"
|
|||||||
msgid "Submit"
|
msgid "Submit"
|
||||||
msgstr "Lisää"
|
msgstr "Lisää"
|
||||||
|
|
||||||
#: members/forms.py:97 members/tables.py:32
|
#: members/forms.py:103 members/tables.py:32
|
||||||
msgid "Member"
|
msgid "Member"
|
||||||
msgstr "Jäsen"
|
msgstr "Jäsen"
|
||||||
|
|
||||||
#: members/models.py:14
|
#: members/models.py:13
|
||||||
msgid "First name"
|
msgid "First name"
|
||||||
msgstr "Etunimi"
|
msgstr "Etunimi"
|
||||||
|
|
||||||
#: members/models.py:15
|
#: members/models.py:14
|
||||||
msgid "Last name"
|
msgid "Last name"
|
||||||
msgstr "Sukunimi"
|
msgstr "Sukunimi"
|
||||||
|
|
||||||
#: members/models.py:16 webapp/models.py:95 webapp/models.py:108
|
#: members/models.py:15 webapp/models.py:95 webapp/models.py:108
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "Sähköposti"
|
msgstr "Sähköposti"
|
||||||
|
|
||||||
#: members/models.py:17
|
#: members/models.py:16
|
||||||
msgid "Place of residence"
|
msgid "Place of residence"
|
||||||
msgstr "Asuinpaikka"
|
msgstr "Asuinpaikka"
|
||||||
|
|
||||||
#: members/models.py:19 members/models.py:84
|
#: members/models.py:18 members/models.py:83
|
||||||
#: members/templates/member_add_many.html:35
|
#: members/templates/member_add_many.html:35
|
||||||
msgid "AYY"
|
msgid "AYY"
|
||||||
msgstr "AYY"
|
msgstr "AYY"
|
||||||
|
|
||||||
#: members/models.py:20
|
#: members/models.py:19
|
||||||
msgid "JAS"
|
msgid "JAS"
|
||||||
msgstr "JAS"
|
msgstr "JAS"
|
||||||
|
|
||||||
#: members/models.py:70
|
#: members/models.py:69
|
||||||
msgid "Submitted"
|
msgid "Submitted"
|
||||||
msgstr "Lisätty"
|
msgstr "Lisätty"
|
||||||
|
|
||||||
#: members/models.py:82
|
#: members/models.py:81
|
||||||
msgid "Date"
|
msgid "Date"
|
||||||
msgstr "Päivämäärä"
|
msgstr "Päivämäärä"
|
||||||
|
|
||||||
#: members/models.py:83
|
#: members/models.py:82
|
||||||
msgid "Source"
|
msgid "Source"
|
||||||
msgstr "Lähde"
|
msgstr "Lähde"
|
||||||
|
|
||||||
#: members/models.py:85
|
#: members/models.py:84
|
||||||
msgid "Cash"
|
msgid "Cash"
|
||||||
msgstr "Käteinen"
|
msgstr "Käteinen"
|
||||||
|
|
||||||
#: members/models.py:86 members/templates/member_add_many.html:36
|
#: members/models.py:85 members/templates/member_add_many.html:36
|
||||||
msgid "Bank transfer"
|
msgid "Bank transfer"
|
||||||
msgstr "Tilisiirto"
|
msgstr "Tilisiirto"
|
||||||
|
|
||||||
#: members/models.py:103
|
#: members/models.py:102
|
||||||
msgid "Created"
|
msgid "Created"
|
||||||
msgstr "Lisätty"
|
msgstr "Lisätty"
|
||||||
|
|
||||||
@@ -291,7 +291,7 @@ msgid "Add member"
|
|||||||
msgstr "Lisää jäsen"
|
msgstr "Lisää jäsen"
|
||||||
|
|
||||||
#: members/templates/member_add.html:15 members/templates/member_edit.html:18
|
#: members/templates/member_add.html:15 members/templates/member_edit.html:18
|
||||||
#: members/templates/payment_add.html:15 members/templates/payment_edit.html:18
|
#: members/templates/payment_add.html:20 members/templates/payment_edit.html:18
|
||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr "Tallenna"
|
msgstr "Tallenna"
|
||||||
|
|
||||||
@@ -382,7 +382,15 @@ msgstr "Jäsenrekisteri"
|
|||||||
msgid "Members in register:"
|
msgid "Members in register:"
|
||||||
msgstr "Jäseniä:"
|
msgstr "Jäseniä:"
|
||||||
|
|
||||||
#: members/templates/member_list.html:27
|
#: members/templates/member_list.html:28 members/templates/payment_list.html:25
|
||||||
|
msgid "Search"
|
||||||
|
msgstr "Hae"
|
||||||
|
|
||||||
|
#: members/templates/member_list.html:36 members/templates/payment_list.html:33
|
||||||
|
msgid "Showing results for"
|
||||||
|
msgstr "Näytetään tulokset haulle"
|
||||||
|
|
||||||
|
#: members/templates/member_list.html:44
|
||||||
msgid "Download CSV"
|
msgid "Download CSV"
|
||||||
msgstr "Lataa CSV"
|
msgstr "Lataa CSV"
|
||||||
|
|
||||||
@@ -403,7 +411,7 @@ msgstr "Lisää useita"
|
|||||||
msgid "List payments"
|
msgid "List payments"
|
||||||
msgstr "Maksulistaus"
|
msgstr "Maksulistaus"
|
||||||
|
|
||||||
#: members/templates/members_base.html:63 members/templates/payment_add.html:8
|
#: members/templates/members_base.html:63 members/templates/payment_add.html:13
|
||||||
msgid "Add payment"
|
msgid "Add payment"
|
||||||
msgstr "Lisää maksu"
|
msgstr "Lisää maksu"
|
||||||
|
|
||||||
@@ -431,82 +439,89 @@ msgstr "Muokkaa maksua"
|
|||||||
msgid "Payment events"
|
msgid "Payment events"
|
||||||
msgstr "Maksutapahtumat"
|
msgstr "Maksutapahtumat"
|
||||||
|
|
||||||
#: members/views.py:138 members/views.py:209 members/views.py:235
|
#: members/templates/payment_list.html:18
|
||||||
msgid "No member id specified"
|
msgid "Payments in register:"
|
||||||
msgstr "Jäsenen ID ei määritelty"
|
msgstr "Maksutapahtumia:"
|
||||||
|
|
||||||
#: members/views.py:164
|
#: members/views/applications.py:49 members/views/applications.py:96
|
||||||
msgid "Successfully added member"
|
#: members/views/applications.py:124
|
||||||
msgstr "Onnistuneesti lisättiin jäsen"
|
|
||||||
|
|
||||||
#: members/views.py:189
|
|
||||||
msgid "Successfully updated member"
|
|
||||||
msgstr "Onnistuneesti päivitettiin jäsen"
|
|
||||||
|
|
||||||
#: members/views.py:197
|
|
||||||
msgid "Could not update member object"
|
|
||||||
msgstr "Jäsenobjektia ei voitu päivittää"
|
|
||||||
|
|
||||||
#: members/views.py:213
|
|
||||||
msgid "Successfully deleted member"
|
|
||||||
msgstr "Onnistuneesti poistettiin jäsen"
|
|
||||||
|
|
||||||
#: members/views.py:224
|
|
||||||
msgid "Could not delete member object"
|
|
||||||
msgstr "Jäsenobjektia ei voitu poistaa"
|
|
||||||
|
|
||||||
#: members/views.py:273 members/views.py:320 members/views.py:348
|
|
||||||
msgid "No application id specified"
|
msgid "No application id specified"
|
||||||
msgstr "Hakemuksen ID ei määritelty"
|
msgstr "Hakemuksen ID ei määritelty"
|
||||||
|
|
||||||
#: members/views.py:301
|
#: members/views/applications.py:77
|
||||||
msgid "Successfully accepted application"
|
msgid "Successfully accepted application"
|
||||||
msgstr "Onnistuneesti hyväksyttiin hakemus"
|
msgstr "Onnistuneesti hyväksyttiin hakemus"
|
||||||
|
|
||||||
#: members/views.py:308
|
#: members/views/applications.py:84
|
||||||
msgid "Could not accept application object"
|
msgid "Could not accept application object"
|
||||||
msgstr "Hakemusobjektia ei voitu hyväksyä"
|
msgstr "Hakemusobjektia ei voitu hyväksyä"
|
||||||
|
|
||||||
#: members/views.py:324
|
#: members/views/applications.py:100
|
||||||
msgid "Successfully deleted application"
|
msgid "Successfully deleted application"
|
||||||
msgstr "Onnistuneesti poistettiin hakemus"
|
msgstr "Onnistuneesti poistettiin hakemus"
|
||||||
|
|
||||||
#: members/views.py:336
|
#: members/views/applications.py:112
|
||||||
msgid "Could not delete application object"
|
msgid "Could not delete application object"
|
||||||
msgstr "Hakemusobjektia ei voitu poistaa"
|
msgstr "Hakemusobjektia ei voitu poistaa"
|
||||||
|
|
||||||
#: members/views.py:413
|
#: members/views/members.py:70 members/views/members.py:163
|
||||||
|
#: members/views/members.py:189
|
||||||
|
msgid "No member id specified"
|
||||||
|
msgstr "Jäsenen ID ei määritelty"
|
||||||
|
|
||||||
|
#: members/views/members.py:105
|
||||||
|
msgid "Failed to import members"
|
||||||
|
msgstr "Jäsenten tuonti epäonnistui"
|
||||||
|
|
||||||
|
#: members/views/members.py:118
|
||||||
|
msgid "Successfully added member"
|
||||||
|
msgstr "Onnistuneesti lisättiin jäsen"
|
||||||
|
|
||||||
|
#: members/views/members.py:143
|
||||||
|
msgid "Successfully updated member"
|
||||||
|
msgstr "Onnistuneesti päivitettiin jäsen"
|
||||||
|
|
||||||
|
#: members/views/members.py:151
|
||||||
|
msgid "Could not update member object"
|
||||||
|
msgstr "Jäsenobjektia ei voitu päivittää"
|
||||||
|
|
||||||
|
#: members/views/members.py:167
|
||||||
|
msgid "Successfully deleted member"
|
||||||
|
msgstr "Onnistuneesti poistettiin jäsen"
|
||||||
|
|
||||||
|
#: members/views/members.py:178
|
||||||
|
msgid "Could not delete member object"
|
||||||
|
msgstr "Jäsenobjektia ei voitu poistaa"
|
||||||
|
|
||||||
|
#: members/views/payments.py:69
|
||||||
msgid "Successfully added payment for member"
|
msgid "Successfully added payment for member"
|
||||||
msgstr "Onnistuneesti lisättiin maksutapahtuma jäsenelle"
|
msgstr "Onnistuneesti lisättiin maksutapahtuma jäsenelle"
|
||||||
|
|
||||||
#: members/views.py:431 members/views.py:449 members/views.py:468
|
#: members/views/payments.py:87 members/views/payments.py:105
|
||||||
|
#: members/views/payments.py:124
|
||||||
msgid "No payment id specified"
|
msgid "No payment id specified"
|
||||||
msgstr "Maksutapahtuman ID ei määritelty"
|
msgstr "Maksutapahtuman ID ei määritelty"
|
||||||
|
|
||||||
#: members/views.py:473
|
#: members/views/payments.py:129
|
||||||
msgid "Successfully deleted payment"
|
msgid "Successfully deleted payment"
|
||||||
msgstr "Onnistuneesti poistettiin maksutapahtuma"
|
msgstr "Onnistuneesti poistettiin maksutapahtuma"
|
||||||
|
|
||||||
#: members/views.py:483
|
#: members/views/payments.py:139
|
||||||
msgid "Could not delete payment object"
|
msgid "Could not delete payment object"
|
||||||
msgstr "Maksutapahtumaobjektia ei voitu poistaa"
|
msgstr "Maksutapahtumaobjektia ei voitu poistaa"
|
||||||
|
|
||||||
#: members/views.py:502
|
#: members/views/payments.py:158
|
||||||
msgid "Successfully updated payment"
|
msgid "Successfully updated payment"
|
||||||
msgstr "Onnistuneesti päivitettiin maksutapahtuma"
|
msgstr "Onnistuneesti päivitettiin maksutapahtuma"
|
||||||
|
|
||||||
#: members/views.py:509
|
#: members/views/payments.py:165
|
||||||
msgid "Could not update payment object"
|
msgid "Could not update payment object"
|
||||||
msgstr "Maksutapahtumaobjektia ei voitu päivittää"
|
msgstr "Maksutapahtumaobjektia ei voitu päivittää"
|
||||||
|
|
||||||
#: members/views.py:531
|
#: members/views/utils.py:110
|
||||||
msgid "Missing \"textfield\" POST request field"
|
msgid "Missing \"textfield\" POST request field"
|
||||||
msgstr "Puuttuva \"textfield\" POST-kenttä"
|
msgstr "Puuttuva \"textfield\" POST-kenttä"
|
||||||
|
|
||||||
#: members/views.py:583
|
|
||||||
msgid "Failed to import members"
|
|
||||||
msgstr "Jäsenten tuonti epäonnistui"
|
|
||||||
|
|
||||||
#: templates/footer.html:7
|
#: templates/footer.html:7
|
||||||
msgid "Copyright Aalto-yliopiston Sähköinsinöörikilta ry"
|
msgid "Copyright Aalto-yliopiston Sähköinsinöörikilta ry"
|
||||||
msgstr "Copyright Aalto-yliopiston Sähköinsinöörikilta ry"
|
msgstr "Copyright Aalto-yliopiston Sähköinsinöörikilta ry"
|
||||||
|
|||||||
@@ -21,6 +21,23 @@
|
|||||||
<span>{% trans "Members in register:" %} {{ member_count }}</span>
|
<span>{% trans "Members in register:" %} {{ member_count }}</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<form class="input-group" method="GET" action="/members/list">
|
||||||
|
<input class="form-control" type="text" name="q" placeholder="Teemu Teekkari" />
|
||||||
|
<span class="input-group-btn">
|
||||||
|
<input type="submit" class="btn" value="{% trans "Search" %}" />
|
||||||
|
</span>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% if request.GET.q %}
|
||||||
|
<div>
|
||||||
|
<div class="alert alert-info" role="alert">
|
||||||
|
{% trans "Showing results for" %} "{{ request.GET.q }}"
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
{{ table|safe }}
|
{{ table|safe }}
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
|
|||||||
@@ -14,6 +14,27 @@
|
|||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
<div class="member_count">
|
||||||
|
<span>{% trans "Payments in register:" %} {{ payment_count }}</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<form class="input-group" method="GET" action="/members/payments">
|
||||||
|
<input class="form-control" type="text" name="q" placeholder="Teemu Teekkari" />
|
||||||
|
<span class="input-group-btn">
|
||||||
|
<input type="submit" class="btn" value="{% trans "Search" %}" />
|
||||||
|
</span>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% if request.GET.q %}
|
||||||
|
<div>
|
||||||
|
<div class="alert alert-info" role="alert">
|
||||||
|
{% trans "Showing results for" %} "{{ request.GET.q }}"
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
{{ table|safe }}
|
{{ table|safe }}
|
||||||
</div>
|
</div>
|
||||||
{% endblock content %}
|
{% endblock content %}
|
||||||
|
|||||||
+21
-5
@@ -12,9 +12,11 @@ class MemberRegisterTestCase(TestCase):
|
|||||||
def setUp(self):
|
def setUp(self):
|
||||||
"""Setup testing environment by creating member and admin."""
|
"""Setup testing environment by creating member and admin."""
|
||||||
memb = Member.objects.create(first_name="Tidus", last_name="Tester")
|
memb = Member.objects.create(first_name="Tidus", last_name="Tester")
|
||||||
|
username, password = 'test_admin', 'password123'
|
||||||
test_admin = User.objects.create_superuser(
|
test_admin = User.objects.create_superuser(
|
||||||
'test_admin', 'myemail@test.com', 'password123')
|
username, 'myemail@test.com', password)
|
||||||
self.c = Client()
|
self.c = Client()
|
||||||
|
self.c.login(username=username, password=password)
|
||||||
|
|
||||||
def test_member_created(self):
|
def test_member_created(self):
|
||||||
"""Test member creation."""
|
"""Test member creation."""
|
||||||
@@ -24,13 +26,27 @@ class MemberRegisterTestCase(TestCase):
|
|||||||
def test_import_csv_single_line(self):
|
def test_import_csv_single_line(self):
|
||||||
"""Test csv import only with single line in csv file."""
|
"""Test csv import only with single line in csv file."""
|
||||||
data = 'Teppo, Tulppu, teppo@tulppu.fi, Ankkalinna, 0, 0'
|
data = 'Teppo, Tulppu, teppo@tulppu.fi, Ankkalinna, 0, 0'
|
||||||
response = self.c.post('/members/import_csv', {'textarea': data})
|
response = self.c.post('/members/import_csv', {'textarea': data}, follow=True)
|
||||||
self.assertIn(response.status_code, [200, 302])
|
self.assertEqual(response.status_code, 200)
|
||||||
|
|
||||||
def test_import_csv_multi_line(self):
|
def test_import_csv_multi_line(self):
|
||||||
"""Test csv import with multilined csv."""
|
"""Test csv import with multilined csv."""
|
||||||
data = ('Teppo, Tulppu, teppo@tulppu.fi, Ankkalinna, 0, 0\n'
|
data = ('Teppo, Tulppu, teppo@tulppu.fi, Ankkalinna, 0, 0\n'
|
||||||
'Reiska, Remontti, remontti@reiska.fi, Värisilmä, 1, 1')
|
'Reiska, Remontti, remontti@reiska.fi, Värisilmä, 1, 1')
|
||||||
|
|
||||||
response = self.c.post('/members/import_csv', {'textarea': data})
|
response = self.c.post('/members/import_csv', {'textarea': data}, follow=True)
|
||||||
self.assertIn(response.status_code, [200, 302])
|
self.assertEqual(response.status_code, 200)
|
||||||
|
|
||||||
|
def test_autocomplete_search_found(self):
|
||||||
|
"""Test member autocomplete search"""
|
||||||
|
search_terms = 'Tidus'
|
||||||
|
response = self.c.get('/members/member-autocomplete?q={}'.format(search_terms), follow=True)
|
||||||
|
results = response.json()['results']
|
||||||
|
self.assertEqual(len(results), 1)
|
||||||
|
|
||||||
|
def test_autocomplete_search_not_found(self):
|
||||||
|
"""Test member autocomplete search"""
|
||||||
|
search_terms = 'Notfound'
|
||||||
|
response = self.c.get('/members/member-autocomplete?q={}'.format(search_terms), follow=True)
|
||||||
|
results = response.json()['results']
|
||||||
|
self.assertEqual(len(results), 0)
|
||||||
|
|||||||
+5
-1
@@ -40,6 +40,10 @@ from members.views import application_form_success
|
|||||||
favicon_view = RedirectView.as_view(
|
favicon_view = RedirectView.as_view(
|
||||||
url='static/img/favicon.ico', permanent=True)
|
url='static/img/favicon.ico', permanent=True)
|
||||||
|
|
||||||
|
member_autocomplete_view = login_required(
|
||||||
|
permission_required('members.change_member', login_url='/login')(MemberAutoComplete.as_view())
|
||||||
|
)
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
|
|
||||||
# landing page
|
# landing page
|
||||||
@@ -117,7 +121,7 @@ urlpatterns = [
|
|||||||
# member select autocomplete view
|
# member select autocomplete view
|
||||||
url(
|
url(
|
||||||
r'^member-autocomplete/$',
|
r'^member-autocomplete/$',
|
||||||
permission_required('members.change_member')(MemberAutoComplete.as_view()),
|
member_autocomplete_view,
|
||||||
name='member-autocomplete',
|
name='member-autocomplete',
|
||||||
),
|
),
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
from django.shortcuts import render
|
from django.shortcuts import render
|
||||||
from django.contrib.auth.decorators import permission_required
|
from django.contrib.auth.decorators import permission_required
|
||||||
|
from django.utils.decorators import method_decorator
|
||||||
from django.views.decorators.http import require_http_methods
|
from django.views.decorators.http import require_http_methods
|
||||||
from django.views.decorators.csrf import ensure_csrf_cookie
|
from django.views.decorators.csrf import ensure_csrf_cookie
|
||||||
from django.http import HttpResponse, HttpResponseRedirect
|
from django.http import HttpResponse, HttpResponseRedirect
|
||||||
@@ -24,7 +25,13 @@ from members.views.utils import *
|
|||||||
@permission_required('members.change_member', login_url='/login')
|
@permission_required('members.change_member', login_url='/login')
|
||||||
def member_list(request, *args, **kwargs):
|
def member_list(request, *args, **kwargs):
|
||||||
"""Render members list."""
|
"""Render members list."""
|
||||||
members = Member.objects.all()
|
search = request.GET.get('q', None)
|
||||||
|
if search:
|
||||||
|
firsts = Member.objects.filter(first_name__istartswith=search)
|
||||||
|
lasts = Member.objects.filter(last_name__istartswith=search)
|
||||||
|
members = firsts | lasts
|
||||||
|
else:
|
||||||
|
members = Member.objects.all()
|
||||||
|
|
||||||
table = MemberTable(members,
|
table = MemberTable(members,
|
||||||
request=request,
|
request=request,
|
||||||
@@ -33,7 +40,6 @@ def member_list(request, *args, **kwargs):
|
|||||||
|
|
||||||
table.paginate(page=request.GET.get('page', 1), per_page=25)
|
table.paginate(page=request.GET.get('page', 1), per_page=25)
|
||||||
table_html = convert_table_to_html(table, request)
|
table_html = convert_table_to_html(table, request)
|
||||||
|
|
||||||
context = {
|
context = {
|
||||||
'table': table_html,
|
'table': table_html,
|
||||||
'member_count': len(members),
|
'member_count': len(members),
|
||||||
@@ -187,12 +193,13 @@ def member_edit(request, *args, **kwargs):
|
|||||||
|
|
||||||
|
|
||||||
class MemberAutoComplete(autocomplete.Select2QuerySetView):
|
class MemberAutoComplete(autocomplete.Select2QuerySetView):
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
qs = Member.objects.all()
|
qs = Member.objects.all()
|
||||||
|
|
||||||
if self.q:
|
if self.q:
|
||||||
firsts = qs.filter(first_name__istartswith=self.q)
|
firsts = qs.filter(first_name__istartswith=self.q)
|
||||||
lasts = qs.filter(last_name__istartswith=self.q)
|
lasts = qs.filter(last_name__istartswith=self.q)
|
||||||
qs = firsts.union(lasts)
|
qs = firsts | lasts
|
||||||
|
|
||||||
return qs
|
return qs
|
||||||
|
|||||||
@@ -21,7 +21,13 @@ from members.forms import PaymentForm
|
|||||||
@permission_required('members.change_member', login_url='/login')
|
@permission_required('members.change_member', login_url='/login')
|
||||||
def payment_list(request, *args, **kwargs):
|
def payment_list(request, *args, **kwargs):
|
||||||
"""Render list of payments."""
|
"""Render list of payments."""
|
||||||
payments = Payment.objects.all()
|
search = request.GET.get('q', None)
|
||||||
|
if search:
|
||||||
|
firsts = Payment.objects.filter(member__first_name__istartswith=search)
|
||||||
|
lasts = Payment.objects.filter(member__last_name__istartswith=search)
|
||||||
|
payments = firsts | lasts
|
||||||
|
else:
|
||||||
|
payments = Payment.objects.all()
|
||||||
|
|
||||||
table = PaymentTable(payments,
|
table = PaymentTable(payments,
|
||||||
request=request,
|
request=request,
|
||||||
|
|||||||
Reference in New Issue
Block a user