From b1b21c84c73d296f5a16cabcf6d795f7dad10165 Mon Sep 17 00:00:00 2001 From: kououken Date: Fri, 1 Mar 2019 11:38:12 -0800 Subject: [PATCH 1/7] Added 'approved' field to sections. Added env to gitignore. --- .gitignore | 1 + back/.env | 8 ++++---- .../migrations/0009_section_approved.py | 18 ++++++++++++++++++ back/backend/models.py | 1 + back/backend/templates/backend/email.html | 2 +- back/backend/templates/backend/email.txt | 2 +- back/backend/views.py | 4 ++-- back/db.sqlite3 | Bin 197632 -> 197632 bytes 8 files changed, 28 insertions(+), 8 deletions(-) create mode 100644 back/backend/migrations/0009_section_approved.py diff --git a/.gitignore b/.gitignore index d25063b..40497c7 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ # Edit at https://www.gitignore.io/?templates=linux,macos,python,django,windows,pycharm,intellij,visualstudio ### Django ### +*.env *.log *.pot *.pyc diff --git a/back/.env b/back/.env index b47f7a4..c75a73f 100644 --- a/back/.env +++ b/back/.env @@ -1,4 +1,4 @@ -EMAIL_HOST_USER=accountemail@yourmail.com -EMAIL_HOST_PASSWORD=accountpasswordhere -SUBMIT_REPORT_DESTINATION_EMAIL=to-address@yourmail.com -SUBMIT_REPORT_FROM_EMAIL=from-address@yourmail.com +EMAIL_HOST_USER=reimbursinator@gmail.com +EMAIL_HOST_PASSWORD=Frank12345 +SUBMIT_REPORT_DESTINATION_EMAIL=kououken@gmail.com +SUBMIT_REPORT_FROM_EMAIL=admin@reimbursinator.com diff --git a/back/backend/migrations/0009_section_approved.py b/back/backend/migrations/0009_section_approved.py new file mode 100644 index 0000000..2621ee0 --- /dev/null +++ b/back/backend/migrations/0009_section_approved.py @@ -0,0 +1,18 @@ +# Generated by Django 2.1.7 on 2019-03-01 19:22 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('backend', '0008_auto_20190214_1421'), + ] + + operations = [ + migrations.AddField( + model_name='section', + name='approved', + field=models.BooleanField(default=False), + ), + ] diff --git a/back/backend/models.py b/back/backend/models.py index 69db8ee..cc12b3a 100644 --- a/back/backend/models.py +++ b/back/backend/models.py @@ -33,6 +33,7 @@ class Section(models.Model): title = models.CharField(max_length=256) html_description = models.TextField() number = models.IntegerField() + approved = models.BooleanField(default=False) def __str__(self): """ diff --git a/back/backend/templates/backend/email.html b/back/backend/templates/backend/email.html index b985302..7137071 100644 --- a/back/backend/templates/backend/email.html +++ b/back/backend/templates/backend/email.html @@ -6,7 +6,7 @@

Title: {{ title }}

{% for section in sections %} {% if section.completed %} -

{{section.title}}

+

{{section.title}} (SID: {{section.id}})

{% for field in section.fields %} diff --git a/back/backend/templates/backend/email.txt b/back/backend/templates/backend/email.txt index 43f9df7..2411e0e 100644 --- a/back/backend/templates/backend/email.txt +++ b/back/backend/templates/backend/email.txt @@ -5,7 +5,7 @@ Title: {{title}} {% for section in sections %} - {{section.title}} + {{section.title}}(SID: {{section.id}}) {% for field in section.fields %} {{field.label}}: {{field.value|default:"empty"}} {% endfor %} diff --git a/back/backend/views.py b/back/backend/views.py index 1d55aec..a99d999 100644 --- a/back/backend/views.py +++ b/back/backend/views.py @@ -51,7 +51,7 @@ def get_sections(r_id): # append the fields for corresponding section data.update(get_fields(i.id)) # process rules from the policy file if the section is completed - if i.completed: + if i.completed and not i.approved: rules = pol.sections[index].rules for rule in rules: try: @@ -338,7 +338,7 @@ def section(request, report_pk, section_pk): } data.update(get_fields(s.id)) # process rules from the policy file if the section is completed - if s.completed: + if s.completed and not s.approved: rules = pol.sections[s.number].rules for rule in rules: try: diff --git a/back/db.sqlite3 b/back/db.sqlite3 index e1d41596d7922b7a3494ee4a62a36f8929456c47..d5c6c8b12e49f18828982266bd3b34288ffb3c7d 100644 GIT binary patch delta 3313 zcmeH}i*FRi8Nm0O?;g8;Kd=pco*(#iXM6ALJHNoj*oG>p?V6AVBg1h%ukqn~`R)v{ zNkt4~h0>y69qOQz)PNd7DUi|wyAn!yv_)!BBupAL2-1X9EhS1D+!88jS&ri_vUZHM^{kzoFjd3s=}qVLSd1kRbCQFU z7p7tdAM`n0jwN|$C4CO(kmT*R2PJ37<@4I@K6gL&>&$d)XoUaJ6;cwhY+*1U`F(+qDcluHVO8XItf6F4b%kg)nCly=YZ_{* zE3NglwKg%5Reh(o*F@gr@KgK;euRI*Kj822D*gs9;W<2mC-Epw;sKn%7jYLpha>34 z&A17Ba1B0*ZMYn5ScRpSkC~W?ai}GqlYf%CeD zD%w@Fsc2QPQbmi36)KulG^tpwVws9Y1w1yWs8>;^qE>}XfgY{89Z}XOT^&}du&6Mr z5EW>#N`VF|RaB@jsW7T2SAbZiqEtnRieeQ@6%Z^^QK&)5@>Jxi$Wf84 zMS)<}&-QCHI>1la`9xw4+(m;H0f;GvxtD-fIDCMg;Kz6e|A_ChbDO~{;iQ8_k*0%t zakVnjBt#`2mHMdEMWr?>HBpIC$(9U)Ny`iqyw4=(XU6a2Y}m{n)jBYipfT~qgDA2; zSs07l|4D)-MT@tYHSSe)NzBi0vu_b2t4PDq zkn6;N)9@gYedb*V8>Te*zRkma=a6&A;;!|CYF*NpYphP(HaHp_?spFL1qagEtOEwC z&1M;P){EAlZ(G1+^NhJ%Tl@PQ(ul?Cbp~q&BJWI@w1x!I#o-6|Bm5-}uozm60=_^_ zkSk;_@sbZoSH#R4N!a^~xKy+CQRLdpmKxET&c^p-%#B+bs>RA0OHG|sOv}X<2yc8l zGg5N?`hjBgJnt!s53vxxhkqk02oE>mIP^jpcb7ZNbwD;1*Fg?#UI#JQEtk@Xvrq>} zyCz`?kxS_NXTZj~hbJKoZE`W4SqCL4*f04VfzU`mviCbek|-~w<3EI=L<~r5&>J0m zQZAxR1%!D%J$!>HSILF+=3OwPkS{Bj$p!Q!p5!EwFDP5(d^#ROiWZTeGayOc;Gi!Q zwaPxxKwqDRMrL->NYaU%M{m6h7S^4RARRZ!x%3=Q+F2h2l8LM39BTMGG$ww*5UG%} zY2ytrWD~b*RJOU2+YR>*eC9UeNG{ zIJSHE2JXdH@;=%B__i_+EBpU;vh5UvN84Fm;ur`?0edLm^2ftDj&P|Qmx_G~*l*X; z=kysyBgjB&2cZzkC~SmuIy?wHG;s(r>2C+&y3XPE2Yg%Uk6kbefyS>KtKhCs@C`s)I*qpjPz{+TB{J!3uA&b2LKXWJTgkEPSy^USxm^o$KzJJzmr zuWxgXc6z$4J)Vwd*L$9RwljQdCP+{102{r#8?vgr;_~@)^LRWeSxieVb9fPV;z~qv zIg(s@hAeL^)N)z1EptU&6vg_5OMtpOsej(6TDC2g2CGuG>qM)08ovvlFEU~gm%wf3 z@HB2956C5!xOz!0{1r~YZfN5E#l698X9fI4R;=qLT2irIw$ko74*FTlw@dJ-mN~DQ?fq_e2plZ=y(u}yhbr0%0_ziJusxsnedIwr3RZ^ zPG=87X|l%8oUGp^dF;vu6w76F_8lt>l6NWD*S#3G&)YhD%>mVM8nAP&MJE7E%+7)boMPsoz@(K&*n;CJ;zOQ_3%1N z2}Ug|fE-U(xM343rtuo3n0CDl0_aVBt(OSp9J~hQ#Lj9*Hhh)hu3SNRk+c(DW_N_C3jlFO?B-H9ABSn= z&&-u3Sq19AYor_=!c~}rK~@6NxXauT&WAp>j8+uoc6xXgisOZOAJXT`ZPa`TvUy?5 z<=1{wZl(MF0*#9VM}NOdx!yAGaCrxOvAOcf=w1tgve&FEw9tcV)oFpWvJ(WK+-wF?U7 z`OwPvFQLV}Etk$5hs*^JNfiRjV_n|OcJGL%PYT2s9rsEEhE-?49=MAhm aSlhyyZ;pP(`Bu)J=UeIY_g*2Pfqw)1+i1`L delta 2358 zcma);dvFuS8Nm13J=>Bj+nAcz_2YDjc^EqaJuG7kO^l1dB9;x7uzfa(UY0HSAsJc3 zL1_bLLnqUQi9MHLnZ#*_PD{uPOemt(G&Ikq|1^_KYsxfC+kvFCkU$8Kl0K4>ekTKc zW!lcp_x<+vcK7@C+uiSO_v6Ohj~l1T3X_D8*H8|l_)(spzSj=PANXF$VN2Lt%DTW$ zvns#DTsl784CQ)nY`CxVF1AL;t+`OFzG0BE?-7gHS2M56)T~@njZkD_H8kK44uzt9 z-my?H5s5{~PZt)j<#4+-9vY3s6E$jkE{D?8gYH+_v8nYaMXA(ODcwb&wiogU0dp@H5led@7h#gYfGCkck0_KuhcL*H zgJ3db;}SoUAq#Os2Ar5&k%1vD$UqV2WB|k&S<_@rCZ8kT>?Su6Z*-HtAztbxpAoW) z%yyGc@$rRj@>j&+F7g+|!7lP=#M7PRPYAV>e1dqQliWb;?IeFhJhqj5j2QQj>xfYg zxrT^%$W=tZLq0@=*+_ z`)2kr2O)LhW_)Q8+fi4GZKxNEF4Usfin>I60QEv~6KbRAM4c_R?4N=k39Sa-CjQbC zcm;8y$(fd>VI5?PlVvRik{UR40Q@3uUdAezwZcyQTX~Cl|IZ?`;x8(yRac|;H5iCa z=TP$am0v<>K}&308rcyHOMQ_(>6U{eUgpP6ReW`hPBW$RAT9rc;dI9HtLqC((D1LZeTd^@OI0^=59_7m36s@O)RXM5=p`X=2+qx6H6Ro6<@_Lq%n z^5w4;Tk0i?rNM4#usBxOZL8~6Sr>_H9jFhTE=?_a<;;Plx0eIu|E+LKH&pQZyTMS^ zK(BvsaR=j}P;@LDOGvS$N+ZAa4oG}(JH$)2C|}7Z@*w6Y-J@9T?)#>Tuhyt42i|HT}b z@HPC5PhW%vzTy-VYLAcda~EMrejvCb9uGx>JGB(h!gt?<@`6CXA06^)HnsFn!4ICo zbBY`HBDY?GGJPN!8P!t6e!k^xC^iIwk;G0dN$l8v2`cmbcg$ncdd+%Cu751yPlU8S zcW1_A`?WE2b{hyfDHpR3`!SnhP4p~%j=JgH@GE!@da?O!@(hXNDQRQ>5-o<&;?qBb zdf3FgY#-5<3rR)L4!M!p#@cH1capZEPmYbplv)sIdW@ru1@+cVdqe*0A0 zV!Qc2ua$O>1jYz^jZLs7#!`h(Me>DspIlCYh05-ZueVY@(@mJ|%-RdknI4dRk5Blk^&` zMziIV1|Q0J%A{K}3DSh|!FiVpGTD#f=MIjc`Z^kn(WHOgH%Y1WWqcE)JudJ3!qCL4 z07h+f6wVVkPkm5>qfTT^mIVz&9r&(Wm}pW;IesI)DJZpyNt>bmA9LPG$2il^L3ou5 zYw1~7n(;8JYQm^2xfRSRpRzc!aBOW-DsQc@YW69bqs#K4{qLuZGqfG7Jy?GbMf>By fv_m2&gDAr&F_cl11j=%hZFpDu(oZ}~6a9Y&0LOD* From c94bede4befbbecfecc406decd9175e1cfb96576 Mon Sep 17 00:00:00 2001 From: kououken Date: Fri, 1 Mar 2019 12:26:43 -0800 Subject: [PATCH 2/7] Added request tracker support as a 'reference_number' field in the report model. --- .../0009_report_reference_number.py | 18 +++++++++++++++++ back/backend/models.py | 1 + back/backend/templates/backend/email.html | 1 + back/backend/templates/backend/email.txt | 1 + back/backend/views.py | 19 +++++++++++++++--- back/db.sqlite3 | Bin 197632 -> 197632 bytes 6 files changed, 37 insertions(+), 3 deletions(-) create mode 100644 back/backend/migrations/0009_report_reference_number.py diff --git a/back/backend/migrations/0009_report_reference_number.py b/back/backend/migrations/0009_report_reference_number.py new file mode 100644 index 0000000..c2d275a --- /dev/null +++ b/back/backend/migrations/0009_report_reference_number.py @@ -0,0 +1,18 @@ +# Generated by Django 2.1.7 on 2019-03-01 20:17 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('backend', '0008_auto_20190214_1421'), + ] + + operations = [ + migrations.AddField( + model_name='report', + name='reference_number', + field=models.CharField(default='', max_length=32), + ), + ] diff --git a/back/backend/models.py b/back/backend/models.py index 69db8ee..952a553 100644 --- a/back/backend/models.py +++ b/back/backend/models.py @@ -13,6 +13,7 @@ class Report(models.Model): date_created = models.DateTimeField('date created', default=datetime.date.today) date_submitted = models.DateTimeField('date submitted', default=datetime.date.today) submitted = models.BooleanField(default=False) + reference_number = models.CharField(max_length=32, default='') def __str__(self): """ diff --git a/back/backend/templates/backend/email.html b/back/backend/templates/backend/email.html index b985302..44f9358 100644 --- a/back/backend/templates/backend/email.html +++ b/back/backend/templates/backend/email.html @@ -4,6 +4,7 @@

Title: {{ title }}

+

Reference #: {{ reference_number }}

{% for section in sections %} {% if section.completed %}

{{section.title}}

diff --git a/back/backend/templates/backend/email.txt b/back/backend/templates/backend/email.txt index 43f9df7..9f90da2 100644 --- a/back/backend/templates/backend/email.txt +++ b/back/backend/templates/backend/email.txt @@ -4,6 +4,7 @@ *** Title: {{title}} +Reference #: {{reference_number}} {% for section in sections %} {{section.title}} {% for field in section.fields %} diff --git a/back/backend/views.py b/back/backend/views.py index 1d55aec..dc5a866 100644 --- a/back/backend/views.py +++ b/back/backend/views.py @@ -23,6 +23,7 @@ def get_report(report_pk): "date_created": i.date_created, "submitted": i.submitted, "date_submitted": i.date_submitted, + "reference_number": i.reference_number, } # append the sections for each report data.update(get_sections(i.id)) @@ -120,9 +121,20 @@ def report(request): "title": "Report Title Here" } """ - # Create the report - report = Report.objects.create(user_id=request.user, title=request.data['title'], - date_created=datetime.date.today()) + # Create the report, with reference number if available + if 'reference_number' in request.data: + report = Report.objects.create( + user_id=request.user, + title=request.data['title'], + date_created=datetime.date.today(), + reference_number=request.data['reference_number'] + ) + else: + report = Report.objects.create( + user_id=request.user, + title=request.data['title'], + date_created=datetime.date.today() + ) report.save() # Create the sections @@ -161,6 +173,7 @@ def reports(request): "date_created": i.date_created, "submitted": i.submitted, "date_submitted": i.date_submitted, + "reference_number": i.reference_number, } # append the sections for each report report_set["reports"].append(data.copy()) diff --git a/back/db.sqlite3 b/back/db.sqlite3 index e1d41596d7922b7a3494ee4a62a36f8929456c47..458fa7cd351163fc89fc149c64d3a57d404d7294 100644 GIT binary patch delta 671 zcmZqZ;A!aKnIJ7#!@$6B5QtX*aRLypov35XQ^TP9jGGn66JXx3G24TgDXMz&R^}iU zX)dO7%+Hx?nf;klnOT`vGOb{G%6yqwmDz^bX0xF{BGcq%u0%FvIdNuZj_DI!8Koz) za+`@T3o0;cawH`tXQ$?+#22L&`(3r8&ezNOSQ#P=A_38DojAE06rb@#f#=Vlfa7M9H%OMdR>W!%lc#GuQ-pv#=ZcxSR9hx~Tk494}0T+Pfi?Bbf5 zjIEB7Z%$QY)C3zgS#Vm-WUlFole?xhs28QCr52^;C8x&cmF6a;7AYx|B^D)TBo=8H z8)+)|`G+X@h5GntPEX2aT*Se|_>6(6it*WILylXF%#DJzlkKKXBy5Qqah7cVpUucB z!^g_BpMm)xa}%=@Gc(iv&4LV6{wLrYx)V_gG7 z1tSA1LklYdQ#}I{a}x`*cIIxz?abXwEP{;j+d1Yi1v4^gPmh_)q|O-wOl;aftiHWx IE>lSw07j|I-T(jq delta 810 zcmZuvOK4L;6rDRawK0jrXxnI0YZ`wIHA-t!KPjTtVpGMUF8t!_OW&l8tx0`(q7;Qb zKUh$(@u?SDi}<7MLaK%me~2QuRM15Q1yN9O=La`#bchID2y+(aa?a(<%<1iO_4c{? zeV!i1*b|8n2~}b=vv`@ShlM^l3nX*n`0dUn{R*Q2z+_TO* zE4`(l9yB_XZlUi_q|=F1vesMT!wnW2C+Fno%O;RQrkgH>(!drV(dp?7-~ zm}?VBO&pG?)~~x0*5wNoXnN}DO9C>EW4j`S-e3?;r0A1?3aBF33nf$@ha>bT4o9;N z`ei3uKaATpIa-@3a~~9|?1m>7%0MmH%8&b+a^f5e0F>Xk4v*)_AWkS`_z?SX9e>A% z`8Hkw6EFmmlX=%#a~XvOp>B4Q8aITl7TB-9T^spUjTJk*LuMGSxfRfPU2?QB~A#XSgC$}4FtV{fB zNm{fSvI%+9|7OAbZ@MPStm>a(x~ah&x+cI&A2g_^SUX%Dwsk?7%ZAAC2_D0Bh*?kN o4}J@Kn+IBR_Dg&lz%JS|#1~DKnb;oru3GNQ5I5p~0MV)UzW@LL From 4dee8259730899cc241202c9ceb7684e0b2cddbe Mon Sep 17 00:00:00 2001 From: kououken Date: Fri, 1 Mar 2019 12:53:57 -0800 Subject: [PATCH 3/7] Updated frontend to send reference number when creating report. --- .gitignore | 1 + back/.env | 6 +++--- back/backend/views.py | 23 ++++++++--------------- back/db.sqlite3 | Bin 197632 -> 197632 bytes front/static/js/viewHistory.js | 2 +- front/static/new_report.html | 4 ++++ 6 files changed, 17 insertions(+), 19 deletions(-) diff --git a/.gitignore b/.gitignore index d25063b..40497c7 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ # Edit at https://www.gitignore.io/?templates=linux,macos,python,django,windows,pycharm,intellij,visualstudio ### Django ### +*.env *.log *.pot *.pyc diff --git a/back/.env b/back/.env index b47f7a4..be096b6 100644 --- a/back/.env +++ b/back/.env @@ -1,4 +1,4 @@ -EMAIL_HOST_USER=accountemail@yourmail.com -EMAIL_HOST_PASSWORD=accountpasswordhere -SUBMIT_REPORT_DESTINATION_EMAIL=to-address@yourmail.com +EMAIL_HOST_USER=reimbursinator@gmail.com +EMAIL_HOST_PASSWORD=Frank12345 +SUBMIT_REPORT_DESTINATION_EMAIL=kououken@gmail.com SUBMIT_REPORT_FROM_EMAIL=from-address@yourmail.com diff --git a/back/backend/views.py b/back/backend/views.py index dc5a866..347ceaa 100644 --- a/back/backend/views.py +++ b/back/backend/views.py @@ -121,20 +121,13 @@ def report(request): "title": "Report Title Here" } """ - # Create the report, with reference number if available - if 'reference_number' in request.data: - report = Report.objects.create( - user_id=request.user, - title=request.data['title'], - date_created=datetime.date.today(), - reference_number=request.data['reference_number'] - ) - else: - report = Report.objects.create( - user_id=request.user, - title=request.data['title'], - date_created=datetime.date.today() - ) + # Create the report + report = Report.objects.create( + user_id=request.user, + title=request.data['title'], + date_created=datetime.date.today(), + reference_number=request.data['reference'] + ) report.save() # Create the sections @@ -399,7 +392,7 @@ def send_report_to_admin(request, report_pk): msg_html = render_to_string('backend/email.html', params) msg_plain = render_to_string('backend/email.txt', params) message = EmailMultiAlternatives( - "Reimbursinator - {}".format(params['title']), + "[RT - Request Tracker #{}] {}".format(params['reference_number'], params['title']), msg_plain, from_email, [to_email], diff --git a/back/db.sqlite3 b/back/db.sqlite3 index 458fa7cd351163fc89fc149c64d3a57d404d7294..2ab8b3bdf8a093d809e30b5ce96e0b5073a2cf91 100644 GIT binary patch delta 2625 zcmcJRe{7S-8OQIQbBLY9i4BAX$Ped-Ndkn}G5JXXP68?IU<9^7&}bdUc{5xR+q`x* z(oSnkvQwn3C~2x4e}Gz~Rw*qrcy z*TE|AJ*evqZ zm?OqA*fjE0?4}h+dVYVxUiOYSx(6|+@OaF8{a3ZVNLcsl1CB!)3b87eyS~EZsc^X+ zuDS-73%@6r$X(^xUS0FREw38+{)F# z^VF^mo+1v(GS%#*dOo8Lyv}pPep#w^c2O(@9WZZ1f8B!qxDp2Nre1;8mdm!e1~$< z5`kcBK%g#^y@86X34b6E?hnOQVW#e=d%vckEc@!s(dq1$E{O z6=g2BH}=_ib>kJ-tf1yXv}ByW2%u3H5wr2+J~AZeTsduKs5)b22L-0$g{<>GGBRH z$bi7y z_>@VvI(UML&2u`UvRk@T=V_|3&l#}_V%-^CP?M}wAMc?$^DU!~TDeUPo}zO5Yy{KL z9n|`K#=CA=p?)z$Tg|gZqei(^E&h?po|+AYz8MY%G~Y@HO_g$sy8Sdc?6ZO6THpj0 zcQRDu#y4N3qBZx;*qBQpbjxy;^$9uG%{;VN4DsRA$*6O}Z97cXCy3bOCC*J#{5@Vy z8C~&b4aKRBuYsQ3yTgw@NvhK0&lrui427YCZ})QIlUI0(S*3i$Ph||m_Ztr%QpC6? zzRxf%E24FHU;ImkrFG;eJY4JJtu%QJo2zyW4kht(F(|$+wun^vgeK?=Jx`hZLw=DD z@guy9ufjp{0-7yf546kvsCN0~9yO}d!8MOdSGC-&#{NJqb5gkqWNUIgS(b!rt87tz zor*J-b*o%9t9X?1Gar(zLg`gEg0vy+zG}JUE_L!Sm0DLs%O!UzE`)PMgQ{r1Y*K@B z)VTI@l2sua)xjtgLoS!3*XJ&hJJiQ6$}=Yg>kIFMw3VHpMt=s6%UcH?YnD7NKmtu( zS*@-gA&+f7;va}$4QqY=U~hxmuEwrVDW6w&|H9W@G%fP$tCENCIUK^T3h`iCZI4gu u!E~zLG##D?j;yD$O@P(>r7*XMG!iR3SL3qy% z*9oWHaE&nJhQA1JxZzL2u_pL~aHI)-C%oJUzY*e%@GIe9BU~lyZ-ie6`!>PPgxxN< zLTGcr1fj(Rm;FS)3w|PaTyTlta>6*l?t~u+k2>KZ;SneNK&W=Y_k?l>Tp%oRz!;&> z0pAhw9q=t-t^>{!vK{aZLFa(4PaV>Wcqw6cX+ogVWipv+1wdtpD+6-eHjqtXNYo4* z6qeERrE&vlo4k?qBKa}WMY5f=EN>ufme-S>Ew3YOlye>-gzDY%Y*vb@c|2q$Rzo9;JqGu&2PU-LKle7csf>HH>41LK{`dqr>>DwmV6F zeHarZ6l^L?p;jB%efxm!sj)3yE>%ZXA+g4$4XalC%yB9I~B)&CRLOxw(8|J8~xZ#!`q%wC}+~zM>H?DO-{2wciIK+ z&Av9BeI%9U3<1ytgfwz5FnJX}T2KSf1!hip3GX!vIP(N6Zk9Qf|=0-EGb)%#yUFmXm zW%}U^goDA>_9sIfN~k1S%O^fZh3|L~)?yf@O5xuzkFC1Q%&n4ZL*(t=g4^UpBMC9KUb-_HeMhy}5$=1dj7hM$kg9 z@dMs}0hjZ|qnNAR?&aq$U~#rTuqzx6wgx)2#UCE!5?Vp=+s)%uEQ6xFxz*_Jv~~Zc{gYI+B!Dk*we7cHC$xOC_c%aZVD(m232;=(dYZYzn8guYQ|A=yFl TG)ai0jiiHQOS1PB*7d|c2{S~X diff --git a/front/static/js/viewHistory.js b/front/static/js/viewHistory.js index 99d182e..97b4884 100644 --- a/front/static/js/viewHistory.js +++ b/front/static/js/viewHistory.js @@ -560,7 +560,7 @@ if (newReportForm) { newReportForm.addEventListener("submit", function(event) { event.preventDefault(); const url = getEndpointDomain() + "api/v1/report"; - const payload = JSON.stringify({ "title": event.target.elements.title.value }); + const payload = JSON.stringify({ "title": event.target.elements.title.value, "reference": event.target.elements.reference.value }); console.log("Payload:\n" + payload); const type = reportType.NEW; makeAjaxRequest("POST", url, createReportForm, type, payload); diff --git a/front/static/new_report.html b/front/static/new_report.html index 7caf52b..cda82ca 100644 --- a/front/static/new_report.html +++ b/front/static/new_report.html @@ -51,6 +51,10 @@ +
+ + +
From 4c5c3fed6325ab2f9802482759d8f9b1ff1cbc58 Mon Sep 17 00:00:00 2001 From: kououken Date: Fri, 1 Mar 2019 13:11:41 -0800 Subject: [PATCH 4/7] Subject line will omit RT formatting if no number is provided. --- back/backend/views.py | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/back/backend/views.py b/back/backend/views.py index 347ceaa..2913f82 100644 --- a/back/backend/views.py +++ b/back/backend/views.py @@ -391,13 +391,23 @@ def send_report_to_admin(request, report_pk): cc = request.user.email msg_html = render_to_string('backend/email.html', params) msg_plain = render_to_string('backend/email.txt', params) - message = EmailMultiAlternatives( - "[RT - Request Tracker #{}] {}".format(params['reference_number'], params['title']), - msg_plain, - from_email, - [to_email], - cc=[request.user.email], - ) + message = None + if params['reference_number'] == '': + message = EmailMultiAlternatives( + "{}".format(params['title']), + msg_plain, + from_email, + [to_email], + cc=[request.user.email], + ) + else: + message = EmailMultiAlternatives( + "[RT - Request Tracker #{}] {}".format(params['reference_number'], params['title']), + msg_plain, + from_email, + [to_email], + cc=[request.user.email], + ) message.attach_alternative(msg_html, "text/html") for f in get_files(report_pk): message.attach_file(f) From d0fa8dbea8576587f03903a44e4d7f48d5929064 Mon Sep 17 00:00:00 2001 From: kououken Date: Fri, 1 Mar 2019 14:11:05 -0800 Subject: [PATCH 5/7] Added error-checking when accessing policy file to catch changes. --- back/.env | 4 --- back/backend/views.py | 58 +++++++++++++++++++++++------------------- back/db.sqlite3 | Bin 197632 -> 197632 bytes 3 files changed, 32 insertions(+), 30 deletions(-) delete mode 100644 back/.env diff --git a/back/.env b/back/.env deleted file mode 100644 index b47f7a4..0000000 --- a/back/.env +++ /dev/null @@ -1,4 +0,0 @@ -EMAIL_HOST_USER=accountemail@yourmail.com -EMAIL_HOST_PASSWORD=accountpasswordhere -SUBMIT_REPORT_DESTINATION_EMAIL=to-address@yourmail.com -SUBMIT_REPORT_FROM_EMAIL=from-address@yourmail.com diff --git a/back/backend/views.py b/back/backend/views.py index 1d55aec..3d62b6b 100644 --- a/back/backend/views.py +++ b/back/backend/views.py @@ -52,19 +52,22 @@ def get_sections(r_id): data.update(get_fields(i.id)) # process rules from the policy file if the section is completed if i.completed: - rules = pol.sections[index].rules - for rule in rules: - try: - named_fields = generate_named_fields_for_section(data['fields']) - result = rule['rule'](data, named_fields) - if not result is None: - info = { - "label": rule['title'], - "rule_break_text": result, - } - data['rule_violations'].append(info) - except Exception as e: - print('Rule "{}" encountered an error. {}'.format(rule['title'], e)) + try: + rules = pol.sections[index].rules + for rule in rules: + try: + named_fields = generate_named_fields_for_section(data['fields']) + result = rule['rule'](data, named_fields) + if not result is None: + info = { + "label": rule['title'], + "rule_break_text": result, + } + data['rule_violations'].append(info) + except Exception as e: + print('Rule "{}" encountered an error. {}'.format(rule['title'], e)) + except Exception as e: + print('Error accessing policy section {}. Policy file may have changed.'.format(index)) # append section to the array section_set["sections"].append(data.copy()) @@ -339,19 +342,22 @@ def section(request, report_pk, section_pk): data.update(get_fields(s.id)) # process rules from the policy file if the section is completed if s.completed: - rules = pol.sections[s.number].rules - for rule in rules: - try: - named_fields = generate_named_fields_for_section(data['fields']) - result = rule['rule'](data, named_fields) - if not result is None: - info = { - "label": rule['title'], - "rule_break_text": result, - } - data['rule_violations'].append(info) - except Exception as e: - print('Rule "{}" encountered an error. {}'.format(rule['title'], e)) + try: + rules = pol.sections[s.number].rules + for rule in rules: + try: + named_fields = generate_named_fields_for_section(data['fields']) + result = rule['rule'](data, named_fields) + if not result is None: + info = { + "label": rule['title'], + "rule_break_text": result, + } + data['rule_violations'].append(info) + except Exception as e: + print('Rule "{}" encountered an error. {}'.format(rule['title'], e)) + except Exception as e: + print('Error accessing policy section {}. Policy file may have been changed.'.format(s.number)) return JsonResponse(data) def section_complete(section_pk): diff --git a/back/db.sqlite3 b/back/db.sqlite3 index e1d41596d7922b7a3494ee4a62a36f8929456c47..96f3158f2c75f42a40a8a0769a1214b25d2ea375 100644 GIT binary patch delta 2422 zcmeH|Sxi({7=Z8j{{e@QMHaQnHUlCcgWh4-MPyLWTBbysZpJ!ZhD#j5nPFzAV%x~L zocLl2!Fc*WV==`V^+BBkn%1=P!Xhw88ck}`HYV0SG&R4(CK0cK9cZJ z$nep9G{ztyU^egs#^I=hf8qoD1@GYZcoS!F0!RB74Xg;&4je{jEb@s`Si_8lX$?~v zu4$OmFri^w!&m}8Vj&?Ceu-^Z29IGDdcaC%$pG2P%@?HoQf;4YIabgD<~;xfDHE-# zSMde9e5#{W38)sD&ys$Eyrc=A%8l-*aT{I9Y;{mYCRp<+@)Fu<9; zbOoF1gqoyrztg9xZvSpi0A!lWuD=JSl=0_JP-qV8ISGwqoRK(Kj$5dS)zxz!$623B zmS7V#GMf|1`Saj+eDhT_n>BYrR?_%09+lH9*6W14v}aC?x{9l5COcjarbXi&o_(r6 z;Am5Ps%{(2U{`lQ4c|1|0E@Anrn9UnsK^{s+5)Q25%9UZF+6mL_qdjZ@DV=5d;KY& zp21zg&8+VW;)pRHst;}o83%17&U`pM*l3XS`jG4NQIf$|c!PGXJ;5zp?+9*+q=Dd= zgkvGY*()elniohWtDab!J6eretCq-?s$$t%EL)6nWwk8xA3U*zem`%xurlHi;6tvZ zJ(@=^CX-|^`7NH4{}UQXsGJgs6>Z>pJ1yn9kme2VAVgmTjZ%_SM=*$XOvRg!N`53m zq>YqF52W)_yHp3)p&vekJgeEw*6rU& zWwz@OlqXL`+Q+46R#->Zu-gq#slVp*_yZQYn#~>tvwkx2R6~o|^*d0obkgO1*W+@k zj;HOStDt7qvmXkRC%wELTV3j2N91G+En=odFr`j9cdO2Jho>u`)%hB_ip^~TW19HG zrL`*Xcb4qTI7gNlX8ZxZ1Ln{wc3Xzb_?ZJPudbL@CRWo@)^`!|mrQ$oYMbiwsjUuY z7l+%~T}Q2~#|qVPQxTW{Q(5WqX<;I}vJ;H46Ok^2;oU^1GXP1KK;i21evAIxzxLNj zLd?TnLQ0D;LrRevB={Ca;3&KfGQ{Hmxkb(qO12T1UvFXQwDf`0fK7e2WmrZVSl%(qkubM+QMx&q)^C-j=(hV%=hpfbKi{fr~L?-BETF(e#USe2jZS|>szoP`q)W#Ga z{;r_}U4d@2(DkhI4aiRj&j)aUiPo}F7c4h~qw(hvU&prk zAvfX4zLqt#hRylGl&l>u&WkhAYHj5|GN+%<9P9m>?=v&+AK#~fb>4uyr>2r@TCVvw z6Y&q~Xc@cuCRmfFy-K&2SE;&Jadq$-k=gAatc=qtz)l-k&lJ?8MO<_RTpl-{>2kMu z7AkZt>-E7_5@x@BLsCa{XUSg}7b!9wzb!9@k_*lt{~l<|lV4aqe38WJ_4yJUhx?Ep zvgnrqI)htSZ3k)5nV-2@m$0yuoK9uA$e#ZQY9x~fj;JK?we~QegK+Dae$BC;i7O+xkO%k QUWWMiIT<p)`m+Xlc2tZI=V?M{fxQyw>dz zq()%dn(zmPYmW38sF50#l0ZN%-bKJfiTQ0Imp z2`k)im9W$eKM)qW;d?@<3$74~U2vID=z{ME`7ZdDkmG`H2pKN;nlQlyU!B}9im7Ju zh3hfP3!?(15mK2<8G~d=lmR(9XCQ-Qi7grE5tdflUG!+NeGS=ixq<8)xt?sXyqfHE zxsI$X*OJYZSCP$@SCX~KPO_4rb;G5K!-Vm5n&{n{mN@8Z9!$+Im>h=52>VAO+%?c*Al*Sc*v|F&f}#9ZckBY ziv&Mr;7O};e?OrrW*IsoL{}WCc=_njUH7Lk|G$P%^}j|1yZP_K-KuL^sB=?$SZSYW zRAoS6o+L?-p3ZNd$0>aCQ>f>zF&@nTHD_#I!b&uq%DT(>^SP`fEfDfQsR6KKJZl(d z(>t=AylNPW&8r3;8b*hCW#^;0tS~d+4+eFuv(r15zF@q@KOROqJ;wKW-xaLjkBnfJ zdHW2%bOmQ*1X{Q0x)y5PVYWmK-+dSJGXnvCXp7f8(`=UlJ~%?vqHLbxrB^X8Ezs50 zVYW;^A3cH(SpuzX;T>kvZ0o;@g&F<_$J5ku^YmP+zccI)Yv!71NuN}|>BHjd5T!zz zwNgV0XM~7Q%`URT%+03Zr+64WG<^;Zf*viERtuCme&akU$%F}%Fy8kDF2t3*{w2&6 zoW^4Q$ zib}RKsCD@D@HSoZ1}WY(#zKBPLA7vlyM^Tl^Nj`Eu(0Wq|KXfmDEN$Wep+IW(Mn8X zQ-xK=e7@viHlOYXFJO)^%P8afBvz2=)HT{Zl=NC=%;S!OSZ=NHZwza?H>|gH#5bWR za`6x@!dkxM5C*78Y^xG=pP&^*xwoz^5gWu>hH|_EvCRB@1$2PmWFMjRp3{HTF3w8w`K#dPKa24?}zveV$B+`5==-B?R1J$Y*rS_ltd zib9)vc(5Crh3;z4Sf8R2KY^)|R19n%yTOX-$b80HHzY$9ln1+X+t!c8oSE!AMn6M5 zLFQRHtetiF$Kq0qGG8(-QR%Joj=z}_e;dV*xVV^I#F@!`Q;NE6#*FbC6#0zl$xvyw z+9(_kt0=yoO^{N26!NPH+W@Oa$6C5xPx6zfb)b#3nY5MEPU;|qNwY}n5_?``PjCDi D{bjPA From ba94134c45cdd5618500982a3947a7ff8e71026d Mon Sep 17 00:00:00 2001 From: kououken Date: Fri, 1 Mar 2019 14:13:05 -0800 Subject: [PATCH 6/7] Reinserted '.env' file. Whoops! --- back/.env | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 back/.env diff --git a/back/.env b/back/.env new file mode 100644 index 0000000..b47f7a4 --- /dev/null +++ b/back/.env @@ -0,0 +1,4 @@ +EMAIL_HOST_USER=accountemail@yourmail.com +EMAIL_HOST_PASSWORD=accountpasswordhere +SUBMIT_REPORT_DESTINATION_EMAIL=to-address@yourmail.com +SUBMIT_REPORT_FROM_EMAIL=from-address@yourmail.com From 40e86aff34dea69b93d4ca3fc0d3dd28c3556791 Mon Sep 17 00:00:00 2001 From: Daniel Dupriest Date: Fri, 1 Mar 2019 14:41:38 -0800 Subject: [PATCH 7/7] Update .env --- back/.env | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/back/.env b/back/.env index be096b6..3b79ce5 100644 --- a/back/.env +++ b/back/.env @@ -1,4 +1,4 @@ -EMAIL_HOST_USER=reimbursinator@gmail.com -EMAIL_HOST_PASSWORD=Frank12345 -SUBMIT_REPORT_DESTINATION_EMAIL=kououken@gmail.com +EMAIL_HOST_USER=accountemail@youremail.com +EMAIL_HOST_PASSWORD=yourpassword +SUBMIT_REPORT_DESTINATION_EMAIL=administratoremail@yourmail.com SUBMIT_REPORT_FROM_EMAIL=from-address@yourmail.com