From afd95daa123ca67fa5f8a0a2c0e4e26eaab145b0 Mon Sep 17 00:00:00 2001 From: Abdullah-Alsalhi Date: Sun, 24 Jul 2022 17:08:35 +0300 Subject: [PATCH 1/3] Done Lab-1 --- .../First_project_LAB/__init__.py | 0 First_project_LAB/First_project_LAB/asgi.py | 16 +++ .../First_project_LAB/settings.py | 123 ++++++++++++++++++ First_project_LAB/First_project_LAB/urls.py | 25 ++++ First_project_LAB/First_project_LAB/wsgi.py | 16 +++ First_project_LAB/manage.py | 22 ++++ .../my_first_lab_app/__init__.py | 0 First_project_LAB/my_first_lab_app/admin.py | 3 + First_project_LAB/my_first_lab_app/apps.py | 6 + .../my_first_lab_app/migrations/__init__.py | 0 First_project_LAB/my_first_lab_app/models.py | 3 + First_project_LAB/my_first_lab_app/tests.py | 3 + First_project_LAB/my_first_lab_app/views.py | 9 ++ 13 files changed, 226 insertions(+) create mode 100644 First_project_LAB/First_project_LAB/__init__.py create mode 100644 First_project_LAB/First_project_LAB/asgi.py create mode 100644 First_project_LAB/First_project_LAB/settings.py create mode 100644 First_project_LAB/First_project_LAB/urls.py create mode 100644 First_project_LAB/First_project_LAB/wsgi.py create mode 100755 First_project_LAB/manage.py create mode 100644 First_project_LAB/my_first_lab_app/__init__.py create mode 100644 First_project_LAB/my_first_lab_app/admin.py create mode 100644 First_project_LAB/my_first_lab_app/apps.py create mode 100644 First_project_LAB/my_first_lab_app/migrations/__init__.py create mode 100644 First_project_LAB/my_first_lab_app/models.py create mode 100644 First_project_LAB/my_first_lab_app/tests.py create mode 100644 First_project_LAB/my_first_lab_app/views.py diff --git a/First_project_LAB/First_project_LAB/__init__.py b/First_project_LAB/First_project_LAB/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/First_project_LAB/First_project_LAB/asgi.py b/First_project_LAB/First_project_LAB/asgi.py new file mode 100644 index 000000000..5175c88e4 --- /dev/null +++ b/First_project_LAB/First_project_LAB/asgi.py @@ -0,0 +1,16 @@ +""" +ASGI config for First_project_LAB project. + +It exposes the ASGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/4.0/howto/deployment/asgi/ +""" + +import os + +from django.core.asgi import get_asgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'First_project_LAB.settings') + +application = get_asgi_application() diff --git a/First_project_LAB/First_project_LAB/settings.py b/First_project_LAB/First_project_LAB/settings.py new file mode 100644 index 000000000..c7e55afca --- /dev/null +++ b/First_project_LAB/First_project_LAB/settings.py @@ -0,0 +1,123 @@ +""" +Django settings for First_project_LAB project. + +Generated by 'django-admin startproject' using Django 4.0.6. + +For more information on this file, see +https://docs.djangoproject.com/en/4.0/topics/settings/ + +For the full list of settings and their values, see +https://docs.djangoproject.com/en/4.0/ref/settings/ +""" + +from pathlib import Path + +# Build paths inside the project like this: BASE_DIR / 'subdir'. +BASE_DIR = Path(__file__).resolve().parent.parent + + +# Quick-start development settings - unsuitable for production +# See https://docs.djangoproject.com/en/4.0/howto/deployment/checklist/ + +# SECURITY WARNING: keep the secret key used in production secret! +SECRET_KEY = 'django-insecure-xjiiyie6-7tx%46zr_l#u3#9&s-ta5)7l4s7-u66483922@i!8' + +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG = True + +ALLOWED_HOSTS = [] + + +# Application definition + +INSTALLED_APPS = [ + 'django.contrib.admin', + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.messages', + 'django.contrib.staticfiles', +] + +MIDDLEWARE = [ + 'django.middleware.security.SecurityMiddleware', + 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.middleware.common.CommonMiddleware', + 'django.middleware.csrf.CsrfViewMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', + 'django.middleware.clickjacking.XFrameOptionsMiddleware', +] + +ROOT_URLCONF = 'First_project_LAB.urls' + +TEMPLATES = [ + { + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + 'DIRS': [], + 'APP_DIRS': True, + 'OPTIONS': { + 'context_processors': [ + 'django.template.context_processors.debug', + 'django.template.context_processors.request', + 'django.contrib.auth.context_processors.auth', + 'django.contrib.messages.context_processors.messages', + ], + }, + }, +] + +WSGI_APPLICATION = 'First_project_LAB.wsgi.application' + + +# Database +# https://docs.djangoproject.com/en/4.0/ref/settings/#databases + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': BASE_DIR / 'db.sqlite3', + } +} + + +# Password validation +# https://docs.djangoproject.com/en/4.0/ref/settings/#auth-password-validators + +AUTH_PASSWORD_VALIDATORS = [ + { + 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', + }, +] + + +# Internationalization +# https://docs.djangoproject.com/en/4.0/topics/i18n/ + +LANGUAGE_CODE = 'en-us' + +TIME_ZONE = 'UTC' + +USE_I18N = True + +USE_TZ = True + + +# Static files (CSS, JavaScript, Images) +# https://docs.djangoproject.com/en/4.0/howto/static-files/ + +STATIC_URL = 'static/' + +# Default primary key field type +# https://docs.djangoproject.com/en/4.0/ref/settings/#default-auto-field + +DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' diff --git a/First_project_LAB/First_project_LAB/urls.py b/First_project_LAB/First_project_LAB/urls.py new file mode 100644 index 000000000..5f924444a --- /dev/null +++ b/First_project_LAB/First_project_LAB/urls.py @@ -0,0 +1,25 @@ +"""First_project_LAB URL Configuration + +The `urlpatterns` list routes URLs to views. For more information please see: + https://docs.djangoproject.com/en/4.0/topics/http/urls/ +Examples: +Function views + 1. Add an import: from my_app import views + 2. Add a URL to urlpatterns: path('', views.home, name='home') +Class-based views + 1. Add an import: from other_app.views import Home + 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') +Including another URLconf + 1. Import the include() function: from django.urls import include, path + 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) +""" +from django.contrib import admin +from django.urls import path +import my_first_lab_app.views + + + +urlpatterns = [ + path('admin/', admin.site.urls), + path('home/', my_first_lab_app.views.home) +] diff --git a/First_project_LAB/First_project_LAB/wsgi.py b/First_project_LAB/First_project_LAB/wsgi.py new file mode 100644 index 000000000..c7aaf7425 --- /dev/null +++ b/First_project_LAB/First_project_LAB/wsgi.py @@ -0,0 +1,16 @@ +""" +WSGI config for First_project_LAB project. + +It exposes the WSGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/4.0/howto/deployment/wsgi/ +""" + +import os + +from django.core.wsgi import get_wsgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'First_project_LAB.settings') + +application = get_wsgi_application() diff --git a/First_project_LAB/manage.py b/First_project_LAB/manage.py new file mode 100755 index 000000000..1f7498b6e --- /dev/null +++ b/First_project_LAB/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', 'First_project_LAB.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/First_project_LAB/my_first_lab_app/__init__.py b/First_project_LAB/my_first_lab_app/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/First_project_LAB/my_first_lab_app/admin.py b/First_project_LAB/my_first_lab_app/admin.py new file mode 100644 index 000000000..8c38f3f3d --- /dev/null +++ b/First_project_LAB/my_first_lab_app/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/First_project_LAB/my_first_lab_app/apps.py b/First_project_LAB/my_first_lab_app/apps.py new file mode 100644 index 000000000..1c123d64f --- /dev/null +++ b/First_project_LAB/my_first_lab_app/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class MyFirstLabAppConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'my_first_lab_app' diff --git a/First_project_LAB/my_first_lab_app/migrations/__init__.py b/First_project_LAB/my_first_lab_app/migrations/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/First_project_LAB/my_first_lab_app/models.py b/First_project_LAB/my_first_lab_app/models.py new file mode 100644 index 000000000..71a836239 --- /dev/null +++ b/First_project_LAB/my_first_lab_app/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/First_project_LAB/my_first_lab_app/tests.py b/First_project_LAB/my_first_lab_app/tests.py new file mode 100644 index 000000000..7ce503c2d --- /dev/null +++ b/First_project_LAB/my_first_lab_app/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/First_project_LAB/my_first_lab_app/views.py b/First_project_LAB/my_first_lab_app/views.py new file mode 100644 index 000000000..c438ac536 --- /dev/null +++ b/First_project_LAB/my_first_lab_app/views.py @@ -0,0 +1,9 @@ +# from django.shortcuts import render +from django.http import HttpRequest, HttpResponse +# Create your views here. + +def home(request : HttpResponse): + + phrase : str = "Hello World, This is my new HOME !" + + return HttpResponse(phrase) \ No newline at end of file From 88f7952125906cd695b1f31460a5c9706d53fd6d Mon Sep 17 00:00:00 2001 From: Abdullah-Alsalhi Date: Sun, 24 Jul 2022 17:09:21 +0300 Subject: [PATCH 2/3] --amend --- README.md | 58 ++++++++++++++++++++++++++++++++++++++++++ pics/django_lab_1.png | Bin 0 -> 19568 bytes 2 files changed, 58 insertions(+) create mode 100644 pics/django_lab_1.png diff --git a/README.md b/README.md index 9b61aea1c..1e61376e0 100644 --- a/README.md +++ b/README.md @@ -5,3 +5,61 @@ ## When requested (http://127.0.0.1:8000/home), it should return the phrase : - Hello World, This is my new HOME ! + + + +### steps: + +- create new venv and activate it +```bash +python3 -m venv venv +source venv/bin/activate +``` +- install django +```bash +pip install django +``` +- start new project +```bash +django-admin startproject First_Project_LAB +``` +- create app command +``` +python3 manage.py startapp my_first_lab_app +``` + +- in my_first_lab_app/views.py +```python +from django.http import HttpRequest, HttpResponse +# Create your views here. + +def home(request : HttpResponse): + + phrase : str = "Hello World, This is my new HOME !" + + return HttpResponse(phrase); +``` + + +- in First_project-LAB/urls.py +```python +from django.contrib import admin +from django.urls import path +import my_first_lab_app.views.home + + +urlpatterns = [ + path('admin/', admin.site.urls), + path('home/', home), +] +``` + +- run the server + +```bash +python3 manage.py runserver +``` + +- hit the http://127.0.0.1:8000/home + +![response](/pics/django_lab_1.png) \ No newline at end of file diff --git a/pics/django_lab_1.png b/pics/django_lab_1.png new file mode 100644 index 0000000000000000000000000000000000000000..4cf562bbccd1f2a715c53557b34170f4ccbef4f0 GIT binary patch literal 19568 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

$~RC#Lq-FU1GVLnr{7~ zlmVw*CP3EscXi57*9&6ib`aVGI)6+CbhPXj9xVUp>*avB=g zVbWAT4xd_FyyVfKbJ;WL1;h6IZ)ThuTIiC{X~Cj43cgLObp=WQB%<}s9 zgn1$p6FPVB`q=vmVoJ0gKt8wnt7!PK0TyVB=Ee4>suUW4PZvU06(gPA-%-um&7B`? z58M4b)u~nkw951Ja}+VOz|mOgX^)-t(c;#B<~T${#QCc4``V>m+90x*0QFXclYfg9nD?OsMse1^;zl4vTFr}O@{ZLbCxKeVCFqy&Wx#7R= za%I8_q#VL~Y(&+R9F8IxhHIM+!ScNS-$K!8%6ds7CNWn*xFFrRwcJ?@goJ+;{oo1? z87=)^GX1nGNoz3RPPV?uf;&&p9Wz%{e`gSP{ns&MjeNpiEE$*)XPz~ppno|hUABK$ zQjV5Py#4yr+)4q?6M@lhuw;55tgdW-lcwAnQSg85lzA(PEcYWV59_t(+a7+HpXIFy z!=ZMWw0zfpk69xM*Q+LrWz7$sk|=K2a2wDZnYxI+(NhPB=m>29ATsIr*Bl{LwG`D~ zXUQ^-7Zemex*#ZriNLBQ$&G^3vx`!Qjm|$aw`dnr$~8`Q1X+tC7uQ}-6IUEo9La46 zO6w*`*E(OfaAJeITV*rmh4TMI(EgFGMDa-WEk}XNcL3Nk^Z0bX)BSQ`HohD!C#|*z zbJp>Bq8&4!P{5}|?*)y?nfQlnIv19!8~(~QXCU&l@x(_m zp|LyMJeTx`V_)RFqtm1rTX-uUK6pKs_9hgyAk386cdSfhTqsIJo3hzR;%eO9Kpukn zfK-sz4k`a0NH62W$FhnYe`}!P>@zAh_0vfwJ-|YQg zb4eQmk)l>{c<=FhUVRla6ylmMWKgo4Z01Ip;YnOo2$=J^8v~ukVK?OtXAuHlN@z!) zg7pjzKz}>h-%jIphzfrDt0Z!GY(}YAzg|8p{23Ta^H0D^;>@P>e!Lyr7{nZjprxV7 z%?s0AZg#Ufe1*E4D`Cl@CG9*U9537_?xw)SFCn|>;z@julg%hN=u68^=V(SJ6iocS z@hLj{=v))*kYZ5e(vPWSiFj>i5$NdXS_K@ZkGxheizWp(`px;=cvcN8*=jykdQU&@ zSuh9nM#oZ*#}aRqIc#Y1qvsC`}w_s1m{^8|}6v+ouZ7a%_zjFVSV2Sx1sJ z#{+jCJ{H!iyS+d8`5vh4Klu&!E-)CXWbJl)Zwn_gwueZ)yRzr~ychVOxiR=C;{9<& zwI5W$F8~4(`HXLGxz|<#Z3es%WfrPP$(r0q`d^Y+KYoAXp4Ek&odBfY#_N92=b4sQjj}DI(=V2D} z>oFyQnlHd>`xHTCn$H^i`TaX7CY7E7_zOY;g@pVli!)W03Kki~6l}M%&?cN*M}=y@ zjn#e-CztGQ@J9nC0{u(o0dZO{GA5OCuYf{bMOR2o%trv6i1l((%}L?M&X&aS+beqz zA$ux2YMiAV9jwr{fk$%S=1&k~TJNK^-R}89hq!)S!x;sD=5{h5NTxg+ z&OEAJz<}OMjkMuO{-x8ybg-}OK#@xKvg%RIZ^fX_s{FPPi9dm7OiN!?ghc+`x+-wR(01F zrc;+Ni*ruaL>gq97S+()m5Z~_B6zQ)zu}U)s!}}kcCDAK?FuT2yWSaS7kKLd3ePq62CWwtnQOiA4=z`w9B8$2D&@S z#HS@z(T7Jw-mE=QYVWuFg~az?Bwl*XmW3Em9YWpRZ&wSR9NDS4eIf@@>zzW7kZ)59 zw#DZ`F@AoZUfZWQ*6|ec=AY2f2t|K&XkflTT#|B+p{jYJq`{DzVgzPauFW_L2pE-4 z5vjO}h`>QPFx+_5owbk~eNt4_TAr;k5E5u_;MGB%K^PpoHUC(yv(=vsGPVZ)VKdi<*bptu`gePVVafk7)ym@Pt70{%v|DNn&1kxfX+VzH$g}`lWV9w z{wMVXSM?zI+F!tC>5&n}^*z$+4L&b#5WNH_P@jerQ)@da?_^cmUD_L~>KO{x58*I>IJobNy9#nwNCcMou+uEYThkyPjejK81EblaZ0<*}x_09TXxB zjf0I^tlF^X!knCm(PBb3jZEhS`F_B`S> z%{WF0;+w`yhJ#8gC%Q`#0kAYol@CV->cV(`7LF8^Kgok;9xZ-3jU0c;NJ+`+^=D2O zBzCBk7v9E{PDRaJ$_d($GQ&n>2h~y61v>FxA`lEBZ!Ms^>Y>{gt5KVzE9RNWQT|o# zdXF-Q*ZQ0dNfDaKkyw(Jyu7PaC|==zoyh?@)0JjLZ7)be-NAKh$D}U%=yue@1{q94mQ~V7FaXEE4;obo)+rEJ#7zoqMRZ zXJUpO2ITqC^ts;JtFm@_cHb0+j$SU4*47(2id~k99b0AvMGZUROGKe91+zd>Ua75A z0_9S?Py(>F+c!#Xa<0VEV5altiFGIF3qP)z*~ZOe?5e2XsoU8aWnkIx(V)p_d*kJcM@$?;uE8A$7io$mi9TL+^i-E`QTiJ32 zrYVZ*j?vqvS*P6E!6V-i(L&U?yjW?*aMZLaQ`0d6M@3u3)1ytZH+RN!SlvNqHkEfI zfSz}IRCh^3qOHi9MBfdc6PFiypEd+Mi;kY6oUwSsAjfRkU z>Zml~xBPj`)2aaWB_G%NNWpG03l3lS3>P9ElCyf`NA4?uZfW{ut=#6`NaKk@Y8yoo znspJk2pJ??S}twU?*YXa)%QIHRglhH)W=_Gz){UOb2q~N4{>dV=Fq&hnT(-;tH&?j z`jS&wygzkvmY)RQy=GHuto#vBtIjHCH6e%ueG?7K*E^|FSqx}KhgujAmtlS!{t~`? z+aNZ33(0|CaldDb1ZG#BSRPZ!E^QpR9oOqdsRV&UEahwy>WVg4!gTD?*SD^Qm?~2D zOY@8LEjKrRjDIVqE@<(6^D2%$81M6|+)G+|$D$M%S@T<4yVaJo!wgH?4d7u9ijvz? zb4^T2f^7e5aV+4DZ_n{vOKQj4%DNNeOyQx8wUw??;MbdTG&59p z5>i>{qzxg)?n!V~Uo^+QXlhSQ*l~~8kb|! zm#EH(En4y0^lPP_pdKe?(847WADbb9Dm2T%$%@$RvI(!hIE%p(hZYM<(&ktMfak7re0G%uV_8SeX{n$Sk*1wbG zYnk-NTjNsNU#OpeWbeKcAn)v_*I1*1TlPEitkp6vuOu32*CeZF4E{A>ZdRb5iF+26 zvwwG&1N7>w^U@G7ol_0LnVgW8S)wAWnw%v+kZL&a0=wB8gM}ACOHt5*4V2&B-w8mW z;WMuP3M&s{$0n%R3=uCbIM0*C&w~B3mxyN_aD|E_EJB9IV=IMAZ=>=nJG&%lGq&A= z{}Oua%a^lC`cjq@D6?q5BT8%f8z!gPUna1cFmH6iaW{)zd@h}8HCsOJazWI%y)JAU zBfpT*TxSgN=%E5fE&J%GeT6&dM2K+ts8)2eZHs5soQW|BS^IGHMZMh6)XmWKV=G-NSJ zDFLl{s!TpB{^qS~e5IAM@Vp_>4g{T--j7(KcGp2mYdfQZUB;M8!zcBQcljB9i9%W3lO~Yw`bQ7 zFc-7y>^lTxa|C&@h2G)2gS*66qVPB~gHVOOgUdRe?pX%ebli*5*-bR6xE=(Y9?_Nt z>tZS0G0vMqa_1t{v-#5|&-Dx(u1y3D35=wh4u~m-vrc!kkkyedEC8&|cx9|AiiT!3 zJ!`Ap_Gb#Okz3qMA-i&#sY0pF!$TG(edD&=eruT%@Ah1m9^>hm%_p9=I;`nZ5uV1w z3{?7jLEZ-1-ED^KX;Suvd_SsiRB|>(;_TgO1qDmKymj%}eR=7WIw)Jnw=_E{3g!?= zecQb7xI9My6%1&9cLVUyfr+jzPGHOc6lxZU(M%Cry}}ym0|wiDR^KV!K>Z;)^x++J z;D+Qa3-Z1{l*!@^3iXPbNey!=q3fmS&q|~ogA0kpdIG!?<6MsqNbk6oX`w_21thVw zW>buKqf8nNOn$~_OOcnIstbi7*G4q<0XUg0$oswePTUo*YaJ9U?L$leQeANr zDP1_2gVuY3p9mQOYfc-nbL=S`y3L zqk(Il=Xl8$L#iK+`2;RcdRo-5>Tptr*Q?LVRB_B%eI|JNZ0t9tN>}S?=+kkH9D9ml zgv;%_J3S|_&iQ|_ zISKm2hZvMHQfgRp{KAhi7^exnd7E{8cTJym(-x4PJVuX0+O>HJ)GH-uwj2A5F)+)) zP<%Or4LSw-V$;<&Rx7awlw4t^ebHSjWeJD^4iZ{LWm=o>?M5ps=4N*nu(GELz;?+x z?yGYVmn;=yd{i6qGm4!KTUw7mr#dg)Z()~D#RaahB(Oj*B<@{o?J#akv!+zA$6q-j ziprbWEQ;p!TG=%!x)n5eSt%)KR#*IK@0R)nc99n0^n;W`Sv6Z=MTeckg~h(}0bp*^ zArgo}+*Q??>}K7gno^-}N&ZiTS$z<(6U^~_|H|X}l!YH~QiXTc@=mxYoYrdSp!rbRF+!TRKS|o;z-JH0oI|HZ$(#4czk-OE3a$BJ>H(+Z_2*>g zHzNI>d1M0)-MoU?`k4r;Uqf&K6p`LvW_V%u4zB&C!v(keX4jf5?a zn3?>fLaG(wGVLqqzLpWJ)^YVoCj9+X+Xi8}HwjkeE;Ig!?&J?bQS|qp8DRWbp%u8i zn))Gz-ft@KJ_YZu7=vqxfnV+Qxc&3Ja2)6I3-o~&Exq90?9XHY{|5i1ZO@?p`+r5i|HML|^mX?!04!mW{gW_L zpuytic&*p7@ziHgZ00ZjDUb3#7>JCePBTVR!DRHht$bME(jSLhV6`-pyo|qT(HvJD z)z2h|`$!pF{&_M4NH`pEG$hsed9X_`n2E!-cGW(dY>tYdB;rb&qXu~ zGt5`Kg7dLn)tgp(?wTEBMi;uT#>V)b4OupmMkyWm$8S-7Cw>zDW-9)mZ?GV&oRQWQ zBbB$UH!KQKtn{7J{($!$n`2s@K;A``M!UE--eE!NQiNA(l3z~x_wOJ+X9N=aR)w;l zF_B>gzn?@}`d5^LqG&5|B#+=5+YFb=iJsnyjz#rto_0)_$2}{-7T(!$$wpK6bgn5a zOKQ8shXv@U*B&;squpT#0mB&i7cjJ$S@w!+Pp{@oN`6X(OH-|vHSpQ*H%uunLQ&uq zC$JDn|2*2Mc;!pKmh`nH@)X(DVreLZu1Vr`UJ-^nSv6KUx@s@D5Ry~}kPS$8>4n%E z(oj$gptJs|A&%;&FiORj2~^pD#XqT{zMhaQ5TPv~w)GITiWl@>1j4@T*z2Qve^d1f zyN)3R)OxHT39Dp2Kc-N!V4KF@-_H~f!od#KdgxOcy+_+ixoea#j8NLHIn5KXb^o%! zo`^6jAg11EYq+Jz3nN08UiV8$*mkI%!Qkag{>w_GoUJRNPTzQf^+nMuwjd=X;TejB zJ2}W*41>4pm$&g5qu6ee1?%C7fOJw|L1|xVj>K}yUO{5CaW@HOmO@MBmMJOu!1qA9 zsIOILwvOiN^+d!$uA$GRAFqVB8`OHTW-1$>|J9`a%IUh_?W{m5ZBldyV+fil)}7<# zSJcT*Q;}I6CnFVPCgMaK)Hsvg{G%-NA~~zPau}^}tA1wyt5)=b@BqEKJnuqs*8a%o z0KqQI3V!R_y*7ex`Ihm7kDxFYe^c+h48ePJk|olf1GCB5V&Qf7zJ93f-?SBMUKt6Z z47$CsZ$C`~5Vi2pm^+iE9{GURhdNH%Xe*Ai_fccw_ZkGKq&qn@_I6iqYP7{d*xD=R zUBW!=aStNrqj3#`1yt+I10Mq;%Ru@JL1NBWT4o~a2n~aq4lL+gr98AYyxh8N_>^D% zs>*KPID=J0ua{M?-6|<~I>V?2+2*ku1iY4_z#F}8gQW-ysz5J+Xyd{@PYDil?=;15%2 z_)cqSUrseTeY;<~t}Cu>NRCA9-bHWkK!|h@X(NUV#CB)=6*xcmr0;*JGb>;|nPe7s zy>Au&V5a0kT>q>%FfL8$sBRtJuVXkuVf)6b3@T1gGx@~K7~H)R+Cd+;NH%fa|J}xh zTc%@KW<42eS}sm>p0CLC^;=jw6$GaD!q>Q~Mdh9o!LnoqWufsNw7T%nmPS52gCmVH zt@g&2#8q!Xga`3I%;V&)XIAlU!mDMYp{_*^xs(B}_Ea^Ve%NA#RFuq&9q;vZRI)OU ztBdpQH!+kQ0J63bA_l5!x8mya{P6-3=AHshG|z*d*aNfkn!C1IVk0%jw`yOcPxGg^ z3k-_*r`L7+Te9$Wll*rJ2i<@D4%NYl;|4u-dKcTa(nQT!mnpz2KCzuocnHf(ORmQX zFTXQ{|HTyKj1xl@&(la7T1gWg8Q_?X*;ArB3QMgE6>|^P==^pq>CG4vc@y2rBFaeW z77AU6SFV#Fp8E!+J=)}r8D>$>RTf&m5P!PD2Ci4nkvI;fR4ygS2e>dq5Gzo&b@#F> z)w72sou~{CG4~ft|HLJddwmrpf3tlsx78H00<_!xo?=MFTy{~`u1%SUDwH5;F|~g$gl!8Q_5dmh2voP0Id{?4dwF1nPhmeWzveBm+k9!OB#w-2pp!!Jb#QLKw=K7%TV-Iz%}u(Bj>T!qWVl$&V!DvjqGe7k zPf$ldS0z_4VaH5 zp%yVD_I@>a-PtSrkWcJwFFPSFkn}XwcWpJZN{?*C8I4;XdXyMJGH5ts7O)Lzd+J2m zg$D|7%E?)F6b-XBrFR;a5b|&eM@NPy?Oa5r7*iA2G!W1Qv>EE0QIs-FB+dxwX%e}& zcfR$@dM>F}Fu;h9Ml77g&O8*2^35|Q>_}MbT^6(HM7GR;e5Ys*&gJ59KK~FeOcEKC z7|InP-yH%@Iqhl&l&g^iP=<*2k4}kvuFc)=Kz}|y_|807Sq4-DCL+byCF3Ym0%D@{ zXs9nH5|PfBQ>B|PEm|^N{7M**r$&F-;F2&($VVsUAM}l0 zIg{`GJzhxT+Gpfhs7YztsY0(+FHGva(4(a;E*#|()TA3k`7TbvSjDeRG^_x(H$Ex4 zLY(7X-*!9W!c$j$?p>lhvDU67KUwyot2X%I(Dd(?3EH8ZW_)LYT!mC4&qeFKa>JT* zA!V^Y=m-5aADiO$B|*=BBH;G=MM`r9d8DG|3HCb(X{|#T5@+a5c^)?AToY|eEK6ne zXa+muR;m*)ZSGX#315EG>|zG)yEslK(pP1cCMgAtAWa|Jk=4mNsUH39xRX-J&E$|_ z&Sx76qrF2>I+)%I5{ZoyJ~=DqX}%r-&WXi8*t>bGCgo6#cvV?=ny&xwJc3{OJ$1Q> z62g@>DKRu1+kgGTJJL3^YQIK$%W1nTWAFAN%E@%^hv$_Abv)IM84v5REUb0Y4+hU#vD7+mb9IBL>s&-46B;_%f>jwBN`sh?uFrJyJ3yZiG*dY{?7mr=yOA zdY#e7FeOp69e+KjWzZ;Mj76q1v7MC;F)5{@0-j5uA8?I^y$_Wf`#Q#&YH?AGUU`}L zzI9gFBqkgjgI5;{?-xG_!VJWXP|#Nj<-oR6Z)$g)$K3?>QgtGz$0|AKYAG&409HxRttq>&fubncj=0f<_{ID3{x1sYd z-TtlQv9em_0E)TcnH%K3ar_WyEL$nE@pWKgV#9E19)=|RXKF#gPY6RV7M#F)Am+*r zYhT}-{89t8AZ_B|OMV#cAF=ozty(v{DMs1xFBJx2%7T(AIQ6>4j#6=pO{|P0e0<)!TW?FnW-d zR^$l3ze~}T36*Ln-H2eE+{aKl+Px6haZn~_z{(iXQciXtVFIn=hw3CFGZHpgd}-yP zO){a2)@W@iwXBEe;~#OMG;1ZF46DFMq>(aC8(K^!UJCfqB{L(rek8M6eyKjVI&ZA9 z=V^TR(M-Yf!gb{&QOdLTp*vHh*t;s4*Z%v)vfOLs>QTMk2v4er8+(0eB!L1kUJ@Re z+`{lo;g&wCg7JVbYo6$D?%CV`GJKD{Xhu90trcFHR+`*0_o8{L5IGVK#`Cx>C-?@RD$~C6AtQZxgEqd%hX|6}c+hMnPE$6wsE&e9) zAep{3ya;TTF*(Cb9K}TG>49S?3jiW8L^!Oy;eK-??n)}4mzBf&*SEM1J|awvT=X5@ zO8xS(k`jHKQBhMQIY=KUWD7N_>Fnkhu@iQh1|h%r8N7K>N$c~n5A9fT$u@ez zFy-lassxRL%5r2W!c4_1)duG3<3Y31wa%{rw{L}iuD`k%wreC73@#9`?8T)Rv_=g* zYJR30T29qHkdZ(iKABrfkk% zI-+urh!Q&2y5a1UhuHu;9^CZDE8A@dMa`ctT;?O1@;&tgO}P^aJ!NpV!_!YAZeQhs zV1hvJ+8YB2&?Jl<5Mn{D;ifv9ewa0wl+{=@Px&0O-`Ah#3OonVg&Lj>k4Pk5O>|gI zkC#otf3-yc3s6I;Dkr)-Rkp2_$vlOYvgHguKqQLZh_qH@GI_U(i38V~56TZn;q`1tX1-2uZ~NNO$u1Awk}YOdj{?aRa;cD-_*7ho9dy?tWQ zvV9oiwDU}+WC0@(%T|`GVm9U06%Tj6ywsU1E4zs=U#s3U>&zydgxtuOH@9Y#aH8lW z^D$ldW$P=@YkF2!d%INt0s^W2-~R<5019ix#&-`j&}%*2^D5t)#$HRq(%M&&KR=CA z3a#FwCdse4>A+CM;x+`rk)@-!sm)u_hs0zZoi)+YA-j;dFZ z!i8OU6UYqI>Ggab{v7|UpvK0E!;>I>D5E8?k55L*n<^*1gU1*cCL%mbt>-lhu^?B_DaDUH(2?8c+4etlWx?6@tSo^n$ zd!tUlFph+aC)e!j$mj=bS2 zd2QNR5mjiu2h$G5UfW*}Z)w=eXK4O@?~pR#4E(J(>Uy!NV+OwvT3t7}in?wY#hNBc zcsm}uvKBJ4iLwzfFZQZ>;UPA-+)>fCH&Dy-k!Od$K{|lyCKi)mEeRRqE9sAiOECo& zWygaaK$DQ$pCv-Nq2wpAk$Sr7UDR>`M2H}_r% zyCXbaVX*K)U9!p<4nB5^5@4*rBPdYFyIpd!ZHoY*;Ka@m2G{AWc`kAqdd$|OEhRg;ht0YOK$ zSqp@|2MGg$=KJ(PJCNqb)?1nh?HuxJoPmQUc2rP6(u-qN3x8?tDww_V#0FS1pO*4GMjJF~LKi+T9&!&4DEV1X+~r(s_{2+PB6+!mHYyv-1n z`gsGnE^$V&hH@2TQtv2aL3^Pr{~%IWsXB8JTY&j17oD~k`Syu|N%_?rH_wJdxTrwa z7fBiE8go&AriAVJ7dcvUdn+Do94KNJ*FsP$HcVntO0RG& zjQrop18F_!+gBqF+2i6dH3nz(7`AA!jbAAJ-Fb!lhJ~z;L?XS_4=;Ncyk?!Mn`MEQ znbj!{SQslK#mRjt)f5Ez>W*%}8y5AH%&^H)zcBF)a(gU`U@) zZpg5J;c!St^gnylUySrvL!wO^^nD86e!`|~DkV7blT?S!%3?MteB99Iq}hdl`XZ!S z-qJ4*6b+ixR0yOaLFb|J3LbJ{L5E*j%Qv)_*4=Y8z9tLZPG-J+CgIU)dt(EzT z5q5}y1_ohB^qvBtf`aOchCivnxA43*Pt>6CUf^y9f01`ZYE$Vm+q>Hn0m}oEaa-L1 z#;q+WYgM}txN&lQ#W0y#o$Mk{T0Y8N$F<&hv;R3Cwrrlv-O8b!ngOOhCy~e)R-W_n zQ18+Z?zw}G0lv(2Hf3ko1A%9fIg{6&a*f)-KEngM$+zBk$wdUNZ86IaLwC4Q`%`^t z+h3VEr3uCm6TSCfKw^k;nKNjR(=xKWK2|t2*R|A|iZC4Y9mMTNs;zZtphjOMH-+aL z!2{z|!t!Hb?45{=QeWD~h`1HlfjN8(p0L0m=1f3v)0Lg^F;@7mzzE&%_myaw&dU_)kWc0C2wiUC*L_pdRNAH- z7N%ZDw4G2~!Fb1@pV`jgs08j{!YV1$on0{`x9pw@E=1ZJsLgAo_RMndj*}ZH;1y>O zi9Nj$$R)dD_d41!9hI1Bdv_vqD&d~?=-mCrj>bCI;l~(E;|4u+1VSBPrVrbOFm-@a zh(P7At7~g0@Oc07zdc}E(BsG{h%}*e9CnwPv8kL2e!Cv$03BkIcN>3hi4SRAwK%i z&TBll`s(OLw%cIK`ixrZyUWd*1ajZj*PSDO5ba<=kncxHSE3VeuSa9nbAK(WhHD9_ zOir}XolQgdHHLT2*zd7q=tHAlev{V88ObxX$7D-A|m7o|fiYdoLKoUeSv9 zaBvl_3y9`d zu&O!r<1!asMW76PW}H!X;aO|Q?omp|_;^GsAfGw^iatNzS&3u3)XD#rWI?_g=KpUU g3-dpz#5eB)%p~3&0kSxzf$?3lcCu==y#3FA00Qz@od5s; literal 0 HcmV?d00001 From 96a174bf07e61cf9fb21c4e122d824a4af81372d Mon Sep 17 00:00:00 2001 From: Abdullah-Alsalhi Date: Sun, 24 Jul 2022 17:14:33 +0300 Subject: [PATCH 3/3] --amend --- requiremnets.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 requiremnets.txt diff --git a/requiremnets.txt b/requiremnets.txt new file mode 100644 index 000000000..57fb7d602 --- /dev/null +++ b/requiremnets.txt @@ -0,0 +1,3 @@ +asgiref==3.5.2 +Django==4.0.6 +sqlparse==0.4.2