diff --git a/FusionIIIT/applications/filetracking/admin.py b/FusionIIIT/applications/filetracking/admin.py
index 82b78df95..144ac4e2a 100644
--- a/FusionIIIT/applications/filetracking/admin.py
+++ b/FusionIIIT/applications/filetracking/admin.py
@@ -1,7 +1,23 @@
from django.contrib import admin
+from .models import File, Tracking
-# Register your models here.
-from applications.filetracking.models import File, Tracking
-admin.site.register(File)
-admin.site.register(Tracking)
+class FileAdmin(admin.ModelAdmin):
+ list_display = ('uploader', 'designation',
+ 'subject', 'upload_date', 'is_read')
+ search_fields = ('uploader__user__username', 'subject', 'description')
+ list_filter = ('is_read',)
+
+
+admin.site.register(File, FileAdmin)
+
+
+class TrackingAdmin(admin.ModelAdmin):
+ list_display = ('file_id', 'current_id', 'receiver_id',
+ 'receive_date', 'forward_date', 'is_read')
+ search_fields = ('file_id__subject',
+ 'current_id__user__username', 'receiver_id__username')
+ list_filter = ('is_read',)
+
+
+admin.site.register(Tracking, TrackingAdmin)
diff --git a/FusionIIIT/applications/filetracking/decorators.py b/FusionIIIT/applications/filetracking/decorators.py
index 05cc7cc51..dd900730e 100644
--- a/FusionIIIT/applications/filetracking/decorators.py
+++ b/FusionIIIT/applications/filetracking/decorators.py
@@ -1,6 +1,7 @@
from django.shortcuts import render, get_object_or_404
from django.contrib.auth.models import User
from applications.globals.models import ExtraInfo, HoldsDesignation
+from .sdk.methods import get_HoldsDesignation_obj
def user_check(request):
@@ -36,3 +37,15 @@ def _wrapped_view(request, *args, **kwargs):
return view_func(request, *args, **kwargs)
return _wrapped_view
+def dropdown_designation_valid(view_func):
+ def _wrapped_view(request, *args, **kwargs):
+ designation_name = request.session.get('currentDesignationSelected', 'default_value') #from dropdown
+ username = request.user
+ try:
+ designation_id = get_HoldsDesignation_obj(
+ username, designation_name).id
+ except:
+ return render(request, 'filetracking/invalid_designation.html', {'curr_des' : designation_name})
+ else:
+ return view_func(request, *args, **kwargs)
+ return _wrapped_view
diff --git a/FusionIIIT/applications/filetracking/sdk/methods.py b/FusionIIIT/applications/filetracking/sdk/methods.py
index 54e9b3574..0e89c642e 100644
--- a/FusionIIIT/applications/filetracking/sdk/methods.py
+++ b/FusionIIIT/applications/filetracking/sdk/methods.py
@@ -377,7 +377,13 @@ def add_uploader_department_to_files_list(files: list) -> list:
'''
for file in files:
uploader_Extrainfo = file['uploader']
- file['uploader_department'] = (str(uploader_Extrainfo.department)).split(': ')[1]
+ # print(uploader_Extrainfo.department)
+ if uploader_Extrainfo.department is None:
+ # for files created by staff or users that dont have department
+ file['uploader_department'] = 'FTS'
+ else:
+ file['uploader_department'] = (
+ str(uploader_Extrainfo.department)).split(': ')[1]
return files
diff --git a/FusionIIIT/applications/filetracking/views.py b/FusionIIIT/applications/filetracking/views.py
index c100a3d92..13c951d51 100644
--- a/FusionIIIT/applications/filetracking/views.py
+++ b/FusionIIIT/applications/filetracking/views.py
@@ -15,10 +15,12 @@
from django.utils.dateparse import parse_datetime
from .sdk.methods import *
from .decorators import *
+import json
@login_required(login_url="/accounts/login/")
@user_is_student
+@dropdown_designation_valid
def filetracking(request):
"""
The function is used to create files by current user(employee).
@@ -41,6 +43,7 @@ def filetracking(request):
context - Holds data needed to make necessary changes in the template.
"""
+
if request.method == "POST":
try:
if 'save' in request.POST:
@@ -56,12 +59,19 @@ def filetracking(request):
request, "File should not be greater than 10MB")
return redirect("/filetracking")
+ extraJSON = {
+ 'remarks': request.POST.get('remarks'),
+ # 'receiver': request.POST.get('receiver'),
+ # 'receive': request.POST.get('receive')
+ }
+
File.objects.create(
uploader=uploader,
description=description,
subject=subject,
designation=designation,
- upload_file=upload_file
+ upload_file=upload_file,
+ file_extra_JSON=extraJSON
)
messages.success(request, 'File Draft Saved Successfully')
@@ -135,8 +145,12 @@ def filetracking(request):
'user', 'working', 'designation').all()
designation_name = request.session.get('currentDesignationSelected', 'default_value')
+ all_available_designations = request.session.get(
+ 'allDesignations', 'default_value2')
+
+
username = request.user
- designation_id = get_HoldsDesignation_obj(
+ designation_id = get_HoldsDesignation_obj(
username, designation_name).id
context = {
@@ -144,7 +158,8 @@ def filetracking(request):
'extrainfo': extrainfo,
'holdsdesignations': holdsdesignations,
'designation_name': designation_name,
- 'designation_id': designation_id
+ 'designation_id': designation_id,
+ 'notifications': request.user.notifications.all()
}
return render(request, 'filetracking/composefile.html', context)
@@ -218,11 +233,27 @@ def drafts_view(request, id):
draft_files = add_uploader_department_to_files_list(draft_files)
+ user_HoldsDesignation_obj = HoldsDesignation.objects.select_related(
+ 'user', 'working', 'designation').get(pk=id)
+ s = str(user_HoldsDesignation_obj).split(" - ")
+ designation = s[1]
+ draft_files = view_drafts(
+ username=user_HoldsDesignation_obj.user,
+ designation=user_HoldsDesignation_obj.designation,
+ src_module='filetracking'
+ )
+
+ # Correct upload_date type
+ for f in draft_files:
+ f['upload_date'] = parse_datetime(f['upload_date'])
+ f['uploader'] = get_extra_info_object_from_id(f['uploader'])
+
+ draft_files = add_uploader_department_to_files_list(draft_files)
+
context = {
'draft_files': draft_files,
'designations': designation,
- 'draft_files': draft_files,
- 'designations': designation,
+ 'notifications': request.user.notifications.all()
}
return render(request, 'filetracking/drafts.html', context)
@@ -290,11 +321,9 @@ def outbox_view(request, id):
outward_files = add_uploader_department_to_files_list(outward_files)
context = {
-
- 'out_files': outward_files,
- 'viewer_designation': designation,
'out_files': outward_files,
'viewer_designation': designation,
+ 'notifications': request.user.notifications.all()
}
return render(request, 'filetracking/outbox.html', context)
@@ -364,14 +393,11 @@ def inbox_view(request, id):
context = {
-
- 'in_file': inward_files,
- 'designations': designation,
'in_file': inward_files,
'designations': designation,
+ 'notifications': request.user.notifications.all()
}
return render(request, 'filetracking/inbox.html', context)
- return render(request, 'filetracking/inbox.html', context)
@login_required(login_url="/accounts/login")
@@ -478,6 +504,7 @@ def view_file(request, id):
'track': track,
'forward_enable': forward_enable,
'archive_enable': archive_enable,
+ 'notifications': request.user.notifications.all()
}
return render(request, 'filetracking/viewfile.html', context)
@@ -589,11 +616,23 @@ def forward(request, id):
designations = get_designation(request.user)
- context = {
+ designation_name = request.session.get('currentDesignationSelected', 'default_value')
+ all_available_designations = request.session.get(
+ 'allDesignations', 'default_value2')
+
+ username = request.user
+ designation_id = get_HoldsDesignation_obj(
+ username, designation_name).id
+
+ context = {
'designations': designations,
'file': file,
'track': track,
+ 'designation_name': designation_name,
+ 'designation_id': designation_id,
+
+ 'notifications': request.user.notifications.all()
}
return render(request, 'filetracking/forward.html', context)
@@ -653,6 +692,7 @@ def archive_view(request, id):
context = {
'archive_files': archive_files,
'designations': designation,
+ 'notifications': request.user.notifications.all()
}
return render(request, 'filetracking/archive.html', context)
@@ -675,6 +715,7 @@ def finish_design(request):
context = {
'designation': designation,
+ 'notifications': request.user.notifications.all()
}
return render(request, 'filetracking/finish_design.html', context)
@@ -692,6 +733,7 @@ def finish_fileview(request, id):
'out': out,
'abcd': abcd,
+ 'notifications': request.user.notifications.all()
}
return render(request, 'filetracking/finish_fileview.html', context)
@@ -708,7 +750,8 @@ def finish(request, id):
track.update(is_read=True)
messages.success(request, 'File Archived')
- return render(request, 'filetracking/finish.html', {'file': file1, 'track': track, 'fileid': id})
+ return render(request, 'filetracking/finish.html', {'file': file1, 'track': track, 'fileid': id,
+ 'notifications': request.user.notifications.all()})
def AjaxDropdown1(request):
@@ -802,6 +845,7 @@ def forward_inward(request,id):
'designations': designations,
'file': file,
'track': track,
+ 'notifications': request.user.notifications.all()
}
return render(request, 'filetracking/forward.html', context)
@@ -878,6 +922,7 @@ def edit_draft_view(request, id, *args, **kwargs):
'designations': designations,
'file': file,
'track': track,
+ 'notifications': request.user.notifications.all()
}
return render(request, 'filetracking/editdraft.html', context)
receive = request.POST.get('receive')
@@ -891,6 +936,7 @@ def edit_draft_view(request, id, *args, **kwargs):
'designations': designations,
'file': file,
+ 'notifications': request.user.notifications.all()
}
return render(request, 'filetracking/editdraft.html', context)
@@ -909,11 +955,30 @@ def edit_draft_view(request, id, *args, **kwargs):
designations = get_designation(request.user)
- context = {
+ designation_name = request.session.get('currentDesignationSelected', 'default_value')
+ all_available_designations = request.session.get(
+ 'allDesignations', 'default_value2')
+
+ username = request.user
+ designation_id = get_HoldsDesignation_obj(
+ username, designation_name).id
+
+ remarks = None
+ receive = None
+ receiver = None
+
+ if file.file_extra_JSON and file.file_extra_JSON['remarks']:
+ remarks = file.file_extra_JSON['remarks']
+
+ context = {
'designations': designations,
'file': file,
- 'track': track,
+ 'track': track,
+ 'designation_name': designation_name,
+ 'designation_id': designation_id,
+ 'remarks' : remarks,
+ 'notifications': request.user.notifications.all()
}
return render(request, 'filetracking/editdraft.html', context)
diff --git a/FusionIIIT/templates/filetracking/editdraft.html b/FusionIIIT/templates/filetracking/editdraft.html
index 204ac0e41..cb49e7296 100644
--- a/FusionIIIT/templates/filetracking/editdraft.html
+++ b/FusionIIIT/templates/filetracking/editdraft.html
@@ -40,20 +40,14 @@