Skip to content

Commit 5c99c5a

Browse files
aarav0012Akashsah2003aarav0012
authored
Test os 3 (#1700)
* Setup Email Notifications and architected new announcement system * Added module to announcement schema and lazy loading to specific_users * Added create announcement and get announcement apis and added redis as dependency * Sorted GET Announcement result order * department info api (#1) Co-authored-by: aarav0012 <[email protected]> * rspc notification api added --------- Co-authored-by: Akash Kumar Sah <[email protected]> Co-authored-by: aarav0012 <[email protected]>
1 parent 8626fcd commit 5c99c5a

File tree

22 files changed

+740
-153
lines changed

22 files changed

+740
-153
lines changed

FusionIIIT/Fusion/settings/common.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
# email of sender
5252

5353
EMAIL_HOST_USER = '[email protected]'
54+
# EMAIL_HOST_PASSWORD = 'password'
5455

5556
EMAIL_PORT = 587
5657
ACCOUNT_EMAIL_REQUIRED = True
@@ -79,8 +80,8 @@
7980

8081

8182
# CELERY STUFF
82-
# CELERY_BROKER_URL = 'redis://localhost:6379'
83-
# CELERY_RESULT_BACKEND = 'redis://localhost:6379'
83+
CELERY_BROKER_URL = 'redis://localhost:6379'
84+
CELERY_RESULT_BACKEND = 'redis://localhost:6379'
8485
CELERY_ACCEPT_CONTENT = ['application/json']
8586
CELERY_TASK_SERIALIZER = 'json'
8687
CELERY_RESULT_SERIALIZER = 'json'

FusionIIIT/applications/department/views.py

Lines changed: 113 additions & 111 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
from .models import SpecialRequest, Announcements , Information
2121
from jsonschema import validate
2222
from jsonschema.exceptions import ValidationError
23+
from notification.views import create_announcement
2324

2425

2526
def department_information(request):
@@ -261,127 +262,128 @@ def staff_view(request):
261262
department_context = department_information(request)
262263

263264
requests_received = get_to_request(usrnm)
264-
if request.method == 'POST':
265-
form_type = request.POST.get('form_type', '')
266-
if form_type == 'form1' :
265+
# if request.method == 'POST':
266+
# form_type = request.POST.get('form_type', '')
267+
# if form_type == 'form1' :
267268

268-
batch = request.POST.get('batch', '')
269-
programme = request.POST.get('programme', '')
270-
message = request.POST.get('announcement', '')
271-
upload_announcement = request.FILES.get('upload_announcement')
272-
department = request.POST.get('department')
273-
ann_date = date.today()
274-
user_info = ExtraInfo.objects.all().select_related('user','department').get(id=ann_maker_id)
275-
getstudents = ExtraInfo.objects.select_related('user')
276-
recipients = User.objects.filter(extrainfo__in=getstudents)
277-
278-
obj1, created = Announcements.objects.get_or_create(maker_id=user_info,
279-
batch=batch,
280-
programme=programme,
281-
message=message,
282-
upload_announcement=upload_announcement,
283-
department = department,
284-
ann_date=ann_date)
285-
department_notif(usrnm, recipients , message)
269+
# batch = request.POST.get('batch', '')
270+
# programme = request.POST.get('programme', '')
271+
# message = request.POST.get('announcement', '')
272+
# upload_announcement = request.FILES.get('upload_announcement')
273+
# department = request.POST.get('department')
274+
# ann_date = date.today()
275+
# user_info = ExtraInfo.objects.all().select_related('user','department').get(id=ann_maker_id)
276+
# getstudents = ExtraInfo.objects.select_related('user')
277+
# recipients = User.objects.filter(extrainfo__in=getstudents)
278+
279+
# obj1, created = Announcements.objects.get_or_create(maker_id=user_info,
280+
# batch=batch,
281+
# programme=programme,
282+
# message=message,
283+
# upload_announcement=upload_announcement,
284+
# department = department,
285+
# ann_date=ann_date)
286+
# department_notif(usrnm, recipients , message)
286287

287-
elif form_type == 'form2' :
288+
# elif form_type == 'form2' :
288289

289-
email = request.POST.get('email', '')
290-
phone_number = request.POST.get('contact_number', '')
291-
facilites = request.POST.get('facilities', '')
292-
labs = request.POST.get('labs', '')
293-
department_id = user_departmentid
294-
295-
# Check if a row with the specified department_id already exists
296-
try:
297-
department_info = Information.objects.get(department_id=department_id)
298-
# If row exists, update the values
299-
department_info.email = email
300-
department_info.phone_number_number = phone_number
301-
department_info.facilites = facilites
302-
department_info.labs = labs
303-
department_info.save()
304-
except Information.DoesNotExist:
305-
# If row does not exist, create a new one
306-
department_info = Information.objects.create(
307-
department_id=department_id,
308-
email=email,
309-
phone_number=phone_number,
310-
facilites=facilites,
311-
labs=labs
312-
)
290+
# email = request.POST.get('email', '')
291+
# phone_number = request.POST.get('contact_number', '')
292+
# facilites = request.POST.get('facilities', '')
293+
# labs = request.POST.get('labs', '')
294+
# department_id = user_departmentid
295+
296+
# # Check if a row with the specified department_id already exists
297+
# try:
298+
# department_info = Information.objects.get(department_id=department_id)
299+
# # If row exists, update the values
300+
# department_info.email = email
301+
# department_info.phone_number_number = phone_number
302+
# department_info.facilites = facilites
303+
# department_info.labs = labs
304+
# department_info.save()
305+
# except Information.DoesNotExist:
306+
# # If row does not exist, create a new one
307+
# department_info = Information.objects.create(
308+
# department_id=department_id,
309+
# email=email,
310+
# phone_number=phone_number,
311+
# facilites=facilites,
312+
# labs=labs
313+
# )
313314

314315

315-
context = browse_announcements()
316+
# context = browse_announcements()
316317

317318

318-
department_templates = {
319-
51: 'department/csedep_request.html',
320-
30: 'department/ecedep_request.html',
321-
37: 'department/medep_request.html',
322-
53: 'department/smdep_request.html',
323-
324-
}
325-
default_template = 'department/dep_request.html'
319+
# department_templates = {
320+
# 51: 'department/csedep_request.html',
321+
# 30: 'department/ecedep_request.html',
322+
# 37: 'department/medep_request.html',
323+
# 53: 'department/smdep_request.html',
324+
325+
# }
326+
# default_template = 'department/dep_request.html'
326327

327-
desig=request.session.get('currentDesignationSelected', 'default_value')
328-
if desig=='deptadmin_cse':
329-
template_name = 'department/admin_cse.html'
328+
# desig=request.session.get('currentDesignationSelected', 'default_value')
329+
# if desig=='deptadmin_cse':
330+
# template_name = 'department/admin_cse.html'
330331

331-
return render(request, template_name, {
332-
"user_designation": user_info.user_type,
333-
"announcements": context,
334-
"request_to": requests_received,
335-
"fac_list": context_f,
336-
"department_info": department_context
337-
})
338-
elif desig=='deptadmin_ece':
339-
template_name = 'department/admin_ece.html'
340-
return render(request, template_name, {
341-
"user_designation": user_info.user_type,
342-
"announcements": context,
343-
"request_to": requests_received,
344-
"fac_list": context_f,
345-
"department_info": department_context
346-
})
347-
elif desig=='deptadmin_me':
348-
template_name = 'department/admin_me.html'
349-
return render(request, template_name, {
350-
"user_designation": user_info.user_type,
351-
"announcements": context,
352-
"request_to": requests_received,
353-
"fac_list": context_f,
354-
"department_info": department_context
355-
})
356-
elif desig=='deptadmin_sm':
357-
template_name = 'department/admin_sm.html'
358-
return render(request, template_name, {
359-
"user_designation": user_info.user_type,
360-
"announcements": context,
361-
"request_to": requests_received,
362-
"fac_list": context_f,
363-
"department_info": department_context
364-
})
332+
# return render(request, template_name, {
333+
# "user_designation": user_info.user_type,
334+
# "announcements": context,
335+
# "request_to": requests_received,
336+
# "fac_list": context_f,
337+
# "department_info": department_context
338+
# })
339+
# elif desig=='deptadmin_ece':
340+
# template_name = 'department/admin_ece.html'
341+
# return render(request, template_name, {
342+
# "user_designation": user_info.user_type,
343+
# "announcements": context,
344+
# "request_to": requests_received,
345+
# "fac_list": context_f,
346+
# "department_info": department_context
347+
# })
348+
# elif desig=='deptadmin_me':
349+
# template_name = 'department/admin_me.html'
350+
# return render(request, template_name, {
351+
# "user_designation": user_info.user_type,
352+
# "announcements": context,
353+
# "request_to": requests_received,
354+
# "fac_list": context_f,
355+
# "department_info": department_context
356+
# })
357+
# elif desig=='deptadmin_sm':
358+
# template_name = 'department/admin_sm.html'
359+
# return render(request, template_name, {
360+
# "user_designation": user_info.user_type,
361+
# "announcements": context,
362+
# "request_to": requests_received,
363+
# "fac_list": context_f,
364+
# "department_info": department_context
365+
# })
365366

366-
# if desig == 'deptadmin_cse':
367-
# return render(request, 'admin_cse.html')
368-
# elif desig == 'deptadmin_ece':
369-
# return render(request, 'admin_ece.html')
370-
# elif desig == 'deptadmin_sm':
371-
# return render(request, 'admin_sm.html')
372-
# elif desig == 'deptadmin_me':
373-
# return render(request, 'admin_me.html')
374-
# else:
375-
# return render(request, 'default.html')
376-
377-
template_name = department_templates.get(user_departmentid, default_template)
378-
return render(request, template_name, {
379-
"user_designation": user_info.user_type,
380-
"announcements": context,
381-
"request_to": requests_received,
382-
"fac_list": context_f,
383-
"department_info": department_context
384-
})
367+
# # if desig == 'deptadmin_cse':
368+
# # return render(request, 'admin_cse.html')
369+
# # elif desig == 'deptadmin_ece':
370+
# # return render(request, 'admin_ece.html')
371+
# # elif desig == 'deptadmin_sm':
372+
# # return render(request, 'admin_sm.html')
373+
# # elif desig == 'deptadmin_me':
374+
# # return render(request, 'admin_me.html')
375+
# # else:
376+
# # return render(request, 'default.html')
377+
378+
# template_name = department_templates.get(user_departmentid, default_template)
379+
# return render(request, template_name, {
380+
# "user_designation": user_info.user_type,
381+
# "announcements": context,
382+
# "request_to": requests_received,
383+
# "fac_list": context_f,
384+
# "department_info": department_context
385+
# })
386+
return create_announcement(request, 'department/dep_request.html', 'Department', {"user_designation": user_info.user_type})
385387

386388

387389

FusionIIIT/applications/globals/api/urls.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
from django.conf.urls import url
2+
from django.urls import path
3+
from .views import department_info
24

35
from . import views
46

@@ -19,5 +21,9 @@
1921
url(r'^notification/',views.notification,name='notification'),
2022
url(r'^notificationread',views.NotificationRead,name='notifications-read'),
2123
url(r'^notificationdelete',views.delete_notification,name='notifications-delete'),
22-
url(r'^notificationunread',views.NotificationUnread,name='notifications-unread')
24+
url(r'^notificationunread',views.NotificationUnread,name='notifications-unread'),
25+
url(r'^search-users/', views.search_users, name='search_users'),
26+
# url(r'^department-info/', views.department_info, name='department_info'),
27+
path('department-info/', department_info, name='department-info'),
28+
2329
]

FusionIIIT/applications/globals/api/views.py

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
from rest_framework.decorators import api_view, permission_classes,authentication_classes
1515
from rest_framework.permissions import AllowAny
1616
from rest_framework.response import Response
17+
from django.http import JsonResponse
1718

1819

1920
from . import serializers
@@ -376,4 +377,31 @@ def delete_notification(request):
376377
'error': 'Failed to mark the notification as deleted.',
377378
'details': str(e)
378379
}
379-
return Response(response, status=status.HTTP_400_BAD_REQUEST)
380+
return Response(response, status=status.HTTP_400_BAD_REQUEST)
381+
382+
383+
def search_users(request):
384+
query = request.GET.get('q', '')
385+
if query:
386+
users = ExtraInfo.objects.filter(user__username__icontains=query).values('id', 'user__username')
387+
else:
388+
users = ExtraInfo.objects.none()
389+
390+
results = [
391+
{'id': user['id'], 'text': user['user__username']} for user in users
392+
]
393+
return JsonResponse({'results': results})
394+
395+
@api_view(['GET']) # Declare that this view handles GET requests
396+
@permission_classes([]) # No permissions required
397+
@authentication_classes([]) # No authentication required
398+
def department_info(request):
399+
"""
400+
Retrieve department information and return as JSON.
401+
"""
402+
try:
403+
departments = DepartmentInfo.objects.all() # Fetch all department objects
404+
serializer = serializers.DepartmentInfoSerializer(departments, many=True) # Serialize the data
405+
return Response(serializer.data, status=status.HTTP_200_OK) # Return serialized data as JSON
406+
except Exception as e:
407+
return Response({'error': str(e)}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)

FusionIIIT/applications/globals/views.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
from notifications.models import Notification
3131
from .models import *
3232
from applications.hostel_management.models import (HallCaretaker,HallWarden)
33+
from notification.views import announcement_list
3334

3435
def index(request):
3536
context = {}
@@ -754,11 +755,13 @@ def dashboard(request):
754755
'designation' : designation,
755756
'hall_caretaker': hall_caretaker_user,
756757
'hall_warden': hall_warden_user,
758+
'announcements': announcement_list(request)['announcements']
757759

758760
}
759761
# a=HoldsDesignation.objects.select_related('user','working','designation').filter(designation = user)
760762
print(context)
761763
print(type(user.extrainfo.user_type))
764+
print(announcement_list(request))
762765
if(request.user.get_username() == 'director'):
763766
return render(request, "dashboard/director_dashboard2.html", {})
764767
elif( "dean_rspc" in designation):

FusionIIIT/applications/leave/tasks.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
from __future__ import absolute_import, unicode_literals
22

3-
import celery
3+
from Fusion.celery import app
44
from django.db import transaction
55
from django.db.models import Q
66
from django.utils import timezone
77

88
from .models import LeaveMigration
99

1010

11-
@celery.task()
11+
@app.task()
1212
@transaction.atomic
1313
def execute_leave_migrations():
1414
today = timezone.now().date()
@@ -27,6 +27,6 @@ def execute_leave_migrations():
2727
migrations.delete()
2828

2929

30-
@celery.task()
30+
@app.task()
3131
def testing(a, b):
3232
return a+b

0 commit comments

Comments
 (0)