Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 41 additions & 0 deletions FusionIIIT/applications/ps1/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,47 @@ class IndentFile(models.Model):
class Meta:
db_table = 'IndentFile'


class IndentFile2(models.Model):

file_info = models.OneToOneField(
File, on_delete=models.CASCADE, primary_key=True)
title=models.CharField(max_length=250,blank=False,default="")
budgetary_head = models.CharField(max_length=250)
expected_delivery = models.DateField(blank=False)
sources_of_supply = models.CharField(max_length=250)
head_approval = models.BooleanField(default=False)
director_approval = models.BooleanField(default=False)
financial_approval = models.BooleanField(default=False)
procured = models.BooleanField(default=False)
description = models.CharField(max_length=250,blank=False,default="")

class Meta:
db_table = 'IndentFile2'


class Item(models.Model):
item_id = models.AutoField(primary_key=True)
indent_file_id = models.ForeignKey(
IndentFile2, on_delete=models.CASCADE, null=True, blank=False)
file_info = models.OneToOneField(
File, on_delete=models.CASCADE)
item_name = models.CharField(max_length=250, blank=False)
quantiy = models.IntegerField(blank=False)
present_stock = models.IntegerField(blank=False)
estimated_cost = models.IntegerField(null=True, blank=False)
purpose = models.CharField(max_length=250, blank=False)
specification = models.CharField(max_length=250)
indent_type = models.CharField(max_length=250)
nature = models.BooleanField(default=False)
indigenous = models.BooleanField(default=False)
replaced = models.BooleanField(default=False)
purchased = models.BooleanField(default=False)

class Meta:
db_table = 'Item'


class StockEntry(models.Model):

item_id=models.OneToOneField(IndentFile, on_delete=models.CASCADE,primary_key=True)
Expand Down
3 changes: 2 additions & 1 deletion FusionIIIT/applications/ps1/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,5 +24,6 @@
url(r'^stock_edit/$', views.stock_edit, name='stock_edit'),
url(r'^stock_update/$', views.stock_update, name='stock_update'),
url(r'^entry/$', views.entry, name='entry'),
url(r'^stock_login/$', views.dealing_assistant, name='dealing_assistant')
url(r'^stock_login/$', views.dealing_assistant, name='dealing_assistant'),
url(r'^create_indent_multiple/$',views.create_indent_multiple, name='create_indent_multiple')
]
164 changes: 163 additions & 1 deletion FusionIIIT/applications/ps1/views.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from django.contrib import messages
from django.shortcuts import render, get_object_or_404, redirect
from applications.filetracking.models import File, Tracking
from applications.ps1.models import IndentFile,StockEntry
from applications.ps1.models import IndentFile,StockEntry,IndentFile2,Item
from applications.globals.models import ExtraInfo, HoldsDesignation, Designation
from django.template.defaulttags import csrf_token
from django.http import HttpResponse, HttpResponseRedirect, JsonResponse
Expand All @@ -11,6 +11,168 @@
from django.contrib.auth.models import User
from timeit import default_timer as time
from notification.views import office_module_notif
from django.views.decorators.csrf import csrf_exempt
import json



@login_required(login_url = "/accounts/login/")
def create_indent_multiple(request):
"""
The function is used to create indents by faculty.
It adds the indent datails to the IndentFile2 table and Item details to Item table
for tracking the indent we are using filetracking module
@param:
request - trivial.
@variables:
uploader - Employee who creates file.
subject - Title of the file.
description - Description of the file.
upload_file - Attachment uploaded while creating file.
file - The file object.
extrainfo - The Extrainfo object.
holdsdesignations - The HoldsDesignation object.
context - Holds data needed to make necessary changes in the template.
item_name- Name of the item to be procured
quantity - Qunat of the item to be procured
present_stock=request.POST.get('present_stock')
estimated_cost=request.POST.get('estimated_cost')
purpose=request.POST.get('purpose')
specification=request.POST.get('specification')
indent_type=request.POST.get('indent_type')
nature=request.POST.get('nature')
indigenous=request.POST.get('indigenous')
replaced =request.POST.get('replaced')
budgetary_head=request.POST.get('budgetary_head')
expected_delivery=request.POST.get('expected_delivery')
sources_of_supply=request.POST.get('sources_of_supply')
head_approval=False
director_approval=False
financial_approval=False
purchased =request.POST.get('purchased')
items= List of details of all the item
"""
des = HoldsDesignation.objects.all().select_related().filter(user = request.user).first()
if str(des.designation) == "student":
return redirect('/dashboard')
if request.user.extrainfo.id == '132':
return redirect("/purchase-and-store/entry/")
if request.method == 'POST':
try:
uploader = request.user.extrainfo
upload_file = request.FILES.get('myfile')
design = request.POST.get('design')
designation = Designation.objects.get(id = HoldsDesignation.objects.select_related('user','working','designation').get(id = design).designation_id)
description=request.POST.get('desc')
subject=request.POST.get('title')
budgetary_head = request.POST.get('budgetary_head')
sources_of_supply = request.POST.get('sources_of_supply')
expected_delivery = request.POST.get('expected_delivery')
# information related to reciever
remarks = request.POST.get('remarks')
receiver = request.POST.get('receiver')
reciever_designation = request.POST.get('reciever_designation')
# items related information
item_list = json.loads(request.POST.get('items')) # this will contain the list of all the item details

# First we will create the file for IndentFile table
file=File.objects.create(
uploader=uploader,
description=description,
subject=subject,
designation=designation,
upload_file=upload_file
)

# Now we will create Indent Table and add to file

created_indent_file = IndentFile2.objects.create(
file_info = file,
title = subject,
budgetary_head = budgetary_head,
expected_delivery = expected_delivery,
sources_of_supply = sources_of_supply,
description = description
)
for i in range(len(item_list)) :
# upload_file = temp[i]['file']
item_name = item_list[i]["item_name"]
quantiy = item_list[i]["quantiy"]
present_stock = item_list[i]["present_stock"]
estimated_cost = item_list[i]["estimated_cost"]
purpose = item_list[i]["purpose"]
specification = item_list[i]["specification"]
indent_type = item_list[i]["indent_type"]
nature =item_list[i]["nature"]
indigenous = item_list[i]["indigenous"]
replaced = item_list[i]["replaced"]
item_file = request.FILES.get(f"item_file{i}")
file_item=File.objects.create(
uploader=uploader,
description=purpose,
subject=item_name,
designation=designation,
upload_file=item_file
)
Item.objects.create(
indent_file_id = created_indent_file,
file_info = file_item,
item_name = item_name,
quantiy = quantiy,
present_stock = present_stock,
estimated_cost = estimated_cost,
purpose = purpose ,
specification = specification,
indent_type = indent_type,
nature = nature,
indigenous = indigenous,
replaced = replaced,
)

if (receiver is not None) and (reciever_designation is not None):
current_design = HoldsDesignation.objects.select_related('user','working','designation').get(id=design)
try:
receiver_id = User.objects.get(username=receiver)
except Exception as e:
messages.error(request, 'Enter a valid Username')
return redirect('/filetracking/')
try:
receive_design = Designation.objects.get(name=reciever_designation)
except Exception as e:
messages.error(request, 'Enter a valid Designation')
return redirect('/ps1/')

Tracking.objects.create(
file_id=file,
current_id=uploader,
current_design=current_design,
receive_design=receive_design,
receiver_id=receiver_id,
remarks=remarks,
upload_file=upload_file,
)
office_module_notif(request.user, receiver_id)
messages.success(request,'Indent Filed Successfully!')
finally:
message = 'File Already taken'

file = File.objects.select_related('uploader__user','uploader__department','designation').all()
extrainfo = ExtraInfo.objects.select_related('user','department').all()
holdsdesignations = HoldsDesignation.objects.select_related('user','working','designation').all()
designations = HoldsDesignation.objects.select_related('user','working','designation').filter(user = request.user)

context = {
'file': file,
'extrainfo': extrainfo,
'holdsdesignations': holdsdesignations,
'designations': designations,
}
return render(request, 'ps1/composeIndentMultiple.html', context)






@login_required(login_url = "/accounts/login/")
def ps1(request):
Expand Down
Loading