from django.conf import settings
from django.urls import reverse
from django.db import models
import misaka
from django.contrib.auth import get_user_model
User = get_user_model()
class Teacher(models.Model):
teacher_name = models.CharField(blank=False, max_length=100, unique=True, null=False)
def __str__(self):
return self.teacher_name
class Subject(models.Model):
subject_name = models.CharField(blank=False, max_length=100, unique=True, null=False)
def __str__(self):
return self.subject_name
class Post(models.Model):
user = models.ForeignKey(User, related_name="posts", on_delete=models.CASCADE)
teacher = models.ForeignKey(Teacher, related_name="posts", on_delete=models.CASCADE, null = False, blank = False)
subject = models.ForeignKey(Subject, related_name="posts", on_delete=models.CASCADE, null = False, blank = False)
created_at = models.DateTimeField(auto_now=True)
param1 = models.PositiveIntegerField(blank=False, null=False, verbose_name = "The objectives of this course were made clear to me by this teacher.")
param2 = models.PositiveIntegerField(blank=False, null=False, verbose_name = "The teacher speaks, articulates and explains concepts clearly.")
param3 = models.PositiveIntegerField(blank=False, null=False, verbose_name = "The teacher adheres to the timings schedule and enforces discipline in the class.")
param4 = models.PositiveIntegerField(blank=False, null=False, verbose_name = "Interest generated by the teacher.")
param5 = models.PositiveIntegerField(blank=False, null=False, verbose_name = "The lectures were well structured and focused on the topics.")
param6 = models.PositiveIntegerField(blank=False, null=False, verbose_name = "Accessibility of the teacher in and out of the class.")
param7 = models.PositiveIntegerField(blank=False, null=False, verbose_name = "The teacher has fair knowledge on the subject matter.")
param8 = models.PositiveIntegerField(blank=False, null=False, verbose_name = "Effective use of teaching aids.")
param9 = models.PositiveIntegerField(blank=False, null=False, verbose_name = "Time spend on lecturing by teacher for course coverage was sufficient and lesson plan was followed.")
param10 = models.PositiveIntegerField(blank=False, null=False, verbose_name = "The teacher encourage students to raise pertinent questions and answer them.")
average = models.FloatField()
message = models.CharField(blank=False, max_length=100, null=True, verbose_name = "Anything else you want to say.")
def __str__(self):
return self.teacher.teacher_name
def get_absolute_url(self):
return reverse(
"posts:single",
kwargs={
"username": self.user.username,
}
)
def save(self, *args, **kwargs):
self.average = (self.param1 + self.param2 + self.param3 + self.param4 + self.param5 + self.param6 + self.param7 +self. param8 + self.param9 + self.param10)/10
super().save(*args, **kwargs)
class Meta:
ordering = ["-created_at"]
unique_together = ["user", "teacher", "subject"]
from django import forms
from posts import models
class PostForm(forms.ModelForm):
class Meta:
model = models.Post
fields = ("teacher","subject","param1","param2","param3","param4",
"param5","param6","param7","param8","param9","param10","message")
choices = (
(1,'Unsatisfactory'),
(2,'Satisfactory'),
(3,'Good'),
(4,'Very Good'),
(5,'Outstanding')
)
widgets = {
'param1':forms.TypedChoiceField(choices=choices, widget=forms.RadioSelect, coerce=int),
'message': forms.Textarea(attrs={'cols': 80, 'rows': 20}),
}