From c36ef9ad3f10830df3e38db4e04b34225e6ec7a8 Mon Sep 17 00:00:00 2001 From: Jan Tuomi Date: Thu, 1 Jun 2017 18:39:26 +0300 Subject: [PATCH] Fix payment reference issue with duplicate resolver --- locale/en/LC_MESSAGES/django.mo | Bin 6721 -> 6721 bytes locale/en/LC_MESSAGES/django.po | 48 +++++++------- locale/fi/LC_MESSAGES/django.mo | Bin 8158 -> 8267 bytes locale/fi/LC_MESSAGES/django.po | 61 +++++++++--------- members/migrations/0013_auto_20170601_1822.py | 21 ++++++ members/models.py | 6 +- members/views.py | 6 ++ 7 files changed, 87 insertions(+), 55 deletions(-) create mode 100644 members/migrations/0013_auto_20170601_1822.py diff --git a/locale/en/LC_MESSAGES/django.mo b/locale/en/LC_MESSAGES/django.mo index 2f37095a4904758891e9052241d56bac162b0af5..70490a7be82a778cce2eaf6357b7722cd9dfad50 100644 GIT binary patch delta 23 fcmX?Ta?oVM3_&h4T?0b}LklZI!_A8X=W_r6UbhEC delta 23 fcmX?Ta?oVM3_&haT_Z~cBO@yli_MD!=W_r6Uo{6( diff --git a/locale/en/LC_MESSAGES/django.po b/locale/en/LC_MESSAGES/django.po index 92d0cd8..6958f9e 100644 --- a/locale/en/LC_MESSAGES/django.po +++ b/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-05-29 22:48+0300\n" +"POT-Creation-Date: 2017-06-01 18:11+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -394,96 +394,96 @@ msgid "Language" msgstr "Language" #: members/templates/settings.html:20 sikweb/settings-sample.py:179 -#: sikweb/settings.py:177 +#: sikweb/settings.py:178 msgid "Finnish" msgstr "Finnish" #: members/templates/settings.html:21 sikweb/settings-sample.py:178 -#: sikweb/settings.py:176 +#: sikweb/settings.py:177 msgid "English" msgstr "English" -#: members/views.py:128 members/views.py:185 members/views.py:204 +#: members/views.py:129 members/views.py:186 members/views.py:205 msgid "No member id specified" msgstr "No member id specified" -#: members/views.py:150 +#: members/views.py:151 msgid "Successfully added member" msgstr "Successfully added member" -#: members/views.py:171 +#: members/views.py:172 msgid "Successfully updated member" msgstr "Successfully updated member" -#: members/views.py:175 +#: members/views.py:176 msgid "Could not update member object" msgstr "Could not update member object" -#: members/views.py:189 +#: members/views.py:190 msgid "Successfully deleted member" msgstr "Successfully deleted member" -#: members/views.py:195 +#: members/views.py:196 msgid "Could not delete member object" msgstr "Could not delete member object" -#: members/views.py:238 members/views.py:272 members/views.py:290 +#: members/views.py:239 members/views.py:273 members/views.py:291 msgid "No application id specified" msgstr "No application id specified" -#: members/views.py:259 +#: members/views.py:260 msgid "Successfully accepted application" msgstr "Successfully accepted application" -#: members/views.py:262 +#: members/views.py:263 msgid "Could not accept application object" msgstr "Could not accept application object" -#: members/views.py:276 +#: members/views.py:277 msgid "Successfully deleted application" msgstr "Successfully deleted application" -#: members/views.py:281 +#: members/views.py:282 msgid "Could not delete application object" msgstr "Could not delete application object" -#: members/views.py:345 +#: members/views.py:346 msgid "Successfully added payment for member" msgstr "Successfully added payment for member" -#: members/views.py:358 members/views.py:371 members/views.py:385 +#: members/views.py:359 members/views.py:372 members/views.py:386 msgid "No payment id specified" msgstr "No payment id specified" -#: members/views.py:389 +#: members/views.py:390 msgid "Successfully deleted payment" msgstr "Successfully deleted payment" -#: members/views.py:394 +#: members/views.py:395 msgid "Could not delete payment object" msgstr "Could not delete payment object" -#: members/views.py:409 +#: members/views.py:410 msgid "Successfully updated payment" msgstr "Successfully updated payment" -#: members/views.py:412 +#: members/views.py:413 msgid "Could not update payment object" msgstr "Could not update payment object" -#: members/views.py:429 +#: members/views.py:430 msgid "Missing \"textfield\" POST request field" msgstr "Missing \"textfield\" POST request field" -#: members/views.py:434 +#: members/views.py:435 msgid "Successfully imported multiple members" msgstr "Successfully imported multiple members" -#: members/views.py:437 +#: members/views.py:438 msgid "Failed to import members" msgstr "Failed to import members" -#: members/views.py:497 +#: members/views.py:498 #, fuzzy #| msgid "Successfully deleted member" msgid "Successfully resolved all member conflicts." diff --git a/locale/fi/LC_MESSAGES/django.mo b/locale/fi/LC_MESSAGES/django.mo index dfa853d232c16429aaeea91ab43ae8ef66b4a0a9..64ef0d5b461f94db2b278c9449e47a4421c62365 100644 GIT binary patch delta 2205 zcmXxleQZ-z7{~F`$?VGpvhm^uY`Z9P)3MnSI|vFBg)qV(l4WLb8K$k()OIav%aBbi z|4f;gV$wLHXdr<PyEljXBsGJN_umT+9T!I(oh;pT@=tIwDyZo&`n1bT2+$&7oDDP{;8@Oiuu z$8iy!!D_r{okCq-S!xVRh_~6Q`jF_hAhlxBc_B{}U3anLTGFunN?I^{9>gwjV@g zz6ROTtVdO98|u1;P>DQ@N^}R7vcGwfMllYd7T#z3FC$;`IzL+YsO=X}3!TLZynvc_ z1r_KuY{P$%uW6&4TE7c*K7>m#fjJGlKw|;Ef{OSA*5fH8d2%s^F${=CwLv6GN72qIhgJC;<7?s%= zYW`cO>)u7J^FFG?pP>@@6>G7S-5p$kN}xSQL$6&5mEkZpV8LGStv&x2YJ&>OG@T)m zw5h|VaTO}yw^0F2U^AXWmHuxmLf?EIco$>%82#LCZu}7%mr$h|rk}`UA!r{&iT33VaJL$25A_-yEQ!g+`|bj5&#V z2v6Joc~t4YLIp61dYyhmWqcKt(Qj4{(WwH9Q0v}~N~9SzuLV_!4d~PR-$_FyiXbI1 zy;y~Vs0oKq8;xNrzKPmk3U$xDJV|m6YTi85#sO3X)}n6ZcBHr_jM}dsb2_n?hB6yQ z^+!+}zlw_dAS%N#)W+|i7WfFY(bx9;4|e=_RK<#UvUO`qQ5CJiHQ0z+H@<}W>ov(T zpbSP(8SF>aFynX&et`<`57fjWF4BS}*2SnlsST)SWhLsm`%v>Xqbl2B$7869rmLvG zHtM%0ModQwx?XF$Yvja5$sfQ(3+v98>srhB z!&Y6Lx-7RSr_ENA)*sf?t!6Q_w||<;pcnq=-EwQKw5{(qPj~mZpL5RhJm>s=zw{v!#L?J4 zg9b2$=JFRdV1kRT!-fBu4dFo=MwrD4d^z@y#r{`Fq~RYlu;k^JCM-o4PRD*Vnt3g< zR;WiS)q-AkCz{CJXrgPdfb~N!jVYKxBhAMCcH|p&@Z-e$Vt)vo=m?hL`{;dV(Lg6~ zIi5qlVKGrVe;a!K9<0Pwm~~()jjM1Fjd(xK!GlQB;WIRYaZKR^x`)4_*PoB$7ot;$ zu9)#6v=Wu*JU60=EJg!vozDI{(8j~}j&=Q|O6Zsaa@gk?bO6;b;g#CUUv#-&xMD5hk8#>Xw?Zdga9-a6lydDprfsRJc zqk)xC9_Oiy-h|G#42dzUK#~t@kQl-SB#~@*nnpbXyYXf`g)W%n(e~jiMoU_bzRxvi z>08kE`7ZQ*ehSlg5PgkDa5nyc242iQ%)>@>{w^$F{m>f+GU&tiWbD6ymi|RFfLGAh z=rEe`5j3Nt(Nkyz#?SzNK^OWPy>BwnTZt5!SUDE@{?DdiNg8k#-htlGjV{!Ox8nf1 zz%g{sPe(sT@B0E>_z$!KlX$}1$||I&p$6TOrEz>YX3eZU4s@UkuSO$(7|pN`T{w$Q z@GQE}zIgsn9Df(B*a-TNeu`G~8(f0Fqw~(^iTCYjDyRNt(!qckbRyS;Em(zn(E#5= zZ#;=k_(^me{Zo1lE$IdHx~WX&eMM+x%h2&!w4#mZI!k9!e@}EU;6z>MjqA`%GU)kj z=tDM$mi7&-!_#Oc{sT!v70$s{^r7oT6L}tQz_-!)#?e5&Z>C{{zu_~O$Lub=1I=_N zy6~&$!}AgPK7Uz}J34Jq*#?^be_Ci%bF_1;%M~VXOFWUgFIkZo$PFY{CN}0qk_%Ih zbMAhQ^|@4PyIURlbGuTliN|thQeCMG{RcQ69lkYxQ*!v{l7U2iLv3Aix~^_febaEy Rl@I0TDl5u|XI3mo{0rrE$dUj6 diff --git a/locale/fi/LC_MESSAGES/django.po b/locale/fi/LC_MESSAGES/django.po index f8a6dfb..c148945 100644 --- a/locale/fi/LC_MESSAGES/django.po +++ b/locale/fi/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-05-29 22:48+0300\n" +"POT-Creation-Date: 2017-06-01 18:11+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -300,7 +300,8 @@ msgstr "Ongelmalliset jäsentiedot" #: members/templates/member_duplicates.html:13 msgid "" "Found conflicting member entries. Choose how to handle the problematic data." -msgstr "Ongelmallista jäsendataa havaittu. Valitse, miten ongelmat ratkaistaan." +msgstr "" +"Ongelmallista jäsendataa havaittu. Valitse, miten ongelmat ratkaistaan." #: members/templates/member_duplicates.html:29 msgid "Which one has the correct information for this member?" @@ -330,8 +331,10 @@ msgstr "Jäsenrekisteri" msgid "" "There are duplicate member entries in the register.\n" " Please visit duplicate resolver." -msgstr "Jäsenrekisterissä on duplikaattijäseniä.\n" -" Käytä ongelman ratkaisuun duplikaattityökalua." +msgstr "" +"Jäsenrekisterissä on duplikaattijäseniä.\n" +" Käytä ongelman ratkaisuun duplikaattityökalua." #: members/templates/member_list.html:30 msgid "Download CSV" @@ -399,100 +402,98 @@ msgid "Language" msgstr "Kieli" #: members/templates/settings.html:20 sikweb/settings-sample.py:179 -#: sikweb/settings.py:177 +#: sikweb/settings.py:178 msgid "Finnish" msgstr "suomi" #: members/templates/settings.html:21 sikweb/settings-sample.py:178 -#: sikweb/settings.py:176 +#: sikweb/settings.py:177 msgid "English" msgstr "englanti" -#: members/views.py:128 members/views.py:185 members/views.py:204 +#: members/views.py:129 members/views.py:186 members/views.py:205 msgid "No member id specified" msgstr "Jäsenen ID ei määritelty" -#: members/views.py:150 +#: members/views.py:151 msgid "Successfully added member" msgstr "Onnistuneesti lisättiin jäsen" -#: members/views.py:171 +#: members/views.py:172 msgid "Successfully updated member" msgstr "Onnistuneesti päivitettiin jäsen" -#: members/views.py:175 +#: members/views.py:176 msgid "Could not update member object" msgstr "Jäsenobjektia ei voitu päivittää" -#: members/views.py:189 +#: members/views.py:190 msgid "Successfully deleted member" msgstr "Onnistuneesti poistettiin jäsen" -#: members/views.py:195 +#: members/views.py:196 msgid "Could not delete member object" msgstr "Jäsenobjektia ei voitu poistaa" -#: members/views.py:238 members/views.py:272 members/views.py:290 +#: members/views.py:239 members/views.py:273 members/views.py:291 msgid "No application id specified" msgstr "Hakemuksen ID ei määritelty" -#: members/views.py:259 +#: members/views.py:260 msgid "Successfully accepted application" msgstr "Onnistuneesti hyväksyttiin hakemus" -#: members/views.py:262 +#: members/views.py:263 msgid "Could not accept application object" msgstr "Hakemusobjektia ei voitu hyväksyä" -#: members/views.py:276 +#: members/views.py:277 msgid "Successfully deleted application" msgstr "Onnistuneesti poistettiin hakemus" -#: members/views.py:281 +#: members/views.py:282 msgid "Could not delete application object" msgstr "Hakemusobjektia ei voitu poistaa" -#: members/views.py:345 +#: members/views.py:346 msgid "Successfully added payment for member" msgstr "Onnistuneesti lisättiin maksutapahtuma jäsenelle" -#: members/views.py:358 members/views.py:371 members/views.py:385 +#: members/views.py:359 members/views.py:372 members/views.py:386 msgid "No payment id specified" msgstr "Maksutapahtuman ID ei määritelty" -#: members/views.py:389 +#: members/views.py:390 msgid "Successfully deleted payment" msgstr "Onnistuneesti poistettiin maksutapahtuma" -#: members/views.py:394 +#: members/views.py:395 msgid "Could not delete payment object" msgstr "Maksutapahtumaobjektia ei voitu poistaa" -#: members/views.py:409 +#: members/views.py:410 msgid "Successfully updated payment" msgstr "Onnistuneesti päivitettiin maksutapahtuma" -#: members/views.py:412 +#: members/views.py:413 msgid "Could not update payment object" msgstr "Maksutapahtumaobjektia ei voitu päivittää" -#: members/views.py:429 +#: members/views.py:430 msgid "Missing \"textfield\" POST request field" msgstr "Puuttuva \"textfield\" POST-kenttä" -#: members/views.py:434 +#: members/views.py:435 msgid "Successfully imported multiple members" msgstr "Onnistuneesti tuotu useita jäseniä" -#: members/views.py:437 +#: members/views.py:438 msgid "Failed to import members" msgstr "Jäsenten tuonti epäonnistui" -#: members/views.py:497 -#, fuzzy -#| msgid "Successfully deleted member" +#: members/views.py:498 msgid "Successfully resolved all member conflicts." -msgstr "Onnistuneesti poistettiin jäsen" +msgstr "Kaikki jäsenkonfliktit ratkaistu onnistuneesti." #: templates/footer.html:7 msgid "Copyright Aalto-yliopiston Sähköinsinöörikilta ry" diff --git a/members/migrations/0013_auto_20170601_1822.py b/members/migrations/0013_auto_20170601_1822.py new file mode 100644 index 0000000..258e13a --- /dev/null +++ b/members/migrations/0013_auto_20170601_1822.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11 on 2017-06-01 15:22 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('members', '0012_memberconflict'), + ] + + operations = [ + migrations.AlterField( + model_name='payment', + name='member', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='payments', to='members.Member'), + ), + ] diff --git a/members/models.py b/members/models.py index 1afdde3..96863c7 100644 --- a/members/models.py +++ b/members/models.py @@ -85,7 +85,11 @@ class Payment(models.Model): ('bank_transfer', _('Bank transfer')), ], max_length=255) - member = models.ForeignKey('Member', on_delete=models.SET_NULL, blank=True, null=True) + member = models.ForeignKey('Member', + on_delete=models.PROTECT, + blank=True, + null=True, + related_name='payments') def __str__(self): return 'Payment no. {}, {}'.format(self.id, str(self.date)) diff --git a/members/views.py b/members/views.py index 49545a8..59ca9ee 100644 --- a/members/views.py +++ b/members/views.py @@ -486,8 +486,14 @@ def resolve_conflict(request, *args, **kwargs): second_member = conflict.second_member if action == 'first': + for payment in second_member.payments.all(): + payment.member = first_member + payment.save() second_member.delete() elif action == 'second': + for payment in first_member.payments.all(): + payment.member = second_member + payment.save() first_member.delete() conflict.delete()