From 9974b3c02c1bf27e88e63c38438689d9efd9d162 Mon Sep 17 00:00:00 2001 From: Juhana Luomanen Date: Sat, 27 May 2017 13:00:30 +0300 Subject: [PATCH 01/22] Add tabs for slides and rotations --- infoscreen/templates/infoscreen_admin.html | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/infoscreen/templates/infoscreen_admin.html b/infoscreen/templates/infoscreen_admin.html index b9e550c..6f5f241 100644 --- a/infoscreen/templates/infoscreen_admin.html +++ b/infoscreen/templates/infoscreen_admin.html @@ -31,6 +31,10 @@

{% trans "Infoscreen Admin Pane" %}

+

{% trans "Info items" %}

From 700896e3f8fa1a3cb65dcd7c856ad3885efaf485 Mon Sep 17 00:00:00 2001 From: Juhana Luomanen Date: Sat, 27 May 2017 13:33:03 +0300 Subject: [PATCH 02/22] Move slides and rotations under tabs --- infoscreen/templates/infoscreen_admin.html | 160 +++++++++++---------- 1 file changed, 86 insertions(+), 74 deletions(-) diff --git a/infoscreen/templates/infoscreen_admin.html b/infoscreen/templates/infoscreen_admin.html index 6f5f241..032550f 100644 --- a/infoscreen/templates/infoscreen_admin.html +++ b/infoscreen/templates/infoscreen_admin.html @@ -35,82 +35,94 @@
  • Slides
  • -
    -
    -

    {% trans "Info items" %}

    -
    {% trans "Infoitems available for rotations" %}
    - - - - - - - - - - - - - - - -
    {% trans "Item" %}{% trans "Type" %}{% trans "Set duration" %}{% trans "Add to rotation" %}{% trans "Delete" %}
    {$ i.name $}{$ i.display_name $}
    -

    {% trans "Create new item" %}

    - - - - - -
    {% trans "Item type" %} - -
    -
    -
    -
    -

    {% trans "Rotations" %}

    -
    - {% trans "Select rotation to edit" %}: -
    - - - - - - - - - - - - - - - - - - - - - - -
    {% trans "Rotation" %}{% trans "id" %}{% trans "Select" %}{% trans "Preview" %}{% trans "Delete" %}
    {$ r.name $}{$ r.id $}
    +
    +
    +
    +
    +

    {% trans "Create new item" %}

    + + + + + +
    {% trans "Item type" %} + +
    +
    +
    +
    +

    {% trans "Info items" %}

    +
    {% trans "Infoitems available for rotations" %}
    + + + + + + + + + + + + + + + +
    {% trans "Item" %}{% trans "Type" %}{% trans "Set duration" %}{% trans "Add to rotation" %}{% trans "Delete" %}
    {$ i.name $}{$ i.display_name $}
    -

    {% trans "Rotation" %}: {$ selected_rot.name $}

    -
    {% trans "Instances in currently selected rotation" %}:
    - - - - - - - - - - -
    {% trans "Instance" %}{% trans "Duration" %}{% trans "Delete" %}
    {$ i.item.name $}{$ i.duration $} s
    +
    +
    +
    +
    +

    {% trans "Rotations" %}

    +
    + {% trans "Select rotation to edit" %}: +
    + + + + + + + + + + + + + + + + + + + + + + +
    {% trans "Rotation" %}{% trans "id" %}{% trans "Select" %}{% trans "Preview" %}{% trans "Delete" %}
    {$ r.name $}{$ r.id $}
    +
    + +
    +

    {% trans "Rotation" %}: {$ selected_rot.name $}

    +
    {% trans "Instances in currently selected rotation" %}:
    + + + + + + + + + + +
    {% trans "Instance" %}{% trans "Duration" %}{% trans "Delete" %}
    {$ i.item.name $}{$ i.duration $} s
    +
    +
    +
    {% include "footer.html" %} From 3e2fb90a16de767fa62b4ec4d7bd82d6e9ff12d2 Mon Sep 17 00:00:00 2001 From: Juhana Luomanen Date: Sat, 27 May 2017 13:53:33 +0300 Subject: [PATCH 03/22] Add tab for rotation management --- infoscreen/templates/infoscreen_admin.html | 58 ++++++++++++++++++++-- 1 file changed, 53 insertions(+), 5 deletions(-) diff --git a/infoscreen/templates/infoscreen_admin.html b/infoscreen/templates/infoscreen_admin.html index 032550f..04e80d9 100644 --- a/infoscreen/templates/infoscreen_admin.html +++ b/infoscreen/templates/infoscreen_admin.html @@ -34,6 +34,8 @@
    @@ -59,15 +61,11 @@ {% trans "Item" %} {% trans "Type" %} - {% trans "Set duration" %} - {% trans "Add to rotation" %} {% trans "Delete" %} {$ i.name $} {$ i.display_name $} - - @@ -75,7 +73,28 @@
    -
    +
    +
    +

    {% trans "Info items" %}

    +
    {% trans "Infoitems available for rotations" %}
    + + + + + + + + + + + + + + + +
    {% trans "Item" %}{% trans "Type" %}{% trans "Set duration" %}{% trans "Add to rotation" %}{% trans "Delete" %}
    {$ i.name $}{$ i.display_name $}
    + +

    {% trans "Rotations" %}

    @@ -106,6 +125,7 @@
    +

    {% trans "Rotation" %}: {$ selected_rot.name $}

    {% trans "Instances in currently selected rotation" %}:
    @@ -122,6 +142,34 @@
    +
    +
    +

    {% trans "Rotations" %}

    +
    + {% trans "Select rotation to edit" %}: +
    + + + + + + + + + + + + + + + + + + + +
    {% trans "Rotation" %}{% trans "id" %}{% trans "Preview" %}{% trans "Delete" %}
    {$ r.name $}{$ r.id $}
    +
    +
    From 362422b86b49e2d3a6fdcf914504c190a986c1eb Mon Sep 17 00:00:00 2001 From: Jan Tuomi Date: Sat, 27 May 2017 15:05:57 +0300 Subject: [PATCH 04/22] Clean up login page styles --- webapp/static/css/login.css | 19 ++++++++++++++++--- webapp/templates/login.html | 2 +- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/webapp/static/css/login.css b/webapp/static/css/login.css index 5c16cf1..b4959e3 100644 --- a/webapp/static/css/login.css +++ b/webapp/static/css/login.css @@ -1,7 +1,20 @@ +html { + width: 100%; + height: 100%; +} + +body { + max-width: 760px; + margin: auto; +} + +h1 { + padding-bottom: 3rem; + padding-top: 3rem; +} + #content-body { - width: 50vw; - max-width: 800px; - margin: 40px auto; + width: 100%; } #login-button { diff --git a/webapp/templates/login.html b/webapp/templates/login.html index 8688195..4c85bc3 100644 --- a/webapp/templates/login.html +++ b/webapp/templates/login.html @@ -19,7 +19,7 @@
    -

    SIK Admin

    +

    SIK Admin

    {% csrf_token %}
    From 1cc936674c86ae5a56df0db00d548cb38e55c916 Mon Sep 17 00:00:00 2001 From: Juhana Luomanen Date: Sat, 27 May 2017 15:11:16 +0300 Subject: [PATCH 05/22] Modify rotation tab to a dropdown menu --- infoscreen/templates/infoscreen_admin.html | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/infoscreen/templates/infoscreen_admin.html b/infoscreen/templates/infoscreen_admin.html index 04e80d9..307769e 100644 --- a/infoscreen/templates/infoscreen_admin.html +++ b/infoscreen/templates/infoscreen_admin.html @@ -25,7 +25,7 @@
    -
    +

    {% trans "Infoscreen Admin Pane" %}

    @@ -33,9 +33,12 @@
    @@ -143,7 +146,8 @@
    -
    +

    {% trans "Rotations" %}

    {% trans "Select rotation to edit" %}: From d06bdd7e23fa535b3057e3d606794b9bdf5b9fcc Mon Sep 17 00:00:00 2001 From: Juhana Luomanen Date: Sun, 28 May 2017 14:42:44 +0300 Subject: [PATCH 06/22] Fix header width --- infoscreen/static/css/infoscreen_admin.css | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/infoscreen/static/css/infoscreen_admin.css b/infoscreen/static/css/infoscreen_admin.css index 6031fcd..a7284e4 100644 --- a/infoscreen/static/css/infoscreen_admin.css +++ b/infoscreen/static/css/infoscreen_admin.css @@ -2,4 +2,8 @@ td{ max-width:12vw; overflow:hidden; word-wrap:break-word; -} \ No newline at end of file +} + +#header{ + max-width: 100%; +} From d3d721abeb65ea0e6c7a957ecd832b11c4f411c5 Mon Sep 17 00:00:00 2001 From: Juhana Luomanen Date: Sun, 28 May 2017 14:43:39 +0300 Subject: [PATCH 07/22] Make infoadmin tabs more descriptive --- infoscreen/templates/infoscreen_admin.html | 41 ++++------------------ 1 file changed, 7 insertions(+), 34 deletions(-) diff --git a/infoscreen/templates/infoscreen_admin.html b/infoscreen/templates/infoscreen_admin.html index 307769e..d48c475 100644 --- a/infoscreen/templates/infoscreen_admin.html +++ b/infoscreen/templates/infoscreen_admin.html @@ -32,13 +32,14 @@
    @@ -98,39 +99,11 @@
    -
    -

    {% trans "Rotations" %}

    -
    - {% trans "Select rotation to edit" %}: -
    - - - - - - - - - - - - - - - - - - - - - - -
    {% trans "Rotation" %}{% trans "id" %}{% trans "Select" %}{% trans "Preview" %}{% trans "Delete" %}
    {$ r.name $}{$ r.id $}
    -
    -
    -

    {% trans "Rotation" %}: {$ selected_rot.name $}

    +
    +

    {% trans "Rotation" %}: {$ selected_rot.name $}

    +
    {% trans "Instances in currently selected rotation" %}:
    From ca9d8751313d7b9d7fd349bc294b517d7d7472ea Mon Sep 17 00:00:00 2001 From: Juhana Luomanen Date: Sun, 28 May 2017 15:32:57 +0300 Subject: [PATCH 08/22] Add missing div --- infoscreen/templates/infoscreen_admin.html | 1 + 1 file changed, 1 insertion(+) diff --git a/infoscreen/templates/infoscreen_admin.html b/infoscreen/templates/infoscreen_admin.html index d48c475..3128cf6 100644 --- a/infoscreen/templates/infoscreen_admin.html +++ b/infoscreen/templates/infoscreen_admin.html @@ -118,6 +118,7 @@
    +
    From cc9768b8953e4c67a866edbd81d9d745163b7a20 Mon Sep 17 00:00:00 2001 From: Jan Tuomi Date: Sun, 28 May 2017 22:03:02 +0300 Subject: [PATCH 09/22] Mobile login screen and translations --- locale/en/LC_MESSAGES/django.mo | Bin 6615 -> 6721 bytes locale/en/LC_MESSAGES/django.po | 83 ++++++++++++++++++-------------- locale/fi/LC_MESSAGES/django.mo | Bin 7111 -> 7259 bytes locale/fi/LC_MESSAGES/django.po | 83 ++++++++++++++++++-------------- webapp/static/css/login.css | 14 ++++++ webapp/templates/login.html | 12 ++--- 6 files changed, 116 insertions(+), 76 deletions(-) diff --git a/locale/en/LC_MESSAGES/django.mo b/locale/en/LC_MESSAGES/django.mo index 9435ae5ef9e12ea3d5ec99f139a1e130cfe04347..de97be5352f09e9eff6e67864f6557912b19c17c 100644 GIT binary patch literal 6721 zcmeH}e~cYf700jq5*84Pl^-H{sT5k;S9S}9vixXYci*y#zX^&2?h;@goGH0CVsy2?*3@` z5&X}X-n=uPd+yx1_uO;Ox$nMo{%Kz|l*7o!kw;H8=0UjegFGnroMp_j@Qd(FcxzXO z2OwQd9d3XPcm}-RwSNQhGY|7P2YwHp4d>x`@M)+227Va*C8&O{!;SD?umsoh(P?l$ zJQv>X^n*|)CU6U!g`a}ocYG0k0{u<+Nw}K9rC$rB*C11v49cF*Lyh-ksQDgn`a@9b z`VQo0p5P%r`~<4sFQDvy1~QfTJ>+Np%;R+UI@GvtI{n}9L+Gcn7>#>AlzuVPIP2g= z@CK;w#-Qvx0M##m8aH?CpM{s9A9MQS@T2HIgtGHja2bwDEk8_J0qv(@FVDVLHYGQcrpAIRKK6XE8s7o?06Mk z0{;##fM@a1h0sFv-wI{dc1Rafb^2}ad~^@0U+&sJ2eqzaj`u;$^K~eDABGzLG1vYi z)ViLAn&$M{7Oj3mI9c}XgWA74;RfhK&GQx4{vcHR zJOs7Q??T1tk047jPdWVsD0}`0)$cX95&jdF;1#Poc8){YH{tXK)OsSQJj|i;@CnD~ zq4MqxsJvT6a7yoi(nq1}YeCs_7u0xPg7VA#PX8Lzy1or%-{Vkz_%T$!C!y?r8ftyN zh3fY*RKC0hHSQZue+w#}6m%N*JShDFsBzXp<>7Tu-;F@oxgV$R5D^TN}^0AJ+XF=`vDk%HbK+S(8lz+RS^6(Z&8k)_> zR%8s3Ulr>r%DqdGjmTBV03y2sBtn{qiehsD*&~H=2$3H=q=npy^dX~&igM*@qzAbZ zQOqe0WRpsa3>GzGcEFoleG%PMN=S%k-O9O@WyC2yoN;wrT=-J)cmUD9-j1kDA@Ylg z{4ZaPBl{4QA>QTHX&6+WlIOeo#Z;|lTH^ZE9wdL z%MrH5eA>0|f(=){7Vbq92a4%~hzduMxf$7xs3@4YJI7v2RB%Gw8)0m-nWP>0b}F!q@JN83r(xW%N4%&VWSfqg!<(C% zYzED#AT35Z=w*{>P!C&S5a(|jC!YyAgV=7nE}5QQZt6gKdLG3*kKPQQ<*7` zPS|Q5G);M8!j!!zPfBx9n6$zyPhwkJcy#8_!h9HKVZ1QEFrS8p!YKD_I%mrDdeF*E z+4m*3V`HbW6s5hismDaW);Krq9b}OkWb` zUOk7cId*I&xBrc2`ijksliYfRkF2-69GgrX42qEz0P5pb@qYTaIC!@q+_K(2MZ4vD zIO^R#cdt+UJPq_w9L$=&rK$}TDjnT7{d6$>K|Km%QM+OKli4^*Jm2=!_L=^6+S%=j zALd4nmA>dSxWFl1E(S|Q8DuJPBMRA#N}49AsgNkSt$R@r`<_!XQ#qOkY3xNdY5f^may4M(%d;AGXr59Yw!W(uvHG5U9~}*hs_}OrlKG-)ndeIJk7VP zng*&x&3Z=|R=pIiOEKN)k=4^6h>Omhs_lgOsE3oPah7{=eYuiZvY_5hQx+G^*$gMv za|~X}lWJTnP&wm8rYiUAVe`3GV0M>lX3&cpZLNKf6R5M0qSo?4-wcw*D_x#-S~@;= zigP+z(!iPmNjo<~#i`?P{2-lIHVqn#Ptu&A+hp3-s(W-wblzlUD9kuQ8g@+{9L=Z0 zAoADP(UICXV;ttp%WctShCTLSI9WNH4Sk!nIP&P>>s_;R8lKp^7{14~kF?~t%#341{s4F*cuDO1(jQ_V1E->GqAWZ85(A{si!2hp(Na5$ld@AJCj zk#~Bt=oE$NJN4=uKJPKXVu$zo*iCZ${GD`@aqiz>Df5n7V(096=Orw@TN;0kQ~9W= zEzD=x!u%qwm*!zz2|KQo*qiA*Ac`h}Y@@AS*)0Ay47o6xCOUdcRll?^NHgN1*N&F^ z_LO&4?7qratvWK?H5TZQC=F$e&@b(1H?q=r(rdd$N5)IVp~puhoqD}?b9c}6rS2`I z&0Fo}p584z8@jLQ?xtgDjHuDzuHQtZJXRVSDfO4_u94oM>V^X&!<8;&XlY#kIgytq zX|EmFJ2+^E%R?1=Q)Q@J9o$~-?;oqwYPZm}li#KBz-#u}!Se9Vy)yZx!NKiOxG6~+ z%Y86)s5(?xUSH3q?k@eA5$q+or`Ia~uI4@x#y8sfjF)CXe)Hb(fzsCHe(tZZREg_} zPnh=Fty5v%_5XMGS@^=q%g@QnPjNR|JSZ3MR!cXYlb4^9m!FmYzg%TH_m7j8pOcp# Rt~X1Ula&{@|Gmr4e*mhzn>7Fc literal 6615 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 diff --git a/locale/en/LC_MESSAGES/django.po b/locale/en/LC_MESSAGES/django.po index b9ee95d..da992d6 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-26 19:53+0300\n" +"POT-Creation-Date: 2017-05-28 21:51+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -50,7 +50,7 @@ msgid "External image" msgstr "External image" #: infoscreen/templates/infoscreen_admin.html:24 -#: members/templates/members_base.html:69 +#: members/templates/members_base.html:79 msgid "Log out" msgstr "Log out" @@ -239,7 +239,7 @@ msgstr "Error" msgid "Back" msgstr "Back" -#: members/templates/member_add.html:8 members/templates/members_base.html:45 +#: members/templates/member_add.html:8 members/templates/members_base.html:55 msgid "Add member" msgstr "Add member" @@ -302,46 +302,47 @@ msgid "Download CSV" msgstr "Download CSV" #: members/templates/members_base.html:33 +#: members/templates/members_base.html:42 msgid "Member register of SIK ry" msgstr "Member register of SIK ry" -#: members/templates/members_base.html:42 webapp/templates/main_index.html:7 +#: members/templates/members_base.html:52 webapp/templates/main_index.html:7 msgid "Members" msgstr "Members" -#: members/templates/members_base.html:44 +#: members/templates/members_base.html:54 msgid "List members" msgstr "List members" -#: members/templates/members_base.html:46 +#: members/templates/members_base.html:56 msgid "Add multiple" msgstr "Add multiple" -#: members/templates/members_base.html:50 +#: members/templates/members_base.html:60 msgid "Payments" msgstr "Payments" -#: members/templates/members_base.html:52 +#: members/templates/members_base.html:62 msgid "List payments" msgstr "List payments" -#: members/templates/members_base.html:53 members/templates/payment_add.html:8 +#: members/templates/members_base.html:63 members/templates/payment_add.html:8 msgid "Add payment" msgstr "Add payment" -#: members/templates/members_base.html:57 +#: members/templates/members_base.html:67 msgid "Applications" msgstr "Applications" -#: members/templates/members_base.html:59 +#: members/templates/members_base.html:69 msgid "List applications" msgstr "List applications" -#: members/templates/members_base.html:60 +#: members/templates/members_base.html:70 msgid "Application form" msgstr "Application form" -#: members/templates/members_base.html:65 members/templates/settings.html:11 +#: members/templates/members_base.html:75 members/templates/settings.html:11 msgid "Settings" msgstr "Settings" @@ -361,93 +362,93 @@ msgstr "Payment events" msgid "Language" msgstr "Language" -#: members/templates/settings.html:20 sikweb/settings-sample.py:177 +#: members/templates/settings.html:20 sikweb/settings-sample.py:179 #: sikweb/settings.py:177 msgid "Finnish" msgstr "Finnish" -#: members/templates/settings.html:21 sikweb/settings-sample.py:176 +#: members/templates/settings.html:21 sikweb/settings-sample.py:178 #: sikweb/settings.py:176 msgid "English" msgstr "English" -#: members/views.py:114 members/views.py:171 members/views.py:190 +#: members/views.py:127 members/views.py:184 members/views.py:203 msgid "No member id specified" msgstr "No member id specified" -#: members/views.py:136 +#: members/views.py:149 msgid "Successfully added member" msgstr "Successfully added member" -#: members/views.py:157 +#: members/views.py:170 msgid "Successfully updated member" msgstr "Successfully updated member" -#: members/views.py:161 +#: members/views.py:174 msgid "Could not update member object" msgstr "Could not update member object" -#: members/views.py:175 +#: members/views.py:188 msgid "Successfully deleted member" msgstr "Successfully deleted member" -#: members/views.py:181 +#: members/views.py:194 msgid "Could not delete member object" msgstr "Could not delete member object" -#: members/views.py:224 members/views.py:258 members/views.py:276 +#: members/views.py:237 members/views.py:271 members/views.py:289 msgid "No application id specified" msgstr "No application id specified" -#: members/views.py:245 +#: members/views.py:258 msgid "Successfully accepted application" msgstr "Successfully accepted application" -#: members/views.py:248 +#: members/views.py:261 msgid "Could not accept application object" msgstr "Could not accept application object" -#: members/views.py:262 +#: members/views.py:275 msgid "Successfully deleted application" msgstr "Successfully deleted application" -#: members/views.py:267 +#: members/views.py:280 msgid "Could not delete application object" msgstr "Could not delete application object" -#: members/views.py:331 +#: members/views.py:344 msgid "Successfully added payment for member" msgstr "Successfully added payment for member" -#: members/views.py:344 members/views.py:357 members/views.py:371 +#: members/views.py:357 members/views.py:370 members/views.py:384 msgid "No payment id specified" msgstr "No payment id specified" -#: members/views.py:375 +#: members/views.py:388 msgid "Successfully deleted payment" msgstr "Successfully deleted payment" -#: members/views.py:380 +#: members/views.py:393 msgid "Could not delete payment object" msgstr "Could not delete payment object" -#: members/views.py:395 +#: members/views.py:408 msgid "Successfully updated payment" msgstr "Successfully updated payment" -#: members/views.py:398 +#: members/views.py:411 msgid "Could not update payment object" msgstr "Could not update payment object" -#: members/views.py:415 +#: members/views.py:428 msgid "Missing \"textfield\" POST request field" msgstr "Missing \"textfield\" POST request field" -#: members/views.py:420 +#: members/views.py:433 msgid "Successfully imported multiple members" msgstr "Successfully imported multiple members" -#: members/views.py:423 +#: members/views.py:436 msgid "Failed to import members" msgstr "Failed to import members" @@ -463,6 +464,18 @@ msgstr "SIK Admin" msgid "Aalto-yliopiston Sähköinsinöörikilta ry" msgstr "Aalto-yliopiston Sähköinsinöörikilta ry" +#: webapp/templates/login.html:25 webapp/templates/login.html:27 +msgid "Username" +msgstr "Username" + +#: webapp/templates/login.html:31 webapp/templates/login.html:33 +msgid "Password" +msgstr "Password" + +#: webapp/templates/login.html:43 +msgid "Log in" +msgstr "Log in" + #: webapp/templates/main_index.html:8 msgid "Infoscreen" msgstr "Infoscreen" diff --git a/locale/fi/LC_MESSAGES/django.mo b/locale/fi/LC_MESSAGES/django.mo index e85684ae0c3277efd2ef78fd8bfe940ed65dc2bc..3e66af371086721823f8273fec6974b190933926 100644 GIT binary patch delta 2581 zcmYk-e@xVM9LMnw$Inv)`IR6NP$H;@iFAR2Xen7r0+FaBac7_$a;I_ZTtD3XA%9q{ zT4Uj~^>hBQoiU%J$M3L_#9T^Czyn@xCDQ;exX+^=Vj& zIkxP^Jjz>96K%%|>_VEFQyA9FN62uz=2g^LzKv=yVe3D%Uc@Zwr%)^V4%N{tY60`8 ziQcqj2iuuL*@@cOB0dVR67}4UOwNB5nPw_9kq{Q*(|8-6#%1^(s=*X$VqYR-m>FBX zj@gudLp|qU`}Eu*)WUMCMW}JgQ4@A8ZH^C6ZNJ!sT3HLKgHHS4Ayh|x)D|B{t>g@r zVFXL?`{CBaoUoQu%|>Y{9jNyzgc@=fHN~??BQuJcQUo>P1=OBiLI-|@M-q(r8V^%$ zU_&SI9n==I=Ek4*pw2Fk%buu95II6*U>u0EezCi8WWn>KVE9%g6bu__T zyc^4~4m(i&j-YPc8>p?BL~Y$idE99?nM+jYMO?rVEaXJ>0@hA42gf5&wb^I-= zqpP<33v#aJhAk&^BeatlsDblPuR$?tp=Dt*T1lmK3&yqz)v*UPkRR1BgxY~;P%C-~ zwKHc?JMk_S;YHN*KcEJ>hU#|?b%YDn@ZV(AAc4160~VuJ?n0eW6Y_{@K@HSv>qDp& zJ!Q*7r~yx*Cj265VW&|8PoUagK#emM|2}NKv0u!hwrU=AmN!vbxtP1V84FPz??+wh zgQ%4Zp%(Bg>JpFR9T-JT@H(p9@2LL%vO1URr;qb5Afv4;Lp``2)o>$fOSjqjy{N79 zpa$x-^+TxN&=*kc&Y%|Zmi>Mbb+;m@ot?oAxPYaMZ`ROT2{vH``cao{1htY+aSdKU zP0-0Zs)=NyCb%3m;5yU_-Kaa#h7g%XsoY*IuVpePYelqPuCvh)PNhoQHl^!CF z5dor?;3p!MTvqO>*=6$wtvjs6c%RMdNFOD1RMo^?#AfaPDx#avt^a>|kU}Y;%lQbg zjnFHm)IjJi)DuZW8&N}a5K0ddbwra2q)mh_r|!$Gq&w1il#fHUW+Uz<_7h&BmAIAk zGkwGs_FxN9MfBLZa?~Z=OYF3DWsy$j&SZx#Fg%(ulM)ObKRVDI31$A2kh&+>GZ66l zhugFIQfo^#RBdusMW(aPrKAOY!RT0YED-VKrzfPfdHcOVZ@?QFENE~niHIUo z*F|QwrgkAr)`hM$Ty)`0Q7)IWwQAVh8m*eumi7HU|KsZH|9d{?9G>UAKM&t59;{AZ zF3RZ+q;_H^@y4hStQa?j3u#kc2wSlQ2XPQ@!UJP7_8^ahBRCh2VJ?0i>%T^R;S!f| zIE**rZ&(;YIw@H(p38WgiQZU&L#;RsJJAOZq66(g?>mY%+#BmZ!da9DV);j$OnC$y zXf6-U!9t`eEXK4WUqOa#4Xe<-Y(gJcAL}QR@{{p!VcU<`75S-9P3$ESKp!ctcHlfdLL02%nmkfP`E_Bb{LPvH2@4+)zhrgf=S8$>{gp1G>T86IR zDy+h0^!3}1DeOgGyCJ*-f5q8Y%s!X<{x^`Z;oWFM9kKi}vK!&GSbiH_!eeO1C(+a2 zkIwWAI+1hH3z)1F+U_;9pBxT=&*fv0-=B$OoKYFNGz-y{Sc&>M@<4olDxm!dP9hj!e6Hn1A) zXk#qzL|5n~bPLny3LeCId#uv~T zypJjT4Cmla=;11&7bj4Sci{%Ky)JYh`_TcuScnJW@2*G4#534Z6_*{T;}pP zJQ~aHsi}=9C!F~bVkKePm?613Thp2hVLrMd>1Vl=5+1yEVlm-i+d-H-7tO>9;$C7C z(L~e`Cblv>kmNF_J7$w}F_*#~;;9>z$m^e^om@G@>2N=pIwD2!x@;lG*NDkaX=qqS?Izw{cVm4Hg*-GppmfxrxoBA*Hoz1Hqedv0@7kw8C zzs)-I$%O4=7Nr)})K*pYEhsvf+xPRd?5w^&r`Kms-q+SP@LqYUy>08BR7cC+-7R6q Gmhdl=PR-!} diff --git a/locale/fi/LC_MESSAGES/django.po b/locale/fi/LC_MESSAGES/django.po index 1abf0c5..fdc875b 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-26 19:53+0300\n" +"POT-Creation-Date: 2017-05-28 21:51+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -51,7 +51,7 @@ msgid "External image" msgstr "Ulkoinen kuva" #: infoscreen/templates/infoscreen_admin.html:24 -#: members/templates/members_base.html:69 +#: members/templates/members_base.html:79 msgid "Log out" msgstr "Kirjaudu ulos" @@ -240,7 +240,7 @@ msgstr "Virhe" msgid "Back" msgstr "Takaisin" -#: members/templates/member_add.html:8 members/templates/members_base.html:45 +#: members/templates/member_add.html:8 members/templates/members_base.html:55 msgid "Add member" msgstr "Lisää jäsen" @@ -306,46 +306,47 @@ msgid "Download CSV" msgstr "Lataa CSV" #: members/templates/members_base.html:33 +#: members/templates/members_base.html:42 msgid "Member register of SIK ry" msgstr "Aalto-yliopiston Sähköinsinöörikilta ry:n jäsenrekisteri" -#: members/templates/members_base.html:42 webapp/templates/main_index.html:7 +#: members/templates/members_base.html:52 webapp/templates/main_index.html:7 msgid "Members" msgstr "Jäsenet" -#: members/templates/members_base.html:44 +#: members/templates/members_base.html:54 msgid "List members" msgstr "Jäsenlistaus" -#: members/templates/members_base.html:46 +#: members/templates/members_base.html:56 msgid "Add multiple" msgstr "Lisää useita" -#: members/templates/members_base.html:50 +#: members/templates/members_base.html:60 msgid "Payments" msgstr "Maksutapahtumat" -#: members/templates/members_base.html:52 +#: members/templates/members_base.html:62 msgid "List payments" msgstr "Maksulistaus" -#: members/templates/members_base.html:53 members/templates/payment_add.html:8 +#: members/templates/members_base.html:63 members/templates/payment_add.html:8 msgid "Add payment" msgstr "Lisää maksu" -#: members/templates/members_base.html:57 +#: members/templates/members_base.html:67 msgid "Applications" msgstr "Jäsenhakemukset" -#: members/templates/members_base.html:59 +#: members/templates/members_base.html:69 msgid "List applications" msgstr "Hakemuslistaus" -#: members/templates/members_base.html:60 +#: members/templates/members_base.html:70 msgid "Application form" msgstr "Jäsenhakemuslomake" -#: members/templates/members_base.html:65 members/templates/settings.html:11 +#: members/templates/members_base.html:75 members/templates/settings.html:11 msgid "Settings" msgstr "Asetukset" @@ -365,93 +366,93 @@ msgstr "Maksutapahtumat" msgid "Language" msgstr "Kieli" -#: members/templates/settings.html:20 sikweb/settings-sample.py:177 +#: members/templates/settings.html:20 sikweb/settings-sample.py:179 #: sikweb/settings.py:177 msgid "Finnish" msgstr "suomi" -#: members/templates/settings.html:21 sikweb/settings-sample.py:176 +#: members/templates/settings.html:21 sikweb/settings-sample.py:178 #: sikweb/settings.py:176 msgid "English" msgstr "englanti" -#: members/views.py:114 members/views.py:171 members/views.py:190 +#: members/views.py:127 members/views.py:184 members/views.py:203 msgid "No member id specified" msgstr "Jäsenen ID ei määritelty" -#: members/views.py:136 +#: members/views.py:149 msgid "Successfully added member" msgstr "Onnistuneesti lisättiin jäsen" -#: members/views.py:157 +#: members/views.py:170 msgid "Successfully updated member" msgstr "Onnistuneesti päivitettiin jäsen" -#: members/views.py:161 +#: members/views.py:174 msgid "Could not update member object" msgstr "Jäsenobjektia ei voitu päivittää" -#: members/views.py:175 +#: members/views.py:188 msgid "Successfully deleted member" msgstr "Onnistuneesti poistettiin jäsen" -#: members/views.py:181 +#: members/views.py:194 msgid "Could not delete member object" msgstr "Jäsenobjektia ei voitu poistaa" -#: members/views.py:224 members/views.py:258 members/views.py:276 +#: members/views.py:237 members/views.py:271 members/views.py:289 msgid "No application id specified" msgstr "Hakemuksen ID ei määritelty" -#: members/views.py:245 +#: members/views.py:258 msgid "Successfully accepted application" msgstr "Onnistuneesti hyväksyttiin hakemus" -#: members/views.py:248 +#: members/views.py:261 msgid "Could not accept application object" msgstr "Hakemusobjektia ei voitu hyväksyä" -#: members/views.py:262 +#: members/views.py:275 msgid "Successfully deleted application" msgstr "Onnistuneesti poistettiin hakemus" -#: members/views.py:267 +#: members/views.py:280 msgid "Could not delete application object" msgstr "Hakemusobjektia ei voitu poistaa" -#: members/views.py:331 +#: members/views.py:344 msgid "Successfully added payment for member" msgstr "Onnistuneesti lisättiin maksutapahtuma jäsenelle" -#: members/views.py:344 members/views.py:357 members/views.py:371 +#: members/views.py:357 members/views.py:370 members/views.py:384 msgid "No payment id specified" msgstr "Maksutapahtuman ID ei määritelty" -#: members/views.py:375 +#: members/views.py:388 msgid "Successfully deleted payment" msgstr "Onnistuneesti poistettiin maksutapahtuma" -#: members/views.py:380 +#: members/views.py:393 msgid "Could not delete payment object" msgstr "Maksutapahtumaobjektia ei voitu poistaa" -#: members/views.py:395 +#: members/views.py:408 msgid "Successfully updated payment" msgstr "Onnistuneesti päivitettiin maksutapahtuma" -#: members/views.py:398 +#: members/views.py:411 msgid "Could not update payment object" msgstr "Maksutapahtumaobjektia ei voitu päivittää" -#: members/views.py:415 +#: members/views.py:428 msgid "Missing \"textfield\" POST request field" msgstr "Puuttuva \"textfield\" POST-kenttä" -#: members/views.py:420 +#: members/views.py:433 msgid "Successfully imported multiple members" msgstr "Onnistuneesti tuotu useita jäseniä" -#: members/views.py:423 +#: members/views.py:436 msgid "Failed to import members" msgstr "Jäsenten tuonti epäonnistui" @@ -467,6 +468,18 @@ msgstr "SIK Hallintapaneeli" msgid "Aalto-yliopiston Sähköinsinöörikilta ry" msgstr "Aalto-yliopiston Sähköinsinöörikilta ry" +#: webapp/templates/login.html:25 webapp/templates/login.html:27 +msgid "Username" +msgstr "Käyttäjänimi" + +#: webapp/templates/login.html:31 webapp/templates/login.html:33 +msgid "Password" +msgstr "Salasana" + +#: webapp/templates/login.html:43 +msgid "Log in" +msgstr "Kirjaudu sisään" + #: webapp/templates/main_index.html:8 msgid "Infoscreen" msgstr "Infonäyttö" diff --git a/webapp/static/css/login.css b/webapp/static/css/login.css index b4959e3..8d20848 100644 --- a/webapp/static/css/login.css +++ b/webapp/static/css/login.css @@ -3,14 +3,28 @@ html { height: 100%; } +@media (max-width: 760px) { + html { + font-size: 24px; + } +} + +@media (min-width: 760px) { + html { + font-size: 16px; + } +} + body { max-width: 760px; margin: auto; + font-size: 1rem; } h1 { padding-bottom: 3rem; padding-top: 3rem; + font-size: 3rem; } #content-body { diff --git a/webapp/templates/login.html b/webapp/templates/login.html index 4c85bc3..7d2d763 100644 --- a/webapp/templates/login.html +++ b/webapp/templates/login.html @@ -5,8 +5,8 @@ - SIK - Login + @@ -22,15 +22,15 @@

    SIK Admin

    {% csrf_token %}
    - +
    - +
    - +
    - +
    @@ -40,7 +40,7 @@
    - +
    From 09e8c93e8d3ecbf416c0dbda61f278c05856f321 Mon Sep 17 00:00:00 2001 From: Jan Tuomi Date: Sun, 28 May 2017 23:40:47 +0300 Subject: [PATCH 10/22] Create view and model for duplicate member conflicts --- members/admin.py | 3 +- members/migrations/0012_memberconflict.py | 24 ++++++++++++++ members/models.py | 18 ++++++++++ members/static/css/members.css | 4 +++ members/templates/member_duplicates.html | 40 +++++++++++++++++++++++ members/urls.py | 7 ++-- members/views.py | 15 ++++++++- 7 files changed, 105 insertions(+), 6 deletions(-) create mode 100644 members/migrations/0012_memberconflict.py create mode 100644 members/templates/member_duplicates.html diff --git a/members/admin.py b/members/admin.py index bb6b8e0..2251173 100644 --- a/members/admin.py +++ b/members/admin.py @@ -1,7 +1,8 @@ from django.contrib import admin -from members.models import Member, Request, Payment +from members.models import Member, Request, Payment, MemberConflict # Register your models here. admin.site.register(Member) admin.site.register(Request) admin.site.register(Payment) +admin.site.register(MemberConflict) diff --git a/members/migrations/0012_memberconflict.py b/members/migrations/0012_memberconflict.py new file mode 100644 index 0000000..f9ec985 --- /dev/null +++ b/members/migrations/0012_memberconflict.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11 on 2017-05-28 20:32 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('members', '0011_auto_20170526_2013'), + ] + + operations = [ + migrations.CreateModel( + name='MemberConflict', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('first_member', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='memberconflict_first_member', to='members.Member')), + ('second_member', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='memberconflict_second_member', to='members.Member')), + ], + ), + ] diff --git a/members/models.py b/members/models.py index 08550e1..1afdde3 100644 --- a/members/models.py +++ b/members/models.py @@ -119,3 +119,21 @@ class Member(BaseMember): AYY=bool(array[4]), jas=bool(array[5]), ) + + +class MemberConflict(models.Model): + + first_member = models.ForeignKey('Member', related_name='%(class)s_first_member') + second_member = models.ForeignKey('Member', related_name='%(class)s_second_member') + + @property + def first_member_form(self): + return MemberForm(instance=self.first_member) + + @property + def second_member_form(self): + return MemberForm(instance=self.second_member) + + +# To avoid problems with a cyclical import, this is at the bottom of the file +from members.forms import MemberForm # nopep8 diff --git a/members/static/css/members.css b/members/static/css/members.css index 23d0aeb..9b99baf 100644 --- a/members/static/css/members.css +++ b/members/static/css/members.css @@ -246,3 +246,7 @@ input { max-width: 100%; height: 10rem !important; } + +.conflict-row { + overflow: auto; +} diff --git a/members/templates/member_duplicates.html b/members/templates/member_duplicates.html new file mode 100644 index 0000000..359329e --- /dev/null +++ b/members/templates/member_duplicates.html @@ -0,0 +1,40 @@ +{% extends "members_base.html" %} + +{% load i18n %} +{% load bootstrap3 %} + +{% block content %} +
    +
    +

    {% trans "Conflicting member entries" %}

    +
    + +
    +

    {% blocktrans %}Found conflicting member entries. Choose how to handle the problematic data.{% endblocktrans %}

    + + {% for conflict in conflicts %} +
    +
    + + {{ conflict.first_member_form }} +
    +
    +
    + + {{ conflict.second_member_form }} +
    +
    +
    +
    {% csrf_token %} +

    {% blocktrans %}Which one has the correct information for this member?{% endblocktrans %}

    + + + + +
    +
    +
    + {% endfor %} +
    +
    +{% endblock content %} diff --git a/members/urls.py b/members/urls.py index 792a1c7..d4a8fe9 100644 --- a/members/urls.py +++ b/members/urls.py @@ -16,6 +16,7 @@ from members.views import member_update from members.views import member_delete_confirm from members.views import member_delete from members.views import payment_list +from members.views import member_duplicates # rest api from members.views import MemberDetail @@ -102,9 +103,7 @@ urlpatterns = [ # rest api url url(r'^api/members/(?P\d+)$', MemberDetail.as_view()), - # email validation - # url(r'^validate/(?P[0-9A-Za-z_\-\']+)/(?P[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$', validateEmail, name='user-activation-link'), - # url(r'^validate/success/$', validate_success), - # url(r'^validate/failure/$', validate_fail), + # member duplicate resolution view + url(r'^duplicates$', member_duplicates) ] diff --git a/members/views.py b/members/views.py index 7dbd7cc..4a7acbf 100644 --- a/members/views.py +++ b/members/views.py @@ -26,7 +26,7 @@ import logging import html import csv -from members.models import Member, Request, Payment +from members.models import Member, Request, Payment, MemberConflict from members.forms import MemberForm, PaymentForm, ApplicationForm # Logger function, you can use the same idea when implementing other loggers to other apps @@ -455,6 +455,19 @@ def export_csv(request, *args, **kwargs): return response +@ensure_csrf_cookie +@require_http_methods(["GET"]) +@permission_required('members.change_member', login_url='/login') +def member_duplicates(request, *args, **kwargs): + # TODO + conflicts = MemberConflict.objects.all() + context = { + 'conflicts': conflicts + } + + return render(request, 'member_duplicates.html', context) + + def send_mail_wrapper(subject, message, email_to): send_mail(subject, message, From 013bbeae7af8efe674ddf79f52a5351f1aebcda3 Mon Sep 17 00:00:00 2001 From: Juhana Luomanen Date: Mon, 29 May 2017 09:54:12 +0300 Subject: [PATCH 11/22] Add some localizations --- infoscreen/templates/infoscreen_admin.html | 6 +- locale/en/LC_MESSAGES/django.mo | Bin 6615 -> 6679 bytes locale/en/LC_MESSAGES/django.po | 181 +++++++++++---------- locale/fi/LC_MESSAGES/django.mo | Bin 7111 -> 7234 bytes locale/fi/LC_MESSAGES/django.po | 181 +++++++++++---------- 5 files changed, 201 insertions(+), 167 deletions(-) diff --git a/infoscreen/templates/infoscreen_admin.html b/infoscreen/templates/infoscreen_admin.html index 3128cf6..6fd4ead 100644 --- a/infoscreen/templates/infoscreen_admin.html +++ b/infoscreen/templates/infoscreen_admin.html @@ -32,13 +32,13 @@
    diff --git a/locale/en/LC_MESSAGES/django.mo b/locale/en/LC_MESSAGES/django.mo index 9435ae5ef9e12ea3d5ec99f139a1e130cfe04347..8c684b3eee97072aafb9b5b4d66df72b8fae93f8 100644 GIT binary patch literal 6679 zcmeH}ZHygN8OKi*5Z8(oQ4ti5h_rS0w%hX3vMsc?ySLlRzPfi?ETG%jduQ)Xckaw} zX708dA=-p~!1oVm!~{POK>=UlODc&bepn3f!9){`8sB4xs6v@UvUdSuV2$VmEpzO~<+0CHdd%M$5K*e_# zSHD)T+a&pgiMT=)|xyT5Sy@8JdLe}uC8PpAJI%FYEib1}Re z>badz{_cf(ZUoBiEpGe>d?)&X(?0>)%FM(uOCXk5h{*BsJa`0s=E`8_e0g)6Hs;bwA0Tg z8KrN8@^2W*pDC#LXQAx2q26=c>32ZIcM{6ak3+4;Jy7%RgNoxzP;ov2HSbZV`uH)F z-Jd%BH&A)>6qMa(o&GNh4mg=dOYBcQ@2?!%%h)x$)be@}%kXyC9~_-B5l$ z1UJENLB;t?D8K&%wV!{5+Rx{p=0ESo&m&oNe*+{H%q389^+DOW9?HLAD8DD5;yD7@ zI@5$&-w#3M@5i9#-w&^XUxo7HNvJ&jIpo#mACR9}&mw64l~8f_LHV}}s_ur|{hQtR z43xj~jtP|g+o9~8aQZz^aeM*F-osFSe;exg??SET51{=11619uL$Popl)nd{>aGD5 z&j~mFWjFpPl-=J!#ql)MI{gjGuXUFc>v$ei-CYDJJ97)tM3lpOkzr&zqSio^>j#lC zGJq%sHLbP$o{&Pj7U@T{S96Hga0jAxpg?}Tg6k9_pVa1&Qr=s=jJxg)jv?$ru0(D` zs)%aq{YbZIkJR268}S?D};$h`i6~s)>z=a#8hk9ilo`t=14VQp0RRwjjzKHRT$qk=O7|P-l$VZ3WDG z9EGb9A6Y>5A$jYur?t5tNwb;AYx#XP^j5ll%L~F8uhB^SG__vTuMG zAhPLv+zA_Y*0;@I(MQjcAZpr0FYNf~mNoD2mX>B(erwiGa!W_ObSClZK|AoH>;-nR zdA~4X`|YN9Zf>)U6T6LWw0W&nQ{K1F9*t*HQ=U9*tC`<2<->eGjBHZQ&Y_?R--wdWepghoA<1@h*`~2@~&if zF(a)fz8~e2i>@saf6`--s!^JGQGK_wr_4K*UYFFH9LxZl=G+vB=5DopkYQS>eH7zEk=qpcZyqdw76;GPG-iu2zz$Q z6>e(A^3%v+t-0csP5dTrqL|LmZ9Hdd)e)T@#T|?VDMw4wUXl67v$?^*?i25d+f+~eEQpL(6DKnqmUU5-D?%6dcP$y=&6N{9R;W%~#0WO;C;JY2DdDpR%U#CXq?uT!BkmNtV%XpiG_Aj!(97av!0tadI%>zuV->r*GFGmR?kx`uO;u{O z8<|=ZbZOf6S_5{pJU)C-F7F;4-5Um5;-tAc2Uo|cW0lqTwr%O}(SI4qUDB!ySe4mU zK1YIRm#xoxN$O`e9Gu=?+PON<{S%fdQ9W*uodb5~Y>@SsHJ>H_51&5Ecb@(BIs5IC ie;Req$L^=q$_LNcZ=bW@K4-su&VKvoEBt@=+vh)_xtJvY literal 6615 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 diff --git a/locale/en/LC_MESSAGES/django.po b/locale/en/LC_MESSAGES/django.po index b9ee95d..9633481 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-26 19:53+0300\n" +"POT-Creation-Date: 2017-05-28 16:37+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -58,99 +58,113 @@ msgstr "Log out" msgid "Infoscreen Admin Pane" msgstr "Infoscreen Admin Pane" -#: infoscreen/templates/infoscreen_admin.html:36 +#: infoscreen/templates/infoscreen_admin.html:35 +msgid "Manage Slides" +msgstr "" + +#: infoscreen/templates/infoscreen_admin.html:37 +msgid "Manage Rotations" +msgstr "Manage Rotations" + +#: infoscreen/templates/infoscreen_admin.html:41 +msgid "Create/Delete" +msgstr "Create/Delete" + +#: infoscreen/templates/infoscreen_admin.html:48 +msgid "Create new item" +msgstr "Create new item" + +#: infoscreen/templates/infoscreen_admin.html:51 +msgid "Item type" +msgstr "Item type" + +#: infoscreen/templates/infoscreen_admin.html:62 +#: infoscreen/templates/infoscreen_admin.html:82 msgid "Info items" msgstr "Info items" -#: infoscreen/templates/infoscreen_admin.html:37 +#: infoscreen/templates/infoscreen_admin.html:63 +#: infoscreen/templates/infoscreen_admin.html:83 msgid "Infoitems available for rotations" msgstr "Infoitems available for rotations" -#: infoscreen/templates/infoscreen_admin.html:40 +#: infoscreen/templates/infoscreen_admin.html:66 +#: infoscreen/templates/infoscreen_admin.html:86 msgid "Item" msgstr "Item" -#: infoscreen/templates/infoscreen_admin.html:41 +#: infoscreen/templates/infoscreen_admin.html:67 +#: infoscreen/templates/infoscreen_admin.html:87 msgid "Type" msgstr "Type" -#: infoscreen/templates/infoscreen_admin.html:42 -msgid "Set duration" -msgstr "Set duration" - -#: infoscreen/templates/infoscreen_admin.html:43 -msgid "Add to rotation" -msgstr "Add to rotation" - -#: infoscreen/templates/infoscreen_admin.html:44 -#: infoscreen/templates/infoscreen_admin.html:51 -#: infoscreen/templates/infoscreen_admin.html:78 -#: infoscreen/templates/infoscreen_admin.html:85 -#: infoscreen/templates/infoscreen_admin.html:102 -#: infoscreen/templates/infoscreen_admin.html:106 +#: infoscreen/templates/infoscreen_admin.html:68 +#: infoscreen/templates/infoscreen_admin.html:73 +#: infoscreen/templates/infoscreen_admin.html:90 +#: infoscreen/templates/infoscreen_admin.html:97 +#: infoscreen/templates/infoscreen_admin.html:112 +#: infoscreen/templates/infoscreen_admin.html:116 +#: infoscreen/templates/infoscreen_admin.html:134 +#: infoscreen/templates/infoscreen_admin.html:140 #: members/templates/member_edit.html:20 members/templates/payment_edit.html:20 msgid "Delete" msgstr "Delete" -#: infoscreen/templates/infoscreen_admin.html:50 +#: infoscreen/templates/infoscreen_admin.html:88 +msgid "Set duration" +msgstr "Set duration" + +#: infoscreen/templates/infoscreen_admin.html:89 +msgid "Add to rotation" +msgstr "Add to rotation" + +#: infoscreen/templates/infoscreen_admin.html:96 msgid "Add" msgstr "Add" -#: infoscreen/templates/infoscreen_admin.html:54 -msgid "Create new item" -msgstr "Create new item" - -#: infoscreen/templates/infoscreen_admin.html:57 -msgid "Item type" -msgstr "Item type" - -#: infoscreen/templates/infoscreen_admin.html:68 -msgid "Rotations" -msgstr "Rotations" - -#: infoscreen/templates/infoscreen_admin.html:70 -msgid "Select rotation to edit" -msgstr "Select rotation to edit" - -#: infoscreen/templates/infoscreen_admin.html:74 -#: infoscreen/templates/infoscreen_admin.html:96 +#: infoscreen/templates/infoscreen_admin.html:105 +#: infoscreen/templates/infoscreen_admin.html:131 msgid "Rotation" msgstr "Rotation" -#: infoscreen/templates/infoscreen_admin.html:75 -msgid "id" -msgstr "id" - -#: infoscreen/templates/infoscreen_admin.html:76 -#: infoscreen/templates/infoscreen_admin.html:83 -msgid "Select" -msgstr "Select" - -#: infoscreen/templates/infoscreen_admin.html:77 -#: infoscreen/templates/infoscreen_admin.html:84 +#: infoscreen/templates/infoscreen_admin.html:105 +#: infoscreen/templates/infoscreen_admin.html:133 +#: infoscreen/templates/infoscreen_admin.html:139 msgid "Preview" msgstr "Preview" -#: infoscreen/templates/infoscreen_admin.html:88 -msgid "Name" -msgstr "Name" - -#: infoscreen/templates/infoscreen_admin.html:89 -msgid "Create new" -msgstr "Create new" - -#: infoscreen/templates/infoscreen_admin.html:97 +#: infoscreen/templates/infoscreen_admin.html:107 msgid "Instances in currently selected rotation" msgstr "Instances in currently selected rotation" -#: infoscreen/templates/infoscreen_admin.html:100 +#: infoscreen/templates/infoscreen_admin.html:110 msgid "Instance" msgstr "Instance" -#: infoscreen/templates/infoscreen_admin.html:101 +#: infoscreen/templates/infoscreen_admin.html:111 msgid "Duration" msgstr "Duration" +#: infoscreen/templates/infoscreen_admin.html:125 +msgid "Rotations" +msgstr "Rotations" + +#: infoscreen/templates/infoscreen_admin.html:127 +msgid "Select rotation to edit" +msgstr "Select rotation to edit" + +#: infoscreen/templates/infoscreen_admin.html:132 +msgid "id" +msgstr "id" + +#: infoscreen/templates/infoscreen_admin.html:143 +msgid "Name" +msgstr "Name" + +#: infoscreen/templates/infoscreen_admin.html:144 +msgid "Create new" +msgstr "Create new" + #: members/models.py:16 msgid "First name" msgstr "First name" @@ -361,93 +375,93 @@ msgstr "Payment events" msgid "Language" msgstr "Language" -#: members/templates/settings.html:20 sikweb/settings-sample.py:177 +#: members/templates/settings.html:20 sikweb/settings-sample.py:178 #: sikweb/settings.py:177 msgid "Finnish" msgstr "Finnish" -#: members/templates/settings.html:21 sikweb/settings-sample.py:176 +#: members/templates/settings.html:21 sikweb/settings-sample.py:177 #: sikweb/settings.py:176 msgid "English" msgstr "English" -#: members/views.py:114 members/views.py:171 members/views.py:190 +#: members/views.py:121 members/views.py:178 members/views.py:197 msgid "No member id specified" msgstr "No member id specified" -#: members/views.py:136 +#: members/views.py:143 msgid "Successfully added member" msgstr "Successfully added member" -#: members/views.py:157 +#: members/views.py:164 msgid "Successfully updated member" msgstr "Successfully updated member" -#: members/views.py:161 +#: members/views.py:168 msgid "Could not update member object" msgstr "Could not update member object" -#: members/views.py:175 +#: members/views.py:182 msgid "Successfully deleted member" msgstr "Successfully deleted member" -#: members/views.py:181 +#: members/views.py:188 msgid "Could not delete member object" msgstr "Could not delete member object" -#: members/views.py:224 members/views.py:258 members/views.py:276 +#: members/views.py:231 members/views.py:265 members/views.py:283 msgid "No application id specified" msgstr "No application id specified" -#: members/views.py:245 +#: members/views.py:252 msgid "Successfully accepted application" msgstr "Successfully accepted application" -#: members/views.py:248 +#: members/views.py:255 msgid "Could not accept application object" msgstr "Could not accept application object" -#: members/views.py:262 +#: members/views.py:269 msgid "Successfully deleted application" msgstr "Successfully deleted application" -#: members/views.py:267 +#: members/views.py:274 msgid "Could not delete application object" msgstr "Could not delete application object" -#: members/views.py:331 +#: members/views.py:338 msgid "Successfully added payment for member" msgstr "Successfully added payment for member" -#: members/views.py:344 members/views.py:357 members/views.py:371 +#: members/views.py:351 members/views.py:364 members/views.py:378 msgid "No payment id specified" msgstr "No payment id specified" -#: members/views.py:375 +#: members/views.py:382 msgid "Successfully deleted payment" msgstr "Successfully deleted payment" -#: members/views.py:380 +#: members/views.py:387 msgid "Could not delete payment object" msgstr "Could not delete payment object" -#: members/views.py:395 +#: members/views.py:402 msgid "Successfully updated payment" msgstr "Successfully updated payment" -#: members/views.py:398 +#: members/views.py:405 msgid "Could not update payment object" msgstr "Could not update payment object" -#: members/views.py:415 +#: members/views.py:422 msgid "Missing \"textfield\" POST request field" msgstr "Missing \"textfield\" POST request field" -#: members/views.py:420 +#: members/views.py:427 msgid "Successfully imported multiple members" msgstr "Successfully imported multiple members" -#: members/views.py:423 +#: members/views.py:430 msgid "Failed to import members" msgstr "Failed to import members" @@ -486,3 +500,6 @@ msgstr "Sössö" #: webapp/templates/navigation.html:32 msgid "Contact" msgstr "Contact" + +#~ msgid "Select" +#~ msgstr "Select" diff --git a/locale/fi/LC_MESSAGES/django.mo b/locale/fi/LC_MESSAGES/django.mo index e85684ae0c3277efd2ef78fd8bfe940ed65dc2bc..0cc41b157f62d6fcce183fac827593eb4fb6ca53 100644 GIT binary patch delta 2594 zcmZ|QU2Kz89LMp~t-2Q{Wvjx*2DXfiX{QqhTZhPaS#^R_WMilUvCukOYRj@3R7jc$ zLCk<*B2fumObHjujE0&RH5x=>W2TEncd7z0S_o6yJWZOqk9i75*d>wV;$EX31qwbqT zb$r<#pFuC}S=+AUqU&kbq6WGO>o9;Rt}$^c8u@-?dCdT7O$Sjo4B6u^SzpCcj*p^d z_5rG&G1LGjQ3JndkN<+2n9}Qp0#v3eU95iv6(23#7{FTWKn*B~mG~6S!xK0kM^V>b zK>9YHq6YdkmfRCu(Aaj7pZF`mdTx{?(z^9%w<$Xf>+Cji`}#p>FI!r8bNj z__J7p!|1^bYQUFKZ&=4wvFXIY4gL)08(1Th>y@p;~s`q~_l_eaAU_Bl~b^IQx zqYJ1Je_@Y*hb*W0(Y9w%smx;?HGm@2+u%mcxB@jHueA}?UjR#ZzUiW(2L@3$Mp2pA zgPPd^RECbBGI9zR;+v@J$59XZ3f1uxY6+*UKclYy4K*P*@3J!B!F--?)==S`X+u3| zn@(U9HKVv~KZ$zae$;@ULCtIs_25@f_m83;^sa4ZknEcYROY5p8T$iMTH8FfvQD`1 z4y?v(Mo_ywiki_8)J&d7?dCUdF^-`II)m!xcWdE-+!wGMmB}Tjej8BN`xlUZrF5M= z(T(bOhi&geeL@eSZa9t_`AK_z7`3@ZP$?b9+i(Uoa4(&Ca6Q&x2({Oaq6U7plKkI9 zWr715nO;tUC^I2kMPjNvJ53HQ8G3AC~^<+(Kwm-$f_`j}ng) zaYFr+X#IPLdkK{o!Lpd0#N9*}5gh<;;D}a2ugaZ6{QA5!!qzO9?GgH}L?WvWd`l;349EB1Ci$ zDlA1RyJOYR&R$DsgRLQMCGH`16U~H5AK@n+A^xw_a)Qv}Yb9S_luJvWK{l;Cp2FSZ2SHdOdpy6(6Cu zW0e}V=v$C2i}~F^ROg!J;q>;RC-Ms#+QPALGMpYOx#(CJj0bzep3RA5Fd0e2`%Opg zKxZrx3iqc+=F~aTldc~e1%A)6rj?B?=}hT|&ccsQH*88o`jhE_c~=}Y?ZH?q5|1Y$ c*>2QNBpEdS9t}kj(O`OSdCZZXu9$NC1()0Cz5oCK delta 2453 zcmYk-Urd%&9KiAO2BMVw5kw6vUQ5UlG$KGC6|Bgj(j-DHO-v!hV%e0sdM_HSi{_sh z#atJevo*8}eW&Y!)=C#$c+)6X&AGL7+T0qgnyuEK@Au`nb@u+A&pC(ZIsc!B&zFof zq%IU?4+T;`F_(BND+DX1Pvt_|lpDfU?8Y%1!)dtp#z}{fN5Uaoh(|C7zl!zWBEN8+ z%XGYqH{ows5JD+mGrj#r}vGmG~XK?;msmS&WXp!%XzP zBu>F@3>uc&xu#!1_Cr2`X&(?|5Sl>u*DO=#tJxXV8ch*nvrW6&?6N^zAu?&TKr^ z{~7CNv1|^Y7M)NN@~5yOMaB_!pi8+HZ@?bxON6iudntdzbVqP0>*`8eLGQnYZrPNX zldoScI*~fGqh;v*ZP8Bjxh?1lrgoB{k1&Yt**oaSj^e#Iip}^7+Hf@|%0pO>u23tw zg6&v`Yth$l4<_*h`r3`-9r!EG$1?W0%J;v8j19klHncmIUqf~yycx^yqDy!L?f4ja z`cI)V9YrT{CVCDtD}}au4eckJ1K@LcSmgJon2a;3M3<%pU5Vv*3wEFnyo7c%fHs^$ zw{B1L0DAv0+Tkg5=BLpu`Vsks%UtZ|U+d{V)tZ!q?$A`ud&01g;}`2|I5g zx(Nqh+Cn(ECy7>~iE#ENmwz7dxCK%jaW~=i^$@OR0}-Af9x@Y?qjmu9zv+3RI+L5c zJOPizvU_UUK~xdWd>OHlFl{){om-q*Jy{5g(KUFMs31IP{lpT&)3uE-c@WkTZNz=V zCZdyQBuwmGcrcTjJkBwjIS30WyhuEKz0wz)7e14=bM@FhKr|Cc;{WMU3YCQatTz&m z5ZT0X!Y`2rrGwZ^JVmT0Ozp&~OpcET-Wl`H;r+hgU9o~MSmqPNvCnLFJ-YdP7{VID z!~qI5#3I6zV)DbzdB~iwhtYS=BYo\n" "Language-Team: LANGUAGE \n" @@ -59,99 +59,113 @@ msgstr "Kirjaudu ulos" msgid "Infoscreen Admin Pane" msgstr "Infonäyttöjen hallintapaneeli" -#: infoscreen/templates/infoscreen_admin.html:36 +#: infoscreen/templates/infoscreen_admin.html:35 +msgid "Manage Slides" +msgstr "Hallinnoi dioja" + +#: infoscreen/templates/infoscreen_admin.html:37 +msgid "Manage Rotations" +msgstr "Hallinnoi Rotaatioita" + +#: infoscreen/templates/infoscreen_admin.html:41 +msgid "Create/Delete" +msgstr "Lisää/Poista" + +#: infoscreen/templates/infoscreen_admin.html:48 +msgid "Create new item" +msgstr "Luo uusi dia" + +#: infoscreen/templates/infoscreen_admin.html:51 +msgid "Item type" +msgstr "Diatyyppi" + +#: infoscreen/templates/infoscreen_admin.html:62 +#: infoscreen/templates/infoscreen_admin.html:82 msgid "Info items" msgstr "Diat" -#: infoscreen/templates/infoscreen_admin.html:37 +#: infoscreen/templates/infoscreen_admin.html:63 +#: infoscreen/templates/infoscreen_admin.html:83 msgid "Infoitems available for rotations" msgstr "Rotaatioon lisättävät diat" -#: infoscreen/templates/infoscreen_admin.html:40 +#: infoscreen/templates/infoscreen_admin.html:66 +#: infoscreen/templates/infoscreen_admin.html:86 msgid "Item" msgstr "Dia" -#: infoscreen/templates/infoscreen_admin.html:41 +#: infoscreen/templates/infoscreen_admin.html:67 +#: infoscreen/templates/infoscreen_admin.html:87 msgid "Type" msgstr "Tyyppi" -#: infoscreen/templates/infoscreen_admin.html:42 -msgid "Set duration" -msgstr "Aseta kesto" - -#: infoscreen/templates/infoscreen_admin.html:43 -msgid "Add to rotation" -msgstr "Lisää rotaatioon" - -#: infoscreen/templates/infoscreen_admin.html:44 -#: infoscreen/templates/infoscreen_admin.html:51 -#: infoscreen/templates/infoscreen_admin.html:78 -#: infoscreen/templates/infoscreen_admin.html:85 -#: infoscreen/templates/infoscreen_admin.html:102 -#: infoscreen/templates/infoscreen_admin.html:106 +#: infoscreen/templates/infoscreen_admin.html:68 +#: infoscreen/templates/infoscreen_admin.html:73 +#: infoscreen/templates/infoscreen_admin.html:90 +#: infoscreen/templates/infoscreen_admin.html:97 +#: infoscreen/templates/infoscreen_admin.html:112 +#: infoscreen/templates/infoscreen_admin.html:116 +#: infoscreen/templates/infoscreen_admin.html:134 +#: infoscreen/templates/infoscreen_admin.html:140 #: members/templates/member_edit.html:20 members/templates/payment_edit.html:20 msgid "Delete" msgstr "Poista" -#: infoscreen/templates/infoscreen_admin.html:50 +#: infoscreen/templates/infoscreen_admin.html:88 +msgid "Set duration" +msgstr "Aseta kesto" + +#: infoscreen/templates/infoscreen_admin.html:89 +msgid "Add to rotation" +msgstr "Lisää rotaatioon" + +#: infoscreen/templates/infoscreen_admin.html:96 msgid "Add" msgstr "Lisää" -#: infoscreen/templates/infoscreen_admin.html:54 -msgid "Create new item" -msgstr "Luo uusi dia" - -#: infoscreen/templates/infoscreen_admin.html:57 -msgid "Item type" -msgstr "Diatyyppi" - -#: infoscreen/templates/infoscreen_admin.html:68 -msgid "Rotations" -msgstr "Rotaatiot" - -#: infoscreen/templates/infoscreen_admin.html:70 -msgid "Select rotation to edit" -msgstr "Valitse muokattava rotaatio" - -#: infoscreen/templates/infoscreen_admin.html:74 -#: infoscreen/templates/infoscreen_admin.html:96 +#: infoscreen/templates/infoscreen_admin.html:105 +#: infoscreen/templates/infoscreen_admin.html:131 msgid "Rotation" msgstr "Rotaatio" -#: infoscreen/templates/infoscreen_admin.html:75 -msgid "id" -msgstr "id" - -#: infoscreen/templates/infoscreen_admin.html:76 -#: infoscreen/templates/infoscreen_admin.html:83 -msgid "Select" -msgstr "Valitse" - -#: infoscreen/templates/infoscreen_admin.html:77 -#: infoscreen/templates/infoscreen_admin.html:84 +#: infoscreen/templates/infoscreen_admin.html:105 +#: infoscreen/templates/infoscreen_admin.html:133 +#: infoscreen/templates/infoscreen_admin.html:139 msgid "Preview" msgstr "Esikatsele" -#: infoscreen/templates/infoscreen_admin.html:88 -msgid "Name" -msgstr "Nimi" - -#: infoscreen/templates/infoscreen_admin.html:89 -msgid "Create new" -msgstr "Luo uusi" - -#: infoscreen/templates/infoscreen_admin.html:97 +#: infoscreen/templates/infoscreen_admin.html:107 msgid "Instances in currently selected rotation" msgstr "Nykyisen rotaation diat" -#: infoscreen/templates/infoscreen_admin.html:100 +#: infoscreen/templates/infoscreen_admin.html:110 msgid "Instance" msgstr "Dia" -#: infoscreen/templates/infoscreen_admin.html:101 +#: infoscreen/templates/infoscreen_admin.html:111 msgid "Duration" msgstr "Kesto" +#: infoscreen/templates/infoscreen_admin.html:125 +msgid "Rotations" +msgstr "Rotaatiot" + +#: infoscreen/templates/infoscreen_admin.html:127 +msgid "Select rotation to edit" +msgstr "Valitse muokattava rotaatio" + +#: infoscreen/templates/infoscreen_admin.html:132 +msgid "id" +msgstr "id" + +#: infoscreen/templates/infoscreen_admin.html:143 +msgid "Name" +msgstr "Nimi" + +#: infoscreen/templates/infoscreen_admin.html:144 +msgid "Create new" +msgstr "Luo uusi" + #: members/models.py:16 msgid "First name" msgstr "Etunimi" @@ -365,93 +379,93 @@ msgstr "Maksutapahtumat" msgid "Language" msgstr "Kieli" -#: members/templates/settings.html:20 sikweb/settings-sample.py:177 +#: members/templates/settings.html:20 sikweb/settings-sample.py:178 #: sikweb/settings.py:177 msgid "Finnish" msgstr "suomi" -#: members/templates/settings.html:21 sikweb/settings-sample.py:176 +#: members/templates/settings.html:21 sikweb/settings-sample.py:177 #: sikweb/settings.py:176 msgid "English" msgstr "englanti" -#: members/views.py:114 members/views.py:171 members/views.py:190 +#: members/views.py:121 members/views.py:178 members/views.py:197 msgid "No member id specified" msgstr "Jäsenen ID ei määritelty" -#: members/views.py:136 +#: members/views.py:143 msgid "Successfully added member" msgstr "Onnistuneesti lisättiin jäsen" -#: members/views.py:157 +#: members/views.py:164 msgid "Successfully updated member" msgstr "Onnistuneesti päivitettiin jäsen" -#: members/views.py:161 +#: members/views.py:168 msgid "Could not update member object" msgstr "Jäsenobjektia ei voitu päivittää" -#: members/views.py:175 +#: members/views.py:182 msgid "Successfully deleted member" msgstr "Onnistuneesti poistettiin jäsen" -#: members/views.py:181 +#: members/views.py:188 msgid "Could not delete member object" msgstr "Jäsenobjektia ei voitu poistaa" -#: members/views.py:224 members/views.py:258 members/views.py:276 +#: members/views.py:231 members/views.py:265 members/views.py:283 msgid "No application id specified" msgstr "Hakemuksen ID ei määritelty" -#: members/views.py:245 +#: members/views.py:252 msgid "Successfully accepted application" msgstr "Onnistuneesti hyväksyttiin hakemus" -#: members/views.py:248 +#: members/views.py:255 msgid "Could not accept application object" msgstr "Hakemusobjektia ei voitu hyväksyä" -#: members/views.py:262 +#: members/views.py:269 msgid "Successfully deleted application" msgstr "Onnistuneesti poistettiin hakemus" -#: members/views.py:267 +#: members/views.py:274 msgid "Could not delete application object" msgstr "Hakemusobjektia ei voitu poistaa" -#: members/views.py:331 +#: members/views.py:338 msgid "Successfully added payment for member" msgstr "Onnistuneesti lisättiin maksutapahtuma jäsenelle" -#: members/views.py:344 members/views.py:357 members/views.py:371 +#: members/views.py:351 members/views.py:364 members/views.py:378 msgid "No payment id specified" msgstr "Maksutapahtuman ID ei määritelty" -#: members/views.py:375 +#: members/views.py:382 msgid "Successfully deleted payment" msgstr "Onnistuneesti poistettiin maksutapahtuma" -#: members/views.py:380 +#: members/views.py:387 msgid "Could not delete payment object" msgstr "Maksutapahtumaobjektia ei voitu poistaa" -#: members/views.py:395 +#: members/views.py:402 msgid "Successfully updated payment" msgstr "Onnistuneesti päivitettiin maksutapahtuma" -#: members/views.py:398 +#: members/views.py:405 msgid "Could not update payment object" msgstr "Maksutapahtumaobjektia ei voitu päivittää" -#: members/views.py:415 +#: members/views.py:422 msgid "Missing \"textfield\" POST request field" msgstr "Puuttuva \"textfield\" POST-kenttä" -#: members/views.py:420 +#: members/views.py:427 msgid "Successfully imported multiple members" msgstr "Onnistuneesti tuotu useita jäseniä" -#: members/views.py:423 +#: members/views.py:430 msgid "Failed to import members" msgstr "Jäsenten tuonti epäonnistui" @@ -490,3 +504,6 @@ msgstr "Sössö" #: webapp/templates/navigation.html:32 msgid "Contact" msgstr "Yhteystiedot" + +#~ msgid "Select" +#~ msgstr "Valitse" From bb769583f26ec5fbb00e42d08d1afd7cc80d9f8d Mon Sep 17 00:00:00 2001 From: Juhana Luomanen Date: Mon, 29 May 2017 11:41:39 +0300 Subject: [PATCH 12/22] Modify the order of infoitems --- infoscreen/templates/infoscreen_admin.html | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/infoscreen/templates/infoscreen_admin.html b/infoscreen/templates/infoscreen_admin.html index 6fd4ead..7ab1d90 100644 --- a/infoscreen/templates/infoscreen_admin.html +++ b/infoscreen/templates/infoscreen_admin.html @@ -50,7 +50,7 @@ {% trans "Item type" %} - @@ -102,8 +102,7 @@
    -

    {% trans "Rotation" %}: {$ selected_rot.name $}

    - +

    {% trans "Rotation" %}: {$ selected_rot.name $}

    {% trans "Instances in currently selected rotation" %}:
    From 3a8d9880330a3e0bfa32ab91926855be7e0f7797 Mon Sep 17 00:00:00 2001 From: Jan Tuomi Date: Mon, 29 May 2017 22:00:29 +0300 Subject: [PATCH 13/22] Implement conflict resolution logic --- members/templates/member_list.html | 7 +++ members/urls.py | 6 ++- members/views.py | 70 ++++++++++++++++++++++++------ 3 files changed, 69 insertions(+), 14 deletions(-) diff --git a/members/templates/member_list.html b/members/templates/member_list.html index 221764f..18bc6cb 100644 --- a/members/templates/member_list.html +++ b/members/templates/member_list.html @@ -11,6 +11,13 @@

    {% trans "Member register" %}

    + {% if is_member_conflict %} +
    + {% blocktrans %}There are duplicate member entries in the register. + Please visit duplicate resolver.{% endblocktrans %} +
    + {% endif %} + {% if notification %}
    {{ notification }} diff --git a/members/urls.py b/members/urls.py index d4a8fe9..9738af6 100644 --- a/members/urls.py +++ b/members/urls.py @@ -17,6 +17,7 @@ from members.views import member_delete_confirm from members.views import member_delete from members.views import payment_list from members.views import member_duplicates +from members.views import resolve_conflict # rest api from members.views import MemberDetail @@ -104,6 +105,9 @@ urlpatterns = [ url(r'^api/members/(?P\d+)$', MemberDetail.as_view()), # member duplicate resolution view - url(r'^duplicates$', member_duplicates) + url(r'^duplicates$', member_duplicates), + + # post target for resolving a conflict + url(r'^resolve_conflict$', resolve_conflict) ] diff --git a/members/views.py b/members/views.py index 4a7acbf..691b30f 100644 --- a/members/views.py +++ b/members/views.py @@ -105,7 +105,8 @@ def member_list(request, *args, **kwargs): context = { 'table': table_html, 'member_count': len(members), - 'notification': request.GET.get('notification', None) + 'notification': request.GET.get('notification', None), + 'is_member_conflict': MemberConflict.objects.exists() } return render(request, 'member_list.html', context) @@ -459,7 +460,6 @@ def export_csv(request, *args, **kwargs): @require_http_methods(["GET"]) @permission_required('members.change_member', login_url='/login') def member_duplicates(request, *args, **kwargs): - # TODO conflicts = MemberConflict.objects.all() context = { 'conflicts': conflicts @@ -468,6 +468,35 @@ def member_duplicates(request, *args, **kwargs): return render(request, 'member_duplicates.html', context) +@ensure_csrf_cookie +@require_http_methods(["POST"]) +@permission_required('members.change_member', login_url='/login') +def resolve_conflict(request, *args, **kwargs): + action = request.POST.get('action', None) + if action not in ['first', 'second', 'both']: + return render(request, 'error.html', {'error': '{}: {}'.format(('Incorrect action value'), action)}) + + id = request.POST.get('id', None) + if id is None: + return render(request, 'error.html', {'error': '{}: {}'.format(('Incorrect id value'), id)}) + + conflict = MemberConflict.objects.get(id=id) + first_member = conflict.first_member + second_member = conflict.second_member + + if action == 'first': + second_member.delete() + elif action == 'second': + first_member.delete() + + conflict.delete() + if MemberConflict.objects.exists(): + return HttpResponseRedirect('/members/duplicates') + else: + notification = _('Successfully resolved all member conflicts.') + return HttpResponseRedirect('/members/list?notification={}'.format(html.escape(notification))) + + def send_mail_wrapper(subject, message, email_to): send_mail(subject, message, @@ -476,20 +505,35 @@ def send_mail_wrapper(subject, message, email_to): fail_silently=False) -@receiver(post_save, sender=Request) -def email_on_request(sender, instance, created, **kwargs): - if created: - subject = 'Test1' - message = 'Please validate your email address\r\n' - send_mail_wrapper(subject, message, instance.email) +# @receiver(post_save, sender=Request) +# def email_on_request(sender, instance, created, **kwargs): +# if created: +# subject = 'Test1' +# message = 'Please validate your email address\r\n' +# send_mail_wrapper(subject, message, instance.email) +# +# +# @receiver(post_save, sender=Member) +# def email_on_accept(sender, instance, created, **kwargs): +# if created: +# subject = 'Test2' +# message = 'Jäsenhakemuksesi on hyväksytty!!!\r\n' +# send_mail_wrapper(subject, message, instance.email) @receiver(post_save, sender=Member) -def email_on_accept(sender, instance, created, **kwargs): - if created: - subject = 'Test2' - message = 'Jäsenhakemuksesi on hyväksytty!!!\r\n' - send_mail_wrapper(subject, message, instance.email) +def check_for_duplicates(sender, instance, created, **kwargs): + name_candidates = Member.objects.filter(first_name=instance.first_name, + last_name=instance.last_name) + email_candidates = Member.objects.filter(email=instance.email) + + candidates = name_candidates | email_candidates + duplicates = candidates.exclude(id=instance.id) + + if len(duplicates) > 0: + conflict = MemberConflict(first_member=instance, + second_member=duplicates[0]) + conflict.save() # Can be used to retrieve single member information via REST API From 26f4d280032c123d3a03d7f68281d6ebdc33eb65 Mon Sep 17 00:00:00 2001 From: Jan Tuomi Date: Mon, 29 May 2017 22:59:38 +0300 Subject: [PATCH 14/22] Finalize duplicate resolver styles Also try-except the email sending code --- locale/en/LC_MESSAGES/django.mo | Bin 6721 -> 6721 bytes locale/en/LC_MESSAGES/django.po | 81 ++++++++++++++++------ locale/fi/LC_MESSAGES/django.mo | Bin 7259 -> 8158 bytes locale/fi/LC_MESSAGES/django.po | 82 +++++++++++++++++------ members/static/css/members.css | 14 ++++ members/templates/member_duplicates.html | 6 +- members/views.py | 42 +++++++----- 7 files changed, 163 insertions(+), 62 deletions(-) diff --git a/locale/en/LC_MESSAGES/django.mo b/locale/en/LC_MESSAGES/django.mo index de97be5352f09e9eff6e67864f6557912b19c17c..2f37095a4904758891e9052241d56bac162b0af5 100644 GIT binary patch delta 20 ccmX?Ta?oVMY(aKQ1tTLX6N}A@1m|-A08KUqz5oCK delta 20 ccmX?Ta?oVMY(aJl1tUW%Q^U=R1m|-A08IV{wg3PC diff --git a/locale/en/LC_MESSAGES/django.po b/locale/en/LC_MESSAGES/django.po index da992d6..92d0cd8 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-28 21:51+0300\n" +"POT-Creation-Date: 2017-05-29 22:48+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -289,6 +289,31 @@ msgstr "Are you sure you want to delete this member?" msgid "Yes, I'm sure" msgstr "Yes, I'm sure" +#: members/templates/member_duplicates.html:9 +msgid "Conflicting member entries" +msgstr "" + +#: members/templates/member_duplicates.html:13 +msgid "" +"Found conflicting member entries. Choose how to handle the problematic data." +msgstr "" + +#: members/templates/member_duplicates.html:29 +msgid "Which one has the correct information for this member?" +msgstr "" + +#: members/templates/member_duplicates.html:31 +msgid "Accept first and remove second" +msgstr "" + +#: members/templates/member_duplicates.html:32 +msgid "Accept second and remove first" +msgstr "" + +#: members/templates/member_duplicates.html:33 +msgid "Accept both as two members" +msgstr "" + #: members/templates/member_edit.html:9 msgid "Edit member" msgstr "Edit member" @@ -297,7 +322,13 @@ msgstr "Edit member" msgid "Member register" msgstr "Member register" -#: members/templates/member_list.html:23 +#: members/templates/member_list.html:16 +msgid "" +"There are duplicate member entries in the register.\n" +" Please visit duplicate resolver." +msgstr "" + +#: members/templates/member_list.html:30 msgid "Download CSV" msgstr "Download CSV" @@ -372,86 +403,92 @@ msgstr "Finnish" msgid "English" msgstr "English" -#: members/views.py:127 members/views.py:184 members/views.py:203 +#: members/views.py:128 members/views.py:185 members/views.py:204 msgid "No member id specified" msgstr "No member id specified" -#: members/views.py:149 +#: members/views.py:150 msgid "Successfully added member" msgstr "Successfully added member" -#: members/views.py:170 +#: members/views.py:171 msgid "Successfully updated member" msgstr "Successfully updated member" -#: members/views.py:174 +#: members/views.py:175 msgid "Could not update member object" msgstr "Could not update member object" -#: members/views.py:188 +#: members/views.py:189 msgid "Successfully deleted member" msgstr "Successfully deleted member" -#: members/views.py:194 +#: members/views.py:195 msgid "Could not delete member object" msgstr "Could not delete member object" -#: members/views.py:237 members/views.py:271 members/views.py:289 +#: members/views.py:238 members/views.py:272 members/views.py:290 msgid "No application id specified" msgstr "No application id specified" -#: members/views.py:258 +#: members/views.py:259 msgid "Successfully accepted application" msgstr "Successfully accepted application" -#: members/views.py:261 +#: members/views.py:262 msgid "Could not accept application object" msgstr "Could not accept application object" -#: members/views.py:275 +#: members/views.py:276 msgid "Successfully deleted application" msgstr "Successfully deleted application" -#: members/views.py:280 +#: members/views.py:281 msgid "Could not delete application object" msgstr "Could not delete application object" -#: members/views.py:344 +#: members/views.py:345 msgid "Successfully added payment for member" msgstr "Successfully added payment for member" -#: members/views.py:357 members/views.py:370 members/views.py:384 +#: members/views.py:358 members/views.py:371 members/views.py:385 msgid "No payment id specified" msgstr "No payment id specified" -#: members/views.py:388 +#: members/views.py:389 msgid "Successfully deleted payment" msgstr "Successfully deleted payment" -#: members/views.py:393 +#: members/views.py:394 msgid "Could not delete payment object" msgstr "Could not delete payment object" -#: members/views.py:408 +#: members/views.py:409 msgid "Successfully updated payment" msgstr "Successfully updated payment" -#: members/views.py:411 +#: members/views.py:412 msgid "Could not update payment object" msgstr "Could not update payment object" -#: members/views.py:428 +#: members/views.py:429 msgid "Missing \"textfield\" POST request field" msgstr "Missing \"textfield\" POST request field" -#: members/views.py:433 +#: members/views.py:434 msgid "Successfully imported multiple members" msgstr "Successfully imported multiple members" -#: members/views.py:436 +#: members/views.py:437 msgid "Failed to import members" msgstr "Failed to import members" +#: members/views.py:497 +#, fuzzy +#| msgid "Successfully deleted member" +msgid "Successfully resolved all member conflicts." +msgstr "Successfully deleted member" + #: templates/footer.html:7 msgid "Copyright Aalto-yliopiston Sähköinsinöörikilta ry" msgstr "Copyright Aalto-yliopiston Sähköinsinöörikilta ry" diff --git a/locale/fi/LC_MESSAGES/django.mo b/locale/fi/LC_MESSAGES/django.mo index 3e66af371086721823f8273fec6974b190933926..dfa853d232c16429aaeea91ab43ae8ef66b4a0a9 100644 GIT binary patch delta 3501 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\n" "Language-Team: LANGUAGE \n" @@ -293,6 +293,31 @@ msgstr "Oletko varma, että haluat poistaa tämän jäsenen?" msgid "Yes, I'm sure" msgstr "Kyllä, olen varma" +#: members/templates/member_duplicates.html:9 +msgid "Conflicting member entries" +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." + +#: members/templates/member_duplicates.html:29 +msgid "Which one has the correct information for this member?" +msgstr "Kummassa on jäsenen oikeat tiedot?" + +#: members/templates/member_duplicates.html:31 +msgid "Accept first and remove second" +msgstr "Hyväksy ensimmäinen ja poista toinen" + +#: members/templates/member_duplicates.html:32 +msgid "Accept second and remove first" +msgstr "Hyväksy toinen ja poista ensimmäinen" + +#: members/templates/member_duplicates.html:33 +msgid "Accept both as two members" +msgstr "Hyväksy molemmat kahtena jäsenenä" + #: members/templates/member_edit.html:9 msgid "Edit member" msgstr "Muokkaa jäsentä" @@ -301,7 +326,14 @@ msgstr "Muokkaa jäsentä" msgid "Member register" msgstr "Jäsenrekisteri" -#: members/templates/member_list.html:23 +#: members/templates/member_list.html:16 +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." + +#: members/templates/member_list.html:30 msgid "Download CSV" msgstr "Lataa CSV" @@ -376,86 +408,92 @@ msgstr "suomi" msgid "English" msgstr "englanti" -#: members/views.py:127 members/views.py:184 members/views.py:203 +#: members/views.py:128 members/views.py:185 members/views.py:204 msgid "No member id specified" msgstr "Jäsenen ID ei määritelty" -#: members/views.py:149 +#: members/views.py:150 msgid "Successfully added member" msgstr "Onnistuneesti lisättiin jäsen" -#: members/views.py:170 +#: members/views.py:171 msgid "Successfully updated member" msgstr "Onnistuneesti päivitettiin jäsen" -#: members/views.py:174 +#: members/views.py:175 msgid "Could not update member object" msgstr "Jäsenobjektia ei voitu päivittää" -#: members/views.py:188 +#: members/views.py:189 msgid "Successfully deleted member" msgstr "Onnistuneesti poistettiin jäsen" -#: members/views.py:194 +#: members/views.py:195 msgid "Could not delete member object" msgstr "Jäsenobjektia ei voitu poistaa" -#: members/views.py:237 members/views.py:271 members/views.py:289 +#: members/views.py:238 members/views.py:272 members/views.py:290 msgid "No application id specified" msgstr "Hakemuksen ID ei määritelty" -#: members/views.py:258 +#: members/views.py:259 msgid "Successfully accepted application" msgstr "Onnistuneesti hyväksyttiin hakemus" -#: members/views.py:261 +#: members/views.py:262 msgid "Could not accept application object" msgstr "Hakemusobjektia ei voitu hyväksyä" -#: members/views.py:275 +#: members/views.py:276 msgid "Successfully deleted application" msgstr "Onnistuneesti poistettiin hakemus" -#: members/views.py:280 +#: members/views.py:281 msgid "Could not delete application object" msgstr "Hakemusobjektia ei voitu poistaa" -#: members/views.py:344 +#: members/views.py:345 msgid "Successfully added payment for member" msgstr "Onnistuneesti lisättiin maksutapahtuma jäsenelle" -#: members/views.py:357 members/views.py:370 members/views.py:384 +#: members/views.py:358 members/views.py:371 members/views.py:385 msgid "No payment id specified" msgstr "Maksutapahtuman ID ei määritelty" -#: members/views.py:388 +#: members/views.py:389 msgid "Successfully deleted payment" msgstr "Onnistuneesti poistettiin maksutapahtuma" -#: members/views.py:393 +#: members/views.py:394 msgid "Could not delete payment object" msgstr "Maksutapahtumaobjektia ei voitu poistaa" -#: members/views.py:408 +#: members/views.py:409 msgid "Successfully updated payment" msgstr "Onnistuneesti päivitettiin maksutapahtuma" -#: members/views.py:411 +#: members/views.py:412 msgid "Could not update payment object" msgstr "Maksutapahtumaobjektia ei voitu päivittää" -#: members/views.py:428 +#: members/views.py:429 msgid "Missing \"textfield\" POST request field" msgstr "Puuttuva \"textfield\" POST-kenttä" -#: members/views.py:433 +#: members/views.py:434 msgid "Successfully imported multiple members" msgstr "Onnistuneesti tuotu useita jäseniä" -#: members/views.py:436 +#: members/views.py:437 msgid "Failed to import members" msgstr "Jäsenten tuonti epäonnistui" +#: members/views.py:497 +#, fuzzy +#| msgid "Successfully deleted member" +msgid "Successfully resolved all member conflicts." +msgstr "Onnistuneesti poistettiin jäsen" + #: templates/footer.html:7 msgid "Copyright Aalto-yliopiston Sähköinsinöörikilta ry" msgstr "Copyright Aalto-yliopiston Sähköinsinöörikilta ry" diff --git a/members/static/css/members.css b/members/static/css/members.css index 9b99baf..9cea9bd 100644 --- a/members/static/css/members.css +++ b/members/static/css/members.css @@ -249,4 +249,18 @@ input { .conflict-row { overflow: auto; + margin-bottom: 2rem; + border: 1px dotted black; +} + +.table-conflict { +} + +.conflict-row>div>table>tbody>tr>th, +.conflict-row>div>table>tbody>tr>td { + border-top: none; + padding: 1rem; +} + +.conflict-row>div { } diff --git a/members/templates/member_duplicates.html b/members/templates/member_duplicates.html index 359329e..c6f2995 100644 --- a/members/templates/member_duplicates.html +++ b/members/templates/member_duplicates.html @@ -13,14 +13,14 @@

    {% blocktrans %}Found conflicting member entries. Choose how to handle the problematic data.{% endblocktrans %}

    {% for conflict in conflicts %} -
    +
    -
    +
    {{ conflict.first_member_form }}
    - +
    {{ conflict.second_member_form }}
    diff --git a/members/views.py b/members/views.py index 691b30f..615dd9e 100644 --- a/members/views.py +++ b/members/views.py @@ -25,6 +25,7 @@ import requests import logging import html import csv +from smtplib import SMTPAuthenticationError from members.models import Member, Request, Payment, MemberConflict from members.forms import MemberForm, PaymentForm, ApplicationForm @@ -490,6 +491,7 @@ def resolve_conflict(request, *args, **kwargs): first_member.delete() conflict.delete() + if MemberConflict.objects.exists(): return HttpResponseRedirect('/members/duplicates') else: @@ -505,24 +507,29 @@ def send_mail_wrapper(subject, message, email_to): fail_silently=False) -# @receiver(post_save, sender=Request) -# def email_on_request(sender, instance, created, **kwargs): -# if created: -# subject = 'Test1' -# message = 'Please validate your email address\r\n' -# send_mail_wrapper(subject, message, instance.email) -# -# -# @receiver(post_save, sender=Member) -# def email_on_accept(sender, instance, created, **kwargs): -# if created: -# subject = 'Test2' -# message = 'Jäsenhakemuksesi on hyväksytty!!!\r\n' -# send_mail_wrapper(subject, message, instance.email) +@receiver(post_save, sender=Request) +def email_on_request(sender, instance, created, **kwargs): + try: + if created: + subject = 'Test1' + message = 'Please validate your email address\r\n' + send_mail_wrapper(subject, message, instance.email) + except SMTPAuthenticationError: + memberlogger.error('Failed to send email to accepted request!') @receiver(post_save, sender=Member) -def check_for_duplicates(sender, instance, created, **kwargs): +def email_on_accept(sender, instance, created, **kwargs): + try: + if created: + subject = 'Test2' + message = 'Jäsenhakemuksesi on hyväksytty!!!\r\n' + send_mail_wrapper(subject, message, instance.email) + except SMTPAuthenticationError: + memberlogger.error('Failed to send email to accepted member!') + + +def check_for_duplicates(instance): name_candidates = Member.objects.filter(first_name=instance.first_name, last_name=instance.last_name) email_candidates = Member.objects.filter(email=instance.email) @@ -536,6 +543,11 @@ def check_for_duplicates(sender, instance, created, **kwargs): conflict.save() +@receiver(post_save, sender=Member) +def duplicate_receiver(sender, instance, created, **kwargs): + check_for_duplicates(instance) + + # Can be used to retrieve single member information via REST API class MemberDetail(generics.RetrieveAPIView): queryset = Member.objects.all() From 5c8dfdfd1dcd647d4518975090cbd6557e349b27 Mon Sep 17 00:00:00 2001 From: Jan Tuomi Date: Mon, 29 May 2017 23:26:36 +0300 Subject: [PATCH 15/22] Add settings value for automatic emails Resolves #54 --- members/views.py | 6 ++++++ sikweb/settings-sample.py | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/members/views.py b/members/views.py index 615dd9e..49545a8 100644 --- a/members/views.py +++ b/members/views.py @@ -509,6 +509,9 @@ def send_mail_wrapper(subject, message, email_to): @receiver(post_save, sender=Request) def email_on_request(sender, instance, created, **kwargs): + if not settings.ENABLE_AUTOMATIC_EMAILS: + return + try: if created: subject = 'Test1' @@ -520,6 +523,9 @@ def email_on_request(sender, instance, created, **kwargs): @receiver(post_save, sender=Member) def email_on_accept(sender, instance, created, **kwargs): + if not settings.ENABLE_AUTOMATIC_EMAILS: + return + try: if created: subject = 'Test2' diff --git a/sikweb/settings-sample.py b/sikweb/settings-sample.py index ddce7b0..755f6c4 100644 --- a/sikweb/settings-sample.py +++ b/sikweb/settings-sample.py @@ -158,7 +158,7 @@ EMAIL_PORT = 587 EMAIL_HOST_USER = '@gmail.com' EMAIL_HOST_PASSWORD = '' DEFAULT_EMAIL_FROM = 'SIK Viestintä ' - +ENABLE_AUTOMATIC_EMAILS = False # ReCaptcha # http://www.yaconiello.com/blog/integrating-google-recaptcha-to-django/ From 08c919ded3c24ff53e2e92db6568a90d3b758b35 Mon Sep 17 00:00:00 2001 From: Jan Tuomi Date: Tue, 30 May 2017 20:23:17 +0300 Subject: [PATCH 16/22] Implement responsive styles for mobile --- infoscreen/static/css/infoscreen_admin.css | 44 +++++++++++++++++++--- infoscreen/templates/infoscreen_admin.html | 2 +- 2 files changed, 40 insertions(+), 6 deletions(-) diff --git a/infoscreen/static/css/infoscreen_admin.css b/infoscreen/static/css/infoscreen_admin.css index a7284e4..e108cf3 100644 --- a/infoscreen/static/css/infoscreen_admin.css +++ b/infoscreen/static/css/infoscreen_admin.css @@ -1,9 +1,43 @@ -td{ -max-width:12vw; -overflow:hidden; -word-wrap:break-word; +html { + font-size: 16px; } -#header{ +body { + padding: 1.5rem; + margin: 0.5rem; +} + +tbody { + border: 1px solid #ddd; +} + +@media (min-width: 760px) { + body { + font-size: 1rem; + } +} + +@media (max-width: 760px) { + body { + font-size: 1rem; + } + h1 { + font-size: 3rem; + } + h2 { + font-size: 2rem; + } + .logout-button { + margin: 0; + } +} + +td { + max-width: 12vw; + overflow: hidden; + word-wrap: break-word; +} + +#header { max-width: 100%; } diff --git a/infoscreen/templates/infoscreen_admin.html b/infoscreen/templates/infoscreen_admin.html index 7ab1d90..63ce124 100644 --- a/infoscreen/templates/infoscreen_admin.html +++ b/infoscreen/templates/infoscreen_admin.html @@ -4,7 +4,7 @@ - + Infoscreen admin From c9f768a5b675085452c9b725592b7ed5db174ab3 Mon Sep 17 00:00:00 2001 From: Jan Tuomi Date: Tue, 30 May 2017 20:36:18 +0300 Subject: [PATCH 17/22] Translations and some styles --- infoscreen/static/css/infoscreen_admin.css | 4 ++ infoscreen/templates/infoscreen_admin.html | 7 ++- locale/en/LC_MESSAGES/django.mo | Bin 6679 -> 6679 bytes locale/en/LC_MESSAGES/django.po | 48 ++++++++++++--------- locale/fi/LC_MESSAGES/django.mo | Bin 7234 -> 7332 bytes locale/fi/LC_MESSAGES/django.po | 46 +++++++++++--------- 6 files changed, 59 insertions(+), 46 deletions(-) diff --git a/infoscreen/static/css/infoscreen_admin.css b/infoscreen/static/css/infoscreen_admin.css index e108cf3..8869711 100644 --- a/infoscreen/static/css/infoscreen_admin.css +++ b/infoscreen/static/css/infoscreen_admin.css @@ -11,6 +11,10 @@ tbody { border: 1px solid #ddd; } +div { + margin-bottom: 0.5rem; +} + @media (min-width: 760px) { body { font-size: 1rem; diff --git a/infoscreen/templates/infoscreen_admin.html b/infoscreen/templates/infoscreen_admin.html index 63ce124..1b92925 100644 --- a/infoscreen/templates/infoscreen_admin.html +++ b/infoscreen/templates/infoscreen_admin.html @@ -41,11 +41,12 @@ -
    +
    -
    +

    {% trans "Create new item" %}

    +
    {% trans "Create a new item by type" %}
    @@ -101,7 +102,6 @@
    -

    {% trans "Rotation" %}: {$ selected_rot.name $}

    {% trans "Instances in currently selected rotation" %}:
    {% trans "Item type" %}
    @@ -117,7 +117,6 @@
    -
    diff --git a/locale/en/LC_MESSAGES/django.mo b/locale/en/LC_MESSAGES/django.mo index 8c684b3eee97072aafb9b5b4d66df72b8fae93f8..a51bcacb22eefee0a91dae8c5ec9fe08dbe9215a 100644 GIT binary patch delta 21 ccmbPkGTmfDp&*B`fr62Nm9f$0O2K&?07$9^H~;_u delta 21 ccmbPkGTmfDp&*Bmg@U1(m9hEeO2K&?07*v%NdN!< diff --git a/locale/en/LC_MESSAGES/django.po b/locale/en/LC_MESSAGES/django.po index 9633481..5dee4f9 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-28 16:37+0300\n" +"POT-Creation-Date: 2017-05-30 20:32+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -74,34 +74,40 @@ msgstr "Create/Delete" msgid "Create new item" msgstr "Create new item" -#: infoscreen/templates/infoscreen_admin.html:51 +#: infoscreen/templates/infoscreen_admin.html:49 +#, fuzzy +#| msgid "Create new item" +msgid "Create a new item by type" +msgstr "Create new item" + +#: infoscreen/templates/infoscreen_admin.html:52 msgid "Item type" msgstr "Item type" -#: infoscreen/templates/infoscreen_admin.html:62 -#: infoscreen/templates/infoscreen_admin.html:82 +#: infoscreen/templates/infoscreen_admin.html:63 +#: infoscreen/templates/infoscreen_admin.html:83 msgid "Info items" msgstr "Info items" -#: infoscreen/templates/infoscreen_admin.html:63 -#: infoscreen/templates/infoscreen_admin.html:83 +#: infoscreen/templates/infoscreen_admin.html:64 +#: infoscreen/templates/infoscreen_admin.html:84 msgid "Infoitems available for rotations" msgstr "Infoitems available for rotations" -#: infoscreen/templates/infoscreen_admin.html:66 -#: infoscreen/templates/infoscreen_admin.html:86 +#: infoscreen/templates/infoscreen_admin.html:67 +#: infoscreen/templates/infoscreen_admin.html:87 msgid "Item" msgstr "Item" -#: infoscreen/templates/infoscreen_admin.html:67 -#: infoscreen/templates/infoscreen_admin.html:87 +#: infoscreen/templates/infoscreen_admin.html:68 +#: infoscreen/templates/infoscreen_admin.html:88 msgid "Type" msgstr "Type" -#: infoscreen/templates/infoscreen_admin.html:68 -#: infoscreen/templates/infoscreen_admin.html:73 -#: infoscreen/templates/infoscreen_admin.html:90 -#: infoscreen/templates/infoscreen_admin.html:97 +#: infoscreen/templates/infoscreen_admin.html:69 +#: infoscreen/templates/infoscreen_admin.html:74 +#: infoscreen/templates/infoscreen_admin.html:91 +#: infoscreen/templates/infoscreen_admin.html:98 #: infoscreen/templates/infoscreen_admin.html:112 #: infoscreen/templates/infoscreen_admin.html:116 #: infoscreen/templates/infoscreen_admin.html:134 @@ -110,24 +116,24 @@ msgstr "Type" msgid "Delete" msgstr "Delete" -#: infoscreen/templates/infoscreen_admin.html:88 +#: infoscreen/templates/infoscreen_admin.html:89 msgid "Set duration" msgstr "Set duration" -#: infoscreen/templates/infoscreen_admin.html:89 +#: infoscreen/templates/infoscreen_admin.html:90 msgid "Add to rotation" msgstr "Add to rotation" -#: infoscreen/templates/infoscreen_admin.html:96 +#: infoscreen/templates/infoscreen_admin.html:97 msgid "Add" msgstr "Add" -#: infoscreen/templates/infoscreen_admin.html:105 +#: infoscreen/templates/infoscreen_admin.html:106 #: infoscreen/templates/infoscreen_admin.html:131 msgid "Rotation" msgstr "Rotation" -#: infoscreen/templates/infoscreen_admin.html:105 +#: infoscreen/templates/infoscreen_admin.html:106 #: infoscreen/templates/infoscreen_admin.html:133 #: infoscreen/templates/infoscreen_admin.html:139 msgid "Preview" @@ -376,12 +382,12 @@ msgid "Language" msgstr "Language" #: members/templates/settings.html:20 sikweb/settings-sample.py:178 -#: sikweb/settings.py:177 +#: sikweb/settings.py:178 msgid "Finnish" msgstr "Finnish" #: members/templates/settings.html:21 sikweb/settings-sample.py:177 -#: sikweb/settings.py:176 +#: sikweb/settings.py:177 msgid "English" msgstr "English" diff --git a/locale/fi/LC_MESSAGES/django.mo b/locale/fi/LC_MESSAGES/django.mo index 0cc41b157f62d6fcce183fac827593eb4fb6ca53..ca7e32c4c9876be22de1a819c991a82f9578f872 100644 GIT binary patch delta 2573 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 diff --git a/locale/fi/LC_MESSAGES/django.po b/locale/fi/LC_MESSAGES/django.po index 099e1c4..e4796e3 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-28 16:39+0300\n" +"POT-Creation-Date: 2017-05-30 20:32+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -75,34 +75,38 @@ msgstr "Lisää/Poista" msgid "Create new item" msgstr "Luo uusi dia" -#: infoscreen/templates/infoscreen_admin.html:51 +#: infoscreen/templates/infoscreen_admin.html:49 +msgid "Create a new item by type" +msgstr "Luo uusi dia tyypin perusteella" + +#: infoscreen/templates/infoscreen_admin.html:52 msgid "Item type" msgstr "Diatyyppi" -#: infoscreen/templates/infoscreen_admin.html:62 -#: infoscreen/templates/infoscreen_admin.html:82 +#: infoscreen/templates/infoscreen_admin.html:63 +#: infoscreen/templates/infoscreen_admin.html:83 msgid "Info items" msgstr "Diat" -#: infoscreen/templates/infoscreen_admin.html:63 -#: infoscreen/templates/infoscreen_admin.html:83 +#: infoscreen/templates/infoscreen_admin.html:64 +#: infoscreen/templates/infoscreen_admin.html:84 msgid "Infoitems available for rotations" msgstr "Rotaatioon lisättävät diat" -#: infoscreen/templates/infoscreen_admin.html:66 -#: infoscreen/templates/infoscreen_admin.html:86 +#: infoscreen/templates/infoscreen_admin.html:67 +#: infoscreen/templates/infoscreen_admin.html:87 msgid "Item" msgstr "Dia" -#: infoscreen/templates/infoscreen_admin.html:67 -#: infoscreen/templates/infoscreen_admin.html:87 +#: infoscreen/templates/infoscreen_admin.html:68 +#: infoscreen/templates/infoscreen_admin.html:88 msgid "Type" msgstr "Tyyppi" -#: infoscreen/templates/infoscreen_admin.html:68 -#: infoscreen/templates/infoscreen_admin.html:73 -#: infoscreen/templates/infoscreen_admin.html:90 -#: infoscreen/templates/infoscreen_admin.html:97 +#: infoscreen/templates/infoscreen_admin.html:69 +#: infoscreen/templates/infoscreen_admin.html:74 +#: infoscreen/templates/infoscreen_admin.html:91 +#: infoscreen/templates/infoscreen_admin.html:98 #: infoscreen/templates/infoscreen_admin.html:112 #: infoscreen/templates/infoscreen_admin.html:116 #: infoscreen/templates/infoscreen_admin.html:134 @@ -111,24 +115,24 @@ msgstr "Tyyppi" msgid "Delete" msgstr "Poista" -#: infoscreen/templates/infoscreen_admin.html:88 +#: infoscreen/templates/infoscreen_admin.html:89 msgid "Set duration" msgstr "Aseta kesto" -#: infoscreen/templates/infoscreen_admin.html:89 +#: infoscreen/templates/infoscreen_admin.html:90 msgid "Add to rotation" msgstr "Lisää rotaatioon" -#: infoscreen/templates/infoscreen_admin.html:96 +#: infoscreen/templates/infoscreen_admin.html:97 msgid "Add" msgstr "Lisää" -#: infoscreen/templates/infoscreen_admin.html:105 +#: infoscreen/templates/infoscreen_admin.html:106 #: infoscreen/templates/infoscreen_admin.html:131 msgid "Rotation" msgstr "Rotaatio" -#: infoscreen/templates/infoscreen_admin.html:105 +#: infoscreen/templates/infoscreen_admin.html:106 #: infoscreen/templates/infoscreen_admin.html:133 #: infoscreen/templates/infoscreen_admin.html:139 msgid "Preview" @@ -380,12 +384,12 @@ msgid "Language" msgstr "Kieli" #: members/templates/settings.html:20 sikweb/settings-sample.py:178 -#: sikweb/settings.py:177 +#: sikweb/settings.py:178 msgid "Finnish" msgstr "suomi" #: members/templates/settings.html:21 sikweb/settings-sample.py:177 -#: sikweb/settings.py:176 +#: sikweb/settings.py:177 msgid "English" msgstr "englanti" From 77c69036587737857e21340b158cbc400167562d Mon Sep 17 00:00:00 2001 From: Jan Tuomi Date: Tue, 30 May 2017 21:29:06 +0300 Subject: [PATCH 18/22] More mobile styles :smile: --- infoscreen/static/css/infoscreen_admin.css | 24 ++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/infoscreen/static/css/infoscreen_admin.css b/infoscreen/static/css/infoscreen_admin.css index 8869711..f4ceb48 100644 --- a/infoscreen/static/css/infoscreen_admin.css +++ b/infoscreen/static/css/infoscreen_admin.css @@ -15,6 +15,12 @@ div { margin-bottom: 0.5rem; } +td { + max-width: 12vw; + overflow: hidden; + word-wrap: break-word; +} + @media (min-width: 760px) { body { font-size: 1rem; @@ -23,24 +29,26 @@ div { @media (max-width: 760px) { body { - font-size: 1rem; + font-size: 0.7rem; + padding: 0; } h1 { - font-size: 3rem; + font-size: 2.5rem; } h2 { - font-size: 2rem; + font-size: 1.5rem; } .logout-button { margin: 0; } + table>tbody>tr>td, + table>tbody>tr>th { + white-space: normal; + padding: 0.2rem !important; + max-width: 100%; + } } -td { - max-width: 12vw; - overflow: hidden; - word-wrap: break-word; -} #header { max-width: 100%; From c3b1510bb8a5c6c233fa586d185714bbf1f3520d Mon Sep 17 00:00:00 2001 From: Juhana Luomanen Date: Thu, 1 Jun 2017 17:38:25 +0300 Subject: [PATCH 19/22] Add settings tab for changing language --- infoscreen/templates/infoscreen_admin.html | 27 +++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/infoscreen/templates/infoscreen_admin.html b/infoscreen/templates/infoscreen_admin.html index 1b92925..7517f22 100644 --- a/infoscreen/templates/infoscreen_admin.html +++ b/infoscreen/templates/infoscreen_admin.html @@ -40,6 +40,7 @@
  • +
  • {% trans "Settings" %}
  • @@ -118,8 +119,7 @@
    -
    +

    {% trans "Rotations" %}

    {% trans "Select rotation to edit" %}: @@ -146,7 +146,28 @@
    -
    +
    +
    +
    +

    {% trans "Settings" %}

    +
    + +
    {% csrf_token %} +
    +

    {% trans "Language" %}

    +
    +
    + +
    +
    + +
    +
    +
    +
    {% include "footer.html" %} From c36ef9ad3f10830df3e38db4e04b34225e6ec7a8 Mon Sep 17 00:00:00 2001 From: Jan Tuomi Date: Thu, 1 Jun 2017 18:39:26 +0300 Subject: [PATCH 20/22] 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() From e6328fdf87837f7cd1b31eea38f9b00c3c093850 Mon Sep 17 00:00:00 2001 From: henu Date: Thu, 1 Jun 2017 19:16:20 +0300 Subject: [PATCH 21/22] Add member count to member list --- members/static/css/members.css | 6 ++++++ members/templates/member_list.html | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/members/static/css/members.css b/members/static/css/members.css index 9cea9bd..fbe20db 100644 --- a/members/static/css/members.css +++ b/members/static/css/members.css @@ -264,3 +264,9 @@ input { .conflict-row>div { } + +.member_count { + margin-bottom: 0.5rem; + font-size: 1.2rem; + text-align: right; +} diff --git a/members/templates/member_list.html b/members/templates/member_list.html index 18bc6cb..1acced7 100644 --- a/members/templates/member_list.html +++ b/members/templates/member_list.html @@ -24,6 +24,10 @@
    {% endif %} +
    + Members in register: {{ member_count }} +
    + {{ table|safe }}
    From 1fd830b51e2a158800372f4c85e8e66a98a5ba72 Mon Sep 17 00:00:00 2001 From: henu Date: Thu, 1 Jun 2017 19:23:51 +0300 Subject: [PATCH 22/22] Add translations to member counter --- locale/en/LC_MESSAGES/django.mo | Bin 6721 -> 6721 bytes locale/en/LC_MESSAGES/django.po | 18 ++++++++++++------ locale/fi/LC_MESSAGES/django.mo | Bin 8267 -> 8331 bytes locale/fi/LC_MESSAGES/django.po | 16 ++++++++++------ members/templates/member_list.html | 2 +- 5 files changed, 23 insertions(+), 13 deletions(-) diff --git a/locale/en/LC_MESSAGES/django.mo b/locale/en/LC_MESSAGES/django.mo index 70490a7be82a778cce2eaf6357b7722cd9dfad50..dbbaadb2b180f9ae72ab39cb2079d33a6dbf619f 100644 GIT binary patch delta 17 ZcmX?Ta?oVMJV6#qD\n" "Language-Team: LANGUAGE \n" @@ -195,7 +195,7 @@ msgstr "Cash" msgid "Bank transfer" msgstr "Bank transfer" -#: members/models.py:98 +#: members/models.py:102 msgid "Created" msgstr "Created" @@ -328,7 +328,13 @@ msgid "" " Please visit duplicate resolver." msgstr "" -#: members/templates/member_list.html:30 +#: members/templates/member_list.html:28 +#, fuzzy +#| msgid "Member register" +msgid "Members in register:" +msgstr "Member register" + +#: members/templates/member_list.html:34 msgid "Download CSV" msgstr "Download CSV" @@ -394,12 +400,12 @@ msgid "Language" msgstr "Language" #: members/templates/settings.html:20 sikweb/settings-sample.py:179 -#: sikweb/settings.py:178 +#: sikweb/settings.py:177 msgid "Finnish" msgstr "Finnish" #: members/templates/settings.html:21 sikweb/settings-sample.py:178 -#: sikweb/settings.py:177 +#: sikweb/settings.py:176 msgid "English" msgstr "English" @@ -483,7 +489,7 @@ msgstr "Successfully imported multiple members" msgid "Failed to import members" msgstr "Failed to import members" -#: members/views.py:498 +#: members/views.py:504 #, 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 64ef0d5b461f94db2b278c9449e47a4421c62365..68deac7973a3ba646e30b8a243187a0fc52822cd 100644 GIT binary patch delta 2728 zcmY+_e@xVM9LMnw-C+j-BAl88dTNLS6qp*E{1D7Kf2El8LlFZx@j9U3FcY#{{KZ0> zixF=9m~Ko)ElH`h*i4vz#SCH&euy*hGN$2G zoR5>%w1lbWi;$+mri2szjE@7)m@1r!wYJ`Z$%ZE1Vp4RZCJ!~RLR5o3RL5Ivy$Ut+oyZtW zJt|WzsOQ>I6A7axdIS^b-@L;~EDoX?9))Unx`y}SP1Jh{jEKZIeuaFUbR_!(-%U+q6QpFX8m=cgA1wHiS%jS!g+YYJ~)bQ>gRC@UO^4WNiX+d z9L~W^oQuV%4z{5NSdGer-`3kOh5Er+bYB}b|z7&j-@wEC<`;O96i_&=0r2-LT$f()C|Wk2d~@vZqlRs`KS&yVRVK_ zGE6nTicP2i|AHFO@3<2GMlC@BX}k-|Fc`!7S8&q6g_C>$@8cZus8o%iUib>N))CZz zuAv%EA`SQBT-1Pzt-DbJdmYuzo7Ur~_C7-9WIjid6ECU3%8>N-if*NZw5F~2j8L^x?<}; zqdvx)w(g)er9J^QfK=4B%0SI{F)|~QV=X~tU^A-S8dN_))O&51qW#~_iDq^fm7=4l zjGVv>96`M>f$AuNKKu#Q!9#pNTJuut8q|9}RL6Tz83>`4vIj}B>BF!(9I`jgpk_8^ z>laWRkE2HZ9cqRVRL8%e-v1ZXQ6gWc?x&%y=b|#^MJ;VPDx+Jm1nbhtzZyQq1!Z6m zwOu|&&FB(pCf_4{n7?ol&gP;9T8MhT0@d&a>kiaUY!KD%e$;cFsQ0>28Sc#>|GF{A z1*P^hs-qFq^-HLRen7o=12v=D_WnPpk1dveAWCsIF2i-GiM)ayd=Ho6S=7gO9rH0U z%v+jKDL#O;sE!Yz2Golh>ATp4r!bmQ&(w^|Q3I$%ZL58#{oREzsO6|5wB9wuW5n}> zpHL~N;-Ixry464y@d8m#sI(Evz;0D2TYFBqQhP>S&ak@OK(r9q#LI-rT0&DQR)w;I zU<*adE{>T*kl08(L3jveWu7FSA_Bx7LJPW+c%0Zy=s%Rcs#;>5emNRBnO>AHFY(B< zi^{3;=OBvgbuGj`dwvHWCk4dAgz~?N&_b%T5=)32;%TCkQ2%BV=xfo>4nL!2GojK! zXc3+v__;LC5-Jr0dp7#*FGPN!qF)1;H9FX$J$I*sIMISP6V(JCoOy|OkpBNy3T-VH zn}|n=EkqfymzZ9(S)ZGBVH@Xp#Cl>m!8SAH!~r6n(5I@>K&*_Oku5&q=$=r0wGNc% z&k`CCJtK(nXS-w+73`CGli1IeQfXOVYV{&3J8=Zar{ Su0P~&4xH=v4u{ew9RC4l%<6yu delta 2665 zcmYk-e@s<{RNuHCF$%$%FG)v`7#Yi=}KZMm7X=BiP%-k*D)+j_?Lyq@RWbDkgH^PIyo zb)T;Ere-I;V3Z*um$;Z5Q`z~!!8iCTFzGNv`4 zGS!T_ZXIeN>ro5chG~p%Pf$t1VN}QaUHe7k&tB!Aj^A|cFsh@In1g3f_gzFy^fHF< zALP$Mq*ML3qki9j1=xq4PCQ2?8(%`r_y`u``^e($JZc5MpdT-zp5YbL_3_L`=Tn{8 zm_a)qm5Cs#pBmIcLZ}J1r1SiBqMZ|&*oE|IgE$BGx(ml}A?i&08 z*L{fU=Oa{#zd$YIH!Q?7Mh{>GY5^@C6}@&_Q7at55)8WwzH`6-g&H7-G(}d3EZU0j zDXc@XFrH#)FwRc z+NV*eKZ}~c6zX;Q3AN%&s1^P0^f5bSU@ofPMW}@=LETr2%ET&6(fi* zhkH;r96}8=fsOb!YJh3fGxxKT4 zQ3Jn>n)w)Ng%hZOKR|Wx32LBk-0wfS^M9Z+mc-81qfJ9)G!Lt>4ApOMF8SAMvYiuJ z!6<442arDO7|zG9P!s$Ubz?jisl!y~Jk%$(1hrR|qOPk)-M1E%*;aRcGb*D4dE{RM z4Y?miQ5_vb-S`G-B}d)wlc-I03YFRmSb={2foLHsFo2y{j2>#!jbk}}hFZ`SydDcY zdeKZns2R1QX4--Kupc#nY1E420?`R%pf*t@>b-8nIMl1Uf{2waDz_57L?dwvp>iY9 zN_cm1c$A2hIx2<4oy4}-Nz|*U(i|o7anS^BCwd6&k99;Tp^R#O@QJWKVkZ$KHWAfC z84)5V^>#DIL83}c$_7HIiv?*2YBbtc2)u1Rd{^tvPncgC5JBUXJmF2_(L>8e3 zK)xdn2&`5IigsKP@i=i0F+gZLuO;dUp6!1{4@(a)R+hTTVqB)rn97>SG5U_Est3wD zYWJ)0ztTyaog8^LR-qnvJMj>41F@CpC%TCT36+K@R)e>>x_0WyNIg2fbx e5BH>OoDrT%Kc0|SwJaD6k7fCN;dgS+Cj1Ks8r9AK diff --git a/locale/fi/LC_MESSAGES/django.po b/locale/fi/LC_MESSAGES/django.po index c148945..cba2a2d 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-06-01 18:11+0300\n" +"POT-Creation-Date: 2017-06-01 19:20+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -196,7 +196,7 @@ msgstr "Käteinen" msgid "Bank transfer" msgstr "Tilisiirto" -#: members/models.py:98 +#: members/models.py:102 msgid "Created" msgstr "Lisätty" @@ -336,7 +336,11 @@ msgstr "" " Käytä ongelman ratkaisuun duplikaattityökalua." -#: members/templates/member_list.html:30 +#: members/templates/member_list.html:28 +msgid "Members in register:" +msgstr "Jäseniä:" + +#: members/templates/member_list.html:34 msgid "Download CSV" msgstr "Lataa CSV" @@ -402,12 +406,12 @@ msgid "Language" msgstr "Kieli" #: members/templates/settings.html:20 sikweb/settings-sample.py:179 -#: sikweb/settings.py:178 +#: sikweb/settings.py:177 msgid "Finnish" msgstr "suomi" #: members/templates/settings.html:21 sikweb/settings-sample.py:178 -#: sikweb/settings.py:177 +#: sikweb/settings.py:176 msgid "English" msgstr "englanti" @@ -491,7 +495,7 @@ msgstr "Onnistuneesti tuotu useita jäseniä" msgid "Failed to import members" msgstr "Jäsenten tuonti epäonnistui" -#: members/views.py:498 +#: members/views.py:504 msgid "Successfully resolved all member conflicts." msgstr "Kaikki jäsenkonfliktit ratkaistu onnistuneesti." diff --git a/members/templates/member_list.html b/members/templates/member_list.html index 1acced7..7aa6d71 100644 --- a/members/templates/member_list.html +++ b/members/templates/member_list.html @@ -25,7 +25,7 @@ {% endif %}
    - Members in register: {{ member_count }} + {% trans "Members in register:" %} {{ member_count }}
    {{ table|safe }}