from django import forms from django.db import transaction from django.conf import settings from django.contrib.auth.models import User from accounts.models import User from .models import Program, Course, CourseAllocation, Upload, UploadVideo # User = settings.AUTH_USER_MODEL class ProgramForm(forms.ModelForm): class Meta: model = Program fields = "__all__" def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.fields["title"].widget.attrs.update({"class": "form-control"}) self.fields["summary"].widget.attrs.update({"class": "form-control"}) class CourseAddForm(forms.ModelForm): class Meta: model = Course fields = "__all__" def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.fields["title"].widget.attrs.update({"class": "form-control"}) self.fields["code"].widget.attrs.update({"class": "form-control"}) # self.fields['courseUnit'].widget.attrs.update({'class': 'form-control'}) self.fields["credit"].widget.attrs.update({"class": "form-control"}) self.fields["summary"].widget.attrs.update({"class": "form-control"}) self.fields["program"].widget.attrs.update({"class": "form-control"}) self.fields["level"].widget.attrs.update({"class": "form-control"}) self.fields["year"].widget.attrs.update({"class": "form-control"}) self.fields["semester"].widget.attrs.update({"class": "form-control"}) class CourseAllocationForm(forms.ModelForm): courses = forms.ModelMultipleChoiceField( queryset=Course.objects.all().order_by("level"), widget=forms.CheckboxSelectMultiple( attrs={"class": "browser-default checkbox"} ), required=True, ) lecturer = forms.ModelChoiceField( queryset=User.objects.filter(is_lecturer=True), widget=forms.Select(attrs={"class": "browser-default custom-select"}), label="lecturer", ) class Meta: model = CourseAllocation fields = ["lecturer", "courses"] def __init__(self, *args, **kwargs): user = kwargs.pop("user") super(CourseAllocationForm, self).__init__(*args, **kwargs) self.fields["lecturer"].queryset = User.objects.filter(is_lecturer=True) class EditCourseAllocationForm(forms.ModelForm): courses = forms.ModelMultipleChoiceField( queryset=Course.objects.all().order_by("level"), widget=forms.CheckboxSelectMultiple, required=True, ) lecturer = forms.ModelChoiceField( queryset=User.objects.filter(is_lecturer=True), widget=forms.Select(attrs={"class": "browser-default custom-select"}), label="lecturer", ) class Meta: model = CourseAllocation fields = ["lecturer", "courses"] def __init__(self, *args, **kwargs): # user = kwargs.pop('user') super(EditCourseAllocationForm, self).__init__(*args, **kwargs) self.fields["lecturer"].queryset = User.objects.filter(is_lecturer=True) # Upload files to specific course class UploadFormFile(forms.ModelForm): class Meta: model = Upload fields = ( "title", "file", "course", ) def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.fields["title"].widget.attrs.update({"class": "form-control"}) self.fields["file"].widget.attrs.update({"class": "form-control"}) # Upload video to specific course class UploadFormVideo(forms.ModelForm): class Meta: model = UploadVideo fields = ( "title", "video", "course", ) def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.fields["title"].widget.attrs.update({"class": "form-control"}) self.fields["video"].widget.attrs.update({"class": "form-control"})