Skip to content
Merged
5 changes: 5 additions & 0 deletions FusionIIIT/Fusion/context_processors.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
def global_vars(request):
return {
'global_var': request.session.get('currentDesignationSelected', 'default_value'),
'global_var2': request.session.get('allDesignations', 'default_value2'),
}
48 changes: 48 additions & 0 deletions FusionIIIT/Fusion/middleware/custom_middleware.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# custom_middleware.py
from django.contrib.auth.signals import user_logged_in
from django.dispatch import receiver
from applications.globals.models import (ExtraInfo, Feedback, HoldsDesignation,
Issue, IssueImage, DepartmentInfo)
from django.shortcuts import get_object_or_404, redirect, render

def user_logged_in_middleware(get_response):
@receiver(user_logged_in)
def user_logged_in_handler(sender, user, request, **kwargs):
if 'function_executed' not in request.session:
# Run the function only if the flag is not set
# Assuming user is a model with the desired data field, retrieve the data
# For example, if your User model has a field named 'custom_field', you can access it like:
if user.is_authenticated:
desig = list(HoldsDesignation.objects.select_related('user','working','designation').all().filter(working = request.user).values_list('designation'))
print(desig)
b = [i for sub in desig for i in sub]
design = HoldsDesignation.objects.select_related('user','designation').filter(working=request.user)

designation=[]

designation.append(str(user.extrainfo.user_type))
for i in design:
if str(i.designation) != str(user.extrainfo.user_type):
print('-------')
print(i.designation)
print(user.extrainfo.user_type)
print('')
designation.append(str(i.designation))

for i in designation:
print(i)

request.session['currentDesignationSelected'] = designation[0]
request.session['allDesignations'] = designation
print("logged iN")

# Set the flag in the session to indicate that the function has bee+n executed
request.session['function_executed'] = True

def middleware(request):
if request.user.is_authenticated:
user_logged_in_handler(request.user, request.user, request)
response = get_response(request)
return response

return middleware
2 changes: 2 additions & 0 deletions FusionIIIT/Fusion/settings/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,7 @@
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'Fusion.middleware.custom_middleware.user_logged_in_middleware',
]

ROOT_URLCONF = 'Fusion.urls'
Expand All @@ -178,6 +179,7 @@
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'Fusion.context_processors.global_vars',
],
},
},
Expand Down
3 changes: 2 additions & 1 deletion FusionIIIT/applications/globals/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,5 +23,6 @@
# Endpoint to reset all passwords in DEV environment
url(r'^resetallpass/$', views.reset_all_pass, name='resetallpass'),
# API urls
url(r'^api/', include('applications.globals.api.urls'))
url(r'^api/', include('applications.globals.api.urls')),
url(r'^update_global_variable/$', views.update_global_variable, name='update_global_var'),
]
87 changes: 82 additions & 5 deletions FusionIIIT/applications/globals/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -740,21 +740,26 @@ def dashboard(request):

}
# a=HoldsDesignation.objects.select_related('user','working','designation').filter(designation = user)
print(context)
print(type(user.extrainfo.user_type))
if(request.user.get_username() == 'director'):
return render(request, "dashboard/director_dashboard2.html", {})
elif( "dean_rspc" in designation):
return render(request, "dashboard/dashboard.html", context)
elif user.extrainfo.user_type != 'student':
elif user.extrainfo.user_type != "student":
print ("inside")
designat = HoldsDesignation.objects.select_related().filter(user=user)
response = {'designat':designat}
context.update(response)
return render(request, "dashboard/dashboard.html", context)
else:
print ("inside2")

return render(request, "dashboard/dashboard.html", context)


@login_required(login_url=LOGIN_URL)
def profile(request, username=None):
def profile(request, username=None):
"""
Generic endpoint for views.
If it's a faculty, redirects to /eis/profile/*
Expand All @@ -768,16 +773,76 @@ def profile(request, username=None):
"""
user = get_object_or_404(User, Q(username=username)) if username else request.user


editable = request.user == user
print("editable",editable)
profile = get_object_or_404(ExtraInfo, Q(user=user))
print("profile",profile)
if(str(user.extrainfo.user_type)=='faculty'):
print("profile")
return HttpResponseRedirect('/eis/profile/' + (username if username else ''))
if(str(user.extrainfo.department)=='department: Academics'):
print("profile2")
return HttpResponseRedirect('/aims')
current = HoldsDesignation.objects.select_related('user','working','designation').filter(Q(working=user, designation__name="student"))

array = [
"student",
"CC convenor",
"Mechatronic convenor",
"mess_committee",
"mess_convener",
"alumini",
"Electrical_AE",
"Electrical_JE",
"Civil_AE",
"Civil_JE",
"co-ordinator",
"co co-ordinator",
"Convenor",
"Convener",
"cc1convener",
"CC2 convener",
"mess_convener_mess2",
"mess_committee_mess2"
]

# queryset = HoldsDesignation.objects.select_related('user','working','designation').filter(Q(working=user))

# for obj in queryset:
# designation_name = obj.designation.name
# print("designation_name",designation_name)

# design = False
# if designation_name in array:
# design = True
# print("design",design)
# print("designation_name",designation_name)
# if design:
# current = HoldsDesignation.objects.select_relapted('user','working','designation').filter(Q(working=user, designation__name=designation_name))
# for obj in current:
# obj.designation.name = obj.designation.name.replace(designation_name, 'student')

designation_name = ""
design = False

current = HoldsDesignation.objects.select_related('user', 'working', 'designation').filter(Q(working=user))

for obj in current:
designation_name = obj.designation.name
if designation_name in array:
design = True
break

if design:
current = HoldsDesignation.objects.filter(working=user, designation__name=designation_name)
for obj in current:
obj.designation.name = obj.designation.name.replace(designation_name, 'student')

print(user.extrainfo.user_type)
print("current",current)
if current:
print("profile3")
student = get_object_or_404(Student, Q(id=profile.id))
print("student",student)
if editable and request.method == 'POST':
if 'studentapprovesubmit' in request.POST:
status = PlacementStatus.objects.select_related('notify_id','unique_id__id__user','unique_id__id__department').filter(pk=request.POST['studentapprovesubmit']).update(invitation='ACCEPTED', timestamp=timezone.now())
Expand Down Expand Up @@ -979,6 +1044,7 @@ def profile(request, username=None):
return render(request, "globals/student_profile4.html", context)
if 'achievementsubmit' in request.POST or 'deleteach' in request.POST:
return render(request, "globals/student_profile5.html", context)
print("context",context)
return render(request, "globals/student_profile.html", context)
else:
return redirect("/")
Expand Down Expand Up @@ -1176,4 +1242,15 @@ def search(request):
if len(search_results) == 0:
search_results = []
context = {'sresults':search_results}
return render(request, "globals/search.html", context)
return render(request, "globals/search.html", context),

@login_required(login_url=LOGIN_URL)
def update_global_variable(request):
if request.method == 'POST':
selected_option = request.POST.get('dropdown')
request.session['currentDesignationSelected'] = selected_option
print(selected_option)
print(request.session['currentDesignationSelected'])
return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/'))
# Redirect to home if not a POST request or some issue occurs
return HttpResponseRedirect(reverse('home'))
44 changes: 38 additions & 6 deletions FusionIIIT/templates/academic_procedures/academic.html
100755 → 100644
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,39 @@
}

</style>

<style>
.dashboard-container {
margin: 0 3rem;
display: grid;
gap: 3rem;
grid-template-columns: 1fr;
}

.card-container {
display: flex;
flex-direction: column;
align-items: center;
}

@media (min-width:800px) {
.dashboard-container {
grid-template-columns: 3fr 7fr;
}
.module-container {
grid-column: 1/-1;
}
}

@media (min-width:1200px) {
.dashboard-container {
grid-template-columns: 3fr 7fr 3fr;
}
.module-container {
grid-column:auto;
}
}
</style>
{% endblock css %}


Expand All @@ -30,13 +63,12 @@
{% include 'dashboard/navbar.html' %}
{% endblock %}

<div class="ui stackable doubling grid">
<div class="dashboard-container">

{% comment %}The left-margin segment!{% endcomment %}
<div class="column"></div>


{% comment %}The left-rail segment starts here!{% endcomment %}
<div class="three wide column">
<div class="card-container">
{% comment %}The user image card starts here!{% endcomment %}
{% block usercard %}
{% include 'globals/usercard.html' %}
Expand All @@ -46,8 +78,8 @@
<div class="ui divider"></div>

{% comment %}The Tab-Menu starts here!{% endcomment %}
<div class="ui huge fluid vertical pointing menu" id="vtab"
style="max-width: 320px;">
<div class="ui huge fluid vertical pointing menu" style="max-width: 25rem;">

{% if student_flag %}
<a class="active item" data-tab="one">
<B>Current Semester</B>
Expand Down
11 changes: 6 additions & 5 deletions FusionIIIT/templates/dashboard/dashboard.html
100755 → 100644
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,8 @@
{% comment %}The Tab-Menu starts here!{% endcomment %}
<div class="ui huge fluid vertical pointing menu" style="max-width: 320px;">

<a class="item disabled" href="{% url 'globals:profile' %}">
View Professional Profile
<a class="item" href="{% url 'globals:profile' %}">
View Professional Profile
<i class="right floated chevron right icon"></i>
</a>
{% if "dean_rspc" in designation %}
Expand All @@ -62,11 +62,12 @@
{% comment %}The Tab-Menu ends here!{% endcomment %}


{% if 'student' != request.user.extrainfo.user_type %}
{% if 'student' == request.user.extrainfo.user_type %}

{% comment %}The Tab-Menu starts here!{% endcomment %}
<div class="ui huge fluid vertical pointing menu" style="max-width: 320px;">
<a class="item disabled" href="/hr2/administrativeProfile">
<a class="item
" href="/hr2/administrativeProfile">
View Administrative Profile
<i class="right floated chevron right icon"></i>
</a>
Expand All @@ -77,7 +78,7 @@

{% comment %}The Tab-Menu starts here!{% endcomment %}


{% if request.user.extrainfo.user_type == 'faculty' %}
{%for desig in designat%}
{% if 'hradmin' == desig.designation.name %}
Expand Down
Loading