Please enter your email address below and we will send you information to change your password.
++ I FORGOT +
diff --git a/.gitignore b/.gitignore index b6e4761..5391d87 100644 --- a/.gitignore +++ b/.gitignore @@ -20,7 +20,6 @@ parts/ sdist/ var/ wheels/ -pip-wheel-metadata/ share/python-wheels/ *.egg-info/ .installed.cfg @@ -50,6 +49,7 @@ coverage.xml *.py,cover .hypothesis/ .pytest_cache/ +cover/ # Translations *.mo @@ -72,6 +72,7 @@ instance/ docs/_build/ # PyBuilder +.pybuilder/ target/ # Jupyter Notebook @@ -82,7 +83,9 @@ profile_default/ ipython_config.py # pyenv -.python-version +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version # pipenv # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. @@ -127,3 +130,9 @@ dmypy.json # Pyre type checker .pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ \ No newline at end of file diff --git a/Doodle.png b/Doodle.png new file mode 100644 index 0000000..0b09871 Binary files /dev/null and b/Doodle.png differ diff --git a/TouchMeNot/__init__.py b/TouchMeNot/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/TouchMeNot/asgi.py b/TouchMeNot/asgi.py new file mode 100644 index 0000000..4c3d353 --- /dev/null +++ b/TouchMeNot/asgi.py @@ -0,0 +1,16 @@ +""" +ASGI config for TouchMeNot 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/3.2/howto/deployment/asgi/ +""" + +import os + +from django.core.asgi import get_asgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'TouchMeNot.settings') + +application = get_asgi_application() diff --git a/TouchMeNot/settings.py b/TouchMeNot/settings.py new file mode 100644 index 0000000..764365a --- /dev/null +++ b/TouchMeNot/settings.py @@ -0,0 +1,139 @@ +""" +Django settings for TouchMeNot project. + +Generated by 'django-admin startproject' using Django 3.2.6. + +For more information on this file, see +https://docs.djangoproject.com/en/3.2/topics/settings/ + +For the full list of settings and their values, see +https://docs.djangoproject.com/en/3.2/ref/settings/ +""" +from pathlib import Path + +# Build paths inside the project like this: BASE_DIR / 'subdir'. +BASE_DIR = Path(__file__).resolve().parent.parent + +import environ + +env = environ.Env( + # set casting, default value + DEBUG=(bool, False) +) +# reading .env file +environ.Env.read_env() + +SECRET_KEY = env('SECRET_KEY') + +DEBUG = env('DEBUG') + +ALLOWED_HOSTS = [] + + +# Application definition + +INSTALLED_APPS = [ + 'django.contrib.admin', + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.messages', + 'django.contrib.staticfiles', + 'users.apps.UsersConfig', + 'virtualscreen.apps.VirtualscreenConfig', + 'crispy_forms' +] + +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 = 'TouchMeNot.urls' + +TEMPLATES = [ + { + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + 'DIRS': [BASE_DIR / 'templates'], + '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 = 'TouchMeNot.wsgi.application' + + +# Database +# https://docs.djangoproject.com/en/3.2/ref/settings/#databases + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': BASE_DIR / 'db.sqlite3', + } +} + + +# Password validation +# https://docs.djangoproject.com/en/3.2/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/3.2/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/3.2/howto/static-files/ + +STATIC_URL = '/static/' +STATICFILES_DIRS = [ + BASE_DIR / 'static' +] + +# Default primary key field type +# https://docs.djangoproject.com/en/3.2/ref/settings/#default-auto-field + +DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' + + +MEDIA_URL = '/media/' +MEDIA_ROOT = BASE_DIR / 'media' + +LOGIN_URL = '/accounts/sign-in' diff --git a/TouchMeNot/urls.py b/TouchMeNot/urls.py new file mode 100644 index 0000000..faee394 --- /dev/null +++ b/TouchMeNot/urls.py @@ -0,0 +1,28 @@ +"""TouchMeNot URL Configuration + +The `urlpatterns` list routes URLs to views. For more information please see: + https://docs.djangoproject.com/en/3.2/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 +from django.conf.urls.static import static +from django.conf import settings + +urlpatterns = [ + path('admin/', admin.site.urls), + path('', include('virtualscreen.urls')), + path('accounts/', include('users.urls')), +] + +if settings.DEBUG: + urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) diff --git a/TouchMeNot/wsgi.py b/TouchMeNot/wsgi.py new file mode 100644 index 0000000..3f0106a --- /dev/null +++ b/TouchMeNot/wsgi.py @@ -0,0 +1,16 @@ +""" +WSGI config for TouchMeNot 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/3.2/howto/deployment/wsgi/ +""" + +import os + +from django.core.wsgi import get_wsgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'TouchMeNot.settings') + +application = get_wsgi_application() diff --git a/manage.py b/manage.py new file mode 100644 index 0000000..2fc73ed --- /dev/null +++ b/manage.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +"""Django's command-line utility for administrative tasks.""" +import os +import sys + + +def main(): + """Run administrative tasks.""" + os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'TouchMeNot.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/media/default_avatar.png b/media/default_avatar.png new file mode 100644 index 0000000..7dd713c Binary files /dev/null and b/media/default_avatar.png differ diff --git a/media/doodle/Doodle.png b/media/doodle/Doodle.png new file mode 100644 index 0000000..3610c23 Binary files /dev/null and b/media/doodle/Doodle.png differ diff --git a/media/doodle/Doodle_I7GAHW4.png b/media/doodle/Doodle_I7GAHW4.png new file mode 100644 index 0000000..3610c23 Binary files /dev/null and b/media/doodle/Doodle_I7GAHW4.png differ diff --git a/media/doodle/Doodle_ucMtVOg.png b/media/doodle/Doodle_ucMtVOg.png new file mode 100644 index 0000000..3610c23 Binary files /dev/null and b/media/doodle/Doodle_ucMtVOg.png differ diff --git a/media/profile_pics/A_Sharp_View_of_the_Sun.jpg b/media/profile_pics/A_Sharp_View_of_the_Sun.jpg new file mode 100644 index 0000000..0362e03 Binary files /dev/null and b/media/profile_pics/A_Sharp_View_of_the_Sun.jpg differ diff --git a/media/profile_pics/A_Sharp_View_of_the_Sun1.jpg b/media/profile_pics/A_Sharp_View_of_the_Sun1.jpg new file mode 100644 index 0000000..aff2186 Binary files /dev/null and b/media/profile_pics/A_Sharp_View_of_the_Sun1.jpg differ diff --git a/media/profile_pics/A_Sharp_View_of_the_Sun_ZJcmACG.jpg b/media/profile_pics/A_Sharp_View_of_the_Sun_ZJcmACG.jpg new file mode 100644 index 0000000..0362e03 Binary files /dev/null and b/media/profile_pics/A_Sharp_View_of_the_Sun_ZJcmACG.jpg differ diff --git a/media/profile_pics/A_Sharp_View_of_the_Sun_rUQJ3ZQ.jpg b/media/profile_pics/A_Sharp_View_of_the_Sun_rUQJ3ZQ.jpg new file mode 100644 index 0000000..0362e03 Binary files /dev/null and b/media/profile_pics/A_Sharp_View_of_the_Sun_rUQJ3ZQ.jpg differ diff --git a/media/profile_pics/Erupting_Volcano_Anak_Krakatau.jpg b/media/profile_pics/Erupting_Volcano_Anak_Krakatau.jpg new file mode 100644 index 0000000..7dd713c Binary files /dev/null and b/media/profile_pics/Erupting_Volcano_Anak_Krakatau.jpg differ diff --git a/media/profile_pics/Erupting_Volcano_Anak_Krakatau_SBBE93M.jpg b/media/profile_pics/Erupting_Volcano_Anak_Krakatau_SBBE93M.jpg new file mode 100644 index 0000000..7dd713c Binary files /dev/null and b/media/profile_pics/Erupting_Volcano_Anak_Krakatau_SBBE93M.jpg differ diff --git a/media/profile_pics/rippledsky_dai_960.jpg b/media/profile_pics/rippledsky_dai_960.jpg new file mode 100644 index 0000000..fcfd85a Binary files /dev/null and b/media/profile_pics/rippledsky_dai_960.jpg differ diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..225cf19 Binary files /dev/null and b/requirements.txt differ diff --git a/templates/users/base.html b/templates/users/base.html new file mode 100644 index 0000000..51bb97d --- /dev/null +++ b/templates/users/base.html @@ -0,0 +1,82 @@ + + +{% load static %} +
+ + + + + + + + + + + {% if title %} +Please enter your email address below and we will send you information to change your password.
+{{ user.email }}
+Because we believe in Telekinesis
+If you wish to contact us, please leave us a message.
+A ContactLess Ride
+Lorem ipsum dolor sit amet, consectetur adipisicing elit. Tenetur at reprehenderit optio, + laudantium eius quod, eum maxime molestiae porro omnis. Dolores aspernatur delectus impedit incidunt + dolore mollitia esse natus beatae.
+ +Try your hand at our virtual doodle!
+ Trace out your art with your fingertips in air,
+
what's more? You can even save it to your collection!
+
+
+
+
+
+ There is absolutely no need to touch any of the common system setups anymore!
+
+ Teachers can use it for
+ navigating through presentations and trying out select, scroll and type functionality with ease.
+
`s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\n\np {\n margin-top: 0;\n margin-bottom: $paragraph-margin-bottom;\n}\n\n\n// Abbreviations\n//\n// 1. Duplicate behavior to the data-bs-* attribute for our tooltip plugin\n// 2. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n// 3. Add explicit cursor to indicate changed behavior.\n// 4. Prevent the text-decoration to be skipped.\n\nabbr[title],\nabbr[data-bs-original-title] { // 1\n text-decoration: underline dotted; // 2\n cursor: help; // 3\n text-decoration-skip-ink: none; // 4\n}\n\n\n// Address\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\n\n// Lists\n\nol,\nul {\n padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\n// 1. Undo browser default\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // 1\n}\n\n\n// Blockquote\n\nblockquote {\n margin: 0 0 1rem;\n}\n\n\n// Strong\n//\n// Add the correct font weight in Chrome, Edge, and Safari\n\nb,\nstrong {\n font-weight: $font-weight-bolder;\n}\n\n\n// Small\n//\n// Add the correct font size in all browsers\n\nsmall {\n @include font-size($small-font-size);\n}\n\n\n// Mark\n\nmark {\n padding: $mark-padding;\n background-color: $mark-bg;\n}\n\n\n// Sub and Sup\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n\nsub,\nsup {\n position: relative;\n @include font-size($sub-sup-font-size);\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n// Links\n\na {\n color: $link-color;\n text-decoration: $link-decoration;\n\n &:hover {\n color: $link-hover-color;\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([class]) {\n &,\n &:hover {\n color: inherit;\n text-decoration: none;\n }\n}\n\n\n// Code\n\npre,\ncode,\nkbd,\nsamp {\n font-family: $font-family-code;\n @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\n direction: ltr #{\"/* rtl:ignore */\"};\n unicode-bidi: bidi-override;\n}\n\n// 1. Remove browser default top margin\n// 2. Reset browser default of `1em` to use `rem`s\n// 3. Don't allow content to break outside\n\npre {\n display: block;\n margin-top: 0; // 1\n margin-bottom: 1rem; // 2\n overflow: auto; // 3\n @include font-size($code-font-size);\n color: $pre-color;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n @include font-size(inherit);\n color: inherit;\n word-break: normal;\n }\n}\n\ncode {\n @include font-size($code-font-size);\n color: $code-color;\n word-wrap: break-word;\n\n // Streamline the style when inside anchors to avoid broken underline and more\n a > & {\n color: inherit;\n }\n}\n\nkbd {\n padding: $kbd-padding-y $kbd-padding-x;\n @include font-size($kbd-font-size);\n color: $kbd-color;\n background-color: $kbd-bg;\n @include border-radius($border-radius-sm);\n\n kbd {\n padding: 0;\n @include font-size(1em);\n font-weight: $nested-kbd-font-weight;\n }\n}\n\n\n// Figures\n//\n// Apply a consistent margin strategy (matches our type styles).\n\nfigure {\n margin: 0 0 1rem;\n}\n\n\n// Images and content\n\nimg,\nsvg {\n vertical-align: middle;\n}\n\n\n// Tables\n//\n// Prevent double borders\n\ntable {\n caption-side: bottom;\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: $table-cell-padding-y;\n padding-bottom: $table-cell-padding-y;\n color: $table-caption-color;\n text-align: left;\n}\n\n// 1. Removes font-weight bold by inheriting\n// 2. Matches default `