diff --git a/Website/api/models.py b/Website/api/models.py index 1dfd59a..5659835 100644 --- a/Website/api/models.py +++ b/Website/api/models.py @@ -64,9 +64,6 @@ class Student(models.Model): classes=models.CharField(max_length=100, default="", blank=True) added_to=models.CharField(max_length=100, default="", blank=True) completed=models.TextField(default="", blank=True) - + def save(self, *args, **kwargs): return super(Student, self).save(*args, **kwargs) - - - diff --git a/Website/config/__init__.py b/Website/config/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Website/skoolos/asgi.py b/Website/config/asgi.py similarity index 82% rename from Website/skoolos/asgi.py rename to Website/config/asgi.py index 9577b84..561756d 100644 --- a/Website/skoolos/asgi.py +++ b/Website/config/asgi.py @@ -11,6 +11,6 @@ import os from django.core.asgi import get_asgi_application -os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'skoolos.settings') +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings') application = get_asgi_application() diff --git a/Website/skoolos/settings.py b/Website/config/settings.py similarity index 96% rename from Website/skoolos/settings.py rename to Website/config/settings.py index 4912bfc..b636949 100644 --- a/Website/skoolos/settings.py +++ b/Website/config/settings.py @@ -31,6 +31,7 @@ ALLOWED_HOSTS = [] # Application definition INSTALLED_APPS = [ + 'skoolos.apps.SkoolosConfig', 'users.apps.UsersConfig', 'django.contrib.admin', 'django.contrib.auth', @@ -64,7 +65,7 @@ MIDDLEWARE = [ 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] -ROOT_URLCONF = 'skoolos.urls' +ROOT_URLCONF = 'config.urls' TEMPLATES = [ { @@ -82,7 +83,7 @@ TEMPLATES = [ }, ] -WSGI_APPLICATION = 'skoolos.wsgi.application' +WSGI_APPLICATION = 'config.wsgi.application' # Database @@ -137,3 +138,5 @@ STATIC_URL = '/static/' CRISPY_TEMPLATE_PACK = 'bootstrap4' LOGIN_REDIRECT_URL = '/' + +LOGIN_URL = '/login' diff --git a/Website/config/urls.py b/Website/config/urls.py new file mode 100644 index 0000000..420beb6 --- /dev/null +++ b/Website/config/urls.py @@ -0,0 +1,31 @@ +from django.urls import path +from rest_framework import routers +from api import views as api_views +from django.contrib import admin +from django.conf.urls import include +from django.contrib.auth import views as auth_views + +router = routers.DefaultRouter() +router.register(r'students', api_views.StudentViewSet) +router.register(r'teachers', api_views.TeacherViewSet) +router.register(r'assignments', api_views.AssignmentViewSet) +router.register(r'classes', api_views.ClassesViewSet) +# router.register(r'files', api_views.DefFilesViewSet) +router.register(r'users', api_views.UserViewSet) + +from users import views as user_views +from users.forms import LoginForm + +# Wire up our API using automatic URL routing. +# Additionally, we include login URLs for the browsable API. +urlpatterns = [ + path('', include('skoolos.urls')), + path('api/', include(router.urls)), + path('api-auth/', include('rest_framework.urls')), + path('admin/', admin.site.urls), + path('login/', auth_views.LoginView.as_view(template_name='users/login.html', authentication_form=LoginForm), name='login'), + path('logout/', user_views.logout, name='logout'), + path('register/', user_views.register, name='register'), + path('create_account/', user_views.create_account, name='create_account'), + path('callback/', user_views.callback, name='callback'), +] diff --git a/Website/skoolos/wsgi.py b/Website/config/wsgi.py similarity index 82% rename from Website/skoolos/wsgi.py rename to Website/config/wsgi.py index f17107f..6b29610 100644 --- a/Website/skoolos/wsgi.py +++ b/Website/config/wsgi.py @@ -11,6 +11,6 @@ import os from django.core.wsgi import get_wsgi_application -os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'skoolos.settings') +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings') application = get_wsgi_application() diff --git a/Website/manage.py b/Website/manage.py index f17dda4..58c5f10 100755 --- a/Website/manage.py +++ b/Website/manage.py @@ -5,7 +5,7 @@ import sys def main(): - os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'skoolos.settings') + os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings') try: from django.core.management import execute_from_command_line except ImportError as exc: diff --git a/Website/skoolos/admin.py b/Website/skoolos/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/Website/skoolos/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/Website/skoolos/apps.py b/Website/skoolos/apps.py new file mode 100644 index 0000000..6d65d67 --- /dev/null +++ b/Website/skoolos/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class SkoolosConfig(AppConfig): + name = 'skoolos' diff --git a/Website/skoolos/migrations/__init__.py b/Website/skoolos/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Website/skoolos/models.py b/Website/skoolos/models.py new file mode 100644 index 0000000..71a8362 --- /dev/null +++ b/Website/skoolos/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/Website/skoolos/static/skoolos/styles.css b/Website/skoolos/static/skoolos/styles.css new file mode 100644 index 0000000..e69de29 diff --git a/Website/skoolos/templates/skoolos/base.html b/Website/skoolos/templates/skoolos/base.html new file mode 100644 index 0000000..ac4bb53 --- /dev/null +++ b/Website/skoolos/templates/skoolos/base.html @@ -0,0 +1,26 @@ +{% load static %} + + + + + + + + + + + + + + + SkoolOS + + + + {% block content %}{% endblock %} + + + + + + diff --git a/Website/skoolos/templates/skoolos/home.html b/Website/skoolos/templates/skoolos/home.html new file mode 100644 index 0000000..abfc593 --- /dev/null +++ b/Website/skoolos/templates/skoolos/home.html @@ -0,0 +1,5 @@ +{% extends "skoolos/base.html" %} +{% block content %} +

welcome to skoolos

+

it's the future you've been waiting for

+{% endblock content %} diff --git a/Website/skoolos/tests.py b/Website/skoolos/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/Website/skoolos/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/Website/skoolos/urls.py b/Website/skoolos/urls.py index dda5383..5f53e18 100644 --- a/Website/skoolos/urls.py +++ b/Website/skoolos/urls.py @@ -1,29 +1,7 @@ from django.urls import path -from rest_framework import routers -from api import views as api_views -from django.contrib import admin -from django.conf.urls import include -from django.contrib.auth import views as auth_views +from . import views -router = routers.DefaultRouter() -router.register(r'students', api_views.StudentViewSet) -router.register(r'teachers', api_views.TeacherViewSet) -router.register(r'assignments', api_views.AssignmentViewSet) -router.register(r'classes', api_views.ClassesViewSet) -# router.register(r'files', api_views.DefFilesViewSet) -router.register(r'users', api_views.UserViewSet) -from users import views as user_views -from users.forms import LoginForm - -# Wire up our API using automatic URL routing. -# Additionally, we include login URLs for the browsable API. urlpatterns = [ - path('api/', include(router.urls)), - path('api-auth/', include('rest_framework.urls')), - path('admin/', admin.site.urls), - path('login/', auth_views.LoginView.as_view(template_name='users/login.html', authentication_form=LoginForm), name='login'), - path('register/', user_views.register, name='register'), - path('create_account/', user_views.create_account, name='create_account'), - path('callback/', user_views.callback, name='callback'), + path('', views.home, name='home'), ] diff --git a/Website/skoolos/views.py b/Website/skoolos/views.py new file mode 100644 index 0000000..deb0eae --- /dev/null +++ b/Website/skoolos/views.py @@ -0,0 +1,8 @@ +from django.shortcuts import render +from django.contrib.auth.decorators import login_required + +# Create your views here. + +@login_required() +def home (request): + return render(request, "skoolos/home.html") diff --git a/Website/users/forms.py b/Website/users/forms.py index ffcaa81..7bfae4c 100644 --- a/Website/users/forms.py +++ b/Website/users/forms.py @@ -1,7 +1,6 @@ from django import forms from django.contrib.auth.models import User from django.contrib.auth.forms import AuthenticationForm -from django.db.models import Q class LoginForm(AuthenticationForm): @@ -10,10 +9,10 @@ class LoginForm(AuthenticationForm): class UserCreationForm(forms.ModelForm): - username = forms.CharField() - email = forms.EmailField() - first_name = forms.CharField() - last_name = forms.CharField() + username = forms.CharField(disabled=True) + email = forms.EmailField(disabled=True) + first_name = forms.CharField(disabled=True) + last_name = forms.CharField(disabled=True) isStudent = forms.BooleanField(widget = forms.HiddenInput()) password = forms.CharField(widget=forms.PasswordInput(attrs={'placeholder': 'Password'})) confirm_password = forms.CharField(widget=forms.PasswordInput(attrs={'placeholder': 'Confirm Password'})) @@ -31,7 +30,7 @@ class UserCreationForm(forms.ModelForm): raise forms.ValidationError("Passwords do not match!") return cleaned_data - + class Meta: model = User fields = ('username', 'email', 'first_name', 'last_name', 'password') diff --git a/Website/users/models.py b/Website/users/models.py index 29b216c..bed1e0f 100644 --- a/Website/users/models.py +++ b/Website/users/models.py @@ -18,4 +18,4 @@ class Token(models.Model): return super(Token, self).save(*args, **kwargs) def __str__(self): - return self.token; + return f"{self.username}'s Token"; diff --git a/Website/users/static/users/styles.css b/Website/users/static/users/styles.css index 7aa3c45..f0b3e1c 100644 --- a/Website/users/static/users/styles.css +++ b/Website/users/static/users/styles.css @@ -99,6 +99,10 @@ body { -moz-osx-font-smoothing: grayscale; } +input:disabled { + background: #d9d9d9; +} + .errorlist { -} \ No newline at end of file +} diff --git a/Website/users/templates/users/base.html b/Website/users/templates/users/base.html index f4dd9e6..f621b1e 100644 --- a/Website/users/templates/users/base.html +++ b/Website/users/templates/users/base.html @@ -18,7 +18,6 @@ {% block content %}{% endblock %} -a diff --git a/Website/users/templates/users/login.html b/Website/users/templates/users/login.html index efde965..185c43b 100644 --- a/Website/users/templates/users/login.html +++ b/Website/users/templates/users/login.html @@ -6,14 +6,29 @@
{% csrf_token %} + {% if messages %} + {% for message in messages %} +
+ {{ message }} +
+ {% endfor %} + {% endif %} + {% if form.errors %} + {% for field in form %} + {% for error in field.errors %} +
+ {{ error|escape }} +
+ {% endfor %} + {% endfor %} + {% for error in form.non_field_errors %} +
+ {{ error|escape }} +
+ {% endfor %} + {% endif %} {% for field in form %} -
- {{ field.errors }} - {{ field }} - {% if field.help_text %} -

{{ field.help_text|safe }}

- {% endif %} -
+ {{ field }} {% endfor %}

Not registered? Create an account with Ion

diff --git a/Website/users/templates/users/register.html b/Website/users/templates/users/register.html index d7bac8d..2712f93 100644 --- a/Website/users/templates/users/register.html +++ b/Website/users/templates/users/register.html @@ -4,6 +4,13 @@