Chill out potato

This commit is contained in:
Praneeth Bhandaru 2020-12-13 11:38:52 -05:00
parent 66dc39d98b
commit 53b2e4526f
15 changed files with 40478 additions and 90 deletions

View File

@ -9,6 +9,7 @@ djangorestframework = "*"
django-cockroachdb = "*"
psycopg2 = "*"
pillow = "*"
django-crispy-forms = "*"
[dev-packages]
isort = "*"

13
site/api/signals.py Normal file
View File

@ -0,0 +1,13 @@
from django.db.models.signals import post_save
from django.contrib.auth.models import User
from django.dispatch import receiver
from .models import Profile
@receiver(post_save, sender=User)
def create_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)
@receiver(post_save, sender=User)
def save_profile(sender, instance, **kwargs):
instance.profile.save()

View File

@ -41,7 +41,9 @@ INSTALLED_APPS = [
'rest_framework',
'api',
'djoser',
'crispy_forms'
]
CRISPY_TEMPLATE_PACK = 'bootstrap4'
REST_FRAMEWORK = {
@ -150,3 +152,6 @@ STATIC_URL = '/static/'
STATICFILES_DIRS = [
BASE_DIR / 'static',
]
LOGIN_REDIRECT_URL = 'home'
LOGIN_URL = 'login'

30
site/frontend/forms.py Normal file
View File

@ -0,0 +1,30 @@
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm
from django import forms
from api.models import Classroom
class UserRegisterForm(UserCreationForm):
email = forms.EmailField(label='Email')
class Meta:
model = User
fields = ['username', 'email', 'password1', 'password2']
def __init__(self, *args, **kwargs):
super(UserRegisterForm, self).__init__(*args, **kwargs)
for field in self.fields:
self.fields[field].widget.attrs['placeholder'] = self.fields[field].label
self.fields[field].widget.attrs['class'] = 'input100'
class ClassroomForm(forms.ModelForm):
class Meta:
model = Classroom
fields = ['name', 'teacher', 'link', 'period']
def __init__(self, *args, **kwargs):
super(ClassroomForm, self).__init__(*args, **kwargs)
for field in self.fields:
self.fields[field].widget.attrs['placeholder'] = self.fields[field].label
self.fields[field].widget.attrs['class'] = 'input100'

View File

@ -1,3 +1,4 @@
from django.db import models
# Create your models here.

View File

@ -15,8 +15,15 @@ Including another URLconf
"""
from django.urls import path
from .views import *
from django.conf import settings
from django.conf.urls.static import static
from django.contrib.auth import views as auth_views
urlpatterns = [
path('login/', login_view, name='login'),
path('register/', register_view, name='register')
path('login/', auth_views.LoginView.as_view(template_name='frontend/login.html'), name='login'),
path('logout/', auth_views.LogoutView.as_view(template_name='frontend/logout.html'), name='logout'),
path('register/', register_view, name='register'),
path('create_user/', register_view, name='create_user'),
path('', home_view, name='home'),
path('classes', class_form_view, name='classroom_form')
]

View File

@ -1,18 +1,46 @@
from django.shortcuts import render
from django.contrib import messages
from django.shortcuts import render, redirect
from django.contrib.auth.decorators import login_required
from .forms import *
from api.models import *
# Create your views here.
def login_view(request):
return render(request, 'frontend/login.html')
def logout_view(request):
pass
def register_view(request):
return render(request, 'frontend/register.html')
if request.method == 'POST':
form = UserRegisterForm(request.POST)
if form.is_valid():
user = form.save()
prof = Profile(user=user)
prof.save()
messages.success(request, f'Your account has been created! You are now able to log in')
return redirect('login')
else:
form = UserRegisterForm()
return render(request, 'frontend/register.html', {'form': form})
@login_required
def home_view(request):
pass
return render(request, 'frontend/temp.html', {'classes': Classroom.objects.filter(student=Profile.objects.get(user=request.user))})
@login_required
def class_form_view(request):
if request.method == "POST":
form = ClassroomForm(request.POST)
if form.is_valid():
class_i = Classroom(
student=Profile.objects.get(user=request.user),
name=form.cleaned_data.get('name'),
teacher=form.cleaned_data.get('teacher'),
link=form.cleaned_data.get('link'),
period=form.cleaned_data.get('period'),
)
class_i.save()
return redirect('home')
else:
form = ClassroomForm
return render(request, 'frontend/classroomForm.html', {'form': form})

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,85 @@
{% extends 'frontend/index.html' %}
{% load static %}
{% load crispy_forms_tags %}
{% block head %}
<link rel="stylesheet" type="text/css" href="{% static "login/css/index.css" %}"
/><!--===============================================================================================-->
<link rel="icon" type="image/png" href="{% static "login/images/icons/favicon.ico" %}"/>
<!--===============================================================================================-->
<link rel="stylesheet" type="text/css" href="{% static "login/vendor/bootstrap/css/bootstrap.min.css" %}">
<!--===============================================================================================-->
<link rel="stylesheet" type="text/css" href="{% static "login/fonts/font-awesome-4.7.0/css/font-awesome.min.css" %}">
<!--===============================================================================================-->
<link rel="stylesheet" type="text/css" href="{% static "login/fonts/iconic/css/material-design-iconic-font.min.css" %}">
<!--===============================================================================================-->
<link rel="stylesheet" type="text/css" href="{% static "login/vendor/animate/animate.css" %}">
<!--===============================================================================================-->
<link rel="stylesheet" type="text/css" href="{% static "login/vendor/css-hamburgers/hamburgers.min.css" %}">
<!--===============================================================================================-->
<link rel="stylesheet" type="text/css" href="{% static "login/vendor/animsition/css/animsition.min.css" %}">
<!--===============================================================================================-->
<link rel="stylesheet" type="text/css" href="{% static "login/vendor/select2/select2.min.css" %}">
<!--===============================================================================================-->
<link rel="stylesheet" type="text/css" href="{% static "login/vendor/daterangepicker/daterangepicker.css" %}">
<!--===============================================================================================-->
<link rel="stylesheet" type="text/css" href="{% static "login/css/util.css" %}">
<link rel="stylesheet" type="text/css" href="{% static "login/css/main.css" %}">
<!--===============================================================================================-->
{% endblock head %}
{% block content %}
<div class="login_container">
<div class="container-login100" style="background-image: url("{% static 'login/images/bg-01.jpg' %}");">
<div class="wrap-login100 p-l-55 p-r-55 p-t-80 p-b-30">
<form class="login100-form validate-form" method="POST">
{% csrf_token %}
<span class="login100-form-title p-b-37">
Create a new class!
</span>
{% for field in form %}
<div class="wrap-input100 validate-input m-b-10" data-validate="Enter {{ field.label }}">
<p style="color: red;">{{ field.errors }}</p>
<input type="{{ field.field.widget.input_type}}" name="{{ field.html_name }}" id="{{ field.auto_id }}" required class="input100" placeholder="{{ field.label }}">
<span class="focus-input100"></span>
</div>
{% endfor %}
<div class="container-login100-form-btn m-b-10">
<button class="login100-form-btn">
Create!
</button>
</div>
<div class="text-center">
<a href="{% url 'home' %}" class="txt2 hov1">
Back
</a>
</div>
</form>
</div>
</div>
<div id="dropDownSelect1"></div>
{% endblock content %}
{% block js %}
<!--===============================================================================================-->
<script src="{% static "login/vendor/jquery/jquery-3.2.1.min.js" %}"></script>
<!--===============================================================================================-->
<script src="{% static "login/vendor/animsition/js/animsition.min.js" %}"></script>
<!--===============================================================================================-->
<script src="{% static "login/vendor/bootstrap/js/popper.js" %}"></script>
<script src="{% static "login/vendor/bootstrap/js/bootstrap.min.js" %}"></script>
<!--===============================================================================================-->
<script src="{% static "login/vendor/select2/select2.min.js" %}"></script>
<!--===============================================================================================-->
<script src="{% static "login/vendor/daterangepicker/moment.min.js" %}"></script>
<script src="{% static "login/vendor/daterangepicker/daterangepicker.js" %}"></script>
<!--===============================================================================================-->
<script src="{% static "login/vendor/countdowntime/countdowntime.js" %}"></script>
<!--===============================================================================================-->
<script src="{% static "login/js/main.js" %}"></script>
{% endblock js %}

View File

@ -10,14 +10,84 @@
rel="stylesheet"
href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700&display=swap"
/>
<link rel="stylesheet"
href="https://mobirise.com/bootstrap-template/assets/web/assets/mobirise-icons/mobirise-icons.css">
<link rel="stylesheet" href="https://mobirise.com/bootstrap-template/assets/tether/tether.min.css">
<link rel="stylesheet" href="https://mobirise.com/bootstrap-template/assets/bootstrap/css/bootstrap.min.css">
<link rel="stylesheet" href="https://mobirise.com/bootstrap-template/assets/bootstrap/css/bootstrap-grid.min.css">
<link rel="stylesheet" href="https://mobirise.com/bootstrap-template/assets/bootstrap/css/bootstrap-reboot.min.css">
<link rel="stylesheet" href="https://mobirise.com/bootstrap-template/assets/dropdown/css/style.css">
<link rel="stylesheet" href="https://mobirise.com/bootstrap-template/assets/theme/css/style.css">
<link rel="stylesheet" href="https://mobirise.com/bootstrap-template/assets/mobirise/css/mbr-additional.css"
type="text/css">
{% block head %}{% endblock head %}
</head>
<body>
<section class="menu thing cid-qv1frvgcz3" once="menu" id="menu1-5o" data-rv-view="9261">
<nav class="navbar navbar-expand beta-menu navbar-dropdown align-items-center navbar-fixed-top navbar-toggleable-sm bg-color transparent" style="font-size: 20px !important;">
<button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse"
data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false"
aria-label="Toggle navigation">
<div class="hamburger">
<span></span>
<span></span>
<span></span>
<span></span>
</div>
</button>
<div class="menu-logo">
<div class="navbar-brand">
<span class="navbar-caption-wrap"><a class="navbar-caption text-white display-4"
href="{% url 'home' %}" style="font-size: 25px !important;">
DO NOT SPACE OUT</a></span>
</div>
</div>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav nav-dropdown " data-app-modern-menu="true">
<li class="nav-item">
<a class="nav-link link text-white display-4" style="font-size: 20px !important;" href="{% url 'classroom_form' %}" aria-expanded="false">
Classroom
</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link link text-white dropdown-toggle display-4" style="font-size: 20px !important;" href="blog.html" data-toggle="dropdown-submenu" aria-expanded="false">
Profile
</a>
<div class="dropdown-menu dropdown-menu-right">
<a class="text-white dropdown-item" href="slider.html">
<h6>
Settings
</h6>
</a>
</div>
</li>
</ul>
</div>
</nav>
</section>
<div id="main">
<div id="app">
{% block content %}{% endblock content %}
</div>
</div>
<script src="https://mobirise.com/bootstrap-template/assets/web/assets/jquery/jquery.min.js"></script>
<script src="https://mobirise.com/bootstrap-template/assets/popper/popper.min.js"></script>
<script src="https://mobirise.com/bootstrap-template/assets/tether/tether.min.js"></script>
<script src="https://mobirise.com/bootstrap-template/assets/bootstrap/js/bootstrap.min.js"></script>
<script src="https://mobirise.com/bootstrap-template/assets/smooth-scroll/smooth-scroll.js"></script>
<script src="https://mobirise.com/bootstrap-template/assets/dropdown/js/script.min.js"></script>
<script src="https://mobirise.com/bootstrap-template/assets/touch-swipe/jquery.touch-swipe.min.js"></script>
<script src="https://mobirise.com/bootstrap-template/assets/jarallax/jarallax.min.js"></script>
<script src="https://mobirise.com/bootstrap-template/assets/theme/js/script.js"></script>
{% block js %}{% endblock js %}
</body>
</html>

View File

@ -1,5 +1,8 @@
{% extends 'frontend/index.html' %}
{% load static %}
{% load crispy_forms_tags %}
{% block head %}
@ -32,51 +35,30 @@
<div class="login_container">
<div class="container-login100" style="background-image: url("{% static 'login/images/bg-01.jpg' %}");">
<div class="wrap-login100 p-l-55 p-r-55 p-t-80 p-b-30">
<form class="login100-form validate-form">
<form class="login100-form validate-form" method="POST">
{% csrf_token %}
<span class="login100-form-title p-b-37">
Sign In
</span>
<div class="wrap-input100 validate-input m-b-10" data-validate="Enter username">
<input class="input100" type="text" name="username" placeholder="username">
<span class="focus-input100"></span>
</div>
<div class="wrap-input100 validate-input m-b-10" data-validate = "Enter password">
<input class="input100" type="password" name="pass" placeholder="password">
<span class="focus-input100"></span>
</div>
<div class="container-login100-form-btn">
{% for field in form %}
<div class="wrap-input100 validate-input m-b-10" data-validate="Enter {{ field.label }}">
<p style="color: red;">{{ field.errors }}</p>
<input type="{{ field.field.widget.input_type}}" name="{{ field.html_name }}" id="{{ field.auto_id }}" required class="input100" placeholder="{{ field.label }}">
<span class="focus-input100"></span>
</div>
{% endfor %}
<div class="container-login100-form-btn m-b-10">
<button class="login100-form-btn">
Sign In
</button>
</div>
<div class="text-center p-t-57 p-b-20">
<span class="txt1">
Or login with
</span>
</div>
<div class="flex-c p-b-10">
<a href="#" class="login100-social-item">
<i class="fa fa-facebook-f"></i>
</a>
<a href="#" class="login100-social-item">
<img src="{% static 'login/images/icons/icon-google.png' %}" alt="GOOGLE">
</a>
</div>
<div class="text-center">
<a href="{% url 'register' %}" class="txt2 hov1">
Sign Up
</a>
</div>
</form>
</div>
</div>
<div id="dropDownSelect1"></div>
@ -100,4 +82,4 @@
<script src="{% static "login/vendor/countdowntime/countdowntime.js" %}"></script>
<!--===============================================================================================-->
<script src="{% static "login/js/main.js" %}"></script>
{% endblock js %}
{% endblock js %}

View File

@ -0,0 +1,24 @@
{% extends 'frontend/index.html' %}
{% block content %}
<section class="header11 cid-qv7jHqwEI9 mbr-fullscreen mbr-parallax-background" id="header11-5p" data-rv-view="9263">
<!-- Block parameters controls (Blue "Gear" panel) -->
<!-- End block parameters -->
<div class="mbr-overlay" style="opacity: 0.5; background-color: rgb(35, 35, 35);">
</div>
<div class="container align-left">
<div class="media-container-column mbr-white col-md-12">
<h1 class="mbr-section-title py-3 mbr-fonts-style display-1"><strong>You have been logged out....</strong>
</h1>
<a class="btn btn-md btn-white-outline display-4"
href="{% url 'login' %}">Login again!</a>
</div>
</div>
</div>
</section>
{% endblock content %}

View File

@ -32,40 +32,19 @@
<div class="login_container">
<div class="container-login100" style="background-image: url("{% static 'login/images/bg-01.jpg' %}");">
<div class="wrap-login100 p-l-55 p-r-55 p-t-80 p-b-30">
<form class="login100-form validate-form">
<form class="login100-form validate-form" method="POST" action="{% url 'create_user' %}">
{% csrf_token %}
<span class="login100-form-title p-b-37">
Register
</span>
<div class="wrap-input100 validate-input m-b-10" data-validate="Enter username">
<input class="input100" type="username" name="username" placeholder="username">
<span class="focus-input100"></span>
</div>
<div class="wrap-input100 validate-input m-b-10" data-validate="Enter email">
<input class="input100" type="email" name="email" placeholder="email">
<span class="focus-input100"></span>
</div>
<div class="wrap-input100 validate-input m-b-10" data-validate="Enter first name">
<input class="input100" type="text" name="firstname" placeholder="first name">
<span class="focus-input100"></span>
</div>
<div class="wrap-input100 validate-input m-b-10" data-validate="Enter last name">
<input class="input100" type="text" name="lastname" placeholder="lastname">
<span class="focus-input100"></span>
</div>
<div class="wrap-input100 validate-input m-b-10" data-validate = "Enter password">
<input class="input100" type="password" name="pass1" placeholder="password">
<span class="focus-input100"></span>
</div>
<div class="wrap-input100 validate-input m-b-15" data-validate = "Confirm password">
<input class="input100" type="password" name="pass2" placeholder="confirm password">
<span class="focus-input100"></span>
</div>
{% for field in form %}
<div class="wrap-input100 validate-input m-b-10" data-validate="Enter {{ field.label }}">
<p style="color: red;">{{ field.errors }}</p>
{{ field }}
<span class="focus-input100"></span>
</div>
{% endfor %}
<div class="container-login100-form-btn">
<button class="login100-form-btn">
@ -73,21 +52,7 @@
</button>
</div>
<div class="text-center p-t-57 p-b-20">
<span class="txt1">
Or signin with
</span>
</div>
<div class="flex-c p-b-10">
<a href="#" class="login100-social-item">
<i class="fa fa-facebook-f"></i>
</a>
<a href="#" class="login100-social-item">
<img src="{% static 'login/images/icons/icon-google.png' %}" alt="GOOGLE">
</a>
</div>
<div class="m-b-10"></div>
<div class="text-center">
<a href="{% url 'login' %}" class="txt2 hov1">

View File

@ -0,0 +1,54 @@
{% extends 'frontend/index.html' %}
{% load static %}
{% block content %}
<section class="header11 cid-qv7jHqwEI9 mbr-fullscreen mbr-parallax-background" id="header11-5p" data-rv-view="9263">
<!-- Block parameters controls (Blue "Gear" panel) -->
<!-- End block parameters -->
<div class="mbr-overlay" style="opacity: 0.5; background-color: rgb(35, 35, 35);">
</div>
<div class="container align-left">
<div class="media-container-column mbr-white col-md-12">
<h1 class="mbr-section-title py-3 mbr-fonts-style display-1"><strong>Just Don't Space Out</strong>
</h1>
<p class="mbr-text py-3 mbr-fonts-style display-5">
A speech to text program to help transcribe your online meetings!</p>
<div class="mbr-section-btn py-4">
<a class="btn btn-md btn-white-outline display-4"
href="#">LEARN MORE</a>
</div>
</div>
</div>
</section>
<section class="mbr-section content4 cid-qxVpIJ8WtD" id="content4-na" data-rv-view="8245">
<div class="container">
<div class="media-container-row">
<div class="title col-12 col-md-8">
<h2 class="align-center pb-3 mbr-fonts-style display-2">
CLASSES</h2>
</div>
</div>
</div>
<div class="container">
{% for user_class in classes %}
{{ user_class }}
{% endfor %}
</div>
</section>
{% endblock content %}
{% block js %}
{% endblock js %}