From 3505754a259dc5f7a544abf5d38cd5f89a3e1aeb Mon Sep 17 00:00:00 2001 From: Prajwal Tidke Date: Thu, 7 Feb 2019 14:12:28 +0530 Subject: [PATCH 1/3] Office of HOD added feature to HOD module --- .../applications/office_module/admin.py | 9 +- FusionIIIT/applications/office_module/apps.py | 2 +- .../office_module/custom_filers.py | 5 + .../applications/office_module/forms.py | 2 - .../applications/office_module/models.py | 68 ++-- .../office_module/models_office_students.py | 138 ++++---- FusionIIIT/applications/office_module/urls.py | 6 +- .../applications/office_module/views.py | 79 ++++- .../office_module/views_office_students.py | 324 +++++++++--------- .../officeModule/officeOfHOD/officeOfHOD.html | 45 ++- .../officeModule/officeOfHOD/tab1.html | 82 +++-- .../officeOfHOD/tab1content1.html | 108 +++--- .../officeOfHOD/tab1content2.html | 69 +++- .../officeOfHOD/tab1content3.html | 118 +++++++ .../officeOfHOD/tab1content4.html | 149 ++++++++ .../officeOfHOD/tab1content5.html | 0 .../officeModule/officeOfHOD/tab2.html | 36 +- .../officeOfHOD/tab2content2.html | 92 +++++ .../officeOfHOD/tab2content3.html | 174 ++++++++++ .../officeOfHOD/tab2content4.html | 68 ++++ .../officeOfHOD/tab3content1.html | 52 ++- .../officeOfHOD/tab4content1.html | 25 +- .../officeOfHOD/tab4content2.html | 7 +- .../officeOfHOD/tab4content3.html | 56 ++- .../officeModule/officeOfHOD/tab5.html | 7 + .../officeOfHOD/tab5content1.html | 100 ++++++ .../officeOfHOD/work/tab1content3.html | 8 +- 27 files changed, 1384 insertions(+), 445 deletions(-) create mode 100644 FusionIIIT/applications/office_module/custom_filers.py create mode 100644 FusionIIIT/templates/officeModule/officeOfHOD/tab1content3.html create mode 100644 FusionIIIT/templates/officeModule/officeOfHOD/tab1content4.html create mode 100644 FusionIIIT/templates/officeModule/officeOfHOD/tab1content5.html create mode 100644 FusionIIIT/templates/officeModule/officeOfHOD/tab2content2.html create mode 100644 FusionIIIT/templates/officeModule/officeOfHOD/tab2content3.html create mode 100644 FusionIIIT/templates/officeModule/officeOfHOD/tab2content4.html create mode 100644 FusionIIIT/templates/officeModule/officeOfHOD/tab5.html create mode 100644 FusionIIIT/templates/officeModule/officeOfHOD/tab5content1.html diff --git a/FusionIIIT/applications/office_module/admin.py b/FusionIIIT/applications/office_module/admin.py index ee6be80ec..bbb24aa07 100644 --- a/FusionIIIT/applications/office_module/admin.py +++ b/FusionIIIT/applications/office_module/admin.py @@ -1,5 +1,4 @@ from django.contrib import admin - from .models import * admin.site.register(Requisitions) @@ -15,3 +14,11 @@ admin.site.register(registrar_establishment_section) admin.site.register(registrar_director_section) admin.site.register(Assistantship) + +admin.site.register(LTC) +admin.site.register(CPDA) +admin.site.register(Auto_fair_claim) +admin.site.register(Teaching_credits1) +admin.site.register(Assigned_Teaching_credits) +admin.site.register(Lab1) +admin.site.register(TA_assign) diff --git a/FusionIIIT/applications/office_module/apps.py b/FusionIIIT/applications/office_module/apps.py index 3712941b0..4fbaa4a93 100644 --- a/FusionIIIT/applications/office_module/apps.py +++ b/FusionIIIT/applications/office_module/apps.py @@ -2,4 +2,4 @@ class OfficeModuleConfig(AppConfig): - name = 'applications.office_module' + name = 'applications.office_module' \ No newline at end of file diff --git a/FusionIIIT/applications/office_module/custom_filers.py b/FusionIIIT/applications/office_module/custom_filers.py new file mode 100644 index 000000000..16db159e5 --- /dev/null +++ b/FusionIIIT/applications/office_module/custom_filers.py @@ -0,0 +1,5 @@ +from django import template + +@register.filter +def strip_double_quotes(quoted_string): + return quoted_string.replace('"', '') \ No newline at end of file diff --git a/FusionIIIT/applications/office_module/forms.py b/FusionIIIT/applications/office_module/forms.py index 6e039ed9b..cd98e55f6 100644 --- a/FusionIIIT/applications/office_module/forms.py +++ b/FusionIIIT/applications/office_module/forms.py @@ -1,8 +1,6 @@ from django import forms - from .models import * - class Requisitionform(forms.ModelForm): class Meta: model=Requisitions diff --git a/FusionIIIT/applications/office_module/models.py b/FusionIIIT/applications/office_module/models.py index cc92cacb1..06dab50bb 100644 --- a/FusionIIIT/applications/office_module/models.py +++ b/FusionIIIT/applications/office_module/models.py @@ -1,19 +1,14 @@ -import datetime - from django.db import models - -from applications.academic_information.models import (Course, Grades, - Instructor, Meeting, Spi, - Student) -from applications.academic_procedures.models import Thesis +import datetime +from datetime import datetime +from applications.academic_information.models import Student, Grades, Meeting +from applications.globals.models import Staff, Faculty, ExtraInfo, Designation,HoldsDesignation, DepartmentInfo from applications.filetracking.models import Tracking -from applications.globals.models import (DepartmentInfo, Designation, - ExtraInfo, Faculty, HoldsDesignation, - Staff) from applications.leave.models import Leave - from .models_office_students import * +from applications.academic_information.models import Student, Instructor, Spi, Grades, Course +from applications.academic_procedures.models import Thesis class Constants: DAY_CHOICES = ( @@ -102,7 +97,7 @@ class Constants: ('rail', 'RAIL') ) - TICK_TYPE = ( + PHD_COURSES = ( ('Computer Graphics', 'Computer Graphics'), ('Machine Learning', 'Machine Learning'), ('Image Processing','Image Processing'), @@ -162,6 +157,14 @@ class Constants: ) +FEST_TYPE = ( + ('0', "Abhikalpan"), + ('1', "Gusto"), + ('2', "Tarang"), + ('3', "Inter-IIIT"), + +) + class Assistantship(models.Model): @@ -492,12 +495,12 @@ class Teaching_credits1(models.Model): name = models.CharField(max_length=100) programme = models.CharField(max_length=100) branch = models.CharField(max_length=100) - course1 = models.CharField(choices=Constants.TICK_TYPE, - max_length=100, default='NO') - course2 = models.CharField(choices=Constants.TICK_TYPE, - max_length=100, default='NO') - course3 = models.CharField(choices=Constants.TICK_TYPE, - max_length=100, default='NO') + course1 = models.CharField(choices=Constants.PHD_COURSES, + max_length=100) + course2 = models.CharField(choices=Constants.PHD_COURSES, + max_length=100) + course3 = models.CharField(choices=Constants.PHD_COURSES, + max_length=100) tag = models.IntegerField(default=0) class Meta: db_table = 'Teaching_credits1' @@ -507,29 +510,40 @@ def __str__(self): class Assigned_Teaching_credits(models.Model): roll_no = models.ForeignKey(Teaching_credits1, on_delete=models.CASCADE) - assigned_course = models.CharField(max_length=100,default='NO') + assigned_course = models.CharField(max_length=100) class Meta: db_table = 'Assigned_Teaching_credits' + def __str__(self): + return str(self.roll_no) -class Lab(models.Model): - lab = models.CharField(max_length=10) +class Lab1(models.Model): + lab_name = models.CharField(max_length=50, primary_key=True) #Lab name lab_instructor = models.CharField(max_length=30) day = models.CharField(max_length=10,choices=Constants.DAY_CHOICES, default='Monday') - s_time = models.CharField(max_length=6, default='0:00') - e_time = models.CharField(max_length=6, default='0:00') + s_time = models.TimeField(default ='10:00:00') + e_time = models.TimeField(default ='12:00:00') + + #e_time = models.DateTimeField(max_length=6, default='0:00') class Meta: db_table = 'Lab' def __str__(self): - return str(self.lab) + return str(self.lab_name) class TA_assign(models.Model): - roll_no = models.ForeignKey(ExtraInfo, on_delete=models.CASCADE, related_name='TA_id') - lab = models.ForeignKey(Lab, on_delete=models.CASCADE) + #roll_no = models.ForeignKey(ExtraInfo, on_delete=models.CASCADE, related_name='TA_id') + lab_name = models.ForeignKey(Lab1, on_delete=models.CASCADE) + roll_no = models.IntegerField(primary_key=True) + name = models.CharField(max_length=100, default ='student_name') + + #lab_name = models.CharField(max_length=50, primary_key=True) #Lab name balance = models.IntegerField(default=2) + start_date = models.DateField() + end_date = models.DateTimeField() + class Meta: db_table = 'TA_assign' def __str__(self): - return str(self.id) + return str(self.roll_no) diff --git a/FusionIIIT/applications/office_module/models_office_students.py b/FusionIIIT/applications/office_module/models_office_students.py index a8fc14313..f8024b2da 100644 --- a/FusionIIIT/applications/office_module/models_office_students.py +++ b/FusionIIIT/applications/office_module/models_office_students.py @@ -1,69 +1,69 @@ -import datetime - -from django.db import models -from django.utils.translation import gettext as _ - -from applications.globals.models import ExtraInfo - - -class Constants: - - APPROVAL_TYPE = ( - ('APPROVED', 'Approved'), - ('PENDING', 'Pending'), - ) - - HALL_NO = ( - ('HALL-1','hall-1'), - ('HALL-3','hall-3'), - ('HALL-4','hall-4'), - ) - - CLUB_TYPE = ( - ('TECHNICAL', 'technical'), - ('CULTURAL', 'cultural'), - ('SPORTS', 'sports'), - ) - - - -class DeanS_approve_committes(models.Model): - id = models.AutoField(primary_key=True) - convener=models.ForeignKey(ExtraInfo, on_delete=models.CASCADE ,related_name='convener') - faculty_incharge=models.ForeignKey(ExtraInfo, on_delete=models.CASCADE ,related_name='facultyincharge') - date_approved=models.DateField(null=True, blank=True) - description=models.CharField(max_length=200) - - def __str__(self): - return self.convener + '-' + self.dateofapproval - -class hostel_guestroom_approval(models.Model): - id = models.AutoField(primary_key=True) - intender=models.ForeignKey(ExtraInfo, on_delete=models.CASCADE) - hall_no=models.CharField(max_length=5, choices=Constants.HALL_NO ,default='') - arrival_date=models.DateField(_("Date"), default=datetime.date.today) - departure_date=models.DateField(null=True, blank=True) - status=models.CharField(max_length=20, choices=Constants.APPROVAL_TYPE ,default='Pending') - - def __str__(self): - return self.hall_no + '-' + self.status - - -class hostel_allotment(models.Model): - id = models.AutoField(primary_key=True) - hall_no=models.CharField(max_length=5, choices=Constants.HALL_NO ,default='') - allotment_file=models.FileField(upload_to='uploads/') - description=models.CharField(max_length=200) - - def __str__(self): - return '{} - {}'.format(self.hall_no, self.allotment_file) - -class Budget(models.Model): - id=models.AutoField(primary_key=True) - budget_type=models.CharField(max_length=20) - club_type=models.CharField(max_length=20, choices=Constants.CLUB_TYPE, default='') - budget_allocated=models.PositiveIntegerField(default=0) - budget_expenditure=models.PositiveIntegerField(default=0) - budget_available=models.PositiveIntegerField(default=0) - # def __str__(self): - # return self.budget_type + '-' + self.budget_allocated +import datetime + +from django.db import models +from django.utils.translation import gettext as _ +from applications.globals.models import ExtraInfo + + + +class Constants: + + APPROVAL_TYPE = ( + ('APPROVED', 'Approved'), + ('PENDING', 'Pending'), + ) + + HALL_NO = ( + ('HALL-1','hall-1'), + ('HALL-3','hall-3'), + ('HALL-4','hall-4'), + ) + + CLUB_TYPE = ( + ('TECHNICAL', 'technical'), + ('CULTURAL', 'cultural'), + ('SPORTS', 'sports'), + ) + + + +class DeanS_approve_committes(models.Model): + id = models.AutoField(primary_key=True) + convener=models.ForeignKey(ExtraInfo, on_delete=models.CASCADE ,related_name='convener') + faculty_incharge=models.ForeignKey(ExtraInfo, on_delete=models.CASCADE ,related_name='facultyincharge') + date_approved=models.DateField(null=True, blank=True) + description=models.CharField(max_length=200) + + def __str__(self): + return self.convener + '-' + self.dateofapproval + +class hostel_guestroom_approval(models.Model): + id = models.AutoField(primary_key=True) + intender=models.ForeignKey(ExtraInfo, on_delete=models.CASCADE) + hall_no=models.CharField(max_length=5, choices=Constants.HALL_NO ,default='') + arrival_date=models.DateField(_("Date"), default=datetime.date.today) + departure_date=models.DateField(null=True, blank=True) + status=models.CharField(max_length=20, choices=Constants.APPROVAL_TYPE ,default='Pending') + + def __str__(self): + return self.hall_no + '-' + self.status + + +class hostel_allotment(models.Model): + id = models.AutoField(primary_key=True) + hall_no=models.CharField(max_length=5, choices=Constants.HALL_NO ,default='') + allotment_file=models.FileField(upload_to='uploads/') + description=models.CharField(max_length=200) + + def __str__(self): + return '{} - {}'.format(self.hall_no, self.allotment_file) + +class Budget(models.Model): + id=models.AutoField(primary_key=True) + budget_type=models.CharField(max_length=20) + club_type=models.CharField(max_length=20, choices=Constants.CLUB_TYPE, default='') + budget_allocated=models.PositiveIntegerField(default=0) + budget_expenditure=models.PositiveIntegerField(default=0) + budget_available=models.PositiveIntegerField(default=0) + # def __str__(self): + # return self.budget_type + '-' + self.budget_allocated diff --git a/FusionIIIT/applications/office_module/urls.py b/FusionIIIT/applications/office_module/urls.py index e0888271b..90fd5406d 100644 --- a/FusionIIIT/applications/office_module/urls.py +++ b/FusionIIIT/applications/office_module/urls.py @@ -1,6 +1,5 @@ from django.conf.urls import url from django.views.decorators.csrf import csrf_exempt - from . import views app_name = 'office' @@ -35,6 +34,11 @@ url(r'^officeOfHOD/$', views.officeOfHOD, name='officeOfHOD'), url(r'^officeOfHOD/submit/$',views.teaching_form,name='teaching_form'), url(r'^officeOfHOD/work/$',views.hod_work,name='hod_work'), + url(r'^officeOfHOD/lab/$',views.lab_details,name='lab_details'), + url(r'^officeOfHOD/assign_ta/$',views.assign_ta,name='assign_ta'), + + + url(r'^genericModule/', views.genericModule, name='genericModule'), url(r'^deleteitem/(?P[0-9]+)',views.delete_item, name='delete_item'), url(r'^deletevendor/(?P[0-9]+)',views.delete_vendor, name='delete_vendor'), diff --git a/FusionIIIT/applications/office_module/views.py b/FusionIIIT/applications/office_module/views.py index 79c98b0bc..632edb6f0 100644 --- a/FusionIIIT/applications/office_module/views.py +++ b/FusionIIIT/applications/office_module/views.py @@ -1,23 +1,21 @@ -import datetime -from datetime import date, datetime - -from django.contrib.auth import authenticate, login +from .models import Project_Reallocation,Project_Closure,Project_Extension,Project_Registration +from django.shortcuts import render from django.contrib.auth.decorators import login_required -from django.db.models import Q +from applications.globals.models import ExtraInfo, Designation, User, HoldsDesignation +from applications.scholarships.models import Mcm +from applications.academic_procedures.models import Thesis +from applications.globals.models import HoldsDesignation from django.http import HttpResponse, HttpResponseRedirect -from django.shortcuts import get_object_or_404, render +from .models import * +import datetime from django.utils import timezone - -from applications.academic_procedures.models import Thesis -from applications.globals.models import (Designation, ExtraInfo, - HoldsDesignation, User) -from applications.scholarships.models import Mcm - from .forms import * -from .models import * -from .models import (Project_Closure, Project_Extension, Project_Reallocation, - Project_Registration) +from django.db.models import Q from .views_office_students import * +from django.shortcuts import render +from datetime import date, datetime +from django.shortcuts import get_object_or_404, render +from django.contrib.auth import authenticate, login def officeOfDeanRSPC(request): @@ -258,8 +256,11 @@ def upload(request): @login_required(login_url='/accounts/login') def officeOfHOD(request): pro = Teaching_credits1.objects.filter(tag=0) + #pro = Teaching_credits1.objects.all() pro1 = Assigned_Teaching_credits.objects.all() - context = {'pro':pro,'pro1':pro1} + lab = Lab1.objects.all() + assign_ta = TA_assign.objects.all() + context = {'pro':pro,'pro1':pro1,'lab':lab, 'assign_ta':assign_ta} return render(request, "officeModule/officeOfHOD/officeOfHOD.html", context) @@ -542,28 +543,70 @@ def teaching_form(request): course1=request.POST.get('course1') course2=request.POST.get('course2') course3=request.POST.get('course3') + print(course1) request_obj = Teaching_credits1(roll_no=roll_no,name=name, programme=programme, branch=branch, course1=course1, course2=course2, course3=course3) print("===================================================================") request_obj.save() context={} - return render(request,"officeModule/officeOfHOD/tab4content4.html",context) + #return HttpResponseRedirect(request,"officeModule/officeOfHOD/",context) + return HttpResponseRedirect('/office/officeOfHOD/') + @login_required def hod_work(request): roll_no=request.POST.get('roll_no') tc = Teaching_credits1.objects.get(roll_no=roll_no) assigned_course=request.POST.get('assigned_course') + print('this is course ') + print(assigned_course) request_obj1 = Assigned_Teaching_credits(roll_no=tc,assigned_course=assigned_course) request_obj1.save() tc.tag=1 tc.save() context={} - return render(request,"officeModule/officeOfHOD/tab4content4.html",context) + #return render(request,"officeModule/officeOfHOD/tab4content4.html",context) + return HttpResponseRedirect('/office/officeOfHOD/') """return HttpResponseRedirect('')""" """return render(request,"officeModule/officeOfHOD/tab4content1.html",context)""" +@login_required +def lab_details(request): + lab_name=request.POST.get('lab_name') + lab_instructor=request.POST.get('lab_instructor') + day=request.POST.get('day') + s_time=request.POST.get('s_time') + e_time=request.POST.get('e_time') + request_obj = Lab(lab_name=lab_name, lab_instructor=lab_instructor, day=day, s_time=s_time, e_time=e_time) + print("===================================================================") + request_obj.save() + context={} + #return HttpResponseRedirect(request,"officeModule/officeOfHOD/",context) + return HttpResponseRedirect('/office/officeOfHOD/') + + +def remove2(x): + return x[1:-1] + + +@login_required +def assign_ta(request): + roll_no=request.POST.get('roll_no') + lab_name=request.POST.get('lab_name') + #lname = lab_name.replace('\"','') + #lname = lab_name.lstrip('\"') + #lname = remove2(lab_name) + #print('this is',lname) + name=request.POST.get('name') + start_date=request.POST.get('start_date') + end_date=request.POST.get('end_date') + request_obj = TA_assign(roll_no=roll_no, lab_name=lab_name, name=name, start_date=start_date, end_date=end_date) + print("===================================================================") + request_obj.save() + context={} + #return HttpResponseRedirect(request,"officeModule/officeOfHOD/",context) + return HttpResponseRedirect('/office/officeOfHOD/') def genericModule(request): diff --git a/FusionIIIT/applications/office_module/views_office_students.py b/FusionIIIT/applications/office_module/views_office_students.py index 3c7bf3491..95ea021bc 100644 --- a/FusionIIIT/applications/office_module/views_office_students.py +++ b/FusionIIIT/applications/office_module/views_office_students.py @@ -1,164 +1,160 @@ -import json - -from django.contrib.auth.decorators import login_required -from django.http import HttpResponse, HttpResponseRedirect -from django.shortcuts import get_object_or_404, render - -from applications.academic_information.models import Meeting -from applications.globals.models import * -from applications.gymkhana.models import Club_budget, Club_info - -from .models import Budget, Constants, hostel_allotment - - -@login_required -def officeOfDeanStudents(request): - budget_app= Club_budget.objects.all().filter(status='open'); - past_budget=Club_budget.objects.all().exclude(status='open'); - minutes=Meeting.objects.all().filter(minutes_file=""); - final_minutes=Meeting.objects.all().exclude(minutes_file=""); - hall_allotment=hostel_allotment.objects.all() - clubNew= Club_info.objects.all().filter(status='open') - club =Club_info.objects.all().exclude(status='open') - budgets=Club_info.objects.all().filter(status='confirmed') - approved_budgets=Club_budget.objects.all().filter(status='confirmed') - budget_allotment= Club_info.objects.all().filter(status='confirmed' , alloted_budget=0) - budget_alloted = Club_info.objects.all().exclude(alloted_budget=0) - designation = HoldsDesignation.objects.all().filter(working=request.user) - desig = list(HoldsDesignation.objects.all().filter(working = request.user).values_list('designation')) - b = [i for sub in desig for i in sub] - roll_=[] - for i in b : - name_ = get_object_or_404(Designation, id = i) - roll_.append(str(name_.name)) - - all_designation=[] - for i in designation: - all_designation.append(str(i.designation)) - HALL_NO = (('HALL-1','hall-1'),('HALL-3','hall-3'),('HALL-4','hall-4')) - hall=[] - hostel_file= hostel_allotment.objects.all() - for i in HALL_NO: - if(str(i[1]) not in [j.hall_no for j in hostel_file]): - hall.append(str(i[1])) - print(roll_) - context = {'meetingMinutes':minutes, - 'final_minutes':final_minutes, - 'hall': hall, - 'hall_allotment':hall_allotment, - 'budget_app':budget_app, - 'p_budget':past_budget, - 'clubNew':clubNew, - 'club':club, - 'budgets':budgets, - 'approved_budgets':approved_budgets, - 'budget_allotment':budget_allotment, - 'budget_alloted' : budget_alloted, - 'all_designation' : roll_, - } - return render(request, "officeModule/officeOfDeanStudents/officeOfDeanStudents.html", context) - -@login_required -def holdingMeeting(request): - title= request.POST.get('title') - date = request.POST.get('date') - Time = request.POST.get('time') - Venue = request.POST.get('venue') - Agenda = request.POST.get('Agenda') - p=Meeting(title=title,venue=Venue,date=date,time=Time,agenda=Agenda); - p.save() - return HttpResponse('ll') - -@login_required -def meetingMinutes(request): - file=request.FILES['minutes_file'] - id=request.POST.get('id') - b=Meeting.objects.get(pk=id) - b.minutes_file=file - b.save() - return HttpResponseRedirect('/office/officeOfDeanStudents') - -@login_required -def hostelRoomAllotment(request): - file=request.FILES['hostel_file'] - hall_no=request.POST.get('hall_no') - p=hostel_allotment(allotment_file=file,hall_no=hall_no) - p.save() - return HttpResponseRedirect('/office/officeOfDeanStudents') - -@login_required -def budgetApproval(request): - id_r=request.POST.getlist('check') - remark=request.POST.getlist('remark') - for i in range(len(id_r)): - a=Club_budget.objects.get(id=id_r[i]); - a.status='confirmed' - a.remarks=request.POST.get(id_r[i]) - budget= request.POST.get('amount '+ id_r[i]) - spentBudget=a.club.spent_budget - availBudget= a.club.avail_budget - b=Club_info.objects.get(club_name = a.club.club_name ) - b.spent_budget= (spentBudget+int(budget)) - b.avail_budget= (availBudget- int(budget)) - a.save() - b.save() - return HttpResponseRedirect('/office/officeOfDeanStudents') - -@login_required -def budgetRejection(request): - id_r=request.POST.getlist('check') - remark=request.POST.getlist('remark') - for i in range(len(id_r)): - a=Club_budget.objects.get(id=id_r[i]); - a.status='rejected' - a.remarks=request.POST.get(id_r[i]) - a.save() - return HttpResponseRedirect('/office/officeOfDeanStudents') - - -@login_required -def clubApproval(request): - id_r=request.POST.getlist('check') - for i in range(len(id_r)): - a=Club_info.objects.get(pk=id_r[i]) - co_ordinator= a.co_ordinator.id.user - co_co = a.co_coordinator.id.user - a.status='confirmed' - a.save() - designation = get_object_or_404(Designation, name="co-ordinator") - designation1 = get_object_or_404(Designation, name="co co-ordinator") - HoldsDesig= HoldsDesignation(user=co_ordinator,working=co_ordinator,designation=designation) - HoldsDesig.save() - HoldsDesig = HoldsDesignation( user= co_co, working= co_co, designation=designation1) - HoldsDesig.save() - return HttpResponseRedirect('/office/officeOfDeanStudents') - -@login_required -def clubRejection(request): - id_r=request.POST.getlist('check') - for i in range(len(id_r)): - a=Club_info.objects.get(pk=id_r[i]); - a.status='rejected' - a.save() - return HttpResponseRedirect('/office/officeOfDeanStudents') - -@login_required -def budgetAllot(request): - id_r=request.POST.get('id') - budget= request.POST.get('budget') - a= Club_info.objects.get(pk=id_r) - a.alloted_budget=int(budget) - a.avail_budget= int(budget) - a.save() - return HttpResponseRedirect('/office/officeOfDeanStudents') - -@login_required -def budgetAllotEdit(request): - id_r=request.POST.get('id') - budget= request.POST.get('budget') - a= Club_info.objects.get(pk=id_r) - a.alloted_budget=int(budget) - a.avail_budget= int(budget) - a.spent_budget= int(0) - a.save() - return HttpResponseRedirect('/office/officeOfDeanStudents') +from django.shortcuts import render , get_object_or_404 +from django.http import HttpResponse , HttpResponseRedirect +from applications.academic_information.models import Meeting +from .models import Constants,hostel_allotment,Budget +from applications.gymkhana.models import Club_budget,Club_info +from applications.globals.models import * +import json +from django.contrib.auth.decorators import login_required + +@login_required +def officeOfDeanStudents(request): + budget_app= Club_budget.objects.all().filter(status='open'); + past_budget=Club_budget.objects.all().exclude(status='open'); + minutes=Meeting.objects.all().filter(minutes_file=""); + final_minutes=Meeting.objects.all().exclude(minutes_file=""); + hall_allotment=hostel_allotment.objects.all() + clubNew= Club_info.objects.all().filter(status='open') + club =Club_info.objects.all().exclude(status='open') + budgets=Club_info.objects.all().filter(status='confirmed') + approved_budgets=Club_budget.objects.all().filter(status='confirmed') + budget_allotment= Club_info.objects.all().filter(status='confirmed' , alloted_budget=0) + budget_alloted = Club_info.objects.all().exclude(alloted_budget=0) + designation = HoldsDesignation.objects.all().filter(working=request.user) + desig = list(HoldsDesignation.objects.all().filter(working = request.user).values_list('designation')) + b = [i for sub in desig for i in sub] + roll_=[] + for i in b : + name_ = get_object_or_404(Designation, id = i) + roll_.append(str(name_.name)) + + all_designation=[] + for i in designation: + all_designation.append(str(i.designation)) + HALL_NO = (('HALL-1','hall-1'),('HALL-3','hall-3'),('HALL-4','hall-4')) + hall=[] + hostel_file= hostel_allotment.objects.all() + for i in HALL_NO: + if(str(i[1]) not in [j.hall_no for j in hostel_file]): + hall.append(str(i[1])) + print(roll_) + context = {'meetingMinutes':minutes, + 'final_minutes':final_minutes, + 'hall': hall, + 'hall_allotment':hall_allotment, + 'budget_app':budget_app, + 'p_budget':past_budget, + 'clubNew':clubNew, + 'club':club, + 'budgets':budgets, + 'approved_budgets':approved_budgets, + 'budget_allotment':budget_allotment, + 'budget_alloted' : budget_alloted, + 'all_designation' : roll_, + } + return render(request, "officeModule/officeOfDeanStudents/officeOfDeanStudents.html", context) + +@login_required +def holdingMeeting(request): + title= request.POST.get('title') + date = request.POST.get('date') + Time = request.POST.get('time') + Venue = request.POST.get('venue') + Agenda = request.POST.get('Agenda') + p=Meeting(title=title,venue=Venue,date=date,time=Time,agenda=Agenda); + p.save() + return HttpResponse('ll') + +@login_required +def meetingMinutes(request): + file=request.FILES['minutes_file'] + id=request.POST.get('id') + b=Meeting.objects.get(pk=id) + b.minutes_file=file + b.save() + return HttpResponseRedirect('/office/officeOfDeanStudents') + +@login_required +def hostelRoomAllotment(request): + file=request.FILES['hostel_file'] + hall_no=request.POST.get('hall_no') + p=hostel_allotment(allotment_file=file,hall_no=hall_no) + p.save() + return HttpResponseRedirect('/office/officeOfDeanStudents') + +@login_required +def budgetApproval(request): + id_r=request.POST.getlist('check') + remark=request.POST.getlist('remark') + for i in range(len(id_r)): + a=Club_budget.objects.get(id=id_r[i]); + a.status='confirmed' + a.remarks=request.POST.get(id_r[i]) + budget= request.POST.get('amount '+ id_r[i]) + spentBudget=a.club.spent_budget + availBudget= a.club.avail_budget + b=Club_info.objects.get(club_name = a.club.club_name ) + b.spent_budget= (spentBudget+int(budget)) + b.avail_budget= (availBudget- int(budget)) + a.save() + b.save() + return HttpResponseRedirect('/office/officeOfDeanStudents') + +@login_required +def budgetRejection(request): + id_r=request.POST.getlist('check') + remark=request.POST.getlist('remark') + for i in range(len(id_r)): + a=Club_budget.objects.get(id=id_r[i]); + a.status='rejected' + a.remarks=request.POST.get(id_r[i]) + a.save() + return HttpResponseRedirect('/office/officeOfDeanStudents') + + +@login_required +def clubApproval(request): + id_r=request.POST.getlist('check') + for i in range(len(id_r)): + a=Club_info.objects.get(pk=id_r[i]) + co_ordinator= a.co_ordinator.id.user + co_co = a.co_coordinator.id.user + a.status='confirmed' + a.save() + designation = get_object_or_404(Designation, name="co-ordinator") + designation1 = get_object_or_404(Designation, name="co co-ordinator") + HoldsDesig= HoldsDesignation(user=co_ordinator,working=co_ordinator,designation=designation) + HoldsDesig.save() + HoldsDesig = HoldsDesignation( user= co_co, working= co_co, designation=designation1) + HoldsDesig.save() + return HttpResponseRedirect('/office/officeOfDeanStudents') + +@login_required +def clubRejection(request): + id_r=request.POST.getlist('check') + for i in range(len(id_r)): + a=Club_info.objects.get(pk=id_r[i]); + a.status='rejected' + a.save() + return HttpResponseRedirect('/office/officeOfDeanStudents') + +@login_required +def budgetAllot(request): + id_r=request.POST.get('id') + budget= request.POST.get('budget') + a= Club_info.objects.get(pk=id_r) + a.alloted_budget=int(budget) + a.avail_budget= int(budget) + a.save() + return HttpResponseRedirect('/office/officeOfDeanStudents') + +@login_required +def budgetAllotEdit(request): + id_r=request.POST.get('id') + budget= request.POST.get('budget') + a= Club_info.objects.get(pk=id_r) + a.alloted_budget=int(budget) + a.avail_budget= int(budget) + a.spent_budget= int(0) + a.save() + return HttpResponseRedirect('/office/officeOfDeanStudents') diff --git a/FusionIIIT/templates/officeModule/officeOfHOD/officeOfHOD.html b/FusionIIIT/templates/officeModule/officeOfHOD/officeOfHOD.html index 9a1a96aac..7aa241482 100644 --- a/FusionIIIT/templates/officeModule/officeOfHOD/officeOfHOD.html +++ b/FusionIIIT/templates/officeModule/officeOfHOD/officeOfHOD.html @@ -40,10 +40,10 @@ {% comment %}The Tab-Menu ends here!{% endcomment %} @@ -69,17 +80,17 @@ The central-rail segment starts here! {% endcomment %}
- + {% comment %}The Publications starts here!{% endcomment %}
{% block form2 %} - {% include 'officeModule/officeOfHOD/tab2.html' %} + {% include 'officeModule/officeOfHOD/tab5.html' %} {% endblock %}
{% comment %}The Publications ends here!{% endcomment %} - - + + {% comment %}The Publications starts here!{% endcomment %}
{% block form3 %} @@ -88,7 +99,7 @@
{% comment %}The Publications ends here!{% endcomment %} - + {% comment %}The Publications starts here!{% endcomment %}
{% block form4 %} @@ -98,6 +109,20 @@
{% comment %}The Publications ends here!{% endcomment %} + {% comment %}The test starts here!{% endcomment %} +
+ {% block form5 %} + {% include 'officeModule/officeOfHOD/tab2.html' %} + {% endblock %} + +
+ {% comment %}The test ends here!{% endcomment %} +
+ {% block form6 %} + {% include 'officeModule/officeOfHOD/tab1.html' %} + {% endblock %} + +
{% comment %}The central-rail segment ends here!{% endcomment %} @@ -165,4 +190,4 @@

} -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/FusionIIIT/templates/officeModule/officeOfHOD/tab1.html b/FusionIIIT/templates/officeModule/officeOfHOD/tab1.html index f6ec65913..10b95ab61 100644 --- a/FusionIIIT/templates/officeModule/officeOfHOD/tab1.html +++ b/FusionIIIT/templates/officeModule/officeOfHOD/tab1.html @@ -1,29 +1,53 @@ -{% block tab1 %} - - {% comment %}The tab menu starts here!{% endcomment %} - - -
-
- {% block tab1content1 %} - {% include 'officeModule/officeOfHOD/tab1content1.html' %} - {% endblock %} -
-
- -
-
- {% block tab1content2 %} - {% include 'officeModule/officeOfHOD/tab1content2.html' %} - {% endblock %} -
-
-{% endblock tab1 %} \ No newline at end of file +{% block tab1 %} + + {% comment %}The tab menu starts here!{% endcomment %} + + + +
+
+ {% block tab1content1 %} + {% include 'officeModule/officeOfHOD/tab1content1.html' %} + {% endblock %} +
+
+ +
+
+ {% block tab1content2 %} + {% include 'officeModule/officeOfHOD/tab1content2.html' %} + {% endblock %} +
+
+
+
+ {% block tab1content3 %} + {% include 'officeModule/officeOfHOD/tab1content3.html' %} + {% endblock %} +
+
+
+
+ {% block tab1content4 %} + {% include 'officeModule/officeOfHOD/tab1content4.html' %} + {% endblock %} +
+
+ +{% endblock tab1 %} diff --git a/FusionIIIT/templates/officeModule/officeOfHOD/tab1content1.html b/FusionIIIT/templates/officeModule/officeOfHOD/tab1content1.html index 68e1e7a02..210cb5eeb 100644 --- a/FusionIIIT/templates/officeModule/officeOfHOD/tab1content1.html +++ b/FusionIIIT/templates/officeModule/officeOfHOD/tab1content1.html @@ -1,55 +1,55 @@ -
- {% comment %}The add a new skill Accordian starts here!{% endcomment %} -
- -
-
- - -
-
- -
-
- - -
- -
- - -
- -
- - -
-
- -
- - -
- -
- - -
- -
- -
-
-
- -
-
+
+ {% comment %}The add a new skill Accordian starts here!{% endcomment %} +
+ +
+
+ + +
+
+ +
+
+ + +
+ +
+ + +
+ +
+ + +
+
+ +
+ + +
+ +
+ + +
+ +
+ +
+
+
+ +
+
\ No newline at end of file diff --git a/FusionIIIT/templates/officeModule/officeOfHOD/tab1content2.html b/FusionIIIT/templates/officeModule/officeOfHOD/tab1content2.html index 932572119..7f537f36a 100644 --- a/FusionIIIT/templates/officeModule/officeOfHOD/tab1content2.html +++ b/FusionIIIT/templates/officeModule/officeOfHOD/tab1content2.html @@ -1,10 +1,59 @@ - - - - - Title - - - - - \ No newline at end of file +
+ + {% comment %}The add a new skill Accordian starts here!{% endcomment %} +
+
Auto Fare Claim Form
+
+
+
+
+ + +
+ +
+ + +
+
+ + +
+
+ + +
+ +
+ + +
+ +
+ + +
+
+ +
+ + +
+ +
+ + +
+ + +
+ +
+
+
+ +
+
+
diff --git a/FusionIIIT/templates/officeModule/officeOfHOD/tab1content3.html b/FusionIIIT/templates/officeModule/officeOfHOD/tab1content3.html new file mode 100644 index 000000000..dc29e94cf --- /dev/null +++ b/FusionIIIT/templates/officeModule/officeOfHOD/tab1content3.html @@ -0,0 +1,118 @@ +
+ + {% comment %}The add a new skill Accordian starts here!{% endcomment %} +
+
Application for grant of LTC
+
+
+
+
+ + +
+ +
+ + +
+ +
+ + +
+
+ + +
+
+ + +
+ +
+ + +
+ +
+ + +
+
+ +
+
+ + +
+ +
+ + +
+
+
+ Duration +
+
+
+ +
+
+ + +
+
+
+ +
+ +
+
+ + +
+
+
+
+ +
+ + +
+ +
+ + +
+ +
+
+ + +
+ +
+ + +
+
+ + +
+ +
+
+
+ +
+
+
\ No newline at end of file diff --git a/FusionIIIT/templates/officeModule/officeOfHOD/tab1content4.html b/FusionIIIT/templates/officeModule/officeOfHOD/tab1content4.html new file mode 100644 index 000000000..4b9f630c1 --- /dev/null +++ b/FusionIIIT/templates/officeModule/officeOfHOD/tab1content4.html @@ -0,0 +1,149 @@ +
+ + {% comment %}The add a new skill Accordian starts here!{% endcomment %} + +
+ +
+ + +
+ +
+ Work +
+ +
+
+ +
+
+ + +
+
+
+ +
+ +
+
+ + +
+
+
+
+

+
+
Approval of Extra Duty for Claiming Compensatory Off
+
+ +
+
+ + +
+ +
+ + +
+ +
+ +
+
+ + +
+ +
+ + +
+
+ +
+ + +
+ +
+ + +
+

+ +
+
Details of actual days and time of work
+
+ +
+
+ + +
+ +
+ + +
+ +
+ +
+
+ + +
+ +
+ + +
+ +
+ + +
+
+
+ Time to do assigned work +
+
+
+ + +
+ +
+ + +
+
+ + +
+ +
+
+
+ +
+
+
\ No newline at end of file diff --git a/FusionIIIT/templates/officeModule/officeOfHOD/tab1content5.html b/FusionIIIT/templates/officeModule/officeOfHOD/tab1content5.html new file mode 100644 index 000000000..e69de29bb diff --git a/FusionIIIT/templates/officeModule/officeOfHOD/tab2.html b/FusionIIIT/templates/officeModule/officeOfHOD/tab2.html index de69b9a9d..cf0971c77 100644 --- a/FusionIIIT/templates/officeModule/officeOfHOD/tab2.html +++ b/FusionIIIT/templates/officeModule/officeOfHOD/tab2.html @@ -6,14 +6,17 @@ CSE - + ECE - - + + ME - + + Lab details + +
@@ -23,6 +26,27 @@ {% endblock %}
+
+
+ {% block tab2content2 %} + {% include 'officeModule/officeOfHOD/tab2content2.html' %} + {% endblock %} +
+
+
+
+ {% block tab2content3 %} + {% include 'officeModule/officeOfHOD/tab2content3.html' %} + {% endblock %} +
+
+
+
+ {% block tab2content4 %} + {% include 'officeModule/officeOfHOD/tab2content4.html' %} + {% endblock %} +
+
+ - -{% endblock tab2 %} \ No newline at end of file +{% endblock tab2 %} diff --git a/FusionIIIT/templates/officeModule/officeOfHOD/tab2content2.html b/FusionIIIT/templates/officeModule/officeOfHOD/tab2content2.html new file mode 100644 index 000000000..c6dd72ccd --- /dev/null +++ b/FusionIIIT/templates/officeModule/officeOfHOD/tab2content2.html @@ -0,0 +1,92 @@ +
+ + {% comment %}The add a new skill Accordian starts here!{% endcomment %} +
+
ECE lab
+
+
+
+ + {% if request.user.extrainfo.user == 'vkgupta' %} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
9:00-10:0010:00-11:0011:00-12:0012:00-01:0002:30-03:3003:30-04:3004:30-05:30
Monday
Tuesday
Wednesday
Thursday
Friday
+ {% endif %} +
+ +
+ +
diff --git a/FusionIIIT/templates/officeModule/officeOfHOD/tab2content3.html b/FusionIIIT/templates/officeModule/officeOfHOD/tab2content3.html new file mode 100644 index 000000000..7d126a2df --- /dev/null +++ b/FusionIIIT/templates/officeModule/officeOfHOD/tab2content3.html @@ -0,0 +1,174 @@ +
+ + {% comment %}The add a new skill Accordian starts here!{% endcomment %} +
+
ME LAB
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
9:00-10:0010:00-11:0011:00-12:0012:00-01:0002:30-03:3003:30-04:3004:30-05:30
Monday
Tuesday
Wednesday
Thursday
Friday
+
+ + +
+
Mechatronics lab
+
+ +
+ {% if request.user.extrainfo.user == 'vkgupta' %} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
9:00-10:0010:00-11:0011:00-12:0012:00-01:0002:30-03:3003:30-04:3004:30-05:30
Monday
Tuesday
Wednesday
Thursday
Friday
+ {% endif %} +
+
+ +
diff --git a/FusionIIIT/templates/officeModule/officeOfHOD/tab2content4.html b/FusionIIIT/templates/officeModule/officeOfHOD/tab2content4.html new file mode 100644 index 000000000..46b32f19b --- /dev/null +++ b/FusionIIIT/templates/officeModule/officeOfHOD/tab2content4.html @@ -0,0 +1,68 @@ +{% block tab5 %} + +

LAB FORM

+ +
+ {% comment %}The add a new skill Accordian starts here!{% endcomment %} +
+ {% csrf_token %} + +
+
+ + +
+ +
+ + +
+ +
+ +
+
+ + + +
+ +
+ +
+
+ + > +
+
+
+ +
+ +
+
+ + > +
+
+
+ +
+ +
+ +
+ +
+
+ +{% endblock tab5 %} diff --git a/FusionIIIT/templates/officeModule/officeOfHOD/tab3content1.html b/FusionIIIT/templates/officeModule/officeOfHOD/tab3content1.html index c00b2448a..2ca9841b5 100644 --- a/FusionIIIT/templates/officeModule/officeOfHOD/tab3content1.html +++ b/FusionIIIT/templates/officeModule/officeOfHOD/tab3content1.html @@ -1,21 +1,45 @@ -
+ {% comment %}The add a new skill Accordian starts here!{% endcomment %} - +
- + {% csrf_token %}
- - - - - + {% for obj1 in lab %} + + {% endfor %} + + + {% comment %} try this again + {% with lname=obj1.lab_name %}{% endwith %} + + {% endcomment %} + +
- - + + + +
+ + +
+ +
+ + +
+ +

{% for obj1 in lab %} + + {% endfor %} +

+ +
Date and Time
@@ -25,17 +49,17 @@
- +
- +
- +
@@ -51,4 +75,4 @@

-
\ No newline at end of file +
diff --git a/FusionIIIT/templates/officeModule/officeOfHOD/tab4content1.html b/FusionIIIT/templates/officeModule/officeOfHOD/tab4content1.html index ca5b407f1..d8890847a 100644 --- a/FusionIIIT/templates/officeModule/officeOfHOD/tab4content1.html +++ b/FusionIIIT/templates/officeModule/officeOfHOD/tab4content1.html @@ -1,10 +1,11 @@ {% block tab4content1 %} {% for obj in pro %} + {% csrf_token %} {% comment %}The add a new skill Accordian starts here!{% endcomment %}
- {% csrf_token %} - + +
@@ -15,7 +16,7 @@
- +
@@ -26,27 +27,27 @@
- +
- +
- +
- +
- +
- +
- +
- +

-{% endfor %} +{% endfor %} {% endblock %} diff --git a/FusionIIIT/templates/officeModule/officeOfHOD/tab4content2.html b/FusionIIIT/templates/officeModule/officeOfHOD/tab4content2.html index 20ae8ebf3..926178f0f 100644 --- a/FusionIIIT/templates/officeModule/officeOfHOD/tab4content2.html +++ b/FusionIIIT/templates/officeModule/officeOfHOD/tab4content2.html @@ -14,13 +14,13 @@ {% for obj1 in pro1 %} - - + + {% endfor %} - +

@@ -28,4 +28,3 @@ {% endblock %} - \ No newline at end of file diff --git a/FusionIIIT/templates/officeModule/officeOfHOD/tab4content3.html b/FusionIIIT/templates/officeModule/officeOfHOD/tab4content3.html index 185d183f5..78996483e 100644 --- a/FusionIIIT/templates/officeModule/officeOfHOD/tab4content3.html +++ b/FusionIIIT/templates/officeModule/officeOfHOD/tab4content3.html @@ -4,7 +4,7 @@

Teaching Credits Application Form



{% comment %}The add a new skill Accordian starts here!{% endcomment %}
{% csrf_token %} - +
@@ -15,9 +15,9 @@

Teaching Credits Application Form



- +
- +
@@ -36,14 +36,14 @@

Teaching Credits Application Form



- +
- +
- + @@ -53,8 +53,8 @@

Teaching Credits Application Form



- + @@ -64,8 +64,8 @@

Teaching Credits Application Form



- + @@ -75,8 +75,11 @@

Teaching Credits Application Form



+ + +
-
@@ -87,14 +90,29 @@

Teaching Credits Application Form




- {% endblock %} \ No newline at end of file + {% endblock %} diff --git a/FusionIIIT/templates/officeModule/officeOfHOD/tab5.html b/FusionIIIT/templates/officeModule/officeOfHOD/tab5.html new file mode 100644 index 000000000..8286ca49b --- /dev/null +++ b/FusionIIIT/templates/officeModule/officeOfHOD/tab5.html @@ -0,0 +1,7 @@ +{% block tab5 %} + + +hello + + +{% endblock tab5 %} diff --git a/FusionIIIT/templates/officeModule/officeOfHOD/tab5content1.html b/FusionIIIT/templates/officeModule/officeOfHOD/tab5content1.html new file mode 100644 index 000000000..8f02e2da6 --- /dev/null +++ b/FusionIIIT/templates/officeModule/officeOfHOD/tab5content1.html @@ -0,0 +1,100 @@ +{% block tab4content3 %} +

New Tab



+
+ {% comment %}The add a new skill Accordian starts here!{% endcomment %} +
+ {% csrf_token %} + +
+
+ + +
+ +
+ + +
+ +
+ +
+
+ + +
+ +
+ + +
+ +
+ +
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+ +
+
+
+ +
+
+
+ + + {% endblock %} diff --git a/FusionIIIT/templates/officeModule/officeOfHOD/work/tab1content3.html b/FusionIIIT/templates/officeModule/officeOfHOD/work/tab1content3.html index df64417c1..7f537f36a 100644 --- a/FusionIIIT/templates/officeModule/officeOfHOD/work/tab1content3.html +++ b/FusionIIIT/templates/officeModule/officeOfHOD/work/tab1content3.html @@ -16,7 +16,7 @@
- +
@@ -34,12 +34,12 @@
- +
- +
@@ -56,4 +56,4 @@

-
\ No newline at end of file +
From 0c488d0de7bf7d040890975d236bd0d22f80aaff Mon Sep 17 00:00:00 2001 From: Prajwal Tidke Date: Thu, 7 Feb 2019 14:22:23 +0530 Subject: [PATCH 2/3] Update fusion.db --- FusionIIIT/Fusion/fusion.db | Bin 7630848 -> 7630848 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/FusionIIIT/Fusion/fusion.db b/FusionIIIT/Fusion/fusion.db index 1fe84e47fe2159256836ac39f47e0c594c9b110f..062185ab7abbc715d5ced1ed785d31d441e6db72 100644 GIT binary patch delta 26366 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 XUvp1iOHW^GPv7RAzP5Y&+MoVEG!pW> delta 30042 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 From 968dc35ab123028de2947a9cbeea10dbff950d90 Mon Sep 17 00:00:00 2001 From: Prajwal Tidke Date: Thu, 7 Feb 2019 14:28:29 +0530 Subject: [PATCH 3/3] Office of HOD --- FusionIIIT/templates/officeModule/officeOfHOD/alerts.html | 2 +- .../templates/officeModule/officeOfHOD/officeOfHOD.html | 7 +------ 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/FusionIIIT/templates/officeModule/officeOfHOD/alerts.html b/FusionIIIT/templates/officeModule/officeOfHOD/alerts.html index 14d5a581b..73938e8ee 100644 --- a/FusionIIIT/templates/officeModule/officeOfHOD/alerts.html +++ b/FusionIIIT/templates/officeModule/officeOfHOD/alerts.html @@ -1,7 +1,7 @@ {% load static %} {% block alerts %} -
+
{% comment %}A single card starts here!{% endcomment %}
diff --git a/FusionIIIT/templates/officeModule/officeOfHOD/officeOfHOD.html b/FusionIIIT/templates/officeModule/officeOfHOD/officeOfHOD.html index 7aa241482..03a73af90 100644 --- a/FusionIIIT/templates/officeModule/officeOfHOD/officeOfHOD.html +++ b/FusionIIIT/templates/officeModule/officeOfHOD/officeOfHOD.html @@ -131,14 +131,9 @@
-

- Office of HOD -

-
-
@@ -147,7 +142,7 @@

Loading ...

-
+
{% block alerts %} {% include 'officeModule/officeOfHOD/alerts.html' %} {% endblock %}