Basic interface created

This commit is contained in:
Rushil Umaretiya 2020-06-14 23:08:28 -04:00
parent 1b8c7b1307
commit 8e6f6ebf25
20 changed files with 218 additions and 288 deletions

View File

@ -2,7 +2,7 @@ from django.contrib import admin
from .models import ( from .models import (
DefFiles, DefFiles,
Assignment, Assignment,
Classes, Class,
Teacher, Teacher,
Student Student
) )
@ -13,4 +13,4 @@ admin.site.register(Teacher)
admin.site.register(Student) admin.site.register(Student)
admin.site.register(DefFiles) admin.site.register(DefFiles)
admin.site.register(Assignment) admin.site.register(Assignment)
admin.site.register(Classes) admin.site.register(Class)

View File

@ -30,7 +30,7 @@
# #
# #################################### # ####################################
# #
# from api.models import Assignment, Student, Classes, Teacher, DefFiles # from api.models import Assignment, Student, Class, Teacher, DefFiles
# from datetime import datetime # from datetime import datetime
# #
# f1 = DefFiles( # f1 = DefFiles(
@ -76,8 +76,8 @@
# A3.files.add(f4) # A3.files.add(f4)
# A3.save() # A3.save()
# #
# #classes # #Class
# math = Classes( # math = Class(
# name='Math5', # name='Math5',
# #
# ) # )
@ -86,7 +86,7 @@
# math.assignments.add(A2) # math.assignments.add(A2)
# math.save() # math.save()
# #
# english = Classes( # english = Class(
# name='English', # name='English',
# ) # )
# english.save() # english.save()
@ -104,8 +104,8 @@
# repo="https://github.com/therealraffi/2022rkhondak.git", # repo="https://github.com/therealraffi/2022rkhondak.git",
# ) # )
# raffu.save() # raffu.save()
# raffu.classes.add(math) # raffu.Class.add(math)
# raffu.classes.add(english) # raffu.Class.add(english)
# raffu.save() # raffu.save()
# #
# #teachers # #teachers
@ -115,7 +115,7 @@
# ion_user="eharris1" # ion_user="eharris1"
# ) # )
# ng.save() # ng.save()
# ng.classes.add(math) # ng.Class.add(math)
# ng.save() # ng.save()
# #
# chao = Teacher( # chao = Teacher(
@ -124,5 +124,5 @@
# ion_user="AKBailey" # ion_user="AKBailey"
# ) # )
# chao.save() # chao.save()
# chao.classes.add(english) # chao.Class.add(english)
# chao.save() # chao.save()

View File

@ -1,4 +1,4 @@
# Generated by Django 3.0.7 on 2020-06-14 19:14 # Generated by Django 3.0.7 on 2020-06-14 23:00
from django.conf import settings from django.conf import settings
from django.db import migrations, models from django.db import migrations, models
@ -14,6 +14,19 @@ class Migration(migrations.Migration):
] ]
operations = [ operations = [
migrations.CreateModel(
name='Class',
fields=[
('name', models.CharField(max_length=100, primary_key=True, serialize=False)),
('description', models.CharField(default='Class Description', max_length=500)),
('repo', models.URLField(blank=True, default='')),
('path', models.CharField(default='', max_length=100)),
('assignments', models.TextField(blank=True, default='')),
('default_file', models.CharField(blank=True, default='', max_length=100)),
('confirmed', models.TextField(blank=True, default='')),
('unconfirmed', models.TextField(blank=True, default='')),
],
),
migrations.CreateModel( migrations.CreateModel(
name='DefFiles', name='DefFiles',
fields=[ fields=[
@ -28,13 +41,9 @@ class Migration(migrations.Migration):
migrations.CreateModel( migrations.CreateModel(
name='Teacher', name='Teacher',
fields=[ fields=[
('created', models.DateTimeField(auto_now_add=True)), ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('first_name', models.CharField(max_length=100)), ('git', models.CharField(blank=True, default='', max_length=100)),
('last_name', models.CharField(max_length=100)), ('classes', models.ManyToManyField(to='api.Class')),
('classes', models.CharField(blank=True, default='', max_length=100)),
('ion_user', models.CharField(max_length=100, primary_key=True, serialize=False)),
('git', models.CharField(max_length=100)),
('email', models.CharField(blank=True, default='', max_length=100)),
('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
], ],
), ),
@ -42,21 +51,12 @@ class Migration(migrations.Migration):
name='Student', name='Student',
fields=[ fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('website', models.CharField(blank=True, default='https://google.com', max_length=150)), ('grade', models.IntegerField(blank=True, default=0)),
('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ('git', models.CharField(blank=True, default='', max_length=100)),
],
),
migrations.CreateModel(
name='Classes',
fields=[
('name', models.CharField(max_length=100, primary_key=True, serialize=False)),
('repo', models.URLField(blank=True, default='')), ('repo', models.URLField(blank=True, default='')),
('path', models.CharField(default='', max_length=100)), ('classes', models.CharField(blank=True, default='', max_length=100)),
('teacher', models.CharField(default='', max_length=100)), ('added_to', models.CharField(blank=True, default='', max_length=100)),
('assignments', models.TextField(blank=True, default='')), ('completed', models.TextField(blank=True, default='')),
('default_file', models.CharField(blank=True, default='', max_length=100)),
('confirmed', models.TextField(blank=True, default='')),
('unconfirmed', models.TextField(blank=True, default='')),
('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
], ],
), ),

View File

@ -1,52 +0,0 @@
# Generated by Django 3.0.7 on 2020-06-14 20:34
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('api', '0001_initial'),
]
operations = [
migrations.RemoveField(
model_name='student',
name='website',
),
migrations.AddField(
model_name='student',
name='added_to',
field=models.CharField(blank=True, default='', max_length=100),
),
migrations.AddField(
model_name='student',
name='classes',
field=models.CharField(blank=True, default='', max_length=100),
),
migrations.AddField(
model_name='student',
name='completed',
field=models.TextField(blank=True, default=''),
),
migrations.AddField(
model_name='student',
name='git',
field=models.CharField(blank=True, default='https://github.com/', max_length=100),
),
migrations.AddField(
model_name='student',
name='grade',
field=models.IntegerField(blank=True, default=9),
),
migrations.AddField(
model_name='student',
name='repo',
field=models.URLField(blank=True, default=''),
),
migrations.AddField(
model_name='student',
name='student_id',
field=models.IntegerField(blank=True, default=0),
),
]

View File

@ -0,0 +1,31 @@
# Generated by Django 3.0.7 on 2020-06-15 00:46
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('api', '0001_initial'),
]
operations = [
migrations.RemoveField(
model_name='class',
name='confirmed',
),
migrations.AddField(
model_name='class',
name='confirmed',
field=models.ManyToManyField(blank=True, related_name='confirmed', to='api.Student'),
),
migrations.RemoveField(
model_name='class',
name='unconfirmed',
),
migrations.AddField(
model_name='class',
name='unconfirmed',
field=models.ManyToManyField(blank=True, related_name='unconfirmed', to='api.Student'),
),
]

View File

@ -1,43 +0,0 @@
# Generated by Django 3.0.7 on 2020-06-14 20:44
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('api', '0002_auto_20200614_2034'),
]
operations = [
migrations.RemoveField(
model_name='student',
name='student_id',
),
migrations.RemoveField(
model_name='teacher',
name='created',
),
migrations.RemoveField(
model_name='teacher',
name='email',
),
migrations.RemoveField(
model_name='teacher',
name='first_name',
),
migrations.RemoveField(
model_name='teacher',
name='last_name',
),
migrations.AlterField(
model_name='student',
name='git',
field=models.CharField(blank=True, default='', max_length=100),
),
migrations.AlterField(
model_name='student',
name='grade',
field=models.IntegerField(blank=True),
),
]

View File

@ -0,0 +1,18 @@
# Generated by Django 3.0.7 on 2020-06-15 02:33
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('api', '0002_auto_20200615_0046'),
]
operations = [
migrations.AlterField(
model_name='teacher',
name='classes',
field=models.ManyToManyField(blank=True, related_name='teacher', to='api.Class'),
),
]

View File

@ -1,18 +0,0 @@
# Generated by Django 3.0.7 on 2020-06-14 21:07
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('api', '0003_auto_20200614_2044'),
]
operations = [
migrations.AlterField(
model_name='student',
name='grade',
field=models.IntegerField(blank=True, default=0),
),
]

View File

@ -0,0 +1,22 @@
# Generated by Django 3.0.7 on 2020-06-15 02:55
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('api', '0003_auto_20200615_0233'),
]
operations = [
migrations.RemoveField(
model_name='teacher',
name='classes',
),
migrations.AddField(
model_name='class',
name='teachers',
field=models.ManyToManyField(blank=True, related_name='teachers', to='api.Teacher'),
),
]

View File

@ -1,52 +1,7 @@
from django.db import models from django.db import models
from django.contrib.auth.models import User from django.contrib.auth.models import User
class DefFiles(models.Model):
name=models.CharField(max_length=100)
path=models.CharField(max_length=100)
assignment=models.CharField(max_length=100, default="")
classes=models.CharField(max_length=100)
teacher=models.CharField(max_length=100)
class Assignment(models.Model):
owner = models.ForeignKey('auth.User', related_name='assignments', on_delete=models.CASCADE)
name=models.CharField(max_length=100, primary_key=True)
due_date=models.DateTimeField()
# files = models.ManyToManyField(DefFiles)
files=models.CharField(max_length=100, default="", blank=True)
path=models.CharField(max_length=100)
classes=models.CharField(max_length=100)
teacher=models.CharField(max_length=100)
def __str__(self):
return '%s' % (self.name)
class Classes(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
name = models.CharField(primary_key=True, max_length=100)
repo=models.URLField(default="", blank=True)
path=models.CharField(max_length=100, default="")
teacher=models.CharField(max_length=100, default="")
assignments=models.TextField(default="", blank=True)
default_file=models.CharField(max_length=100, default="", blank=True)
confirmed=models.TextField(default="", blank=True)
unconfirmed=models.TextField(default="", blank=True)
# assignments = models.ManyToManyField(Assignment, default="")
# default_file = models.ManyToManyField(DefFiles)
def save(self, *args, **kwargs):
return super(Classes, self).save(*args, **kwargs)
class Teacher(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
# classes = models.ManyToManyField(Classes, default="")
classes=models.CharField(max_length=100, default="", blank=True)
ion_user=models.CharField(primary_key=True, max_length=100)
git=models.CharField(max_length=100)
def save(self, *args, **kwargs):
super(Teacher, self).save(*args, **kwargs)
class Student(models.Model): class Student(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE) user = models.OneToOneField(User, on_delete=models.CASCADE)
@ -62,3 +17,58 @@ class Student(models.Model):
def __str__(self): def __str__(self):
return f"{self.user.username}'s Profile" return f"{self.user.username}'s Profile"
class Class(models.Model):
name = models.CharField(primary_key=True, max_length=100)
description = models.CharField(default="Class Description", max_length=500)
repo=models.URLField(default="", blank=True)
path=models.CharField(max_length=100, default="")
assignments=models.TextField(default="", blank=True)
default_file=models.CharField(max_length=100, default="", blank=True)
confirmed=models.ManyToManyField(Student, blank=True, related_name='confirmed')
unconfirmed=models.ManyToManyField(Student, blank=True, related_name='unconfirmed')
# assignments = models.ManyToManyField(Assignment, default="")
# default_file = models.ManyToManyField(DefFiles)
def save(self, *args, **kwargs):
return super(Class, self).save(*args, **kwargs)
def __str__(self):
return self.name
class Teacher(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
classes=models.ManyToManyField(Class, blank=True, related_name='classes')
git=models.CharField(max_length=100, default="", blank=True)
def __str__(self):
return f"{self.user.username}'s Profile"
def save(self, *args, **kwargs):
super(Teacher, self).save(*args, **kwargs)
class Assignment(models.Model):
owner = models.ForeignKey('auth.User', related_name='assignments', on_delete=models.CASCADE)
name=models.CharField(max_length=100, primary_key=True)
due_date=models.DateTimeField()
# files = models.ManyToManyField(DefFiles)
files=models.CharField(max_length=100, default="", blank=True)
path=models.CharField(max_length=100)
classes=models.CharField(max_length=100)
teacher=models.CharField(max_length=100)
def __str__(self):
return '%s' % (self.name)
class DefFiles(models.Model):
name=models.CharField(max_length=100)
path=models.CharField(max_length=100)
assignment=models.CharField(max_length=100, default="")
classes=models.CharField(max_length=100)
teacher=models.CharField(max_length=100)

View File

@ -1,5 +1,5 @@
from django.contrib.auth.models import User, Group from django.contrib.auth.models import User, Group
from .models import Student, Teacher, Classes, Assignment, DefFiles from .models import Student, Teacher, Class, Assignment, DefFiles
from rest_framework import serializers, permissions from rest_framework import serializers, permissions
from django.contrib.auth.models import User from django.contrib.auth.models import User
from .permissions import IsOwnerOrReadOnly,isTeacher from .permissions import IsOwnerOrReadOnly,isTeacher
@ -15,41 +15,39 @@ class UserSerializer(serializers.HyperlinkedModelSerializer):
# class DefFilesSerializer(serializers.HyperlinkedModelSerializer): # class DefFilesSerializer(serializers.HyperlinkedModelSerializer):
# class Meta: # class Meta:
# model = DefFiles # model = DefFiles
# fields = ['name', 'path','assignment','classes', "teacher",'url', 'id'] # fields = ['name', 'path','assignment','Class', "teacher",'url', 'id']
class AssignmentSerializer(serializers.HyperlinkedModelSerializer): class AssignmentSerializer(serializers.HyperlinkedModelSerializer):
#permissions_classes = [permissions.IsAuthenticatedOrReadOnly] #permissions_Class = [permissions.IsAuthenticatedOrReadOnly]
# files = DefFilesSerializer(many=True, read_only=True,allow_null=True) # files = DefFilesSerializer(many=True, read_only=True,allow_null=True)
owner = serializers.ReadOnlyField(source='owner.username') owner = serializers.ReadOnlyField(source='owner.username')
class Meta: class Meta:
model = Assignment model = Assignment
# fields = ['url','name', 'due_date', 'path' , "classes","teacher",'owner'] # fields = ['url','name', 'due_date', 'path' , "Class","teacher",'owner']
fields = ['name', 'due_date', 'path' , "classes","teacher",'owner'] fields = ['name', 'due_date', 'path' , "Class","teacher",'owner']
class ClassesSerializer(serializers.HyperlinkedModelSerializer): class ClassSerializer(serializers.HyperlinkedModelSerializer):
# assignments = AssignmentSerializer(many=True, read_only=True,allow_null=True) # assignments = AssignmentSerializer(many=True, read_only=True,allow_null=True)
# default_file=DefFilesSerializer(many=True, read_only=True,allow_null=True) # default_file=DefFilesSerializer(many=True, read_only=True,allow_null=True)
owner = serializers.ReadOnlyField(source='owner.username') owner = serializers.ReadOnlyField(source='owner.username')
class Meta: class Meta:
model = Classes model = Class
# fields = ['url','name', 'repo','path', "teacher",'assignments',"default_file", 'confirmed', 'unconfirmed','owner'] # fields = ['url','name', 'repo','path', "teacher",'assignments',"default_file", 'confirmed', 'unconfirmed','owner']
fields = ['name', 'repo','path', "teacher",'assignments',"default_file", 'confirmed', 'unconfirmed','owner'] fields = ['name', 'repo','path', "teacher",'assignments',"default_file", 'confirmed', 'unconfirmed','owner']
class StudentSerializer(serializers.HyperlinkedModelSerializer): class StudentSerializer(serializers.HyperlinkedModelSerializer):
# classes = ClassesSerializer(many=True, read_only=True,allow_null=True) # Class = ClassSerializer(many=True, read_only=True,allow_null=True)
owner = serializers.ReadOnlyField(source='owner.username') owner = serializers.ReadOnlyField(source='owner.username')
class Meta: class Meta:
model = Student model = Student
# fields = ['url','first_name', 'last_name', 'grade','email','student_id', 'git','ion_user','classes','added_to','completed', 'repo','owner'] # fields = ['url','first_name', 'last_name', 'grade','email','student_id', 'git','ion_user','Class','added_to','completed', 'repo','owner']
fields = ['first_name', 'last_name', 'grade','email','student_id', 'git','ion_user','classes','added_to','completed', 'repo','owner'] fields = ['first_name', 'last_name', 'grade','email','student_id', 'git','ion_user','Class','added_to','completed', 'repo','owner']
class TeacherSerializer(serializers.ModelSerializer): class TeacherSerializer(serializers.ModelSerializer):
# classes = ClassesSerializer(many=True, read_only=True,allow_null=True) # Class = ClassSerializer(many=True, read_only=True,allow_null=True)
owner = serializers.ReadOnlyField(source='owner.username') owner = serializers.ReadOnlyField(source='owner.username')
class Meta: class Meta:
model = Teacher model = Teacher
# fields = ['url','first_name', 'last_name','git','ion_user', 'email','classes','owner'] # fields = ['url','first_name', 'last_name','git','ion_user', 'email','Class','owner']
fields = ['first_name', 'last_name','git','ion_user', 'email','classes','owner'] fields = ['first_name', 'last_name','git','ion_user', 'email','Class','owner']

View File

@ -9,8 +9,8 @@ urlpatterns = [
path('teachers/<str:pk>/', views.TeacherDetail.as_view()), path('teachers/<str:pk>/', views.TeacherDetail.as_view()),
path('assignments/', views.AssignmentList.as_view()), path('assignments/', views.AssignmentList.as_view()),
path('assignments/<str:pk>/', views.AssignmentDetail.as_view()), path('assignments/<str:pk>/', views.AssignmentDetail.as_view()),
path('classes/', views.ClassesList.as_view()), path('classes/', views.ClassList.as_view()),
path('classes/<str:pk>/', views.ClassesDetail.as_view()), path('classes/<str:pk>/', views.ClassDetail.as_view()),
] ]
urlpatterns = format_suffix_patterns(urlpatterns) urlpatterns = format_suffix_patterns(urlpatterns)

View File

@ -1,5 +1,5 @@
from .models import Student, Teacher, Classes, Assignment, DefFiles from .models import Student, Teacher, Class, Assignment, DefFiles
from .serializers import StudentSerializer, TeacherSerializer, ClassesSerializer, AssignmentSerializer, UserSerializer from .serializers import StudentSerializer, TeacherSerializer, ClassSerializer, AssignmentSerializer, UserSerializer
from rest_framework import generics, viewsets, permissions, response, status from rest_framework import generics, viewsets, permissions, response, status
from django.http import Http404 from django.http import Http404
from rest_framework.views import APIView from rest_framework.views import APIView
@ -14,7 +14,7 @@ from rest_framework.response import Response
class UserViewSet(viewsets.ModelViewSet): class UserViewSet(viewsets.ModelViewSet):
queryset = User.objects.all() queryset = User.objects.all()
serializer_class = UserSerializer serializer_class = UserSerializer
permission_classes = [permissions.IsAuthenticated] permission_Class = [permissions.IsAuthenticated]
class StudentViewSet(viewsets.ModelViewSet): class StudentViewSet(viewsets.ModelViewSet):
@ -23,7 +23,7 @@ class StudentViewSet(viewsets.ModelViewSet):
""" """
queryset = Student.objects.all() queryset = Student.objects.all()
serializer_class = StudentSerializer serializer_class = StudentSerializer
permission_classes = [permissions.IsAuthenticated, IsOwnerOrReadOnly] permission_Class = [permissions.IsAuthenticated, IsOwnerOrReadOnly]
def perform_create(self, serializer): def perform_create(self, serializer):
serializer.save(owner=self.request.user) serializer.save(owner=self.request.user)
@ -34,18 +34,18 @@ class TeacherViewSet(viewsets.ModelViewSet):
""" """
queryset = Teacher.objects.all() queryset = Teacher.objects.all()
serializer_class = TeacherSerializer serializer_class = TeacherSerializer
permission_classes = [permissions.IsAuthenticated, IsOwnerOrReadOnly] permission_Class = [permissions.IsAuthenticated, IsOwnerOrReadOnly]
def perform_create(self, serializer): def perform_create(self, serializer):
serializer.save(owner=self.request.user) serializer.save(owner=self.request.user)
class ClassesViewSet(viewsets.ModelViewSet): class ClassViewSet(viewsets.ModelViewSet):
""" """
API endpoint that allows users to be viewed or edited. API endpoint that allows users to be viewed or edited.
""" """
queryset = Classes.objects.all() queryset = Class.objects.all()
serializer_class = ClassesSerializer serializer_class = ClassSerializer
permission_classes = [permissions.IsAuthenticated, IsOwnerOrReadOnly] permission_Class = [permissions.IsAuthenticated, IsOwnerOrReadOnly]
def perform_create(self, serializer): def perform_create(self, serializer):
if(self.request.user.groups.filter(name__in=['teachers']).exists() or self.request.user.is_superuser): if(self.request.user.groups.filter(name__in=['teachers']).exists() or self.request.user.is_superuser):
@ -61,7 +61,7 @@ class AssignmentViewSet(viewsets.ModelViewSet):
""" """
queryset = Assignment.objects.all() queryset = Assignment.objects.all()
serializer_class = AssignmentSerializer serializer_class = AssignmentSerializer
permission_classes = [permissions.IsAuthenticated, isTeacher, IsOwnerOrReadOnly] permission_Class = [permissions.IsAuthenticated, isTeacher, IsOwnerOrReadOnly]
def perform_create(self, serializer): def perform_create(self, serializer):
if(self.request.user.groups.filter(name__in=['teachers']).exists() or self.request.user.is_superuser): if(self.request.user.groups.filter(name__in=['teachers']).exists() or self.request.user.is_superuser):
@ -76,4 +76,4 @@ class AssignmentViewSet(viewsets.ModelViewSet):
# """ # """
# queryset = DefFiles.objects.all() # queryset = DefFiles.objects.all()
# serializer_class = DefFilesSerializer # serializer_class = DefFilesSerializer
# permissions_classes = [permissions.IsAuthenticatedOrReadOnly] # permissions_Class = [permissions.IsAuthenticatedOrReadOnly]

View File

@ -9,7 +9,7 @@ router = routers.DefaultRouter()
router.register(r'students', api_views.StudentViewSet) router.register(r'students', api_views.StudentViewSet)
router.register(r'teachers', api_views.TeacherViewSet) router.register(r'teachers', api_views.TeacherViewSet)
router.register(r'assignments', api_views.AssignmentViewSet) router.register(r'assignments', api_views.AssignmentViewSet)
router.register(r'classes', api_views.ClassesViewSet) router.register(r'classes', api_views.ClassViewSet)
# router.register(r'files', api_views.DefFilesViewSet) # router.register(r'files', api_views.DefFilesViewSet)
router.register(r'users', api_views.UserViewSet) router.register(r'users', api_views.UserViewSet)

View File

@ -13,22 +13,20 @@ body {
color: #333333; color: #333333;
margin-top: 5rem; margin-top: 5rem;
font-family: 'Segoe UI'; font-family: 'Segoe UI';
margin-left: 2.5rem;
margin-right: 2.5rem;
} }
h1, h2, h3, h4, h5, h6 { h1, h2, h3, h4, h5, h6 {
color: #444444; color: #444444;
} }
ul {
margin: 0;
}
.bg-steel { .bg-steel {
background: #3cba54; background: #3cba54;
} }
.site-header .navbar-nav .nav-link { .site-header .navbar-nav .nav-link {
color: #cbd5db; color: #e1e1e1;
} }
.site-header .navbar-nav .nav-link:hover { .site-header .navbar-nav .nav-link:hover {
@ -38,63 +36,3 @@ ul {
.site-header .navbar-nav .nav-link.active { .site-header .navbar-nav .nav-link.active {
font-weight: 500; font-weight: 500;
} }
.content-section {
background: #ffffff;
padding: 10px 20px;
border: 1px solid #dddddd;
border-radius: 3px;
margin-bottom: 20px;
}
.article-title {
color: #444444;
}
a.article-title:hover {
color: #428bca;
text-decoration: none;
}
.article-content {
white-space: pre-line;
}
.article-img {
height: 65px;
width: 65px;
margin-right: 16px;
}
.article-metadata {
padding-bottom: 1px;
margin-bottom: 4px;
border-bottom: 1px solid #e3e3e3
}
.article-metadata a:hover {
color: #333;
text-decoration: none;
}
.article-svg {
width: 25px;
height: 25px;
vertical-align: middle;
}
.account-img {
height: 125px;
width: 125px;
margin-right: 20px;
margin-bottom: 16px;
}
.account-heading {
font-size: 2.5rem;
}
.nounderline {
text-decoration: none !important;
color: black !important;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

@ -21,8 +21,8 @@
<nav class="navbar navbar-expand-md navbar-dark bg-steel fixed-top"> <nav class="navbar navbar-expand-md navbar-dark bg-steel fixed-top">
<div class="container"> <div class="container">
<a class="navbar-brand" href="#"> <a class="navbar-brand" href="#">
<img src="/docs/4.3/assets/brand/bootstrap-solid.svg" width="30" height="30" class="d-inline-block align-top" alt=""> <img src="{% static 'skoolos/tj_trans.png' %}" width="30" height="30" class="d-inline-block align-top" alt="">
Bootstrap SkoolOS
</a> </a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarToggle" aria-controls="navbarToggle" aria-expanded="false" aria-label="Toggle navigation"> <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarToggle" aria-controls="navbarToggle" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span> <span class="navbar-toggler-icon"></span>

View File

@ -1,3 +1,15 @@
{% extends "skoolos/base.html" %} {% extends "skoolos/base.html" %}
{% block content %} {% block content %}
<div class="content-section">
{% for class in classes %}
<div class="card-columns">
<a class="card" href="#" style="text-decoration: none;">
<div class="card-body">
<h5 class="card-title">{{ class.name }}</h5>
<p class="card-text">{{ class.description }}</p>
</div>
</a>
</div>
{% endfor %}
</div>
{% endblock content %} {% endblock content %}

View File

@ -1,10 +1,24 @@
from django.shortcuts import render from django.shortcuts import render
from django.contrib.auth.decorators import login_required from django.contrib.auth.decorators import login_required
from api.models import Student, Teacher
# Create your views here. # Create your views here.
@login_required() @login_required()
def home (request): def home (request):
try:
student = Student.objects.get(user=request.user)
return render(request, "skoolos/home.html", {'classes': student.confirmed.all()})
except Student.DoesNotExist:
pass
try:
teacher = Teacher.objects.get(user=request.user)
return render(request, "skoolos/home.html", {'classes': teacher.classes})
except Teacher.DoesNotExist:
pass
return render(request, "skoolos/home.html") return render(request, "skoolos/home.html")
@login_required() @login_required()

View File

@ -144,4 +144,4 @@ def create_account (request):
def logout(request): def logout(request):
auth_logout(request) auth_logout(request)
messages.success(request, "You've been logged out!") messages.success(request, "You've been logged out!")
return redirect(request, "/login") return redirect("/login")