Skip to content

Commit

Permalink
Test os 3 (#1700)
Browse files Browse the repository at this point in the history
* 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]>
  • Loading branch information
3 people authored Jan 27, 2025
1 parent 8626fcd commit 5c99c5a
Show file tree
Hide file tree
Showing 22 changed files with 740 additions and 153 deletions.
5 changes: 3 additions & 2 deletions FusionIIIT/Fusion/settings/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@
# email of sender

EMAIL_HOST_USER = '[email protected]'
# EMAIL_HOST_PASSWORD = 'password'

EMAIL_PORT = 587
ACCOUNT_EMAIL_REQUIRED = True
Expand Down Expand Up @@ -79,8 +80,8 @@


# CELERY STUFF
# CELERY_BROKER_URL = 'redis://localhost:6379'
# CELERY_RESULT_BACKEND = 'redis://localhost:6379'
CELERY_BROKER_URL = 'redis://localhost:6379'
CELERY_RESULT_BACKEND = 'redis://localhost:6379'
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
Expand Down
224 changes: 113 additions & 111 deletions FusionIIIT/applications/department/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
from .models import SpecialRequest, Announcements , Information
from jsonschema import validate
from jsonschema.exceptions import ValidationError
from notification.views import create_announcement


def department_information(request):
Expand Down Expand Up @@ -261,127 +262,128 @@ def staff_view(request):
department_context = department_information(request)

requests_received = get_to_request(usrnm)
if request.method == 'POST':
form_type = request.POST.get('form_type', '')
if form_type == 'form1' :
# if request.method == 'POST':
# form_type = request.POST.get('form_type', '')
# if form_type == 'form1' :

batch = request.POST.get('batch', '')
programme = request.POST.get('programme', '')
message = request.POST.get('announcement', '')
upload_announcement = request.FILES.get('upload_announcement')
department = request.POST.get('department')
ann_date = date.today()
user_info = ExtraInfo.objects.all().select_related('user','department').get(id=ann_maker_id)
getstudents = ExtraInfo.objects.select_related('user')
recipients = User.objects.filter(extrainfo__in=getstudents)

obj1, created = Announcements.objects.get_or_create(maker_id=user_info,
batch=batch,
programme=programme,
message=message,
upload_announcement=upload_announcement,
department = department,
ann_date=ann_date)
department_notif(usrnm, recipients , message)
# batch = request.POST.get('batch', '')
# programme = request.POST.get('programme', '')
# message = request.POST.get('announcement', '')
# upload_announcement = request.FILES.get('upload_announcement')
# department = request.POST.get('department')
# ann_date = date.today()
# user_info = ExtraInfo.objects.all().select_related('user','department').get(id=ann_maker_id)
# getstudents = ExtraInfo.objects.select_related('user')
# recipients = User.objects.filter(extrainfo__in=getstudents)

# obj1, created = Announcements.objects.get_or_create(maker_id=user_info,
# batch=batch,
# programme=programme,
# message=message,
# upload_announcement=upload_announcement,
# department = department,
# ann_date=ann_date)
# department_notif(usrnm, recipients , message)

elif form_type == 'form2' :
# elif form_type == 'form2' :

email = request.POST.get('email', '')
phone_number = request.POST.get('contact_number', '')
facilites = request.POST.get('facilities', '')
labs = request.POST.get('labs', '')
department_id = user_departmentid

# Check if a row with the specified department_id already exists
try:
department_info = Information.objects.get(department_id=department_id)
# If row exists, update the values
department_info.email = email
department_info.phone_number_number = phone_number
department_info.facilites = facilites
department_info.labs = labs
department_info.save()
except Information.DoesNotExist:
# If row does not exist, create a new one
department_info = Information.objects.create(
department_id=department_id,
email=email,
phone_number=phone_number,
facilites=facilites,
labs=labs
)
# email = request.POST.get('email', '')
# phone_number = request.POST.get('contact_number', '')
# facilites = request.POST.get('facilities', '')
# labs = request.POST.get('labs', '')
# department_id = user_departmentid

# # Check if a row with the specified department_id already exists
# try:
# department_info = Information.objects.get(department_id=department_id)
# # If row exists, update the values
# department_info.email = email
# department_info.phone_number_number = phone_number
# department_info.facilites = facilites
# department_info.labs = labs
# department_info.save()
# except Information.DoesNotExist:
# # If row does not exist, create a new one
# department_info = Information.objects.create(
# department_id=department_id,
# email=email,
# phone_number=phone_number,
# facilites=facilites,
# labs=labs
# )


context = browse_announcements()
# context = browse_announcements()


department_templates = {
51: 'department/csedep_request.html',
30: 'department/ecedep_request.html',
37: 'department/medep_request.html',
53: 'department/smdep_request.html',

}
default_template = 'department/dep_request.html'
# department_templates = {
# 51: 'department/csedep_request.html',
# 30: 'department/ecedep_request.html',
# 37: 'department/medep_request.html',
# 53: 'department/smdep_request.html',

# }
# default_template = 'department/dep_request.html'

desig=request.session.get('currentDesignationSelected', 'default_value')
if desig=='deptadmin_cse':
template_name = 'department/admin_cse.html'
# desig=request.session.get('currentDesignationSelected', 'default_value')
# if desig=='deptadmin_cse':
# template_name = 'department/admin_cse.html'

return render(request, template_name, {
"user_designation": user_info.user_type,
"announcements": context,
"request_to": requests_received,
"fac_list": context_f,
"department_info": department_context
})
elif desig=='deptadmin_ece':
template_name = 'department/admin_ece.html'
return render(request, template_name, {
"user_designation": user_info.user_type,
"announcements": context,
"request_to": requests_received,
"fac_list": context_f,
"department_info": department_context
})
elif desig=='deptadmin_me':
template_name = 'department/admin_me.html'
return render(request, template_name, {
"user_designation": user_info.user_type,
"announcements": context,
"request_to": requests_received,
"fac_list": context_f,
"department_info": department_context
})
elif desig=='deptadmin_sm':
template_name = 'department/admin_sm.html'
return render(request, template_name, {
"user_designation": user_info.user_type,
"announcements": context,
"request_to": requests_received,
"fac_list": context_f,
"department_info": department_context
})
# return render(request, template_name, {
# "user_designation": user_info.user_type,
# "announcements": context,
# "request_to": requests_received,
# "fac_list": context_f,
# "department_info": department_context
# })
# elif desig=='deptadmin_ece':
# template_name = 'department/admin_ece.html'
# return render(request, template_name, {
# "user_designation": user_info.user_type,
# "announcements": context,
# "request_to": requests_received,
# "fac_list": context_f,
# "department_info": department_context
# })
# elif desig=='deptadmin_me':
# template_name = 'department/admin_me.html'
# return render(request, template_name, {
# "user_designation": user_info.user_type,
# "announcements": context,
# "request_to": requests_received,
# "fac_list": context_f,
# "department_info": department_context
# })
# elif desig=='deptadmin_sm':
# template_name = 'department/admin_sm.html'
# return render(request, template_name, {
# "user_designation": user_info.user_type,
# "announcements": context,
# "request_to": requests_received,
# "fac_list": context_f,
# "department_info": department_context
# })

# if desig == 'deptadmin_cse':
# return render(request, 'admin_cse.html')
# elif desig == 'deptadmin_ece':
# return render(request, 'admin_ece.html')
# elif desig == 'deptadmin_sm':
# return render(request, 'admin_sm.html')
# elif desig == 'deptadmin_me':
# return render(request, 'admin_me.html')
# else:
# return render(request, 'default.html')

template_name = department_templates.get(user_departmentid, default_template)
return render(request, template_name, {
"user_designation": user_info.user_type,
"announcements": context,
"request_to": requests_received,
"fac_list": context_f,
"department_info": department_context
})
# # if desig == 'deptadmin_cse':
# # return render(request, 'admin_cse.html')
# # elif desig == 'deptadmin_ece':
# # return render(request, 'admin_ece.html')
# # elif desig == 'deptadmin_sm':
# # return render(request, 'admin_sm.html')
# # elif desig == 'deptadmin_me':
# # return render(request, 'admin_me.html')
# # else:
# # return render(request, 'default.html')

# template_name = department_templates.get(user_departmentid, default_template)
# return render(request, template_name, {
# "user_designation": user_info.user_type,
# "announcements": context,
# "request_to": requests_received,
# "fac_list": context_f,
# "department_info": department_context
# })
return create_announcement(request, 'department/dep_request.html', 'Department', {"user_designation": user_info.user_type})



Expand Down
8 changes: 7 additions & 1 deletion FusionIIIT/applications/globals/api/urls.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
from django.conf.urls import url
from django.urls import path
from .views import department_info

from . import views

Expand All @@ -19,5 +21,9 @@
url(r'^notification/',views.notification,name='notification'),
url(r'^notificationread',views.NotificationRead,name='notifications-read'),
url(r'^notificationdelete',views.delete_notification,name='notifications-delete'),
url(r'^notificationunread',views.NotificationUnread,name='notifications-unread')
url(r'^notificationunread',views.NotificationUnread,name='notifications-unread'),
url(r'^search-users/', views.search_users, name='search_users'),
# url(r'^department-info/', views.department_info, name='department_info'),
path('department-info/', department_info, name='department-info'),

]
30 changes: 29 additions & 1 deletion FusionIIIT/applications/globals/api/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
from rest_framework.decorators import api_view, permission_classes,authentication_classes
from rest_framework.permissions import AllowAny
from rest_framework.response import Response
from django.http import JsonResponse


from . import serializers
Expand Down Expand Up @@ -376,4 +377,31 @@ def delete_notification(request):
'error': 'Failed to mark the notification as deleted.',
'details': str(e)
}
return Response(response, status=status.HTTP_400_BAD_REQUEST)
return Response(response, status=status.HTTP_400_BAD_REQUEST)


def search_users(request):
query = request.GET.get('q', '')
if query:
users = ExtraInfo.objects.filter(user__username__icontains=query).values('id', 'user__username')
else:
users = ExtraInfo.objects.none()

results = [
{'id': user['id'], 'text': user['user__username']} for user in users
]
return JsonResponse({'results': results})

@api_view(['GET']) # Declare that this view handles GET requests
@permission_classes([]) # No permissions required
@authentication_classes([]) # No authentication required
def department_info(request):
"""
Retrieve department information and return as JSON.
"""
try:
departments = DepartmentInfo.objects.all() # Fetch all department objects
serializer = serializers.DepartmentInfoSerializer(departments, many=True) # Serialize the data
return Response(serializer.data, status=status.HTTP_200_OK) # Return serialized data as JSON
except Exception as e:
return Response({'error': str(e)}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
3 changes: 3 additions & 0 deletions FusionIIIT/applications/globals/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
from notifications.models import Notification
from .models import *
from applications.hostel_management.models import (HallCaretaker,HallWarden)
from notification.views import announcement_list

def index(request):
context = {}
Expand Down Expand Up @@ -754,11 +755,13 @@ def dashboard(request):
'designation' : designation,
'hall_caretaker': hall_caretaker_user,
'hall_warden': hall_warden_user,
'announcements': announcement_list(request)['announcements']

}
# a=HoldsDesignation.objects.select_related('user','working','designation').filter(designation = user)
print(context)
print(type(user.extrainfo.user_type))
print(announcement_list(request))
if(request.user.get_username() == 'director'):
return render(request, "dashboard/director_dashboard2.html", {})
elif( "dean_rspc" in designation):
Expand Down
6 changes: 3 additions & 3 deletions FusionIIIT/applications/leave/tasks.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
from __future__ import absolute_import, unicode_literals

import celery
from Fusion.celery import app
from django.db import transaction
from django.db.models import Q
from django.utils import timezone

from .models import LeaveMigration


@celery.task()
@app.task()
@transaction.atomic
def execute_leave_migrations():
today = timezone.now().date()
Expand All @@ -27,6 +27,6 @@ def execute_leave_migrations():
migrations.delete()


@celery.task()
@app.task()
def testing(a, b):
return a+b
Loading

0 comments on commit 5c99c5a

Please sign in to comment.