From d60cd731fed4827942b2282c8a74471aaed4259d Mon Sep 17 00:00:00 2001 From: emile Date: Wed, 20 Mar 2024 19:19:39 +0200 Subject: [PATCH] New changes --- .DS_Store | Bin 6148 -> 6148 bytes osinaweb/.DS_Store | Bin 10244 -> 8196 bytes osinaweb/db.sqlite3 | Bin 909312 -> 909312 bytes osinaweb/osinacore/.DS_Store | Bin 6148 -> 8196 bytes .../__pycache__/urls.cpython-310.pyc | Bin 8272 -> 5828 bytes .../__pycache__/views.cpython-310.pyc | Bin 35060 -> 22853 bytes .../add/__pycache__/urls.cpython-310.pyc | Bin 0 -> 1614 bytes .../add/__pycache__/views.cpython-310.pyc | Bin 0 -> 11077 bytes osinaweb/osinacore/add/urls.py | 32 + osinaweb/osinacore/add/views.py | 626 +++++++++++++++ osinaweb/osinacore/templates/.DS_Store | Bin 0 -> 10244 bytes .../templates/add_templates/.DS_Store | Bin 0 -> 8196 bytes .../add_templates}/add-business.html | 2 +- .../add-businesstype-modal.html} | 2 +- .../add_templates/add-credentials-modal.html} | 0 .../add_templates}/add-customer.html | 6 +- .../add_templates}/add-daily-report.html | 2 +- .../templates/add_templates/add-epic.html} | 4 +- .../add_templates/add-file-modal.html} | 0 .../add_templates/add-note-modal.html} | 2 +- .../add_templates/add-point-modal.html | 41 + .../add_templates/add-project-note-modal.html | 116 +++ .../templates/add_templates/add-project.html} | 16 +- .../add_templates/add-projecttype-modal.html} | 2 +- .../add_templates/add-reference-modal.html} | 2 +- .../templates/add_templates}/add-staff.html | 2 +- .../add-staffposition-modal.html | 2 +- .../add_templates/add-status-modal.html} | 2 +- .../add_templates/add-tag-modal.html | 32 + .../templates/add_templates/add-task.html} | 30 +- .../add_templates/add-time-modal.html} | 0 .../add_templates}/add-userstory-modal.html | 0 .../customer_dashboard/customer_index.html | 0 .../customer_dashboard/customer_main.html | 0 .../listing_pages/customer-invoices.html | 0 .../delete_modals/delete-business-modal.html | 0 .../delete_modals/delete-customer-modal.html | 0 .../delete_modals/delete-note-modal.html | 0 .../delete_modals/delete-project-modal.html | 0 .../delete-project-note-modal.html | 0 .../delete_modals/delete-staff-modal.html | 0 .../delete_modals/delete-task-modal.html | 0 .../details_pages/business-details.html | 4 +- .../details_pages/customer-details.html | 4 +- .../details_pages/project-details.html | 16 +- .../details_pages/staff-details.html | 4 +- .../templates/details_pages/task-details.html | 14 +- .../edit_pages/edit-business-type.html | 0 .../templates/edit_pages/edit-business.html | 0 .../templates/edit_pages/edit-customer.html | 0 .../templates/edit_pages/edit-epic.html | 0 .../edit_pages/edit-project-type.html | 0 .../templates/edit_pages/edit-project.html | 0 .../templates/edit_pages/edit-reference.html | 0 .../edit_pages/edit-staff-position.html | 0 .../templates/edit_pages/edit-staff.html | 0 .../templates/edit_pages/edit-tag.html | 0 .../templates/edit_pages/edit-task.html | 44 +- .../templates/epic-fetched-tasks.html | 0 osinaweb/{ => osinacore}/templates/index.html | 16 +- .../listing_pages/business-types.html | 6 +- .../templates/listing_pages/businesses.html | 4 +- .../templates/listing_pages/customers.html | 4 +- .../listing_pages/daily-reports.html | 4 +- .../templates/listing_pages/notes.html | 6 +- .../listing_pages/project-types.html | 6 +- .../templates/listing_pages/projects.html | 6 +- .../templates/listing_pages/references.html | 6 +- .../listing_pages/staff-positions.html | 6 +- .../templates/listing_pages/staffs.html | 4 +- .../templates/listing_pages/tags.html | 6 +- .../templates/listing_pages/tasks.html | 18 +- osinaweb/{ => osinacore}/templates/login.html | 0 osinaweb/{ => osinacore}/templates/main.html | 10 +- .../templates/popup_modals}/.DS_Store | Bin 6148 -> 6148 bytes .../popup_modals/add-project-note-modal.html | 0 .../popup_modals/add-userstory-modal.html | 32 + .../popup_modals/addcredentials-modal.html | 39 + .../templates/popup_modals/addfile-modal.html | 86 ++ .../templates/popup_modals/addtag-modal.html | 0 .../templates/popup_modals/addtime-modal.html | 33 + .../popup_modals/showpoints-modal.html | 0 .../popup_modals/status-on-mobile-modal.html | 0 .../popup_modals/timeline-modal.html | 0 .../popup_modals/update-status-modal.html | 0 .../templates/project-open-tasks.html | 0 .../templates/recent-activities.html | 0 .../templates/recent-status.html | 0 .../templates/user-recent-activities.html | 0 osinaweb/osinacore/urls.py | 48 +- osinaweb/osinacore/views.py | 747 +----------------- .../__pycache__/settings.cpython-310.pyc | Bin 2668 -> 2687 bytes osinaweb/osinaweb/settings.py | 2 +- osinaweb/templates/add_pages/create-task.html | 129 --- .../add_pages/create-user-story-task.html | 140 ---- .../templates/add_pages/createtask-epic.html | 128 --- .../popup_modals/addpoint-modal.html | 90 --- 97 files changed, 1205 insertions(+), 1378 deletions(-) create mode 100644 osinaweb/osinacore/add/__pycache__/urls.cpython-310.pyc create mode 100644 osinaweb/osinacore/add/__pycache__/views.cpython-310.pyc create mode 100644 osinaweb/osinacore/add/urls.py create mode 100644 osinaweb/osinacore/add/views.py create mode 100644 osinaweb/osinacore/templates/.DS_Store create mode 100644 osinaweb/osinacore/templates/add_templates/.DS_Store rename osinaweb/{templates/add_pages => osinacore/templates/add_templates}/add-business.html (97%) rename osinaweb/{templates/popup_modals/addbusinesstype-modal.html => osinacore/templates/add_templates/add-businesstype-modal.html} (92%) rename osinaweb/{templates/popup_modals/addcredentials-modal.html => osinacore/templates/add_templates/add-credentials-modal.html} (100%) rename osinaweb/{templates/add_pages => osinacore/templates/add_templates}/add-customer.html (98%) rename osinaweb/{templates/add_pages => osinacore/templates/add_templates}/add-daily-report.html (94%) rename osinaweb/{templates/add_pages/create-epic.html => osinacore/templates/add_templates/add-epic.html} (96%) rename osinaweb/{templates/popup_modals/addfile-modal.html => osinacore/templates/add_templates/add-file-modal.html} (100%) rename osinaweb/{templates/popup_modals/addnote-modal.html => osinacore/templates/add_templates/add-note-modal.html} (98%) create mode 100644 osinaweb/osinacore/templates/add_templates/add-point-modal.html create mode 100644 osinaweb/osinacore/templates/add_templates/add-project-note-modal.html rename osinaweb/{templates/add_pages/create-project.html => osinacore/templates/add_templates/add-project.html} (89%) rename osinaweb/{templates/popup_modals/addprojecttype-modal.html => osinacore/templates/add_templates/add-projecttype-modal.html} (93%) rename osinaweb/{templates/popup_modals/addreference-modal.html => osinacore/templates/add_templates/add-reference-modal.html} (93%) rename osinaweb/{templates/add_pages => osinacore/templates/add_templates}/add-staff.html (98%) rename osinaweb/{templates/popup_modals => osinacore/templates/add_templates}/add-staffposition-modal.html (92%) rename osinaweb/{templates/popup_modals/addstatus-modal.html => osinacore/templates/add_templates/add-status-modal.html} (96%) create mode 100644 osinaweb/osinacore/templates/add_templates/add-tag-modal.html rename osinaweb/{templates/add_pages/createtask-project.html => osinacore/templates/add_templates/add-task.html} (81%) rename osinaweb/{templates/popup_modals/addtime-modal.html => osinacore/templates/add_templates/add-time-modal.html} (100%) rename osinaweb/{templates/popup_modals => osinacore/templates/add_templates}/add-userstory-modal.html (100%) rename osinaweb/{ => osinacore}/templates/customer_dashboard/customer_index.html (100%) rename osinaweb/{ => osinacore}/templates/customer_dashboard/customer_main.html (100%) rename osinaweb/{ => osinacore}/templates/customer_dashboard/listing_pages/customer-invoices.html (100%) rename osinaweb/{ => osinacore}/templates/delete_modals/delete-business-modal.html (100%) rename osinaweb/{ => osinacore}/templates/delete_modals/delete-customer-modal.html (100%) rename osinaweb/{ => osinacore}/templates/delete_modals/delete-note-modal.html (100%) rename osinaweb/{ => osinacore}/templates/delete_modals/delete-project-modal.html (100%) rename osinaweb/{ => osinacore}/templates/delete_modals/delete-project-note-modal.html (100%) rename osinaweb/{ => osinacore}/templates/delete_modals/delete-staff-modal.html (100%) rename osinaweb/{ => osinacore}/templates/delete_modals/delete-task-modal.html (100%) rename osinaweb/{ => osinacore}/templates/details_pages/business-details.html (99%) rename osinaweb/{ => osinacore}/templates/details_pages/customer-details.html (99%) rename osinaweb/{ => osinacore}/templates/details_pages/project-details.html (98%) rename osinaweb/{ => osinacore}/templates/details_pages/staff-details.html (99%) rename osinaweb/{ => osinacore}/templates/details_pages/task-details.html (98%) rename osinaweb/{ => osinacore}/templates/edit_pages/edit-business-type.html (100%) rename osinaweb/{ => osinacore}/templates/edit_pages/edit-business.html (100%) rename osinaweb/{ => osinacore}/templates/edit_pages/edit-customer.html (100%) rename osinaweb/{ => osinacore}/templates/edit_pages/edit-epic.html (100%) rename osinaweb/{ => osinacore}/templates/edit_pages/edit-project-type.html (100%) rename osinaweb/{ => osinacore}/templates/edit_pages/edit-project.html (100%) rename osinaweb/{ => osinacore}/templates/edit_pages/edit-reference.html (100%) rename osinaweb/{ => osinacore}/templates/edit_pages/edit-staff-position.html (100%) rename osinaweb/{ => osinacore}/templates/edit_pages/edit-staff.html (100%) rename osinaweb/{ => osinacore}/templates/edit_pages/edit-tag.html (100%) rename osinaweb/{ => osinacore}/templates/edit_pages/edit-task.html (69%) rename osinaweb/{ => osinacore}/templates/epic-fetched-tasks.html (100%) rename osinaweb/{ => osinacore}/templates/index.html (98%) rename osinaweb/{ => osinacore}/templates/listing_pages/business-types.html (98%) rename osinaweb/{ => osinacore}/templates/listing_pages/businesses.html (99%) rename osinaweb/{ => osinacore}/templates/listing_pages/customers.html (99%) rename osinaweb/{ => osinacore}/templates/listing_pages/daily-reports.html (99%) rename osinaweb/{ => osinacore}/templates/listing_pages/notes.html (98%) rename osinaweb/{ => osinacore}/templates/listing_pages/project-types.html (98%) rename osinaweb/{ => osinacore}/templates/listing_pages/projects.html (99%) rename osinaweb/{ => osinacore}/templates/listing_pages/references.html (98%) rename osinaweb/{ => osinacore}/templates/listing_pages/staff-positions.html (99%) rename osinaweb/{ => osinacore}/templates/listing_pages/staffs.html (99%) rename osinaweb/{ => osinacore}/templates/listing_pages/tags.html (98%) rename osinaweb/{ => osinacore}/templates/listing_pages/tasks.html (98%) rename osinaweb/{ => osinacore}/templates/login.html (100%) rename osinaweb/{ => osinacore}/templates/main.html (98%) rename osinaweb/{templates => osinacore/templates/popup_modals}/.DS_Store (79%) rename osinaweb/{ => osinacore}/templates/popup_modals/add-project-note-modal.html (100%) create mode 100644 osinaweb/osinacore/templates/popup_modals/add-userstory-modal.html create mode 100644 osinaweb/osinacore/templates/popup_modals/addcredentials-modal.html create mode 100644 osinaweb/osinacore/templates/popup_modals/addfile-modal.html rename osinaweb/{ => osinacore}/templates/popup_modals/addtag-modal.html (100%) create mode 100644 osinaweb/osinacore/templates/popup_modals/addtime-modal.html rename osinaweb/{ => osinacore}/templates/popup_modals/showpoints-modal.html (100%) rename osinaweb/{ => osinacore}/templates/popup_modals/status-on-mobile-modal.html (100%) rename osinaweb/{ => osinacore}/templates/popup_modals/timeline-modal.html (100%) rename osinaweb/{ => osinacore}/templates/popup_modals/update-status-modal.html (100%) rename osinaweb/{ => osinacore}/templates/project-open-tasks.html (100%) rename osinaweb/{ => osinacore}/templates/recent-activities.html (100%) rename osinaweb/{ => osinacore}/templates/recent-status.html (100%) rename osinaweb/{ => osinacore}/templates/user-recent-activities.html (100%) delete mode 100644 osinaweb/templates/add_pages/create-task.html delete mode 100644 osinaweb/templates/add_pages/create-user-story-task.html delete mode 100644 osinaweb/templates/add_pages/createtask-epic.html delete mode 100644 osinaweb/templates/popup_modals/addpoint-modal.html diff --git a/.DS_Store b/.DS_Store index cb86c58aefd33d00b40ba488884ba980ce4f2855..952c9f83f3d9bbb949798af88cbd4205ae47c493 100644 GIT binary patch delta 74 zcmZoMXffDunT2uZZ(tSKynr>0X)`;=Uw!~yU>42* delta 73 zcmZoMXffDunT2u3Jrt}MrKAj3PvWTwK@vbmPQ6T3MR&8wY8iaqRRT#LGjr+ dxq10rlXF?+8M`NMWEI)GkTs2IGaJW0egI9^7N`IK diff --git a/osinaweb/.DS_Store b/osinaweb/.DS_Store index e94e763ca030bac5a8c7c9500d533d2a2dbde262..58387e5634a49c39750ce69a6e8f2c0e2bd7eba2 100644 GIT binary patch delta 261 zcmZn(XmOBWU|?W$DortDU;r^WfEYvza8E20o2aKKssxe;@);OX8H#~0i6NgMe`Db^ z_K6L=o7p*7I8s3>xET@|Qh=}sSrtRJXHI@{Qcivn$UvYm-9UQYe=q>D7#P@rre!kZ z0AVIW9z!~s>YvD}H}eSGW}N(3v{cl{(m+SS$jG2pN1@u#z|dSr!Nk~Ta;}*1=EXu! wStgcA2{MBXXOQ3q(ykz{Y%KiFJegl5kOSxukOvti$Ma0vJX7R7)5J1y0EW9hx&QzG delta 1001 zcmb_b&2JJx6n_KQU8I$zELaqiDwifThJL8=U_fl6#29F48i*eRmSMYg*;#fMYJ0($ z#>9&W*~F9jFBrnni_{3q#xnn!AWM{Z|42p@9pk;Z#TW0p8^1s zY1QTcrYYpy&QHly83=OZ)pfan>Z2`VUH0fvQM^Cj1PGSTOFACG4Gy6_ppL;V@&1#6@rhGGAv75diJ?d|a(XHfI}?kSg>bbZ zZOR5|X|7)Czh+YvD##s}q{Ct>CSk&S>U3HcV>E zLg$!3@qt>YVl}5_h-HyRsbUxvO~#pRmWs(qM9UkPNfi}}+1DgeKb>C;iS(TzU?rwY zfP@QxI+bq@=EdO^wH=0$e@!DA_9xQ$fs2P(TEV-p4x6w8U3d*|;T?R0FYp6?BM!yT z1vHBm(RGwUx6uk(MG~qZ1wC@(J+!-=b#7n>2ALEbsd&e29#x(zNTi`VyfNSR<20Am zAWKVw7UR>;ukF9Wd#ufl2o9OGe`79~`o^Ku+o1CkE0RVLLSpWb4 diff --git a/osinaweb/db.sqlite3 b/osinaweb/db.sqlite3 index bc866abce523ec35ed16274b9b1de49b1e4eca4b..f41da46d1916bb80b254a7b4e4321f44d7b6b0b4 100644 GIT binary patch delta 2911 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 diff --git a/osinaweb/osinacore/.DS_Store b/osinaweb/osinacore/.DS_Store index 4f60abb2b87906b582b33b6260183b4e121514af..bf21a06115bad43e69f13dbcb299e802464b862f 100644 GIT binary patch literal 8196 zcmeHMO>Epm6n?V_U2m5Vr_DlwKw8)fqEXqTRZ)ddmu(P4s7ln0(uA~Zz4l~dV$WE% zH`_Fdv{wWdIP-Jlg48qOf{>6nBhgz0$KJ}dhbp|8@iz9Z7m9>Xq4YRO%5sQ>0?u$H>a#71mXbJKGYzU!=zq8;Cp|gfeflPr+flPr+ zflPtppaAaKB55P`eRVf0GX*jQo=OEod?;fUwiel*vNCjFA&&rP$FW%^tm8RAa>|jd zMYgA`q@quCdLR*%L`Mvw=y<;@;Am@+?J2A1KolKF)H8`rC`9&-yt0G?sVSS4nF5&t z!wQJAdr_X*ZD5J>``(hn&6dMkh!8K;JDATN%7nE(%Y!{I!N9x?RQMTS-FY&W)1Ggb z+*Mx<$amL9`*-=`Vl*o4+bb7-{gVDHMyBR4G#Zy%{{ro8$3~H>qFWflxmjQ(XGK26 zJ734N&?L%5{h0jrF`ylJ8S!!L@`(5F7o?(v_c(eA)$JfQ1P(50Y@%g&Md22f;#%G^Jlj=LZsuOo#ncX(z zs*b=Ot?55u6Dykk1G|R;&W+=mQgG7MkWYGibqi8!7j<@|9ux+(_yYZYqn?MuL)nK| zodl!R4ZP^N{l4Wnb`VypcS&w+{FxJZEw2@|8;xz=ZG=YH3F?NwDXvyIcUt|r(OR=< zx2aEG<}5U9Mtw=JEsBuq*KB6-Zk>0S6-aJF-OvhJp{dXA?=M`e&XpGyst0rB{rT$r zn{(y!=N1kQ3RjLJC4h^c?&13R=i+lbxW zxE`S7OCfca*cQhgcTw(TPr!mT>IZ0t`0F;8dwcu zd}925Ix7Ae*FL$}56&t6;(__^k;zy1M={nEf4dEzIh=_=CT6C|S5}0~)PRRdB?EXK z1FSzPAP^Bw;{ic~T?~p8y6N6!xR2wJejL-78q`b??YpDD{~yPpXJg6~$Q1aG6d>b^ zjm0`T>+cDJe#Ke4jQJ*Jkp!-%tfXKekK<_NaUAXAe;8uDj8MU;MYg9bwqW|-KLlj^ QzmPrK{}Vg<)3^Ws1s24LX#fBK delta 116 zcmZp1XfcprU|?W$DortDU=RQ@Ie-{Mvv5r;6q~50$SAZiU^g?P&}JS1dB)9wg7+9F zKN2&T>>z%8VgvhPb`B0fW}s>y5a0$9t{{yY3%@f@=9lpV8NE<} z#Yd~B{k`dn=k%z@bKGhk?SseqE~hRJ@y(_GfR8@ZJAvNgF*)TtlwGT6Tb3i-KJYQV_s84(iDQ8`!(Z zK@72Xlk0E~yOCUvVRjR_0h`$o@-B?BW8@IFJarLUDcFsBp9Z*(ya)HQ50D$NjonTT zV+XsF+=K_&|39HFns3H#p6?+?uy@Brz&Hg_OmIUVIfni0B)J6#*oVlic$j^JycdtM z2g&}V+qx8nqRlH7qO*eA)Ic#1tmK8Vxo)8sCk zVb7Ag@eKPJat}URanZSH<|ydJv)piw9LMwQd2#|TuouXEc#-`axgVcrzd%mni|k9} z0o2$pkq_a^j*FGM^fCp9@fB`Jk&oaNcA9(?ud)}(gNSUMJcJqc5_uSx*#`L-uCQMv zk6@Nu+d%!kgRHruAvPO82dtrfmjq-G)I$o5r^nl&;OvcitN?17-JW+FmYK z8TrNR8tPqY*>la%*DWf%mYueZMXIVT-L{SVlC|MZBlc}H6f7g3UM!e;f}B`0voh^_ zUv~Ou#mRp^b?}j7uri+%f zvXA#@(z>RU8*wF_Un(RP3;B$*e=D(lGN#9wt@+Qa>7~T1b_QpKG;8JG;r7meQwnDY z(x5q)lF3+Fu=1H&rK8zKA#cftO+zx!JRS_ub)?oT-Aq|_!MrXXG)MdEt>wZx^%{BG zO63Ze&T7Ioa(dRt>pO06zIJtuehuBS<`8fKqyc-S6d$FW9;v7FJ%dt6chf{XQ zc#9SCs*2)P>gsA$=M6yH6ZxQJaOhUcIp&cZk19NZV@;cGDuUx^Fw irC5M3#6|dAT!K%92A_z_a8F!;kAw~%ij4b%u<cX%Ad6~Iqp*^*AusLKVHb3+!kwAd6IVH->_7z_q%QAU@B{@6CHt-n?l`(A=C( z;orM&f9QX_FqQfxLGo`J!lC#tx*T(ma#K(PtXNZGE~}yZl;V_9ty?SewZ*BWY3?+c zpIWRd)w}gIsiBn5V47dMy#eZ={*ozI)F3w?ry*^*5xEhXEH@)J0k_r-LSy&LgeYN z$ns+38L+qI9^{#@#Bwk4EZE2LQslj0ndLs@+0bv;{ACGvb&W%(fF1u$TFygv@c@`bS4majox1ZyoHg1i_GwY&~_Z#c~I;mAF3gykcV zm%w_gC_dy!qZ&+`4q zr^5r5A4EO_zHRwC$Y;WLEkA^O7CdbEd&nL8Q^Kl&mjBotmWsB^YFao7m$bGMawTC55vorUqLRwtCn9w-VU!@egk<2ys6kN z`bB@5U%$PC|H|;zC2VENEyCNIQ@!tGcd}F}hzjNGZhtVd^`woN!-I0ZFfPWs5Rvn8x68c44nDd(tns##g-^8U;^fK0ZWDU>Qf7!PDJ`7kJDN_)I)rJ{ui z{S{hY4jBiK7$KVCV279V^eofk8V*YSvP?N!^4IiGzNa^RcrhDAeSLpfI*fkJr*ogmwzq2+Kgjej;s$7HZ8 zI6b86FX_$XwJQgdyVP{_lfz9XweB+Ml+WDT!D2AvpaV@yJtUCz_Vo6q-=iB+Z%wt9 z9F4zIrCTsFEs8N{a+s@+{5ZzZMAfNiStw&sVW?avlNHT`s6#OZp;N7+0?buY)moYz z(Nx;grz0wIL}P+P145jQcA&i8WTg;Y=4+wMiga!yim|pZa;gnBFPgFdh8(vsL82L< zZ*TPzBK>ccZ6hs5oiayHc9k&j% zBat79Iw?TKsf3YekzB!5O^YOQTs~GHcrNs_v9EpPxXoi&%vR{*0#u#Vin6b6dbCtD zsyunrF$Dys3Rxh>JEn@ZQ8O(Uy-Fkp5C`ENWmzc41EIfjq!9WgzZ|O$bWEZuT1Kms z{dV;jsU8xDX5CV}r-D9po02HF@vts!9>bzB^z(k`mveG9MnO!CvqR|jTKW;qfK#_8 z^lAH{7Lq7hDL4`moD`HK1n4pwaMEK2b%Yo+5z?(EUFyob@=hbU&?t4%@O8vdR;pk} zWt90Kmx9P>S7@V&Q!ZMqftjuuLw@Y(%4w3w#j2wXwnQumDt=jMd3YRn+Spl578;aM z_vD&_)=(b~E*?RL>d?o$Tm^l!PSq-)oLE4*x>i*-G4ROeT1DDWm3{d_QP)E`ks%p5 z5gW!poahdh_5d5GYGyI|00Xp;#e+)DY(gMrk5mAcn;D4gmYof^NtLQmiW$^;B|s0U zhDY`4u|yV#SC?^^yE#emCxb-HhhM@gID?kk)ArNiU zt>mI`+!hoiC4!vWXBP)90A!1Tx{vWTtZ-Z^!LG@p!3dCtVrkW?OSy zT2f;~qFp($6b#}-mIBBY9k*?QOw6ar3;i5U7#=peaF?WAnSzoEC?egCNmRsQzEj7lBm|nYU!NJMx>+cF5jcR;SIs&F$hU){H%)GCdfo{Qsh*d zlBlbe2br!~o?)s*nhet-Hmw^chPk?NXEG@F_Xi$-Z9!whdF zqaal8v4A$}s#T+{dd$$}=2C5ymfAxk(mpdiR$9t1DZ`5mxz_F}PF0QE3WS;l+GX(m zNV>GosP4$gHocZ0lndl=?5F$_$B;Oz9X*DGNX+%25Ss&Nl2fCR%JrZ{S}My4 zcIzoG=Xbi4%K060NGKIK*BPl|W<)h(NQSQ4L>fjUl)mwz(l?aQHzF}h)~}{`{MDj? z%4CsPEY%WIIOb5N38c#17E()Si5_WZT9XqkH_)U+TDFp6QYz+4Q#;qHL5tF;nN+Mu zbV&<}2H6H?q*fh?DKI)H6XBth&)fNT+oUil6Z@62;SNv6jJG=oci^kU3(B9oXH>f; zH43f*Ihl=EJ(=_~cXaM2TMH*qUdiHV z`)QqQn_wWi@T#dUPk^s+icEP=?3_%TRLZrGzmN&8uX#3H)i zs#u7FI9v4O1xp5)lFA1iRXagTw3}rK*=Tq$$cBLTlL<0mMTPRNpg@lfx7BDF5k7;P z@dL_;d=`a45Fg(gRO>tsWu8}UOuXYm{J@i{Hpp*0Is7&gP9dJIHRuC@e3ti<`wF?R zmP(C1m4;JM64p`DKuIGeEXUlr_2L zY3R{@6uI^>s5oq+F1J&c)e8>~Ao;|T7f??g0a_GxkXDl%j($y{jecyY#_dzebTjOv z>buC0F0>v^!$_n~Y59_nHw?|)q@nlIq@1qa9=%?)UMF#4-15wK>B8+L9wu73L#?5) zEz|8@2e2}3qlbl(jOiVPzv-=cP-vFzC3b%;mV-!c?WP~pq}{!>kUpxQ=Y}-WJHRux zTGlE3ZNtXYW*te70WF*@eWI@Z-spPQrCsWpXCro;cwDpk_DpWe=e4T7DB3B~uG95W zq-w=BEuzJuMKiT%lIb-~sSQR|Iz3rwq9E+1c$!Yh3`%BFGK-SED49*k97^U=GLMoB zCG#m+Knea|%v89DlEswljfuKcm|?l{BB0ie%E~n;PhaaiSD|s5D{nl?S?Y{6waHcH zw$rgYIAK7YQu3y9~_ikr%wpb`-HfAdXn{XGT@8NRecFO*4 znNi!e659`fF>jx#$5*Yg0|FO*Ql%W4wla%o+PHpTa)k zwd_B9D*HE|#y;eA>|eZ|eZU*o`#jD5$s5@}coX|OZ)Shvoc)!zu)pwD_GjM4{>0na zA9)A+1Mg(N=Uwb~yqo=&PiOD(8SFQFCi^v?#eT&z>=%4K`#E30e#RHFcljdrQ@)h_ zgfC-1=KHcA@#X9tzJk5Y_hWDI{n?xR0QLqykiE`Vve)=3_9{P!y}}3B%lu&W5?{?; z`8t!dxCFZkMm>LWBge5DBs8);m5Ow z`6l)d-^?E5Ti649E4!bc%>hp^yPLc0E`B<@lb^xv;AgVi`C05X?y+0> zHg*fovYYuJyNT!6jeLmRz=zrOyuhyG+u5~z2fKzB+10$nuHt2OB@fsYyuvQ$JK1GC zWS8=YUBY8_F&|+U@m=gfeh#~Ue~z8c&t>PO&gD~5=dq9Qw;q2#z~6?{dA0AS&YjWp EKWo80-2eap diff --git a/osinaweb/osinacore/__pycache__/views.cpython-310.pyc b/osinaweb/osinacore/__pycache__/views.cpython-310.pyc index 3ac9db1a6004ecafd9e320c23cd2fcebe6bff1cc..a55176bb11dfcd1852e9b7496a668bf5ee062326 100644 GIT binary patch literal 22853 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 literal 35060 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 diff --git a/osinaweb/osinacore/add/__pycache__/urls.cpython-310.pyc b/osinaweb/osinacore/add/__pycache__/urls.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b54f5f175db185cd372b46b11c70f9bbcba8e7fb GIT binary patch literal 1614 zcma)+$#T;`5QZi1dp6rifI!$WflSV+REk5269tD97hP0}du)_wVItkr&FmIi96i97-jeHii_GH!o(XAITKAlD(k3SFH3g!dYK& zYExdrYbF!n)X_6brOF$LiZA6j6HW_F4EY`}qBxV{B+b+@8(bewg|oE`r3iC$b>at7 zI34uS${5>YB|%1+?*+oyMAwpeSLUTxCLdbmL(TtQNfL1mI_}`^xD!9hj+Oj6^OX$o zUXw5BK-Hp{YOc5UlNcjSX=E^QUAlxECbywX{P7*-lX&FHt6Cpj@=}Kmcz!TfGKm$c zN_nps@=j62JVCKmgv`)juI=d_C2{I!ejEvBfJfXinXqorY}zTDK1QutOi)Y7iBvKg zW5fnV{6*ugWZu-w5H7Uo<7j8mhD$G+#)mT%q^g7?yRcLR|MWb$W>8%ntxI={xinNH zv7mOl1#x_nY`Pddxh|{W49Q;17-`AzB%e#;#7tGX%Nb&8gRIm>XHB0&EnIa`vveoi zm7{4WT-_SiG)oIzBtfF`5!)1as{!oLNf!mKY@n{&LIL_)L>3WQbMEAn@l>oXPYmixY9~1%9~y!Al4};e3qaP~e1+5hux-24G4e+|0; literal 0 HcmV?d00001 diff --git a/osinaweb/osinacore/add/__pycache__/views.cpython-310.pyc b/osinaweb/osinacore/add/__pycache__/views.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8fd7241d6892d8697735fdf7405d992774864126 GIT binary patch literal 11077 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 O=AZRv{D!|!UHD%EJM(D( literal 0 HcmV?d00001 diff --git a/osinaweb/osinacore/add/urls.py b/osinaweb/osinacore/add/urls.py new file mode 100644 index 00000000..fa822197 --- /dev/null +++ b/osinaweb/osinacore/add/urls.py @@ -0,0 +1,32 @@ +from django.urls import path +from . import views + + +urlpatterns = [ + + path('status/', views.add_status_modal, name='addstatusmodal'), + + path('customer/', views.add_customer, name='addcustomer'), + path('business/', views.add_business, name='addbusiness'), + path('businessmodal/', views.add_business_modal, name='addbusinessmodal'), + path('staff/', views.add_staff, name='adduser'), + path('project/', views.add_project, name='addproject'), + path('projectnote//', views.add_project_note_modal, name='addprojectnotemodal'), + path('file/', views.add_file_modal, name='addfilemodal'), + path('credential/', views.add_credential_modal, name='addcredentialmodal'), + path('task/', views.add_task, name='addtask'), + path('task//', views.add_task, name='addprojecttask'), + path('task///', views.add_task, name='adduserstorytask'), + path('point//', views.add_point_modal, name='addpointmodal'), + path('epic//', views.add_epic, name='addepic'), + path('note/', views.add_note_modal, name='addnotemodal'), + path('dailyreport/', views.add_daily_report, name='adddailyreport'), + path('projecttype/', views.add_projecttype_modal, name='addprojecttypemodal'), + path('staffposition/', views.add_staffposition_modal, name='addstaffpositionmodal'), + path('businesstype/', views.add_businesstype_modal, name='addbusinesstypemodal'), + path('reference/', views.add_reference_modal, name='addreferencemodal'), + path('tag/', views.add_tag_modal, name='addtagmodal'), + + + +] \ No newline at end of file diff --git a/osinaweb/osinacore/add/views.py b/osinaweb/osinacore/add/views.py new file mode 100644 index 00000000..8cb9a252 --- /dev/null +++ b/osinaweb/osinacore/add/views.py @@ -0,0 +1,626 @@ +from django.shortcuts import render, redirect, get_object_or_404 +from osinacore.models import * +from django.contrib.auth.decorators import login_required +from django.http import HttpResponse +from django.urls import reverse +from django.http import HttpResponseRedirect +from datetime import date +from django.http import JsonResponse + + + +def add_status_modal(request, *args, **kwargs): + if request.method == 'POST': + text = request.POST.get('text') + current_datetime = datetime.now() + date = datetime.now().date() + time = current_datetime.strftime("%I:%M %p") + + try: + staff_profile = StaffProfile.objects.get(user=request.user) + except StaffProfile.DoesNotExist: + # Handle the case where a StaffProfile does not exist for the user + staff_profile = None + + status = Status( + text=text, + staff=staff_profile, + date=date, + time = time, + ) + status.save() + + # Reload the parent page + return HttpResponse('') + return render(request, 'add_templates/add-status-modal.html') + + + +@login_required +def add_customer(request): + businesses = Business.objects.all().order_by('-id') + references = Reference.objects.all().order_by('-id') + business_types = BusinessType.objects.all().order_by('-id') + + if request.method == 'POST': + email = request.POST.get('email').lower() + first_name = request.POST.get('first_name') + last_name = request.POST.get('last_name') + business_id = request.POST.get('business') + business = get_object_or_404(Business, id=business_id) + username = f"{first_name.lower()}{last_name.lower()}" + original_username = username + counter = 1 + + while User.objects.filter(username=username).exists(): + username = f"{original_username.lower()}{counter}" + counter += 1 + + user = User.objects.create_user( + username=username, + email=email, + password=request.POST.get('password2') + ) + user.first_name = first_name.lower().capitalize() + user.last_name = last_name.lower().capitalize() + user.save() + + + referenceid = request.POST.get('referenceid') + reference = get_object_or_404(Reference, id=referenceid) + + CustomerProfile.objects.create( + user=user, + mobile_number = request.POST.get('mobile_number'), + personal_website = request.POST.get('personal_website'), + status = request.POST.get('status'), + reference = reference, + business = business, + ) + return redirect('customers') + + context = { + 'businesses' : businesses, + 'references' :references, + 'business_types' : business_types + + } + return render(request, 'add_templates/add-customer.html', context) + + + +@login_required +def add_business(request): + business_types = BusinessType.objects.all().order_by('-id') + if request.method == 'POST': + name = request.POST.get('name') + email= request.POST.get('email') + financial_number = request.POST.get('financial_number') + phone_number = request.POST.get('phone_number') + vat = request.POST.get('vat') + if vat == 'true': + vat = True + else: + vat = False + commercial_registration = request.POST.get('commercial_registration') + website = request.POST.get('website') + logo = request.FILES.get('logo') + + business_type_id = request.POST.get('type') + + business_type = get_object_or_404(BusinessType, id=business_type_id) + + business = Business( + name = name, + email = email, + financial_number = financial_number, + vat = vat, + commercial_registration = commercial_registration, + website = website, + type=business_type, + logo = logo, + phone_number = phone_number, + ) + business.save() + + return redirect('businesses') + + context = { + 'business_types': business_types, + } + + return render(request, 'add_templates/add-business.html', context) + + + + + + +@login_required +def add_business_modal(request): + if request.method == 'POST': + name = request.POST.get('name') + email = request.POST.get('email') + financial_number = request.POST.get('financial_number') + phone_number = request.POST.get('phone_number') + vat = request.POST.get('vat') + if vat == 'true': + vat = True + else: + vat = False + commercial_registration = request.POST.get('commercial_registration') + website = request.POST.get('website') + logo = request.FILES.get('logo') + + business_type_id = request.POST.get('type') + business_type = get_object_or_404(BusinessType, id=business_type_id) + + business = Business( + name=name, + email=email, + financial_number=financial_number, + vat=vat, + commercial_registration=commercial_registration, + website=website, + type=business_type, + logo=logo, + phone_number=phone_number, + ) + business.save() + + + businesses = Business.objects.all() + + updated_options = [{'id': business.id, 'name': business.name} for business in businesses] + + + return JsonResponse(updated_options, safe=False) + + + return render(request, 'add_templates/addbusiness-modal.html') + + +@login_required +def add_staff(request): + staffpositions = StaffPosition.objects.all().order_by('-id') + if request.method == 'POST': + email = request.POST.get('email').lower() + first_name = request.POST.get('first_name') + last_name = request.POST.get('last_name') + username = f"{first_name.lower()}{last_name.lower()}" + original_username = username + counter = 1 + + while User.objects.filter(username=username).exists(): + username = f"{original_username.lower()}{counter}" + counter += 1 + + user = User.objects.create_user( + username=username, + email=email, + password= request.POST.get('password2') + ) + user.first_name = first_name.lower().capitalize() + user.last_name = last_name.lower().capitalize() + user.save() + + staff_positionid = request.POST.get('staff_position') + staff_position = get_object_or_404(StaffPosition, id=staff_positionid) + + StaffProfile.objects.create( + user=user, + image = request.FILES.get('image'), + mobile_number = request.POST.get('mobile_number'), + active = request.POST.get('active'), + intern = request.POST.get('intern'), + staff_position = staff_position, + ) + return redirect('users') + + context = { + 'staffpositions' : staffpositions, + } + return render(request, 'add_templates/add-staff.html', context) + + + +@login_required +def add_project(request): + staffs = StaffProfile.objects.all().order_by('-id') + project_types = ProjectType.objects.all() + customers = CustomerProfile.objects.all().order_by('-id') + if request.method == 'POST': + name = request.POST.get('name') + + customerid = request.POST.get('customer') + customer = get_object_or_404(CustomerProfile, id=customerid) + + managerid = request.POST.get('manager') + manager = get_object_or_404(StaffProfile, id=managerid) + + + project_type = request.POST.getlist('project_type') + details = request.POST.get('details') + membersids = request.POST.getlist('members') + status = request.POST.get('status') + start_date = request.POST.get('start_date') + end_date = request.POST.get('end_date') + + + project = Project( + name=name, + customer=customer, + manager=manager, + details=details, + status=status, + start_date=start_date, + end_date=end_date, + ) + project.save() + + project.project_type.set(project_type) + project.members.set(membersids) + + requirements = request.POST.getlist('requirements') + for requirement_content in requirements: + if requirement_content: + requirement = ProjectRequirement(content=requirement_content, project=project, added_by=request.user) + requirement.save() + + return redirect('my-projects') + + + context = { + 'staffs' : staffs, + 'project_types' : project_types, + 'customers' : customers, + + } + return render(request, 'add_templates/add-project.html', context) + + + + +def add_project_note_modal(request, project_id): + project = get_object_or_404(Project, project_id=project_id) + if request.method == 'POST': + text = request.POST.get('note_text') + color = request.POST.get('note_color') + user = request.user + date = timezone.now() + + note = Note( + text=text, + color=color, + user=user, + date=date, + project=project, + ) + note.save() + + return HttpResponse('') + + context = { + 'project' : project + } + + return render(request, 'add_templates/add-project-note-modal.html', context) + + + + +def add_file_modal(request, *args, **kwargs): + + context = { + + } + return render(request, 'add_templates/add-file-modal.html', context) + +def add_credential_modal(request, *args, **kwargs): + context = { + + } + return render(request, 'add_templates/add-credentials-modal.html', context) + + + + +@login_required +def add_task(request, project_id=None, requirement_id=None): + project = None + requirement = None + epics_of_my_project = None + projects = None + + + if project_id: #Case where user wants to add task from project page(Adding a task for a project) + project = get_object_or_404(Project, project_id=project_id) + epics_of_my_project = Epic.objects.filter(project=project) + if requirement_id: + requirement = get_object_or_404(ProjectRequirement, id=requirement_id) + + + else: #Case where user wants to add task from tasks page(No project specified) + projects = Project.objects.all().order_by('-id') + + + staffs = StaffProfile.objects.all().order_by('-id') + + + if request.method == 'POST': + name = request.POST.get('name') + status = request.POST.get('status') + extra = request.POST.get('extra') + description = request.POST.get('description') + start_date = request.POST.get('start_date') + end_date = request.POST.get('end_date') + + + + if not project_id: + project_id = request.POST.get('project') + project = get_object_or_404(Project, id=project_id) + + epic_id = request.POST.get('epic') + epic = get_object_or_404(Epic, id=epic_id) + + + assigned_to_id = request.POST.get('assigned_to') + assigned_to = get_object_or_404(StaffProfile, id=assigned_to_id) + + task = Task( + name=name, + status=status, + project=project, + epic=epic, + extra=extra, + description=description, + start_date=start_date, + end_date=end_date, + assigned_to = assigned_to, + requirement = requirement, + + ) + + task.save() + + + task_details_url = reverse('detailed-task', args=[task.task_id]) + if requirement: + return redirect('detailed-project', project_id=project.project_id) + else: + return HttpResponseRedirect(task_details_url) + + + context = { + 'project':project, + 'epics_of_my_project' : epics_of_my_project, + 'staffs' : staffs, + 'projects' : projects, + 'requirement' : requirement + + + } + return render(request, 'add_templates/add-task.html', context) + + + + +def add_point_modal(request, task_id): + task = get_object_or_404(Task, task_id=task_id) + if request.method == 'POST': + text = request.POST.get('text') + point = Point( + text = text, + task = task, + status='Not Completed' + ) + point.save() + + # Redirect back to the same page + return redirect(request.META.get('HTTP_REFERER', '')) + + context = { + 'task' : task, + + } + return render(request, 'add_templates/add-point-modal.html', context) + + + + + +@login_required +def add_epic(request, project_id): + project = get_object_or_404(Project, project_id=project_id) + if request.method == 'POST': + title = request.POST.get('title') + status = request.POST.get('status') + description = request.POST.get('description') + + + project_id = request.POST.get('project') + project = get_object_or_404(Project, id=project_id) + + + start_date = request.POST.get('start_date') + end_date = request.POST.get('end_date') + + + epic = Epic( + title=title, + status=status, + project=project, + description=description, + start_date=start_date, + end_date=end_date + ) + + + epic.save() + + redirect_url = reverse('detailed-project', args=[project.project_id]) + return redirect(redirect_url) + + context = { + 'project' : project, + } + return render(request, 'add_templates/add-epic.html', context) + + + + +def add_note_modal(request, *args, **kwargs): + if request.method == 'POST': + text = request.POST.get('note_text') + color = request.POST.get('note_color') + user = request.user + date = timezone.now() + + note = Note( + text=text, + color=color, + user=user, + date=date, + ) + note.save() + + # Reload the parent page + return HttpResponse('') + return render(request, 'add_templates/add-note-modal.html') + + + +def add_daily_report(request): + user = request.user + today = date.today() + statuses = Status.objects.filter(staff=user.staffprofile, date=today) + if request.method == 'POST': + text = request.POST.get('text') + current_datetime = datetime.now() + date = datetime.now().date() + time = current_datetime.strftime("%I:%M %p") + try: + staff_profile = StaffProfile.objects.get(user=request.user) + except StaffProfile.DoesNotExist: + # Handle the case where a StaffProfile does not exist for the user + staff_profile = None + + + dailyreport = DailyReport( + text = text, + date = date, + time = time, + staff = staff_profile + ) + dailyreport.save() + + + return redirect('dailyreports') + + context = { + 'statuses': statuses, + + + } + return render(request, 'add_templates/add-daily-report.html', context) + + + + +def add_projecttype_modal(request, *args, **kwargs): + if request.method == 'POST': + name = request.POST.get('name') + projecttype = ProjectType( + name = name, + + ) + projecttype.save() + + # Reload the parent page + return HttpResponse('') + return render(request, 'add_templates/add-projecttype-modal.html') + + + +def add_staffposition_modal(request): + if request.method == 'POST': + name = request.POST.get('name') + staffposition = StaffPosition( + name = name, + + + ) + staffposition.save() + + # Reload the parent page + return HttpResponse('') + return render(request, 'add_templates/add-staffposition-modal.html') + + + +def add_businesstype_modal(request, *args, **kwargs): + if request.method == 'POST': + name = request.POST.get('name') + + + businesstype = BusinessType( + name = name, + ) + businesstype.save() + + + # Reload the parent page + return HttpResponse('') + + return render(request, 'add_templates/add-businesstype-modal.html') + + + + + +def add_reference_modal(request, *args, **kwargs): + if request.method == 'POST': + name = request.POST.get('name') + date = request.POST.get('date') + + + reference = Reference( + name = name, + date = date, + ) + reference.save() + + + # Reload the parent page + return HttpResponse('') + return render(request, 'add_templates/add-reference-modal.html') + + + + +def add_tag_modal(request, *args, **kwargs): + if request.method == 'POST': + name = request.POST.get('name') + + + tag = Tag( + name = name, + ) + tag.save() + + # Reload the parent page + return HttpResponse('') + return render(request, 'add_templates/add-tag-modal.html') + + + + + + + + + + + + diff --git a/osinaweb/osinacore/templates/.DS_Store b/osinaweb/osinacore/templates/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..9cd29b59cfcb22d35cd020943fd25b349939e74c GIT binary patch literal 10244 zcmeHM&ubGw6n>Ld-L_UrwH6U!K~N8EO{*fsORN>~YDB?bG0CRs+RaYPZd#!fa}@OE z#e;}PJ$dltAK+C`tXILmz@wh@d$X(VCfPLwwMAyi?AvVK_h#Pr-t6>Eh)B#et!W~Y zhzxX=BRg^F()fGs9W4_+ISeU)C-SL6HL8Gy|G}t-t{GY;ML- zAoW!0nI=s16;cgqguD{SBTZ` zT+4gs9a%0pvIH$Gtjr@`Sl?7rrc#il6|Wv5UzO^P?fKd42a)OP-?n{+vBMZLuICr! zO5QK}O>eH)xXPa{O6in-+!sri?8-`EWX~Dt`bFEVG!($LDp0w0*>)|tGAEm^d}A z85pH9HOWH~NF3r+sDXsAkQyE>QVGwBcw)s9LL2~YDwYrykPbShPXTtMvf;F+l3?yT zkv>MTf%kx|VSA=>)#3Ce~ zVnQ^C`B?DUPxhH!K<`O}=dPHTxAg2~lI^IU{hz9bzT8lLcC{JJ!Qbh|e523o+cjBH|mCshnQT0*R+@XSZ9I9;+U?zK&>ir<|i4Dp&e5n*Z=*<`D%W^6T? zW0jH7(Nd5xrp5C&7&ApX%JiS=x#CO7tdr%6jLxh+UD95^?{_#*ye?EP3eOdk~ta8%>>sk3Ul97~J*bd{_R#DlsX&K4r zqhlLLN@CuGVzx%xZ1I*>MCZ*dVIlD1kJ;F-w0RSpY_qnJnSE`ustDE>&46Y=GoTsJ z3~VX`eZlA^pZ}vYO8WhOQ|G7$*9>R|{w@Qee?C7yhcSWzpmQ)jYd6tvqH|-tRv;Aw z7j+yDsgC3Efsf;lptEk4B{$sXLfHx=o}m5v9|O9aE9v?lkWab6n>L-Q3+86C?cXD`2wlL4MJ5GthoS*LrNfxqu5<^gS_VsT!GVY7*_Co zZ>IK4Qn%AhKA5>EU=935 zCUPmI%w;K`w%$%Rk^)JAq(D+2DUcNS9~8hho8_S6yKkSSHYt!4c#sNkf5=d2N6yyP z>ehiqQvld~+}46?7e1nSu;bWT_W135#VeHlsjzjO6WBP;;d^X zk&F28y}H4d?c9e3}HT>rkheascknK4kvC?+c3 z|9Hdyn$n$G4wKLR@s4RT1wpLxxXgUt7={Rij4?|pMc$GdQXKQP52W966 U0qOhCd@cO_kiP#q7avmd7Zf5C_y7O^ literal 0 HcmV?d00001 diff --git a/osinaweb/templates/add_pages/add-business.html b/osinaweb/osinacore/templates/add_templates/add-business.html similarity index 97% rename from osinaweb/templates/add_pages/add-business.html rename to osinaweb/osinacore/templates/add_templates/add-business.html index 3b27f5b3..63f901eb 100644 --- a/osinaweb/templates/add_pages/add-business.html +++ b/osinaweb/osinacore/templates/add_templates/add-business.html @@ -8,7 +8,7 @@ Add Business -
+ {% csrf_token %}
diff --git a/osinaweb/templates/popup_modals/addbusinesstype-modal.html b/osinaweb/osinacore/templates/add_templates/add-businesstype-modal.html similarity index 92% rename from osinaweb/templates/popup_modals/addbusinesstype-modal.html rename to osinaweb/osinacore/templates/add_templates/add-businesstype-modal.html index 74bd0939..63c60221 100644 --- a/osinaweb/templates/popup_modals/addbusinesstype-modal.html +++ b/osinaweb/osinacore/templates/add_templates/add-businesstype-modal.html @@ -13,7 +13,7 @@ - + {% csrf_token %}

Add Business Type

diff --git a/osinaweb/templates/popup_modals/addcredentials-modal.html b/osinaweb/osinacore/templates/add_templates/add-credentials-modal.html similarity index 100% rename from osinaweb/templates/popup_modals/addcredentials-modal.html rename to osinaweb/osinacore/templates/add_templates/add-credentials-modal.html diff --git a/osinaweb/templates/add_pages/add-customer.html b/osinaweb/osinacore/templates/add_templates/add-customer.html similarity index 98% rename from osinaweb/templates/add_pages/add-customer.html rename to osinaweb/osinacore/templates/add_templates/add-customer.html index b9e32856..c365a370 100644 --- a/osinaweb/templates/add_pages/add-customer.html +++ b/osinaweb/osinacore/templates/add_templates/add-customer.html @@ -7,7 +7,7 @@

Add Customer

- + {% csrf_token %}
@@ -129,7 +129,7 @@ @@ -71,25 +70,46 @@
-
-
+ +
diff --git a/osinaweb/templates/epic-fetched-tasks.html b/osinaweb/osinacore/templates/epic-fetched-tasks.html similarity index 100% rename from osinaweb/templates/epic-fetched-tasks.html rename to osinaweb/osinacore/templates/epic-fetched-tasks.html diff --git a/osinaweb/templates/index.html b/osinaweb/osinacore/templates/index.html similarity index 98% rename from osinaweb/templates/index.html rename to osinaweb/osinacore/templates/index.html index 191fb4e3..0f2ff11e 100644 --- a/osinaweb/templates/index.html +++ b/osinaweb/osinacore/templates/index.html @@ -48,7 +48,7 @@
@@ -61,7 +61,7 @@ Notes
@@ -262,8 +262,8 @@ Status @@ -409,8 +409,8 @@ Status diff --git a/osinaweb/templates/listing_pages/business-types.html b/osinaweb/osinacore/templates/listing_pages/business-types.html similarity index 98% rename from osinaweb/templates/listing_pages/business-types.html rename to osinaweb/osinacore/templates/listing_pages/business-types.html index 624e2615..9434b5f1 100644 --- a/osinaweb/templates/listing_pages/business-types.html +++ b/osinaweb/osinacore/templates/listing_pages/business-types.html @@ -48,7 +48,7 @@
@@ -61,7 +61,7 @@ Notes @@ -129,7 +129,7 @@
diff --git a/osinaweb/templates/listing_pages/businesses.html b/osinaweb/osinacore/templates/listing_pages/businesses.html similarity index 99% rename from osinaweb/templates/listing_pages/businesses.html rename to osinaweb/osinacore/templates/listing_pages/businesses.html index c867d154..85c049f1 100644 --- a/osinaweb/templates/listing_pages/businesses.html +++ b/osinaweb/osinacore/templates/listing_pages/businesses.html @@ -49,7 +49,7 @@ @@ -62,7 +62,7 @@ Notes diff --git a/osinaweb/templates/listing_pages/customers.html b/osinaweb/osinacore/templates/listing_pages/customers.html similarity index 99% rename from osinaweb/templates/listing_pages/customers.html rename to osinaweb/osinacore/templates/listing_pages/customers.html index f8eb2e10..bb495755 100644 --- a/osinaweb/templates/listing_pages/customers.html +++ b/osinaweb/osinacore/templates/listing_pages/customers.html @@ -48,7 +48,7 @@ @@ -61,7 +61,7 @@ Notes diff --git a/osinaweb/templates/listing_pages/daily-reports.html b/osinaweb/osinacore/templates/listing_pages/daily-reports.html similarity index 99% rename from osinaweb/templates/listing_pages/daily-reports.html rename to osinaweb/osinacore/templates/listing_pages/daily-reports.html index ff049424..2fe245ca 100644 --- a/osinaweb/templates/listing_pages/daily-reports.html +++ b/osinaweb/osinacore/templates/listing_pages/daily-reports.html @@ -48,7 +48,7 @@ @@ -61,7 +61,7 @@ Notes diff --git a/osinaweb/templates/listing_pages/notes.html b/osinaweb/osinacore/templates/listing_pages/notes.html similarity index 98% rename from osinaweb/templates/listing_pages/notes.html rename to osinaweb/osinacore/templates/listing_pages/notes.html index ca6c9fa1..79b52794 100644 --- a/osinaweb/templates/listing_pages/notes.html +++ b/osinaweb/osinacore/templates/listing_pages/notes.html @@ -48,7 +48,7 @@ @@ -61,7 +61,7 @@ Notes @@ -117,7 +117,7 @@
diff --git a/osinaweb/templates/listing_pages/project-types.html b/osinaweb/osinacore/templates/listing_pages/project-types.html similarity index 98% rename from osinaweb/templates/listing_pages/project-types.html rename to osinaweb/osinacore/templates/listing_pages/project-types.html index bd62a585..ed86934c 100644 --- a/osinaweb/templates/listing_pages/project-types.html +++ b/osinaweb/osinacore/templates/listing_pages/project-types.html @@ -48,7 +48,7 @@ @@ -61,7 +61,7 @@ Notes @@ -129,7 +129,7 @@
diff --git a/osinaweb/templates/listing_pages/projects.html b/osinaweb/osinacore/templates/listing_pages/projects.html similarity index 99% rename from osinaweb/templates/listing_pages/projects.html rename to osinaweb/osinacore/templates/listing_pages/projects.html index a0a697bc..c63a81de 100644 --- a/osinaweb/templates/listing_pages/projects.html +++ b/osinaweb/osinacore/templates/listing_pages/projects.html @@ -49,7 +49,7 @@ @@ -62,7 +62,7 @@ Notes @@ -136,7 +136,7 @@
@@ -61,7 +61,7 @@ Notes @@ -128,7 +128,7 @@
diff --git a/osinaweb/templates/listing_pages/staff-positions.html b/osinaweb/osinacore/templates/listing_pages/staff-positions.html similarity index 99% rename from osinaweb/templates/listing_pages/staff-positions.html rename to osinaweb/osinacore/templates/listing_pages/staff-positions.html index 558d568d..20bdc9c7 100644 --- a/osinaweb/templates/listing_pages/staff-positions.html +++ b/osinaweb/osinacore/templates/listing_pages/staff-positions.html @@ -49,7 +49,7 @@ @@ -62,7 +62,7 @@ Notes @@ -130,7 +130,7 @@
diff --git a/osinaweb/templates/listing_pages/staffs.html b/osinaweb/osinacore/templates/listing_pages/staffs.html similarity index 99% rename from osinaweb/templates/listing_pages/staffs.html rename to osinaweb/osinacore/templates/listing_pages/staffs.html index b293e68b..17034b7e 100644 --- a/osinaweb/templates/listing_pages/staffs.html +++ b/osinaweb/osinacore/templates/listing_pages/staffs.html @@ -49,7 +49,7 @@ @@ -62,7 +62,7 @@ Notes diff --git a/osinaweb/templates/listing_pages/tags.html b/osinaweb/osinacore/templates/listing_pages/tags.html similarity index 98% rename from osinaweb/templates/listing_pages/tags.html rename to osinaweb/osinacore/templates/listing_pages/tags.html index bc971fb4..752101ac 100644 --- a/osinaweb/templates/listing_pages/tags.html +++ b/osinaweb/osinacore/templates/listing_pages/tags.html @@ -48,7 +48,7 @@ @@ -61,7 +61,7 @@ Notes @@ -129,7 +129,7 @@
diff --git a/osinaweb/templates/listing_pages/tasks.html b/osinaweb/osinacore/templates/listing_pages/tasks.html similarity index 98% rename from osinaweb/templates/listing_pages/tasks.html rename to osinaweb/osinacore/templates/listing_pages/tasks.html index 36824c31..1dc3c70f 100644 --- a/osinaweb/templates/listing_pages/tasks.html +++ b/osinaweb/osinacore/templates/listing_pages/tasks.html @@ -47,7 +47,7 @@ @@ -60,7 +60,7 @@ Notes @@ -143,7 +143,7 @@
diff --git a/osinaweb/templates/.DS_Store b/osinaweb/osinacore/templates/popup_modals/.DS_Store similarity index 79% rename from osinaweb/templates/.DS_Store rename to osinaweb/osinacore/templates/popup_modals/.DS_Store index 1ee323e753aa30e4b4d91f7c0f8d7b96b7dce22b..4a373ee22c516046b04a8e6e22a5fc6057901dd9 100644 GIT binary patch literal 6148 zcmeHKOHRWu5FM8;Dv(eCAr)0fxj-v%gHV+PYc4>46j0h!Z7RerC*ca5hQqLeH{+qC zDG0Mc2xcn#IgaOb=Glp3B66MO@Pw#NL^Tw~>NctmjPG;Vu!{DupA(K5%_*f@8qr{5 zv~`#QroeAgfS=ta^=OD+i;B;0hU+Pw<_u4Biza9dF)pDtU88S8$$63v`bpXc1HV2_ zQQ9wJXc0A5tV>#eV~#ol%be~*_}p=c?@0LuU>G5m5u(fJMq*k7F+P_V_m%MqEJ;|F zm2rt)jf=+Kya4wT?L{a28gtphv_6{?cf`^p}(xmc)e2Pp>nWY~5dDdEB zn`&15aFuv1xZOgI2QpKfT_Vwit*FNmO9L^@WEJ`~$?NGo(l1viuc)=Ckovzi?AdI! z9gkL<0;Yf|uu_2E4-pDuteAV0R|hIN0syP%7DJmq2G}Q3j1_Z_xC3+E73f`^9xGw9 zw*7R~y5F%yHfN0NwT&|i57W^SxV2~imK_SIZ{;b@cBe<1d>{8le5cIcjmErZ%SiIS zX8w7wZ-V>4%A9WQY;h*%>|3z@aU?ZPozrCdU2K9Uy(^v_I+a?V(+0J{w@cxE7&Y`7 z^CrRTyY(rJQ?NE6D(fSba|3II;`U*Bv{~o!g|Rl)`ORu)%ShCm;c~DxAw}TL>@78C z4iV=YH80{miO_~bgahCW*t=OGYOnY++ zDPzv%6mSasZw2`I;Gr@48e@g>(Sc5W0symcOT)2zt^z%F0DX?8r2 + + + + + Osina + + + + + + + + + {% csrf_token %} +

Add User Story

+ +
+ +
+ +
+ +
+ + + \ No newline at end of file diff --git a/osinaweb/osinacore/templates/popup_modals/addcredentials-modal.html b/osinaweb/osinacore/templates/popup_modals/addcredentials-modal.html new file mode 100644 index 00000000..0f4bff0f --- /dev/null +++ b/osinaweb/osinacore/templates/popup_modals/addcredentials-modal.html @@ -0,0 +1,39 @@ +{% load static %} + + + + + + + + Osina + + + + + + + +
+

Add Credential

+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+
+ + + \ No newline at end of file diff --git a/osinaweb/osinacore/templates/popup_modals/addfile-modal.html b/osinaweb/osinacore/templates/popup_modals/addfile-modal.html new file mode 100644 index 00000000..ff6dd06a --- /dev/null +++ b/osinaweb/osinacore/templates/popup_modals/addfile-modal.html @@ -0,0 +1,86 @@ +{% load static %} + + + + + + + + Osina + + + + + + + +
+

Add File

+ +
+
+ +
+ + + +
+
+ + Upload + Document(s) + +
+
+ +
+ +
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/osinaweb/templates/popup_modals/addtag-modal.html b/osinaweb/osinacore/templates/popup_modals/addtag-modal.html similarity index 100% rename from osinaweb/templates/popup_modals/addtag-modal.html rename to osinaweb/osinacore/templates/popup_modals/addtag-modal.html diff --git a/osinaweb/osinacore/templates/popup_modals/addtime-modal.html b/osinaweb/osinacore/templates/popup_modals/addtime-modal.html new file mode 100644 index 00000000..1e2375de --- /dev/null +++ b/osinaweb/osinacore/templates/popup_modals/addtime-modal.html @@ -0,0 +1,33 @@ +{% load static %} + + + + + + + Osina + + + + + + + +
+

Add Timeline

+ +
+ + + +
+ +

Value in minutes

+ +
+ +
+
+ + \ No newline at end of file diff --git a/osinaweb/templates/popup_modals/showpoints-modal.html b/osinaweb/osinacore/templates/popup_modals/showpoints-modal.html similarity index 100% rename from osinaweb/templates/popup_modals/showpoints-modal.html rename to osinaweb/osinacore/templates/popup_modals/showpoints-modal.html diff --git a/osinaweb/templates/popup_modals/status-on-mobile-modal.html b/osinaweb/osinacore/templates/popup_modals/status-on-mobile-modal.html similarity index 100% rename from osinaweb/templates/popup_modals/status-on-mobile-modal.html rename to osinaweb/osinacore/templates/popup_modals/status-on-mobile-modal.html diff --git a/osinaweb/templates/popup_modals/timeline-modal.html b/osinaweb/osinacore/templates/popup_modals/timeline-modal.html similarity index 100% rename from osinaweb/templates/popup_modals/timeline-modal.html rename to osinaweb/osinacore/templates/popup_modals/timeline-modal.html diff --git a/osinaweb/templates/popup_modals/update-status-modal.html b/osinaweb/osinacore/templates/popup_modals/update-status-modal.html similarity index 100% rename from osinaweb/templates/popup_modals/update-status-modal.html rename to osinaweb/osinacore/templates/popup_modals/update-status-modal.html diff --git a/osinaweb/templates/project-open-tasks.html b/osinaweb/osinacore/templates/project-open-tasks.html similarity index 100% rename from osinaweb/templates/project-open-tasks.html rename to osinaweb/osinacore/templates/project-open-tasks.html diff --git a/osinaweb/templates/recent-activities.html b/osinaweb/osinacore/templates/recent-activities.html similarity index 100% rename from osinaweb/templates/recent-activities.html rename to osinaweb/osinacore/templates/recent-activities.html diff --git a/osinaweb/templates/recent-status.html b/osinaweb/osinacore/templates/recent-status.html similarity index 100% rename from osinaweb/templates/recent-status.html rename to osinaweb/osinacore/templates/recent-status.html diff --git a/osinaweb/templates/user-recent-activities.html b/osinaweb/osinacore/templates/user-recent-activities.html similarity index 100% rename from osinaweb/templates/user-recent-activities.html rename to osinaweb/osinacore/templates/user-recent-activities.html diff --git a/osinaweb/osinacore/urls.py b/osinaweb/osinacore/urls.py index d113a59c..c31367fb 100644 --- a/osinaweb/osinacore/urls.py +++ b/osinaweb/osinacore/urls.py @@ -14,12 +14,15 @@ Including another URLconf 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) """ -from django.urls import path +from django.urls import path, include from osinacore import views from django.conf.urls.static import static from django.conf import settings urlpatterns = [ + path('add/', include('osinacore.add.urls')), + + path('login', views.signin, name='signin'), path('logout/', views.signout, name='signout'), path('', views.home, name='home'), @@ -27,25 +30,16 @@ urlpatterns = [ path('my-tasks/', views.my_tasks, name='my-tasks'), path('my-notes/', views.my_notes, name='my-notes'), path('customers/', views.customers, name='customers'), - path('addcustomer/', views.add_customer, name='addcustomer'), - path('add-business/', views.addbusiness, name='addbusiness'), path('businesses//', views.businessdetails, name='businessdetails'), path('businesses/', views.businesses, name='businesses'), - path('addstaff/', views.addstaff, name='adduser'), path('staffs/', views.staffs, name='users'), path('staffpositions/', views.staff_positions, name='staffpositions'), - path('createproject/', views.create_project, name='createproject'), - path('createepic//', views.create_epic, name='createepic'), - path('createtask/', views.create_task, name='createtask'), - path('createtask//', views.createtask_project, name='createtaskproject'), - path('createuserstorytask//', views.create_user_story_task, name='createuserstorytask'), - path('createtaskepic/', views.createtask_epic, name='createtaskepic'), path('projecttypes/', views.project_types, name='projecttypes'), path('businesstypes/', views.business_types, name='businesstypes'), path('references/', views.references, name='references'), path('tags/', views.tags, name='tags'), path('dailyreports/', views.daily_reports, name='dailyreports'), - path('add-dailyreport/', views.add_daily_report, name='adddailyreport'), + @@ -67,23 +61,12 @@ urlpatterns = [ #Modals urls - path('add-status/', views.add_status_modal, name='addstatus'), - path('add-note/', views.add_note_modal, name='addnote'), - path('add-project-note//', views.add_project_note_modal, name='addprojectnote'), - path('add-file/', views.add_file_modal, name='addfile'), path('add-user-story//', views.add_user_story_modal, name='adduserstory'), - path('add-credentials/', views.add_credentials_modal, name='addcredentials'), path('update-status//', views.update_status_modal, name='updatestatus'), - path('add-point//', views.add_point_modal, name='addpoint'), path('show-points//', views.show_points_modal, name='showpoints'), - path('add-time/', views.add_time_modal, name='addtime'), path('timeline/', views.timeline_modal, name='timeline'), - path('add-projecttype/', views.add_projecttype_modal, name='addprojecttype'), - path('add-businesstype/', views.add_businesstype_modal, name='addbusinesstype'), - path('add-reference/', views.add_reference_modal, name='addreference'), - path('add-tag/', views.add_tag_modal, name='addtag'), path('add-businesscustomer/', views.add_business_modal, name='addbusinesscustomer'), - path('add-staffposition/', views.staff_position_modal, name='addstaffposition'), + path('statusmobilemodal/', views.status_mobile_modal, name='statusmobilemodal'), path('userrecentativities/', views.user_recent_activities_modal, name='userrecentativities'), @@ -101,24 +84,7 @@ urlpatterns = [ path('deletetaskpointmodal///', views.delete_task_point_modal, name='deletetaskpointmodal'), - #Save Urls - path('save_note/', views.save_note, name='save_note'), - path('save_project_note/', views.save_project_note, name='save_project_note'), - path('save_project/', views.save_project, name='save_project'), - path('save_epic/', views.save_epic, name='save_epic'), - path('save_task/', views.save_task, name='save_task'), - path('save_business/', views.save_business, name='save_business'), - path('save_business_modal/', views.save_business_modal, name='save_business_modal'), - path('save_customer/', views.save_customer, name='save_customer'), - path('save_staff/', views.save_staff, name='save_staff'), - path('save_status/', views.save_status, name='save_status'), - path('save_projecttype/', views.save_projecttype, name='save_projecttype'), - path('save_businesstype/', views.save_businesstype, name='save_businesstype'), - path('save_reference/', views.save_reference, name='save_reference'), - path('save_tag/', views.save_tag, name='save_tag'), - path('save_point/', views.save_point, name='save_point'), - path('save_staffposition/', views.save_staffposition, name='save_staffposition'), - path('save_dailyreport/', views.save_dailyreport, name='save_dailyreport'), + #Edit Pages diff --git a/osinaweb/osinacore/views.py b/osinaweb/osinacore/views.py index 40531d29..08b5b4e4 100644 --- a/osinaweb/osinacore/views.py +++ b/osinaweb/osinacore/views.py @@ -11,7 +11,6 @@ from django.db.models import Q from django.http import JsonResponse from .models import Task, Epic from datetime import date -from django.http import HttpResponseRedirect from django.template.loader import render_to_string from .custom_context import calculate_time_ago @@ -345,184 +344,15 @@ def detailed_task(request, task_id): #Add Pages -@login_required -def createtask_project(request, project_id): - project = get_object_or_404(Project, project_id=project_id) - epics_of_my_project = Epic.objects.filter(project=project) - staffs = StaffProfile.objects.all().order_by('-id') - context = { - - 'project' : project, - 'epics_of_my_project' : epics_of_my_project, - 'staffs' : staffs, - - } - return render(request, 'add_pages/createtask-project.html', context) - - -@login_required -def create_user_story_task(request, requirement_id): - requirement = get_object_or_404(ProjectRequirement, id=requirement_id) - members_list = list(requirement.project.members.all()) - - context = { - 'requirement' : requirement, - 'members_list' : members_list, - - - } - return render(request, 'add_pages/create-user-story-task.html', context) - - -@login_required -def create_project(request): - staffs = StaffProfile.objects.all().order_by('-id') - project_types = ProjectType.objects.all() - customers = CustomerProfile.objects.all().order_by('-id') - context = { - 'staffs' : staffs, - 'project_types' : project_types, - 'customers' : customers, - - } - return render(request, 'add_pages/create-project.html', context) - -@login_required -def create_epic(request, project_id): - project = get_object_or_404(Project, project_id=project_id) - - context = { - 'project' : project, - - - } - return render(request, 'add_pages/create-epic.html', context) - -@login_required -def create_task(request): - context = { - - } - return render(request, 'add_pages/create-task.html', context) - - -@login_required -def createtask_epic(request): - context = { - - } - return render(request, 'add_pages/createtask-epic.html', context) - -@login_required -def add_customer(request): - businesses = Business.objects.all().order_by('-id') - references = Reference.objects.all().order_by('-id') - business_types = BusinessType.objects.all().order_by('-id') - - context = { - 'businesses' : businesses, - 'references' :references, - 'business_types' : business_types - - } - return render(request, 'add_pages/add-customer.html', context) - - -@login_required -def addbusiness(request): - business_types = BusinessType.objects.all().order_by('-id') - - context = { - 'business_types': business_types, - } - - return render(request, 'add_pages/add-business.html', context) - - - -@login_required -def addstaff(request): - - staffpositions = StaffPosition.objects.all().order_by('-id') - - context = { - - 'staffpositions' : staffpositions, - - - } - return render(request, 'add_pages/add-staff.html', context) - - - - -def add_daily_report(request): - user = request.user - today = date.today() - statuses = Status.objects.filter(staff=user.staffprofile, date=today) - - context = { - 'statuses': statuses, - - - } - return render(request, 'add_pages/add-daily-report.html', context) - - - - # Modals views -def add_note_modal(request, *args, **kwargs): - context = { - } - return render(request, 'popup_modals/addnote-modal.html', context) -def add_project_note_modal(request, project_id): - project = get_object_or_404(Project, project_id=project_id) - context = { - 'project' : project - } - - return render(request, 'popup_modals/add-project-note-modal.html', context) - - -def add_status_modal(request, *args, **kwargs): - context = { - - } - return render(request, 'popup_modals/addstatus-modal.html', context) - -def add_file_modal(request, *args, **kwargs): - context = { - - } - return render(request, 'popup_modals/addfile-modal.html', context) - -def add_credentials_modal(request, *args, **kwargs): - context = { - - } - return render(request, 'popup_modals/addcredentials-modal.html', context) - - -def add_point_modal(request, task_id): - task = get_object_or_404(Task, task_id=task_id) - context = { - 'task' : task, - - } - return render(request, 'popup_modals/addpoint-modal.html', context) -def add_time_modal(request, *args, **kwargs): - context = { - } - return render(request, 'popup_modals/addtime-modal.html', context) def show_points_modal(request, task_id): @@ -561,35 +391,6 @@ def update_status_modal(request, *, task_id): return render(request, 'popup_modals/update-status-modal.html', context) -def add_projecttype_modal(request, *args, **kwargs): - context = { - - } - return render(request, 'popup_modals/addprojecttype-modal.html', context) - - -def add_businesstype_modal(request, *args, **kwargs): - context = { - - } - return render(request, 'popup_modals/addbusinesstype-modal.html', context) - - - -def add_reference_modal(request, *args, **kwargs): - context = { - - } - return render(request, 'popup_modals/addreference-modal.html', context) - - - -def add_tag_modal(request, *args, **kwargs): - context = { - - } - return render(request, 'popup_modals/addtag-modal.html', context) - def add_business_modal(request, *args, **kwargs): @@ -628,13 +429,6 @@ def add_user_story_modal(request, project_id): -def staff_position_modal(request): - - context = { - - - } - return render(request, 'popup_modals/add-staffposition-modal.html', context) def status_mobile_modal (request, *args, **kwargs): @@ -674,540 +468,7 @@ def user_recent_activities_modal(request, user_id): - - - - - - - - -#Save Functions -@login_required -def save_note(request): - if request.method == 'POST': - text = request.POST.get('note_text') - color = request.POST.get('note_color') - user = request.user - date = timezone.now() - - note = Note( - text=text, - color=color, - user=user, - date=date, - ) - note.save() - - # Reload the parent page - return HttpResponse('') - - return render(request, 'addnote-modal.html') - - -def save_project_note(request): - - if request.method == 'POST': - text = request.POST.get('note_text') - color = request.POST.get('note_color') - user = request.user - date = timezone.now() - - project_id = request.POST.get('project') - project = get_object_or_404(Project, id=project_id) - - note = Note( - text=text, - color=color, - user=user, - date=date, - project=project, - ) - note.save() - - return HttpResponse('') - - return render(request, 'add-project-note-modal.html') - - - -@login_required -def save_project(request): - if request.method == 'POST': - name = request.POST.get('name') - customer_username = request.POST.get('customer') - manager_username = request.POST.get('manager') - project_type = request.POST.getlist('project_type') - details = request.POST.get('details') - members_usernames = request.POST.getlist('members') - status = request.POST.get('status') - start_date = request.POST.get('start_date') - end_date = request.POST.get('end_date') - - try: - customer_profile = CustomerProfile.objects.get(user__username=customer_username) - manager_profile = StaffProfile.objects.get(user__username=manager_username) - members_profiles = StaffProfile.objects.filter(user__username__in=members_usernames) - except (CustomerProfile.DoesNotExist, StaffProfile.DoesNotExist): - # Handle the case where customer_profile or manager_profile is not found - pass - - # Create and save the project - project = Project( - name=name, - customer=customer_profile, - manager=manager_profile, - details=details, - status=status, - start_date=start_date, - end_date=end_date, - ) - project.save() - - project.project_type.set(project_type) - project.members.set(members_profiles) - - # Save project requirements - requirements = request.POST.getlist('requirements') - for requirement_content in requirements: - if requirement_content: - requirement = ProjectRequirement(content=requirement_content, project=project, added_by=request.user) - requirement.save() - - return redirect('my-projects') - - - -@login_required -def save_epic(request): - if request.method == 'POST': - title = request.POST.get('title') - status = request.POST.get('status') - description = request.POST.get('description') - - - project_id = request.POST.get('project') - project = get_object_or_404(Project, id=project_id) - - - start_date = request.POST.get('start_date') - end_date = request.POST.get('end_date') - - - epic = Epic( - title=title, - status=status, - project=project, - description=description, - start_date=start_date, - end_date=end_date - ) - - - epic.save() - - # Redirect to the detailed project page - redirect_url = reverse('detailed-project', args=[project.project_id]) - return redirect(redirect_url) - - - -@login_required -def save_task(request): - if request.method == 'POST': - name = request.POST.get('name') - status = request.POST.get('status') - extra = request.POST.get('extra') - description = request.POST.get('description') - start_date = request.POST.get('start_date') - end_date = request.POST.get('end_date') - requirement_id = request.POST.get('requirement') - - if requirement_id: - requirement = get_object_or_404(ProjectRequirement, id =requirement_id) - - else: - requirement = None - - - project_id = request.POST.get('project') - project = get_object_or_404(Project, id=project_id) - - epic_id = request.POST.get('epic') - epic = get_object_or_404(Epic, id=epic_id) - - - assigned_to_id = request.POST.get('assigned_to') - assigned_to = get_object_or_404(StaffProfile, id=assigned_to_id) - - task = Task( - name=name, - status=status, - project=project, - epic=epic, - extra=extra, - description=description, - start_date=start_date, - end_date=end_date, - assigned_to = assigned_to, - requirement = requirement, - - ) - - # Save the Task object to the database - task.save() - - - # Redirect to the task detailed page - task_details_url = reverse('detailed-task', args=[task.task_id]) - if requirement: - return redirect('detailed-project', project_id=project.project_id) - else: - return HttpResponseRedirect(task_details_url) - - - - -@login_required -def save_business(request): - if request.method == 'POST': - name = request.POST.get('name') - email= request.POST.get('email') - financial_number = request.POST.get('financial_number') - phone_number = request.POST.get('phone_number') - vat = request.POST.get('vat') - if vat == 'true': - vat = True - else: - vat = False - commercial_registration = request.POST.get('commercial_registration') - website = request.POST.get('website') - logo = request.FILES.get('logo') - - business_type_id = request.POST.get('type') - - business_type = get_object_or_404(BusinessType, id=business_type_id) - - business = Business( - name = name, - email = email, - financial_number = financial_number, - vat = vat, - commercial_registration = commercial_registration, - website = website, - type=business_type, - logo = logo, - phone_number = phone_number, - ) - business.save() - - return redirect(businesses) - - -@login_required -def save_business_modal(request): - if request.method == 'POST': - name = request.POST.get('name') - email = request.POST.get('email') - financial_number = request.POST.get('financial_number') - phone_number = request.POST.get('phone_number') - vat = request.POST.get('vat') - if vat == 'true': - vat = True - else: - vat = False - commercial_registration = request.POST.get('commercial_registration') - website = request.POST.get('website') - logo = request.FILES.get('logo') - - business_type_id = request.POST.get('type') - business_type = get_object_or_404(BusinessType, id=business_type_id) - - business = Business( - name=name, - email=email, - financial_number=financial_number, - vat=vat, - commercial_registration=commercial_registration, - website=website, - type=business_type, - logo=logo, - phone_number=phone_number, - ) - business.save() - - - businesses = Business.objects.all() - - updated_options = [{'id': business.id, 'name': business.name} for business in businesses] - - - return JsonResponse(updated_options, safe=False) - - return render(request, 'addbusiness-modal.html') - - -def save_customer(request): - if request.method == 'POST': - email = request.POST.get('email').lower() - first_name = request.POST.get('first_name') - last_name = request.POST.get('last_name') - business_id = request.POST.get('business') - business = get_object_or_404(Business, id=business_id) - username = f"{first_name.lower()}{last_name.lower()}" - original_username = username - counter = 1 - - while User.objects.filter(username=username).exists(): - username = f"{original_username.lower()}{counter}" - counter += 1 - - user = User.objects.create_user( - username=username, - email=email, - password=request.POST.get('password2') - ) - user.first_name = first_name.lower().capitalize() - user.last_name = last_name.lower().capitalize() - user.save() - - - referenceid = request.POST.get('referenceid') - reference = get_object_or_404(Reference, id=referenceid) - - CustomerProfile.objects.create( - user=user, - mobile_number = request.POST.get('mobile_number'), - personal_website = request.POST.get('personal_website'), - status = request.POST.get('status'), - reference = reference, - business = business, - ) - return redirect('customers') - - - -def save_staff(request): - if request.method == 'POST': - email = request.POST.get('email').lower() - first_name = request.POST.get('first_name') - last_name = request.POST.get('last_name') - username = f"{first_name.lower()}{last_name.lower()}" - original_username = username - counter = 1 - - while User.objects.filter(username=username).exists(): - username = f"{original_username.lower()}{counter}" - counter += 1 - - user = User.objects.create_user( - username=username, - email=email, - password= request.POST.get('password2') - ) - user.first_name = first_name.lower().capitalize() - user.last_name = last_name.lower().capitalize() - user.save() - - staff_positionid = request.POST.get('staff_position') - staff_position = get_object_or_404(StaffPosition, id=staff_positionid) - - StaffProfile.objects.create( - user=user, - image = request.FILES.get('image'), - mobile_number = request.POST.get('mobile_number'), - active = request.POST.get('active'), - intern = request.POST.get('intern'), - staff_position = staff_position, - ) - return redirect('users') - - - -@login_required -def save_status(request): - if request.method == 'POST': - text = request.POST.get('text') - current_datetime = datetime.now() - date = datetime.now().date() - time = current_datetime.strftime("%I:%M %p") - - try: - staff_profile = StaffProfile.objects.get(user=request.user) - except StaffProfile.DoesNotExist: - # Handle the case where a StaffProfile does not exist for the user - staff_profile = None - - status = Status( - text=text, - staff=staff_profile, - date=date, - time = time, - ) - status.save() - - # Reload the parent page - return HttpResponse('') - - return render(request, 'addstatus-modal.html') - - - -@login_required -def save_projecttype(request): - if request.method == 'POST': - name = request.POST.get('name') - - - projecttype = ProjectType( - name = name, - - ) - projecttype.save() - - - # Reload the parent page - return HttpResponse('') - - return redirect('projecttypes') - - -@login_required -def save_businesstype(request): - if request.method == 'POST': - name = request.POST.get('name') - - - businesstype = BusinessType( - name = name, - ) - businesstype.save() - - - # Reload the parent page - return HttpResponse('') - - return redirect('businesstypes') - - -@login_required -def save_reference(request): - if request.method == 'POST': - name = request.POST.get('name') - date = request.POST.get('date') - - - reference = Reference( - name = name, - date = date, - - ) - reference.save() - - - # Reload the parent page - return HttpResponse('') - - return redirect('references') - - - -@login_required -def save_tag(request): - if request.method == 'POST': - name = request.POST.get('name') - - - - tag = Tag( - name = name, - - - ) - tag.save() - - # Reload the parent page - return HttpResponse('') - - return redirect('tags') - - -@login_required -def save_staffposition(request): - if request.method == 'POST': - name = request.POST.get('name') - - - - staffposition = StaffPosition( - name = name, - - - ) - staffposition.save() - - # Reload the parent page - return HttpResponse('') - - return redirect('staffpositions') - - - - -@login_required -def save_point(request): - if request.method == 'POST': - text = request.POST.get('text') - task = request.POST.get('task') - - taskobj = get_object_or_404(Task, id=task) - - - point = Point( - text = text, - task = taskobj, - status='Not Completed' - ) - point.save() - - # Redirect back to the same page - return redirect(request.META.get('HTTP_REFERER', '')) - - - return render(request, 'addpoint-modal.html') - - - -@login_required -def save_dailyreport(request): - if request.method == 'POST': - text = request.POST.get('text') - current_datetime = datetime.now() - date = datetime.now().date() - time = current_datetime.strftime("%I:%M %p") - try: - staff_profile = StaffProfile.objects.get(user=request.user) - except StaffProfile.DoesNotExist: - # Handle the case where a StaffProfile does not exist for the user - staff_profile = None - - - dailyreport = DailyReport( - text = text, - date = date, - time = time, - staff = staff_profile - ) - dailyreport.save() - - - return redirect('dailyreports') - - - - - # EDIT TEMPLATES @@ -1294,12 +555,14 @@ def edit_task(request, task_id): if request.method == 'POST': task.name = request.POST.get('name') - # Convert project ID to a Project instance project_id = request.POST.get('project') project = get_object_or_404(Project, id=project_id) task.project = project - - # Convert epic ID to an Epic instance + + + task.extra = request.POST.get('extra') + + epic_id = request.POST.get('epic') epic = get_object_or_404(Epic, id=epic_id) task.epic = epic diff --git a/osinaweb/osinaweb/__pycache__/settings.cpython-310.pyc b/osinaweb/osinaweb/__pycache__/settings.cpython-310.pyc index 2b979d854a09a3725d6a87aa7fdc144f2d8adf1b..3545a6892d258bce166ba5c380d5e985e944ff8c 100644 GIT binary patch delta 250 zcmaDO@?S(dpO=@50SHXq{YtIkV_>|Dp6^M6tOu>nT$~)DdH&-KsDki zl3-E_OiE`mrn5werpQEzrN~B!r?5py0I_6>T$B{tCi#U-KvSht6ryBO#bMSfE@X<5 zO;L)HOJNRX&{W?QK#|VmIh<1% KWhNVPSpxtB{y9hh delta 239 zcmew_@$H4Fy#6bpZK#l_t7eAY*om`*Jn8KFAm(GyFzlbrD zF-2ewOFCneP>NubaEefha4LI>h%`fr=p3d@#wd{#u@rHj8nF}!FewQpr7{`QS)xQ! zq@%=AWTM1V*rFtWSTaR6N-C8(OJIQ@&LVNq&;~(=M+Z1$u3;h E0KuF$q5uE@ diff --git a/osinaweb/osinaweb/settings.py b/osinaweb/osinaweb/settings.py index 56de931c..109622dc 100644 --- a/osinaweb/osinaweb/settings.py +++ b/osinaweb/osinaweb/settings.py @@ -63,7 +63,7 @@ ROOT_URLCONF = 'osinaweb.urls' TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', - 'DIRS': [os.path.join(BASE_DIR, 'templates')], + 'DIRS': [os.path.join(BASE_DIR, 'templates'), os.path.join(BASE_DIR, 'osinacore', 'templates'),], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ diff --git a/osinaweb/templates/add_pages/create-task.html b/osinaweb/templates/add_pages/create-task.html deleted file mode 100644 index 1e62e0eb..00000000 --- a/osinaweb/templates/add_pages/create-task.html +++ /dev/null @@ -1,129 +0,0 @@ -{% extends "main.html" %} -{%load static%} -{% block content %} - - - -
-
-

- Create Task -

- -
-
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- -
-
- - Upload - Document(s) - -
-
-
- -
- -
-
-
-
- - - - - - - - - - - - - -{% endblock content %} \ No newline at end of file diff --git a/osinaweb/templates/add_pages/create-user-story-task.html b/osinaweb/templates/add_pages/create-user-story-task.html deleted file mode 100644 index 9fdb0a73..00000000 --- a/osinaweb/templates/add_pages/create-user-story-task.html +++ /dev/null @@ -1,140 +0,0 @@ -{% extends "main.html" %} -{%load static%} -{% block content %} - - - -
-
-

- Create Task for {{requirement.content}} -

- -
- {% csrf_token %} -
-
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- -
-
- - Upload - Document(s) - -
-
-
- -
- -
- -
-
-
- - - - - - - - - - - - -{% endblock content %} \ No newline at end of file diff --git a/osinaweb/templates/add_pages/createtask-epic.html b/osinaweb/templates/add_pages/createtask-epic.html deleted file mode 100644 index 036a21d6..00000000 --- a/osinaweb/templates/add_pages/createtask-epic.html +++ /dev/null @@ -1,128 +0,0 @@ -{% extends "main.html" %} -{%load static%} -{% block content %} - - - -
-
-

- Create Task -

- -
-
- - -
- - -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- -
-
- - Upload - Document(s) - -
-
-
- -
- -
-
-
-
- - - - - - - - - - - - - -{% endblock content %} \ No newline at end of file diff --git a/osinaweb/templates/popup_modals/addpoint-modal.html b/osinaweb/templates/popup_modals/addpoint-modal.html deleted file mode 100644 index 7ca87ef5..00000000 --- a/osinaweb/templates/popup_modals/addpoint-modal.html +++ /dev/null @@ -1,90 +0,0 @@ -{% load static %} - - - - - - - - Osina - - - - - - - -
- {% csrf_token %} -

Add Point

- -
- -
- - -

- -

- -
- -
- -
- -
- - - - -
- - - \ No newline at end of file