diff --git a/FusionIIIT/applications/iwdModuleV2/models.py b/FusionIIIT/applications/iwdModuleV2/models.py index a5c40c7b2..a0834f1bb 100644 --- a/FusionIIIT/applications/iwdModuleV2/models.py +++ b/FusionIIIT/applications/iwdModuleV2/models.py @@ -1,5 +1,5 @@ from django.db import models - +from datetime import date # Create your models here. @@ -160,3 +160,51 @@ class NoOfTechnicalBidTimes(models.Model): key = models.ForeignKey(Projects, on_delete=models.CASCADE, unique=True) number = models.IntegerField() +class Requests(models.Model): + name = models.CharField(max_length=200) + description = models.CharField(max_length=200) + area = models.CharField(max_length=200) + requestCreatedBy = models.CharField(max_length=200) + engineerProcessed = models.IntegerField(default=0) + directorApproval = models.IntegerField(default=0) + deanProcessed = models.IntegerField(default=0) + status = models.CharField(max_length=200) + issuedWorkOrder = models.IntegerField(default=0) + workCompleted = models.IntegerField(default=0) + billGenerated = models.IntegerField(default=0) + billProcessed = models.IntegerField(default=0) + billSettled = models.IntegerField(default=0) + +class WorkOrder(models.Model): + # request_id = models.IntegerField() + request_id = models.ForeignKey(Requests, on_delete=models.CASCADE) + name = models.CharField(max_length=200) + date = models.DateField(default=date.today) + agency = models.CharField(max_length=200) + amount = models.IntegerField(default=0) + deposit = models.IntegerField(default=0) + alloted_time = models.CharField(max_length=200) + start_date = models.DateField() + completion_date = models.DateField() + +class Inventory(models.Model): + name = models.CharField(max_length=200) + quantity = models.IntegerField(default=0) + cost = models.IntegerField(default=0) + +class UsedItems(models.Model): + # requestId = models.IntegerField() + request_id = models.ForeignKey(Requests, on_delete=models.CASCADE) + itemName = models.CharField(max_length=200) + cost = models.IntegerField(default=0) + quantity = models.IntegerField(default=0) + date = models.DateField(default=date.today) + +class Bills(models.Model): + # requestId = models.IntegerField() + request_id = models.ForeignKey(Requests, on_delete=models.CASCADE) + file = models.FileField() + +class Budget(models.Model): + name = models.CharField(max_length=200) + budgetIssued = models.IntegerField(default=0) diff --git a/FusionIIIT/applications/iwdModuleV2/urls.py b/FusionIIIT/applications/iwdModuleV2/urls.py index 6ad401098..0c0830cea 100644 --- a/FusionIIIT/applications/iwdModuleV2/urls.py +++ b/FusionIIIT/applications/iwdModuleV2/urls.py @@ -36,5 +36,46 @@ url(r'milestoneView/$', views.milestoneView, name='Milestones'), url(r'addendumView/$', views.addendumView, name='Addendum View'), url('agreementView/$', views.agreementView, name='Agreement VIew'), - url(r'corrigendumView/$', views.corrigendumView, name='Corrigendum View') + url(r'corrigendumView/$', views.corrigendumView, name='Corrigendum View'), + url('requestsView/',views.requestsView, name='Requests view'), + url('createdRequestsView/',views.createdRequests, name='Created Requests view'), + url('handleEngineerProcessRequests/', views.handleEngineerProcessRequests, name='Engineer-Process-Requests'), + url('engineerProcessedRequestsView/',views.engineerProcessedRequests, name='Engineer-Processed-Requests view'), + url('handleDeanProcessRequests/', views.handleDeanProcessRequests, name='Dean-Process-Requests'), + url('deanProcessedRequestsView/',views.deanProcessedRequests, name='Dean-Processed-Requests view'), + url('handleDirectorApprovalRequests/', views.handleDirectorApprovalRequests, name='Director-Approval-Requests'), + url('handleDirectorRejectionRequests/', views.handleDirectorRejectionRequests, name='Director-Rejection-Requests'), + url('updateRejectedRequests/', views.updateRejectedRequests, name='Update-Rejected-Requests'), + url('handleUpdateRequests/', views.handleUpdateRequests, name='Handle-Update-Requests'), + # url('rejectedRequests/', views.rejectedRequests, name='Rejected-Requests'), + url('rejectedRequestsView/',views.rejectedRequests, name='Rejected Requests view'), + url('requestsStatus/', views.requestsStatus, name='Requests-Status'), + url('fetchDesignations/', views.fetchDesignations, name='Fetch-Designations'), + url('fetchRequest/', views.fetchRequest, name='Fetch-Request'), + url('issueWorkOrder/', views.issueWorkOrder, name='Issue Work Order'), + url('workOrder/', views.workOrder, name='Work Order'), + url('inventory/', views.inventory, name='Inventory'), + url('addItemsView/', views.addItemsView, name='Add Items View'), + url('addItems/', views.addItems, name='Add Items'), + url('editInventoryView/', views.editInventoryView, name='Edit Inventory View'), + url('editInventory/', views.editInventory, name='Edit Inventory'), + url('requestsInProgess/', views.requestsInProgess, name='Requests In Progress'), + url('workCompleted/', views.workCompleted, name='Work Completed'), + url('requestFromInventory/', views.requestFromInventory, name='Request From Inventory'), + url('editInventoryAfterRequest/', views.editInventoryAfterRequest, name='Edit-Inventory-After-Request'), + url('generateFinalBill/', views.generateFinalBill, name='Generate-Final-Bill'), + url('handleBillGeneratedRequests/', views.handleBillGeneratedRequests, name='Handle-Bill-Generated-Requests'), + url('generatedBillsView/', views.generatedBillsView, name='Generated-Bills-View'), + url('handleProcessedBills/', views.handleProcessedBills, name='Handle-Processed-Bills'), + url('auditDocumentView/', views.auditDocumentView, name='Audit-Document-View'), + url('auditDocument/', views.auditDocument, name='Audit-Document'), + url('settleBillsView/', views.settleBillsView, name='Settle-Bills-View'), + url('handleSettleBillRequests/', views.handleSettleBillRequests, name='Handle-Settle-Bill-Requests'), + url('viewBudget/', views.viewBudget, name='View-Budget'), + url('budget/', views.budget, name='Budget'), + url('addBudget/', views.addBudget, name='Add-Budget'), + url('editBudgetView/', views.editBudgetView, name='Edit-Budget-View'), + url('editBudget/', views.editBudget, name='Edit-Budget'), + # url('billsView/',views.billsView, name='Bills View'), + ] diff --git a/FusionIIIT/applications/iwdModuleV2/views.py b/FusionIIIT/applications/iwdModuleV2/views.py index 2b36550fc..38a7e4ee7 100644 --- a/FusionIIIT/applications/iwdModuleV2/views.py +++ b/FusionIIIT/applications/iwdModuleV2/views.py @@ -1,9 +1,20 @@ from django.shortcuts import render, redirect - +from django.urls import reverse +from django.db.models import Q from applications.globals.models import * +from django.contrib.auth.decorators import login_required from .models import * from django.http import HttpResponseRedirect - +from applications.filetracking.sdk.methods import * +from applications.globals.models import ExtraInfo, HoldsDesignation, Designation +from datetime import datetime +from reportlab.lib.pagesizes import letter +from reportlab.pdfgen import canvas +from reportlab.platypus import Table, TableStyle +from reportlab.lib import colors +from django.http import HttpResponse +from io import BytesIO +from django.core.files.base import File as DjangoFile # Create your views here. @@ -17,17 +28,27 @@ # owing to length and inherent extensiveness of code. Rather than, whosoever read this code is advised to do so # in conjunction with SRS. After that, everything will become easier. +# def dashboard(request): +# eligible = False +# userObj = request.user +# userDesignationObjects = HoldsDesignation.objects.filter(user=userObj) +# for p in userDesignationObjects: +# if p.designation.name == 'Admin IWD': +# eligible = True +# break +# return render(request, 'iwdModuleV2/dashboard.html', {'eligible': eligible}) + +#Junior Engineer, Electrical Engineer (Civil), Electrical_AE, Electrical_JE, EE, Civil_AE, Civil_JE + def dashboard(request): - eligible = False + eligible = "" userObj = request.user userDesignationObjects = HoldsDesignation.objects.filter(user=userObj) for p in userDesignationObjects: - if p.designation.name == 'Admin IWD': - eligible = True - break + eligible = p.designation.name + print(eligible) return render(request, 'iwdModuleV2/dashboard.html', {'eligible': eligible}) - def page1_1(request): if request.method == 'POST': formObject = PageOneDetails() @@ -107,7 +128,8 @@ def page2_1(request): def corrigendumInput(request): if request.method == 'POST': - existingObject = CorrigendumTable.objects.filter(key=Projects.objects.get(id=request.session['projectId'])) + existingObject = CorrigendumTable.objects.filter( + key=Projects.objects.get(id=request.session['projectId'])) if existingObject.count() == 1: existingObject.delete() formObject = CorrigendumTable() @@ -128,7 +150,8 @@ def corrigendumInput(request): def addendumInput(request): if request.method == 'POST': - existingObject = Addendum.objects.filter(key=Projects.objects.get(id=request.session['projectId'])) + existingObject = Addendum.objects.filter( + key=Projects.objects.get(id=request.session['projectId'])) if existingObject.count() == 1: existingObject.delete() formObject = Addendum() @@ -145,7 +168,8 @@ def addendumInput(request): def PreBidForm(request): if request.method == 'POST': - existingObject = PreBidDetails.objects.filter(key=Projects.objects.get(id=request.session['projectId'])) + existingObject = PreBidDetails.objects.filter( + key=Projects.objects.get(id=request.session['projectId'])) if existingObject.count() == 1: existingObject.delete() formObject = PreBidDetails() @@ -161,9 +185,11 @@ def PreBidForm(request): def noOfEntriesTechnicalBid(request): formNoTechnicalObjects = NoOfTechnicalBidTimes() - formNoTechnicalObjects.key = Projects.objects.get(id=request.session['projectId']) + formNoTechnicalObjects.key = Projects.objects.get( + id=request.session['projectId']) if request.method == 'POST': - existingObject = NoOfTechnicalBidTimes.objects.filter(key=Projects.objects.get(id=request.session['projectId'])) + existingObject = NoOfTechnicalBidTimes.objects.filter( + key=Projects.objects.get(id=request.session['projectId'])) if existingObject.count() == 1: existingObject.delete() formNoTechnicalObjects.number = int(request.POST['number']) @@ -174,9 +200,11 @@ def noOfEntriesTechnicalBid(request): def TechnicalBidForm(request): formObject = TechnicalBidDetails() - numberOfTechnicalBidTimes = NoOfTechnicalBidTimes.objects.get(key=Projects.objects.get(id=request.session['projectId'])).number + numberOfTechnicalBidTimes = NoOfTechnicalBidTimes.objects.get( + key=Projects.objects.get(id=request.session['projectId'])).number if request.method == 'POST': - existingObject = TechnicalBidDetails.objects.filter(key=Projects.objects.get(id=request.session['projectId'])) + existingObject = TechnicalBidDetails.objects.filter( + key=Projects.objects.get(id=request.session['projectId'])) if existingObject.count() == 1: existingObject.delete() formObject = TechnicalBidDetails() @@ -184,12 +212,14 @@ def TechnicalBidForm(request): formObject.sNo = request.POST['sNo'] formObject.requirements = request.POST['requirements'] formObject.save() - TechnicalBidContractorDetails.objects.filter(key=formObject).all().delete() + TechnicalBidContractorDetails.objects.filter( + key=formObject).all().delete() for w in range(numberOfTechnicalBidTimes): formContractorObject = TechnicalBidContractorDetails() formContractorObject.key = formObject formContractorObject.name = request.POST[str(w) + 'name'] - formContractorObject.description = request.POST[str(w) + 'Description'] + formContractorObject.description = request.POST[str( + w) + 'Description'] formContractorObject.save() return redirect('iwdModuleV2/noOfEntriesFinancialBid') return render(request, 'iwdModuleV2/page2_support_4_technicalbid.html', @@ -198,12 +228,15 @@ def TechnicalBidForm(request): def noOfEntriesFinancialBid(request): listOfContractors = [] - objectTechnicalBid = TechnicalBidDetails.objects.get(key=Projects.objects.get(id=request.session['projectId'])) - objects = TechnicalBidContractorDetails.objects.filter(key=objectTechnicalBid) + objectTechnicalBid = TechnicalBidDetails.objects.get( + key=Projects.objects.get(id=request.session['projectId'])) + objects = TechnicalBidContractorDetails.objects.filter( + key=objectTechnicalBid) for t in objects: listOfContractors.append(t.name) if request.method == 'POST': - existingObject = FinancialBidDetails.objects.filter(key=Projects.objects.get(id=request.session['projectId'])) + existingObject = FinancialBidDetails.objects.filter( + key=Projects.objects.get(id=request.session['projectId'])) if existingObject.count() == 1: existingObject.delete() formObject = FinancialBidDetails() @@ -217,7 +250,8 @@ def noOfEntriesFinancialBid(request): formContractorObject.name = listOfContractors[f] formContractorObject.totalCost = request.POST[listOfContractors[f] + 'totalCost'] formContractorObject.estimatedCost = request.POST[listOfContractors[f] + 'estimatedCost'] - formContractorObject.percentageRelCost = request.POST[listOfContractors[f] + 'percentageRelCost'] + formContractorObject.percentageRelCost = request.POST[ + listOfContractors[f] + 'percentageRelCost'] formContractorObject.perFigures = request.POST[listOfContractors[f] + 'perFigures'] formContractorObject.save() return redirect('iwdModuleV2/letterOfIntent') @@ -227,7 +261,8 @@ def noOfEntriesFinancialBid(request): def letterOfIntent(request): if request.method == 'POST': - existingObject = LetterOfIntentDetails.objects.filter(key=Projects.objects.get(id=request.session['projectId'])) + existingObject = LetterOfIntentDetails.objects.filter( + key=Projects.objects.get(id=request.session['projectId'])) if existingObject.count() == 1: existingObject.delete() formObject = LetterOfIntentDetails() @@ -244,7 +279,8 @@ def letterOfIntent(request): def workOrderForm(request): if request.method == 'POST': - existingObject = WorkOrderForm.objects.filter(key=Projects.objects.get(id=request.session['projectId'])) + existingObject = WorkOrderForm.objects.filter( + key=Projects.objects.get(id=request.session['projectId'])) if existingObject.count() == 1: existingObject.delete() formObject = WorkOrderForm() @@ -267,7 +303,8 @@ def workOrderForm(request): def AgreementInput(request): if request.method == 'POST': - existingObject = Agreement.objects.filter(key=Projects.objects.get(id=request.session['projectId'])) + existingObject = Agreement.objects.filter( + key=Projects.objects.get(id=request.session['projectId'])) if existingObject.count() == 1: existingObject.delete() formObject = Agreement() @@ -291,7 +328,8 @@ def milestonesForm(request): formObject.timeAllowed = request.POST['timeAllowed'] formObject.save() return redirect('iwdModuleV2/page3_1') - Milestones.objects.filter(key=Projects.objects.get(id=request.session['projectId'])).all().delete() + Milestones.objects.filter(key=Projects.objects.get( + id=request.session['projectId'])).all().delete() return render(request, 'iwdModuleV2/page2_support_9_milestone.html', {}) @@ -321,35 +359,42 @@ def ExtensionOfTimeForm(request): def page1View(request): - request.session['projectId'] = request.POST['id'] - projectPageOne = PageOneDetails.objects.get(id=Projects.objects.get(id=request.session['projectId'])) + if request.POST: + request.session['projectId'] = request.POST['id'] + projectPageOne = PageOneDetails.objects.get( + id=Projects.objects.get(id=request.session['projectId'])) return render(request, 'iwdModuleV2/Page1.html', {'x': projectPageOne}) def page2View(request): - projectPageTwo = PageTwoDetails.objects.get(id=Projects.objects.get(id=request.session['projectId'])) + projectPageTwo = PageTwoDetails.objects.get( + id=Projects.objects.get(id=request.session['projectId'])) return render(request, 'iwdModuleV2/Page2.html', {'x': projectPageTwo}) def AESView(request): - objects = AESDetails.objects.filter(key=Projects.objects.get(id=request.session['projectId'])) + objects = AESDetails.objects.filter( + key=Projects.objects.get(id=request.session['projectId'])) return render(request, 'iwdModuleV2/AA&ES.html', {'AES': objects}) def financialBidView(request): elements = [] - objects = FinancialBidDetails.objects.filter(key=Projects.objects.get(id=request.session['projectId'])) + objects = FinancialBidDetails.objects.filter( + key=Projects.objects.get(id=request.session['projectId'])) for f in objects: contractorObjects = FinancialContractorDetails.objects.filter(key=f) for w in contractorObjects: - obj = [f.sNo, f.description, w.name, w.estimatedCost, w.percentageRelCost, w.perFigures, w.totalCost] + obj = [f.sNo, f.description, w.name, w.estimatedCost, + w.percentageRelCost, w.perFigures, w.totalCost] elements.append(obj) return render(request, 'iwdModuleV2/Page2_financialbid.html', {'financial': elements}) def technicalBidView(request): elements = [] - objects = TechnicalBidDetails.objects.filter(key=Projects.objects.get(id=request.session['projectId'])) + objects = TechnicalBidDetails.objects.filter( + key=Projects.objects.get(id=request.session['projectId'])) for f in objects: contractorObjects = TechnicalBidContractorDetails.objects.filter(key=f) for w in contractorObjects: @@ -359,45 +404,976 @@ def technicalBidView(request): def preBidDetailsView(request): - preBidObjects = PreBidDetails.objects.filter(key=Projects.objects.get(id=request.session['projectId'])) + preBidObjects = PreBidDetails.objects.filter( + key=Projects.objects.get(id=request.session['projectId'])) return render(request, 'iwdModuleV2/Page2_pre-bid.html', {'preBidDetails': preBidObjects}) def corrigendumView(request): - corrigendumObject = CorrigendumTable.objects.get(key=Projects.objects.get(id=request.session['projectId'])) + corrigendumObject = CorrigendumTable.objects.get( + key=Projects.objects.get(id=request.session['projectId'])) return render(request, 'iwdModuleV2/corrigendum.html', {'corrigendum': corrigendumObject}) def addendumView(request): - addendumObject = Addendum.objects.get(key=Projects.objects.get(id=request.session['projectId'])) + addendumObject = Addendum.objects.get( + key=Projects.objects.get(id=request.session['projectId'])) return render(request, 'iwdModuleV2/Addendum.html', {'x': addendumObject}) def letterOfIntentView(request): - letterOfIntentObject = LetterOfIntentDetails.objects.get(key=Projects.objects.get(id=request.session['projectId'])) + letterOfIntentObject = LetterOfIntentDetails.objects.get( + key=Projects.objects.get(id=request.session['projectId'])) return render(request, 'iwdModuleV2/letterOfIntent.html', {'x': letterOfIntentObject}) def workOrderFormView(request): - workOrderFormObject = WorkOrderForm.objects.get(key=Projects.objects.get(id=request.session['projectId'])) + workOrderFormObject = WorkOrderForm.objects.get( + key=Projects.objects.get(id=request.session['projectId'])) return render(request, 'iwdModuleV2/WorkOrderForm.html', {'x': workOrderFormObject}) def agreementView(request): - agreementObject = Agreement.objects.get(key=Projects.objects.get(id=request.session['projectId'])) + agreementObject = Agreement.objects.get( + key=Projects.objects.get(id=request.session['projectId'])) return render(request, 'iwdModuleV2/Agreement.html', {'agreement': agreementObject}) def milestoneView(request): - milestoneObjects = Milestones.objects.filter(key=Projects.objects.get(id=request.session['projectId'])) + milestoneObjects = Milestones.objects.filter( + key=Projects.objects.get(id=request.session['projectId'])) return render(request, 'iwdModuleV2/Page2_milestones.html', {'milestones': milestoneObjects}) def page3View(request): - pageThreeDetails = PageThreeDetails.objects.get(id=Projects.objects.get(id=request.session['projectId'])) + pageThreeDetails = PageThreeDetails.objects.get( + id=Projects.objects.get(id=request.session['projectId'])) return render(request, 'iwdModuleV2/Page3.html', {'x': pageThreeDetails}) def extensionFormView(request): - extensionObjects = ExtensionOfTimeDetails.objects.filter(key=Projects.objects.get(id=request.session['projectId'])) + extensionObjects = ExtensionOfTimeDetails.objects.filter( + key=Projects.objects.get(id=request.session['projectId'])) return render(request, 'iwdModuleV2/ExtensionForm.html', {'extension': extensionObjects}) + +designations_list = ["Junior Engineer", "Executive Engineer (Civil)", "Electrical_AE", "Electrical_JE", "EE", "Civil_AE", "Civil_JE", "Dean (P&D)", "Director", "Accounts Admin", "Admin IWD", "Auditor"] + +@login_required +def fetchDesignations(request): + designations = Designation.objects.filter() + + holdsDesignations = [] + + for d in designations: + for x in designations_list: + if d.name == x: + list = HoldsDesignation.objects.filter(designation=d) + holdsDesignations.append(list) + + return render(request, 'iwdModuleV2/requestsView.html', {'holdsDesignations' : holdsDesignations}) + +@login_required +def requestsView(request): + if request.method == 'POST': + formObject = Requests() + # formObject.key = Projects.objects.get(id=request.session['projectId']) + formObject.name = request.POST['name'] + formObject.description = request.POST['description'] + formObject.area = request.POST['area'] + formObject.engineerProcessed = 0 + formObject.directorApproval = 0 + formObject.deanProcessed = 0 + formObject.requestCreatedBy = request.user.username + formObject.status = "Pending" + formObject.issuedWorkOrder = 0 + formObject.workCompleted = 0 + formObject.billGenerated = 0 + formObject.billProcessed = 0 + formObject.billSettled = 0 + formObject.save() + print(request.user) + print(request.user.username) + request_object = Requests.objects.get(pk=formObject.pk) + d = HoldsDesignation.objects.get(user__username=request.POST['designation']) + d1 = HoldsDesignation.objects.get(user__username=request.user) + print(d) + print(d1) + create_file(uploader=request.user.username, + uploader_designation=d1.designation, + receiver=request.POST['designation'], + receiver_designation=d.designation, + src_module="IWD", + src_object_id= str(request_object.id), + file_extra_JSON= {"value": 2}, + attached_file = None) + + eligible = "" + userObj = request.user + userDesignationObjects = HoldsDesignation.objects.filter(user=userObj) + for p in userDesignationObjects: + eligible = p.designation.name + return render(request, 'iwdModuleV2/dashboard.html', {'eligible' : eligible}) + +@login_required +def createdRequests(request): + obj = [] + d = HoldsDesignation.objects.get(user__username=request.user) + + inbox_files = view_inbox( + username=request.user, + designation=d.designation, + src_module="IWD" + ) + + for result in inbox_files: + src_object_id = result['src_object_id'] + request_object = Requests.objects.filter(id=src_object_id).first() + if request_object: + element = [request_object.id, request_object.name, request_object.area, request_object.description, request_object.requestCreatedBy] + obj.append(element) + + designations = Designation.objects.filter() + + holdsDesignations = [] + + for d in designations: + for x in designations_list: + if d.name == x: + list = HoldsDesignation.objects.filter(designation=d) + holdsDesignations.append(list) + + return render(request, 'iwdModuleV2/createdRequests.html', {'obj' : obj, 'holdsDesignations' : holdsDesignations}) + +@login_required +def handleEngineerProcessRequests(request): + if request.method == 'POST': + + request_id = request.POST.get("id", 0) + + d = HoldsDesignation.objects.get(user__username=request.POST['designation']) + d1 = HoldsDesignation.objects.get(user__username=request.user) + + create_file(uploader=request.user.username, + uploader_designation=d1.designation, + receiver=request.POST['designation'], + receiver_designation=d.designation, + src_module="IWD", + src_object_id= str(request_id), + file_extra_JSON= {"value": 2}, + attached_file = None) + + Requests.objects.filter(id=request_id).update(engineerProcessed=1, status="Approved by the engineer") + + inbox_files = view_inbox( + username=request.user, + designation=d1.designation, + src_module="IWD" + ) + + for p in inbox_files: + if p['src_object_id'] == request_id: + delete_file(file_id = p['id']) + break + + eligible = "" + userObj = request.user + userDesignationObjects = HoldsDesignation.objects.filter(user=userObj) + for p in userDesignationObjects: + eligible = p.designation.name + + return render(request, 'iwdModuleV2/dashboard.html', {'eligible': eligible}) + +@login_required +def engineerProcessedRequests(request): + + obj = [] + + d = HoldsDesignation.objects.get(user__username=request.user) + + inbox_files = view_inbox( + username=request.user, + designation=d.designation, + src_module="IWD" + ) + + for result in inbox_files: + src_object_id = result['src_object_id'] + request_object = Requests.objects.filter(id=src_object_id).first() + if request_object: + element = [request_object.id, request_object.name, request_object.area, request_object.description, request_object.requestCreatedBy] + obj.append(element) + + designations = Designation.objects.filter() + + holdsDesignations = [] + + for d in designations: + for x in designations_list: + if d.name == x: + list = HoldsDesignation.objects.filter(designation=d) + holdsDesignations.append(list) + + return render(request, 'iwdModuleV2/engineerProcessedRequests.html', {'obj' : obj, 'holdsDesignations' : holdsDesignations}) + +@login_required +def handleDeanProcessRequests(request): + if request.method == 'POST': + + request_id = request.POST.get("id", 0) + + d = HoldsDesignation.objects.get(user__username=request.POST['designation']) + d1 = HoldsDesignation.objects.get(user__username=request.user) + + create_file(uploader=request.user.username, + uploader_designation=d1.designation, + receiver=request.POST['designation'], + receiver_designation=d.designation, + src_module="IWD", + src_object_id= str(request_id), + file_extra_JSON= {"value": 2}, + attached_file = None) + + Requests.objects.filter(id=request_id).update(deanProcessed=1, status="Approved by the dean") + + inbox_files = view_inbox( + username=request.user, + designation=d1.designation, + src_module="IWD" + ) + + for p in inbox_files: + if p['src_object_id'] == request_id: + delete_file(file_id = p['id']) + break + + eligible = "" + userObj = request.user + userDesignationObjects = HoldsDesignation.objects.filter(user=userObj) + for p in userDesignationObjects: + eligible = p.designation.name + return render(request, 'iwdModuleV2/dashboard.html', {'eligible': eligible}) + +@login_required +def deanProcessedRequests(request): + obj = [] + + d = HoldsDesignation.objects.get(user__username=request.user) + + inbox_files = view_inbox( + username=request.user, + designation=d.designation, + src_module="IWD" + ) + + for result in inbox_files: + src_object_id = result['src_object_id'] + request_object = Requests.objects.filter(id=src_object_id).first() + if request_object: + element = [request_object.id, request_object.name, request_object.area, request_object.description, request_object.requestCreatedBy] + obj.append(element) + + designations = Designation.objects.filter() + + holdsDesignations = [] + + for d in designations: + for x in designations_list: + if d.name == x: + list = HoldsDesignation.objects.filter(designation=d) + holdsDesignations.append(list) + + return render(request, 'iwdModuleV2/deanProcessedRequests.html', {'obj' : obj, 'holdsDesignations' : holdsDesignations}) + +@login_required +def handleDirectorApprovalRequests(request): + if request.method == 'POST': + request_id = request.POST.get("id", 0) + + d = HoldsDesignation.objects.get(user__username=request.POST['designation']) + d1 = HoldsDesignation.objects.get(user__username=request.user) + + create_file(uploader=request.user.username, + uploader_designation=d1.designation, + receiver=request.POST['designation'], + receiver_designation=d.designation, + src_module="IWD", + src_object_id= str(request_id), + file_extra_JSON= {"value": 2}, + attached_file = None) + + Requests.objects.filter(id=request_id).update(directorApproval=1, status="Approved by the director") + + inbox_files = view_inbox( + username=request.user, + designation=d1.designation, + src_module="IWD" + ) + + for p in inbox_files: + if p['src_object_id'] == request_id: + delete_file(file_id = p['id']) + break + + eligible = "" + userObj = request.user + userDesignationObjects = HoldsDesignation.objects.filter(user=userObj) + for p in userDesignationObjects: + eligible = p.designation.name + return render(request, 'iwdModuleV2/dashboard.html', {'eligible': eligible}) + +@login_required +def handleDirectorRejectionRequests(request): + if request.method == 'POST': + request_id = request.POST.get("id", 0) + + d = HoldsDesignation.objects.get(user__username=request.POST['designation']) + d1 = HoldsDesignation.objects.get(user__username=request.user) + + create_file(uploader=request.user.username, + uploader_designation=d1.designation, + receiver=request.POST['designation'], + receiver_designation=d.designation, + src_module="IWD", + src_object_id= str(request_id), + file_extra_JSON= {"value": 2}, + attached_file = None) + + Requests.objects.filter(id=request_id).update(directorApproval=-1, status="Rejected by the director") + + inbox_files = view_inbox( + username=request.user, + designation=d1.designation, + src_module="IWD" + ) + + for p in inbox_files: + if p['src_object_id'] == request_id: + delete_file(file_id = p['id']) + break + + eligible = "" + userObj = request.user + userDesignationObjects = HoldsDesignation.objects.filter(user=userObj) + for p in userDesignationObjects: + eligible = p.designation.name + return render(request, 'iwdModuleV2/dashboard.html', {'eligible': eligible}) + +@login_required +def rejectedRequests(request): + obj = [] + + d = HoldsDesignation.objects.get(user__username=request.user) + + inbox_files = view_inbox( + username=request.user, + designation=d.designation, + src_module="IWD" + ) + + for result in inbox_files: + src_object_id = result['src_object_id'] + request_object = Requests.objects.filter(id=src_object_id).first() + if request_object.directorApproval == -1: + element = [request_object.id, request_object.name, request_object.area, request_object.description, request_object.requestCreatedBy] + obj.append(element) + + designations = Designation.objects.filter() + + holdsDesignations = [] + + for d in designations: + for x in designations_list: + if d.name == x: + list = HoldsDesignation.objects.filter(designation=d) + holdsDesignations.append(list) + + return render(request, 'iwdModuleV2/rejectedRequests.html', {'obj' : obj, 'holdsDesignations' : holdsDesignations}) + +@login_required +def updateRejectedRequests(request): + request_id = request.POST.get("id", 0) + + d1 = HoldsDesignation.objects.get(user__username=request.user) + + inbox_files = view_inbox( + username=request.user, + designation=d1.designation, + src_module="IWD" + ) + + for p in inbox_files: + if p['src_object_id'] == request_id: + delete_file(file_id = p['id']) + break + + designations = Designation.objects.filter() + + holdsDesignations = [] + obj = [] + + request_object = Requests.objects.get(id=request_id) + + obj = [request_object.id, request_object.name, request_object.description, request_object.area] + + for d in designations: + for x in designations_list: + if d.name == x: + list = HoldsDesignation.objects.filter(designation=d) + holdsDesignations.append(list) + + return render(request, 'iwdModuleV2/updateRequests.html', {'obj' : obj, 'holdsDesignations' : holdsDesignations}) + +@login_required +def handleUpdateRequests(request): + if request.method == 'POST': + request_id = request.POST.get("id", 0) + d = HoldsDesignation.objects.get(user__username=request.POST['designation']) + d1 = HoldsDesignation.objects.get(user__username=request.user) + Requests.objects.filter(id=request_id).update(name=request.POST['name'], + description=request.POST['description'], + area=request.POST['area'], + engineerProcessed=0, + directorApproval=0, + deanProcessed=0, + requestCreatedBy=request.user.username, + status="Pending", + issuedWorkOrder=0, + workCompleted=0, + billGenerated=0, + billProcessed=0, + billSettled=0) + create_file(uploader=request.user.username, + uploader_designation=d1.designation, + receiver=request.POST['designation'], + receiver_designation=d.designation, + src_module="IWD", + src_object_id= str(request_id), + file_extra_JSON= {"value": 2}, + attached_file = None) + eligible = "" + userObj = request.user + userDesignationObjects = HoldsDesignation.objects.filter(user=userObj) + for p in userDesignationObjects: + eligible = p.designation.name + return render(request, 'iwdModuleV2/dashboard.html', {'eligible' : eligible}) + +@login_required +def issueWorkOrder(request): + obj = [] + + d = HoldsDesignation.objects.get(user__username=request.user) + + inbox_files = view_inbox( + username=request.user, + designation=d.designation, + src_module="IWD" + ) + + for result in inbox_files: + uploader = result['sent_by_designation'] + if uploader == 'Director': + src_object_id = result['src_object_id'] + request_object = Requests.objects.filter(id=src_object_id).first() + if request_object: + element = [request_object.id, request_object.name, request_object.area, request_object.description, request_object.requestCreatedBy] + obj.append(element) + + return render(request, 'iwdModuleV2/issueWorkOrder.html', {'obj' : obj}) + +@login_required +def fetchRequest(request): + request_id = request.POST.get("id", 0) + req_request = Requests.objects.get(id=request_id) + return render(request, 'iwdModuleV2/workOrder.html', {'req' : req_request}) + +@login_required +def workOrder(request): + if request.method == 'POST': + request_instance = Requests.objects.get(pk=request.POST['id']) + formObject = WorkOrder() + formObject.request_id = request_instance + formObject.name = request.POST['name'] + formObject.date = request.POST['date'] + formObject.agency = request.POST['agency'] + formObject.amount = request.POST['amount'] + formObject.deposit = request.POST['deposit'] + formObject.alloted_time = request.POST['time'] + formObject.start_date = request.POST['startDate'] + formObject.completion_date = request.POST['completionDate'] + formObject.save() + + Requests.objects.filter(id=request.POST['id']).update(status="Work Order issued", issuedWorkOrder=1) + + d = HoldsDesignation.objects.get(user__username=request.user) + + inbox_files = view_inbox( + username=request.user, + designation=d.designation, + src_module="IWD" + ) + + for result in inbox_files: + if result['src_object_id'] == request.POST['id'] and result['sent_by_designation'] == 'Director': + delete_file(file_id = result['id']) + break + + inbox_files = view_inbox( + username=request.user, + designation=d.designation, + src_module="IWD" + ) + + obj = [] + + for result in inbox_files: + uploader = result['sent_by_designation'] + if uploader == 'Director': + src_object_id = result['src_object_id'] + request_object = Requests.objects.filter(id=src_object_id).first() + if request_object: + element = [request_object.id, request_object.name, request_object.area, request_object.description, request_object.requestCreatedBy] + obj.append(element) + + return render(request, 'iwdModuleV2/issueWorkOrder.html', {'obj' : obj}) + +@login_required +def requestsStatus(request): + obj = [] + requestsObject = Requests.objects.all() + for x in requestsObject: + element = [x.id, x.name, x.area, x.description, x.requestCreatedBy, x.status] + obj.append(element) + return render(request, 'iwdModuleV2/requestsStatus.html', {'obj' : obj}) + +@login_required +def inventory(request): + items = Inventory.objects.filter() + obj = [] + for i in items: + element = [i.id, i.name, i.quantity, i.cost] + obj.append(element) + return render(request, 'iwdModuleV2/inventory.html', {'obj' : obj}) + +@login_required +def addItemsView(request): + return render(request, 'iwdModuleV2/addItemsView.html') + +@login_required +def addItems(request): + if request.method == "POST": + formObject = Inventory() + formObject.name = request.POST['name'] + formObject.quantity = request.POST['quantity'] + formObject.cost = request.POST['cost'] + formObject.save() + return render(request, 'iwdModuleV2/addItemsView.html') + +@login_required +def editInventoryView(request): + items = Inventory.objects.filter() + obj = [] + for i in items: + element = [i.id, i.name, i.quantity, i.cost] + obj.append(element) + return render(request, 'iwdModuleV2/editInventory.html', {'obj' : obj}) + +@login_required +def editInventory(request): + if request.method == "POST": + itemId = request.POST['id'] + itemName = request.POST['name'] + itemQuantity = request.POST['quantity'] + itemCost = request.POST['cost'] + if itemQuantity == "0": + Inventory.objects.filter(id=itemId).delete() + else: + Inventory.objects.filter(id=itemId).update(name=itemName, quantity=itemQuantity, cost=itemCost) + items = Inventory.objects.filter() + obj = [] + for i in items: + element = [i.id, i.name, i.quantity, i.cost] + obj.append(element) + return render(request, 'iwdModuleV2/editInventory.html', {'obj' : obj}) + +@login_required +def requestsInProgess(request): + obj = [] + requestsObject = Requests.objects.filter(issuedWorkOrder=1, billGenerated=0) + for x in requestsObject: + element = [x.id, x.name, x.area, x.description, x.requestCreatedBy, x.workCompleted] + obj.append(element) + return render(request, 'iwdModuleV2/requestsInProgress.html', {'obj' : obj}) + +@login_required +def workCompleted(request): + if request.method == 'POST': + Requests.objects.filter(id=request.POST['id']).update(workCompleted=1, status="Work Completed") + obj = [] + requestsObject = Requests.objects.filter(issuedWorkOrder=1, billGenerated=0) + for x in requestsObject: + element = [x.id, x.name, x.area, x.description, x.requestCreatedBy, x.workCompleted] + obj.append(element) + return render(request, 'iwdModuleV2/requestsInProgress.html', {'obj' : obj}) + +@login_required +def requestFromInventory(request): + if request.method == 'POST': + requestId = request.POST['id'] + Req = Requests.objects.filter(id=requestId) + Items = Inventory.objects.filter() + req = [] + items = [] + for x in Req: + element = [x.id, x.name, x.area, x.description, x.requestCreatedBy, x.workCompleted] + req.append(element) + + for x in Items: + element = [x.id, x.name, x.quantity, x.cost] + items.append(element) + print(items) + return render(request, 'iwdModuleV2/requestFromInventory.html', {'req' : req, 'items' : items}) + +@login_required +def editInventoryAfterRequest(request): + if request.method == 'POST': + selectedItem = Inventory.objects.get(id=request.POST['selected_item_id']) + q = int(selectedItem.quantity) + if q == int(request.POST['quantity']): + Inventory.objects.filter(id=request.POST['selected_item_id']).delete() + else: + Inventory.objects.filter(id=request.POST['selected_item_id']).update(quantity=(q-int(request.POST['quantity']))) + formObject = UsedItems() + request_instance = Requests.objects.get(pk=request.POST['id']) + formObject.request_id = request_instance + formObject.itemName = selectedItem.name + formObject.cost = selectedItem.cost + formObject.quantity = request.POST['quantity'] + formObject.date = datetime.now().date() + formObject.save() + eligible = "" + userObj = request.user + userDesignationObjects = HoldsDesignation.objects.filter(user=userObj) + for p in userDesignationObjects: + eligible = p.designation.name + return render(request, 'iwdModuleV2/dashboard.html', {'eligible': eligible}) + +@login_required +def generateFinalBill(request): + if request.method == 'POST': + requestId = request.POST.get("id", 0) + + usedItems = UsedItems.objects.filter(request_id=requestId) + workOrder = WorkOrder.objects.get(request_id=requestId) + + itemsList = [] + + for used in usedItems: + element = [used.itemName, used.quantity, used.cost, used.date] + itemsList.append(element) + + filename = f"Request_id_{requestId}_final_bill.pdf" + + buffer = BytesIO() + + c = canvas.Canvas(buffer, pagesize=letter) + + c.setFont("Helvetica", 12) + + y_position = 750 + + rid = f"Request Id : {requestId}" + agency = f"Agency : {workOrder.agency}" + + c.drawString(100, y_position, rid) + y_position -= 20 + + c.drawString(100, y_position, agency) + y_position -= 20 + + c.drawString(100, y_position - 40, "Items:") + + data = [["Item Name", "Quantity", "Cost (in Rupees)", "Date of Purchase", "Total Amount"]] + for item in itemsList: + data.append([item[0], str(item[1]), "{:.2f}".format(item[2]), item[3], "{:.2f}".format(item[1] * item[2])]) + + total_amount_to_be_paid = sum(item[1] * item[2] for item in itemsList) + + c.drawString(100, y_position - 80, f"Total Amount (in Rupees): {total_amount_to_be_paid:.2f}") + + table = Table(data) + table.setStyle(TableStyle([('BACKGROUND', (0, 0), (-1, 0), colors.grey), + ('TEXTCOLOR', (0, 0), (-1, 0), colors.whitesmoke), + ('ALIGN', (0, 0), (-1, -1), 'CENTER'), + ('FONTNAME', (0, 0), (-1, 0), 'Helvetica-Bold'), + ('BOTTOMPADDING', (0, 0), (-1, 0), 12), + ('BACKGROUND', (0, 1), (-1, -1), colors.beige), + ('GRID', (0, 0), (-1, -1), 1, colors.black)])) + + table.wrapOn(c, 400, 600) + table.drawOn(c, 100, y_position - 60) + + c.save() + + buffer.seek(0) + + response = HttpResponse(content_type='application/pdf') + response['Content-Disposition'] = f'attachment; filename="{filename}"' + response.write(buffer.getvalue()) + + return response + +@login_required +def handleBillGeneratedRequests(request): + if request.method == 'POST': + requestId = request.POST.get("id", 0) + Requests.objects.filter(id=requestId).update(status="Bill Generated", billGenerated=1) + obj = [] + requestsObject = Requests.objects.filter(issuedWorkOrder=1, billGenerated=0) + for x in requestsObject: + element = [x.id, x.name, x.area, x.description, x.requestCreatedBy, x.workCompleted] + obj.append(element) + return render(request, 'iwdModuleV2/requestsInProgress.html', {'obj' : obj}) + +@login_required +def generatedBillsView(request): + request_object = Requests.objects.filter(billGenerated=1, billProcessed=0) + obj = [] + for x in request_object: + element = [x.id, x.name, x.description, x.area, x.requestCreatedBy] + obj.append(element) + designations = Designation.objects.filter() + + holdsDesignations = [] + + for d in designations: + for x in designations_list: + if d.name == x: + list = HoldsDesignation.objects.filter(designation=d) + holdsDesignations.append(list) + + return render(request, 'iwdModuleV2/generatedBillsRequestsView.html', {'obj' : obj, 'holdsDesignations' : holdsDesignations}) + +@login_required +def handleProcessedBills(request): + if request.method == 'POST': + requestId = request.POST.get("id", 0) + request_instance = Requests.objects.get(pk=requestId) + + d = HoldsDesignation.objects.get(user__username=request.POST['designation']) + d1 = HoldsDesignation.objects.get(user__username=request.user) + + create_file(uploader=request.user.username, + uploader_designation=d1.designation, + receiver=request.POST['designation'], + receiver_designation=d.designation, + src_module="IWD", + src_object_id= str(requestId), + file_extra_JSON= {"value": 2}, + attached_file = request.FILES['bill']) + + formObject = Bills() + formObject.request_id = request_instance + formObject.file = request.FILES['bill'] + formObject.save() + + Requests.objects.filter(id=requestId).update(status="Final Bill Processed", billProcessed=1) + + request_object = Requests.objects.filter(billGenerated=1, billProcessed=0) + obj = [] + for x in request_object: + element = [x.id, x.name, x.description, x.area, x.requestCreatedBy] + obj.append(element) + + eligible = "" + userObj = request.user + userDesignationObjects = HoldsDesignation.objects.filter(user=userObj) + for p in userDesignationObjects: + eligible = p.designation.name + + return render(request, 'iwdModuleV2/dashboard.html', {'obj' : obj, 'eligible': eligible}) + +@login_required +def auditDocumentView(request): + d = HoldsDesignation.objects.get(user__username=request.user) + + inbox_files = view_inbox( + username=request.user, + designation=d.designation, + src_module="IWD" + ) + + obj = [] + + for x in inbox_files: + requestId = x['src_object_id'] + files = Bills.objects.get(request_id=requestId) + element = [files.request_id.id, files.file, files.file.url] + obj.append(element) + + designations = Designation.objects.filter() + + holdsDesignations = [] + + for d in designations: + if d.name == "Engineer" or d.name == "Dean" or d.name == "Director" or d.name == "Accounts Admin" or d.name == "Admin IWD": + list = HoldsDesignation.objects.filter(designation=d) + holdsDesignations.append(list) + + return render(request, 'iwdModuleV2/auditDocumentView.html', {'obj' : obj, 'holdsDesignations' : holdsDesignations}) + +@login_required +def auditDocument(request): + if request.method == 'POST': + requestId = request.POST.get("id", 0) + + d = HoldsDesignation.objects.get(user__username=request.POST['designation']) + d1 = HoldsDesignation.objects.get(user__username=request.user) + + create_file(uploader=request.user.username, + uploader_designation=d1.designation, + receiver=request.POST['designation'], + receiver_designation=d.designation, + src_module="IWD", + src_object_id= str(requestId), + file_extra_JSON= {"value": 2}, + attached_file = None) + + inbox_files = view_inbox( + username=request.user, + designation=d1.designation, + src_module="IWD" + ) + + for result in inbox_files: + print(result['src_object_id']) + if result['src_object_id'] == requestId: + delete_file(file_id = result['id']) + break + + Requests.objects.filter(id=requestId).update(status="Bill Audited") + + eligible = "" + userObj = request.user + userDesignationObjects = HoldsDesignation.objects.filter(user=userObj) + for p in userDesignationObjects: + eligible = p.designation.name + + return render(request, 'iwdModuleV2/dashboard.html', {'eligible' : eligible}) + +@login_required +def settleBillsView(request): + d = HoldsDesignation.objects.get(user__username=request.user) + + inbox_files = view_inbox( + username=request.user, + designation=d.designation, + src_module="IWD" + ) + + obj = [] + + for x in inbox_files: + requestId = x['src_object_id'] + bills_object = Bills.objects.filter(request_id=requestId).first() + element = [bills_object.request_id.id, bills_object.file, bills_object.file.url] + obj.append(element) + + return render(request, 'iwdModuleV2/settleBillsView.html', {'obj' : obj}) + +@login_required +def handleSettleBillRequests(request): + if request.method == 'POST': + request_id = request.POST.get("id", 0) + + d = HoldsDesignation.objects.get(user__username=request.user) + + inbox_files = view_inbox( + username=request.user, + designation=d.designation, + src_module="IWD" + ) + + for p in inbox_files: + if p['src_object_id'] == request_id: + delete_file(file_id = p['id']) + break + + Requests.objects.filter(id=request_id).update(status="Final Bill Settled", billSettled=1) + + inbox_files = view_inbox( + username=request.user, + designation=d.designation, + src_module="IWD" + ) + + obj = [] + + for x in inbox_files: + request_id = x['src_object_id'] + bills_object = Bills.objects.get(request_id=request_id) + element = [request_id, bills_object.file, bills_object.file.url] + obj.append(element) + + return render(request, 'iwdModuleV2/settleBillsView.html', {'obj' : obj}) + +@login_required +def viewBudget(request): + + budget_object = Budget.objects.filter() + + obj = [] + + for x in budget_object: + element = [x.id, x.name, x.budgetIssued] + obj.append(element) + + return render(request, 'iwdModuleV2/viewBudget.html', {'obj' : obj}) + +@login_required +def budget(request): + budget_object = Budget.objects.filter() + + obj = [] + + for x in budget_object: + element = [x.id, x.name, x.budgetIssued] + obj.append(element) + + return render(request, 'iwdModuleV2/budget.html', {'obj' : obj}) + +@login_required +def addBudget(request): + if request.method == 'POST': + formObject = Budget() + formObject.name = request.POST['name'] + formObject.budgetIssued = request.POST['budget'] + formObject.save() + return render(request, 'iwdModuleV2/addBudget.html', {}) + +@login_required +def editBudgetView(request): + budget_object = Budget.objects.filter() + + obj = [] + + for x in budget_object: + element = [x.id, x.name, x.budgetIssued] + obj.append(element) + + return render(request, 'iwdModuleV2/editBudget.html', {'obj' : obj}) + +@login_required +def editBudget(request): + if request.method == "POST": + budgetId = request.POST['id'] + budgetName = request.POST['name'] + budgetIssued = request.POST['budget'] + Budget.objects.filter(id=budgetId).update(name=budgetName, budgetIssued=budgetIssued) + items = Budget.objects.filter() + obj = [] + for i in items: + element = [i.id, i.name, i.budgetIssued] + obj.append(element) + return render(request, 'iwdModuleV2/editBudget.html', {'obj' : obj}) + + diff --git a/FusionIIIT/templates/iwdModuleV2/Page1.html b/FusionIIIT/templates/iwdModuleV2/Page1.html index 8e7eac710..bfd2d8a69 100644 --- a/FusionIIIT/templates/iwdModuleV2/Page1.html +++ b/FusionIIIT/templates/iwdModuleV2/Page1.html @@ -65,7 +65,7 @@ AA And AES
Download
-
i
+
i
@@ -111,7 +111,8 @@ - Next + Next + {% if var %}

{{var}}

{% endif %} diff --git a/FusionIIIT/templates/iwdModuleV2/Page2.html b/FusionIIIT/templates/iwdModuleV2/Page2.html index 9f933e3be..715244f82 100644 --- a/FusionIIIT/templates/iwdModuleV2/Page2.html +++ b/FusionIIIT/templates/iwdModuleV2/Page2.html @@ -65,7 +65,7 @@ Corrigendum
Download
-
i
+
i
@@ -73,7 +73,8 @@ Addendum
Download
-
i
+ +
i
@@ -81,7 +82,8 @@ Pre-bid meeting details
Download
-
i
+ +
i
@@ -89,7 +91,8 @@ Technical-bid meeting details
Download
-
i
+ +
i
@@ -101,7 +104,8 @@ Financial-bid meeting details
Download
-
i
+ +
i
@@ -113,7 +117,8 @@ Letter of intent
Download
-
i
+ +
i
@@ -121,7 +126,8 @@ Work order
Download
-
i
+ +
i
@@ -129,7 +135,8 @@ Agreement Letter
Download
-
i
+ +
i
@@ -137,13 +144,15 @@ Milestones
Download
-
i
+ +
i
- Next + Prev + Next @@ -178,4 +187,4 @@ -{% endblock %} +{% endblock %} \ No newline at end of file diff --git a/FusionIIIT/templates/iwdModuleV2/Page3.html b/FusionIIIT/templates/iwdModuleV2/Page3.html index d19ae128d..ddde765e5 100644 --- a/FusionIIIT/templates/iwdModuleV2/Page3.html +++ b/FusionIIIT/templates/iwdModuleV2/Page3.html @@ -65,7 +65,8 @@ Extension of time
Download
-
i
+ +
i
@@ -76,7 +77,8 @@ - Next + Prev + Back To Home @@ -110,4 +112,4 @@ -{% endblock %} +{% endblock %} \ No newline at end of file diff --git a/FusionIIIT/templates/iwdModuleV2/addBudget.html b/FusionIIIT/templates/iwdModuleV2/addBudget.html new file mode 100644 index 000000000..6b12182cb --- /dev/null +++ b/FusionIIIT/templates/iwdModuleV2/addBudget.html @@ -0,0 +1,111 @@ +{% extends 'globals/base.html' %} +{% load static %} + + +{% block title %} +Academic +{% endblock %} + + +{% block body %} +{% block navBar %} +{% include 'dashboard/navbar.html' %} +{% endblock %} + +
+ + {% comment %}The left-margin segment!{% endcomment %} +
+ + {% comment %}The left-rail segment starts here!{% endcomment %} +
+ {% comment %}The user image card starts here!{% endcomment %} + {% block usercard %} + {% include 'globals/usercard.html' %} + {% endblock %} + {% comment %}The user image card ends here!{% endcomment %} + +
+ + {% comment %}The Tab-Menu ends here!{% endcomment %} +
+ {% comment %} + The left-rail segment ends here! + {% endcomment %} + + {% comment %} + The central-rail segment starts here! + {% endcomment %} +
+ + + + {% load static %} + {% comment %}the main tab starts here {% endcomment %} +
+ + +
+
+ Add Budget +
+
+ {% csrf_token %} +
+ +
+ +
+
+ +
+ +
+ +
+ +
+
+ +
+ +
+ +
+ +
+ +
+
+ + + +
+ {% comment %}The central-rail segment ends here!{% endcomment %} + + {% comment %}The right-rail segment starts here!{% endcomment %} +
+
+ {% comment %} + TODO: the right rail! + {% endcomment %} +
+
+ {% comment %}The right-rail segment ends here!{% endcomment %} + + {% comment %}The right-margin segment!{% endcomment %} +
+ +
+{% comment %}The grid ends here!{% endcomment %} + +{% endblock %} + +{% block javascript %} + + + + +{% endblock %} \ No newline at end of file diff --git a/FusionIIIT/templates/iwdModuleV2/addItemsView.html b/FusionIIIT/templates/iwdModuleV2/addItemsView.html new file mode 100644 index 000000000..b9b1f003c --- /dev/null +++ b/FusionIIIT/templates/iwdModuleV2/addItemsView.html @@ -0,0 +1,120 @@ +{% extends 'globals/base.html' %} +{% load static %} + + +{% block title %} +Academic +{% endblock %} + + +{% block body %} +{% block navBar %} +{% include 'dashboard/navbar.html' %} +{% endblock %} + +
+ + {% comment %}The left-margin segment!{% endcomment %} +
+ + {% comment %}The left-rail segment starts here!{% endcomment %} +
+ {% comment %}The user image card starts here!{% endcomment %} + {% block usercard %} + {% include 'globals/usercard.html' %} + {% endblock %} + {% comment %}The user image card ends here!{% endcomment %} + +
+ + {% comment %}The Tab-Menu ends here!{% endcomment %} +
+ {% comment %} + The left-rail segment ends here! + {% endcomment %} + + {% comment %} + The central-rail segment starts here! + {% endcomment %} +
+ + + + {% load static %} + {% comment %}the main tab starts here {% endcomment %} +
+ + +
+
+ Add Items +
+
+ {% csrf_token %} +
+ +
+ +
+
+ +
+ +
+ +
+ +
+
+ +
+ +
+ +
+ +
+
+ +
+ +
+ +
+ +
+ +
+
+ + + +
+ {% comment %}The central-rail segment ends here!{% endcomment %} + + {% comment %}The right-rail segment starts here!{% endcomment %} +
+
+ {% comment %} + TODO: the right rail! + {% endcomment %} +
+
+ {% comment %}The right-rail segment ends here!{% endcomment %} + + {% comment %}The right-margin segment!{% endcomment %} +
+ +
+{% comment %}The grid ends here!{% endcomment %} + +{% endblock %} + +{% block javascript %} + + + + +{% endblock %} \ No newline at end of file diff --git a/FusionIIIT/templates/iwdModuleV2/auditDocumentView.html b/FusionIIIT/templates/iwdModuleV2/auditDocumentView.html new file mode 100644 index 000000000..afb68fc59 --- /dev/null +++ b/FusionIIIT/templates/iwdModuleV2/auditDocumentView.html @@ -0,0 +1,121 @@ +{% extends 'globals/base.html' %} +{% load static %} + + +{% block title %} +Academic +{% endblock %} + + +{% block body %} +{% block navBar %} +{% include 'dashboard/navbar.html' %} +{% endblock %} + +
+ + {% comment %}The left-margin segment!{% endcomment %} +
+ + {% comment %}The left-rail segment starts here!{% endcomment %} +
+ {% comment %}The user image card starts here!{% endcomment %} + {% block usercard %} + {% include 'globals/usercard.html' %} + {% endblock %} + {% comment %}The user image card ends here!{% endcomment %} + +
+ + {% comment %}The Tab-Menu ends here!{% endcomment %} +
+ {% comment %} + The left-rail segment ends here! + {% endcomment %} + + {% comment %} + The central-rail segment starts here! + {% endcomment %} +
+ + + + {% load static %} + {% comment %}the main tab starts here {% endcomment %} +
+ +
+
+ Audit Documents +
+
+
+
+ + + + + + + + + + + {% for f in obj %} + + + + + + + + {% endfor %} +
IdDocumentSend To
{{f.0}} {{f.1}} + +
+ {% csrf_token %} + + + +
+
+
+
+
+ + + +
+ {% comment %}The central-rail segment ends here!{% endcomment %} + + {% comment %}The right-rail segment starts here!{% endcomment %} +
+
+ {% comment %} + TODO: the right rail! + {% endcomment %} +
+
+ {% comment %}The right-rail segment ends here!{% endcomment %} + + {% comment %}The right-margin segment!{% endcomment %} +
+ +
+{% comment %}The grid ends here!{% endcomment %} + +{% endblock %} + +{% block javascript %} + + + + +{% endblock %} \ No newline at end of file diff --git a/FusionIIIT/templates/iwdModuleV2/billsView.html b/FusionIIIT/templates/iwdModuleV2/billsView.html new file mode 100644 index 000000000..89969b1b8 --- /dev/null +++ b/FusionIIIT/templates/iwdModuleV2/billsView.html @@ -0,0 +1,147 @@ +{% extends 'globals/base.html' %} +{% load static %} + + +{% block title %} + Academic +{% endblock %} + + +{% block body %} + {% block navBar %} + {% include 'dashboard/navbar.html' %} + {% endblock %} + +
+ + {% comment %}The left-margin segment!{% endcomment %} +
+ + {% comment %}The left-rail segment starts here!{% endcomment %} +
+ {% comment %}The user image card starts here!{% endcomment %} + {% block usercard %} + {% include 'globals/usercard.html' %} + {% endblock %} + {% comment %}The user image card ends here!{% endcomment %} + +
+ + {% comment %}The Tab-Menu ends here!{% endcomment %} +
+ {% comment %} + The left-rail segment ends here! + {% endcomment %} + + {% comment %} + The central-rail segment starts here! + {% endcomment %} +
+ + + + + + {% load static %} +
+ Bills +
+
{% csrf_token %} +
+ +
+ +
+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+ +
+
+ +
+ +
+ +
+ +
+
+ +
+ +
+ +
+ +
+
+ +
+ +
+ +
+ +
+
+
+
+ +
+ + +
+
+
+
+
+
+
+
+ +
+ {% comment %}the doctor appointment tab ends here {% endcomment %} + + + + + + {% comment %}The central-rail segment ends here!{% endcomment %} + + {% comment %}The right-rail segment starts here!{% endcomment %} +
+
+ {% comment %} + TODO: the right rail! + {% endcomment %} +
+
+ {% comment %}The right-rail segment ends here!{% endcomment %} + + {% comment %}The right-margin segment!{% endcomment %} +
+ + + {% comment %}The grid ends here!{% endcomment %} + +{% endblock %} + +{% block javascript %} + + + + +{% endblock %} \ No newline at end of file diff --git a/FusionIIIT/templates/iwdModuleV2/budget.html b/FusionIIIT/templates/iwdModuleV2/budget.html new file mode 100644 index 000000000..6a35af9fe --- /dev/null +++ b/FusionIIIT/templates/iwdModuleV2/budget.html @@ -0,0 +1,111 @@ +{% extends 'globals/base.html' %} +{% load static %} + + +{% block title %} +Academic +{% endblock %} + + +{% block body %} +{% block navBar %} +{% include 'dashboard/navbar.html' %} +{% endblock %} + +
+ + {% comment %}The left-margin segment!{% endcomment %} +
+ + {% comment %}The left-rail segment starts here!{% endcomment %} +
+ {% comment %}The user image card starts here!{% endcomment %} + {% block usercard %} + {% include 'globals/usercard.html' %} + {% endblock %} + {% comment %}The user image card ends here!{% endcomment %} + +
+ + {% comment %}The Tab-Menu ends here!{% endcomment %} +
+ {% comment %} + The left-rail segment ends here! + {% endcomment %} + + {% comment %} + The central-rail segment starts here! + {% endcomment %} +
+ + + + {% load static %} + {% comment %}the main tab starts here {% endcomment %} + +
+ + + +
+
+ Budget +
+
+
+
+ + + + + + + + + + {% for f in obj %} + + + + + + + + {% endfor %} +
IdNameBudget Issued
{{f.0}}{{f.1}}{{f.2}}
+
+
+
+ + + +
+ {% comment %}The central-rail segment ends here!{% endcomment %} + + {% comment %}The right-rail segment starts here!{% endcomment %} +
+
+ {% comment %} + TODO: the right rail! + {% endcomment %} +
+
+ {% comment %}The right-rail segment ends here!{% endcomment %} + + {% comment %}The right-margin segment!{% endcomment %} +
+ +
+{% comment %}The grid ends here!{% endcomment %} + +{% endblock %} + +{% block javascript %} + + + + +{% endblock %} \ No newline at end of file diff --git a/FusionIIIT/templates/iwdModuleV2/createWork.html b/FusionIIIT/templates/iwdModuleV2/createWork.html index 04323ba15..7fa533571 100644 --- a/FusionIIIT/templates/iwdModuleV2/createWork.html +++ b/FusionIIIT/templates/iwdModuleV2/createWork.html @@ -4,20 +4,17 @@ Create Project Requisition: -
+
- - -
+ -
+ - -
+ -
+
diff --git a/FusionIIIT/templates/iwdModuleV2/createdRequests.html b/FusionIIIT/templates/iwdModuleV2/createdRequests.html new file mode 100644 index 000000000..cce743dec --- /dev/null +++ b/FusionIIIT/templates/iwdModuleV2/createdRequests.html @@ -0,0 +1,128 @@ +{% extends 'globals/base.html' %} +{% load static %} + + +{% block title %} +Academic +{% endblock %} + + +{% block body %} +{% block navBar %} +{% include 'dashboard/navbar.html' %} +{% endblock %} + +
+ + {% comment %}The left-margin segment!{% endcomment %} +
+ + {% comment %}The left-rail segment starts here!{% endcomment %} +
+ {% comment %}The user image card starts here!{% endcomment %} + {% block usercard %} + {% include 'globals/usercard.html' %} + {% endblock %} + {% comment %}The user image card ends here!{% endcomment %} + +
+ + {% comment %}The Tab-Menu ends here!{% endcomment %} +
+ {% comment %} + The left-rail segment ends here! + {% endcomment %} + + {% comment %} + The central-rail segment starts here! + {% endcomment %} +
+ + + + {% load static %} + {% comment %}the main tab starts here {% endcomment %} +
+ +
+
+ Created Requests +
+
+
+
+ + + + + + + + + + + + + + + {% for f in obj %} + + + + + + + + + + + {% endfor %} +
Details:-
IdNameDescriptionAreaCreated BySend to
{{f.0}}{{f.1}}{{f.3}}{{f.2}}{{f.4}} + +
+ {% csrf_token %} + + + +
+
+
+
+
+ + + +
+ {% comment %}The central-rail segment ends here!{% endcomment %} + + {% comment %}The right-rail segment starts here!{% endcomment %} +
+
+ {% comment %} + TODO: the right rail! + {% endcomment %} +
+
+ {% comment %}The right-rail segment ends here!{% endcomment %} + + {% comment %}The right-margin segment!{% endcomment %} +
+ +
+{% comment %}The grid ends here!{% endcomment %} + +{% endblock %} + +{% block javascript %} + + + + +{% endblock %} \ No newline at end of file diff --git a/FusionIIIT/templates/iwdModuleV2/dashboard.html b/FusionIIIT/templates/iwdModuleV2/dashboard.html index 9f0e1db49..3e6a02c64 100644 --- a/FusionIIIT/templates/iwdModuleV2/dashboard.html +++ b/FusionIIIT/templates/iwdModuleV2/dashboard.html @@ -34,28 +34,71 @@
{% comment %}ROW #2 starts here!{% endcomment %} - {% if eligible %} + {% if eligible == "Junior Engineer" or eligible == "Executive Engineer (Civil)" or eligible == "Electrical_AE" or eligible == "Electrical_JE" or eligible == "EE" or eligible == "Civil_AE" or eligible == "Civil_AE" %}
{% comment %}The Tab-Menu starts here!{% endcomment %} + {% comment %}The Tab-Menu ends here!{% endcomment %} + +
+ {% comment %}ROW #2 ends here!{% endcomment %} + + + {% endif %} + {% if eligible == "Dean (P&D)" %} +
+ {% comment %}The Tab-Menu starts here!{% endcomment %} + {% comment %}The Tab-Menu ends here!{% endcomment %} @@ -67,24 +110,134 @@ {% comment %}The left-rail segment ends here!{% endcomment %} {% comment %}The central-rail segment starts here!{% endcomment %} -
- {% comment %}The Appointments Form starts here!{% endcomment %} -
- {% block appointment %} - {% include 'iwdModuleV2/createWork.html' %} - {% endblock %} + {% endif %} + {% if eligible == "Director" %} +
+ {% comment %}The Tab-Menu starts here!{% endcomment %} + + {% comment %}The Tab-Menu ends here!{% endcomment %} +
- {% comment %}The appointment Form ends here!{% endcomment %} + {% comment %}ROW #2 ends here!{% endcomment %} + +
+ {% comment %}The left-rail segment ends here!{% endcomment %} + + {% comment %}The central-rail segment starts here!{% endcomment %} + {% endif %} + {% if eligible == "Admin IWD" %} +
+ {% comment %}The Tab-Menu starts here!{% endcomment %} + + {% comment %}The Tab-Menu ends here!{% endcomment %} + +
+ {% comment %}ROW #2 ends here!{% endcomment %} + +
+ {% comment %}The left-rail segment ends here!{% endcomment %} + + {% comment %}The central-rail segment starts here!{% endcomment %} + {% endif %} + {% if eligible == "Accounts Admin" %} +
+ {% comment %}The Tab-Menu starts here!{% endcomment %} + + {% comment %}The Tab-Menu ends here!{% endcomment %} + +
+ {% comment %}ROW #2 ends here!{% endcomment %} + +
+ {% comment %}The left-rail segment ends here!{% endcomment %} + + {% comment %}The central-rail segment starts here!{% endcomment %} + {% endif %} + {% if eligible == "Auditor" %} +
+ {% comment %}The Tab-Menu starts here!{% endcomment %} + + {% comment %}The Tab-Menu ends here!{% endcomment %} - {% comment %}The patient history starts here!{% endcomment %} -
- {% block history %} - {% include 'iwdModuleV2/viewWork.html' %} - {% endblock %}
- {% comment %}The patient history ends here!{% endcomment %} + {% comment %}ROW #2 ends here!{% endcomment %}
+ {% comment %}The left-rail segment ends here!{% endcomment %} + + {% comment %}The central-rail segment starts here!{% endcomment %} + {% endif %} + {% if eligible != "Auditor" and eligible != "Accounts Admin" and eligible != "Admin IWD" and eligible != "Director" and eligible != "Dean (P&D)" and eligible != "student" %} +
+ {% comment %}The Tab-Menu starts here!{% endcomment %} + + {% comment %}The Tab-Menu ends here!{% endcomment %} + +
+ {% comment %}ROW #2 ends here!{% endcomment %} + + + {% comment %}The left-rail segment ends here!{% endcomment %} + + {% comment %}The central-rail segment starts here!{% endcomment %} {% endif %} {% comment %}The central-rail segment ends here!{% endcomment %} diff --git a/FusionIIIT/templates/iwdModuleV2/deanProcessedRequests.html b/FusionIIIT/templates/iwdModuleV2/deanProcessedRequests.html new file mode 100644 index 000000000..98f9ad72f --- /dev/null +++ b/FusionIIIT/templates/iwdModuleV2/deanProcessedRequests.html @@ -0,0 +1,110 @@ +{% extends 'globals/base.html' %} +{% load static %} + +{% block title %} + Academic +{% endblock %} + +{% block body %} + {% block navBar %} + {% include 'dashboard/navbar.html' %} + {% endblock %} + + +
+
+
+ {% block usercard %} + {% include 'globals/usercard.html' %} + {% endblock %} +
+
+
+
+ + +
+
+ Dean processed Requests +
+ +
+
+
+ + + + + + + + + + + + + {% for f in obj %} + + + + + + + + + + + {% endfor %} +
Details:-
IdNameDescriptionAreaCreated By
{{f.0}}{{f.1}}{{f.3}}{{f.2}}{{f.4}} +
+
+ {% csrf_token %} + + + +
+
+ {% csrf_token %} + + + +
+
+
+
+
+
+
+
+
+ +
+
+
+
+{% endblock %} diff --git a/FusionIIIT/templates/iwdModuleV2/editBudget.html b/FusionIIIT/templates/iwdModuleV2/editBudget.html new file mode 100644 index 000000000..892ba9481 --- /dev/null +++ b/FusionIIIT/templates/iwdModuleV2/editBudget.html @@ -0,0 +1,120 @@ +{% extends 'globals/base.html' %} +{% load static %} + + +{% block title %} +Academic +{% endblock %} + + +{% block body %} +{% block navBar %} +{% include 'dashboard/navbar.html' %} +{% endblock %} + +
+ + {% comment %}The left-margin segment!{% endcomment %} +
+ + {% comment %}The left-rail segment starts here!{% endcomment %} +
+ {% comment %}The user image card starts here!{% endcomment %} + {% block usercard %} + {% include 'globals/usercard.html' %} + {% endblock %} + {% comment %}The user image card ends here!{% endcomment %} + +
+ + {% comment %}The Tab-Menu ends here!{% endcomment %} +
+ {% comment %} + The left-rail segment ends here! + {% endcomment %} + + {% comment %} + The central-rail segment starts here! + {% endcomment %} +
+ + + + {% load static %} + {% comment %}the main tab starts here {% endcomment %} +
+ + +
+
+ Budget +
+
+
+
+ + + + + + + + + + + + {% for f in obj %} + + + + {% csrf_token %} + + + + + + + + {% endfor %} +
IdNameBudget Issued
{{f.0}} + + + + + + +
+
+
+
+ + + +
+ {% comment %}The central-rail segment ends here!{% endcomment %} + + {% comment %}The right-rail segment starts here!{% endcomment %} +
+
+ {% comment %} + TODO: the right rail! + {% endcomment %} +
+
+ {% comment %}The right-rail segment ends here!{% endcomment %} + + {% comment %}The right-margin segment!{% endcomment %} +
+ +
+{% comment %}The grid ends here!{% endcomment %} + +{% endblock %} + +{% block javascript %} + + + + +{% endblock %} \ No newline at end of file diff --git a/FusionIIIT/templates/iwdModuleV2/editInventory.html b/FusionIIIT/templates/iwdModuleV2/editInventory.html new file mode 100644 index 000000000..e06876b90 --- /dev/null +++ b/FusionIIIT/templates/iwdModuleV2/editInventory.html @@ -0,0 +1,124 @@ +{% extends 'globals/base.html' %} +{% load static %} + + +{% block title %} +Academic +{% endblock %} + + +{% block body %} +{% block navBar %} +{% include 'dashboard/navbar.html' %} +{% endblock %} + +
+ + {% comment %}The left-margin segment!{% endcomment %} +
+ + {% comment %}The left-rail segment starts here!{% endcomment %} +
+ {% comment %}The user image card starts here!{% endcomment %} + {% block usercard %} + {% include 'globals/usercard.html' %} + {% endblock %} + {% comment %}The user image card ends here!{% endcomment %} + +
+ + {% comment %}The Tab-Menu ends here!{% endcomment %} +
+ {% comment %} + The left-rail segment ends here! + {% endcomment %} + + {% comment %} + The central-rail segment starts here! + {% endcomment %} +
+ + + + {% load static %} + {% comment %}the main tab starts here {% endcomment %} +
+ + +
+
+ Inventory +
+
+
+
+ + + + + + + + + + + + + {% for f in obj %} + + + + {% csrf_token %} + + + + + + + + + {% endfor %} +
IdNameQuantityCost (in Rupees)
{{f.0}} + + + + + + + + +
+
+
+
+ + + +
+ {% comment %}The central-rail segment ends here!{% endcomment %} + + {% comment %}The right-rail segment starts here!{% endcomment %} +
+
+ {% comment %} + TODO: the right rail! + {% endcomment %} +
+
+ {% comment %}The right-rail segment ends here!{% endcomment %} + + {% comment %}The right-margin segment!{% endcomment %} +
+ +
+{% comment %}The grid ends here!{% endcomment %} + +{% endblock %} + +{% block javascript %} + + + + +{% endblock %} \ No newline at end of file diff --git a/FusionIIIT/templates/iwdModuleV2/engineerProcessedRequests.html b/FusionIIIT/templates/iwdModuleV2/engineerProcessedRequests.html new file mode 100644 index 000000000..6b7386054 --- /dev/null +++ b/FusionIIIT/templates/iwdModuleV2/engineerProcessedRequests.html @@ -0,0 +1,128 @@ +{% extends 'globals/base.html' %} +{% load static %} + + +{% block title %} + Academic +{% endblock %} + + +{% block body %} + {% block navBar %} + {% include 'dashboard/navbar.html' %} + {% endblock %} + +
+ + {% comment %}The left-margin segment!{% endcomment %} +
+ + {% comment %}The left-rail segment starts here!{% endcomment %} +
+ {% comment %}The user image card starts here!{% endcomment %} + {% block usercard %} + {% include 'globals/usercard.html' %} + {% endblock %} + {% comment %}The user image card ends here!{% endcomment %} + +
+ + {% comment %}The Tab-Menu ends here!{% endcomment %} +
+ {% comment %} + The left-rail segment ends here! + {% endcomment %} + + {% comment %} + The central-rail segment starts here! + {% endcomment %} +
+ + + + + + {% load static %} + {% comment %}the main tab starts here {% endcomment %} +
+ +
+
+ Engineer Processed Requests +
+
+
+
+ + + + + + + + + + + + + + {% for f in obj %} + + + + + + + + + + + {% endfor %} +
Details:-
IdNameDescriptionAreaCreated By
{{f.0}}{{f.1}}{{f.3}}{{f.2}}{{f.4}} + +
+ {% csrf_token %} + + + +
+
+
+
+
+ + + +
+ {% comment %}The central-rail segment ends here!{% endcomment %} + + {% comment %}The right-rail segment starts here!{% endcomment %} +
+
+ {% comment %} + TODO: the right rail! + {% endcomment %} +
+
+ {% comment %}The right-rail segment ends here!{% endcomment %} + + {% comment %}The right-margin segment!{% endcomment %} +
+ +
+ {% comment %}The grid ends here!{% endcomment %} + +{% endblock %} + +{% block javascript %} + + + + +{% endblock %} \ No newline at end of file diff --git a/FusionIIIT/templates/iwdModuleV2/generatedBillsRequestsView.html b/FusionIIIT/templates/iwdModuleV2/generatedBillsRequestsView.html new file mode 100644 index 000000000..38badd860 --- /dev/null +++ b/FusionIIIT/templates/iwdModuleV2/generatedBillsRequestsView.html @@ -0,0 +1,127 @@ +{% extends 'globals/base.html' %} +{% load static %} + + +{% block title %} +Academic +{% endblock %} + + +{% block body %} +{% block navBar %} +{% include 'dashboard/navbar.html' %} +{% endblock %} + +
+ + {% comment %}The left-margin segment!{% endcomment %} +
+ + {% comment %}The left-rail segment starts here!{% endcomment %} +
+ {% comment %}The user image card starts here!{% endcomment %} + {% block usercard %} + {% include 'globals/usercard.html' %} + {% endblock %} + {% comment %}The user image card ends here!{% endcomment %} + +
+ + {% comment %}The Tab-Menu ends here!{% endcomment %} +
+ {% comment %} + The left-rail segment ends here! + {% endcomment %} + + {% comment %} + The central-rail segment starts here! + {% endcomment %} +
+ + + + {% load static %} + {% comment %}the main tab starts here {% endcomment %} +
+ +
+
+ Generated Bills Requests +
+
+
+
+ + + + + + + + + + + + + {% for f in obj %} + + + + + + + {% csrf_token %} + + + + + + {% endfor %} +
IdNameCreated ByBillSend to
{{f.0}}{{f.1}}{{f.4}}
+ + + + + + +
+
+
+
+ + + +
+ {% comment %}The central-rail segment ends here!{% endcomment %} + + {% comment %}The right-rail segment starts here!{% endcomment %} +
+
+ {% comment %} + TODO: the right rail! + {% endcomment %} +
+
+ {% comment %}The right-rail segment ends here!{% endcomment %} + + {% comment %}The right-margin segment!{% endcomment %} +
+ +
+{% comment %}The grid ends here!{% endcomment %} + +{% endblock %} + +{% block javascript %} + + + + +{% endblock %} \ No newline at end of file diff --git a/FusionIIIT/templates/iwdModuleV2/inventory.html b/FusionIIIT/templates/iwdModuleV2/inventory.html new file mode 100644 index 000000000..4e35ce614 --- /dev/null +++ b/FusionIIIT/templates/iwdModuleV2/inventory.html @@ -0,0 +1,111 @@ +{% extends 'globals/base.html' %} +{% load static %} + + +{% block title %} +Academic +{% endblock %} + + +{% block body %} +{% block navBar %} +{% include 'dashboard/navbar.html' %} +{% endblock %} + +
+ + {% comment %}The left-margin segment!{% endcomment %} +
+ + {% comment %}The left-rail segment starts here!{% endcomment %} +
+ {% comment %}The user image card starts here!{% endcomment %} + {% block usercard %} + {% include 'globals/usercard.html' %} + {% endblock %} + {% comment %}The user image card ends here!{% endcomment %} + +
+ + {% comment %}The Tab-Menu ends here!{% endcomment %} +
+ {% comment %} + The left-rail segment ends here! + {% endcomment %} + + {% comment %} + The central-rail segment starts here! + {% endcomment %} +
+ + + + {% load static %} + {% comment %}the main tab starts here {% endcomment %} +
+ + + +
+
+ Inventory +
+
+
+
+ + + + + + + + + + + + {% for f in obj %} + + + + + + + + + {% endfor %} +
IdNameQuantityCost (in Rupees)
{{f.0}}{{f.1}}{{f.2}}{{f.3}}
+
+
+
+ + + +
+ {% comment %}The central-rail segment ends here!{% endcomment %} + + {% comment %}The right-rail segment starts here!{% endcomment %} +
+
+ {% comment %} + TODO: the right rail! + {% endcomment %} +
+
+ {% comment %}The right-rail segment ends here!{% endcomment %} + + {% comment %}The right-margin segment!{% endcomment %} +
+ +
+{% comment %}The grid ends here!{% endcomment %} + +{% endblock %} + +{% block javascript %} + + + + +{% endblock %} \ No newline at end of file diff --git a/FusionIIIT/templates/iwdModuleV2/issueWorkOrder.html b/FusionIIIT/templates/iwdModuleV2/issueWorkOrder.html new file mode 100644 index 000000000..7aef765b2 --- /dev/null +++ b/FusionIIIT/templates/iwdModuleV2/issueWorkOrder.html @@ -0,0 +1,120 @@ +{% extends 'globals/base.html' %} +{% load static %} + + +{% block title %} +Academic +{% endblock %} + + +{% block body %} +{% block navBar %} +{% include 'dashboard/navbar.html' %} +{% endblock %} + +
+ + {% comment %}The left-margin segment!{% endcomment %} +
+ + {% comment %}The left-rail segment starts here!{% endcomment %} +
+ {% comment %}The user image card starts here!{% endcomment %} + {% block usercard %} + {% include 'globals/usercard.html' %} + {% endblock %} + {% comment %}The user image card ends here!{% endcomment %} + +
+ + {% comment %}The Tab-Menu ends here!{% endcomment %} +
+ {% comment %} + The left-rail segment ends here! + {% endcomment %} + + {% comment %} + The central-rail segment starts here! + {% endcomment %} +
+ + + + {% load static %} + {% comment %}the main tab starts here {% endcomment %} +
+ +
+
+ Issue Work Order +
+
+
+
+ + + + + + + + + + + + + + {% for f in obj %} + + + + + + + + + + + {% endfor %} +
Details:-
IdNameDescriptionAreaCreated By
{{f.0}}{{f.1}}{{f.3}}{{f.2}}{{f.4}} + +
+ {% csrf_token %} + + +
+
+
+
+
+ + + +
+ {% comment %}The central-rail segment ends here!{% endcomment %} + + {% comment %}The right-rail segment starts here!{% endcomment %} +
+
+ {% comment %} + TODO: the right rail! + {% endcomment %} +
+
+ {% comment %}The right-rail segment ends here!{% endcomment %} + + {% comment %}The right-margin segment!{% endcomment %} +
+ +
+{% comment %}The grid ends here!{% endcomment %} + +{% endblock %} + +{% block javascript %} + + + + +{% endblock %} \ No newline at end of file diff --git a/FusionIIIT/templates/iwdModuleV2/page1_create.html b/FusionIIIT/templates/iwdModuleV2/page1_create.html index c549fe90f..de798b7cb 100644 --- a/FusionIIIT/templates/iwdModuleV2/page1_create.html +++ b/FusionIIIT/templates/iwdModuleV2/page1_create.html @@ -78,7 +78,7 @@
- +

+{% comment %}The grid ends here!{% endcomment %} {% endblock %} {% block javascript %} - - - + + + -{% endblock %} +{% endblock %} \ No newline at end of file diff --git a/FusionIIIT/templates/iwdModuleV2/rejectedRequests.html b/FusionIIIT/templates/iwdModuleV2/rejectedRequests.html new file mode 100644 index 000000000..b3f95e93b --- /dev/null +++ b/FusionIIIT/templates/iwdModuleV2/rejectedRequests.html @@ -0,0 +1,118 @@ +{% extends 'globals/base.html' %} +{% load static %} + + +{% block title %} +Academic +{% endblock %} + + +{% block body %} +{% block navBar %} +{% include 'dashboard/navbar.html' %} +{% endblock %} + +
+ + {% comment %}The left-margin segment!{% endcomment %} +
+ + {% comment %}The left-rail segment starts here!{% endcomment %} +
+ {% comment %}The user image card starts here!{% endcomment %} + {% block usercard %} + {% include 'globals/usercard.html' %} + {% endblock %} + {% comment %}The user image card ends here!{% endcomment %} + +
+ + {% comment %}The Tab-Menu ends here!{% endcomment %} +
+ {% comment %} + The left-rail segment ends here! + {% endcomment %} + + {% comment %} + The central-rail segment starts here! + {% endcomment %} +
+ + + + {% load static %} + {% comment %}the main tab starts here {% endcomment %} +
+ +
+
+ Rejected Requests +
+
+
+
+ + + + + + + + + + + + + {% for f in obj %} + + + + + + + + + + + {% endfor %} +
IdNameDescriptionAreaCreated By
{{f.0}}{{f.1}}{{f.3}}{{f.2}}{{f.4}} +
+ {% csrf_token %} + + +
+
+
+
+
+ + + +
+ {% comment %}The central-rail segment ends here!{% endcomment %} + + {% comment %}The right-rail segment starts here!{% endcomment %} +
+
+ {% comment %} + TODO: the right rail! + {% endcomment %} +
+
+ {% comment %}The right-rail segment ends here!{% endcomment %} + + {% comment %}The right-margin segment!{% endcomment %} +
+ +
+{% comment %}The grid ends here!{% endcomment %} + +{% endblock %} + +{% block javascript %} + + + + +{% endblock %} \ No newline at end of file diff --git a/FusionIIIT/templates/iwdModuleV2/requestFromInventory.html b/FusionIIIT/templates/iwdModuleV2/requestFromInventory.html new file mode 100644 index 000000000..8a1e53a1d --- /dev/null +++ b/FusionIIIT/templates/iwdModuleV2/requestFromInventory.html @@ -0,0 +1,139 @@ +{% extends 'globals/base.html' %} +{% load static %} + + +{% block title %} +Academic +{% endblock %} + + +{% block body %} +{% block navBar %} +{% include 'dashboard/navbar.html' %} +{% endblock %} + +
+ + {% comment %}The left-margin segment!{% endcomment %} +
+ + {% comment %}The left-rail segment starts here!{% endcomment %} +
+ {% comment %}The user image card starts here!{% endcomment %} + {% block usercard %} + {% include 'globals/usercard.html' %} + {% endblock %} + {% comment %}The user image card ends here!{% endcomment %} + +
+ + {% comment %}The Tab-Menu ends here!{% endcomment %} +
+ {% comment %} + The left-rail segment ends here! + {% endcomment %} + + {% comment %} + The central-rail segment starts here! + {% endcomment %} +
+ + + + {% load static %} + {% comment %}the main tab starts here {% endcomment %} +
+ +
+
+ Request from Inventory +
+
{% csrf_token %} +
+ +
+ +
+
+ + + +
+ +
+ +
+ +
+
+ +
+ +
+ +
+ {% csrf_token %} + + +
+ +
+ +
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+
+
+ {% comment %}The central-rail segment ends here!{% endcomment %} + + {% comment %}The right-rail segment starts here!{% endcomment %} +
+
+ {% comment %} + TODO: the right rail! + {% endcomment %} +
+
+ {% comment %}The right-rail segment ends here!{% endcomment %} + + {% comment %}The right-margin segment!{% endcomment %} +
+ +
+{% comment %}The grid ends here!{% endcomment %} + +{% endblock %} + +{% block javascript %} + + + + +{% endblock %} diff --git a/FusionIIIT/templates/iwdModuleV2/requestsInProgress.html b/FusionIIIT/templates/iwdModuleV2/requestsInProgress.html new file mode 100644 index 000000000..bceaad0ab --- /dev/null +++ b/FusionIIIT/templates/iwdModuleV2/requestsInProgress.html @@ -0,0 +1,140 @@ +{% extends 'globals/base.html' %} +{% load static %} + + +{% block title %} +Academic +{% endblock %} + + +{% block body %} +{% block navBar %} +{% include 'dashboard/navbar.html' %} +{% endblock %} + +
+ + {% comment %}The left-margin segment!{% endcomment %} +
+ + {% comment %}The left-rail segment starts here!{% endcomment %} +
+ {% comment %}The user image card starts here!{% endcomment %} + {% block usercard %} + {% include 'globals/usercard.html' %} + {% endblock %} + {% comment %}The user image card ends here!{% endcomment %} + +
+ + {% comment %}The Tab-Menu ends here!{% endcomment %} +
+ {% comment %} + The left-rail segment ends here! + {% endcomment %} + + {% comment %} + The central-rail segment starts here! + {% endcomment %} +
+ + + + {% load static %} + {% comment %}the main tab starts here {% endcomment %} +
+ +
+
+ Requests in Progress +
+
+
+
+ + + + + + + + + + + + + + {% for f in obj %} + + + + + + + + + + + {% endfor %} +
Details:-
IdNameDescriptionAreaCreated By
{{f.0}}{{f.1}}{{f.3}}{{f.2}}{{f.4}} + {% if f.5 == 1 %} +
+ {% csrf_token %} + + +
+
+
+ {% csrf_token %} + + +
+ {% endif %} + {% if f.5 == 0 %} +
+ {% csrf_token %} + + +
+
+
+ {% csrf_token %} + + +
+ {% endif %} +
+
+
+
+ + + +
+ {% comment %}The central-rail segment ends here!{% endcomment %} + + {% comment %}The right-rail segment starts here!{% endcomment %} +
+
+ {% comment %} + TODO: the right rail! + {% endcomment %} +
+
+ {% comment %}The right-rail segment ends here!{% endcomment %} + + {% comment %}The right-margin segment!{% endcomment %} +
+ +
+{% comment %}The grid ends here!{% endcomment %} + +{% endblock %} + +{% block javascript %} + + + + +{% endblock %} \ No newline at end of file diff --git a/FusionIIIT/templates/iwdModuleV2/requestsStatus.html b/FusionIIIT/templates/iwdModuleV2/requestsStatus.html new file mode 100644 index 000000000..14711ab16 --- /dev/null +++ b/FusionIIIT/templates/iwdModuleV2/requestsStatus.html @@ -0,0 +1,114 @@ +{% extends 'globals/base.html' %} +{% load static %} + + +{% block title %} + Academic +{% endblock %} + + +{% block body %} + {% block navBar %} + {% include 'dashboard/navbar.html' %} + {% endblock %} + +
+ + {% comment %}The left-margin segment!{% endcomment %} +
+ + {% comment %}The left-rail segment starts here!{% endcomment %} +
+ {% comment %}The user image card starts here!{% endcomment %} + {% block usercard %} + {% include 'globals/usercard.html' %} + {% endblock %} + {% comment %}The user image card ends here!{% endcomment %} + +
+ + {% comment %}The Tab-Menu ends here!{% endcomment %} +
+ {% comment %} + The left-rail segment ends here! + {% endcomment %} + + {% comment %} + The central-rail segment starts here! + {% endcomment %} +
+ + + + + + {% load static %} + {% comment %}the main tab starts here {% endcomment %} +
+ +
+
+ Requests Status +
+
+
+
+ + + + + + + + + + + + + + {% for f in obj %} + + + + + + + + + + + {% endfor %} +
Details:-
IdNameDescriptionAreaCreated ByStatus
{{f.0}}{{f.1}}{{f.3}}{{f.2}}{{f.4}}{{f.5}}
+
+
+
+ + + +
+ {% comment %}The central-rail segment ends here!{% endcomment %} + + {% comment %}The right-rail segment starts here!{% endcomment %} +
+
+ {% comment %} + TODO: the right rail! + {% endcomment %} +
+
+ {% comment %}The right-rail segment ends here!{% endcomment %} + + {% comment %}The right-margin segment!{% endcomment %} +
+ +
+ {% comment %}The grid ends here!{% endcomment %} + +{% endblock %} + +{% block javascript %} + + + + +{% endblock %} \ No newline at end of file diff --git a/FusionIIIT/templates/iwdModuleV2/requestsView.html b/FusionIIIT/templates/iwdModuleV2/requestsView.html new file mode 100644 index 000000000..882e84274 --- /dev/null +++ b/FusionIIIT/templates/iwdModuleV2/requestsView.html @@ -0,0 +1,135 @@ +{% extends 'globals/base.html' %} +{% load static %} + + +{% block title %} +Academic +{% endblock %} + + +{% block body %} +{% block navBar %} +{% include 'dashboard/navbar.html' %} +{% endblock %} + +
+ + {% comment %}The left-margin segment!{% endcomment %} +
+ + {% comment %}The left-rail segment starts here!{% endcomment %} +
+ {% comment %}The user image card starts here!{% endcomment %} + {% block usercard %} + {% include 'globals/usercard.html' %} + {% endblock %} + {% comment %}The user image card ends here!{% endcomment %} + +
+ + {% comment %}The Tab-Menu ends here!{% endcomment %} +
+ {% comment %} + The left-rail segment ends here! + {% endcomment %} + + {% comment %} + The central-rail segment starts here! + {% endcomment %} +
+ + + + {% load static %} + {% comment %}the main tab starts here {% endcomment %} +
+ +
+
+ Requests +
+
{% csrf_token %} +
+ +
+ +
+
+ +
+ +
+ +
+ +
+
+ +
+ +
+ +
+ +
+
+ +
+ +
+ +
+ +
+
+ +
+ + +
+ +
+ +
+
+ + + +
+ {% comment %}The central-rail segment ends here!{% endcomment %} + + {% comment %}The right-rail segment starts here!{% endcomment %} +
+
+ {% comment %} + TODO: the right rail! + {% endcomment %} +
+
+ {% comment %}The right-rail segment ends here!{% endcomment %} + + {% comment %}The right-margin segment!{% endcomment %} +
+ +
+{% comment %}The grid ends here!{% endcomment %} + +{% endblock %} + +{% block javascript %} + + + + +{% endblock %} + + + + diff --git a/FusionIIIT/templates/iwdModuleV2/settleBillsView.html b/FusionIIIT/templates/iwdModuleV2/settleBillsView.html new file mode 100644 index 000000000..928d3a092 --- /dev/null +++ b/FusionIIIT/templates/iwdModuleV2/settleBillsView.html @@ -0,0 +1,113 @@ +{% extends 'globals/base.html' %} +{% load static %} + + +{% block title %} +Academic +{% endblock %} + + +{% block body %} +{% block navBar %} +{% include 'dashboard/navbar.html' %} +{% endblock %} + +
+ + {% comment %}The left-margin segment!{% endcomment %} +
+ + {% comment %}The left-rail segment starts here!{% endcomment %} +
+ {% comment %}The user image card starts here!{% endcomment %} + {% block usercard %} + {% include 'globals/usercard.html' %} + {% endblock %} + {% comment %}The user image card ends here!{% endcomment %} + +
+ + {% comment %}The Tab-Menu ends here!{% endcomment %} +
+ {% comment %} + The left-rail segment ends here! + {% endcomment %} + + {% comment %} + The central-rail segment starts here! + {% endcomment %} +
+ + + + {% load static %} + {% comment %}the main tab starts here {% endcomment %} +
+ +
+
+ Processed Bills +
+
+
+
+ + + + + + + + + + {% for f in obj %} + + + + + + + + {% endfor %} +
IdBill
{{f.0}} {{f.1}} + +
+ {% csrf_token %} + + +
+
+
+
+
+ + + +
+ {% comment %}The central-rail segment ends here!{% endcomment %} + + {% comment %}The right-rail segment starts here!{% endcomment %} +
+
+ {% comment %} + TODO: the right rail! + {% endcomment %} +
+
+ {% comment %}The right-rail segment ends here!{% endcomment %} + + {% comment %}The right-margin segment!{% endcomment %} +
+ +
+{% comment %}The grid ends here!{% endcomment %} + +{% endblock %} + +{% block javascript %} + + + + +{% endblock %} \ No newline at end of file diff --git a/FusionIIIT/templates/iwdModuleV2/updateRequests.html b/FusionIIIT/templates/iwdModuleV2/updateRequests.html new file mode 100644 index 000000000..3a63ab253 --- /dev/null +++ b/FusionIIIT/templates/iwdModuleV2/updateRequests.html @@ -0,0 +1,146 @@ +{% extends 'globals/base.html' %} +{% load static %} + + +{% block title %} +Academic +{% endblock %} + + +{% block body %} +{% block navBar %} +{% include 'dashboard/navbar.html' %} +{% endblock %} + +
+ + {% comment %}The left-margin segment!{% endcomment %} +
+ + {% comment %}The left-rail segment starts here!{% endcomment %} +
+ {% comment %}The user image card starts here!{% endcomment %} + {% block usercard %} + {% include 'globals/usercard.html' %} + {% endblock %} + {% comment %}The user image card ends here!{% endcomment %} + +
+ + {% comment %}The Tab-Menu ends here!{% endcomment %} +
+ {% comment %} + The left-rail segment ends here! + {% endcomment %} + + {% comment %} + The central-rail segment starts here! + {% endcomment %} +
+ + + + {% load static %} + {% comment %}the main tab starts here {% endcomment %} +
+ +
+
+ Update Request +
+
{% csrf_token %} + +
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
+ +
+ +
+ +
+ +
+
+ +
+ +
+ +
+ +
+
+ +
+ +
+ +
+ +
+
+ +
+ + +
+ +
+ +
+
+ + + +
+ {% comment %}The central-rail segment ends here!{% endcomment %} + + {% comment %}The right-rail segment starts here!{% endcomment %} +
+
+ {% comment %} + TODO: the right rail! + {% endcomment %} +
+
+ {% comment %}The right-rail segment ends here!{% endcomment %} + + {% comment %}The right-margin segment!{% endcomment %} +
+ +
+{% comment %}The grid ends here!{% endcomment %} + +{% endblock %} + +{% block javascript %} + + + + +{% endblock %} + + + + diff --git a/FusionIIIT/templates/iwdModuleV2/viewBudget.html b/FusionIIIT/templates/iwdModuleV2/viewBudget.html new file mode 100644 index 000000000..bc84ae651 --- /dev/null +++ b/FusionIIIT/templates/iwdModuleV2/viewBudget.html @@ -0,0 +1,106 @@ +{% extends 'globals/base.html' %} +{% load static %} + + +{% block title %} +Academic +{% endblock %} + + +{% block body %} +{% block navBar %} +{% include 'dashboard/navbar.html' %} +{% endblock %} + +
+ + {% comment %}The left-margin segment!{% endcomment %} +
+ + {% comment %}The left-rail segment starts here!{% endcomment %} +
+ {% comment %}The user image card starts here!{% endcomment %} + {% block usercard %} + {% include 'globals/usercard.html' %} + {% endblock %} + {% comment %}The user image card ends here!{% endcomment %} + +
+ + {% comment %}The Tab-Menu ends here!{% endcomment %} +
+ {% comment %} + The left-rail segment ends here! + {% endcomment %} + + {% comment %} + The central-rail segment starts here! + {% endcomment %} +
+ + + + {% load static %} + {% comment %}the main tab starts here {% endcomment %} +
+ +
+
+ Budget +
+
+
+
+ + + + + + + + + + {% for f in obj %} + + + + + + + + {% endfor %} +
IdNameBudget Issued
{{f.0}}{{f.1}}{{f.2}}
+
+
+
+ + + +
+ {% comment %}The central-rail segment ends here!{% endcomment %} + + {% comment %}The right-rail segment starts here!{% endcomment %} +
+
+ {% comment %} + TODO: the right rail! + {% endcomment %} +
+
+ {% comment %}The right-rail segment ends here!{% endcomment %} + + {% comment %}The right-margin segment!{% endcomment %} +
+ +
+{% comment %}The grid ends here!{% endcomment %} + +{% endblock %} + +{% block javascript %} + + + + +{% endblock %} \ No newline at end of file diff --git a/FusionIIIT/templates/iwdModuleV2/viewWork.html b/FusionIIIT/templates/iwdModuleV2/viewWork.html index 3fb49831f..d67b8d528 100644 --- a/FusionIIIT/templates/iwdModuleV2/viewWork.html +++ b/FusionIIIT/templates/iwdModuleV2/viewWork.html @@ -1,6 +1,7 @@
-
{% csrf_token %} + + {% csrf_token %}

diff --git a/FusionIIIT/templates/iwdModuleV2/workOrder.html b/FusionIIIT/templates/iwdModuleV2/workOrder.html new file mode 100644 index 000000000..11f2f9d93 --- /dev/null +++ b/FusionIIIT/templates/iwdModuleV2/workOrder.html @@ -0,0 +1,175 @@ +{% extends 'globals/base.html' %} +{% load static %} + + +{% block title %} +Academic +{% endblock %} + + +{% block body %} +{% block navBar %} +{% include 'dashboard/navbar.html' %} +{% endblock %} + +
+ + {% comment %}The left-margin segment!{% endcomment %} +
+ + {% comment %}The left-rail segment starts here!{% endcomment %} +
+ {% comment %}The user image card starts here!{% endcomment %} + {% block usercard %} + {% include 'globals/usercard.html' %} + {% endblock %} + {% comment %}The user image card ends here!{% endcomment %} + +
+ + {% comment %}The Tab-Menu ends here!{% endcomment %} +
+ {% comment %} + The left-rail segment ends here! + {% endcomment %} + + {% comment %} + The central-rail segment starts here! + {% endcomment %} +
+ + + + {% load static %} + {% comment %}the main tab starts here {% endcomment %} + +
+ Work Order +
+ {% csrf_token %} +
+ +
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+
+ +
+ +
+ +
+ +
+
+ +
+ +
+ +
+ +
+
+ +
+ +
+ +
+ +
+
+ +
+ +
+ +
+ +
+
+ +
+ +
+ +
+ +
+
+ +
+ +
+ +
+ +
+
+ +
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ {% comment %}The central-rail segment ends here!{% endcomment %} + + {% comment %}The right-rail segment starts here!{% endcomment %} +
+
+ {% comment %} + TODO: the right rail! + {% endcomment %} +
+
+ {% comment %}The right-rail segment ends here!{% endcomment %} + + {% comment %}The right-margin segment!{% endcomment %} +
+ +
+{% comment %}The grid ends here!{% endcomment %} + +{% endblock %} + +{% block javascript %} + + + + +{% endblock %} + + + + diff --git a/FusionIIIT/templates/leaveModule.zip b/FusionIIIT/templates/leaveModule.zip deleted file mode 100644 index 2b6772b25..000000000 Binary files a/FusionIIIT/templates/leaveModule.zip and /dev/null differ