diff --git a/src/db.sqlite3 b/src/db.sqlite3
new file mode 100644
index 0000000000..156f0d43ab
Binary files /dev/null and b/src/db.sqlite3 differ
diff --git a/src/manage.py b/src/manage.py
new file mode 100755
index 0000000000..ddce531536
--- /dev/null
+++ b/src/manage.py
@@ -0,0 +1,15 @@
+#!/usr/bin/env python
+import os
+import sys
+
+if __name__ == '__main__':
+ os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'trydjango.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)
diff --git a/src/pages/__init__.py b/src/pages/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/pages/admin.py b/src/pages/admin.py
new file mode 100644
index 0000000000..8c38f3f3da
--- /dev/null
+++ b/src/pages/admin.py
@@ -0,0 +1,3 @@
+from django.contrib import admin
+
+# Register your models here.
diff --git a/src/pages/apps.py b/src/pages/apps.py
new file mode 100644
index 0000000000..cdd024b21f
--- /dev/null
+++ b/src/pages/apps.py
@@ -0,0 +1,6 @@
+from django.apps import AppConfig
+
+
+class PagesConfig(AppConfig):
+ default_auto_field = 'django.db.models.BigAutoField'
+ name = 'pages'
diff --git a/src/pages/migrations/__init__.py b/src/pages/migrations/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/pages/models.py b/src/pages/models.py
new file mode 100644
index 0000000000..71a8362390
--- /dev/null
+++ b/src/pages/models.py
@@ -0,0 +1,3 @@
+from django.db import models
+
+# Create your models here.
diff --git a/src/pages/tests.py b/src/pages/tests.py
new file mode 100644
index 0000000000..7ce503c2dd
--- /dev/null
+++ b/src/pages/tests.py
@@ -0,0 +1,3 @@
+from django.test import TestCase
+
+# Create your tests here.
diff --git a/src/pages/views.py b/src/pages/views.py
new file mode 100644
index 0000000000..ec462f1853
--- /dev/null
+++ b/src/pages/views.py
@@ -0,0 +1,6 @@
+from django.http import HttpResponse
+from django.shortcuts import render
+
+# Create your views here.
+def home_view(*args, **kwargs):
+ return HttpResponse("
Hello world
")
\ No newline at end of file
diff --git a/src/products/__init__.py b/src/products/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/products/__pycache__/__init__.cpython-38.pyc b/src/products/__pycache__/__init__.cpython-38.pyc
new file mode 100644
index 0000000000..370f5dc488
Binary files /dev/null and b/src/products/__pycache__/__init__.cpython-38.pyc differ
diff --git a/src/products/__pycache__/admin.cpython-38.pyc b/src/products/__pycache__/admin.cpython-38.pyc
new file mode 100644
index 0000000000..6b438a5ea7
Binary files /dev/null and b/src/products/__pycache__/admin.cpython-38.pyc differ
diff --git a/src/products/__pycache__/apps.cpython-38.pyc b/src/products/__pycache__/apps.cpython-38.pyc
new file mode 100644
index 0000000000..5433f74ab9
Binary files /dev/null and b/src/products/__pycache__/apps.cpython-38.pyc differ
diff --git a/src/products/__pycache__/models.cpython-38.pyc b/src/products/__pycache__/models.cpython-38.pyc
new file mode 100644
index 0000000000..f03b0e73a5
Binary files /dev/null and b/src/products/__pycache__/models.cpython-38.pyc differ
diff --git a/src/products/admin.py b/src/products/admin.py
new file mode 100644
index 0000000000..773b3a1c15
--- /dev/null
+++ b/src/products/admin.py
@@ -0,0 +1,6 @@
+from django.contrib import admin
+
+# Register your models here.
+from .models import Product
+
+admin.site.register(Product)
\ No newline at end of file
diff --git a/src/products/apps.py b/src/products/apps.py
new file mode 100644
index 0000000000..145a2ac9e4
--- /dev/null
+++ b/src/products/apps.py
@@ -0,0 +1,6 @@
+from django.apps import AppConfig
+
+
+class ProductsConfig(AppConfig):
+ default_auto_field = 'django.db.models.BigAutoField'
+ name = 'products'
diff --git a/src/products/models.py b/src/products/models.py
new file mode 100644
index 0000000000..ab90ac7b07
--- /dev/null
+++ b/src/products/models.py
@@ -0,0 +1,9 @@
+from django.db import models
+
+# Create your models here.
+class Product(models.Model):
+ title = models.CharField(max_length=120) #maxlength = required
+ description = models.TextField(blank=True, null=True)
+ price = models.DecimalField(decimal_places=2, max_digits=10000)
+ summary = models.TextField(blank=False, null=False)
+ featured = models.BooleanField()
\ No newline at end of file
diff --git a/src/products/tests.py b/src/products/tests.py
new file mode 100644
index 0000000000..7ce503c2dd
--- /dev/null
+++ b/src/products/tests.py
@@ -0,0 +1,3 @@
+from django.test import TestCase
+
+# Create your tests here.
diff --git a/src/products/views.py b/src/products/views.py
new file mode 100644
index 0000000000..91ea44a218
--- /dev/null
+++ b/src/products/views.py
@@ -0,0 +1,3 @@
+from django.shortcuts import render
+
+# Create your views here.
diff --git a/src/profiles/__init__.py b/src/profiles/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/profiles/admin.py b/src/profiles/admin.py
new file mode 100644
index 0000000000..8c38f3f3da
--- /dev/null
+++ b/src/profiles/admin.py
@@ -0,0 +1,3 @@
+from django.contrib import admin
+
+# Register your models here.
diff --git a/src/profiles/apps.py b/src/profiles/apps.py
new file mode 100644
index 0000000000..d722976462
--- /dev/null
+++ b/src/profiles/apps.py
@@ -0,0 +1,6 @@
+from django.apps import AppConfig
+
+
+class ProfilesConfig(AppConfig):
+ default_auto_field = 'django.db.models.BigAutoField'
+ name = 'profiles'
diff --git a/src/profiles/migrations/__init__.py b/src/profiles/migrations/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/profiles/models.py b/src/profiles/models.py
new file mode 100644
index 0000000000..71a8362390
--- /dev/null
+++ b/src/profiles/models.py
@@ -0,0 +1,3 @@
+from django.db import models
+
+# Create your models here.
diff --git a/src/profiles/tests.py b/src/profiles/tests.py
new file mode 100644
index 0000000000..7ce503c2dd
--- /dev/null
+++ b/src/profiles/tests.py
@@ -0,0 +1,3 @@
+from django.test import TestCase
+
+# Create your tests here.
diff --git a/src/profiles/views.py b/src/profiles/views.py
new file mode 100644
index 0000000000..91ea44a218
--- /dev/null
+++ b/src/profiles/views.py
@@ -0,0 +1,3 @@
+from django.shortcuts import render
+
+# Create your views here.
diff --git a/src/trydjango/__init__.py b/src/trydjango/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/trydjango/__pycache__/__init__.cpython-312.pyc b/src/trydjango/__pycache__/__init__.cpython-312.pyc
new file mode 100644
index 0000000000..fa8c039b9a
Binary files /dev/null and b/src/trydjango/__pycache__/__init__.cpython-312.pyc differ
diff --git a/src/trydjango/__pycache__/__init__.cpython-38.pyc b/src/trydjango/__pycache__/__init__.cpython-38.pyc
new file mode 100644
index 0000000000..72f1223c35
Binary files /dev/null and b/src/trydjango/__pycache__/__init__.cpython-38.pyc differ
diff --git a/src/trydjango/__pycache__/settings.cpython-312.pyc b/src/trydjango/__pycache__/settings.cpython-312.pyc
new file mode 100644
index 0000000000..8b6780fa44
Binary files /dev/null and b/src/trydjango/__pycache__/settings.cpython-312.pyc differ
diff --git a/src/trydjango/__pycache__/settings.cpython-38.pyc b/src/trydjango/__pycache__/settings.cpython-38.pyc
new file mode 100644
index 0000000000..82100e1e9e
Binary files /dev/null and b/src/trydjango/__pycache__/settings.cpython-38.pyc differ
diff --git a/src/trydjango/__pycache__/urls.cpython-38.pyc b/src/trydjango/__pycache__/urls.cpython-38.pyc
new file mode 100644
index 0000000000..8ac6f6ebf4
Binary files /dev/null and b/src/trydjango/__pycache__/urls.cpython-38.pyc differ
diff --git a/src/trydjango/__pycache__/wsgi.cpython-38.pyc b/src/trydjango/__pycache__/wsgi.cpython-38.pyc
new file mode 100644
index 0000000000..23c3ea4e7d
Binary files /dev/null and b/src/trydjango/__pycache__/wsgi.cpython-38.pyc differ
diff --git a/src/trydjango/settings.py b/src/trydjango/settings.py
new file mode 100644
index 0000000000..e523c1bb02
--- /dev/null
+++ b/src/trydjango/settings.py
@@ -0,0 +1,126 @@
+"""
+Django settings for trydjango project.
+
+Generated by 'django-admin startproject' using Django 2.1.7.
+
+For more information on this file, see
+https://docs.djangoproject.com/en/2.1/topics/settings/
+
+For the full list of settings and their values, see
+https://docs.djangoproject.com/en/2.1/ref/settings/
+"""
+
+import os
+
+# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
+BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
+
+
+# Quick-start development settings - unsuitable for production
+# See https://docs.djangoproject.com/en/2.1/howto/deployment/checklist/
+
+# SECURITY WARNING: keep the secret key used in production secret!
+SECRET_KEY = '^w2en^di2rqoe4fst9u-3v3c_i-+*=q13!l3kfaq7to6urhnq1'
+
+# 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',
+
+ #third party
+
+ #own
+ 'products',
+ 'pages'
+]
+
+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 = 'trydjango.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 = 'trydjango.wsgi.application'
+
+
+# Database
+# https://docs.djangoproject.com/en/2.1/ref/settings/#databases
+
+DATABASES = {
+ 'default': {
+ 'ENGINE': 'django.db.backends.sqlite3',
+ 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
+ }
+}
+
+
+# Password validation
+# https://docs.djangoproject.com/en/2.1/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/2.1/topics/i18n/
+
+LANGUAGE_CODE = 'en-us'
+
+TIME_ZONE = 'UTC'
+
+USE_I18N = True
+
+USE_L10N = True
+
+USE_TZ = True
+
+
+# Static files (CSS, JavaScript, Images)
+# https://docs.djangoproject.com/en/2.1/howto/static-files/
+
+STATIC_URL = '/static/'
diff --git a/src/trydjango/urls.py b/src/trydjango/urls.py
new file mode 100644
index 0000000000..102b41b82b
--- /dev/null
+++ b/src/trydjango/urls.py
@@ -0,0 +1,24 @@
+"""trydjango URL Configuration
+
+The `urlpatterns` list routes URLs to views. For more information please see:
+ https://docs.djangoproject.com/en/2.1/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
+
+from pages.views import home_view
+
+urlpatterns = [
+ path('', home_view, name='home'),
+ path('admin/', admin.site.urls),
+]
diff --git a/src/trydjango/wsgi.py b/src/trydjango/wsgi.py
new file mode 100644
index 0000000000..47a28f9ce2
--- /dev/null
+++ b/src/trydjango/wsgi.py
@@ -0,0 +1,16 @@
+"""
+WSGI config for trydjango 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/2.1/howto/deployment/wsgi/
+"""
+
+import os
+
+from django.core.wsgi import get_wsgi_application
+
+os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'trydjango.settings')
+
+application = get_wsgi_application()
diff --git a/src/venv/bin/Activate.ps1 b/src/venv/bin/Activate.ps1
new file mode 100644
index 0000000000..2fb3852c3c
--- /dev/null
+++ b/src/venv/bin/Activate.ps1
@@ -0,0 +1,241 @@
+<#
+.Synopsis
+Activate a Python virtual environment for the current PowerShell session.
+
+.Description
+Pushes the python executable for a virtual environment to the front of the
+$Env:PATH environment variable and sets the prompt to signify that you are
+in a Python virtual environment. Makes use of the command line switches as
+well as the `pyvenv.cfg` file values present in the virtual environment.
+
+.Parameter VenvDir
+Path to the directory that contains the virtual environment to activate. The
+default value for this is the parent of the directory that the Activate.ps1
+script is located within.
+
+.Parameter Prompt
+The prompt prefix to display when this virtual environment is activated. By
+default, this prompt is the name of the virtual environment folder (VenvDir)
+surrounded by parentheses and followed by a single space (ie. '(.venv) ').
+
+.Example
+Activate.ps1
+Activates the Python virtual environment that contains the Activate.ps1 script.
+
+.Example
+Activate.ps1 -Verbose
+Activates the Python virtual environment that contains the Activate.ps1 script,
+and shows extra information about the activation as it executes.
+
+.Example
+Activate.ps1 -VenvDir C:\Users\MyUser\Common\.venv
+Activates the Python virtual environment located in the specified location.
+
+.Example
+Activate.ps1 -Prompt "MyPython"
+Activates the Python virtual environment that contains the Activate.ps1 script,
+and prefixes the current prompt with the specified string (surrounded in
+parentheses) while the virtual environment is active.
+
+.Notes
+On Windows, it may be required to enable this Activate.ps1 script by setting the
+execution policy for the user. You can do this by issuing the following PowerShell
+command:
+
+PS C:\> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
+
+For more information on Execution Policies:
+https://go.microsoft.com/fwlink/?LinkID=135170
+
+#>
+Param(
+ [Parameter(Mandatory = $false)]
+ [String]
+ $VenvDir,
+ [Parameter(Mandatory = $false)]
+ [String]
+ $Prompt
+)
+
+<# Function declarations --------------------------------------------------- #>
+
+<#
+.Synopsis
+Remove all shell session elements added by the Activate script, including the
+addition of the virtual environment's Python executable from the beginning of
+the PATH variable.
+
+.Parameter NonDestructive
+If present, do not remove this function from the global namespace for the
+session.
+
+#>
+function global:deactivate ([switch]$NonDestructive) {
+ # Revert to original values
+
+ # The prior prompt:
+ if (Test-Path -Path Function:_OLD_VIRTUAL_PROMPT) {
+ Copy-Item -Path Function:_OLD_VIRTUAL_PROMPT -Destination Function:prompt
+ Remove-Item -Path Function:_OLD_VIRTUAL_PROMPT
+ }
+
+ # The prior PYTHONHOME:
+ if (Test-Path -Path Env:_OLD_VIRTUAL_PYTHONHOME) {
+ Copy-Item -Path Env:_OLD_VIRTUAL_PYTHONHOME -Destination Env:PYTHONHOME
+ Remove-Item -Path Env:_OLD_VIRTUAL_PYTHONHOME
+ }
+
+ # The prior PATH:
+ if (Test-Path -Path Env:_OLD_VIRTUAL_PATH) {
+ Copy-Item -Path Env:_OLD_VIRTUAL_PATH -Destination Env:PATH
+ Remove-Item -Path Env:_OLD_VIRTUAL_PATH
+ }
+
+ # Just remove the VIRTUAL_ENV altogether:
+ if (Test-Path -Path Env:VIRTUAL_ENV) {
+ Remove-Item -Path env:VIRTUAL_ENV
+ }
+
+ # Just remove the _PYTHON_VENV_PROMPT_PREFIX altogether:
+ if (Get-Variable -Name "_PYTHON_VENV_PROMPT_PREFIX" -ErrorAction SilentlyContinue) {
+ Remove-Variable -Name _PYTHON_VENV_PROMPT_PREFIX -Scope Global -Force
+ }
+
+ # Leave deactivate function in the global namespace if requested:
+ if (-not $NonDestructive) {
+ Remove-Item -Path function:deactivate
+ }
+}
+
+<#
+.Description
+Get-PyVenvConfig parses the values from the pyvenv.cfg file located in the
+given folder, and returns them in a map.
+
+For each line in the pyvenv.cfg file, if that line can be parsed into exactly
+two strings separated by `=` (with any amount of whitespace surrounding the =)
+then it is considered a `key = value` line. The left hand string is the key,
+the right hand is the value.
+
+If the value starts with a `'` or a `"` then the first and last character is
+stripped from the value before being captured.
+
+.Parameter ConfigDir
+Path to the directory that contains the `pyvenv.cfg` file.
+#>
+function Get-PyVenvConfig(
+ [String]
+ $ConfigDir
+) {
+ Write-Verbose "Given ConfigDir=$ConfigDir, obtain values in pyvenv.cfg"
+
+ # Ensure the file exists, and issue a warning if it doesn't (but still allow the function to continue).
+ $pyvenvConfigPath = Join-Path -Resolve -Path $ConfigDir -ChildPath 'pyvenv.cfg' -ErrorAction Continue
+
+ # An empty map will be returned if no config file is found.
+ $pyvenvConfig = @{ }
+
+ if ($pyvenvConfigPath) {
+
+ Write-Verbose "File exists, parse `key = value` lines"
+ $pyvenvConfigContent = Get-Content -Path $pyvenvConfigPath
+
+ $pyvenvConfigContent | ForEach-Object {
+ $keyval = $PSItem -split "\s*=\s*", 2
+ if ($keyval[0] -and $keyval[1]) {
+ $val = $keyval[1]
+
+ # Remove extraneous quotations around a string value.
+ if ("'""".Contains($val.Substring(0, 1))) {
+ $val = $val.Substring(1, $val.Length - 2)
+ }
+
+ $pyvenvConfig[$keyval[0]] = $val
+ Write-Verbose "Adding Key: '$($keyval[0])'='$val'"
+ }
+ }
+ }
+ return $pyvenvConfig
+}
+
+
+<# Begin Activate script --------------------------------------------------- #>
+
+# Determine the containing directory of this script
+$VenvExecPath = Split-Path -Parent $MyInvocation.MyCommand.Definition
+$VenvExecDir = Get-Item -Path $VenvExecPath
+
+Write-Verbose "Activation script is located in path: '$VenvExecPath'"
+Write-Verbose "VenvExecDir Fullname: '$($VenvExecDir.FullName)"
+Write-Verbose "VenvExecDir Name: '$($VenvExecDir.Name)"
+
+# Set values required in priority: CmdLine, ConfigFile, Default
+# First, get the location of the virtual environment, it might not be
+# VenvExecDir if specified on the command line.
+if ($VenvDir) {
+ Write-Verbose "VenvDir given as parameter, using '$VenvDir' to determine values"
+}
+else {
+ Write-Verbose "VenvDir not given as a parameter, using parent directory name as VenvDir."
+ $VenvDir = $VenvExecDir.Parent.FullName.TrimEnd("\\/")
+ Write-Verbose "VenvDir=$VenvDir"
+}
+
+# Next, read the `pyvenv.cfg` file to determine any required value such
+# as `prompt`.
+$pyvenvCfg = Get-PyVenvConfig -ConfigDir $VenvDir
+
+# Next, set the prompt from the command line, or the config file, or
+# just use the name of the virtual environment folder.
+if ($Prompt) {
+ Write-Verbose "Prompt specified as argument, using '$Prompt'"
+}
+else {
+ Write-Verbose "Prompt not specified as argument to script, checking pyvenv.cfg value"
+ if ($pyvenvCfg -and $pyvenvCfg['prompt']) {
+ Write-Verbose " Setting based on value in pyvenv.cfg='$($pyvenvCfg['prompt'])'"
+ $Prompt = $pyvenvCfg['prompt'];
+ }
+ else {
+ Write-Verbose " Setting prompt based on parent's directory's name. (Is the directory name passed to venv module when creating the virutal environment)"
+ Write-Verbose " Got leaf-name of $VenvDir='$(Split-Path -Path $venvDir -Leaf)'"
+ $Prompt = Split-Path -Path $venvDir -Leaf
+ }
+}
+
+Write-Verbose "Prompt = '$Prompt'"
+Write-Verbose "VenvDir='$VenvDir'"
+
+# Deactivate any currently active virtual environment, but leave the
+# deactivate function in place.
+deactivate -nondestructive
+
+# Now set the environment variable VIRTUAL_ENV, used by many tools to determine
+# that there is an activated venv.
+$env:VIRTUAL_ENV = $VenvDir
+
+if (-not $Env:VIRTUAL_ENV_DISABLE_PROMPT) {
+
+ Write-Verbose "Setting prompt to '$Prompt'"
+
+ # Set the prompt to include the env name
+ # Make sure _OLD_VIRTUAL_PROMPT is global
+ function global:_OLD_VIRTUAL_PROMPT { "" }
+ Copy-Item -Path function:prompt -Destination function:_OLD_VIRTUAL_PROMPT
+ New-Variable -Name _PYTHON_VENV_PROMPT_PREFIX -Description "Python virtual environment prompt prefix" -Scope Global -Option ReadOnly -Visibility Public -Value $Prompt
+
+ function global:prompt {
+ Write-Host -NoNewline -ForegroundColor Green "($_PYTHON_VENV_PROMPT_PREFIX) "
+ _OLD_VIRTUAL_PROMPT
+ }
+}
+
+# Clear PYTHONHOME
+if (Test-Path -Path Env:PYTHONHOME) {
+ Copy-Item -Path Env:PYTHONHOME -Destination Env:_OLD_VIRTUAL_PYTHONHOME
+ Remove-Item -Path Env:PYTHONHOME
+}
+
+# Add the venv to the PATH
+Copy-Item -Path Env:PATH -Destination Env:_OLD_VIRTUAL_PATH
+$Env:PATH = "$VenvExecDir$([System.IO.Path]::PathSeparator)$Env:PATH"
diff --git a/src/venv/bin/activate b/src/venv/bin/activate
new file mode 100644
index 0000000000..3d96df97b4
--- /dev/null
+++ b/src/venv/bin/activate
@@ -0,0 +1,76 @@
+# This file must be used with "source bin/activate" *from bash*
+# you cannot run it directly
+
+deactivate () {
+ # reset old environment variables
+ if [ -n "${_OLD_VIRTUAL_PATH:-}" ] ; then
+ PATH="${_OLD_VIRTUAL_PATH:-}"
+ export PATH
+ unset _OLD_VIRTUAL_PATH
+ fi
+ if [ -n "${_OLD_VIRTUAL_PYTHONHOME:-}" ] ; then
+ PYTHONHOME="${_OLD_VIRTUAL_PYTHONHOME:-}"
+ export PYTHONHOME
+ unset _OLD_VIRTUAL_PYTHONHOME
+ fi
+
+ # This should detect bash and zsh, which have a hash command that must
+ # be called to get it to forget past commands. Without forgetting
+ # past commands the $PATH changes we made may not be respected
+ if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then
+ hash -r
+ fi
+
+ if [ -n "${_OLD_VIRTUAL_PS1:-}" ] ; then
+ PS1="${_OLD_VIRTUAL_PS1:-}"
+ export PS1
+ unset _OLD_VIRTUAL_PS1
+ fi
+
+ unset VIRTUAL_ENV
+ if [ ! "${1:-}" = "nondestructive" ] ; then
+ # Self destruct!
+ unset -f deactivate
+ fi
+}
+
+# unset irrelevant variables
+deactivate nondestructive
+
+VIRTUAL_ENV="/workspaces/DjangoDemo/src/venv"
+export VIRTUAL_ENV
+
+_OLD_VIRTUAL_PATH="$PATH"
+PATH="$VIRTUAL_ENV/bin:$PATH"
+export PATH
+
+# unset PYTHONHOME if set
+# this will fail if PYTHONHOME is set to the empty string (which is bad anyway)
+# could use `if (set -u; : $PYTHONHOME) ;` in bash
+if [ -n "${PYTHONHOME:-}" ] ; then
+ _OLD_VIRTUAL_PYTHONHOME="${PYTHONHOME:-}"
+ unset PYTHONHOME
+fi
+
+if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT:-}" ] ; then
+ _OLD_VIRTUAL_PS1="${PS1:-}"
+ if [ "x(venv) " != x ] ; then
+ PS1="(venv) ${PS1:-}"
+ else
+ if [ "`basename \"$VIRTUAL_ENV\"`" = "__" ] ; then
+ # special case for Aspen magic directories
+ # see https://aspen.io/
+ PS1="[`basename \`dirname \"$VIRTUAL_ENV\"\``] $PS1"
+ else
+ PS1="(`basename \"$VIRTUAL_ENV\"`)$PS1"
+ fi
+ fi
+ export PS1
+fi
+
+# This should detect bash and zsh, which have a hash command that must
+# be called to get it to forget past commands. Without forgetting
+# past commands the $PATH changes we made may not be respected
+if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then
+ hash -r
+fi
diff --git a/src/venv/bin/activate.csh b/src/venv/bin/activate.csh
new file mode 100644
index 0000000000..45321e5e98
--- /dev/null
+++ b/src/venv/bin/activate.csh
@@ -0,0 +1,37 @@
+# This file must be used with "source bin/activate.csh" *from csh*.
+# You cannot run it directly.
+# Created by Davide Di Blasi .
+# Ported to Python 3.3 venv by Andrew Svetlov
+
+alias deactivate 'test $?_OLD_VIRTUAL_PATH != 0 && setenv PATH "$_OLD_VIRTUAL_PATH" && unset _OLD_VIRTUAL_PATH; rehash; test $?_OLD_VIRTUAL_PROMPT != 0 && set prompt="$_OLD_VIRTUAL_PROMPT" && unset _OLD_VIRTUAL_PROMPT; unsetenv VIRTUAL_ENV; test "\!:*" != "nondestructive" && unalias deactivate'
+
+# Unset irrelevant variables.
+deactivate nondestructive
+
+setenv VIRTUAL_ENV "/workspaces/DjangoDemo/src/venv"
+
+set _OLD_VIRTUAL_PATH="$PATH"
+setenv PATH "$VIRTUAL_ENV/bin:$PATH"
+
+
+set _OLD_VIRTUAL_PROMPT="$prompt"
+
+if (! "$?VIRTUAL_ENV_DISABLE_PROMPT") then
+ if ("venv" != "") then
+ set env_name = "venv"
+ else
+ if (`basename "VIRTUAL_ENV"` == "__") then
+ # special case for Aspen magic directories
+ # see https://aspen.io/
+ set env_name = `basename \`dirname "$VIRTUAL_ENV"\``
+ else
+ set env_name = `basename "$VIRTUAL_ENV"`
+ endif
+ endif
+ set prompt = "[$env_name] $prompt"
+ unset env_name
+endif
+
+alias pydoc python -m pydoc
+
+rehash
diff --git a/src/venv/bin/activate.fish b/src/venv/bin/activate.fish
new file mode 100644
index 0000000000..95f8313e7b
--- /dev/null
+++ b/src/venv/bin/activate.fish
@@ -0,0 +1,75 @@
+# This file must be used with ". bin/activate.fish" *from fish* (http://fishshell.org)
+# you cannot run it directly
+
+function deactivate -d "Exit virtualenv and return to normal shell environment"
+ # reset old environment variables
+ if test -n "$_OLD_VIRTUAL_PATH"
+ set -gx PATH $_OLD_VIRTUAL_PATH
+ set -e _OLD_VIRTUAL_PATH
+ end
+ if test -n "$_OLD_VIRTUAL_PYTHONHOME"
+ set -gx PYTHONHOME $_OLD_VIRTUAL_PYTHONHOME
+ set -e _OLD_VIRTUAL_PYTHONHOME
+ end
+
+ if test -n "$_OLD_FISH_PROMPT_OVERRIDE"
+ functions -e fish_prompt
+ set -e _OLD_FISH_PROMPT_OVERRIDE
+ functions -c _old_fish_prompt fish_prompt
+ functions -e _old_fish_prompt
+ end
+
+ set -e VIRTUAL_ENV
+ if test "$argv[1]" != "nondestructive"
+ # Self destruct!
+ functions -e deactivate
+ end
+end
+
+# unset irrelevant variables
+deactivate nondestructive
+
+set -gx VIRTUAL_ENV "/workspaces/DjangoDemo/src/venv"
+
+set -gx _OLD_VIRTUAL_PATH $PATH
+set -gx PATH "$VIRTUAL_ENV/bin" $PATH
+
+# unset PYTHONHOME if set
+if set -q PYTHONHOME
+ set -gx _OLD_VIRTUAL_PYTHONHOME $PYTHONHOME
+ set -e PYTHONHOME
+end
+
+if test -z "$VIRTUAL_ENV_DISABLE_PROMPT"
+ # fish uses a function instead of an env var to generate the prompt.
+
+ # save the current fish_prompt function as the function _old_fish_prompt
+ functions -c fish_prompt _old_fish_prompt
+
+ # with the original prompt function renamed, we can override with our own.
+ function fish_prompt
+ # Save the return status of the last command
+ set -l old_status $status
+
+ # Prompt override?
+ if test -n "(venv) "
+ printf "%s%s" "(venv) " (set_color normal)
+ else
+ # ...Otherwise, prepend env
+ set -l _checkbase (basename "$VIRTUAL_ENV")
+ if test $_checkbase = "__"
+ # special case for Aspen magic directories
+ # see https://aspen.io/
+ printf "%s[%s]%s " (set_color -b blue white) (basename (dirname "$VIRTUAL_ENV")) (set_color normal)
+ else
+ printf "%s(%s)%s" (set_color -b blue white) (basename "$VIRTUAL_ENV") (set_color normal)
+ end
+ end
+
+ # Restore the return status of the previous command.
+ echo "exit $old_status" | .
+ _old_fish_prompt
+ end
+
+ set -gx _OLD_FISH_PROMPT_OVERRIDE "$VIRTUAL_ENV"
+end
diff --git a/src/venv/bin/django-admin b/src/venv/bin/django-admin
new file mode 100755
index 0000000000..981a89ca4e
--- /dev/null
+++ b/src/venv/bin/django-admin
@@ -0,0 +1,8 @@
+#!/workspaces/DjangoDemo/src/venv/bin/python
+# -*- coding: utf-8 -*-
+import re
+import sys
+from django.core.management import execute_from_command_line
+if __name__ == '__main__':
+ sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
+ sys.exit(execute_from_command_line())
diff --git a/src/venv/bin/pip b/src/venv/bin/pip
new file mode 100755
index 0000000000..fdb82db1af
--- /dev/null
+++ b/src/venv/bin/pip
@@ -0,0 +1,8 @@
+#!/workspaces/DjangoDemo/src/venv/bin/python
+# -*- coding: utf-8 -*-
+import re
+import sys
+from pip._internal.cli.main import main
+if __name__ == '__main__':
+ sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
+ sys.exit(main())
diff --git a/src/venv/bin/pip3 b/src/venv/bin/pip3
new file mode 100755
index 0000000000..fdb82db1af
--- /dev/null
+++ b/src/venv/bin/pip3
@@ -0,0 +1,8 @@
+#!/workspaces/DjangoDemo/src/venv/bin/python
+# -*- coding: utf-8 -*-
+import re
+import sys
+from pip._internal.cli.main import main
+if __name__ == '__main__':
+ sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
+ sys.exit(main())
diff --git a/src/venv/bin/pip3.8 b/src/venv/bin/pip3.8
new file mode 100755
index 0000000000..fdb82db1af
--- /dev/null
+++ b/src/venv/bin/pip3.8
@@ -0,0 +1,8 @@
+#!/workspaces/DjangoDemo/src/venv/bin/python
+# -*- coding: utf-8 -*-
+import re
+import sys
+from pip._internal.cli.main import main
+if __name__ == '__main__':
+ sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
+ sys.exit(main())
diff --git a/src/venv/bin/python b/src/venv/bin/python
new file mode 120000
index 0000000000..eee7a27a77
--- /dev/null
+++ b/src/venv/bin/python
@@ -0,0 +1 @@
+/home/codespace/.pyenv/versions/3.8.16/bin/python
\ No newline at end of file
diff --git a/src/venv/bin/python3 b/src/venv/bin/python3
new file mode 120000
index 0000000000..d8654aa0e2
--- /dev/null
+++ b/src/venv/bin/python3
@@ -0,0 +1 @@
+python
\ No newline at end of file
diff --git a/src/venv/bin/sqlformat b/src/venv/bin/sqlformat
new file mode 100755
index 0000000000..947c1b4226
--- /dev/null
+++ b/src/venv/bin/sqlformat
@@ -0,0 +1,8 @@
+#!/workspaces/DjangoDemo/src/venv/bin/python
+# -*- coding: utf-8 -*-
+import re
+import sys
+from sqlparse.__main__ import main
+if __name__ == '__main__':
+ sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
+ sys.exit(main())
diff --git a/src/venv/lib/python3.8/site-packages/Django-4.2.17.dist-info/AUTHORS b/src/venv/lib/python3.8/site-packages/Django-4.2.17.dist-info/AUTHORS
new file mode 100644
index 0000000000..f8afd7e88b
--- /dev/null
+++ b/src/venv/lib/python3.8/site-packages/Django-4.2.17.dist-info/AUTHORS
@@ -0,0 +1,1066 @@
+Django was originally created in late 2003 at World Online, the web division
+of the Lawrence Journal-World newspaper in Lawrence, Kansas.
+
+Here is an inevitably incomplete list of MUCH-APPRECIATED CONTRIBUTORS --
+people who have submitted patches, reported bugs, added translations, helped
+answer newbie questions, and generally made Django that much better:
+
+ Aaron Cannon
+ Aaron Swartz
+ Aaron T. Myers
+ Abeer Upadhyay
+ Abhijeet Viswa
+ Abhinav Patil
+ Abhinav Yadav
+ Abhishek Gautam
+ Abhyudai
+ Adam Allred
+ Adam Bogdał
+ Adam Donaghy
+ Adam Johnson
+ Adam Malinowski
+ Adam Vandenberg
+ Ade Lee
+ Adiyat Mubarak
+ Adnan Umer
+ Arslan Noor
+ Adrian Holovaty
+ Adrian Torres
+ Adrien Lemaire
+ Afonso Fernández Nogueira
+ AgarFu
+ Ahmad Alhashemi
+ Ahmad Al-Ibrahim
+ Ahmed Eltawela
+ ajs
+ Akash Agrawal
+ Akis Kesoglou
+ Aksel Ethem
+ Akshesh Doshi
+ alang@bright-green.com
+ Alasdair Nicol
+ Albert Wang
+ Alcides Fonseca
+ Aldian Fazrihady
+ Aleksandra Sendecka
+ Aleksi Häkli
+ Alex Dutton
+ Alexander Myodov
+ Alexandr Tatarinov
+ Alex Aktsipetrov
+ Alex Becker
+ Alex Couper
+ Alex Dedul
+ Alex Gaynor
+ Alex Hill
+ Alex Ogier
+ Alex Robbins
+ Alexey Boriskin
+ Alexey Tsivunin
+ Ali Vakilzade
+ Aljaž Košir
+ Aljosa Mohorovic
+ Alokik Vijay
+ Amit Chakradeo
+ Amit Ramon
+ Amit Upadhyay
+ A. Murat Eren
+ Ana Belen Sarabia
+ Ana Krivokapic
+ Andi Albrecht
+ André Ericson
+ Andrei Kulakov
+ Andreas
+ Andreas Mock
+ Andreas Pelme
+ Andrés Torres Marroquín
+ Andrew Brehaut
+ Andrew Clark
+ Andrew Durdin
+ Andrew Godwin
+ Andrew Pinkham
+ Andrews Medina
+ Andrew Northall
+ Andriy Sokolovskiy
+ Andy Chosak
+ Andy Dustman
+ Andy Gayton
+ andy@jadedplanet.net
+ Anssi Kääriäinen
+ ant9000@netwise.it
+ Anthony Briggs
+ Anthony Wright
+ Anton Samarchyan
+ Antoni Aloy
+ Antonio Cavedoni
+ Antonis Christofides
+ Antti Haapala
+ Antti Kaihola
+ Anubhav Joshi
+ Anvesh Mishra
+ Aram Dulyan
+ arien
+ Armin Ronacher
+ Aron Podrigal
+ Arsalan Ghassemi
+ Artem Gnilov
+ Arthur
+ Arthur Jovart
+ Arthur Koziel
+ Arthur Rio
+ Arvis Bickovskis
+ Arya Khaligh
+ Aryeh Leib Taurog
+ A S Alam
+ Asif Saif Uddin
+ atlithorn
+ Audrey Roy
+ av0000@mail.ru
+ Axel Haustant
+ Aymeric Augustin
+ Bahadır Kandemir
+ Baishampayan Ghose
+ Baptiste Mispelon
+ Barry Pederson
+ Bartolome Sanchez Salado
+ Barton Ip
+ Bartosz Grabski
+ Bashar Al-Abdulhadi
+ Bastian Kleineidam
+ Batiste Bieler
+ Batman
+ Batuhan Taskaya
+ Baurzhan Ismagulov
+ Ben Dean Kawamura
+ Ben Firshman
+ Ben Godfrey
+ Benjamin Wohlwend
+ Ben Khoo
+ Ben Slavin
+ Ben Sturmfels
+ Berker Peksag
+ Bernd Schlapsi
+ Bernhard Essl
+ berto
+ Bhuvnesh Sharma
+ Bill Fenner
+ Bjørn Stabell
+ Bo Marchman
+ Bogdan Mateescu
+ Bojan Mihelac
+ Bouke Haarsma
+ Božidar Benko
+ Brad Melin
+ Brandon Chinn
+ Brant Harris
+ Brendan Hayward
+ Brendan Quinn
+ Brenton Simpson
+ Brett Cannon
+ Brett Hoerner
+ Brian Beck
+ Brian Fabian Crain
+ Brian Harring
+ Brian Helba
+ Brian Ray
+ Brian Rosner
+ Bruce Kroeze
+ Bruno Alla
+ Bruno Renié
+ brut.alll@gmail.com
+ Bryan Chow
+ Bryan Veloso
+ bthomas
+ btoll@bestweb.net
+ C8E
+ Caio Ariede
+ Calvin Spealman
+ Cameron Curry
+ Cameron Knight (ckknight)
+ Can Burak Çilingir
+ Can Sarıgöl
+ Carl Meyer
+ Carles Pina i Estany
+ Carlos Eduardo de Paula
+ Carlos Matías de la Torre
+ Carlton Gibson
+ cedric@terramater.net
+ Chad Whitman
+ ChaosKCW
+ Charlie Leifer
+ charly.wilhelm@gmail.com
+ Chason Chaffin
+ Cheng Zhang
+ Chris Adams
+ Chris Beaven
+ Chris Bennett
+ Chris Cahoon
+ Chris Chamberlin
+ Chris Jerdonek
+ Chris Jones
+ Chris Lamb
+ Chris Streeter
+ Christian Barcenas
+ Christian Metts
+ Christian Oudard
+ Christian Tanzer
+ Christoffer Sjöbergsson
+ Christophe Pettus
+ Christopher Adams
+ Christopher Babiak
+ Christopher Lenz
+ Christoph Mędrela
+ Chris Wagner
+ Chris Wesseling
+ Chris Wilson
+ Ciaran McCormick
+ Claude Paroz
+ Clint Ecker
+ colin@owlfish.com
+ Colin Wood
+ Collin Anderson
+ Collin Grady
+ Colton Hicks
+ Craig Blaszczyk
+ crankycoder@gmail.com
+ Curtis Maloney (FunkyBob)
+ dackze+django@gmail.com
+ Dagur Páll Ammendrup
+ Dane Springmeyer
+ Dan Fairs
+ Daniel Alves Barbosa de Oliveira Vaz
+ Daniel Duan
+ Daniele Procida
+ Daniel Fairhead
+ Daniel Greenfeld
+ dAniel hAhler
+ Daniel Jilg
+ Daniel Lindsley
+ Daniel Poelzleithner
+ Daniel Pyrathon
+ Daniel Roseman
+ Daniel Tao
+ Daniel Wiesmann
+ Danilo Bargen
+ Dan Johnson
+ Dan Palmer
+ Dan Poirier
+ Dan Stephenson
+ Dan Watson
+ dave@thebarproject.com
+ David Ascher
+ David Avsajanishvili
+ David Blewett
+ David Brenneman
+ David Cramer
+ David Danier
+ David Eklund
+ David Foster
+ David Gouldin
+ david@kazserve.org
+ David Krauth
+ David Larlet
+ David Reynolds
+ David Sanders
+ David Schein
+ David Tulig
+ David Winterbottom
+ David Wobrock
+ Davide Ceretti
+ Deep L. Sukhwani
+ Deepak Thukral
+ Denis Kuzmichyov
+ Dennis Schwertel
+ Derek Willis
+ Deric Crago
+ deric@monowerks.com
+ Deryck Hodge
+ Dimitris Glezos
+ Dirk Datzert
+ Dirk Eschler
+ Dmitri Fedortchenko
+ Dmitry Jemerov
+ dne@mayonnaise.net
+ Dolan Antenucci
+ Donald Harvey
+ Donald Stufft
+ Don Spaulding
+ Doug Beck
+ Doug Napoleone
+ dready
+ dusk@woofle.net
+ Dustyn Gibson
+ Ed Morley
+ Egidijus Macijauskas
+ eibaan@gmail.com
+ elky
+ Emmanuelle Delescolle
+ Emil Stenström
+ enlight
+ Enrico
+ Eric Boersma
+ Eric Brandwein
+ Eric Floehr
+ Eric Florenzano
+ Eric Holscher
+ Eric Moritz
+ Eric Palakovich Carr
+ Erik Karulf
+ Erik Romijn
+ eriks@win.tue.nl
+ Erwin Junge
+ Esdras Beleza
+ Espen Grindhaug
+ Étienne Beaulé
+ Eugene Lazutkin
+ Evan Grim
+ Fabian Büchler
+ Fabrice Aneche
+ Farhaan Bukhsh
+ favo@exoweb.net
+ fdr
+ Federico Capoano
+ Felipe Lee
+ Filip Noetzel
+ Filip Wasilewski
+ Finn Gruwier Larsen
+ Fiza Ashraf
+ Flávio Juvenal da Silva Junior
+ flavio.curella@gmail.com
+ Florian Apolloner
+ Florian Demmer
+ Florian Moussous
+ fnaimi66
+ Fran Hrženjak
+ Francesco Panico
+ Francisco Albarran Cristobal
+ Francisco Couzo
+ François Freitag
+ Frank Tegtmeyer
+ Frank Wierzbicki
+ Frank Wiles
+ František Malina
+ Fraser Nevett
+ Gabriel Grant
+ Gabriel Hurley
+ gandalf@owca.info
+ Garry Lawrence
+ Garry Polley
+ Garth Kidd
+ Gary Wilson
+ Gasper Koren
+ Gasper Zejn
+ Gav O'Connor