From 969405bac1081a7f9b582c105b604c3aad15ea4c Mon Sep 17 00:00:00 2001 From: arek8675 Date: Tue, 28 Dec 2021 18:25:21 -0800 Subject: [PATCH 1/7] created new branch --- Code/Arek/Django/lab1/style.css | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Code/Arek/Django/lab1/style.css diff --git a/Code/Arek/Django/lab1/style.css b/Code/Arek/Django/lab1/style.css new file mode 100644 index 00000000..e69de29b From 9d72685a6d82bbbc545446797580fc279a6e874e Mon Sep 17 00:00:00 2001 From: arek8675 Date: Sun, 2 Jan 2022 13:34:59 -0800 Subject: [PATCH 2/7] Just need to figure out foreign key issue --- Code/Arek/Django/lab1/todo-lab/README.rst | 0 Code/Arek/Django/lab1/todo-lab/pyproject.toml | 16 +++ .../Django/lab1/todo-lab/tests/__init__.py | 0 .../lab1/todo-lab/tests/test_todo_lab.py | 5 + Code/Arek/Django/lab1/todo-lab/todo/manage.py | 22 ++++ .../lab1/todo-lab/todo/myapp/__init__.py | 0 .../Django/lab1/todo-lab/todo/myapp/admin.py | 8 ++ .../Django/lab1/todo-lab/todo/myapp/apps.py | 6 + .../todo/myapp/migrations/__init__.py | 0 .../Django/lab1/todo-lab/todo/myapp/models.py | 29 ++++ .../todo/myapp/static/myapp/style.css | 13 ++ .../myapp/templates/myapp/mytemplate.html | 56 ++++++++ .../Django/lab1/todo-lab/todo/myapp/tests.py | 3 + .../Django/lab1/todo-lab/todo/myapp/urls.py | 10 ++ .../Django/lab1/todo-lab/todo/myapp/views.py | 45 +++++++ .../lab1/todo-lab/todo/todo/__init__.py | 0 .../Django/lab1/todo-lab/todo/todo/asgi.py | 16 +++ .../lab1/todo-lab/todo/todo/settings.py | 124 ++++++++++++++++++ .../Django/lab1/todo-lab/todo/todo/urls.py | 22 ++++ .../Django/lab1/todo-lab/todo/todo/wsgi.py | 16 +++ .../Django/lab1/todo-lab/todo_lab/__init__.py | 1 + 21 files changed, 392 insertions(+) create mode 100644 Code/Arek/Django/lab1/todo-lab/README.rst create mode 100644 Code/Arek/Django/lab1/todo-lab/pyproject.toml create mode 100644 Code/Arek/Django/lab1/todo-lab/tests/__init__.py create mode 100644 Code/Arek/Django/lab1/todo-lab/tests/test_todo_lab.py create mode 100755 Code/Arek/Django/lab1/todo-lab/todo/manage.py create mode 100644 Code/Arek/Django/lab1/todo-lab/todo/myapp/__init__.py create mode 100644 Code/Arek/Django/lab1/todo-lab/todo/myapp/admin.py create mode 100644 Code/Arek/Django/lab1/todo-lab/todo/myapp/apps.py create mode 100644 Code/Arek/Django/lab1/todo-lab/todo/myapp/migrations/__init__.py create mode 100644 Code/Arek/Django/lab1/todo-lab/todo/myapp/models.py create mode 100644 Code/Arek/Django/lab1/todo-lab/todo/myapp/static/myapp/style.css create mode 100644 Code/Arek/Django/lab1/todo-lab/todo/myapp/templates/myapp/mytemplate.html create mode 100644 Code/Arek/Django/lab1/todo-lab/todo/myapp/tests.py create mode 100644 Code/Arek/Django/lab1/todo-lab/todo/myapp/urls.py create mode 100644 Code/Arek/Django/lab1/todo-lab/todo/myapp/views.py create mode 100644 Code/Arek/Django/lab1/todo-lab/todo/todo/__init__.py create mode 100644 Code/Arek/Django/lab1/todo-lab/todo/todo/asgi.py create mode 100644 Code/Arek/Django/lab1/todo-lab/todo/todo/settings.py create mode 100644 Code/Arek/Django/lab1/todo-lab/todo/todo/urls.py create mode 100644 Code/Arek/Django/lab1/todo-lab/todo/todo/wsgi.py create mode 100644 Code/Arek/Django/lab1/todo-lab/todo_lab/__init__.py diff --git a/Code/Arek/Django/lab1/todo-lab/README.rst b/Code/Arek/Django/lab1/todo-lab/README.rst new file mode 100644 index 00000000..e69de29b diff --git a/Code/Arek/Django/lab1/todo-lab/pyproject.toml b/Code/Arek/Django/lab1/todo-lab/pyproject.toml new file mode 100644 index 00000000..9a317adf --- /dev/null +++ b/Code/Arek/Django/lab1/todo-lab/pyproject.toml @@ -0,0 +1,16 @@ +[tool.poetry] +name = "todo-lab" +version = "0.1.0" +description = "" +authors = ["arek8675 "] + +[tool.poetry.dependencies] +python = "^3.8" + +[tool.poetry.dev-dependencies] +pytest = "^5.2" +django = "^4.0" + +[build-system] +requires = ["poetry-core>=1.0.0"] +build-backend = "poetry.core.masonry.api" diff --git a/Code/Arek/Django/lab1/todo-lab/tests/__init__.py b/Code/Arek/Django/lab1/todo-lab/tests/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/Code/Arek/Django/lab1/todo-lab/tests/test_todo_lab.py b/Code/Arek/Django/lab1/todo-lab/tests/test_todo_lab.py new file mode 100644 index 00000000..89d292c2 --- /dev/null +++ b/Code/Arek/Django/lab1/todo-lab/tests/test_todo_lab.py @@ -0,0 +1,5 @@ +from todo_lab import __version__ + + +def test_version(): + assert __version__ == '0.1.0' diff --git a/Code/Arek/Django/lab1/todo-lab/todo/manage.py b/Code/Arek/Django/lab1/todo-lab/todo/manage.py new file mode 100755 index 00000000..244b6144 --- /dev/null +++ b/Code/Arek/Django/lab1/todo-lab/todo/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', 'todo.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/Code/Arek/Django/lab1/todo-lab/todo/myapp/__init__.py b/Code/Arek/Django/lab1/todo-lab/todo/myapp/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/Code/Arek/Django/lab1/todo-lab/todo/myapp/admin.py b/Code/Arek/Django/lab1/todo-lab/todo/myapp/admin.py new file mode 100644 index 00000000..6cbe1a7e --- /dev/null +++ b/Code/Arek/Django/lab1/todo-lab/todo/myapp/admin.py @@ -0,0 +1,8 @@ +from django.contrib import admin + +# Register your models here. +from .models import Todoitem, Priority + + +admin.site.register(Priority) +admin.site.register(Todoitem) \ No newline at end of file diff --git a/Code/Arek/Django/lab1/todo-lab/todo/myapp/apps.py b/Code/Arek/Django/lab1/todo-lab/todo/myapp/apps.py new file mode 100644 index 00000000..c34fb20e --- /dev/null +++ b/Code/Arek/Django/lab1/todo-lab/todo/myapp/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class MyappConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'myapp' diff --git a/Code/Arek/Django/lab1/todo-lab/todo/myapp/migrations/__init__.py b/Code/Arek/Django/lab1/todo-lab/todo/myapp/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/Code/Arek/Django/lab1/todo-lab/todo/myapp/models.py b/Code/Arek/Django/lab1/todo-lab/todo/myapp/models.py new file mode 100644 index 00000000..b3da04f4 --- /dev/null +++ b/Code/Arek/Django/lab1/todo-lab/todo/myapp/models.py @@ -0,0 +1,29 @@ + +from django.db import models +from django.db.models.base import Model +from django.db.models.fields import BLANK_CHOICE_DASH, CharField + +# Create your models here. +# TodItem Model +priority_choices = [ + ('high', 'High'), + ('medium', 'Medium'), + ('low', 'Low') +] + + +class Priority(models.Model): + name = models.CharField(max_length=6, choices=priority_choices,default='medium') + + def __str__(self): + return self.name + + + +class Todoitem(models.Model): + text = models.CharField(max_length=200) + priority = models.ForeignKey(Priority, on_delete=models.CASCADE) + created_date = models.DateTimeField(null=True, blank=True) + + def __str__(self): + return self.text # when I added the self.created_date, it gave me an error when adding a new todo item \ No newline at end of file diff --git a/Code/Arek/Django/lab1/todo-lab/todo/myapp/static/myapp/style.css b/Code/Arek/Django/lab1/todo-lab/todo/myapp/static/myapp/style.css new file mode 100644 index 00000000..c437792a --- /dev/null +++ b/Code/Arek/Django/lab1/todo-lab/todo/myapp/static/myapp/style.css @@ -0,0 +1,13 @@ +body{ + background-color: lightgreen; +} + +#todo-div{ + padding: 20px 20px; + margin: 40px 0px; + font-size: larger; +} +label{ + margin: 20px 20px; +} + diff --git a/Code/Arek/Django/lab1/todo-lab/todo/myapp/templates/myapp/mytemplate.html b/Code/Arek/Django/lab1/todo-lab/todo/myapp/templates/myapp/mytemplate.html new file mode 100644 index 00000000..5e73df69 --- /dev/null +++ b/Code/Arek/Django/lab1/todo-lab/todo/myapp/templates/myapp/mytemplate.html @@ -0,0 +1,56 @@ + + + + {% load static %} + + + + + + + + +

Todo List

+
+
+ {%csrf_token %} + + + + + + + + +
+ +
+ +
+ {% for myitem in myitems %} +
{{ myitem.text }}
+ {% endfor %} + + + +
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Code/Arek/Django/lab1/todo-lab/todo/myapp/tests.py b/Code/Arek/Django/lab1/todo-lab/todo/myapp/tests.py new file mode 100644 index 00000000..7ce503c2 --- /dev/null +++ b/Code/Arek/Django/lab1/todo-lab/todo/myapp/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/Code/Arek/Django/lab1/todo-lab/todo/myapp/urls.py b/Code/Arek/Django/lab1/todo-lab/todo/myapp/urls.py new file mode 100644 index 00000000..99244ae5 --- /dev/null +++ b/Code/Arek/Django/lab1/todo-lab/todo/myapp/urls.py @@ -0,0 +1,10 @@ +from django.urls import path +from . import views + + +app_name='myapp' +urlpatterns = [ + path('indexView/', views.indexView, name='indexView'), + path('newtodo/', views.add_todo, name='add_todo') + +] \ No newline at end of file diff --git a/Code/Arek/Django/lab1/todo-lab/todo/myapp/views.py b/Code/Arek/Django/lab1/todo-lab/todo/myapp/views.py new file mode 100644 index 00000000..d69fb26b --- /dev/null +++ b/Code/Arek/Django/lab1/todo-lab/todo/myapp/views.py @@ -0,0 +1,45 @@ +from django.shortcuts import render, reverse + +from django.http import HttpResponseRedirect +from .models import Priority, Todoitem + +# Create your views here. + + +def indexView(request): + # need to reference the polls/views.py from the demo folder + + + + items = Todoitem.objects.all() + context = { + 'myitems': items + } + + + + return render(request, 'myapp/mytemplate.html', context ) #if i return more than one thing it just displays the whole html code + +def add_todo(request): + form = request.POST + select_choice = form['choice-field'] + new_todo = form['new-todo'] + + new_priority = Priority() #creating a new row for priority + new_todo_item = Todoitem() #creating a new todo item in the DB + + new_priority.name = select_choice + new_priority.save() + + new_todo_item.text = new_todo + new_todo_item.priority = Priority.name + new_todo_item.save() #saving the new rows in the database + + + + return HttpResponseRedirect(reverse('myapp:indexView')) #this just redirects back to the main page + #to show all the todo items + + + + \ No newline at end of file diff --git a/Code/Arek/Django/lab1/todo-lab/todo/todo/__init__.py b/Code/Arek/Django/lab1/todo-lab/todo/todo/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/Code/Arek/Django/lab1/todo-lab/todo/todo/asgi.py b/Code/Arek/Django/lab1/todo-lab/todo/todo/asgi.py new file mode 100644 index 00000000..54e3b5e2 --- /dev/null +++ b/Code/Arek/Django/lab1/todo-lab/todo/todo/asgi.py @@ -0,0 +1,16 @@ +""" +ASGI config for todo 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', 'todo.settings') + +application = get_asgi_application() diff --git a/Code/Arek/Django/lab1/todo-lab/todo/todo/settings.py b/Code/Arek/Django/lab1/todo-lab/todo/todo/settings.py new file mode 100644 index 00000000..1074fb93 --- /dev/null +++ b/Code/Arek/Django/lab1/todo-lab/todo/todo/settings.py @@ -0,0 +1,124 @@ +""" +Django settings for todo project. + +Generated by 'django-admin startproject' using Django 4.0. + +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-lpdnoln(#8j)&wpt@(_(8cw*64jk^wx44=s=g7w_x-s#ia%q=e' + +# 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', + 'myapp' +] + +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 = 'todo.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 = 'todo.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/Code/Arek/Django/lab1/todo-lab/todo/todo/urls.py b/Code/Arek/Django/lab1/todo-lab/todo/todo/urls.py new file mode 100644 index 00000000..e8c2eeb8 --- /dev/null +++ b/Code/Arek/Django/lab1/todo-lab/todo/todo/urls.py @@ -0,0 +1,22 @@ +"""todo 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, include + +urlpatterns = [ + path('admin/', admin.site.urls), + path('myapp/', include('myapp.urls')) +] diff --git a/Code/Arek/Django/lab1/todo-lab/todo/todo/wsgi.py b/Code/Arek/Django/lab1/todo-lab/todo/todo/wsgi.py new file mode 100644 index 00000000..586f90bb --- /dev/null +++ b/Code/Arek/Django/lab1/todo-lab/todo/todo/wsgi.py @@ -0,0 +1,16 @@ +""" +WSGI config for todo 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', 'todo.settings') + +application = get_wsgi_application() diff --git a/Code/Arek/Django/lab1/todo-lab/todo_lab/__init__.py b/Code/Arek/Django/lab1/todo-lab/todo_lab/__init__.py new file mode 100644 index 00000000..b794fd40 --- /dev/null +++ b/Code/Arek/Django/lab1/todo-lab/todo_lab/__init__.py @@ -0,0 +1 @@ +__version__ = '0.1.0' From 15fcfda6512d32f8d22f300879884dd9c6733385 Mon Sep 17 00:00:00 2001 From: arek8675 Date: Mon, 3 Jan 2022 17:45:09 -0800 Subject: [PATCH 3/7] saving changes --- Code/Arek/Django/lab1/todo-lab/poetry.lock | 245 ++++++++++++++++++ Code/Arek/Django/lab1/todo-lab/pyproject.toml | 1 + .../Django/lab1/todo-lab/todo/myapp/views.py | 2 +- 3 files changed, 247 insertions(+), 1 deletion(-) create mode 100644 Code/Arek/Django/lab1/todo-lab/poetry.lock diff --git a/Code/Arek/Django/lab1/todo-lab/poetry.lock b/Code/Arek/Django/lab1/todo-lab/poetry.lock new file mode 100644 index 00000000..fbf0430a --- /dev/null +++ b/Code/Arek/Django/lab1/todo-lab/poetry.lock @@ -0,0 +1,245 @@ +[[package]] +name = "asgiref" +version = "3.4.1" +description = "ASGI specs, helper code, and adapters" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.extras] +tests = ["pytest", "pytest-asyncio", "mypy (>=0.800)"] + +[[package]] +name = "atomicwrites" +version = "1.4.0" +description = "Atomic file writes." +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[[package]] +name = "attrs" +version = "21.4.0" +description = "Classes Without Boilerplate" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[package.extras] +dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit", "cloudpickle"] +docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"] +tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "cloudpickle"] +tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "cloudpickle"] + +[[package]] +name = "backports.zoneinfo" +version = "0.2.1" +description = "Backport of the standard library zoneinfo module" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.extras] +tzdata = ["tzdata"] + +[[package]] +name = "colorama" +version = "0.4.4" +description = "Cross-platform colored terminal text." +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[[package]] +name = "django" +version = "4.0" +description = "A high-level Python web framework that encourages rapid development and clean, pragmatic design." +category = "main" +optional = false +python-versions = ">=3.8" + +[package.dependencies] +asgiref = ">=3.4.1,<4" +"backports.zoneinfo" = {version = "*", markers = "python_version < \"3.9\""} +sqlparse = ">=0.2.2" +tzdata = {version = "*", markers = "sys_platform == \"win32\""} + +[package.extras] +argon2 = ["argon2-cffi (>=19.1.0)"] +bcrypt = ["bcrypt"] + +[[package]] +name = "more-itertools" +version = "8.12.0" +description = "More routines for operating on iterables, beyond itertools" +category = "dev" +optional = false +python-versions = ">=3.5" + +[[package]] +name = "packaging" +version = "21.3" +description = "Core utilities for Python packages" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" + +[[package]] +name = "pluggy" +version = "0.13.1" +description = "plugin and hook calling mechanisms for python" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[package.extras] +dev = ["pre-commit", "tox"] + +[[package]] +name = "py" +version = "1.11.0" +description = "library with cross-python path, ini-parsing, io, code, log facilities" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[[package]] +name = "pyparsing" +version = "3.0.6" +description = "Python parsing module" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.extras] +diagrams = ["jinja2", "railroad-diagrams"] + +[[package]] +name = "pytest" +version = "5.4.3" +description = "pytest: simple powerful testing with Python" +category = "dev" +optional = false +python-versions = ">=3.5" + +[package.dependencies] +atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""} +attrs = ">=17.4.0" +colorama = {version = "*", markers = "sys_platform == \"win32\""} +more-itertools = ">=4.0.0" +packaging = "*" +pluggy = ">=0.12,<1.0" +py = ">=1.5.0" +wcwidth = "*" + +[package.extras] +checkqa-mypy = ["mypy (==v0.761)"] +testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] + +[[package]] +name = "sqlparse" +version = "0.4.2" +description = "A non-validating SQL parser." +category = "main" +optional = false +python-versions = ">=3.5" + +[[package]] +name = "tzdata" +version = "2021.5" +description = "Provider of IANA time zone data" +category = "main" +optional = false +python-versions = ">=2" + +[[package]] +name = "wcwidth" +version = "0.2.5" +description = "Measures the displayed width of unicode strings in a terminal" +category = "dev" +optional = false +python-versions = "*" + +[metadata] +lock-version = "1.1" +python-versions = "^3.8" +content-hash = "58a32e8bca919507ef353a72045ff67eceae09379a4dfd71ebd2adb8ee6061f9" + +[metadata.files] +asgiref = [ + {file = "asgiref-3.4.1-py3-none-any.whl", hash = "sha256:ffc141aa908e6f175673e7b1b3b7af4fdb0ecb738fc5c8b88f69f055c2415214"}, + {file = "asgiref-3.4.1.tar.gz", hash = "sha256:4ef1ab46b484e3c706329cedeff284a5d40824200638503f5768edb6de7d58e9"}, +] +atomicwrites = [ + {file = "atomicwrites-1.4.0-py2.py3-none-any.whl", hash = "sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197"}, + {file = "atomicwrites-1.4.0.tar.gz", hash = "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"}, +] +attrs = [ + {file = "attrs-21.4.0-py2.py3-none-any.whl", hash = "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4"}, + {file = "attrs-21.4.0.tar.gz", hash = "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd"}, +] +"backports.zoneinfo" = [ + {file = "backports.zoneinfo-0.2.1-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:da6013fd84a690242c310d77ddb8441a559e9cb3d3d59ebac9aca1a57b2e18bc"}, + {file = "backports.zoneinfo-0.2.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:89a48c0d158a3cc3f654da4c2de1ceba85263fafb861b98b59040a5086259722"}, + {file = "backports.zoneinfo-0.2.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:1c5742112073a563c81f786e77514969acb58649bcdf6cdf0b4ed31a348d4546"}, + {file = "backports.zoneinfo-0.2.1-cp36-cp36m-win32.whl", hash = "sha256:e8236383a20872c0cdf5a62b554b27538db7fa1bbec52429d8d106effbaeca08"}, + {file = "backports.zoneinfo-0.2.1-cp36-cp36m-win_amd64.whl", hash = "sha256:8439c030a11780786a2002261569bdf362264f605dfa4d65090b64b05c9f79a7"}, + {file = "backports.zoneinfo-0.2.1-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:f04e857b59d9d1ccc39ce2da1021d196e47234873820cbeaad210724b1ee28ac"}, + {file = "backports.zoneinfo-0.2.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:17746bd546106fa389c51dbea67c8b7c8f0d14b5526a579ca6ccf5ed72c526cf"}, + {file = "backports.zoneinfo-0.2.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:5c144945a7752ca544b4b78c8c41544cdfaf9786f25fe5ffb10e838e19a27570"}, + {file = "backports.zoneinfo-0.2.1-cp37-cp37m-win32.whl", hash = "sha256:e55b384612d93be96506932a786bbcde5a2db7a9e6a4bb4bffe8b733f5b9036b"}, + {file = "backports.zoneinfo-0.2.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a76b38c52400b762e48131494ba26be363491ac4f9a04c1b7e92483d169f6582"}, + {file = "backports.zoneinfo-0.2.1-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:8961c0f32cd0336fb8e8ead11a1f8cd99ec07145ec2931122faaac1c8f7fd987"}, + {file = "backports.zoneinfo-0.2.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:e81b76cace8eda1fca50e345242ba977f9be6ae3945af8d46326d776b4cf78d1"}, + {file = "backports.zoneinfo-0.2.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7b0a64cda4145548fed9efc10322770f929b944ce5cee6c0dfe0c87bf4c0c8c9"}, + {file = "backports.zoneinfo-0.2.1-cp38-cp38-win32.whl", hash = "sha256:1b13e654a55cd45672cb54ed12148cd33628f672548f373963b0bff67b217328"}, + {file = "backports.zoneinfo-0.2.1-cp38-cp38-win_amd64.whl", hash = "sha256:4a0f800587060bf8880f954dbef70de6c11bbe59c673c3d818921f042f9954a6"}, + {file = "backports.zoneinfo-0.2.1.tar.gz", hash = "sha256:fadbfe37f74051d024037f223b8e001611eac868b5c5b06144ef4d8b799862f2"}, +] +colorama = [ + {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"}, + {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"}, +] +django = [ + {file = "Django-4.0-py3-none-any.whl", hash = "sha256:59304646ebc6a77b9b6a59adc67d51ecb03c5e3d63ed1f14c909cdfda84e8010"}, + {file = "Django-4.0.tar.gz", hash = "sha256:d5a8a14da819a8b9237ee4d8c78dfe056ff6e8a7511987be627192225113ee75"}, +] +more-itertools = [ + {file = "more-itertools-8.12.0.tar.gz", hash = "sha256:7dc6ad46f05f545f900dd59e8dfb4e84a4827b97b3cfecb175ea0c7d247f6064"}, + {file = "more_itertools-8.12.0-py3-none-any.whl", hash = "sha256:43e6dd9942dffd72661a2c4ef383ad7da1e6a3e968a927ad7a6083ab410a688b"}, +] +packaging = [ + {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"}, + {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"}, +] +pluggy = [ + {file = "pluggy-0.13.1-py2.py3-none-any.whl", hash = "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d"}, + {file = "pluggy-0.13.1.tar.gz", hash = "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0"}, +] +py = [ + {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, + {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, +] +pyparsing = [ + {file = "pyparsing-3.0.6-py3-none-any.whl", hash = "sha256:04ff808a5b90911829c55c4e26f75fa5ca8a2f5f36aa3a51f68e27033341d3e4"}, + {file = "pyparsing-3.0.6.tar.gz", hash = "sha256:d9bdec0013ef1eb5a84ab39a3b3868911598afa494f5faa038647101504e2b81"}, +] +pytest = [ + {file = "pytest-5.4.3-py3-none-any.whl", hash = "sha256:5c0db86b698e8f170ba4582a492248919255fcd4c79b1ee64ace34301fb589a1"}, + {file = "pytest-5.4.3.tar.gz", hash = "sha256:7979331bfcba207414f5e1263b5a0f8f521d0f457318836a7355531ed1a4c7d8"}, +] +sqlparse = [ + {file = "sqlparse-0.4.2-py3-none-any.whl", hash = "sha256:48719e356bb8b42991bdbb1e8b83223757b93789c00910a616a071910ca4a64d"}, + {file = "sqlparse-0.4.2.tar.gz", hash = "sha256:0c00730c74263a94e5a9919ade150dfc3b19c574389985446148402998287dae"}, +] +tzdata = [ + {file = "tzdata-2021.5-py2.py3-none-any.whl", hash = "sha256:3eee491e22ebfe1e5cfcc97a4137cd70f092ce59144d81f8924a844de05ba8f5"}, + {file = "tzdata-2021.5.tar.gz", hash = "sha256:68dbe41afd01b867894bbdfd54fa03f468cfa4f0086bfb4adcd8de8f24f3ee21"}, +] +wcwidth = [ + {file = "wcwidth-0.2.5-py2.py3-none-any.whl", hash = "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784"}, + {file = "wcwidth-0.2.5.tar.gz", hash = "sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83"}, +] diff --git a/Code/Arek/Django/lab1/todo-lab/pyproject.toml b/Code/Arek/Django/lab1/todo-lab/pyproject.toml index 9a317adf..6ac361f3 100644 --- a/Code/Arek/Django/lab1/todo-lab/pyproject.toml +++ b/Code/Arek/Django/lab1/todo-lab/pyproject.toml @@ -6,6 +6,7 @@ authors = ["arek8675 "] [tool.poetry.dependencies] python = "^3.8" +Django = "^4.0" [tool.poetry.dev-dependencies] pytest = "^5.2" diff --git a/Code/Arek/Django/lab1/todo-lab/todo/myapp/views.py b/Code/Arek/Django/lab1/todo-lab/todo/myapp/views.py index d69fb26b..da307f8f 100644 --- a/Code/Arek/Django/lab1/todo-lab/todo/myapp/views.py +++ b/Code/Arek/Django/lab1/todo-lab/todo/myapp/views.py @@ -32,7 +32,7 @@ def add_todo(request): new_priority.save() new_todo_item.text = new_todo - new_todo_item.priority = Priority.name + new_todo_item.save() #saving the new rows in the database From fafd17bd4e9df486571403d405ae533e8d6afd25 Mon Sep 17 00:00:00 2001 From: arek8675 Date: Mon, 3 Jan 2022 19:24:53 -0800 Subject: [PATCH 4/7] removed un needed fileds causing constraints --- Code/Arek/Django/lab1/todo-lab/todo/myapp/models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Code/Arek/Django/lab1/todo-lab/todo/myapp/models.py b/Code/Arek/Django/lab1/todo-lab/todo/myapp/models.py index b3da04f4..6097bf70 100644 --- a/Code/Arek/Django/lab1/todo-lab/todo/myapp/models.py +++ b/Code/Arek/Django/lab1/todo-lab/todo/myapp/models.py @@ -13,7 +13,7 @@ class Priority(models.Model): - name = models.CharField(max_length=6, choices=priority_choices,default='medium') + name = models.CharField(max_length=6, choices=priority_choices) def __str__(self): return self.name From 0ff06b033676377495b8ae65c9d59086e9d2387c Mon Sep 17 00:00:00 2001 From: arek8675 Date: Mon, 3 Jan 2022 19:25:44 -0800 Subject: [PATCH 5/7] made code simpler with .get_or_create method and fixed issue of priotiry foreign key giving a dropdown --- .../Django/lab1/todo-lab/todo/myapp/views.py | 32 ++++++------------- 1 file changed, 10 insertions(+), 22 deletions(-) diff --git a/Code/Arek/Django/lab1/todo-lab/todo/myapp/views.py b/Code/Arek/Django/lab1/todo-lab/todo/myapp/views.py index da307f8f..581d9f20 100644 --- a/Code/Arek/Django/lab1/todo-lab/todo/myapp/views.py +++ b/Code/Arek/Django/lab1/todo-lab/todo/myapp/views.py @@ -1,44 +1,32 @@ -from django.shortcuts import render, reverse +from django.shortcuts import render, reverse, redirect from django.http import HttpResponseRedirect from .models import Priority, Todoitem -# Create your views here. - def indexView(request): - # need to reference the polls/views.py from the demo folder - - - + items = Todoitem.objects.all() context = { 'myitems': items } - - - return render(request, 'myapp/mytemplate.html', context ) #if i return more than one thing it just displays the whole html code + return render(request, 'myapp/mytemplate.html', context ) def add_todo(request): form = request.POST select_choice = form['choice-field'] new_todo = form['new-todo'] - new_priority = Priority() #creating a new row for priority - new_todo_item = Todoitem() #creating a new todo item in the DB - - new_priority.name = select_choice - new_priority.save() - - new_todo_item.text = new_todo - - new_todo_item.save() #saving the new rows in the database + new_priority,created = Priority.objects.get_or_create(name=select_choice) #creating a new row for priority + # we put ,created next to new_priority, so that we only get the first part of the tuple + #.create also does .save() for you + #.get or create returns a tuple (obj, created=boolean) + new_todo_item = Todoitem.objects.create(text=new_todo, priority=new_priority) - - - return HttpResponseRedirect(reverse('myapp:indexView')) #this just redirects back to the main page + return redirect('myapp:indexView') #this just redirects back to the main page #to show all the todo items + # instead of Http response redirect you can just import redirect with django shortcuts From 9dc34c15d2668d1d59dde8d50f9d14837bd77853 Mon Sep 17 00:00:00 2001 From: arek8675 Date: Mon, 3 Jan 2022 19:26:15 -0800 Subject: [PATCH 6/7] Submitting Lab1 --- .../todo/myapp/migrations/0001_initial.py | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 Code/Arek/Django/lab1/todo-lab/todo/myapp/migrations/0001_initial.py diff --git a/Code/Arek/Django/lab1/todo-lab/todo/myapp/migrations/0001_initial.py b/Code/Arek/Django/lab1/todo-lab/todo/myapp/migrations/0001_initial.py new file mode 100644 index 00000000..17d1faf3 --- /dev/null +++ b/Code/Arek/Django/lab1/todo-lab/todo/myapp/migrations/0001_initial.py @@ -0,0 +1,31 @@ +# Generated by Django 4.0 on 2022-01-04 03:15 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Priority', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(choices=[('high', 'High'), ('medium', 'Medium'), ('low', 'Low')], max_length=6)), + ], + ), + migrations.CreateModel( + name='Todoitem', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('text', models.CharField(max_length=200)), + ('created_date', models.DateTimeField(blank=True, null=True)), + ('priority', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='myapp.priority')), + ], + ), + ] From 478d0c79980850359edacf7f1e67746029980114 Mon Sep 17 00:00:00 2001 From: arek8675 Date: Tue, 4 Jan 2022 19:53:18 -0800 Subject: [PATCH 7/7] fixed 404 error on port 8000 --- Code/Arek/Django/lab1/todo-lab/todo/myapp/urls.py | 2 +- Code/Arek/Django/lab1/todo-lab/todo/todo/urls.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Code/Arek/Django/lab1/todo-lab/todo/myapp/urls.py b/Code/Arek/Django/lab1/todo-lab/todo/myapp/urls.py index 99244ae5..7e53a457 100644 --- a/Code/Arek/Django/lab1/todo-lab/todo/myapp/urls.py +++ b/Code/Arek/Django/lab1/todo-lab/todo/myapp/urls.py @@ -4,7 +4,7 @@ app_name='myapp' urlpatterns = [ - path('indexView/', views.indexView, name='indexView'), + path('', views.indexView, name='indexView'), path('newtodo/', views.add_todo, name='add_todo') ] \ No newline at end of file diff --git a/Code/Arek/Django/lab1/todo-lab/todo/todo/urls.py b/Code/Arek/Django/lab1/todo-lab/todo/todo/urls.py index e8c2eeb8..e4bea2bc 100644 --- a/Code/Arek/Django/lab1/todo-lab/todo/todo/urls.py +++ b/Code/Arek/Django/lab1/todo-lab/todo/todo/urls.py @@ -18,5 +18,5 @@ urlpatterns = [ path('admin/', admin.site.urls), - path('myapp/', include('myapp.urls')) + path('', include('myapp.urls')) ]