From 7299a5cad31723d40828435e2f6bc2c2c58eb7a0 Mon Sep 17 00:00:00 2001 From: nataly Date: Thu, 9 Nov 2023 14:20:05 +0200 Subject: [PATCH] Refresh status and user activities container --- osinaweb/db.sqlite3 | Bin 593920 -> 593920 bytes .../custom_context.cpython-311.pyc | Bin 4710 -> 4710 bytes .../__pycache__/views.cpython-311.pyc | Bin 47026 -> 50558 bytes osinaweb/osinacore/custom_context.py | 2 + osinaweb/osinacore/views.py | 68 +++++++++++++++++- .../osinaweb/__pycache__/urls.cpython-311.pyc | Bin 9915 -> 10199 bytes osinaweb/osinaweb/urls.py | 6 +- osinaweb/static/js/get-updated-last-status.js | 13 ++++ .../static/js/get-updated-user-activity.js | 13 ++++ osinaweb/static/js/reload-script.js | 17 ----- osinaweb/templates/index.html | 46 +----------- osinaweb/templates/main.html | 26 +++---- osinaweb/templates/recent-activities.html | 41 +++++++++++ osinaweb/templates/recent-status.html | 15 ++++ 14 files changed, 167 insertions(+), 80 deletions(-) create mode 100644 osinaweb/static/js/get-updated-last-status.js create mode 100644 osinaweb/static/js/get-updated-user-activity.js delete mode 100644 osinaweb/static/js/reload-script.js create mode 100644 osinaweb/templates/recent-activities.html create mode 100644 osinaweb/templates/recent-status.html diff --git a/osinaweb/db.sqlite3 b/osinaweb/db.sqlite3 index 2aa2545b07cb79407dd31f9b34c4bc225e444682..7ab556cc47eadc9909906a8cb48dd93746373d68 100644 GIT binary patch delta 1151 zcmah{OH30{6rE3J`li;R0vonT5+ff|6s)oU1^hsvA3!JqRVr?XB(joV zChD$rD}MO4bE?p_H0?1TR!IdDoM@@}pIEqPVN#95lALH)Plm6bZVc2b@#fL^*+8&8Ss(6A#^uxX zzSg!ALQSu?V=NXJJC$q*j>@8}2$CfH+reb*42#UF*Uo@fxs*adumFMwqpXtUX1g3e z**lI`_TP>PJ-PtiGLq2E5&2G%a1w>FXm}(Pj-DSJzS0|y@n_?C+f_urB&(vxHwE1h z82ZK(I*gg1(N$LRH9=1dHZ6g}`r>m?%a(h35n(YVjE54T{u@%=;K0@XNFow8^GRw| z75b|?Uw~>dvPhKV9w7_lt z?lp@|vH8@>?Wa~UTDdXnaIKxr{(&)ayHWs?FW2SdVDv4O)^u!KK^-<)5H?=M>~-$tI#e1+T7HgKF}1v)N@Nhf`J zz-|tu?HjjoII-#JW^yt}D>5=DGRWp7mL%p>8iwZ=WoPE4EBNP085tNE>lzy98X6mz zTNxNB1Z-E_%i+Knw17cSRGpCl2-1MSFJCtc%@8A;h8QRW`10Ll5R``KhuEo=G5!53 zR)u=FJ-$Gr6`)Ge(^85PQ-HRVC^+Zm7UZOsq^3wor*Sesolpz}Xp*ULNr?MUbf&;1 z(RJFVNXaDweFAYBc6*cHx-pHOK5;*X4x3{FCxf%%^fM1w6{auP&mqZd4h*;d`#D$* zm~B}_fT@6^8W?qxSeUgZhfe=LlS6U4#aE6qT+9X>54N&%CNcpfE7+zNY-MEG{)B^5 Gh8+Nt1i8on diff --git a/osinaweb/osinacore/__pycache__/custom_context.cpython-311.pyc b/osinaweb/osinacore/__pycache__/custom_context.cpython-311.pyc index a24bf961d26a75775e245fbad82ddad135c96fd3..afe8e2ca56cbec0c0d7c97100d57b3f3018d6d60 100644 GIT binary patch delta 22 ccmaE+@=S$yIWI340}!m<@004bkvCEZ08b1CcK`qY delta 22 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 BQ?>vA delta 10335 zcmcIqeRP!7nV&bw>k+RL}*Ctsm>GrE1ma@z~v-deq%^*Ul*wx7}Urv6Xgv)WvG|`91G^G4H_X zKbvEJ+YJ(Ss~~ETj#_Ci zCVi@?&m?y$g{x=jMpRQ@iH=%B)KVSQEZ^6QRnKY3yE5$qt+3%{Go)x z)$?>+4b)Ykqc#$?Qb%1RClU(Bo2YNTu5U3>t98^RM6J)%S$E**7%sNFj1AW_%L_N2nq8+3g)QeTgbx{atC zb=2*0I;pU02le&o`feiXCLQ%=qHfkvZz1Xyd71R-*Y#PcZ>x^Flc)nas!fg>3uo`5 zz8iFXL-rfD8qC{dz<9y`aq=Z4*+iK^%#!b=-l-JJjcFaZB_L>2v`Xd4G_SFWn)&{` z^c$3wXquBmDLQ8ZkcdPQsEVkde^iB_OjHsEQdH-N$2;Z|HRzX5W-Lrs^XQaM`SKa%&6GR~T=qW(b2X5qcnG2{~~@GH^ga*36g*8<1|w4o!_ z?o@qF4~g1=Ks@^7?`FJ3Dt%B~ zAdj~h{qGd?Daj3But?6Dxxg0IP~?LM?L;>qq8${|)G@}Yvk_gaiIG|nMFe*McF8j{ zAC1VD+lnrB#|U9db*%fY#hN=9oMCFpBa+@QvR;A zH>}yE+1EAtrnt-kS$3P#b-PtKM!mwPid$&Z6J#`W>?nI)?w#9tJq@jKnF=NYo{@i= z+sCYae?2z4;rsW1#=S28 zGOr){tv300SKOy49{E}2fV&GUW&n7pu`dIOU7Z7g#1V&2+Z-IIsaia_Fwz51F)~+m zxM+7f>{iF9bI9tn3m^K%0K7j^sm1$)Lr=a?H8cHoBE3uhQ=gN0O-1s*s~*?1lB*Y4 zo#FF3r*65-T}g$0OpCr2cB9e=M0UhKCjy$><%BTuPW}M?%&FLtJ|X3w$@nI z?F55pw&Ng70OGOTHKsZ}4pj}YJwyY4FW;$&W_y=;RmTt*M6K<{N#u?;KYhA%8*t{@VS-1z2-2ezSC-UM3W?(s0t9RHM$*f|Ryt}S`JWjv}_CX|l zvNwV`JQ6SuLC7uu>l&NG^M{0kP9|s?%H=}R=o~uRR7Ajp;XkwIo{bsN-W{CVH`ea^X)d;H+lePNM9f_)-1EXf5pOuPnV78`HSfB6Gz&X%oQhLkh$X6S0 z4aeBdWcH*-o>^4g&OTx<1S2@&1r~F41ZM=Lz~|x-5>YENn-CIYq`bVeQT|<1RZT@$ z#{_DHfjju()jDqnQ2}ff_wMC(7q6{UnWOBNo-c=^rn? zlErb6pe4FNd1*<-;7%}$@$n6yMVritkq?77CTH60c57(kiYI7pr`)+TxUgh%uQ|TL z88k1nF~w<`wndS(XH9Z^nP%|wJ5} zGf659<5A)%BHygYuje(&^Ud0UXp(vSq0}yfRN3TXNUH8&knpY6r^>Kpe+rgRRHwb6DM8 zyUitV6CJ0B{U15EYo>I!Xl~M&zui*Nz;1qq2B}xaB&$cx@QtZKPS4Sx`{Z{zX355t z(OeF%EN{LR7uIIj=?ZD{0`WLT+K3-eLxifcrSkZ?Jh`H^X!*7H6v8TsRlCFEbJ|=X zm0lz+4~32UUMtk1{AN4vtzM!!$(dl^EHxn)q(~*}9UPw`t}F@Vg%> zM48_?zv)`$&p-eO$FM^7L zeYTOHKmUn%UEsC#Si-xVXcM%v;8<7fBDO-8%nLYog{!`x z;GYqnPvoU8Wc1wbFS5M!n{JKxM|fnx`X4EE^4<02Sy&#rcfALCo&0Kj{p^21lgSBz zg!)FVHNvNdv}{?x__O~_JF90t<(oTsa( zEh_QIo*t9&m(=~g(%EwdDXbhd`M>GuR_LDG)mxFf8tgc?7NGTpJkUF9JSGIWI}0Kb zJ>LCdIR;Jxasbf*c>#p0Sq74jI(65}G(=)0Tt z$+LaqNx8fk*o$|9|2o;awIsI_O@zI8AMk-3*;+pyH3-Dt#EhYzflT4pJLVJ)H|0Im zoDfJE@_KyK<|6F?-FoXnw_bCuxY`kc6sq4{bgR}1A6|(eh~Nr8bDg)-q4s%wows2K z*DKTL{SSyuRH^ib&Vl^k^}Ro$hxYD}r&Z?f$?XH?8cbsS19@(TdzV9~)-l@H9-Eu) zmeFQEGq56=FAx7EKN)B(u7rq8c5cuP@n<3}^sgHHNzynx88G^sK9_@;1TyRnbx1fz zai`JlAfphhxs+NIzMq4@5?Ra_SM?vr4b{UTw@oRc9TPKRoCk+&4uF#B;*`j_vcLWNpXE zw}$s>TS`IhPXHtVk^w1zR6rUak-(f9v*-b%W&Os^tzsukmr+4 za8-$tG9lj_DKPPhXK|2+E7wdK_?rI@BQ5l5<~KWMB(`WqKwdodMjAh0iEB!_+~?}6 z;l*ILLkDw$_yt%^5QH-}2>&KObuFZ{ZF1L9cI|S{kIkMLuwW;KP6Idsy3xu5Bodgj z{w7y|PsHC7m~ABp0}&nNkADLteMr=@WhQ+nmQs8%W8FXDi->VjaTkU4{wefZ3Rj3$B<8;N@>YM;U&W10se^ql4|5 zPaOf{sG$0p94CZVsM;yP*>S!>#PtiN&jZT}K&gEBj(IbAv!t^(w3`@3t6_ovk9T|# zaz(RPH4IwneQi8&xs5s2LV z>+tYYIt+)I#@UV?z$S7UJcn`9fE)mChZJo)T#&C!lr%TMl3D<=pPE7tTxo5cGeVZp zwMs0eaW@bT^@_9|tCr86TIu&3I;HFirvf^icuT(lVOt2Oz`EK7(T}ca0Bgjt7`2MSoviS4&^m2u0^3R#fR{FzAup23%uqJS+V08wm zrB~+$^iKmK>I84C@5zJr&YsKbo6TMbSKDGGX>u5jxQ{exm7m{>OUvbSlWe&E!#xp2 zmcg$qd|O=M+v5n2_C+F9<7(IkG&qpTiV#_}5$}`o^kH8_vL&8mM_kDx*O4rHkCarf z+4-TxA07_9%!&?@`wuXEFE7H2N62))a`cF@mZftr^C^g<{y-KLY-MY`?opS6QYgLE zMfwqMfz0lKfz8(bPD^KhXTO*!-~CoedrZLK!l=FKekZInq9%~k+d0sog>>+JOk*x< zj?IbQmV8SVU8MI<bjD7qgU*4dPd4Nd0NWo;evT_^zas$ zgv4}pw|76YQ^l7=n93J1+HncdNc_aF<+~4<#urgjyQy0DYy7DYoQ6>5&)buCYa3`> zmT-ZB+GI+r)B>s6HJ>UF?q}y(AfgG(GlEYZKF4joV9|+kg9;X_>XVM+<<-2Dg>IXm zS4w^`2x?*_RR)N~M_A2dMZS4rf&B7ezkK3kx_tP-dE}?_4=zm@zuHe?JtS`c`~@l> zCZNOX+HSxgc4IH*z#pOyFpZ9QPQcn~mpFdFUu+PYF+Ps%VhcJrZ>7>CN)-G@+2VT- zSJ78UgW(I9c3DoJs3pt(nODA3k-vKEf?W1MGg}r&3rDA@rx{l=%jzNls~Oq@F<5W0 z5v@%GanHnpC?C_=uEo6ALBrF@C>0eQy$ENNo*Xze@_t6WeD6dc=;%itT^n@tHb{UX zVmsjf)6wivc$*6H3WH(A-{NS|Pg<#IQQk&!e&|G{@n-6%@V|N@F?8&Gc=8X5c0=G* zW}9&0X*S&ixm?9Z7xCK8!5|J9j+P<(j5*eB25lO^`iD+55U?q<*|cvH>1>nTr)HN{ zQWt&t!KIjAFtsmg!b*cz$wQ|;PgtVJiz~b3o2Td0J_o%IY zL#98ey*q2qlMPSh$zxBZ*IbK38gt-V)DTS{lDU6BOMdvI_E-{PQF6^EA8k5cCWdLc zi)o+;Jd!{g|Z&bnyDlAER-CNIW*0Qkk3s(e=AF{}f zgXcLn(i2gIE7XN2Io~a~UPW9KmK0hVb Nkfy9rE;I7H{{yNACPM%K diff --git a/osinaweb/osinacore/custom_context.py b/osinaweb/osinacore/custom_context.py index 9f509bdc..1b578d5c 100644 --- a/osinaweb/osinacore/custom_context.py +++ b/osinaweb/osinacore/custom_context.py @@ -89,3 +89,5 @@ def last_status(request): return {'last_status' : last_status, 'current_date' : current_date, 'minutes_ago' : minutes_ago, 'hours_minutes_ago': hours_minutes_ago,} + + diff --git a/osinaweb/osinacore/views.py b/osinaweb/osinacore/views.py index 02b2eaa3..beeee3b2 100644 --- a/osinaweb/osinacore/views.py +++ b/osinaweb/osinacore/views.py @@ -12,6 +12,9 @@ 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 + # Pages views @@ -1215,4 +1218,67 @@ def edit_tag(request, tag_id): return redirect('tags') - return render(request, 'edit_pages/edit-tag.html', {'tag': tag}) \ No newline at end of file + return render(request, 'edit_pages/edit-tag.html', {'tag': tag}) + + + +# TO UPDATE THE STATUS CONTAINER +def get_updated_last_status(request): + if request.user.is_authenticated: + last_status = Status.objects.filter(staff=request.user.staffprofile).last() + if last_status: + status_time = datetime.strptime(last_status.time, '%I:%M %p') + current_time = datetime.now().time() + time_difference = abs(datetime.combine(datetime.today(), current_time) - datetime.combine(datetime.today(), status_time.time())) + minutes_ago = int(time_difference.total_seconds() / 60) + else: + minutes_ago = 0 + else: + last_status = None + minutes_ago = 0 + + if minutes_ago > 60: + hours_ago = minutes_ago // 60 + remaining_minutes = minutes_ago % 60 + hours_minutes_ago = f"{hours_ago}hr {remaining_minutes}min ago" + else: + hours_minutes_ago = f"{minutes_ago}min ago" + + response_data = { + 'last_status': last_status, + 'minutes_ago': minutes_ago, + 'hours_minutes_ago': hours_minutes_ago, + } + + recent_status = render_to_string('recent-status.html', response_data) + + return HttpResponse(recent_status) + + +# TO GET USER ACTIVITIES +def get_latest_activities(request): + if request.user.is_authenticated and request.user.is_superuser: + open_task_count = Task.objects.filter(status='Open').count() + working_on_task_count = Task.objects.filter(status='Working On').count() + elif request.user.is_authenticated: + open_task_count = Task.objects.filter(assigned_to=request.user.staffprofile, status='Open').count() + working_on_task_count = Task.objects.filter(assigned_to=request.user.staffprofile, status='Working On').count() + else: + open_task_count = 0 + working_on_task_count = 0 + + total_tasks = open_task_count + working_on_task_count + + latest_statuses = Status.objects.all().order_by('-id')[:12] + + # Calculate time ago for each status and store it in a list of dictionaries + latest_statuses_time_ago = [{'status': status, 'time_ago': calculate_time_ago(status)} for status in latest_statuses] + + response_data = { + 'total_tasks': total_tasks, + 'latest_statuses_time_ago': latest_statuses_time_ago, # Include latest_statuses_time_ago in the context + } + + recent_activities = render_to_string('recent-activities.html', response_data) + + return HttpResponse(recent_activities) diff --git a/osinaweb/osinaweb/__pycache__/urls.cpython-311.pyc b/osinaweb/osinaweb/__pycache__/urls.cpython-311.pyc index 1539f2d09f33a85306db21631e5178b95ce74158..8215dd6255ebe1275591e9788f2bf2546f5b0399 100644 GIT binary patch delta 1602 zcmZvcO-vg{6o9?!=VT25E+sZLUORvdIH_o9NHlf~c-g%V7HNgGH4 z>Y*Z1T7iZG>aPz`Kq?1UIaQS^ZgA*fRvM`iryhE!dT94psZ!h7eYTQF9cf4Nz4y(| zo1M}AF#PlN%H4{JG7E2i9S*6YYpc>J{Pta=T22lGTh-_4iMg1OG+O41tzR4yU-D2K z13dKAe)%)2#quqGux$y+gqjd7YMFX!E?J85@px&x|MfGG&)^TXl?sa`naF$-wKV6S zACIhBWA zyqWy!{^ot;;WR1KJ4J^=`eh%F&&fviv22*TvX}RV zvIosNvhQ_?^$I!RHOxk@k?l468Lu(x6EnVR_D5bX&T1t-zw_i<=33`TR(AT|HpgvP zxntA69n7~;2x<^y5Y#W2*^9=krgn3D$uz0mwbR3DTWNbgg#ir)7!2s|m_j#s>~l+D z!Gr;_@2imp5r)Vg9EK6DnQ$H9JyLbXy%s?j5sFI$_H3-F>!^}KOoJGMm>xxAv}Dxf zdssvJK^cWX4F(wu>SJi!C>afTl?5&z3{i+^5MdC}V`#+D*l=x*vFhdmKP~dFPZ~&I zHd)NNH&u2zSa4D3(4d1shdz!%swjANY|PnGn5PidAj}}FPoQwq*pj3mOcJ@SMoJ@0 zkt-ag5i(@5&V5crxK*mUc1LCMMS3MdVMK!w1|#|mDhmS9JdR)%X|Y&^cgN3M=L($^ zx;5x#(5>G=;jXFMmymKMNy|w0$b7v^`ViqG^VIGmtQZ;lD#8Q7xF`09NRI^LhDvKl zAwuijLtP>sy!i6fc!OT(rO>BAAA>$UjLKD1Huz`VUf8=tp-qD}25ou|=HC^Kwa)e; z^_5;I=WWc#KSz|ps0O19M)iJF28;sig9tZ7@~6is#gO9U#|Ec0Au8nihT`o{5wE{S zn!x-`6BL9=65^RO!W2pS-D}ebnNksF_r}=kT}M?E;u^#m#B~*oTP4GruYM{QW+{X; z2r&rhGbp@Y5@XO;7lTe^oHll=?ZBxpbomRq|tu%8Rtoe6H+mrB4 zQP}!7#VaQ7tCp*(%!L^DQ>s;9R#lmO#Qjws{le`ZzV7i_(K@e{+wHY-XSsdM*Vp*^ zS8jiMt!gfxrL6IJaU%_o^0@fYzV>*c$Bt}WhY-KrbH*!wG zP?=M1!<jLL|BP|Xu_v@tE zAk~yqn;HuGHg>E&DWSd^J$6PX9R}&3q{F;`lKu@z>7quJ{d%-bhXKD$zKG#rc;k1- zBM76g)(1U~}~`7pu}C=5E~W`v_q$#RY% zv{(fKtq7g}x7(Sk{PzmFq$Ioysy^PddtK(9*A}wNNB^DdS*9|B-Yr~}mO%A6S~6Jr z{CW<5VBzHfozxnnmXcbt2L-(-&~3YOCA8{@ej=@tj6pJ#WK0bueUJ#bM>FcWgh z7ZEPOqmWx3K)4L=7z`o|!H-b+&Md<4MvuDJ6ExbTrzdqXWsoUKrpytPjKaQfdBGTm Qn+4{y1TVt@GROY?zi*CCpa1{> diff --git a/osinaweb/osinaweb/urls.py b/osinaweb/osinaweb/urls.py index 91c542e7..a85cd8b2 100644 --- a/osinaweb/osinaweb/urls.py +++ b/osinaweb/osinaweb/urls.py @@ -52,7 +52,6 @@ urlpatterns = [ path('adddailyreport/', views.add_daily_report, name='adddailyreport'), - #Fetch urls path("fetch_related_tasks/", views.fetch_related_tasks, name="fetch_related_tasks"), @@ -111,6 +110,11 @@ urlpatterns = [ path('mark_point_completed///', views.mark_point_completed, name='mark_point_completed'), path('mark_point_completed_task_page///', views.mark_point_completed_task_page, name='mark_point_completed_task_page'), + + + + path('getupdatedlaststatus/', views.get_updated_last_status, name='getupdatedlaststatus'), + path('getupdatedactivities/', views.get_latest_activities, name='getupdatedactivities'), ] urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) \ No newline at end of file diff --git a/osinaweb/static/js/get-updated-last-status.js b/osinaweb/static/js/get-updated-last-status.js new file mode 100644 index 00000000..f03e8a18 --- /dev/null +++ b/osinaweb/static/js/get-updated-last-status.js @@ -0,0 +1,13 @@ +function refreshStatusContainer() { + + $.ajax({ + url: '/getupdatedlaststatus/', + method: 'GET', + dataType: 'html', + success: function(data) { + $('#statusContainer').html(data); + } + }); +} + +setInterval(refreshStatusContainer, 60000); \ No newline at end of file diff --git a/osinaweb/static/js/get-updated-user-activity.js b/osinaweb/static/js/get-updated-user-activity.js new file mode 100644 index 00000000..8f312e53 --- /dev/null +++ b/osinaweb/static/js/get-updated-user-activity.js @@ -0,0 +1,13 @@ +function refreshUserActivityContainer() { + + $.ajax({ + url: '/getupdatedactivities/', + method: 'GET', + dataType: 'html', + success: function(data) { + $('#activitiesContainer').html(data); + } + }); +} + +setInterval(refreshUserActivityContainer, 60000); \ No newline at end of file diff --git a/osinaweb/static/js/reload-script.js b/osinaweb/static/js/reload-script.js deleted file mode 100644 index aaccee26..00000000 --- a/osinaweb/static/js/reload-script.js +++ /dev/null @@ -1,17 +0,0 @@ -function autoRefreshDiv() { - var statusContainer = document.getElementById('statusContainer'); - var divs = document.querySelectorAll('.userActivityContainer'); - - divs.forEach(function (div) { - setInterval(function () { - div.innerHTML = div.innerHTML; - }, 15000); - }); - - // setInterval(function () { - - // statusContainer.innerHTML = statusContainer.innerHTML; - // }, 60000); -} - -window.onload = autoRefreshDiv; \ No newline at end of file diff --git a/osinaweb/templates/index.html b/osinaweb/templates/index.html index bed60835..d7a030dc 100644 --- a/osinaweb/templates/index.html +++ b/osinaweb/templates/index.html @@ -185,51 +185,9 @@

USERS ACTIVITY

-
- - - {% for latest in latest_statuses_time_ago %} - -
-
-
-
-
- user profile -
-
-

{{latest.status.staff.first_name}} - {{latest.status.staff.last_name}}

- {% if latest.time_ago == '0min ago' %} -

Just Now

- {%else %} -

{{ latest.time_ago}}

- {%endif%} -
-
-
- -
-
- - -
-

{{latest.status.text}}

-
- - -
- - -
-
-
- {% endfor %} +
+ {% include 'recent-activities.html' %}
diff --git a/osinaweb/templates/main.html b/osinaweb/templates/main.html index 02a7ea7e..ca721181 100644 --- a/osinaweb/templates/main.html +++ b/osinaweb/templates/main.html @@ -9,6 +9,8 @@ + + @@ -222,22 +224,8 @@
-
-
-

Recent Status: {{last_status.text}}

-

Last update: - {% if last_status.date == current_date %} - Today | {{last_status.time}}, - {% if minutes_ago == 0 %} - Just Now - {%else%} - {{hours_minutes_ago}} - {%endif%} - {% else %} - {{last_status.date}} | {{last_status.time}} - {%endif %}

-
+
+ {% include 'recent-status.html' %} +
+
+ + +{% endfor %} \ No newline at end of file diff --git a/osinaweb/templates/recent-status.html b/osinaweb/templates/recent-status.html new file mode 100644 index 00000000..62eb1939 --- /dev/null +++ b/osinaweb/templates/recent-status.html @@ -0,0 +1,15 @@ +
+

Recent Status: {{last_status.text}}

+

Last update: + {% if last_status.date == current_date %} + Today | {{last_status.time}}, + {% if minutes_ago == 0 %} + Just Now + {%else%} + {{hours_minutes_ago}} + {%endif%} + {% else %} + {{last_status.date}} | {{last_status.time}} + {%endif %}

+
\ No newline at end of file