From 61b42c75eecac0001884c75e51bbe5886915fc9a Mon Sep 17 00:00:00 2001 From: Abdulrahman <abdulrahman2.ali@live.uwe.ac.uk> Date: Wed, 1 May 2024 06:32:45 +0300 Subject: [PATCH] Update templates directory in settings.py and add PostForm and create_post view in prediction_service --- mlaas/__pycache__/settings.cpython-310.pyc | Bin 2697 -> 2697 bytes mlaas/settings.py | 4 +++- .../__pycache__/forms.cpython-310.pyc | Bin 823 -> 1193 bytes .../__pycache__/urls.cpython-310.pyc | Bin 725 -> 787 bytes .../__pycache__/views.cpython-310.pyc | Bin 5902 -> 6471 bytes prediction_service/forms.py | 8 +++++++ .../prediction_service/create_post.html | 12 ++++++++++ prediction_service/urls.py | 1 + prediction_service/views.py | 21 ++++++++++++++++++ 9 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 prediction_service/templates/prediction_service/create_post.html diff --git a/mlaas/__pycache__/settings.cpython-310.pyc b/mlaas/__pycache__/settings.cpython-310.pyc index b40f363086c9c9309b27a33e6a79f41a8a3dc175..471722be635a3fcca561a3256b3fb155806e55a1 100644 GIT binary patch delta 28 jcmeAa?G)wB=jG*MU|?Vn+F_8EyOGzJi;-=zBbNsNQ$GdL delta 28 jcmeAa?G)wB=jG*MU|?X-lxI)l+{kOp#mF+*k;?-BMb8Am diff --git a/mlaas/settings.py b/mlaas/settings.py index a74d4fa..6c649ab 100644 --- a/mlaas/settings.py +++ b/mlaas/settings.py @@ -55,10 +55,12 @@ MIDDLEWARE = [ ROOT_URLCONF = 'mlaas.urls' +# TEMPLATES_DIR = BASE_DIR / 'prediction_service/templates/prediction_service' + TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', - 'DIRS': [], + 'DIRS': [], # [TEMPLATES_DIR] 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ diff --git a/prediction_service/__pycache__/forms.cpython-310.pyc b/prediction_service/__pycache__/forms.cpython-310.pyc index 799a389ced0edd5b3172d0368cacc42516d299b5..15338057eaeb98dba0f97dd1b7e399d6fedff4f2 100644 GIT binary patch delta 601 zcmdnawvv-CpO=@5fq{X+a*IJ)8q-8R8OEfE+7|i@DU3M`xr|Yaj0`DkDeO7yxg1d( zj12A!DI6)BEet7~sf<~i&CF3;DO|w}n%omJ7Bb$N%*E)+_<3>w<03Xu1_p*A(aAp; z^-VvsF)%Q2Ft9N4Fcyh3FfjOOauo@Hqy<5Q5Qt!6U|_h#<(iwAnd6q3nv+t*GdYGy zuAUzx2hvgmF%HB9v&29wRt5$J5H98bo6o^0!YIU41QL14$iTp$$#{z;AiuaI8RR)+ z%*?>R;K0DZP%Op3z>vxi#hAhn#pKSA!kEI;!jQt$%oN3(!W_(?$x?rd17v_(eo-!l zAs`on3@HMIohEY?FHEJLZ)!=RCi5-UlFX8v)LZPy`FSO&c_p{lb8~X@Q&MyMG}+L7 zFAMUGFo+NV5nvyJh$M)&!JY+$0yw-RKuSP7KTQ^NgFwO%Js|B67Ff3&0|Nsn$ctIP zK_$dk1QPMn<et2hDLCjB8`x#VMIeXV;`9YM6Xa>IB8Vxd=H243$<0qG%}KQb1#~eV V0|NsO0}mq)qW}{R2M?nd696fAXCMFo delta 188 zcmZ3<xt)zKpO=@5fq{X+WFlMIX2ywpGK>}zwJliLf*CZ~Cr(<(7&Y01(Uq}yauwqu zHem(^h9cp~N=*9l#cT`=3>*wBj694*q6`cSewtiGd?0Cl5Fs$RfJu~*YjPWtoD?re z0HmY{q8-EqvqUEEW0GU`(`28_!V;{HA<MwPaErqxH$SB`C)JLTfq|izgMop8hk=KY Ihf#zH0Hlu}TmS$7 diff --git a/prediction_service/__pycache__/urls.cpython-310.pyc b/prediction_service/__pycache__/urls.cpython-310.pyc index 3994335e1991fecedc1724a0dad612742ac43c45..11ce276c42a965cebd7cffe1cd942b37a7a4da03 100644 GIT binary patch delta 170 zcmcc0I+;y7pO=@5fq{YH>=uKxzf24ak3k${%)`LI;K0DZP`quT_F{=t#uTws<}AJx z@f6Np=5&rI{uGH|22IJ0H-s5gs(6x%QWHy3;|ubOOZ2M*eSI7qgLRR_{4@n7zhi9T njp9ZUoLs=<DJR9iz`(=6!^p$L!zjkW2O=5ynD`h$kmDNw1!E@P delta 107 zcmbQtc9m5-pO=@5fq{WxmjZj*Rwf39#~=<e=4N1EaA06yC|)s9dofo!dlX-aSTKX8 w_{L|#jLd$T{F7ywnkKJd@|2NaU|`^3;9=xp;$akH;RBJ3d`x_de2g650lcCRng9R* diff --git a/prediction_service/__pycache__/views.cpython-310.pyc b/prediction_service/__pycache__/views.cpython-310.pyc index 3bf7b8c4c54e6585584a01ac3e09da23a139bd58..3dd69d56693576b8116aa70649eb826694a830d7 100644 GIT binary patch delta 1354 zcmeCvJ8s06&&$ijz`(%3veh8%uhc|78OD@}+F$BfQbcmtb0wlA7#UJnQrL1hbGf3p z7#UL8Qbbe4S{Rxcqa;%pQp9tlqNKpIbd)rhmWh%D({j1;Q3{L<V76kEVhTfwM2=Ff za+ESuOeIPsl`TawMG9<|YKnL;gQoOLkV7<?Zm|_@u3~({%osH}oi%__bMg+>Ka4t) zx3Xn3{+g`F9?hsVxt85bT$_P`p@@lrfkBhCh!4b;1Q9xuPqByAYck&A2*@ukamz2t zO=bic3&qR~3=FIc3=GZ;3=G9n7#J987_t~r7_*s*>`NGH7_yj}8EYA97#A=vWGJ$$ zVa#GlVM<}{WvpeYVaQ^wVTxx1(OK+S94Rc>OvTDz9%qqB4buXag$#@gC0q-*YZy}M zSr;-fGL-P7u+=bS@usl%G6jRA_-YtZIAAi(jKK_f%q5J?47H3U{51?IoGDy2jG2th z%)tzr+<rw83=9lznvA#DlJj$OGfRqO85kI<G$Qj$ixdj-i%S$T5{ng*Qd9F3l8aIk zOHxx5ic6D|Q;Un!N^^4REA@(WK_SC<i>V;HN<A{aR3Wh_RUt3GL?N-XBqP5lvnn-3 zp(G!w8Ej&)UX`G)kE3I-F2uxmkTpe$AY%lIlt5u?2qHl4DpCfqR6v9@0|Ub?Hi)4` zdLR)g28McuTRfS?@x`SDsYRv5sYOLBAPEf+0g8YkV-QOpM1bRu84`aWt8TG?Z505? zfeAs7`P@h@iU!4;3<CoL7ZVpF2O|$72csA>h~{JDVd7w9`pU*Dz|2@=zFCIjBNL<b z<VHc|$%fpmlZ|;DCV${$o&1~I3dUxCxgBJW$K*zyI!2F4yn1YQ5dKC^d!Co#3=9k} zpF;%dd5sx8CU4|)U~_~B{Ny!e3xO~<avDrd;uB@_0I83jypdCU@&o~KxGbLocM?eE z4@k8uOxh<AB=#3Xyaf^GL9&@}A|1p68~6((`vJuD2eJA=EKm@<1O>rMP>w0en#{;$ zr24WPB)<_PUw}!x1i7IoVDd&z8J?GEAbF7KMQ)QBxr*6et^^BA&KIa;D~2%N2~;u` zPtFjm<Aw-;%ublh$W?;i7da#NWguM;eg%jLHr#pgMoy*46NGsfD<{tt-pyz+IZ`B= z6&(4KcZk?B)=d5;qQT$Gz`y`<dNC+CxtJ##it0{w5M`MhC#u8-lG9Y1+$Or-MH7?` zgj2E-^V0M6lJoOQiZYY*K*_F13uGa<FfahIz=_lxq?#$exTukVfgy@DuQa!yvZ!uy zzL>mX16U-tAScE67IT27Pmu*kS1X7BSyv=5S&><opTj0MKczG$)ecm66gy46D5fpN WBgVtX1WI(m9MFUZN_<RAe2f5y{6+Qv delta 786 zcmX?Z)ThUn&&$ijz`(#TOOrj#Nqi!o45PzD?Jt20DIz%%Q4%R2S~5x!OiM*cgK3#u z*(f<i1~6MbN<M`lMKnhtS20QvDy9^rl**POmLlH5(99U6oFWp;peeC=3gb6s##@uS zSpyigCf{NG!>Bv?CR;XR)nr%pXh!YH3)#)Ybr={JikKJ}7&KXn_&{t)5TQHy9ee0z zSFU$Vj3$#e@~KRY;B8^Fn*5O4WwIil6_mArkB!Zdfq~&=?PNn9jmcN|0wG+B$%Z_d zY~~<y949C8IZU3#&jpc@1u0~IIUgeRklTUH3c{2ZFlO_GFhBAdPVN*CVRW244<UG6 zz=1m&WYr&#BD={81$CK<q9z9l3R@(BM8HG>hy`}gFObp?Ag%|9)emBYfLJmh;w6Zi zJozEF%w&5$@yX`}xuh~dLa4+`u$i7<W&A=ApBCAJx%PZwlLLfpCtu)Wo!l?P3h`Sf ziqr#cR_+{-p<wq|qRTPnOzsn|LsF4|t^y%fWP@EUA7nhHTp>spWGh&o5-%GlZkb-P zfP{-C9~RxsXgIlEESlvOQ$hCR`(n0?rITgFHCWpj7#NZ!dx^)gfmoU<lh=x`XVjV; zD<P?%4blouCk6}*47Zr_i;Jol7#N~h^Gb6IDvQb|FOZOzsRWDU7UZND-(n8%^eHj~ h>8b+}?UQdys4-eiW|Gtv;*j8A<Y451VkRa&MgTgF#Z~|S diff --git a/prediction_service/forms.py b/prediction_service/forms.py index c8a56a5..c37aa3d 100644 --- a/prediction_service/forms.py +++ b/prediction_service/forms.py @@ -9,3 +9,11 @@ class UserRegisterForm(UserCreationForm): class Meta: model = User fields = ['username', 'email', 'password1', 'password2', 'role'] + +from django import forms +from .models import Post + +class PostForm(forms.ModelForm): + class Meta: + model = Post + fields = ['title', 'content', 'mlmodel'] diff --git a/prediction_service/templates/prediction_service/create_post.html b/prediction_service/templates/prediction_service/create_post.html new file mode 100644 index 0000000..bbeaf38 --- /dev/null +++ b/prediction_service/templates/prediction_service/create_post.html @@ -0,0 +1,12 @@ +{% extends "prediction_service/base.html" %} + +{% block content %} + <div class="container"> + <h2>Create a New Post</h2> + <form method="post"> + {% csrf_token %} + {{ form.as_p }} + <button type="submit" class="btn btn-primary">Submit</button> + </form> + </div> +{% endblock %} diff --git a/prediction_service/urls.py b/prediction_service/urls.py index e537584..85f499e 100644 --- a/prediction_service/urls.py +++ b/prediction_service/urls.py @@ -15,4 +15,5 @@ urlpatterns = [ path('about/', views.about, name='MLAAS-about'), path('home/', views.home, name='MLAAS-home'), path('mlmodel/<str:pk>/', views.mlmodel, name='MLAAS-model'), + path('create_post/', views.create_post, name='MLAAS-create_post'), ] diff --git a/prediction_service/views.py b/prediction_service/views.py index cfeffc6..54f7e6a 100644 --- a/prediction_service/views.py +++ b/prediction_service/views.py @@ -85,7 +85,28 @@ def MLAAS_login(request): return render(request, 'prediction_service/login.html') +from .forms import PostForm +from .models import Post +@login_required +def create_post(request): + if request.method == 'POST': + form = PostForm(request.POST) + if form.is_valid(): + post = form.save(commit=False) + post.author = request.user + + # Check if the user is an AI engineer or an admin + if request.user.userprofile.role == 'ai_engineer' or request.user.is_superuser: + post.save() + messages.success(request, 'Your post has been created successfully.') + return redirect('MLAAS-home', pk=post.pk) # Redirect to the post detail page + else: + messages.error(request, 'You are not authorized to create posts.') + return redirect('MLAAS-home') # Redirect to home or another appropriate page + else: + form = PostForm() + return render(request, 'MLAAS-create_post', {'form': form}) import os import io -- GitLab