From 4c66e3aa5530a445216200c83893f5d5994aabde Mon Sep 17 00:00:00 2001 From: saraalrumih Date: Wed, 27 Jul 2022 18:43:37 +0300 Subject: [PATCH] 3rd lab submission --- .DS_Store | Bin 0 -> 8196 bytes MyFirstProject/__init__.py | 0 .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 164 bytes .../__pycache__/settings.cpython-37.pyc | Bin 0 -> 2418 bytes .../__pycache__/urls.cpython-37.pyc | Bin 0 -> 1117 bytes .../__pycache__/wsgi.cpython-37.pyc | Bin 0 -> 581 bytes MyFirstProject/asgi.py | 16 +++ MyFirstProject/settings.py | 127 ++++++++++++++++++ MyFirstProject/urls.py | 22 +++ MyFirstProject/wsgi.py | 16 +++ db.sqlite3 | Bin 0 -> 135168 bytes manage.py | 22 +++ student/__init__.py | 0 student/__pycache__/__init__.cpython-37.pyc | Bin 0 -> 157 bytes student/__pycache__/admin.cpython-37.pyc | Bin 0 -> 198 bytes student/__pycache__/apps.cpython-37.pyc | Bin 0 -> 432 bytes student/__pycache__/models.cpython-37.pyc | Bin 0 -> 500 bytes student/__pycache__/urls.cpython-37.pyc | Bin 0 -> 468 bytes student/__pycache__/views.cpython-37.pyc | Bin 0 -> 1933 bytes student/admin.py | 3 + student/apps.py | 6 + student/migrations/0001_initial.py | 24 ++++ student/migrations/__init__.py | 0 .../__pycache__/0001_initial.cpython-37.pyc | Bin 0 -> 751 bytes .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 168 bytes student/models.py | 8 ++ student/tests.py | 3 + student/urls.py | 11 ++ student/views.py | 51 +++++++ 29 files changed, 309 insertions(+) create mode 100644 .DS_Store create mode 100644 MyFirstProject/__init__.py create mode 100644 MyFirstProject/__pycache__/__init__.cpython-37.pyc create mode 100644 MyFirstProject/__pycache__/settings.cpython-37.pyc create mode 100644 MyFirstProject/__pycache__/urls.cpython-37.pyc create mode 100644 MyFirstProject/__pycache__/wsgi.cpython-37.pyc create mode 100644 MyFirstProject/asgi.py create mode 100644 MyFirstProject/settings.py create mode 100644 MyFirstProject/urls.py create mode 100644 MyFirstProject/wsgi.py create mode 100644 db.sqlite3 create mode 100755 manage.py create mode 100644 student/__init__.py create mode 100644 student/__pycache__/__init__.cpython-37.pyc create mode 100644 student/__pycache__/admin.cpython-37.pyc create mode 100644 student/__pycache__/apps.cpython-37.pyc create mode 100644 student/__pycache__/models.cpython-37.pyc create mode 100644 student/__pycache__/urls.cpython-37.pyc create mode 100644 student/__pycache__/views.cpython-37.pyc create mode 100644 student/admin.py create mode 100644 student/apps.py create mode 100644 student/migrations/0001_initial.py create mode 100644 student/migrations/__init__.py create mode 100644 student/migrations/__pycache__/0001_initial.cpython-37.pyc create mode 100644 student/migrations/__pycache__/__init__.cpython-37.pyc create mode 100644 student/models.py create mode 100644 student/tests.py create mode 100644 student/urls.py create mode 100644 student/views.py diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..923e1bd671fd70b9ebeb4c0046ab006eb5378494 GIT binary patch literal 8196 zcmeHM&5qJg6h3zboq|!B#DrOyE;Mm5nSe8KG!qjBL7jzhVvR1;FfAoeQ+g4K1QFAX ziH|U@UHJg+hzsLFpTO7f3Dk3cL?{EZBSz0j?)`3i&v(!5$D!pE0APiVn*&$_00W!A z^eOC)FflLMlr8BqtB4Hw0MEb&4??KI=9D*`AO%PPQh*d71xSIvK>>Vb3o~Xs_th-* zqyQ=KUn(H(4<zeJS`2!SO-XssWGoHQYfjorm7y8rZQb(Fh$3C zQ@A7MHAV^*9hjm6(~+63P?(I4JX5*@%PXXw6d(nr6%e(13S4kt1KQ*D`<~A$j?W#O z$FCI2AYS?@O)ipz2G|f_t6{aj0Zr(|7_VcDGjIoba1-ATv@lW#`-mK#BD(_NBo}s& zdpH(tF4yU{n|h~ToTl%!!)*2&TUt(>IJsgNDI;|{^~9?4t`*v0r(LjHkHpcw9o8K^ zzR$To8r#kTui7oA&)wibXnR4mCCQ#!MVH49y};$&0`CNFTdrfN3ByPl$#Oc=?{8<< z&C6G>4c5*6wis`1UKtFMM&@Gf`rbjK_oDxD@aj-%2u$D1;H)|x^>1-B_nQ4$&Z_W6 zQ!y^QInKYqi$$%G@uM~ze!Bg6_jryw;_TdAE!($_=QQi%`-;T&=3d8hs}=Y>sG*8JqnoQ=(`5|f&^BB*L z;N8a$UsZNYdHu(JZDKpXCQSH63MBZsfrTpY3)O!xJpcdz literal 0 HcmV?d00001 diff --git a/MyFirstProject/__init__.py b/MyFirstProject/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/MyFirstProject/__pycache__/__init__.cpython-37.pyc b/MyFirstProject/__pycache__/__init__.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f8e22be6aeb8ff50ab9e03d14fd7e15bf7b84014 GIT binary patch literal 164 zcmZ?b<>g`kf*m?{lR)%i5CH>>K!yVl7qb9~6oz01O-8?!3`HPe1o6vPKeRZts93)^ zu_#gBCAB!aB)>r4B`Yy6JzpUxwYWsVF~C#bx6&=MsJJAcC_gJTxdfdXAD@|*SrQ+w XS5SG2!zMRBr8Fni4rI+|AZ7pn@P;Yt literal 0 HcmV?d00001 diff --git a/MyFirstProject/__pycache__/settings.cpython-37.pyc b/MyFirstProject/__pycache__/settings.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..292e3f41cdc7a9a654fcc7fdce66974a739fc6ed GIT binary patch literal 2418 zcmb7FTT|Oc6qb#!jRS;0ZcW-oX|5(gPJkwzPLoDhf_UQFAUU*}PBpU6T3*n_XxE|W zwSOZI&13&be}mpSed=H6Q;&QB$7H6|vR1oi&-u>TZ_nA?T3E;n`1|nY&sKIp5dKOA z<6koK3SagIHXxV+q#*64ytJ842_#Kseog%*eh~I&_h-!v%$Qja&732cb1(}T$U+Y0 zAP*N{9u{EH$(wn&2upAYmSF`h!xblMUVy9SJX~`G5aBv}1~=d)eC~)e1z)@uos_u% zUz&?>3nY?(+cyRH>V2A~%!_ab?xM~exHo9;584Mb<%s4IJTxys!Cb~zR`9)y?-f`z zufikq8a&p8!kWFA5`?_EZ~IOlF~T|Z9VT^xP^unp(~$8-80?camwLmmoX_tNpM*9i zAhnLA2QV;Qv%#aj#JC;uk>&%b&k#%+VQ26^jjC)whZDAg7B{9XIBrWj*$igRd&gEM$pp*p^~?;8 zlJ8e(k2;nMcOzTG~+!jXU2PS~yYk^*59b}JuOrrZx*78OTeoOnGKi&JhP3h`lF zJF+^cQ)4vE%;iDK{K74)sy4DYajpA-YMPDx~kF6Cq+%A;`9FQns)R@*7pv{lp)hbKHyH^Pp454t6PVSc;oVdF@6T&LESbhA z##4Y-=LM+sJrdIPS%g{Qul1QZ(=q^sjZ8a2K->dJc)?1}g#>qM+ z;zC8K?KG7g%_`MZ4FStl%`)qlGr1-PTz>jZZP=?keNu}viOeu@4F>usC2_>dsehBytEj&V;VtB2(EL*^CYgj+pdH#pm9PW65{v5aKHtUilaxle_;Kz}568Es z+&hkQ-{GG0UGnk*dSE|cBc|tPma^iEm=-hX)bx`PCncE~aX3zorHdIcoAej+nVICt M=MZQ3WW?Ej0h)s@6951J literal 0 HcmV?d00001 diff --git a/MyFirstProject/__pycache__/urls.cpython-37.pyc b/MyFirstProject/__pycache__/urls.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fa6c88d6bad8f8107cebe07c47802bec60003e33 GIT binary patch literal 1117 zcma)5L2uJA6i%{a>C$WW~uHM=jD6f``+`L{r$*+_3QlmXk0{GS4-5r`+Lw=JOy6?6Y6)W+C%wz`R9gv3KVI-eut;T68TASwK5?uEl$RBZFst z7E}MDlXS_A=Q!uLXN6SyLW%{;HM+Wdk4{82EoMtebRnuJ`ZQ-~yp&~4v}UqWV^kJO zBPo`eDf59sTA$tu-EIib$yy~ujC0ccqh9WABS8 literal 0 HcmV?d00001 diff --git a/MyFirstProject/__pycache__/wsgi.cpython-37.pyc b/MyFirstProject/__pycache__/wsgi.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..871a8d3a1a18646cedf61bce4037e93f39db7e81 GIT binary patch literal 581 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

`ih@O z4TZ(hH0NVasP^reMyyFi5qt8=MbC_Pu2k=Icx!op7mG#ie!;5WzUK`y?+YFDsQEsl zeKiB!i|4)7cb72Ry)|Y+-RdRDgUjRA?Q?G>*jpY6^4|M*;>--!ec1)ng2-+OP_50G*U(s%f+?#MX*llJC*m|n)VUX1YK;v#qdDXT%T zrwBV(?X%sxsrA8-Ehg&G;5=RIs{t}kd%K&c>E7<6kK|sx>JN)^bKDIE*61(W>g`Rn zQBhr&0S7`?c}meN>n%5`nMrF7_EtS`Xt@Eh-o-&c(& z8ynVhC!KRXc%1!(JC-D^Y2Hs4tpC&g5FZc#0T2KI5C8!X009sH0T2KI5IEQbqNI37 ze2YHeR%|2s$C3XSdT;2b27hnhI|F0k?~;80b^ix}Hv@m>{|oLL{x`S+F?4^r?E+8d zTV6Y+Pq=h8t8^K$t^YOtn3proi4j-qzNSUIX7zKav}0PHtuHvINZcl6twko%>Fm2c z2X9|sxNvnbF11v}T6IWtkK}prT7v5q*)+T{!_!vT>b$JJvZ1w9=1o>|m3%s%&p1sa z1B9{j!5Qh9USC0V8d6}kyvX8dKFf=V1h;j{K2v4La;9}H@i-%?W3wuP@ z+P3IJX7)^b!cd7z9rcxtouOT($0Em5xv+R8vE6L8Q=FV~UJs`-54u7!&>c+6&5i5$Yn7K~F5VGBmg*>|uO zYpn}Blr0!1dGX#HwW|jFl>Ei1ye?Wf}Ep_jbMK z%_O8!Ob_wI*6b{MP~GROTi(jrMe%V%uKnh>jQ91Ra_@BMzw_+tltve4Ph{k}`?i5z znXLu)q^-XpRGht$W4R#Fy?BBbn;EYAs{PSs7b27O1i7Y^)tX!(A>^!j4~u6 zTG3T|M<==?l6}S2kfl`XT7zz#=Z2#6?H)^yQNL;BF$c5bZc70@Uy){SBiMzwV!{SZ4!Fpti2`l zq`DOy^K1h>^Zhjdvi+mkkm=qQk8K{L(KgGs)JlhKVbI^6^rxl~+)_8lDyzAJChfYR z$+nutx+>Sn3#hVA{JUSj+(4|(hwg29SRIeqGA!@r?kRf?tgE%Xg6!U*(Va5{-C9jq zk4x>kQmc{eS<+^st*w(yGriYL>De}5qYg23Ga&9eM>51-Jhkwl3dbc-p?dvo>+n#2gf@ov2^wH*#=q?=P#R@6Rjok{v zJd#^RDdtqAnzHS{c9;9nJr~36b1wxj(h%u)C&-rD!9{NC>|V7y3NNR!O1_-Wq^*|> z=G$GIM~vclyl;5g_xjHra(j@1lKa`=iIjZ&2roWQddr-v;A~LQwzmHk3%Oh|m(5x& zNw+wI$v44sEQS1w`R%|);L~JbjU(s(wzZiWzx*9zm`C;T+kw1vskNjNZQ<0;? z?~{c1fB*=900@8p2!H?xfB*=53KIRr>E^TdMTy zlOoG4Y^t)XOjU;6QQgi|W!agk^bl!+sR}bymJw5>U(OvN7W0J=Q)T=%V&~q5+EZqP zNi^{6I5AE=6*A#vL#Hc&q1B!sF-j85^_jok;nqMk|z>QlVDJiD1Y# zcq+xjk{@bS8=cm@o>USbv5?aNVl|gDgxc*4nU=P$v_-jf{y}4LxZPvA$sbVoXpDfI$(oY917^f$R+2!WVdR?trh6~g%nR_~- X8=l}ycP+){j+msW)!5(C&)5GCFC<(b literal 0 HcmV?d00001 diff --git a/manage.py b/manage.py new file mode 100755 index 00000000..df9a312e --- /dev/null +++ b/manage.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +"""Django's command-line utility for administrative tasks.""" +import os +import sys + + +def main(): + """Run administrative tasks.""" + os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'MyFirstProject.settings') + try: + from django.core.management import execute_from_command_line + except ImportError as exc: + raise ImportError( + "Couldn't import Django. Are you sure it's installed and " + "available on your PYTHONPATH environment variable? Did you " + "forget to activate a virtual environment?" + ) from exc + execute_from_command_line(sys.argv) + + +if __name__ == '__main__': + main() diff --git a/student/__init__.py b/student/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/student/__pycache__/__init__.cpython-37.pyc b/student/__pycache__/__init__.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..793e20422ce785968c359a74e9b7ef6b290aa66a GIT binary patch literal 157 zcmZ?b<>g`k0zc1(Ng(<$h=2h`Aj1KOi&=m~3PUi1CZpdg`k0zc1(N%lbcF^B^LOhASM5Elyoi4=wu#vF!R#wbQch7_h?22JLdKv4!w z##^k3DY=<>ews{Cd?{IpdFlCj$@zIDMVU!OAOlu16fpxSF!9S-KeRZts93)^u_#gB zCAB!aB)>r41*}OSD7Cmm!7;#7-?!2&v#7WvpeR2pHMvB;xTG{CHLpY;Y>Qq&RJ;6{%~M_yrJZOI6f?s-j}aV!1uHN=cJoJ40FF33!XXk~hS} zD==|RT5-~SKHq)!JMQ;81Z6(^T7BaC?LTJ;(HNqd0Rj-98QIf>Qu06`0QNzEDf-Tm z0Kz4ST0h7l5p|cNvb-66+Ct=VuY_Istj9CPm(r;UHODacFf6{P{# z5NyN=wD)amZgyO3OoqH_PE@daD#d1H*3;gB4Jh5PLQrZWO5qDT>2RCUyB(8tL_s04 z;rW`WQ6?m}(M_hbsp@Pf*)L3(5miPSEiz@+l!L=YBUv(2`^k7Vd_$@O4J-AP#MfFV z9c!jooCtku%59wFY_lr6S3;ZaaCQ+-9!759OqIDs9lNudDy$w!k9!{}q>6UMkA5BMpB>(^b literal 0 HcmV?d00001 diff --git a/student/__pycache__/urls.cpython-37.pyc b/student/__pycache__/urls.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6d56e9b278781dd364c4ca93a7bf31b680cf9157 GIT binary patch literal 468 zcmYk2OHRWu5Qgm}ZPMm}5EtmSoB9G(1yzN_0#t#z2}qG)Oi9U0wgW16;2>Pd5(~tt zS761MrV?X$Jm1*kf9!c24++}m?brQ^67p@~U;zfFIMp3GAV3RJ(v(sH4!DI=x~Yq? zmwJLiPq>>N^ud33kpiSX3_2Pj`4Dy#Aq5ayT6^gLk{dEU+Mxm&Q{y#UKkcv)3%!?I zyei`>-GZpJaXEkq(Pdr67F4_x#w&8A)5!Y6p6Ry@a4k%@U$eY=tlv&R6haF&?QY0& zn3-gsJXBtdhbDv#uh#XXm4%WHwquC&>=N*%$*iXI5!3j;q>>@#WMt2UScz}ZLRRX7 z$YZ-<-Orq@l#q%kE;(BW^{nfLE&kL-*Fx#h+46#2ZqIY6^itLv@t|4PEVJEAnym?@ VWesg1X7;0$)r)B4cy2=N_yvqAhEo6l literal 0 HcmV?d00001 diff --git a/student/__pycache__/views.cpython-37.pyc b/student/__pycache__/views.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..911285980bddfdfb8d3a39d3097892e824c38a5b GIT binary patch literal 1933 zcmZ{lUvC^W5WsEk-`l%OLYo#66xc`z^$^PO0ivj(Nf8o+s7Xb-2%R=(=dzc*-K*_u zNOa*PeeDC!6sf$yN8u~@4e?a*4f@24_by4(uqWGdQ&1OX4`S*vv_y6(< z`3L_@9~XrC(9|E$al&a%1~j1*WtOvnlQ>p(a(Cb*o|WC)9|TDNvd8^A9MqDU)dzW$ zM8e@=kDgQE@!CtuBVK>*p3|fb`oI^zsf?{sNBF2r#x zMYohZK1@}-FGLY{rGV8ORt9M5!d|IyRr*Xw4-_p&)?i5Lu(qSB!<(j@V6kuhlgL|O z^5#MNu@X|XRVvf=hEPYk9JV+5Y0)cV;HcyE?XTP4o;<{pY|FAQy1G5tv5n}}%J9V0 zQ_iRF!BeOZI>PSJkcCXngA51V+`XWUH;_TIwC{nSfi-eG1LB-LCu6!n&VeQenn2Y7 zs*a`VZe47G8{m6(ps7!x>p`e~{0KwRhYk8TGH4Domy?&?FYKucfuSwWu#DftyyeNe zu+fcE%&?U&OfWgSg;#aAVa1zhHP4jpmV@Ei2j~wv=hM?=)K1B$mDRlLrny=JVQOu{ z$&P9o%%I#y%E~xto>$>?Z8+s3Y??GC_8r_Jc`K;tHLpzbt=Hc{$81?(5%p>4Kx~#k zXPoWFm$5<5F&k`b_CUbc07%kzFdH~~K>;!T!(5;p*UFF&AbVE!tn6Faw{iek5@MF< z8V`7wL9Kv5)F4Bqhsk)0{x5qu18$st@}wNec(NeQii1)PQk|7WoT+#;#B}1zt;lAC z{18?crzfM>(#~`d|eFl3SA*=o;7Io1BT0>G5*HpH=Dbg zUBrhEUU6h?F(x3KEKWee6$gZD%w9Q&elP+nP0V+*X|xby!N>9cd+zrCETor8@@_is*4Ek5)LA!c>=1NxY`!?zQ<>fqi<%c`T6YAem`a;Ki>SBd=-rSuARMv1Wrip3o^if7i`Hh zz7(0@?3{ss;0uEQ`6BonWC4UXY|#2cciBMrc&T%voUTgi+sg{Du+uuVmx#a#shyKS zmT_R20GP8#k9g#eHyoJtU&S zrbK(Du>gBD==-j0DoN>MDT%ptfrJw&->+3sUnZ}kOYLYDp8&3~q$Q>rt)bq`_s*K( zFKf<#xDQ;qL8zGV_c|H0JMZdP@}8)GDLW z5!yRftg`k0zc1(Ng(<$h=2h`Aj1KOi&=m~3PUi1CZpdAwl9``ZtREkrnU`4-AFo$Xd5gm)H$SB`C)EyQ)n_1P004!1D|7$= literal 0 HcmV?d00001 diff --git a/student/models.py b/student/models.py new file mode 100644 index 00000000..161c1f41 --- /dev/null +++ b/student/models.py @@ -0,0 +1,8 @@ +from django.db import models + +# Create your models here. +class Student(models.Model): + first_name = models.CharField(max_length = 512) + last_name = models.CharField(max_length = 512) + birth_date = models.DateField() + GPA = models.FloatField() \ No newline at end of file diff --git a/student/tests.py b/student/tests.py new file mode 100644 index 00000000..7ce503c2 --- /dev/null +++ b/student/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/student/urls.py b/student/urls.py new file mode 100644 index 00000000..bdc7545c --- /dev/null +++ b/student/urls.py @@ -0,0 +1,11 @@ +from django.urls import path +from . import views + +app_name = "student" + +urlpatterns = [ + path("add", views.add_student, name="add_student"), + path("list", views.list_students, name="list_student"), + path("update", views.update_info, name="update_info"), + path("delete/", views.delete_student, name="delete_student") +] \ No newline at end of file diff --git a/student/views.py b/student/views.py new file mode 100644 index 00000000..be346ef5 --- /dev/null +++ b/student/views.py @@ -0,0 +1,51 @@ +from django.shortcuts import render + +# Create your views here. +from rest_framework.decorators import api_view +from rest_framework.request import Request +from rest_framework.response import Response + +from .models import Student +import json + +@api_view(['POST']) +def add_student(request: Request): + new_student = Student(first_name = request.data["first_name"], last_name = request.data["last_name"], birth_date = request.data["birth_date"], GPA = request.data["GPA"]) + new_student.save() + response_date = { + "msg": "A new record has been created" + } + return Response(response_date) + + +@api_view(['GET']) +def list_students(request: Request): + students = Student.objects.all() + student_list = [{"id": student.id, "first_name": student.first_name, "last_name": student.last_name, + "birth_date": student.birth_date, "GPA": student.GPA} for student in students] + + response_data = { + "students": student_list + } + return Response(response_data) + +@api_view(['PUT']) +def update_info(request : Request): + student = Student.objects.get(id=request.data["student_id"]) + + student.first_name = request.data["first_name"] + student.last_name = request.data["last_name"] + student.birth_date = request.data["birth_date"] + student.GPA = request.data["GPA"] + student.save() + + return Response({"msg" : "Your student information is updated!"}) + +@api_view(["DELETE"]) +def delete_student(request : Request, student_id): + try: + student = Student.objects.get(id=student_id) + student.delete() + except Exception as e: + return Response({"msg" : "The student is not Found!"}) + return Response({"msg" : f"delete the following student {student.first_name}"}) \ No newline at end of file