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