diff --git a/FusionIIIT/applications/programme_curriculum/admin.py b/FusionIIIT/applications/programme_curriculum/admin.py index 0afbdaf09..26be61196 100644 --- a/FusionIIIT/applications/programme_curriculum/admin.py +++ b/FusionIIIT/applications/programme_curriculum/admin.py @@ -1,6 +1,6 @@ from django.contrib import admin from django.contrib.admin.options import ModelAdmin -from .models import Programme, Discipline, Curriculum, Semester, Course, Batch, CourseSlot,CourseInstructor, CourseProposal,UpdateCourseProposal +from .models import Programme, Discipline, Curriculum, Semester, Course, Batch, CourseSlot,CourseInstructor, NewProposalFile,Proposal_Tracking class ProgrammeAdmin(admin.ModelAdmin): @@ -29,10 +29,11 @@ class BatchAdmin(admin.ModelAdmin): class CourseSlotAdmin(admin.ModelAdmin): list_display = ('name', 'type', 'course_slot_info','semester') list_filter = ('type', 'courses',) -class CourseProposalAdmin(admin.ModelAdmin): - list_display = ('faculty_name','faculty_code', 'name', 'code',) -class UpdateCourseProposalAdmin(admin.ModelAdmin): - list_display = ('faculty_name','faculty_code', 'name', 'code',) +class NewProposalFileAdmin(admin.ModelAdmin): + list_display = ('uploader','designation', 'code', 'name',) + +class ProposalTrackingAdmin(admin.ModelAdmin): + list_display = ('current_id','current_design', 'receive_id', 'receive_design',) # Register your models here. admin.site.register(Discipline, DisciplineAdmin) @@ -43,5 +44,5 @@ class UpdateCourseProposalAdmin(admin.ModelAdmin): admin.site.register(Batch, BatchAdmin) admin.site.register(CourseSlot, CourseSlotAdmin) admin.site.register(CourseInstructor) -admin.site.register(CourseProposal,CourseProposalAdmin) -admin.site.register(UpdateCourseProposal,UpdateCourseProposalAdmin) \ No newline at end of file +admin.site.register(NewProposalFile,NewProposalFileAdmin) +admin.site.register(Proposal_Tracking,ProposalTrackingAdmin) \ No newline at end of file diff --git a/FusionIIIT/applications/programme_curriculum/forms.py b/FusionIIIT/applications/programme_curriculum/forms.py index 210789e29..8100e4f60 100644 --- a/FusionIIIT/applications/programme_curriculum/forms.py +++ b/FusionIIIT/applications/programme_curriculum/forms.py @@ -3,7 +3,7 @@ from django.forms import ModelForm, widgets from django.forms import Form, ValidationError from django.forms.models import ModelChoiceField -from .models import Programme, Discipline, Curriculum, Semester, Course, Batch, CourseSlot, PROGRAMME_CATEGORY_CHOICES,CourseProposal,UpdateCourseProposal +from .models import Programme, Discipline, Curriculum, Semester, Course, Batch, CourseSlot, PROGRAMME_CATEGORY_CHOICES,NewProposalFile,Proposal_Tracking from django.utils.translation import gettext_lazy as _ class ProgrammeForm(ModelForm): @@ -113,7 +113,9 @@ def clean(self): + cleaned_data.get("percent_lab_evaluation") + cleaned_data.get("percent_course_attendance") ) - + + # credits = cleaned_data.get("credit") + if percentages_sum != 100: msg = 'Percentages must add up to 100%, they currently add up to ' + str(percentages_sum) + '%' self.add_error('percent_quiz_1', msg) @@ -124,10 +126,9 @@ def clean(self): self.add_error('percent_lab_evaluation', msg) self.add_error('percent_course_attendance', msg) - # version = cleaned_data.get('version') - # previous_version = self.instance.version if self.instance else None - # if version < previous_version: - # self.add_error('version', 'The version should be greater than the previous version.') + # if credits==0: + # msg2="Credits can't be zero" + # self.add_error('credits', msg2) return cleaned_data class Meta: model = Course @@ -228,40 +229,12 @@ class Meta: #new - -class Course_Proposal(ModelForm): +class NewCourseProposalFile(ModelForm): - def clean(self): - cleaned_data = super().clean() - - percentages_sum = ( - cleaned_data.get("percent_quiz_1") - + cleaned_data.get("percent_midsem") - + cleaned_data.get("percent_quiz_2") - + cleaned_data.get("percent_endsem") - + cleaned_data.get("percent_project") - + cleaned_data.get("percent_lab_evaluation") - + cleaned_data.get("percent_course_attendance") - ) - - if percentages_sum != 100: - msg = 'Percentages must add up to 100%, they currently add up to ' + str(percentages_sum) + '%' - self.add_error('percent_quiz_1', msg) - self.add_error('percent_midsem', msg) - self.add_error('percent_quiz_2', msg) - self.add_error('percent_endsem', msg) - self.add_error('percent_project', msg) - self.add_error('percent_lab_evaluation', msg) - self.add_error('percent_course_attendance', msg) - - return cleaned_data - class Meta: - model = CourseProposal + model = NewProposalFile fields = '__all__' widgets = { - 'faculty_name' : forms.TextInput(attrs={'max_length': 100,'readonly':'readonly'}), - 'faculty_code' : forms.TextInput(attrs={'placeholder': 'Course Code','max_length': 10,'readonly':'readonly'}), 'code' : forms.TextInput(attrs={'placeholder': 'Course Code','max_length': 10,}), 'name' : forms.TextInput(attrs={'placeholder': 'Course/Project Name','max_length': 100,}), 'credit' : forms.NumberInput(attrs={'placeholder': 'Course Credits',}, ), @@ -270,7 +243,6 @@ class Meta: 'pratical_hours' : forms.NumberInput(attrs={'placeholder': 'Practical hours',}, ), 'discussion_hours' : forms.NumberInput(attrs={'placeholder': 'Group Discussion hours',}, ), 'project_hours' : forms.NumberInput(attrs={'placeholder': 'Project hours',}, ), - 'disciplines' : forms.SelectMultiple(attrs={'class':'ui fluid search selection dropdown',}), 'pre_requisits' : forms.Textarea(attrs={'placeholder': 'Text','class':'field'}), 'pre_requisit_courses' : forms.SelectMultiple(attrs={'class':'ui fluid search selection dropdown',}), 'syllabus' : forms.Textarea(attrs={'placeholder': 'Text','class':'field'}), @@ -282,98 +254,15 @@ class Meta: 'percent_project' : forms.NumberInput(attrs={'placeholder': '%'}, ), 'percent_lab_evaluation' : forms.NumberInput(attrs={'placeholder': '%'}, ), 'percent_course_attendance' : forms.NumberInput(attrs={'placeholder': '%'}, ), - 'status':forms.NumberInput(attrs={'readonly':'readonly'},), + 'uploader' : forms.TextInput(attrs={'readonly':'readonly'},), + 'designation' : forms.TextInput(attrs={'readonly':'readonly'},), + 'subject' : forms.Textarea(attrs={'placeholder': 'Subject','class':'field',}), + 'description' : forms.Textarea(attrs={'placeholder': 'Description','class':'field',}), + 'upload_date' : forms.TextInput(), - } - labels = { - 'faculty_name':'Faculty name', - 'faculty_code':'Faculty Code', - 'code' : 'Course Code', - 'name' : 'Course Name', - 'credit' : 'Credits', - 'lecture_hours' : 'Academic Loads', - 'tutorial_hours' : '', - 'pratical_hours' : '', - 'discussion_hours' : '', - 'project_hours' : '', - 'pre_requisits' : 'Pre-requisits', - 'pre_requisit_courses' : 'Pre-requisit Courses', - 'syllabus' : 'Syllabus', - 'ref_books' : 'References & Books', - 'percent_quiz_1' : 'percent_quiz_1', - 'percent_midsem' : 'percent_midsem', - 'percent_quiz_2' : 'percent_quiz_2', - 'percent_endsem' : 'percent_endsem', - 'percent_project' : 'percent_project', - 'percent_lab_evaluation' : 'percent_lab_evaluation', - 'percent_course_attendance' : 'percent_course_attendance', - 'disciplines' : 'disciplines', - 'status':'status' - } - - - - -class Update_Course_Proposal(ModelForm): - - def clean(self): - cleaned_data = super().clean() - - percentages_sum = ( - cleaned_data.get("percent_quiz_1") - + cleaned_data.get("percent_midsem") - + cleaned_data.get("percent_quiz_2") - + cleaned_data.get("percent_endsem") - + cleaned_data.get("percent_project") - + cleaned_data.get("percent_lab_evaluation") - + cleaned_data.get("percent_course_attendance") - ) - - if percentages_sum != 100: - msg = 'Percentages must add up to 100%, they currently add up to ' + str(percentages_sum) + '%' - self.add_error('percent_quiz_1', msg) - self.add_error('percent_midsem', msg) - self.add_error('percent_quiz_2', msg) - self.add_error('percent_endsem', msg) - self.add_error('percent_project', msg) - self.add_error('percent_lab_evaluation', msg) - self.add_error('percent_course_attendance', msg) - - return cleaned_data - - class Meta: - model = UpdateCourseProposal - fields = '__all__' - widgets = { - 'faculty_name' : forms.TextInput(attrs={'max_length': 100,'readonly':'readonly'}), - 'faculty_code' : forms.TextInput(attrs={'placeholder': 'Course Code','max_length': 10,'readonly':'readonly'}), - 'code' : forms.TextInput(attrs={'placeholder': 'Course Code','max_length': 10,'readonly':'readonly'}), - 'name' : forms.TextInput(attrs={'placeholder': 'Course/Project Name','max_length': 100,}), - 'credit' : forms.NumberInput(attrs={'placeholder': 'Course Credits',}, ), - 'lecture_hours' : forms.NumberInput(attrs={'placeholder': 'Lecture hours',}, ), - 'tutorial_hours' : forms.NumberInput(attrs={'placeholder': 'Tutorial hours',}, ), - 'pratical_hours' : forms.NumberInput(attrs={'placeholder': 'Practical hours',}, ), - 'discussion_hours' : forms.NumberInput(attrs={'placeholder': 'Group Discussion hours',}, ), - 'project_hours' : forms.NumberInput(attrs={'placeholder': 'Project hours',}, ), - 'working_course' : forms.CheckboxInput(attrs={'class': 'ui checkbox'}), - 'disciplines' : forms.SelectMultiple(attrs={'class':'ui fluid search selection dropdown',}), - 'pre_requisits' : forms.Textarea(attrs={'placeholder': 'Text','class':'field'}), - 'pre_requisit_courses' : forms.SelectMultiple(attrs={'class':'ui fluid search selection dropdown',}), - 'syllabus' : forms.Textarea(attrs={'placeholder': 'Text','class':'field'}), - 'ref_books' : forms.Textarea(attrs={'placeholder': 'Text','class':'field'}), - 'percent_quiz_1' : forms.NumberInput(attrs={'placeholder': '%'}, ), - 'percent_midsem' : forms.NumberInput(attrs={'placeholder': '%'}, ), - 'percent_quiz_2' : forms.NumberInput(attrs={'placeholder': '%'}, ), - 'percent_endsem' : forms.NumberInput(attrs={'placeholder': '%'}, ), - 'percent_project' : forms.NumberInput(attrs={'placeholder': '%'}, ), - 'percent_lab_evaluation' : forms.NumberInput(attrs={'placeholder': '%'}, ), - 'percent_course_attendance' : forms.NumberInput(attrs={'placeholder': '%'}, ), - 'status':forms.NumberInput(attrs={'readonly':'readonly'},), } labels = { - 'faculty_name':'Faculty name', - 'faculty_code':'Faculty Code', 'code' : 'Course Code', 'name' : 'Course Name', 'credit' : 'Credits', @@ -393,87 +282,36 @@ class Meta: 'percent_project' : 'percent_project', 'percent_lab_evaluation' : 'percent_lab_evaluation', 'percent_course_attendance' : 'percent_course_attendance', - 'disciplines' : 'disciplines', - 'working_course' : 'working_course', - 'status':'status' + 'uploader' : 'Uploader name', + 'designation' : 'Uploader design', + 'subject' : 'title', + 'description' : 'Description', + 'upload_date' : '', + } -class CourseProposalForm(ModelForm): +class CourseProposalTrackingFile(ModelForm): - def clean(self): - cleaned_data = super().clean() - - percentages_sum = ( - cleaned_data.get("percent_quiz_1") - + cleaned_data.get("percent_midsem") - + cleaned_data.get("percent_quiz_2") - + cleaned_data.get("percent_endsem") - + cleaned_data.get("percent_project") - + cleaned_data.get("percent_lab_evaluation") - + cleaned_data.get("percent_course_attendance") - ) - - if percentages_sum != 100: - msg = 'Percentages must add up to 100%, they currently add up to ' + str(percentages_sum) + '%' - self.add_error('percent_quiz_1', msg) - self.add_error('percent_midsem', msg) - self.add_error('percent_quiz_2', msg) - self.add_error('percent_endsem', msg) - self.add_error('percent_project', msg) - self.add_error('percent_lab_evaluation', msg) - self.add_error('percent_course_attendance', msg) - - return cleaned_data - class Meta: - model = Course + model = Proposal_Tracking fields = '__all__' widgets = { - 'code' : forms.TextInput(attrs={'placeholder': 'Course Code','max_length': 10,'readonly':'readonly'}), - 'name' : forms.TextInput(attrs={'placeholder': 'Course/Project Name','max_length': 100,'readonly':'readonly'}), - 'version' : forms.NumberInput(attrs={'placeholder': 'version_no',}, ), - 'credit' : forms.NumberInput(attrs={'placeholder': 'Course Credits','readonly':'readonly'}, ), - 'lecture_hours' : forms.NumberInput(attrs={'placeholder': 'Lecture hours','readonly':'readonly'}, ), - 'tutorial_hours' : forms.NumberInput(attrs={'placeholder': 'Tutorial hours','readonly':'readonly'}, ), - 'pratical_hours' : forms.NumberInput(attrs={'placeholder': 'Practical hours','readonly':'readonly'}, ), - 'discussion_hours' : forms.NumberInput(attrs={'placeholder': 'Group Discussion hours','readonly':'readonly'}, ), - 'project_hours' : forms.NumberInput(attrs={'placeholder': 'Project hours','readonly':'readonly'}, ), - 'working_course' : forms.CheckboxInput(attrs={'class': 'ui checkbox','disabled': 'disabled'}), - 'disciplines' : forms.SelectMultiple(attrs={'class':'ui fluid search selection dropdown','disabled': 'disabled'}), - 'pre_requisits' : forms.Textarea(attrs={'placeholder': 'Text','class':'field','readonly':'readonly'}), - 'pre_requisit_courses' : forms.SelectMultiple(attrs={'class':'ui fluid search selection dropdown','disabled': 'disabled'}), - 'syllabus' : forms.Textarea(attrs={'placeholder': 'Text','class':'field','readonly':'readonly'}), - 'ref_books' : forms.Textarea(attrs={'placeholder': 'Text','class':'field','readonly':'readonly'}), - 'percent_quiz_1' : forms.NumberInput(attrs={'placeholder': '%','readonly':'readonly'}, ), - 'percent_midsem' : forms.NumberInput(attrs={'placeholder': '%','readonly':'readonly'}, ), - 'percent_quiz_2' : forms.NumberInput(attrs={'placeholder': '%','readonly':'readonly'}, ), - 'percent_endsem' : forms.NumberInput(attrs={'placeholder': '%','readonly':'readonly'}, ), - 'percent_project' : forms.NumberInput(attrs={'placeholder': '%','readonly':'readonly'}, ), - 'percent_lab_evaluation' : forms.NumberInput(attrs={'placeholder': '%','readonly':'readonly'}, ), - 'percent_course_attendance' : forms.NumberInput(attrs={'placeholder': '%','readonly':'readonly'}, ), + 'file_id' :forms.NumberInput(attrs={'placeholder': 'Course Proposal id','readonly':'readonly'}, ), + 'current_id' : forms.TextInput(attrs={'placeholder': 'Enter Uploader','class':'ui fluid search selection dropdown','readonly':'readonly'},), + 'current_design' : forms.TextInput(attrs={'class':'ui fluid search selection dropdown','readonly':'readonly'},), + 'receive_id' : forms.Select(attrs={'class':'ui fluid search selection dropdown',}), + 'receive_design' : forms.Select(attrs={'class':'ui fluid search selection dropdown',}), + 'disciplines' : forms.Select(attrs={'class':'ui fluid search selection dropdown',}), + 'remarks' : forms.Textarea(attrs={'placeholder': 'Remarks','class':'field',}), } labels = { - 'code' : 'Course Code', - 'name' : 'Course Name', - 'credit' : 'Credits', - 'lecture_hours' : 'Academic Loads', - 'tutorial_hours' : '', - 'pratical_hours' : '', - 'discussion_hours' : '', - 'project_hours' : '', - 'pre_requisits' : 'Pre-requisits', - 'pre_requisit_courses' : 'Pre-requisit Courses', - 'syllabus' : 'Syllabus', - 'ref_books' : 'References & Books', - 'percent_quiz_1' : 'percent_quiz_1', - 'percent_midsem' : 'percent_midsem', - 'percent_quiz_2' : 'percent_quiz_2', - 'percent_endsem' : 'percent_endsem', - 'percent_project' : 'percent_project', - 'percent_lab_evaluation' : 'percent_lab_evaluation', - 'percent_course_attendance' : 'percent_course_attendance', - 'working_course' : 'working_course', - 'disciplines' : 'disciplines' + 'file_id' : 'file_id', + 'current_id' : 'Uploader name', + 'current_design' : 'Uploader design', + 'receive_id' : 'receiver name', + 'receive_design' : 'receiver design', + 'disciplines':'disciplines', + 'remarks' : 'remarks', + } - diff --git a/FusionIIIT/applications/programme_curriculum/models.py b/FusionIIIT/applications/programme_curriculum/models.py index c61cad716..01d235aa4 100644 --- a/FusionIIIT/applications/programme_curriculum/models.py +++ b/FusionIIIT/applications/programme_curriculum/models.py @@ -8,6 +8,10 @@ from django.core.exceptions import ValidationError from applications.globals.models import ExtraInfo from django.core.validators import MinValueValidator, MaxValueValidator, DecimalValidator +from applications.globals.models import (DepartmentInfo, Designation, + ExtraInfo, Faculty, HoldsDesignation) +from django.contrib.auth.models import User + # Create your models here. # Create your models here. @@ -128,13 +132,15 @@ class Curriculum(models.Model): # version = models.FloatField(default=1.0, null=False) # version = models.PositiveIntegerField(default=1, null=False) version = models.DecimalField( - max_digits=2, - decimal_places=1, - default=1.0, - validators=[MinValueValidator(1.0), DecimalValidator(max_digits=2, decimal_places=1)]) + max_digits=5, + decimal_places=1, + default=1.0, + validators=[MinValueValidator(1.0), DecimalValidator(max_digits=5, decimal_places=1)]) working_curriculum = models.BooleanField(default=True, null=False) no_of_semester = models.PositiveIntegerField(default=1, null=False) min_credit = models.PositiveIntegerField(default=0, null=False) + latest_version = models.BooleanField(default=True) + class Meta: unique_together = ('name', 'version',) @@ -350,46 +356,11 @@ class CourseInstructor(models.Model): class Meta: unique_together = ('course_id', 'instructor_id', 'batch_id') - def __self__(self): - return '{} - {}'.format(self.course_id, self.instructor_id) - - -class CourseProposal(models.Model): - ''' - Current Purpose : To store the details regarding a course - - - - - - ATTRIBUTES : - - code(char) - the course code (eg CS3005) - name(char) - the name of the course(eg Machine Learning) - credit(Integer) - the credits defined for the course - lecture_hours(integer) - lecture hours defined for the course - tutorial_hours(Integer) - tutorial hours defined for the course - practical_hours(Integer) - practical hours defined for the course - discussion_hours(Integer) - discussion hours - project_hours(Integer) - project hours - pre_requisits(Boolean) - denote whether this course has prerequisites(courses that one should take before opting this ) - pre_requisit_courses(programme_curriculum.Course) - link to set of prerequisite courses - syllabus(text) - syllabus described for the course - percent_quiz_1(+ve int) - defined weightage in marking - percent_midsem(+ve int) - defined weightage in marking - percent_quiz_2(+ve int) - defined weightage in marking - percent_endsem (+ve int) - defined weightage in marking - percent_project(+ve int) - defined weightage in marking - percent_lab_evaluation (+ve int) - defined weightage in marking - percent_course_attendance (+ve int) - defined weightage in marking - ref_books(text) - reference books suggested for the course - working_course(boolean) - to denote whether the course is currently in execution or not - disciplines(programme_curriculum.Discipline) - to store which discipline is offering the course - - - ''' - faculty_name = models.CharField(max_length=100, null=False, blank=False) - faculty_code = models.CharField(max_length=10, null=False, blank=False) +#new +class NewProposalFile(models.Model): + + uploader = models.CharField(max_length=100, null=False, blank=False) + designation = models.CharField(max_length=100, null=False, blank=False) code = models.CharField(max_length=10, null=False, blank=False) name = models.CharField(max_length=100, null=False, blank=False) credit = models.PositiveIntegerField(default=3, null=False, blank=False) @@ -416,87 +387,34 @@ class CourseProposal(models.Model): percent_course_attendance = models.PositiveIntegerField( default=5, null=False, blank=False) ref_books = models.TextField() - disciplines = models.ManyToManyField(Discipline, blank=True) - status = models.PositiveIntegerField(default=0, null=False, blank=False) - + subject = models.CharField(max_length=100, null=True, blank=False) + description = models.CharField(max_length=400, null=True, blank=False) + upload_date = models.DateTimeField(auto_now_add=True) + is_read = models.BooleanField(default = False) + is_update= models.BooleanField(default = False) class Meta: - unique_together = ('code', 'faculty_code',) - + unique_together = ('code', 'uploader','name') # if code and faculty code matches to another proposal name will take care of it + def __str__(self): - return str(self.faculty_name + " - " + self.faculty_code+" - "+self.code + " - "+self.name) - - # @property - # def courseslots(self): - # return CourseSlot.objects.filter(courses=self.id) - - -class UpdateCourseProposal(models.Model): - ''' - Current Purpose : To store the details regarding a update course proposal forms - ATTRIBUTES : - - code(char) - the course code (eg CS3005) - name(char) - the name of the course(eg Machine Learning) - credit(Integer) - the credits defined for the course - lecture_hours(integer) - lecture hours defined for the course - tutorial_hours(Integer) - tutorial hours defined for the course - practical_hours(Integer) - practical hours defined for the course - discussion_hours(Integer) - discussion hours - project_hours(Integer) - project hours - pre_requisits(Boolean) - denote whether this course has prerequisites(courses that one should take before opting this ) - pre_requisit_courses(programme_curriculum.Course) - link to set of prerequisite courses - syllabus(text) - syllabus described for the course - percent_quiz_1(+ve int) - defined weightage in marking - percent_midsem(+ve int) - defined weightage in marking - percent_quiz_2(+ve int) - defined weightage in marking - percent_endsem (+ve int) - defined weightage in marking - percent_project(+ve int) - defined weightage in marking - percent_lab_evaluation (+ve int) - defined weightage in marking - percent_course_attendance (+ve int) - defined weightage in marking - ref_books(text) - reference books suggested for the course - working_course(boolean) - to denote whether the course is currently in execution or not - disciplines(programme_curriculum.Discipline) - to store which discipline is offering the course - - - ''' - faculty_name = models.CharField(max_length=100, null=False, blank=False) - faculty_code = models.CharField(max_length=10, null=False, blank=False) - code = models.CharField(max_length=10, null=False, blank=False) - name = models.CharField(max_length=100, null=False, blank=False) - credit = models.PositiveIntegerField(default=0, null=False, blank=False) - lecture_hours = PositiveIntegerField(null=True, ) - tutorial_hours = PositiveIntegerField(null=True) - pratical_hours = PositiveIntegerField(null=True) - discussion_hours = PositiveIntegerField(null=True) - project_hours = PositiveIntegerField(null=True) - pre_requisits = models.TextField(null=True, blank=True) - pre_requisit_courses = models.ManyToManyField(Course, blank=True) - syllabus = models.TextField() - percent_quiz_1 = models.PositiveIntegerField( - default=10, null=False, blank=False) - percent_midsem = models.PositiveIntegerField( - default=20, null=False, blank=False) - percent_quiz_2 = models.PositiveIntegerField( - default=10, null=False, blank=False) - percent_endsem = models.PositiveIntegerField( - default=30, null=False, blank=False) - percent_project = models.PositiveIntegerField( - default=15, null=False, blank=False) - percent_lab_evaluation = models.PositiveIntegerField( - default=10, null=False, blank=False) - percent_course_attendance = models.PositiveIntegerField( - default=5, null=False, blank=False) - ref_books = models.TextField() - working_course = models.BooleanField(default=True) - disciplines = models.ManyToManyField(Discipline, blank=True) - status = models.PositiveIntegerField(default=0, null=False, blank=False) + return str(self.uploader + " - " +self.designation+" - "+self.code + " - "+self.name) + +class Proposal_Tracking(models.Model): + + file_id = models.CharField(max_length=100, null=False, blank=False) + current_id = models.CharField(max_length=100, null=False, blank=False) + current_design = models.CharField(max_length=100, null=False, blank=False) + receive_id = models.ForeignKey(User,blank=False,on_delete=models.CASCADE) + receive_design = models.ForeignKey(Designation, blank=False,on_delete=models.CASCADE) + disciplines = models.ForeignKey(Discipline, blank=False,on_delete=models.CASCADE) + receive_date = models.DateTimeField(auto_now_add=True) + forward_date = models.DateTimeField(auto_now_add=True) + remarks = models.CharField(max_length=250, null=True, blank=True) + is_added = models.BooleanField(default = False) + is_submitted = models.BooleanField(default = False) + is_rejected = models.BooleanField(default = False) class Meta: - unique_together = ('code', 'faculty_code',) - - def __str__(self): - return str(self.faculty_name + " - " + self.faculty_code+" - "+self.code + " - "+self.name) + # unique_together = ('file_id', 'current_id','receive_id','receive_design') + unique_together = ('file_id', 'current_id','current_design','disciplines') - # @property - # def courseslots(self): - # return CourseSlot.objects.filter(courses=self.id) + diff --git a/FusionIIIT/applications/programme_curriculum/urls.py b/FusionIIIT/applications/programme_curriculum/urls.py index 8dc18adc1..4d06893b1 100644 --- a/FusionIIIT/applications/programme_curriculum/urls.py +++ b/FusionIIIT/applications/programme_curriculum/urls.py @@ -52,19 +52,17 @@ #new - path('course_proposal_form/',views.course_proposal_form,name='course_proposal_form'), path('view_course_proposal_forms/',views.view_course_proposal_forms,name='view_course_proposal_forms'), - path('update_course_proposal_form//',views.update_course_proposal_form,name='update_course_proposal_form'), path('faculty_view_all_courses/', views.faculty_view_all_courses, name='faculty_view_all_courses'), path('faculty_view_a_course//',views.faculty_view_a_course,name="faculty_view_a_course"), - path('head_view_a_course_proposal//', views.head_view_a_course_proposal, name='head_view_a_course_proposal'), - path('head_view_a_update_course_proposal//', views.head_view_a_update_course_proposal, name='head_view_a_update_course_proposal'), + path('reject_form//', views.reject_form, name='reject_form'), + path('new_course_proposal_file/',views.new_course_proposal_file,name='new_course_proposal_file'), + path('update_course_proposal_file//',views.update_course_proposal_file,name='update_course_proposal_file'), - path('forward_form/', views.forward_form, name='forward_form'), - path('reject_form/', views.reject_form, name='reject_form'), - # path('approve_form/', views.approve_form, name='approve_form'), - - path('forward_update_form//', views.forward_update_form, name='forward_update_form'), - path('reject_update_form/', views.reject_update_form, name='reject_update_form'), - # path('approve_update_form/', views.approve_update_form, name='approve_update_form'), + path('view_a_course_proposal_form//',views.view_a_course_proposal_form,name='view_a_course_proposal_form'), + path('filetracking//',views.filetracking,name='filetracking'), + path('inward_files/',views.inward_files,name='inward_files'), + path('forward_course_forms//',views.forward_course_forms,name='forward_course_forms'), + path('view_inward_files//',views.view_inward_files,name='view_inward_files'), + path('outward_files/',views.outward_files,name='outward_files'), ] diff --git a/FusionIIIT/applications/programme_curriculum/views.py b/FusionIIIT/applications/programme_curriculum/views.py index 5efb2314c..f331737b9 100644 --- a/FusionIIIT/applications/programme_curriculum/views.py +++ b/FusionIIIT/applications/programme_curriculum/views.py @@ -1,20 +1,20 @@ from django.db.models.query_utils import Q from django.http import request -from django.shortcuts import get_object_or_404, render, HttpResponse +from django.shortcuts import get_object_or_404, render, HttpResponse,redirect from django.http import HttpResponse, HttpResponseRedirect -import itertools +# import itertools from django.contrib import messages from django.contrib.auth.decorators import login_required from django.contrib.auth.models import User -from .models import Programme, Discipline, Curriculum, Semester, Course, Batch, CourseSlot,CourseProposal,UpdateCourseProposal -from .forms import ProgrammeForm, DisciplineForm, CurriculumForm, SemesterForm, CourseForm, BatchForm, CourseSlotForm, ReplicateCurriculumForm,Course_Proposal,Update_Course_Proposal,CourseProposalForm +from .models import Programme, Discipline, Curriculum, Semester, Course, Batch, CourseSlot,NewProposalFile,Proposal_Tracking +from .forms import ProgrammeForm, DisciplineForm, CurriculumForm, SemesterForm, CourseForm, BatchForm, CourseSlotForm, ReplicateCurriculumForm,NewCourseProposalFile,CourseProposalTrackingFile from .filters import CourseFilter, BatchFilter, CurriculumFilter from django.db import IntegrityError +from django.utils import timezone +from notification.views import prog_and_curr_notif # from applications.academic_information.models import Student -from applications.globals.models import (DepartmentInfo, Designation, - ExtraInfo, Faculty, HoldsDesignation) - +from applications.globals.models import (DepartmentInfo, Designation,ExtraInfo, Faculty, HoldsDesignation) # ------------module-functions---------------# @login_required(login_url='/accounts/login') @@ -31,13 +31,13 @@ def programme_curriculum(request): """ user=request.user - # print(context) - print(user.extrainfo.user_type + "Programme and curriculum") user_details = ExtraInfo.objects.get(user = request.user) des = HoldsDesignation.objects.all().filter(user = request.user).first() - if request.session['currentDesignationSelected']== "student" or request.session['currentDesignationSelected']== "Associate Professor" or request.session['currentDesignationSelected']== "Professor" or request.session['currentDesignationSelected']== "Assistant Professor" or request.session['currentDesignationSelected']== "Dean Academic" or request.session['currentDesignationSelected']== "CSE HOD": + if request.session['currentDesignationSelected']== "student" or request.session['currentDesignationSelected']== "Associate Professor" or request.session['currentDesignationSelected']== "Professor" or request.session['currentDesignationSelected']== "Assistant Professor" or request.session['currentDesignationSelected']== "Dean Academic": return HttpResponseRedirect('/programme_curriculum/programmes/') - elif str(request.user) == "acadadmin" : + elif 'hod' in request.session['currentDesignationSelected'].lower() : + return HttpResponseRedirect('/programme_curriculum/programmes/') + elif request.session['currentDesignationSelected'] == "acadadmin" : return HttpResponseRedirect('/programme_curriculum/admin_programmes') return HttpResponseRedirect('/programme_curriculum/programmes/') @@ -62,7 +62,10 @@ def view_all_programmes(request): if request.session['currentDesignationSelected']== "acadadmin": return render(request, 'programme_curriculum/admin_programmes/') - elif request.session['currentDesignationSelected']== "Associate Professor" or request.session['currentDesignationSelected']== "Professor" or request.session['currentDesignationSelected']== "Assistant Professor" or request.session['currentDesignationSelected']== "Dean Academic" or request.session['currentDesignationSelected']== "CSE HOD": + elif request.session['currentDesignationSelected']== "Associate Professor" or request.session['currentDesignationSelected']== "Professor" or request.session['currentDesignationSelected']== "Assistant Professor" or request.session['currentDesignationSelected']== "Dean Academic" : + url+='faculty/' + + elif 'hod' in request.session['currentDesignationSelected'].lower(): url+='faculty/' ug = Programme.objects.filter(category='UG') @@ -92,7 +95,10 @@ def view_curriculums_of_a_programme(request, programme_id): if request.session['currentDesignationSelected']== "acadadmin": return render(request, 'programme_curriculum/admin_programmes/') - elif request.session['currentDesignationSelected']== "Associate Professor" or request.session['currentDesignationSelected']== "Professor" or request.session['currentDesignationSelected']== "Assistant Professor" or request.session['currentDesignationSelected']== "Dean Academic" or request.session['currentDesignationSelected']== "CSE HOD": + elif request.session['currentDesignationSelected']== "Associate Professor" or request.session['currentDesignationSelected']== "Professor" or request.session['currentDesignationSelected']== "Assistant Professor" or request.session['currentDesignationSelected']== "Dean Academic" : + url+='faculty/' + + elif 'hod' in request.session['currentDesignationSelected'].lower(): url+='faculty/' program = get_object_or_404(Programme, Q(id=programme_id)) @@ -117,9 +123,12 @@ def view_all_working_curriculums(request): if request.session['currentDesignationSelected']== "acadadmin": return render(request, 'programme_curriculum/admin_programmes/') - elif request.session['currentDesignationSelected']== "Associate Professor" or request.session['currentDesignationSelected']== "Professor" or request.session['currentDesignationSelected']== "Assistant Professor" or request.session['currentDesignationSelected']== "Dean Academic" or request.session['currentDesignationSelected']== "CSE HOD": + elif request.session['currentDesignationSelected']== "Associate Professor" or request.session['currentDesignationSelected']== "Professor" or request.session['currentDesignationSelected']== "Assistant Professor" or request.session['currentDesignationSelected']== "Dean Academic" : url+='faculty/' + + elif 'hod' in request.session['currentDesignationSelected'].lower(): + url+='faculty/' curriculums = Curriculum.objects.filter(working_curriculum=1) curriculumfilter = CurriculumFilter(request.GET, queryset=curriculums) @@ -147,7 +156,10 @@ def view_semesters_of_a_curriculum(request, curriculum_id): return render(request, 'programme_curriculum/admin_programmes/') - elif request.session['currentDesignationSelected']== "Associate Professor" or request.session['currentDesignationSelected']== "Professor" or request.session['currentDesignationSelected']== "Assistant Professor" or request.session['currentDesignationSelected']== "Dean Academic" or request.session['currentDesignationSelected']== "CSE HOD": + elif request.session['currentDesignationSelected']== "Associate Professor" or request.session['currentDesignationSelected']== "Professor" or request.session['currentDesignationSelected']== "Assistant Professor" or request.session['currentDesignationSelected']== "Dean Academic" : + url+='faculty/' + + elif 'hod' in request.session['currentDesignationSelected'].lower(): url+='faculty/' curriculum = get_object_or_404(Curriculum, Q(id=curriculum_id)) semesters = curriculum.semesters @@ -174,8 +186,6 @@ def view_semesters_of_a_curriculum(request, curriculum_id): max_credit = max(max_credit, course.credit) credits_sum = credits_sum + max_credit semester_credits.append(credits_sum) - - print (semester_credits) transpose_semester_slots = list(zip(*semester_slots)) @@ -190,9 +200,11 @@ def view_a_semester_of_a_curriculum(request, semester_id): if request.session['currentDesignationSelected']== "acadadmin": return render(request, 'programme_curriculum/admin_programmes/') - elif request.session['currentDesignationSelected']== "Associate Professor" or request.session['currentDesignationSelected']== "Professor" or request.session['currentDesignationSelected']== "Assistant Professor" or request.session['currentDesignationSelected']== "Dean Academic" or request.session['currentDesignationSelected']== "CSE HOD": + elif request.session['currentDesignationSelected']== "Associate Professor" or request.session['currentDesignationSelected']== "Professor" or request.session['currentDesignationSelected']== "Assistant Professor" or request.session['currentDesignationSelected']== "Dean Academic" : + url+='faculty/' + + elif 'hod' in request.session['currentDesignationSelected'].lower(): url+='faculty/' - semester = get_object_or_404(Semester, Q(id=semester_id)) course_slots = semester.courseslots @@ -206,7 +218,10 @@ def view_a_courseslot(request, courseslot_id): des = HoldsDesignation.objects.all().filter(user = request.user).first() if request.session['currentDesignationSelected']== "acadadmin": return render(request, 'programme_curriculum/admin_programmes/') - elif request.session['currentDesignationSelected']== "Associate Professor" or request.session['currentDesignationSelected']== "Professor" or request.session['currentDesignationSelected']== "Assistant Professor" or request.session['currentDesignationSelected']== "Dean Academic" or request.session['currentDesignationSelected']== "CSE HOD": + elif request.session['currentDesignationSelected']== "Associate Professor" or request.session['currentDesignationSelected']== "Professor" or request.session['currentDesignationSelected']== "Assistant Professor" or request.session['currentDesignationSelected']== "Dean Academic" : + url+='faculty/' + + elif 'hod' in request.session['currentDesignationSelected'].lower(): url+='faculty/' course_slot = get_object_or_404(CourseSlot, Q(id=courseslot_id)) return render(request, url+'view_a_courseslot.html', {'course_slot': course_slot}) @@ -219,9 +234,12 @@ def view_all_courses(request): des = HoldsDesignation.objects.all().filter(user = request.user).first() if request.session['currentDesignationSelected']== "acadadmin": return render(request, 'programme_curriculum/admin_programmes/') - elif request.session['currentDesignationSelected']== "Associate Professor" or request.session['currentDesignationSelected']== "Professor" or request.session['currentDesignationSelected']== "Assistant Professor" or request.session['currentDesignationSelected']== "Dean Academic" or request.session['currentDesignationSelected']== "CSE HOD": + elif request.session['currentDesignationSelected']== "Associate Professor" or request.session['currentDesignationSelected']== "Professor" or request.session['currentDesignationSelected']== "Assistant Professor" or request.session['currentDesignationSelected']== "Dean Academic" : url+='faculty/' + + elif 'hod' in request.session['currentDesignationSelected'].lower(): + url+='faculty/' courses = Course.objects.all() coursefilter = CourseFilter(request.GET, queryset=courses) @@ -237,8 +255,10 @@ def view_a_course(request, course_id): des = HoldsDesignation.objects.all().filter(user = request.user).first() if request.session['currentDesignationSelected']== "acadadmin": return render(request, 'programme_curriculum/admin_programmes/') - elif request.session['currentDesignationSelected']== "Associate Professor" or request.session['currentDesignationSelected']== "Professor" or request.session['currentDesignationSelected']== "Assistant Professor" or request.session['currentDesignationSelected']== "Dean Academic" or request.session['currentDesignationSelected']== "CSE HOD": + elif request.session['currentDesignationSelected']== "Associate Professor" or request.session['currentDesignationSelected']== "Professor" or request.session['currentDesignationSelected']== "Assistant Professor" or request.session['currentDesignationSelected']== "Dean Academic" : + url+='faculty/' + elif 'hod' in request.session['currentDesignationSelected'].lower(): url+='faculty/' course = get_object_or_404(Course, Q(id=course_id)) return render(request, url+'view_a_course.html', {'course': course}) @@ -251,7 +271,10 @@ def view_all_discplines(request): des = HoldsDesignation.objects.all().filter(user = request.user).first() if request.session['currentDesignationSelected']== "acadadmin": return render(request, 'programme_curriculum/admin_programmes/') - elif request.session['currentDesignationSelected']== "Associate Professor" or request.session['currentDesignationSelected']== "Professor" or request.session['currentDesignationSelected']== "Assistant Professor" or request.session['currentDesignationSelected']== "Dean Academic" or request.session['currentDesignationSelected']== "CSE HOD": + elif request.session['currentDesignationSelected']== "Associate Professor" or request.session['currentDesignationSelected']== "Professor" or request.session['currentDesignationSelected']== "Assistant Professor" or request.session['currentDesignationSelected']== "Dean Academic" : + url+='faculty/' + + elif 'hod' in request.session['currentDesignationSelected'].lower(): url+='faculty/' disciplines = Discipline.objects.all() @@ -265,9 +288,11 @@ def view_all_batches(request): des = HoldsDesignation.objects.all().filter(user = request.user).first() if request.session['currentDesignationSelected']== "acadadmin": return render(request, 'programme_curriculum/admin_programmes/') - elif request.session['currentDesignationSelected']== "Associate Professor" or request.session['currentDesignationSelected']== "Professor" or request.session['currentDesignationSelected']== "Assistant Professor" or request.session['currentDesignationSelected']== "Dean Academic" or request.session['currentDesignationSelected']== "CSE HOD": + elif request.session['currentDesignationSelected']== "Associate Professor" or request.session['currentDesignationSelected']== "Professor" or request.session['currentDesignationSelected']== "Assistant Professor" or request.session['currentDesignationSelected']== "Dean Academic" : url+='faculty/' + elif 'hod' in request.session['currentDesignationSelected'].lower(): + url+='faculty/' batches = Batch.objects.all().order_by('year') @@ -302,6 +327,8 @@ def admin_view_all_programmes(request): return HttpResponseRedirect('/programme_curriculum/programmes/') elif str(request.user) == "acadadmin" : pass + elif 'hod' in request.session['currentDesignationSelected'].lower(): + return HttpResponseRedirect('/programme_curriculum/programmes/') ug = Programme.objects.filter(category='UG') pg = Programme.objects.filter(category='PG') @@ -310,7 +337,6 @@ def admin_view_all_programmes(request): return render(request, 'programme_curriculum/acad_admin/admin_view_all_programmes.html', {'ug': ug, 'pg': pg, "phd": phd}) -@login_required(login_url='/accounts/login') def admin_view_curriculums_of_a_programme(request, programme_id): """ This function is used to Display Curriculum of a specific Programmes. @@ -330,6 +356,8 @@ def admin_view_curriculums_of_a_programme(request, programme_id): return HttpResponseRedirect('/programme_curriculum/programmes/') elif str(request.user) == "acadadmin" : pass + elif 'hod' in request.session['currentDesignationSelected'].lower(): + return HttpResponseRedirect('/programme_curriculum/programmes/') program = get_object_or_404(Programme, Q(id=programme_id)) curriculums = program.curriculums @@ -344,7 +372,6 @@ def admin_view_curriculums_of_a_programme(request, programme_id): return render(request,'programme_curriculum/acad_admin/admin_view_curriculums_of_a_programme.html', {'program': program, 'past_curriculums': past_curriculums, 'working_curriculums': working_curriculums, 'curriculumfilter': curriculumfilter}) -@login_required(login_url='/accounts/login') def admin_view_all_working_curriculums(request): """ views all the working curriculums offered by the institute """ @@ -354,6 +381,8 @@ def admin_view_all_working_curriculums(request): return HttpResponseRedirect('/programme_curriculum/programmes/') elif str(request.user) == "acadadmin" : pass + elif 'hod' in request.session['currentDesignationSelected'].lower(): + return HttpResponseRedirect('/programme_curriculum/programmes/') curriculums = Curriculum.objects.filter(working_curriculum=1) @@ -364,7 +393,6 @@ def admin_view_all_working_curriculums(request): return render(request,'programme_curriculum/acad_admin/admin_view_all_working_curriculums.html',{'curriculums':curriculums, 'curriculumfilter': curriculumfilter}) -@login_required(login_url='/accounts/login') def admin_view_semesters_of_a_curriculum(request, curriculum_id): """ gets all the semesters of a specfic curriculum """ @@ -374,6 +402,8 @@ def admin_view_semesters_of_a_curriculum(request, curriculum_id): return HttpResponseRedirect('/programme_curriculum/programmes/') elif str(request.user) == "acadadmin" : pass + elif 'hod' in request.session['currentDesignationSelected'].lower(): + return HttpResponseRedirect('/programme_curriculum/programmes/') curriculum = get_object_or_404(Curriculum, Q(id=curriculum_id)) semesters = curriculum.semesters @@ -400,8 +430,6 @@ def admin_view_semesters_of_a_curriculum(request, curriculum_id): max_credit = max(max_credit, course.credit) credits_sum = credits_sum + max_credit semester_credits.append(credits_sum) - - print (semester_credits) transpose_semester_slots = list(zip(*semester_slots)) @@ -410,7 +438,6 @@ def admin_view_semesters_of_a_curriculum(request, curriculum_id): return render(request, 'programme_curriculum/acad_admin/admin_view_semesters_of_a_curriculum.html', {'curriculum': curriculum, 'semesters': semesters, 'semester_slots': transpose_semester_slots, 'semester_credits': semester_credits, 'all_batches':all_batches}) -@login_required(login_url='/accounts/login') def admin_view_a_semester_of_a_curriculum(request, semester_id): """ This function is used to Display all Semester of a Curriculum. @@ -428,6 +455,8 @@ def admin_view_a_semester_of_a_curriculum(request, semester_id): return HttpResponseRedirect('/programme_curriculum/programmes/') elif str(request.user) == "acadadmin" : pass + elif 'hod' in request.session['currentDesignationSelected'].lower(): + return HttpResponseRedirect('/programme_curriculum/programmes/') semester = get_object_or_404(Semester, Q(id=semester_id)) course_slots = semester.courseslots @@ -435,8 +464,6 @@ def admin_view_a_semester_of_a_curriculum(request, semester_id): return render(request, 'programme_curriculum/acad_admin/admin_view_a_semester_of_a_curriculum.html', {'semester': semester, 'course_slots': course_slots}) - -@login_required(login_url='/accounts/login') def admin_view_a_courseslot(request, courseslot_id): """ view a course slot """ @@ -446,6 +473,8 @@ def admin_view_a_courseslot(request, courseslot_id): return HttpResponseRedirect('/programme_curriculum/programmes/') elif str(request.user) == "acadadmin" : pass + elif 'hod' in request.session['currentDesignationSelected'].lower(): + return HttpResponseRedirect('/programme_curriculum/programmes/') edit = request.POST.get('edit', -1) course_slot = get_object_or_404(CourseSlot, Q(id=courseslot_id)) @@ -455,7 +484,6 @@ def admin_view_a_courseslot(request, courseslot_id): return render(request, 'programme_curriculum/acad_admin/admin_view_a_courseslot.html', {'course_slot': course_slot}) -@login_required(login_url='/accounts/login') def admin_view_all_courses(request): """ views all the course slots of a specfic semester """ @@ -465,6 +493,8 @@ def admin_view_all_courses(request): return HttpResponseRedirect('/programme_curriculum/programmes/') elif str(request.user) == "acadadmin" : pass + elif 'hod' in request.session['currentDesignationSelected'].lower(): + return HttpResponseRedirect('/programme_curriculum/programmes/') courses = Course.objects.all() @@ -476,7 +506,6 @@ def admin_view_all_courses(request): return render(request, 'programme_curriculum/acad_admin/admin_view_all_courses.html', {'courses': courses, 'coursefilter': coursefilter}) -@login_required(login_url='/accounts/login') def admin_view_a_course(request, course_id): """ views the details of a Course """ @@ -486,12 +515,13 @@ def admin_view_a_course(request, course_id): return HttpResponseRedirect('/programme_curriculum/programmes/') elif str(request.user) == "acadadmin" : pass + elif 'hod' in request.session['currentDesignationSelected'].lower(): + return HttpResponseRedirect('/programme_curriculum/programmes/') course = get_object_or_404(Course, Q(id=course_id)) return render(request, 'programme_curriculum/acad_admin/admin_view_a_course.html', {'course': course}) -@login_required(login_url='/accounts/login') def admin_view_all_discplines(request): """ views the details of a Course """ @@ -501,12 +531,13 @@ def admin_view_all_discplines(request): return HttpResponseRedirect('/programme_curriculum/programmes/') elif str(request.user) == "acadadmin" : pass + elif 'hod' in request.session['currentDesignationSelected'].lower(): + return HttpResponseRedirect('/programme_curriculum/programmes/') disciplines = Discipline.objects.all() return render(request, 'programme_curriculum/acad_admin/admin_view_all_disciplines.html', {'disciplines': disciplines}) -@login_required(login_url='/accounts/login') def admin_view_all_batches(request): """ views the details of a Course """ @@ -516,6 +547,8 @@ def admin_view_all_batches(request): return HttpResponseRedirect('/programme_curriculum/programmes/') elif str(request.user) == "acadadmin" : pass + elif 'hod' in request.session['currentDesignationSelected'].lower(): + return HttpResponseRedirect('/programme_curriculum/programmes/') batches = Batch.objects.all().order_by('year') @@ -531,7 +564,7 @@ def admin_view_all_batches(request): return render(request, 'programme_curriculum/acad_admin/admin_view_all_batches.html', {'batches': batches, 'finished_batches': finished_batches, 'batchfilter': batchfilter}) -@login_required(login_url='/accounts/login') + def add_discipline_form(request): user_details = ExtraInfo.objects.get(user = request.user) @@ -540,6 +573,8 @@ def add_discipline_form(request): return HttpResponseRedirect('/programme_curriculum/programmes/') elif str(request.user) == "acadadmin" : pass + elif 'hod' in request.session['currentDesignationSelected'].lower(): + return HttpResponseRedirect('/programme_curriculum/programmes/') form = DisciplineForm() submitbutton= request.POST.get('Submit') @@ -553,7 +588,6 @@ def add_discipline_form(request): return render(request, 'programme_curriculum/acad_admin/add_discipline_form.html',{'form':form}) -@login_required(login_url='/accounts/login') def edit_discipline_form(request, discipline_id): user_details = ExtraInfo.objects.get(user = request.user) @@ -562,6 +596,8 @@ def edit_discipline_form(request, discipline_id): return HttpResponseRedirect('/programme_curriculum/programmes/') elif str(request.user) == "acadadmin" : pass + elif 'hod' in request.session['currentDesignationSelected'].lower(): + return HttpResponseRedirect('/programme_curriculum/programmes/') discipline = get_object_or_404(Discipline, Q(id=discipline_id)) form = DisciplineForm(instance=discipline) @@ -576,7 +612,7 @@ def edit_discipline_form(request, discipline_id): return render(request, 'programme_curriculum/acad_admin/add_discipline_form.html',{'form':form}) -@login_required(login_url='/accounts/login') + def add_programme_form(request): user_details = ExtraInfo.objects.get(user = request.user) @@ -585,6 +621,8 @@ def add_programme_form(request): return HttpResponseRedirect('/programme_curriculum/programmes/') elif str(request.user) == "acadadmin" : pass + elif 'hod' in request.session['currentDesignationSelected'].lower(): + return HttpResponseRedirect('/programme_curriculum/programmes/') form = ProgrammeForm() submitbutton= request.POST.get('Submit') @@ -600,7 +638,7 @@ def add_programme_form(request): return render(request,'programme_curriculum/acad_admin/add_programme_form.html',{'form':form, 'submitbutton': submitbutton}) -@login_required(login_url='/accounts/login') + def edit_programme_form(request, programme_id): user_details = ExtraInfo.objects.get(user = request.user) @@ -609,6 +647,8 @@ def edit_programme_form(request, programme_id): return HttpResponseRedirect('/programme_curriculum/programmes/') elif str(request.user) == "acadadmin" : pass + elif 'hod' in request.session['currentDesignationSelected'].lower(): + return HttpResponseRedirect('/programme_curriculum/programmes/') programme = get_object_or_404(Programme, Q(id=programme_id)) form = ProgrammeForm(instance=programme) @@ -623,7 +663,6 @@ def edit_programme_form(request, programme_id): return render(request, 'programme_curriculum/acad_admin/add_programme_form.html',{'form':form, 'submitbutton': submitbutton}) -@login_required(login_url='/accounts/login') def add_curriculum_form(request): """ This function is used to add Curriculum and Semester into Curriculum and Semester table. @@ -638,6 +677,8 @@ def add_curriculum_form(request): return HttpResponseRedirect('/programme_curriculum/programmes/') elif str(request.user) == "acadadmin" : pass + elif 'hod' in request.session['currentDesignationSelected'].lower(): + return HttpResponseRedirect('/programme_curriculum/programmes/') programme_id = request.GET.get('programme_id', -1) @@ -679,6 +720,8 @@ def edit_curriculum_form(request, curriculum_id): return HttpResponseRedirect('/programme_curriculum/programmes/') elif str(request.user) == "acadadmin" : pass + elif 'hod' in request.session['currentDesignationSelected'].lower(): + return HttpResponseRedirect('/programme_curriculum/programmes/') curriculum = get_object_or_404(Curriculum, Q(id=curriculum_id)) @@ -716,7 +759,6 @@ def edit_curriculum_form(request, curriculum_id): return render(request, 'programme_curriculum/acad_admin/add_curriculum_form.html',{'form':form, 'submitbutton': submitbutton}) -@login_required(login_url='/accounts/login') def add_course_form(request): user_details = ExtraInfo.objects.get(user = request.user) @@ -725,6 +767,8 @@ def add_course_form(request): return HttpResponseRedirect('/programme_curriculum/programmes/') elif str(request.user) == "acadadmin" : pass + elif 'hod' in request.session['currentDesignationSelected'].lower(): + return HttpResponseRedirect('/programme_curriculum/programmes/') form = CourseForm() submitbutton= request.POST.get('Submit') @@ -732,23 +776,25 @@ def add_course_form(request): if request.method == 'POST': form = CourseForm(request.POST) if form.is_valid(): - form.save() + new_course = form.save(commit=False) + new_course.version=1.0 + new_course.save() course = Course.objects.last() messages.success(request, "Added successful") return HttpResponseRedirect("/programme_curriculum/admin_course/" + str(course.id) + "/") - return render(request,'programme_curriculum/acad_admin/add_course_form.html',{'form':form}) + return render(request,'programme_curriculum/acad_admin/course_form.html',{'form':form,'submitbutton': submitbutton}) -@login_required(login_url='/accounts/login') def update_course_form(request, course_id): - #user_details = ExtraInfo.objects.get(user = request.user) des = HoldsDesignation.objects.all().filter(user = request.user).first() if request.session['currentDesignationSelected']== "student": # or request.session['currentDesignationSelected']== "Associate Professor" or request.session['currentDesignationSelected']== "Professor" or request.session['currentDesignationSelected']== "Assistant Professor" return HttpResponseRedirect('/programme_curriculum/programmes/') elif str(request.user) == "acadadmin" : pass + elif 'hod' in request.session['currentDesignationSelected'].lower(): + return HttpResponseRedirect('/programme_curriculum/programmes/') course = get_object_or_404(Course, Q(id=course_id)) previous = Course.objects.all().filter(code=course.code).order_by('version').last() @@ -772,10 +818,9 @@ def update_course_form(request, course_id): else: version_error+=f'The version should be greater than {previous.version}' - return render(request,'programme_curriculum/acad_admin/update_course_form.html',{'course':course, 'form':form, 'submitbutton': submitbutton,'version_error':version_error}) + return render(request,'programme_curriculum/acad_admin/course_form.html',{'course':course, 'form':form, 'submitbutton': submitbutton,'version_error':version_error}) -@login_required(login_url='/accounts/login') def add_courseslot_form(request): user_details = ExtraInfo.objects.get(user = request.user) @@ -784,6 +829,8 @@ def add_courseslot_form(request): return HttpResponseRedirect('/programme_curriculum/programmes/') elif str(request.user) == "acadadmin" : pass + elif 'hod' in request.session['currentDesignationSelected'].lower(): + return HttpResponseRedirect('/programme_curriculum/programmes/') curriculum_id = request.GET.get('curriculum_id', -1) submitbutton= request.POST.get('Submit') @@ -801,7 +848,6 @@ def add_courseslot_form(request): return render(request, 'programme_curriculum/acad_admin/add_courseslot_form.html',{'form':form, 'submitbutton': submitbutton, 'curriculum_id': curriculum_id}) -@login_required(login_url='/accounts/login') def edit_courseslot_form(request, courseslot_id): user_details = ExtraInfo.objects.get(user = request.user) @@ -810,6 +856,8 @@ def edit_courseslot_form(request, courseslot_id): return HttpResponseRedirect('/programme_curriculum/programmes/') elif str(request.user) == "acadadmin" : pass + elif 'hod' in request.session['currentDesignationSelected'].lower(): + return HttpResponseRedirect('/programme_curriculum/programmes/') courseslot = get_object_or_404(CourseSlot, Q(id=courseslot_id)) curriculum_id = courseslot.semester.curriculum.id @@ -833,6 +881,8 @@ def delete_courseslot(request, courseslot_id): return HttpResponseRedirect('/programme_curriculum/programmes/') elif str(request.user) == "acadadmin" : pass + elif 'hod' in request.session['currentDesignationSelected'].lower(): + return HttpResponseRedirect('/programme_curriculum/programmes/') courseslot = get_object_or_404(CourseSlot, Q(id=courseslot_id)) submitbutton= request.POST.get('Submit') @@ -847,7 +897,6 @@ def delete_courseslot(request, courseslot_id): return render(request, 'programme_curriculum/view_a_courseslot.html', {'course_slot': courseslot}) -@login_required(login_url='/accounts/login') def add_batch_form(request): user_details = ExtraInfo.objects.get(user = request.user) @@ -856,6 +905,8 @@ def add_batch_form(request): return HttpResponseRedirect('/programme_curriculum/programmes/') elif str(request.user) == "acadadmin" : pass + elif 'hod' in request.session['currentDesignationSelected'].lower(): + return HttpResponseRedirect('/programme_curriculum/programmes/') curriculum_id = request.GET.get('curriculum_id', -1) form = BatchForm(initial={'curriculum': curriculum_id}) @@ -870,7 +921,6 @@ def add_batch_form(request): return render(request, 'programme_curriculum/acad_admin/add_batch_form.html',{'form':form, 'submitbutton': submitbutton}) -@login_required(login_url='/accounts/login') def edit_batch_form(request, batch_id): user_details = ExtraInfo.objects.get(user = request.user) @@ -879,6 +929,8 @@ def edit_batch_form(request, batch_id): return HttpResponseRedirect('/programme_curriculum/programmes/') elif str(request.user) == "acadadmin" : pass + elif 'hod' in request.session['currentDesignationSelected'].lower(): + return HttpResponseRedirect('/programme_curriculum/programmes/') curriculum_id = request.GET.get('curriculum_id', -1) batch = get_object_or_404(Batch, Q(id=batch_id)) @@ -897,7 +949,6 @@ def edit_batch_form(request, batch_id): return render(request,'programme_curriculum/acad_admin/add_batch_form.html',{'batch':batch, 'form':form, 'submitbutton':submitbutton}) -@login_required(login_url='/accounts/login') def instigate_semester(request, semester_id): """ This function is used to add the semester information. @@ -913,6 +964,8 @@ def instigate_semester(request, semester_id): return HttpResponseRedirect('/programme_curriculum/programmes/') elif str(request.user) == "acadadmin" : pass + elif 'hod' in request.session['currentDesignationSelected'].lower(): + return HttpResponseRedirect('/programme_curriculum/programmes/') semester = get_object_or_404(Semester, Q(id=semester_id)) @@ -938,7 +991,6 @@ def instigate_semester(request, semester_id): return render(request,'programme_curriculum/acad_admin/instigate_semester_form.html',{'semester':semester, 'form':form, 'submitbutton':submitbutton, 'curriculum_id':curriculum_id}) -@login_required(login_url='/accounts/login') def replicate_curriculum(request, curriculum_id): """ This function is used to replicate the previous curriculum into a new curriculum. @@ -953,6 +1005,8 @@ def replicate_curriculum(request, curriculum_id): return HttpResponseRedirect('/programme_curriculum/programmes/') elif str(request.user) == "acadadmin" : pass + elif 'hod' in request.session['currentDesignationSelected'].lower(): + return HttpResponseRedirect('/programme_curriculum/programmes/') old_curriculum = get_object_or_404(Curriculum, Q(id=curriculum_id)) programme = old_curriculum.programme @@ -996,77 +1050,24 @@ def replicate_curriculum(request, curriculum_id): return render(request, 'programme_curriculum/acad_admin/add_curriculum_form.html',{'form':form, 'submitbutton': submitbutton}) - - - - - - - - - - - - - - - #new @login_required(login_url='/accounts/login') -def course_proposal_form(request): +def view_course_proposal_forms(request): + data="" user_details = ExtraInfo.objects.get(user = request.user) - des = HoldsDesignation.objects.all().filter(user = request.user).first() - if request.session['currentDesignationSelected'] == "Associate Professor" or request.session['currentDesignationSelected'] == "Professor" or request.session['currentDesignationSelected'] == "Assistant Professor" : - pass - elif request.session['currentDesignationSelected'] == "acadadmin": - return HttpResponseRedirect('/programme_curriculum/admin_programmes') - faculty_id=user_details.user_id - details=User.objects.get(id=faculty_id) - faculty_name=details.first_name +' '+ details.last_name - - + des = HoldsDesignation.objects.all().filter(user = request.user).last() - - form=Course_Proposal(initial={'faculty_name': faculty_name,'faculty_code':des.user}) - submitbutton= request.POST.get('Submit') - if submitbutton: - if request.method == 'POST': - form = Course_Proposal(request.POST) - if form.is_valid(): - new_course = form.save(commit=False) - new_course.status=0 - new_course.save() - messages.success(request, " Proposal Added successful") - return HttpResponseRedirect('/programme_curriculum/view_course_proposal_forms/') - - return render(request,'programme_curriculum/faculty/course_proposal_form.html',{'form':form,'submitbutton': submitbutton}) - - -# @login_required(login_url='/accounts/login') -# def update_course_proposal_form(request, course_id): - -# user_details = ExtraInfo.objects.get(user = request.user) -# des = HoldsDesignation.objects.all().filter(user = request.user).first() -# if request.session['currentDesignationSelected']== "student": -# return HttpResponseRedirect('/programme_curriculum/programmes/') -# elif str(request.user) == "acadadmin" : -# return HttpResponseRedirect('/programme_curriculum/admin_programmes') -# elif request.session['currentDesignationSelected']== "Associate Professor" or request.session['currentDesignationSelected']== "Professor" or request.session['currentDesignationSelected']== "Assistant Professor": -# pass + if request.session['currentDesignationSelected'] == "Associate Professor" or request.session['currentDesignationSelected'] == "Professor" or request.session['currentDesignationSelected'] == "Assistant Professor" : + pass + elif request.session['currentDesignationSelected'] == "acadadmin" or request.session['currentDesignationSelected'] == "student" : + return HttpResponseRedirect('/programme_curriculum/programmes/') + else: + data='Files Cannot be sent with current Designation Switch to "Professor or Assistant Professor or Associate Professor"' + courseProposal = NewProposalFile.objects.filter(uploader=des.user,designation=request.session['currentDesignationSelected'],is_update=False) + updatecourseProposal = NewProposalFile.objects.filter(uploader=des.user,designation=request.session['currentDesignationSelected'],is_update=True) -# course = get_object_or_404(Course, Q(id=course_id)) -# form = Update_Course_Proposal(instance=course) -# submitbutton= request.POST.get('Submit') -# if submitbutton: -# if request.method == 'POST': -# form = Update_Course_Proposal(request.POST, instance=course) -# if form.is_valid(): -# form.save() -# messages.success(request, "Updated "+ course.name +" successful") -# return HttpResponseRedirect("/programme_curriculum//programme_curriculum/course_proposal_form//") - - # return render(request,'programme_curriculum/faculty/update_course_proposal_form.html',{'form':form,'submitbutton': submitbutton}) + return render(request, 'programme_curriculum/faculty/view_course_proposal_forms.html',{'courseProposals': courseProposal,'updateProposals':updatecourseProposal,'data':data}) @login_required(login_url='/accounts/login') def faculty_view_all_courses(request): @@ -1080,10 +1081,8 @@ def faculty_view_all_courses(request): return HttpResponseRedirect('/programme_curriculum/admin_programmes') elif request.session['currentDesignationSelected'] == "Associate Professor" or request.session['currentDesignationSelected'] == "Professor" or request.session['currentDesignationSelected'] == "Assistant Professor": pass - - # discipline=user_details.department - # courses = Course.objects.filter(disciplines=discipline) - + elif 'hod' in request.session['currentDesignationSelected'].lower(): + pass courses = Course.objects.all() @@ -1094,7 +1093,6 @@ def faculty_view_all_courses(request): return render(request, 'programme_curriculum/faculty/faculty_view_all_courses.html', {'courses': courses, 'coursefilter': coursefilter}) -@login_required(login_url='/accounts/login') def faculty_view_a_course(request, course_id): """ views the details of a Course """ @@ -1106,258 +1104,374 @@ def faculty_view_a_course(request, course_id): return HttpResponseRedirect('/programme_curriculum/admin_programmes') elif request.session['currentDesignationSelected'] == "Associate Professor" or request.session['currentDesignationSelected'] == "Professor" or request.session['currentDesignationSelected'] == "Assistant Professor" : pass + elif 'hod' in request.session['currentDesignationSelected'].lower(): + pass course = get_object_or_404(Course, Q(id=course_id)) return render(request, 'programme_curriculum/faculty/faculty_view_a_course.html', {'course': course}) +def view_a_course_proposal_form(request,CourseProposal_id): + user_details = ExtraInfo.objects.get(user = request.user) + des = HoldsDesignation.objects.all().filter(user = request.user).first() + if request.session['currentDesignationSelected'] == "Associate Professor" or request.session['currentDesignationSelected'] == "Professor" or request.session['currentDesignationSelected'] == "Assistant Professor": + pass + elif 'hod' in request.session['currentDesignationSelected'].lower(): + pass + elif request.session['currentDesignationSelected'] == "acadadmin" : + return HttpResponseRedirect('/programme_curriculum/admin_programmes') + else: + return HttpResponseRedirect('/programme_curriculum/programmes') - -# ##new -# @login_required(login_url='/accounts/login') -# def head_view_a_course(request, proposal_id): -# """ views the details of a Course """ - -# user_details = ExtraInfo.objects.get(user = request.user) -# des = HoldsDesignation.objects.all().filter(user = request.user).last() -# if request.session['currentDesignationSelected']== "CSE HOD" : -# pass -# elif str(request.user) == "acadadmin" : -# return HttpResponseRedirect('/programme_curriculum/admin_programmes') -# elif request.session['currentDesignationSelected']== "Associate Professor" or request.session['currentDesignationSelected']== "Professor" or request.session['currentDesignationSelected']== "Assistant Professor" or str(des.designation)=="student" : -# return HttpResponseRedirect('/programme_curriculum/programmes') -# proposal = get_object_or_404(CourseProposal, Q(id=proposal_id)) -# return render(request, 'programme_curriculum/hod/head_view_a_course.html', {'proposal': proposal}) - -def head_view_a_course_proposal(request,CourseProposal_id): user_details = ExtraInfo.objects.get(user = request.user) des = HoldsDesignation.objects.all().filter(user = request.user).first() + proposalform = get_object_or_404(NewProposalFile, Q(id=CourseProposal_id)) + return render(request, 'programme_curriculum/faculty/view_a_course_proposal.html', {'proposal': proposalform}) + - if request.session['currentDesignationSelected'] == "CSE HOD" : +def new_course_proposal_file(request): + des = HoldsDesignation.objects.all().filter(user = request.user).first() + if request.session['currentDesignationSelected'] == "Associate Professor" or request.session['currentDesignationSelected'] == "Professor" or request.session['currentDesignationSelected'] == "Assistant Professor": pass - proposalform = get_object_or_404(CourseProposal, Q(id=CourseProposal_id)) + elif request.session['currentDesignationSelected'] == "acadadmin" : + return HttpResponseRedirect('/programme_curriculum/admin_programmes') + else: + return HttpResponseRedirect('/programme_curriculum/programmes') + + uploader = request.user.extrainfo + design=request.session['currentDesignationSelected'] + form=NewCourseProposalFile(initial={'uploader':des.user,'designation':design}) + + submitbutton= request.POST.get('Submit') + + if submitbutton: + if request.method == 'POST': + form = NewCourseProposalFile(request.POST) + if form.is_valid(): + new_course=form.save(commit=False) + new_course.is_read=False + new_course.save() + messages.success(request, "Added successful") - if (request.session['currentDesignationSelected'] == "Dean Academic"): - proposalform = get_object_or_404(CourseProposal, Q(id=CourseProposal_id)) - form = CourseProposalForm(instance=proposalform,initial={'version':1.0}) - submitbutton= request.POST.get('Submit') - if submitbutton: - if request.method == 'POST': - form = CourseProposalForm(request.POST) - if form.is_valid(): - proposalform.status = 3 - proposalform.save() - form.save() - course = get_object_or_404(Course, Q(code=proposalform.code)) - messages.success(request, "Updated "+ proposalform.name +" successful") - return HttpResponseRedirect("/programme_curriculum/course/" + str(course.id) + "/") - return render(request, 'programme_curriculum/faculty/dean_view_a_course_proposal.html', {'course': proposalform ,'form':form,'submitbutton': submitbutton}) - return render(request, 'programme_curriculum/faculty/head_view_a_course_proposal.html', {'proposal': proposalform}) + return HttpResponseRedirect('/programme_curriculum/view_course_proposal_forms/') -def head_view_a_update_course_proposal(request,UpdateCourseProposal_id): + return render(request,'programme_curriculum/faculty/course_proposal_form.html',{'form':form,'submitbutton': submitbutton}) - user_details = ExtraInfo.objects.get(user = request.user) - des = HoldsDesignation.objects.all().filter(user = request.user).first() - if request.session['currentDesignationSelected'] == "CSE HOD" : - pass - proposalform = get_object_or_404(UpdateCourseProposal, Q(id=UpdateCourseProposal_id)) - if(request.session['currentDesignationSelected'] == "Dean Academic"): - - # course = get_object_or_404(Course, Q(code=proposalform.code)) - course =Course.objects.all().filter(code=proposalform.code).order_by('version').last() - previous = Course.objects.all().filter(code=course.code).order_by('version').last() - course.version=previous.version - version_error='' - form = CourseProposalForm(instance=proposalform,initial={'version':course.version}) - submitbutton= request.POST.get('Submit') - if submitbutton: - if request.method == 'POST': - form = CourseForm(request.POST) - if form.is_valid() : - previous.latest_version=False - previous.save() - form.latest_version=True - new_course = form.save(commit=False) - if(new_course.version>previous.version): - proposalform.status = 3 - proposalform.save() - form.save() - course = Course.objects.last() - messages.success(request, "Added successful") - return HttpResponseRedirect("/programme_curriculum/course/"+ str(course.id) + "/") - else: - version_error+=f'The version should be greater than {previous.version}' - return render(request, 'programme_curriculum/faculty/dean_view_update_a_course_proposal.html', {'course': proposalform ,'form':form,'submitbutton': submitbutton,'version_error':version_error}) - return render(request, 'programme_curriculum/faculty/head_view_update_a_course_proposal.html', {'proposal': proposalform}) +def filetracking(request,proposal_id): + + + des = HoldsDesignation.objects.all().filter(user = request.user).first() + if request.session['currentDesignationSelected'] == "Associate Professor" or request.session['currentDesignationSelected'] == "Professor" or request.session['currentDesignationSelected'] == "Assistant Professor" or request.session['currentDesignationSelected'] == "Dean Academic": + pass + elif 'hod' in request.session['currentDesignationSelected'].lower(): + pass + elif request.session['currentDesignationSelected'] == "acadadmin": + return HttpResponseRedirect('/programme_curriculum/admin_programmes') + uploader = request.user.extrainfo + design=request.session['currentDesignationSelected'] + file = get_object_or_404(NewProposalFile, Q(id=proposal_id)) + file_data=file.name+' '+file.code + form=CourseProposalTrackingFile(initial={'current_id':file.uploader,'current_design':file.designation,'file_id':int(proposal_id)}) + + submitbutton= request.POST.get('Submit') + + if submitbutton: + if request.method == 'POST': + form = CourseProposalTrackingFile(request.POST) + if form.is_valid(): + form.is_read=False + form.save() + receiver=request.POST.get('receive_id') + receiver_id = User.objects.get(id=receiver) + receiver_design=request.POST.get('receive_design') + receiver_des= Designation.objects.get(id=receiver_design) + uploader=request.POST.get('current_id') + uploader_design=request.POST.get('current_design') + - #return render(request,'programme_curriculum/acad_admin/update_course_form.html',{'course':course, 'form':form, 'submitbutton': submitbutton,'version_error':version_error}) + data='Received as '+ str(receiver_id) +'-'+str(receiver_des) +' Course Proposal Form "'+file_data +'" By '+str(uploader)+' - '+str(uploader_design) + # data=file.subject + messages.success(request, "Submitted successful") + prog_and_curr_notif(request.user,receiver_id,data) + return HttpResponseRedirect('/programme_curriculum/outward_files/') - - - # submitbutton= request.POST.get('Submit') - # if submitbutton: - # if request.method == 'POST': - # form = CourseProposalForm(request.POST,instance=course) - # if form.is_valid(): - # proposalform.status = 3 - # proposalform.save() - # form.save() - # messages.success(request, "Updated "+ proposalform.name +" successful") - # return HttpResponseRedirect("/programme_curriculum/course/"+ str(course.id) + "/") - # return render(request, 'programme_curriculum/faculty/dean_view_update_a_course_proposal.html', {'course': proposalform ,'form':form,'submitbutton': submitbutton}) - # return render(request, 'programme_curriculum/faculty/head_view_update_a_course_proposal.html', {'proposal': proposalform}) - -def forward_form(request,CourseProposal_id): - proposalform = get_object_or_404(CourseProposal, Q(id=CourseProposal_id)) - proposalform.status =1 - proposalform.save() - courses = CourseProposal.objects.all() - Updatecourses = UpdateCourseProposal.objects.all() - return render(request, 'programme_curriculum/faculty/head_view_course_proposal_forms.html',{'courseProposals': courses,'updateProposals': Updatecourses}) - -def forward_update_form(request,UpdateCourseProposal_id): - proposalform = get_object_or_404(UpdateCourseProposal, Q(id=UpdateCourseProposal_id)) - proposalform.status =1 - proposalform.save() - Updatecourses = UpdateCourseProposal.objects.all() - courses = CourseProposal.objects.all() - # return HttpResponseRedirect('/programme_curriculum/head_view_a_update_course_proposal/'), - return render(request, 'programme_curriculum/faculty/head_view_course_proposal_forms.html',{'courseProposals': courses,'updateProposals': Updatecourses}) + return render(request,'programme_curriculum/faculty/filetracking.html',{'form':form,'submitbutton': submitbutton,'file_info':file_data}) -@login_required(login_url='/accounts/login') -def reject_form(request,CourseProposal_id): + + +def inward_files(request): user_details = ExtraInfo.objects.get(user = request.user) des = HoldsDesignation.objects.all().filter(user = request.user).last() + data='' - if request.session['currentDesignationSelected'] == "CSE HOD" or request.session['currentDesignationSelected'] == "Dean Academic": - pass - elif request.session['currentDesignationSelected'] == "acadadmin" or request.session['currentDesignationSelected'] == "student" : + if request.session['currentDesignationSelected'] == "Associate Professor" or request.session['currentDesignationSelected'] == "Professor" or request.session['currentDesignationSelected'] == "Assistant Professor" : + data='As a "Professor or Assistant Professor or Associate Professor" you cannot receive any proposal requests' + pass + elif 'hod' in request.session['currentDesignationSelected'].lower(): + pass + elif request.session['currentDesignationSelected'] == "Dean Academic": + pass + elif request.session['currentDesignationSelected'] == "acadadmin" : + return HttpResponseRedirect('/programme_curriculum/admin_programmes/') + else: return HttpResponseRedirect('/programme_curriculum/programmes/') - proposalform = get_object_or_404(CourseProposal, Q(id=CourseProposal_id)) - proposalform.status = 2 - proposalform.save() - courses = CourseProposal.objects.all() - Updatecourses = UpdateCourseProposal.objects.all() - - if request.session['currentDesignationSelected'] == "CSE HOD": - proposalform = get_object_or_404(CourseProposal, Q(id=CourseProposal_id)) - proposalform.status = 2 - proposalform.save() - courses = CourseProposal.objects.all() - return render(request, 'programme_curriculum/faculty/head_view_course_proposal_forms.html',{'courseProposals': courses,'updateProposals': Updatecourses}) - if request.session['currentDesignationSelected'] == "Dean Academic" : - proposalform = get_object_or_404(CourseProposal, Q(id=CourseProposal_id)) - proposalform.status = 4 - proposalform.save() - courses = CourseProposal.objects.all() - Updatecourses = UpdateCourseProposal.objects.all() - - return render(request, 'programme_curriculum/faculty/dean_view_course_proposal_forms.html',{'courseProposals': courses,'updateProposals': Updatecourses}) + id=request.user + user_designation=HoldsDesignation.objects.select_related('user','working','designation').filter(user=request.user) -def reject_update_form(request,UpdateCourseProposal_id): - user_details = ExtraInfo.objects.get(user = request.user) - des = HoldsDesignation.objects.all().filter(user = request.user).last() + designation = Designation.objects.get(name=request.session['currentDesignationSelected']) + des_id = designation.id - if request.session['currentDesignationSelected'] == "CSE HOD" or request.session['currentDesignationSelected'] == "Dean Academic": - pass - elif request.session['currentDesignationSelected'] == "acadadmin" or request.session['currentDesignationSelected'] == "student" : - return HttpResponseRedirect('/programme_curriculum/programmes/') + courseProposal = Proposal_Tracking.objects.filter(receive_design = des_id,receive_id= id) + - proposalform = get_object_or_404(UpdateCourseProposal, Q(id=UpdateCourseProposal_id)) - proposalform.status = 2 - proposalform.save() - courses = UpdateCourseProposal.objects.all() - if request.session['currentDesignationSelected']== "CSE HOD": - proposalform = get_object_or_404(UpdateCourseProposal, Q(id=UpdateCourseProposal_id)) - proposalform.status = 2 - proposalform.save() - Updatecourses = UpdateCourseProposal.objects.all() - courses=CourseProposal.objects.all() - return render(request, 'programme_curriculum/faculty/head_view_course_proposal_forms.html',{'courseProposals': courses,'updateProposals': Updatecourses}) - if request.session['currentDesignationSelected']== "Dean Academic" : - proposalform = get_object_or_404(UpdateCourseProposal, Q(id=UpdateCourseProposal_id)) - proposalform.status = 4 - proposalform.save() - courses = CourseProposal.objects.all() - Updatecourses = UpdateCourseProposal.objects.all() - return render(request, 'programme_curriculum/faculty/dean_view_course_proposal_forms.html',{'courseProposals': courses,'updateProposals': Updatecourses}) - - -# def approve_form(request,CourseProposal_id): -# proposalform = get_object_or_404(CourseProposal, Q(id=CourseProposal_id)) -# proposalform.status = 3 -# proposalform.save() -# courses = CourseProposal.objects.all() -# Updatecourses = UpdateCourseProposal.objects.all() - -# return render(request, 'programme_curriculum/faculty/dean_view_course_proposal_forms.html',{'courseProposals': courses,'updateProposals': Updatecourses}) -# def approve_update_form(request,UpdateCourseProposal_id): -# proposalform = get_object_or_404(UpdateCourseProposal, Q(id=UpdateCourseProposal_id)) -# proposalform.status = 3 -# proposalform.save() -# courses = CourseProposal.objects.all() -# Updatecourses = UpdateCourseProposal.objects.all() - -# return render(request, 'programme_curriculum/faculty/dean_view_course_proposal_forms.html',{'courseProposals': courses,'updateProposals': Updatecourses}) + return render(request, 'programme_curriculum/faculty/inward_course_forms.html',{'courseProposals': courseProposal,'design':request.session['currentDesignationSelected'],'data':data}) -@login_required(login_url='/accounts/login') -def view_course_proposal_forms(request): + +def outward_files(request): user_details = ExtraInfo.objects.get(user = request.user) des = HoldsDesignation.objects.all().filter(user = request.user).last() - - if request.session['currentDesignationSelected'] == "Associate Professor" or request.session['currentDesignationSelected'] == "Professor" or request.session['currentDesignationSelected'] == "Assistant Professor" : - pass + data='' + if request.session['currentDesignationSelected'] == "Dean Academic" : + data='As a "Dean Academic" you cannot have any out going files' + pass + elif request.session['currentDesignationSelected'] == "Associate Professor" or request.session['currentDesignationSelected'] == "Professor" or request.session['currentDesignationSelected'] == "Assistant Professor" : + pass + elif 'hod' in request.session['currentDesignationSelected'].lower(): + pass elif request.session['currentDesignationSelected'] == "acadadmin" or request.session['currentDesignationSelected'] == "student" : return HttpResponseRedirect('/programme_curriculum/programmes/') - courseProposal = CourseProposal.objects.filter(faculty_code=des.user) - coursefilter = CourseFilter(request.GET, queryset=courseProposal) + id=request.user + user_designation=HoldsDesignation.objects.select_related('user','working','designation').filter(user=request.user) + design=request.session['currentDesignationSelected'] - courses = CourseProposal.objects.all() - updatecourses=UpdateCourseProposal.objects.all() - updatecourseProposal = UpdateCourseProposal.objects.filter(faculty_code=des.user) + designation = Designation.objects.get(name=request.session['currentDesignationSelected']) + des_id = designation.id - if(request.session['currentDesignationSelected'] == "CSE HOD"): - return render(request, 'programme_curriculum/faculty/head_view_course_proposal_forms.html',{'courseProposals': courses,'updateProposals':updatecourses}) - elif(request.session['currentDesignationSelected'] == "Dean Academic"): - return render(request, 'programme_curriculum/faculty/dean_view_course_proposal_forms.html',{'courseProposals': courses,'updateProposals':updatecourses}) - return render(request, 'programme_curriculum/faculty/view_course_proposal_forms.html',{'courseProposals': courseProposal,'updateProposals':updatecourseProposal}) - - - + courseProposal = Proposal_Tracking.objects.filter(current_design = design,current_id= des.user) + + return render(request, 'programme_curriculum/faculty/outward_course_forms.html',{'courseProposals': courseProposal,'design':request.session['currentDesignationSelected'],'data':data}) -@login_required(login_url='/accounts/login') -def update_course_proposal_form(request, course_id): - user_details = ExtraInfo.objects.get(user = request.user) +def update_course_proposal_file(request,course_id): des = HoldsDesignation.objects.all().filter(user = request.user).first() - if request.session['currentDesignationSelected'] == "student": - return HttpResponseRedirect('/programme_curriculum/programmes/') - elif request.session['currentDesignationSelected'] == "acadadmin" : - return HttpResponseRedirect('/programme_curriculum/admin_programmes/') - elif request.session['currentDesignationSelected'] == "Associate Professor" or request.session['currentDesignationSelected'] == "Professor" or request.session['currentDesignationSelected'] == "Assistant Professor" : + if request.session['currentDesignationSelected'] == "Associate Professor" or request.session['currentDesignationSelected'] == "Professor" or request.session['currentDesignationSelected'] == "Assistant Professor": pass + elif request.session['currentDesignationSelected'] == "acadadmin" : + return HttpResponseRedirect('/programme_curriculum/admin_programmes') + else: + return HttpResponseRedirect('/programme_curriculum/programmes') - faculty_id=user_details.user_id - details=User.objects.get(id=faculty_id) - faculty_name=details.first_name +' '+ details.last_name - faculty_details=Update_Course_Proposal(initial={'faculty_name': faculty_name,'faculty_code':des.user}) + uploader = request.user.extrainfo + design=request.session['currentDesignationSelected'] course = get_object_or_404(Course, Q(id=course_id)) - form = Update_Course_Proposal(instance=course) - + file_data=course.code+' - '+course.name + form = NewCourseProposalFile(initial={'uploader':des.user,'designation':design},instance=course) submitbutton= request.POST.get('Submit') + if submitbutton: if request.method == 'POST': - form = Update_Course_Proposal(request.POST) + form = NewCourseProposalFile(request.POST) if form.is_valid(): - form.save() - messages.success(request, "Updated "+ course.name +" successful") + new_course=form.save(commit=False) + new_course.is_read=False + new_course.is_update=True + new_course.save() + messages.success(request, "Added successful") return HttpResponseRedirect('/programme_curriculum/view_course_proposal_forms/') - return render(request,'programme_curriculum/faculty/update_course_proposal_form.html',{'faculty_details':faculty_details,'form':form, 'submitbutton': submitbutton}) \ No newline at end of file + + + return render(request,'programme_curriculum/faculty/course_proposal_form.html',{'form':form,'submitbutton': submitbutton,'file_info':file_data}) + + + + +def forward_course_forms(request,ProposalId): + de= ProposalId + des = HoldsDesignation.objects.all().filter(user = request.user).first() + + courseform = Proposal_Tracking.objects.all().filter(id=ProposalId) + + uploader = request.user.extrainfo + design=request.session['currentDesignationSelected'] + file = get_object_or_404(Proposal_Tracking, Q(id=ProposalId)) + file_id = int(file.file_id) + file2 = get_object_or_404(NewProposalFile, Q(id=file_id)) + file_data=file2.code + ' ' + file2.name + Proposal_D = file.id + + if request.session['currentDesignationSelected'] == "Dean Academic" : + file = get_object_or_404(Proposal_Tracking, Q(id=ProposalId)) + file_id = int(file.file_id) + file2 = get_object_or_404(NewProposalFile, Q(id=file_id)) + course =Course.objects.all().filter(code=file2.code).last() + version_error='' + if(course): + previous = Course.objects.all().filter(code=course.code).order_by('version').last() + course.version=previous.version + form = CourseForm(instance=course) + submitbutton= request.POST.get('Submit') + if submitbutton: + if request.method == 'POST': + form = CourseForm(request.POST) + if form.is_valid() : + + new_course = form.save(commit=False) + if(new_course.version>previous.version): + previous.latest_version=False + previous.save() + file.is_added=True + file.is_submitted=True + file.save() + form.latest_version=True + form.save() + course = Course.objects.last() + + receiver=file2.uploader + receiver_id = User.objects.get(username=receiver) + data='The Course "'+ file2.code+ ' - '+ file2.name + '" Updated Successfully' + # data=file.subject + prog_and_curr_notif(request.user,receiver_id,data) + messages.success(request, data) + return HttpResponseRedirect("/programme_curriculum/course/" + str(course.id) + "/") + else: + version_error+=f'The version should be greater than {previous.version}' + + return render(request,'programme_curriculum/faculty/dean_view_a_course_proposal.html',{'course':course, 'form':form, 'submitbutton': submitbutton,'version_error':version_error,'id':Proposal_D}) + else: + form = CourseForm(instance=file2,initial={'disciplines':file.disciplines}) + # course1 =Course.objects.filter(code=file2.code,name=file2.name,credit=file2.credit,lecture_hours=file2.lecture_hours,tutorial_hours=file2.tutorial_hours,pratical_hours=file2.pratical_hours,discussion_hours=file2.discussion_hours,project_hours=file2.project_hours,pre_requisits=file2.pre_requisits,syllabus=file2.syllabus,percent_quiz_1=file2.percent_quiz_1,percent_midsem=file2.percent_midsem,percent_quiz_2=file2.percent_quiz_2,percent_project=file2.percent_project,percent_endsem=file2.percent_endsem,percent_lab_evaluation=file2.percent_lab_evaluation,percent_course_attendance=file2.percent_course_attendance,ref_books=file2.ref_books) + submitbutton= request.POST.get('Submit') + + if submitbutton: + if request.method == 'POST': + form = CourseForm(request.POST) + + if form.is_valid(): + file.is_added=True + file.is_submitted=True + file.save() + form.save() + receiver=file2.uploader + receiver_id = User.objects.get(username=receiver) + data='The Course "'+ file2.code+ ' - '+ file2.name + '" Added Successfully' + # data=file.subject + prog_and_curr_notif(request.user,receiver_id,data) + course =Course.objects.all().filter(code=file2.code).last() + messages.success(request, "Updated "+ file2.name +" successful") + return HttpResponseRedirect("/programme_curriculum/course/" + str(course.id) + "/") + + + + return render(request, 'programme_curriculum/faculty/dean_view_a_course_proposal.html', {'course': file2 ,'form':form,'submitbutton': submitbutton,'id':Proposal_D}) + + elif 'hod' in request.session['currentDesignationSelected'].lower(): + + form=CourseProposalTrackingFile(initial={'current_id':des.user,'current_design':request.session['currentDesignationSelected'],'file_id':file.file_id,'disciplines':file.disciplines}) + + # The above code is trying to retrieve the value of the 'Submit' key from the POST request + # data. It is using the `get` method on the `request.POST` dictionary to access the value + # associated with the 'Submit' key. + submitbutton= request.POST.get('Submit') + + if submitbutton: + if request.method == 'POST': + form = CourseProposalTrackingFile(request.POST) + if form.is_valid(): + file.is_submitted=True + file.save() + form.is_read=False + form.save() + + receiver=request.POST.get('receive_id') + + uploader=request.POST.get('current_id') + uploader_design=request.POST.get('current_design') + + + receiver_design=request.POST.get('receive_design') + receiver_des= Designation.objects.get(id=receiver_design) + receiver_id = User.objects.get(id=receiver) + messages.success(request, "Added successful") + data='Received as '+ str(receiver_id) +'-'+str(receiver_des) +' Course Proposal of Course '+file_data +' By '+str(uploader)+' - '+str(uploader_design) + + prog_and_curr_notif(request.user,receiver_id,data) + return HttpResponseRedirect('/programme_curriculum/outward_files/') + elif request.session['currentDesignationSelected'] == "acadadmin" : + return HttpResponseRedirect('/programme_curriculum/admin_programmes') + else: + return HttpResponseRedirect('/programme_curriculum/programmes') + + + + return render(request,'programme_curriculum/faculty/forward.html',{'form':form,'receive_date':file.receive_date,'proposal':file2,'submitbutton': submitbutton,'id':Proposal_D}) + + +def view_inward_files(request,ProposalId): + + if request.session['currentDesignationSelected'] == "Associate Professor" or request.session['currentDesignationSelected'] == "Professor" or request.session['currentDesignationSelected'] == "Assistant Professor" or request.session['currentDesignationSelected'] == "Dean Academic": + pass + elif 'hod' in request.session['currentDesignationSelected'].lower(): + pass + elif request.session['currentDesignationSelected'] == "acadadmin": + return HttpResponseRedirect('/programme_curriculum/admin_programmes/') + else: + return HttpResponseRedirect('/programme_curriculum/programmes/') + + des = HoldsDesignation.objects.all().filter(user = request.user).first() + + + uploader = request.user.extrainfo + design=request.session['currentDesignationSelected'] + file = get_object_or_404(Proposal_Tracking, Q(id=ProposalId)) + file_id = int(file.file_id) + file2 = get_object_or_404(NewProposalFile, Q(id=file_id)) + file_data='' + file_data2='' + + + if(file.is_rejected): + file_data='"'+str(file2.name) + '"'+' Course Rejected by ' + str(file.receive_id) + ' - ' +str(file.receive_design) + if(file.is_added and not file.is_rejected): + file_data2='"'+str(file2.code)+' - '+str(file2.name) +'" Course Added Succesfully' + + courseProposal = Proposal_Tracking.objects.filter(file_id=file.file_id,disciplines=file.disciplines) + form=CourseProposalTrackingFile(initial={'current_id':des.user,'current_design':request.session['currentDesignationSelected'],'file_id':file.file_id,'disciplines':file.disciplines}) + + return render(request,'programme_curriculum/faculty/view_file.html',{'form':form,'receive_date':file.receive_date,'proposal':file2,'trackings':courseProposal,'file_info':file_data,'file_sucess':file_data2}) + +def reject_form(request,ProposalId): + + if request.session['currentDesignationSelected'] == "Associate Professor" or request.session['currentDesignationSelected'] == "Professor" or request.session['currentDesignationSelected'] == "Assistant Professor" or request.session['currentDesignationSelected'] == "Dean Academic": + pass + elif 'hod' in request.session['currentDesignationSelected'].lower(): + pass + elif request.session['currentDesignationSelected'] == "acadadmin": + return HttpResponseRedirect('/programme_curriculum/admin_programmes/') + else: + return HttpResponseRedirect('/programme_curriculum/programmes/') + + track=get_object_or_404(Proposal_Tracking, Q(id=ProposalId)) + file2 = get_object_or_404(NewProposalFile,Q(id = track.file_id)) + if(not track.is_added and not track.is_submitted): + track.is_rejected=True + track.is_submitted=True + track.save() + messages.success(request, "Course Proposal Form Rejected") + receiver=file2.uploader + receiver_id = User.objects.get(username=receiver) + data='The Course "'+ file2.code+ ' - '+ file2.name + '" was Rejected by ' + str(request.user) + ' - ' +str(request.session['currentDesignationSelected']) + prog_and_curr_notif(request.user,receiver_id,data) + + + else: + messages.error(request, "course already forwarded or added can't be rejected") + return HttpResponseRedirect('/programme_curriculum/inward_files/') + \ No newline at end of file diff --git a/FusionIIIT/templates/programme_curriculum/acad_admin/add_curriculum_form.html b/FusionIIIT/templates/programme_curriculum/acad_admin/add_curriculum_form.html index 81c6aca98..a44dc5aac 100644 --- a/FusionIIIT/templates/programme_curriculum/acad_admin/add_curriculum_form.html +++ b/FusionIIIT/templates/programme_curriculum/acad_admin/add_curriculum_form.html @@ -47,6 +47,13 @@ {% endif %} +
+ {% if version_error %} +
+

{{version_error}}

+
+ {% endif %} +
{{ form.name }} diff --git a/FusionIIIT/templates/programme_curriculum/acad_admin/admin_view_all_working_curriculums.html b/FusionIIIT/templates/programme_curriculum/acad_admin/admin_view_all_working_curriculums.html index 105bc73a6..f9ced979e 100644 --- a/FusionIIIT/templates/programme_curriculum/acad_admin/admin_view_all_working_curriculums.html +++ b/FusionIIIT/templates/programme_curriculum/acad_admin/admin_view_all_working_curriculums.html @@ -54,7 +54,7 @@ {{ curriculum.no_of_semester }}
EDIT
{% endblock %} @@ -45,23 +44,37 @@

{{ form.name.errors }}

{{ form.code.errors }}

+

{{ form.version.errors }}

{{ form.credit.errors }}

{% endif %}
+
+ {% if version_error %} +
+

{{version_error}}

+
+ {% endif %} +
{{ form.name }} +
+
-
+
{{ form.code }}
-
+
{{ form.credit }}
+
+ + {{ form.version }} +
{% if form.lecture_hours.errors or form.tutorial_hours.errors or form.pratical_hours.errors or form.discussion_hours.errors or form.project_hours.errors %} @@ -71,6 +84,7 @@

{{ form.pratical_hours.errors }}

{{ form.discussion_hours.errors }}

{{ form.project_hours.errors }}

+
{% endif %}
@@ -87,6 +101,8 @@ {{ form.pratical_hours }}
+ +
@@ -225,14 +241,4 @@ {% block rightcontent %}

- {% endblock %} \ No newline at end of file diff --git a/FusionIIIT/templates/programme_curriculum/faculty/course_proposal_form.html b/FusionIIIT/templates/programme_curriculum/faculty/course_proposal_form.html index 17a638108..70b13d9a9 100644 --- a/FusionIIIT/templates/programme_curriculum/faculty/course_proposal_form.html +++ b/FusionIIIT/templates/programme_curriculum/faculty/course_proposal_form.html @@ -18,9 +18,24 @@ Batches - Course Proposal Form - - + +
{% endblock %} @@ -44,22 +59,32 @@
{% if form.name.errors or form.code.errors or form.credit.errors %}
-

{{ form.faculty_name.errors }}

-

{{ form.faculty_code.errors }}

+

{{ form.designation.errors }}

+

{{ form.uploader.errors }}

+

{{ form.subject.errors }}

+

{{ form.description.errors }}

{{ form.name.errors }}

{{ form.code.errors }}

{{ form.credit.errors }}

{% endif %}
-
- - {{ form.faculty_name }} +
+
+ + {{form.uploader}} +
+
+ + {{form.designation}} +
- - {{ form.faculty_code }} -
+ + {{ form.subject }} +
+ + {{ form.description }}
{{ form.name }} @@ -109,7 +134,7 @@ {{ form.project_hours }}
-
+ {% comment %}
{% if form.disciplines.errors %}
{{ form.disciplines.errors }} @@ -117,7 +142,7 @@ {% endif %} {{ form.disciplines }} -
+
{% endcomment %}
{% if form.pre_requisits.errors %}
@@ -154,15 +179,6 @@ {{ form.ref_books }}
-
- {% if form.status.errors %} -
- {{ form.status.errors }} -
- {% endif %} - - {{ form.status }} -
{% if form.percent_quiz_1.errors %}
@@ -214,7 +230,11 @@
Cancel
+ {% comment %} Submit {% endcomment %} + {% comment %} Submit + {% endcomment %} + {% comment %} {% endcomment %}
diff --git a/FusionIIIT/templates/programme_curriculum/faculty/dean_view_a_course_proposal.html b/FusionIIIT/templates/programme_curriculum/faculty/dean_view_a_course_proposal.html index 509fc8d57..458d4ec4b 100644 --- a/FusionIIIT/templates/programme_curriculum/faculty/dean_view_a_course_proposal.html +++ b/FusionIIIT/templates/programme_curriculum/faculty/dean_view_a_course_proposal.html @@ -18,15 +18,30 @@ Batches - Course Proposal Form - - + +
{% endblock %} {% block content %}
-

Course Proposal Form

+

Course Form

@@ -46,27 +61,37 @@

{{ form.name.errors }}

{{ form.code.errors }}

+

{{ form.version.errors }}

{{ form.credit.errors }}

{% endif %}
+
+ {% if version_error %} +
+

{{version_error}}

+
+ {% endif %} +
{{ form.name }} +
+
-
+
{{ form.code }}
-
- - {{ form.version }} -
-
+
{{ form.credit }}
+
+ + {{ form.version }} +
{% if form.lecture_hours.errors or form.tutorial_hours.errors or form.pratical_hours.errors or form.discussion_hours.errors or form.project_hours.errors %} @@ -76,6 +101,7 @@

{{ form.pratical_hours.errors }}

{{ form.discussion_hours.errors }}

{{ form.project_hours.errors }}

+
{% endif %}
@@ -92,6 +118,8 @@ {{ form.pratical_hours }}
+ +
@@ -206,38 +234,16 @@
- Reject + Reject
- +
- - {% endblock %} -{% comment %} {% block rightcontent %} +{% block rightcontent %}

- -{% endblock %} {% endcomment %} \ No newline at end of file +{% endblock %} \ No newline at end of file diff --git a/FusionIIIT/templates/programme_curriculum/faculty/dean_view_course_proposal_forms.html b/FusionIIIT/templates/programme_curriculum/faculty/dean_view_course_proposal_forms.html deleted file mode 100644 index 08842798d..000000000 --- a/FusionIIIT/templates/programme_curriculum/faculty/dean_view_course_proposal_forms.html +++ /dev/null @@ -1,159 +0,0 @@ -{% extends 'programme_curriculum/common.html' %} -{% block sidetabmenu %} - -{% endblock %} - -{% block content %} - -
-
-
- - - - - - - - - - - - - {% for courseProposal in courseProposals %} - - {% if courseProposal.status != 0 and courseProposal.status != 2 %} - - - - - - - - - - - - - {% endif %} - - {% empty %} - - {% endfor %} - -

Faculty Name

Faculty Name

Course Name

Course Code

Status

{{ courseProposal.faculty_name }}{{ courseProposal.faculty_code }}{{ courseProposal.name }}{{ courseProposal.code }} - {% if courseProposal.status == 1 %} - -
edit
- -
- {% endif %} - {% if courseProposal.status == 3 %} - Approved - {% endif %} - {% if courseProposal.status == 4 %} - Rejected - {% endif %} - {% if courseProposal.status == 6%} - Course Added! - {% endif %} -
No Courses Avaliable
-
-
-
- -
-
-
- - - - - - - - - - - - - {% for updateProposal in updateProposals %} - - {% if updateProposal.status != 0 and updateProposal.status != 2 %} - - - - - - - - - - - - - {% endif %} - - {% empty %} - - {% endfor %} - -

Faculty Name

Faculty Name

Course Name

Course Code

Status

{{ updateProposal.faculty_name }}{{ updateProposal.faculty_code }}{{ updateProposal.name }}{{ updateProposal.code }} - {% if updateProposal.status == 1 %} - -
edit
- -
- {% endif %} - {% if updateProposal.status == 3 %} - Approved - {% endif %} - {% if updateProposal.status == 4 %} - Rejected - {% endif %} - {% if updateProposal.status == 6%} - Course Updated -
Succesfully!
- {% endif %} -
No Courses Avaliable
-
-
-
-{% endblock %} \ No newline at end of file diff --git a/FusionIIIT/templates/programme_curriculum/faculty/dean_view_update_a_course_proposal.html b/FusionIIIT/templates/programme_curriculum/faculty/dean_view_update_a_course_proposal.html deleted file mode 100644 index 6be107cb8..000000000 --- a/FusionIIIT/templates/programme_curriculum/faculty/dean_view_update_a_course_proposal.html +++ /dev/null @@ -1,251 +0,0 @@ -{% extends 'programme_curriculum/common.html' %} -{% block sidetabmenu %} - -{% endblock %} - -{% block content %} -
-

Update Course Proposal Form

-
-
- - {% csrf_token %} - {% if form.non_field_errors %} -
-
We had some issues
- {% for error in form.non_field_errors %} -
    -
  • {{ error }}
  • -
- {% endfor %} -
- {% endif %} -
- {% if form.name.errors or form.code.errors or form.credit.errors %} -
-

{{ form.name.errors }}

-

{{ form.code.errors }}

-

{{ form.credit.errors }}

-

{{ form.version.errors }}

-
- {% endif %} -
-
- {% if version_error %} -
-

{{version_error}}

-
- {% endif %} -
-
- - {{ form.name }} -
-
-
- - {{ form.code }} -
-
- - {{ form.version }} -
-
- - {{ form.credit }} -
-
-
- {% if form.lecture_hours.errors or form.tutorial_hours.errors or form.pratical_hours.errors or form.discussion_hours.errors or form.project_hours.errors %} -
-

{{ form.lecture_hours.errors }}

-

{{ form.tutorial_hours.errors }}

-

{{ form.pratical_hours.errors }}

-

{{ form.discussion_hours.errors }}

-

{{ form.project_hours.errors }}

-
- {% endif %} -
-
-
- - {{ form.lecture_hours }} -
-
- - {{ form.tutorial_hours }} -
-
- - {{ form.pratical_hours }} -
-
-
-
- - {{ form.discussion_hours }} -
-
- - {{ form.project_hours }} -
-
-
- {% if form.working_course.errors %} -
- {{ form.working_course.errors }} -
- {% endif %} - - {{ form.working_course }} -
-
- {% if form.disciplines.errors %} -
- {{ form.disciplines.errors }} -
- {% endif %} - - {{ form.disciplines }} -
-
- {% if form.pre_requisits.errors %} -
- {{ form.pre_requisits.errors }} -
- {% endif %} - - {{ form.pre_requisits }} -
-
- {% if form.pre_requisit_courses.errors %} -
- {{ form.pre_requisit_courses.errors }} -
- {% endif %} - - {{ form.pre_requisit_courses }} -
-
- {% if form.syllabus.errors %} -
- {{ form.syllabus.errors }} -
- {% endif %} - - {{ form.syllabus }} -
-
- {% if form.ref_books.errors %} -
- {{ form.ref_books.errors }} -
- {% endif %} - - {{ form.ref_books }} -
-
- {% if form.percent_quiz_1.errors %} -
-

{{ form.percent_quiz_1.errors }}

-
- {% endif %} -
-
-
- - {{ form.percent_quiz_1 }} -
-
- - - {{ form.percent_midsem }} -
-
- - - {{ form.percent_quiz_2 }} -
-
- - - {{ form.percent_endsem }} -
-
-
-
- - - {{ form.percent_project }} -
-
- - - {{ form.percent_lab_evaluation }} -
-
- - - {{ form.percent_course_attendance }} -
-
- - - -
- Reject -
- -
- -
-
- - - -{% endblock %} -{% comment %} {% block rightcontent %} -
-
- -{% endblock %} {% endcomment %} diff --git a/FusionIIIT/templates/programme_curriculum/faculty/faculty_view_a_course.html b/FusionIIIT/templates/programme_curriculum/faculty/faculty_view_a_course.html index cc0f295aa..6dff57ef2 100644 --- a/FusionIIIT/templates/programme_curriculum/faculty/faculty_view_a_course.html +++ b/FusionIIIT/templates/programme_curriculum/faculty/faculty_view_a_course.html @@ -21,9 +21,24 @@ Course Proposal Form - Update Courses Proposal Form - - + +
{% endblock %} {% block content %} @@ -153,7 +168,7 @@

{{ discipline }}

EDIT COURSE
{% endblock %} diff --git a/FusionIIIT/templates/programme_curriculum/faculty/filetracking.html b/FusionIIIT/templates/programme_curriculum/faculty/filetracking.html new file mode 100644 index 000000000..aa60e326b --- /dev/null +++ b/FusionIIIT/templates/programme_curriculum/faculty/filetracking.html @@ -0,0 +1,126 @@ +{% extends 'programme_curriculum/common.html' %} +{% block sidetabmenu %} + +{% endblock %} + +{% block content %} +
+

New Course Proposal Form

+
+
+ + {% csrf_token %} + {% if form.non_field_errors %} +
+
We had some issues
+ {% for error in form.non_field_errors %} +
    +
  • {{ error }}
  • +
+ {% endfor %} +
+ {% endif %} +
+ {% if form.current_id.errors or form.file_id.errors or form.current_design.errors %} +
+

{{ form.current_id.errors }}

+

{{ form.file_id.errors }}

+

{{ form.current_design.errors }}

+

{{ form.receive_id.errors }}

+

{{ form.receive_design.errors }}

+

{{ form.remarks.errors }}

+
+ {% endif %} +
+
+ + {{ form.file_id }} +
+
+ + {{ form.current_id }} +
+ + {{ form.current_design }} +
+
+ + {{ form.receive_id }} +
+
+ + {{ form.receive_design }} +
+
+ + {{ form.remarks }} +
+
+ + {{ form.disciplines }} +
+ + +
+ Cancel +
+ + +
+ + +
+ + + +{% endblock %} +{% block rightcontent %} +
+ +{% endblock %} \ No newline at end of file diff --git a/FusionIIIT/templates/programme_curriculum/faculty/forward.html b/FusionIIIT/templates/programme_curriculum/faculty/forward.html new file mode 100644 index 000000000..d7dc4483f --- /dev/null +++ b/FusionIIIT/templates/programme_curriculum/faculty/forward.html @@ -0,0 +1,144 @@ +{% extends 'programme_curriculum/common.html' %} + +{% block sidetabmenu %} + +{% endblock %} +{% block content %} + + + +
+ + + + + + + + {% csrf_token %} +
+ +
+ Receive date:{{receive_date}} +
+ + {% csrf_token %} + {% if form.non_field_errors %} +
+
We had some issues
+ {% for error in form.non_field_errors %} +
    +
  • {{ error }}
  • +
+ {% endfor %} +
+ {% endif %} +
+ {% if form.current_id.errors or form.file_id.errors or form.current_design.errors %} +
+

{{ form.current_id.errors }}

+

{{ form.file_id.errors }}

+

{{ form.current_design.errors }}

+

{{ form.receive_id.errors }}

+

{{ form.receive_design.errors }}

+

{{ form.remarks.errors }}

+
+ {% endif %} +
+ +
+ + {{ form.file_id }} +
+
+ + {{ file_info}} +
+ + {{ form.current_id }} +
+ + {{ form.current_design }} +
+
+ + {{ form.receive_id }} +
+
+ + {{ form.receive_design }} +
+
+ + {{ form.remarks }} +
+
+ + {{ form.disciplines }} +
+ +
+ Reject +
+ + +
+ + +
+
+
+ + + + +{% endblock %} + diff --git a/FusionIIIT/templates/programme_curriculum/faculty/head_view_course_proposal_forms.html b/FusionIIIT/templates/programme_curriculum/faculty/head_view_course_proposal_forms.html deleted file mode 100644 index 24863ff3a..000000000 --- a/FusionIIIT/templates/programme_curriculum/faculty/head_view_course_proposal_forms.html +++ /dev/null @@ -1,162 +0,0 @@ -{% extends 'programme_curriculum/common.html' %} -{% block sidetabmenu %} - -{% endblock %} - -{% block content %} - -
-
-
- - - - - - - - - - - - {% for courseProposal in courseProposals %} - - - - - - - - - - {% empty %} - - {% endfor %} - - -

Faculty Name

Faculty Name

Course Name

Course Code

Status

{{ courseProposal.faculty_name }}{{ courseProposal.faculty_code }}{{ courseProposal.name }}{{ courseProposal.code }} - {% if courseProposal.status == 0 %} - -
edit
- -
- {% endif %} - {% if courseProposal.status == 1 %} - Forwarded to Dean - {% endif %} - {% if courseProposal.status == 2 %} - Rejected - {% endif %} - {% if courseProposal.status == 3 %} - Approved by Dean - {% endif %} - {% if courseProposal.status == 4 %} - Rejected by Dean - {% endif %} - {% if courseProposal.status == 6%} - Course Added! - {% endif %} - - -
No Courses Avaliable
-
-
-
- -
-
-
- - - - - - - - - - - - {% for updateProposal in updateProposals %} - - - - - - - - - - {% empty %} - - {% endfor %} - - -

Faculty Name

Faculty Name

Course Name

Course Code

Status

{{ updateProposal.faculty_name }}{{ updateProposal.faculty_code }}{{ updateProposal.name }}{{ updateProposal.code }} - {% if updateProposal.status == 0 %} - -
edit
- -
- {% endif %} - {% if updateProposal.status == 1 %} - Forwarded to Dean - {% endif %} - {% if updateProposal.status == 2 %} - Rejected - {% endif %} - {% if updateProposal.status == 3 %} - Approved by Dean - {% endif %} - {% if updateProposal.status == 4 %} - Rejected by Dean - {% endif %} - {% if updateProposal.status == 6%} - Course Added! - {% endif %} - - -
No Courses Avaliable
-
-
-
- -{% endblock %} - diff --git a/FusionIIIT/templates/programme_curriculum/faculty/head_view_update_a_course_proposal.html b/FusionIIIT/templates/programme_curriculum/faculty/head_view_update_a_course_proposal.html deleted file mode 100644 index 1bfb07e83..000000000 --- a/FusionIIIT/templates/programme_curriculum/faculty/head_view_update_a_course_proposal.html +++ /dev/null @@ -1,180 +0,0 @@ - -{% extends 'programme_curriculum/common.html' %} -{% block sidetabmenu %} - -{% endblock %} -{% block content %} -
-
-
- - - - - - - - - {% if course.disciplines.all %} - - - - {% endif %} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Course Proposal Form By

{{ proposal.faculty_name }}({{ proposal.faculty_code }})

-

{{ proposal.code }} - {{ proposal.name }}

-
Discipline - {% for discipline in proposal.disciplines.all %} -

{{ discipline }}

- {% endfor %} - -
Course Code{{ proposal.code }}
Course Name{{ proposal.name }}
Contact hours
Lecture{{ proposal.lecture_hours }}hrs
Tutorial{{ proposal.tutorial_hours }}hrs
Lab{{ proposal.pratical_hours }}hrs
Discussion{{ proposal.discussion_hours }}hrs
Project{{ proposal.project_hours }}hrs
Credits{{ proposal.credit }}
Pre-requisits
Info{{ proposal.pre_requisits|linebreaks }}
Courses -

- {% for p_proposal in proposal.pre_requisit_courses.all %} - {{ p_proposal }},
- {% endfor %} -

-
Syllabus{{ proposal.syllabus|linebreaks }}
Evaluation Schema
Quiz 1{{ proposal.percent_quiz_1 }} %
Mid-Sem Exam{{ proposal.percent_midsem }} %
Quiz 2{{ proposal.percent_quiz_2 }} %
End-Sem Exam{{ proposal.percent_endsem }} %
Project{{ proposal.percent_project }} %
Lab Evaluation{{ proposal.percent_lab_evaluation }} %
Course Attendance{{ proposal.percent_course_attendance }} %
References & Books{{ proposal.ref_books|linebreaks }}
-
-
-
-{% endblock %} -{% block rightcontent %} -
-
- -{% endblock %} diff --git a/FusionIIIT/templates/programme_curriculum/faculty/inward_course_forms.html b/FusionIIIT/templates/programme_curriculum/faculty/inward_course_forms.html new file mode 100644 index 000000000..c87957cc6 --- /dev/null +++ b/FusionIIIT/templates/programme_curriculum/faculty/inward_course_forms.html @@ -0,0 +1,107 @@ +{% extends 'programme_curriculum/common.html' %} +{% block sidetabmenu %} + +{% endblock %} +{% load static %} +{% load static %} + +{% block content %} + +{%if data %} + +

+
{{ data }}
+
+{%endif%} +{%if not data %} + + +
+ + + + + + + + + + + + + + + + + {% for courseProposal in courseProposals %} + + + + + + + + {%if not courseProposal.is_submitted %} + {%endif%} + + + + + + + + + {% endfor %} + + +
Received asSend byFile IDRemarkDateView FileSubmit File
{{request.user.extrainfo.user}} - {{courseProposal.receive_design}}{{courseProposal.current_id}} - {{courseProposal.current_design}}{{courseProposal.file_id}}{{courseProposal.remarks}}{{courseProposal.receive_date}}
+ +
+{%endif%} +{% endblock %} diff --git a/FusionIIIT/templates/programme_curriculum/faculty/outward_course_forms.html b/FusionIIIT/templates/programme_curriculum/faculty/outward_course_forms.html new file mode 100644 index 000000000..fb47647a0 --- /dev/null +++ b/FusionIIIT/templates/programme_curriculum/faculty/outward_course_forms.html @@ -0,0 +1,105 @@ +{% extends 'programme_curriculum/common.html' %} +{% block sidetabmenu %} + +{% endblock %} +{% load static %} +{% load static %} + +{% block content %} + + +{%if data %} + +

+
{{ data }}
+
+{%endif%} +{%if not data %} + + +
+ + + + + + + + + + + + + + + + {% for courseProposal in courseProposals %} + + + + + + + + + + + + + + + + + {% endfor %} + + +
Send byReceived asFile IDRemarkDateView File
{{request.user.extrainfo.user}}-{{courseProposal.current_design}} {{courseProposal.receive_id}} - {{courseProposal.receive_design}}{{courseProposal.file_id}}{{courseProposal.remarks}}{{courseProposal.receive_date}}
+ +
+ {%endif%} +{% endblock %} diff --git a/FusionIIIT/templates/programme_curriculum/faculty/update_course_proposal_form.html b/FusionIIIT/templates/programme_curriculum/faculty/update_course_proposal_form.html index b89075517..a9b4ee0c0 100644 --- a/FusionIIIT/templates/programme_curriculum/faculty/update_course_proposal_form.html +++ b/FusionIIIT/templates/programme_curriculum/faculty/update_course_proposal_form.html @@ -18,12 +18,24 @@ Batches - Course Proposal Form - - - Update Course Proposal Form - - + +
{% endblock %} diff --git a/FusionIIIT/templates/programme_curriculum/faculty/view_a_course.html b/FusionIIIT/templates/programme_curriculum/faculty/view_a_course.html index f221fe18c..0018bb821 100644 --- a/FusionIIIT/templates/programme_curriculum/faculty/view_a_course.html +++ b/FusionIIIT/templates/programme_curriculum/faculty/view_a_course.html @@ -3,7 +3,6 @@ {% block sidetabmenu %} {% endblock %} diff --git a/FusionIIIT/templates/programme_curriculum/faculty/head_view_a_course_proposal.html b/FusionIIIT/templates/programme_curriculum/faculty/view_a_course_proposal.html similarity index 88% rename from FusionIIIT/templates/programme_curriculum/faculty/head_view_a_course_proposal.html rename to FusionIIIT/templates/programme_curriculum/faculty/view_a_course_proposal.html index b1c8c8018..e05130498 100644 --- a/FusionIIIT/templates/programme_curriculum/faculty/head_view_a_course_proposal.html +++ b/FusionIIIT/templates/programme_curriculum/faculty/view_a_course_proposal.html @@ -19,12 +19,24 @@ Batches - View Proposal Form - - - Edit Proposal Form - - + +
{% endblock %} {% block content %} @@ -35,7 +47,7 @@ -

Course Proposal Form By

{{ proposal.faculty_name }}({{ proposal.faculty_code }})

+

Course Proposal Form By -> {{ proposal.uploader }} - {{proposal.designation}}

+{% comment %} -
+
{% endcomment %} {% endblock %} diff --git a/FusionIIIT/templates/programme_curriculum/faculty/view_a_courseslot.html b/FusionIIIT/templates/programme_curriculum/faculty/view_a_courseslot.html index 2e73c2014..8dd37ce83 100644 --- a/FusionIIIT/templates/programme_curriculum/faculty/view_a_courseslot.html +++ b/FusionIIIT/templates/programme_curriculum/faculty/view_a_courseslot.html @@ -3,7 +3,6 @@ {% block sidetabmenu %} {% endblock %} diff --git a/FusionIIIT/templates/programme_curriculum/faculty/view_a_semester_of_a_curriculum.html b/FusionIIIT/templates/programme_curriculum/faculty/view_a_semester_of_a_curriculum.html index 5ab2fe11b..d55e68930 100644 --- a/FusionIIIT/templates/programme_curriculum/faculty/view_a_semester_of_a_curriculum.html +++ b/FusionIIIT/templates/programme_curriculum/faculty/view_a_semester_of_a_curriculum.html @@ -3,7 +3,6 @@ {% block sidetabmenu %} {% endblock %} diff --git a/FusionIIIT/templates/programme_curriculum/faculty/view_all_batches.html b/FusionIIIT/templates/programme_curriculum/faculty/view_all_batches.html index 277cd9b80..6a6744242 100644 --- a/FusionIIIT/templates/programme_curriculum/faculty/view_all_batches.html +++ b/FusionIIIT/templates/programme_curriculum/faculty/view_all_batches.html @@ -3,7 +3,6 @@ {% block sidetabmenu %} {% endblock %} diff --git a/FusionIIIT/templates/programme_curriculum/faculty/view_all_courses.html b/FusionIIIT/templates/programme_curriculum/faculty/view_all_courses.html index e0e24912e..c63bc8476 100644 --- a/FusionIIIT/templates/programme_curriculum/faculty/view_all_courses.html +++ b/FusionIIIT/templates/programme_curriculum/faculty/view_all_courses.html @@ -3,7 +3,6 @@ {% block sidetabmenu %} {% endblock %} diff --git a/FusionIIIT/templates/programme_curriculum/faculty/view_all_disciplines.html b/FusionIIIT/templates/programme_curriculum/faculty/view_all_disciplines.html index 61b583c91..22de51f2e 100644 --- a/FusionIIIT/templates/programme_curriculum/faculty/view_all_disciplines.html +++ b/FusionIIIT/templates/programme_curriculum/faculty/view_all_disciplines.html @@ -3,7 +3,6 @@ {% block sidetabmenu %} {% endblock %} diff --git a/FusionIIIT/templates/programme_curriculum/faculty/view_all_programmes.html b/FusionIIIT/templates/programme_curriculum/faculty/view_all_programmes.html index c4c66fb17..5cf42a58c 100644 --- a/FusionIIIT/templates/programme_curriculum/faculty/view_all_programmes.html +++ b/FusionIIIT/templates/programme_curriculum/faculty/view_all_programmes.html @@ -3,7 +3,6 @@ {% block sidetabmenu %} {% endblock %} diff --git a/FusionIIIT/templates/programme_curriculum/faculty/view_all_working_curriculums.html b/FusionIIIT/templates/programme_curriculum/faculty/view_all_working_curriculums.html index 15ca0f8c0..e9c7a5d45 100644 --- a/FusionIIIT/templates/programme_curriculum/faculty/view_all_working_curriculums.html +++ b/FusionIIIT/templates/programme_curriculum/faculty/view_all_working_curriculums.html @@ -3,7 +3,6 @@ {% block sidetabmenu %} {% endblock %} diff --git a/FusionIIIT/templates/programme_curriculum/faculty/view_course_proposal_forms.html b/FusionIIIT/templates/programme_curriculum/faculty/view_course_proposal_forms.html index 660fb66ab..11b90efab 100644 --- a/FusionIIIT/templates/programme_curriculum/faculty/view_course_proposal_forms.html +++ b/FusionIIIT/templates/programme_curriculum/faculty/view_course_proposal_forms.html @@ -2,7 +2,6 @@ {% block sidetabmenu %} {% endblock %} {% block content %} +{%if data %} + +

+
{{ data }}
+
+{%endif%} +{%if not data %} @@ -34,43 +56,38 @@ + - - + - + {% for courseProposal in courseProposals %} - - + - + {% empty %} @@ -82,7 +99,7 @@
@@ -93,57 +110,57 @@
- - + - + - {% for updateProposal in updateProposals %} + {% for courseProposal in updateProposals %} - - - - - + + + + {% empty %} - + {% endfor %}

Faculty Name

Faculty Name

Created As

Course Name

Course Code

Status

View

{{ courseProposal.faculty_name }}{{ courseProposal.faculty_code }}{{ courseProposal.uploader }} - {{ courseProposal.designation }} {{ courseProposal.name }} {{ courseProposal.code }} - {% if courseProposal.status == 0 %} - Pending - {% endif %} - {% if courseProposal.status == 1 %} - Forwarded to Dean - {% endif %} - {% if courseProposal.status == 2 %} - Rejected by HOD - {% endif %} - {% if courseProposal.status == 3 %} - Approved by Dean - {% endif %} - {% if courseProposal.status == 4 %} - Rejected by Dean - {% endif %} - {% if courseProposal.status == 6%} - Course Added! - {% endif %} - + +
VIEW
+ +
+
+
Submit
+ +

Faculty Name

Faculty Name

Created As

Course Name

Course Code

Status

View

{{ updateProposal.faculty_name }}{{ updateProposal.faculty_code }}{{ updateProposal.name }}{{ updateProposal.code }} - {% if updateProposal.status == 0 %} - Pending - {% endif %} - {% if updateProposal.status == 1 %} - Forwarded to Dean - {% endif %} - {% if updateProposal.status == 2 %} - Rejected by HOD - {% endif %} - {% if updateProposal.status == 3 %} - Approved by Dean - {% endif %} - {% if updateProposal.status == 4 %} - Rejected by Dean - {% endif %} - {% if updateProposal.status == 6%} - Course Added! - {% endif %} - + {{ courseProposal.uploader }} - {{ courseProposal.designation }}{{ courseProposal.name }}{{ courseProposal.code }} +
VIEW
+ +
+
+
Submit
+ +
No Courses Proposals Submitted
No Courses Proposals Submitted
+{%endif%} + + + {% endblock %} {% block rightcontent %} +{%if not data %} +

ADD COURSE PROPOSAL FORM

+{%endif%} {% endblock %} \ No newline at end of file diff --git a/FusionIIIT/templates/programme_curriculum/faculty/view_curriculums_of_a_programme.html b/FusionIIIT/templates/programme_curriculum/faculty/view_curriculums_of_a_programme.html index 1ffc54fba..75f744e83 100644 --- a/FusionIIIT/templates/programme_curriculum/faculty/view_curriculums_of_a_programme.html +++ b/FusionIIIT/templates/programme_curriculum/faculty/view_curriculums_of_a_programme.html @@ -3,7 +3,6 @@ {% block sidetabmenu %}
{% endblock %} diff --git a/FusionIIIT/templates/programme_curriculum/faculty/view_file.html b/FusionIIIT/templates/programme_curriculum/faculty/view_file.html new file mode 100644 index 000000000..f22932408 --- /dev/null +++ b/FusionIIIT/templates/programme_curriculum/faculty/view_file.html @@ -0,0 +1,369 @@ +{% extends 'programme_curriculum/common.html' %} + +{% block sidetabmenu %} + +{% endblock %} +{% block content %} + + + +
+ + + + + + + + + + {% csrf_token %} + + +
+
+
Subject- {{proposal.subject}}
+ +
+
Description: {{proposal.description}}
+
+ {% for t in trackings %} +
+ +
+
+ + Sent By:  {{t.current_id}} - {{t.current_design}} + + + +
+ Received By:  {{t.receive_id}} - {{t.receive_design}} +
+ +
+
+                                    {% if t.remarks %}
+                                        Remarks:  {{t.remarks}}
+                                    {% else %}
+                                        No Remarks
+                                    {% endif %}
+
+                                 
+
+
+
+
+ {% endfor %} +
+ {% csrf_token %} + {% if form.non_field_errors %} +
+
We had some issues
+ {% for error in form.non_field_errors %} +
    +
  • {{ error }}
  • +
+ {% endfor %} +
+ {% endif %} +
+ {% if form.current_id.errors or form.file_id.errors or form.current_design.errors %} +
+

{{ form.current_id.errors }}

+

{{ form.file_id.errors }}

+

{{ form.current_design.errors }}

+

{{ form.receive_id.errors }}

+

{{ form.receive_design.errors }}

+

{{ form.remarks.errors }}

+
+ {% endif %} +
+ + +
+ +
{{ file_info }}
+ +
+
+ +
{{ file_sucess }}
+ +
+ + {{ form.current_id }} +
+ + {{ form.current_design }} +
+
+ + {{ form.disciplines }} +
+ + +
+
+
+
+ + + +
+
+
+ + + + + + + + + {% if course.disciplines.all %} + + + + {% endif %} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Course Proposal Form By -> {{ proposal.uploader }} - {{proposal.designation}}

+

{{ proposal.code }} - {{ proposal.name }}

+
Discipline + {% for discipline in proposal.disciplines.all %} +

{{ discipline }}

+ {% endfor %} + +
Course Code{{ proposal.code }}
Course Name{{ proposal.name }}
Contact hours
Lecture{{ proposal.lecture_hours }}hrs
Tutorial{{ proposal.tutorial_hours }}hrs
Lab{{ proposal.pratical_hours }}hrs
Discussion{{ proposal.discussion_hours }}hrs
Project{{ proposal.project_hours }}hrs
Credits{{ proposal.credit }}
Pre-requisits
Info{{ proposal.pre_requisits|linebreaks }}
Courses +

+ {% for p_proposal in proposal.pre_requisit_courses.all %} + {{ p_proposal }},
+ {% endfor %} +

+
Syllabus{{ proposal.syllabus|linebreaks }}
Evaluation Schema
Quiz 1{{ proposal.percent_quiz_1 }} %
Mid-Sem Exam{{ proposal.percent_midsem }} %
Quiz 2{{ proposal.percent_quiz_2 }} %
End-Sem Exam{{ proposal.percent_endsem }} %
Project{{ proposal.percent_project }} %
Lab Evaluation{{ proposal.percent_lab_evaluation }} %
Course Attendance{{ proposal.percent_course_attendance }} %
References & Books{{ proposal.ref_books|linebreaks }}
+
+
+
+ + + + + + + + +{% endblock %} + diff --git a/FusionIIIT/templates/programme_curriculum/faculty/view_semesters_of_a_curriculum.html b/FusionIIIT/templates/programme_curriculum/faculty/view_semesters_of_a_curriculum.html index 72753d692..18b6e06f6 100644 --- a/FusionIIIT/templates/programme_curriculum/faculty/view_semesters_of_a_curriculum.html +++ b/FusionIIIT/templates/programme_curriculum/faculty/view_semesters_of_a_curriculum.html @@ -3,7 +3,6 @@ {% block sidetabmenu %} {% endblock %}