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 @@
- +

-
- +
+ +

@@ -74,8 +68,12 @@
- -
+ +