From 355993be2437b3f3bc7871478b08477557d497f6 Mon Sep 17 00:00:00 2001 From: Dmitry Date: Sun, 29 Mar 2026 20:19:34 +0300 Subject: [PATCH] backup: 2026-03-29 20:19 --- Работы/English/glossary.xlsx | Bin 0 -> 14536 bytes Работы/web/pyproject.toml | 1 + Работы/web/python/sem2/web/manage.py | 22 ++++ Работы/web/python/sem2/web/polls/__init__.py | 0 Работы/web/python/sem2/web/polls/admin.py | 3 + Работы/web/python/sem2/web/polls/apps.py | 5 + .../sem2/web/polls/migrations/0001_initial.py | 22 ++++ .../python/sem2/web/polls/migrations/__init__.py | 0 Работы/web/python/sem2/web/polls/models.py | 12 ++ Работы/web/python/sem2/web/polls/tests.py | 13 ++ Работы/web/python/sem2/web/polls/views.py | 3 + Работы/web/python/sem2/web/web/__init__.py | 0 Работы/web/python/sem2/web/web/asgi.py | 16 +++ Работы/web/python/sem2/web/web/settings.py | 118 ++++++++++++++++++ Работы/web/python/sem2/web/web/urls.py | 22 ++++ Работы/web/python/sem2/web/web/wsgi.py | 16 +++ Работы/web/uv.lock | 38 +++++- 17 files changed, 290 insertions(+), 1 deletion(-) create mode 100644 Работы/English/glossary.xlsx create mode 100755 Работы/web/python/sem2/web/manage.py create mode 100644 Работы/web/python/sem2/web/polls/__init__.py create mode 100644 Работы/web/python/sem2/web/polls/admin.py create mode 100644 Работы/web/python/sem2/web/polls/apps.py create mode 100644 Работы/web/python/sem2/web/polls/migrations/0001_initial.py create mode 100644 Работы/web/python/sem2/web/polls/migrations/__init__.py create mode 100644 Работы/web/python/sem2/web/polls/models.py create mode 100644 Работы/web/python/sem2/web/polls/tests.py create mode 100644 Работы/web/python/sem2/web/polls/views.py create mode 100644 Работы/web/python/sem2/web/web/__init__.py create mode 100644 Работы/web/python/sem2/web/web/asgi.py create mode 100644 Работы/web/python/sem2/web/web/settings.py create mode 100644 Работы/web/python/sem2/web/web/urls.py create mode 100644 Работы/web/python/sem2/web/web/wsgi.py diff --git a/Работы/English/glossary.xlsx b/Работы/English/glossary.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..c07d111d994b4138528b6364708b1a3dc45c8920 GIT binary patch literal 14536 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 literal 0 HcmV?d00001 diff --git a/Работы/web/pyproject.toml b/Работы/web/pyproject.toml index 6a065df..3861dab 100644 --- a/Работы/web/pyproject.toml +++ b/Работы/web/pyproject.toml @@ -5,5 +5,6 @@ description = "Add your description here" readme = "README.md" requires-python = ">=3.14" dependencies = [ + "django>=6.0.3", "jupyterlab>=4.5.6", ] diff --git a/Работы/web/python/sem2/web/manage.py b/Работы/web/python/sem2/web/manage.py new file mode 100755 index 0000000..19be6dd --- /dev/null +++ b/Работы/web/python/sem2/web/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', 'web.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/Работы/web/python/sem2/web/polls/__init__.py b/Работы/web/python/sem2/web/polls/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Работы/web/python/sem2/web/polls/admin.py b/Работы/web/python/sem2/web/polls/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/Работы/web/python/sem2/web/polls/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/Работы/web/python/sem2/web/polls/apps.py b/Работы/web/python/sem2/web/polls/apps.py new file mode 100644 index 0000000..d0f109e --- /dev/null +++ b/Работы/web/python/sem2/web/polls/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class PollsConfig(AppConfig): + name = 'polls' diff --git a/Работы/web/python/sem2/web/polls/migrations/0001_initial.py b/Работы/web/python/sem2/web/polls/migrations/0001_initial.py new file mode 100644 index 0000000..cb0978a --- /dev/null +++ b/Работы/web/python/sem2/web/polls/migrations/0001_initial.py @@ -0,0 +1,22 @@ +# Generated by Django 6.0.3 on 2026-03-26 12:57 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Question', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('question_text', models.CharField(max_length=200)), + ('pub_date', models.DateTimeField(verbose_name='date published')), + ], + ), + ] diff --git a/Работы/web/python/sem2/web/polls/migrations/__init__.py b/Работы/web/python/sem2/web/polls/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Работы/web/python/sem2/web/polls/models.py b/Работы/web/python/sem2/web/polls/models.py new file mode 100644 index 0000000..84bdb24 --- /dev/null +++ b/Работы/web/python/sem2/web/polls/models.py @@ -0,0 +1,12 @@ +from django.db import models + +class Question(models.Model): + question_text = models.CharField(max_length=200) + pub_date = models.DateTimeField('date published') + + def __str__(self): + return self.question_text + +# q1 = Question.objects.create(question_text="What's new?") + +# print(Question.objects.all()) diff --git a/Работы/web/python/sem2/web/polls/tests.py b/Работы/web/python/sem2/web/polls/tests.py new file mode 100644 index 0000000..e15caca --- /dev/null +++ b/Работы/web/python/sem2/web/polls/tests.py @@ -0,0 +1,13 @@ + +from django.test import TestCase +from .models import Question + +from django.utils import timezone + +class QuestionTest(TestCase): + def test_create_object(self): + obj = Question.objects.create( + question_text="What's new?", + pub_date=timezone.now() + ) + self.assertTrue(Question.objects.filter(id=obj.id).exists()) diff --git a/Работы/web/python/sem2/web/polls/views.py b/Работы/web/python/sem2/web/polls/views.py new file mode 100644 index 0000000..91ea44a --- /dev/null +++ b/Работы/web/python/sem2/web/polls/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here. diff --git a/Работы/web/python/sem2/web/web/__init__.py b/Работы/web/python/sem2/web/web/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Работы/web/python/sem2/web/web/asgi.py b/Работы/web/python/sem2/web/web/asgi.py new file mode 100644 index 0000000..c4ea1cc --- /dev/null +++ b/Работы/web/python/sem2/web/web/asgi.py @@ -0,0 +1,16 @@ +""" +ASGI config for web 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/6.0/howto/deployment/asgi/ +""" + +import os + +from django.core.asgi import get_asgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'web.settings') + +application = get_asgi_application() diff --git a/Работы/web/python/sem2/web/web/settings.py b/Работы/web/python/sem2/web/web/settings.py new file mode 100644 index 0000000..d507ad4 --- /dev/null +++ b/Работы/web/python/sem2/web/web/settings.py @@ -0,0 +1,118 @@ +""" +Django settings for web project. + +Generated by 'django-admin startproject' using Django 6.0.3. + +For more information on this file, see +https://docs.djangoproject.com/en/6.0/topics/settings/ + +For the full list of settings and their values, see +https://docs.djangoproject.com/en/6.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/6.0/howto/deployment/checklist/ + +# SECURITY WARNING: keep the secret key used in production secret! +SECRET_KEY = 'django-insecure-z3b@_v7nj4&8r426%*m1p8ytqr8@wnik7w5+9knv7+2)b8&eek' + +# 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', + 'polls', +] + +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 = 'web.urls' + +TEMPLATES = [ + { + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + 'DIRS': [], + 'APP_DIRS': True, + 'OPTIONS': { + 'context_processors': [ + 'django.template.context_processors.request', + 'django.contrib.auth.context_processors.auth', + 'django.contrib.messages.context_processors.messages', + ], + }, + }, +] + +WSGI_APPLICATION = 'web.wsgi.application' + + +# Database +# https://docs.djangoproject.com/en/6.0/ref/settings/#databases + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': BASE_DIR / 'db.sqlite3', + } +} + + +# Password validation +# https://docs.djangoproject.com/en/6.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/6.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/6.0/howto/static-files/ + +STATIC_URL = 'static/' diff --git a/Работы/web/python/sem2/web/web/urls.py b/Работы/web/python/sem2/web/web/urls.py new file mode 100644 index 0000000..3878d14 --- /dev/null +++ b/Работы/web/python/sem2/web/web/urls.py @@ -0,0 +1,22 @@ +""" +URL configuration for web project. + +The `urlpatterns` list routes URLs to views. For more information please see: + https://docs.djangoproject.com/en/6.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 + +urlpatterns = [ + path('admin/', admin.site.urls), +] diff --git a/Работы/web/python/sem2/web/web/wsgi.py b/Работы/web/python/sem2/web/web/wsgi.py new file mode 100644 index 0000000..de2538a --- /dev/null +++ b/Работы/web/python/sem2/web/web/wsgi.py @@ -0,0 +1,16 @@ +""" +WSGI config for web 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/6.0/howto/deployment/wsgi/ +""" + +import os + +from django.core.wsgi import get_wsgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'web.settings') + +application = get_wsgi_application() diff --git a/Работы/web/uv.lock b/Работы/web/uv.lock index a3741af..8ed8aaf 100644 --- a/Работы/web/uv.lock +++ b/Работы/web/uv.lock @@ -79,6 +79,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ed/c9/d7977eaacb9df673210491da99e6a247e93df98c715fc43fd136ce1d3d33/arrow-1.4.0-py3-none-any.whl", hash = "sha256:749f0769958ebdc79c173ff0b0670d59051a535fa26e8eba02953dc19eb43205", size = 68797, upload-time = "2025-10-18T17:46:45.663Z" }, ] +[[package]] +name = "asgiref" +version = "3.11.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/63/40/f03da1264ae8f7cfdbf9146542e5e7e8100a4c66ab48e791df9a03d3f6c0/asgiref-3.11.1.tar.gz", hash = "sha256:5f184dc43b7e763efe848065441eac62229c9f7b0475f41f80e207a114eda4ce", size = 38550, upload-time = "2026-02-03T13:30:14.33Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5c/0a/a72d10ed65068e115044937873362e6e32fab1b7dce0046aeb224682c989/asgiref-3.11.1-py3-none-any.whl", hash = "sha256:e8667a091e69529631969fd45dc268fa79b99c92c5fcdda727757e52146ec133", size = 24345, upload-time = "2026-02-03T13:30:13.039Z" }, +] + [[package]] name = "asttokens" version = "3.0.1" @@ -277,6 +286,20 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61", size = 25604, upload-time = "2021-03-08T10:59:24.45Z" }, ] +[[package]] +name = "django" +version = "6.0.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "asgiref" }, + { name = "sqlparse" }, + { name = "tzdata", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/80/e1/894115c6bd70e2c8b66b0c40a3c367d83a5a48c034a4d904d31b62f7c53a/django-6.0.3.tar.gz", hash = "sha256:90be765ee756af8a6cbd6693e56452404b5ad15294f4d5e40c0a55a0f4870fe1", size = 10872701, upload-time = "2026-03-03T13:55:15.026Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/72/b1/23f2556967c45e34d3d3cf032eb1bd3ef925ee458667fb99052a0b3ea3a6/django-6.0.3-py3-none-any.whl", hash = "sha256:2e5974441491ddb34c3f13d5e7a9f97b07ba03bf70234c0a9c68b79bbb235bc3", size = 8358527, upload-time = "2026-03-03T13:55:10.552Z" }, +] + [[package]] name = "executing" version = "2.2.1" @@ -1141,6 +1164,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/46/2c/1462b1d0a634697ae9e55b3cecdcb64788e8b7d63f54d923fcd0bb140aed/soupsieve-2.8.3-py3-none-any.whl", hash = "sha256:ed64f2ba4eebeab06cc4962affce381647455978ffc1e36bb79a545b91f45a95", size = 37016, upload-time = "2026-01-20T04:27:01.012Z" }, ] +[[package]] +name = "sqlparse" +version = "0.5.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/90/76/437d71068094df0726366574cf3432a4ed754217b436eb7429415cf2d480/sqlparse-0.5.5.tar.gz", hash = "sha256:e20d4a9b0b8585fdf63b10d30066c7c94c5d7a7ec47c889a2d83a3caa93ff28e", size = 120815, upload-time = "2025-12-19T07:17:45.073Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/49/4b/359f28a903c13438ef59ebeee215fb25da53066db67b305c125f1c6d2a25/sqlparse-0.5.5-py3-none-any.whl", hash = "sha256:12a08b3bf3eec877c519589833aed092e2444e68240a3577e8e26148acc7b1ba", size = 46138, upload-time = "2025-12-19T07:17:46.573Z" }, +] + [[package]] name = "stack-data" version = "0.6.3" @@ -1257,11 +1289,15 @@ name = "web" version = "0.1.0" source = { virtual = "." } dependencies = [ + { name = "django" }, { name = "jupyterlab" }, ] [package.metadata] -requires-dist = [{ name = "jupyterlab", specifier = ">=4.5.6" }] +requires-dist = [ + { name = "django", specifier = ">=6.0.3" }, + { name = "jupyterlab", specifier = ">=4.5.6" }, +] [[package]] name = "webcolors"