Skip to content

Version-2 of Complaint Management #1785

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 12 commits into
base: dashboard_client
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions FusionIIIT/applications/complaint_system/admin.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
from django.contrib import admin

from .models import Caretaker, StudentComplain, Supervisor, Workers, SectionIncharge
from .models import Caretaker, StudentComplain, ServiceProvider, Workers, SectionIncharge, Warden, Complaint_Admin

admin.site.register(Caretaker)
admin.site.register(Workers)
admin.site.register(StudentComplain)
admin.site.register(Supervisor)
admin.site.register(ServiceProvider)
admin.site.register(SectionIncharge)
admin.site.register(Warden)
admin.site.register(Complaint_Admin)
6 changes: 3 additions & 3 deletions FusionIIIT/applications/complaint_system/api/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
from rest_framework.authtoken.models import Token
from rest_framework import serializers
from notifications.models import Notification
from applications.complaint_system.models import Caretaker, StudentComplain, Supervisor, Workers
from applications.complaint_system.models import Caretaker, StudentComplain, ServiceProvider, Workers
from applications.globals.models import ExtraInfo,User

class StudentComplainSerializers(serializers.ModelSerializer):
Expand All @@ -21,9 +21,9 @@ class Meta:
model = Caretaker
fields=('__all__')

class SupervisorSerializers(serializers.ModelSerializer):
class ServiceProviderSerializers(serializers.ModelSerializer):
class Meta:
model=Supervisor
model=ServiceProvider
fields=('__all__')

class ExtraInfoSerializers(serializers.ModelSerializer):
Expand Down
10 changes: 5 additions & 5 deletions FusionIIIT/applications/complaint_system/api/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,9 @@
url(r'^removecaretaker/(?P<c_id>[0-9]+)',views.edit_caretaker_api,name='caretaker-delete-api'),
url(r'^updatecaretaker/(?P<c_id>[0-9]+)',views.edit_caretaker_api,name='caretaker-put-api'),

url(r'^supervisors',views.supervisor_api,name='supervisor-get-api'),
url(r'^addsupervisor',views.supervisor_api,name='supervisor-post-api'),
url(r'^removesupervisor/(?P<s_id>[0-9]+)',views.edit_supervisor_api,name='supervisor-delete-api'),
url(r'^updatesupervisor/(?P<s_id>[0-9]+)',views.edit_supervisor_api,name='supervisor-put-api'),
url(r'^service_providers',views.service_provider_api,name='service_provider-get-api'),
url(r'^addservice_provider',views.service_provider_api,name='service_provider-post-api'),
url(r'^removeservice_provider/(?P<s_id>[0-9]+)',views.edit_service_provider_api,name='service_provider-delete-api'),
url(r'^updateservice_provider/(?P<s_id>[0-9]+)',views.edit_service_provider_api,name='service_provider-put-api'),

]
]
35 changes: 17 additions & 18 deletions FusionIIIT/applications/complaint_system/api/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
from rest_framework.permissions import AllowAny
from rest_framework.response import Response
from applications.globals.models import User,ExtraInfo
from applications.complaint_system.models import Caretaker, StudentComplain, Supervisor, Workers
from applications.complaint_system.models import Caretaker, StudentComplain, ServiceProvider, Workers
from . import serializers


Expand All @@ -23,7 +23,7 @@ def complaint_details_api(request,detailcomp_id1):
if complaint_detail.worker_id is None:
worker_detail_serialized = {}
else :
worker_detail = Workers.objects.get(id=complaint_detail.worker_id.id)
worker_detail = worker_detail.objects.get(id=complaint_detail.worker_id)
worker_detail_serialized = serializers.WorkersSerializers(instance=worker_detail).data
complainer = User.objects.get(username=complaint_detail.complainer.user.username)
complainer_serialized = serializers.UserSerializers(instance=complainer).data
Expand Down Expand Up @@ -51,7 +51,7 @@ def student_complain_api(request):
complain = StudentComplain.objects.filter(location = staff.area)
elif user.user_type == 'faculty':
faculty = ExtraInfo.objects.get(id=user.id)
faculty = Supervisor.objects.get(sup_id=faculty)
faculty = ServiceProvider.objects.get(ser_pro_id=faculty)
complain = StudentComplain.objects.filter(location = faculty.area)
complains = serializers.StudentComplainSerializers(complain,many=True).data
resp = {
Expand Down Expand Up @@ -154,8 +154,8 @@ def caretaker_api(request):
user = get_object_or_404(User ,username=request.user.username)
user = ExtraInfo.objects.all().filter(user = user).first()
try :
supervisor = Supervisor.objects.get(sup_id=user)
except Supervisor.DoesNotExist:
service_provider = ServiceProvider.objects.get(staff_id=user)
except ServiceProvider.DoesNotExist:
return Response({'message':'Logged in user does not have the permissions'},status=status.HTTP_203_NON_AUTHORITATIVE_INFORMATION)
serializer = serializers.CaretakerSerializers(data=request.data)
if serializer.is_valid():
Expand All @@ -170,8 +170,8 @@ def edit_caretaker_api(request,c_id):
user = get_object_or_404(User ,username=request.user.username)
user = ExtraInfo.objects.all().filter(user = user).first()
try :
supervisor = Supervisor.objects.get(sup_id=user)
except Supervisor.DoesNotExist:
service_provider = ServiceProvider.objects.get(staff_id=user)
except ServiceProvider.DoesNotExist:
return Response({'message':'Logged in user does not have the permissions'},status=status.HTTP_203_NON_AUTHORITATIVE_INFORMATION)
try:
caretaker = Caretaker.objects.get(id = c_id)
Expand All @@ -190,21 +190,21 @@ def edit_caretaker_api(request,c_id):
@api_view(['GET','POST'])
@permission_classes([IsAuthenticated])
@authentication_classes([TokenAuthentication])
def supervisor_api(request):
def service_provider_api(request):

if request.method == 'GET':
supervisor = Supervisor.objects.all()
supervisors = serializers.SupervisorSerializers(supervisor,many=True).data
service_provider = ServiceProvider.objects.all()
service_providers = serializers.ServiceProviderSerializers(service_provider,many=True).data
resp = {
'supervisors' : supervisors,
'service_providers' : service_providers,
}
return Response(data=resp,status=status.HTTP_200_OK)

elif request.method == 'POST':
user = get_object_or_404(User,username=request.user.username)
if user.is_superuser == False:
return Response({'message':'Logged in user does not have permission'},status=status.HTTP_203_NON_AUTHORITATIVE_INFORMATION)
serializer = serializers.SupervisorSerializers(data=request.data)
serializer = serializers.ServiceProviderSerializers(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data,status=status.HTTP_201_CREATED)
Expand All @@ -213,21 +213,20 @@ def supervisor_api(request):
@api_view(['DELETE','PUT'])
@permission_classes([IsAuthenticated])
@authentication_classes([TokenAuthentication])
def edit_supervisor_api(request,s_id):
def edit_service_provider_api(request,s_id):
user = get_object_or_404(User,username=request.user.username)
if user.is_superuser == False:
return Response({'message':'Logged in user does not have permission'},status=status.HTTP_203_NON_AUTHORITATIVE_INFORMATION)
try:
supervisor = Supervisor.objects.get(id = s_id)
except Supervisor.DoesNotExist:
service_provider = ServiceProvider.objects.get(id = s_id)
except ServiceProvider.DoesNotExist:
return Response({'message': 'The Caretaker does not exist'}, status=status.HTTP_404_NOT_FOUND)
if request.method == 'DELETE':
supervisor.delete()
service_provider.delete()
return Response({'message': 'Caretaker deleted'},status=status.HTTP_404_NOT_FOUND)
elif request.method == 'PUT':
serializer = serializers.SupervisorSerializers(supervisor,data=request.data)
serializer = serializers.ServiceProviderSerializers(service_provider,data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data,status=status.HTTP_200_OK)
return Response(serializer.errors,status=status.HTTP_400_BAD_REQUEST)

Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@ class Migration(migrations.Migration):
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('type', models.CharField(choices=[('Electricity', 'Electricity'), ('carpenter', 'carpenter'), ('plumber', 'plumber'), ('garbage', 'garbage'), ('dustbin', 'dustbin'), ('internet', 'internet'), ('other', 'other')], default='Electricity', max_length=30)),
('sup_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='globals.extrainfo')),
],
),
migrations.CreateModel(
Expand Down
45 changes: 43 additions & 2 deletions FusionIIIT/applications/complaint_system/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,15 @@ class Caretaker(models.Model):

def __str__(self):
return str(self.id) + '-' + str(self.area)

class Warden(models.Model):
staff_id = models.ForeignKey(ExtraInfo, on_delete=models.CASCADE)
area = models.CharField(choices=Constants.AREA, max_length=20, default='hall-1')
rating = models.IntegerField(default=0)
myfeedback = models.CharField(max_length=400, default="No feedback yet")

def __str__(self):
return str(self.staff_id) + '-' + str(self.area)

class SectionIncharge(models.Model):
staff_id = models.ForeignKey(ExtraInfo, on_delete=models.CASCADE)
Expand Down Expand Up @@ -84,14 +93,46 @@ class StudentComplain(models.Model):
upload_complaint = models.FileField(blank=True)
comment = models.CharField(max_length=100, default="None")
#upload_resolved = models.FileField(blank=True,null=True)
upload_resolved = models.FileField(upload_to='resolved_complaints/', blank=True, null=True)

class meta:
db_table = "complaint_system_student_complain"

def __str__(self):
return str(self.complainer.user.username)


class Supervisor(models.Model):
class ServiceProvider(models.Model):
ser_pro_id = models.ForeignKey(
ExtraInfo,
on_delete=models.CASCADE,
db_column="ser_pro_id_id" # Map to the existing column
)
type = models.CharField(choices=Constants.COMPLAINT_TYPE, max_length=30,default='Electricity')

class Meta:
db_table = "complaint_system_service_provider"

def __str__(self):
return str(self.ser_pro_id) + '-' + str(self.type)

class Complaint_Admin(models.Model):
sup_id = models.ForeignKey(ExtraInfo, on_delete=models.CASCADE)

def __str__(self):
return str(self.sup_id)


class ServiceAuthority(models.Model):
ser_pro_id = models.ForeignKey(
ExtraInfo,
on_delete=models.CASCADE,
db_column="ser_auth_id_id" # Map to the existing column
)
type = models.CharField(choices=Constants.COMPLAINT_TYPE, max_length=30,default='Electricity')

class Meta:
db_table = "complaint_system_service_authority"

def __str__(self):
return str(self.sup_id) + '-' + str(self.type)
return str(self.ser_pro_id) + '-' + str(self.type)
107 changes: 107 additions & 0 deletions FusionIIIT/applications/complaint_system/serializers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
from rest_framework import serializers
from .models import StudentComplain, Caretaker, Warden,Complaint_Admin
from applications.globals.models import ExtraInfo

# Added StudentComplainSerializer
class StudentComplainSerializer(serializers.ModelSerializer):
class Meta:
model = StudentComplain
fields = "__all__"

# Added CaretakerSerializer
class CaretakerSerializer(serializers.ModelSerializer):
class Meta:
model = Caretaker
fields = "__all__"

# Optionally, add ExtraInfoSerializer if needed
class ExtraInfoSerializer(serializers.ModelSerializer):
class Meta:
model = ExtraInfo
fields = "__all__"
from rest_framework import serializers
from .models import StudentComplain, Caretaker
from applications.globals.models import ExtraInfo

# Serializer for StudentComplain (already added previously)
class StudentComplainSerializer(serializers.ModelSerializer):
class Meta:
model = StudentComplain
fields = '__all__'

# Serializer for Caretaker (already added previously)
class CaretakerSerializer(serializers.ModelSerializer):
class Meta:
model = Caretaker
fields = '__all__'

# Serializer for Feedback submission
class FeedbackSerializer(serializers.Serializer):
feedback = serializers.CharField()
rating = serializers.IntegerField()

# Serializer for Resolve Pending complaints
class ResolvePendingSerializer(serializers.Serializer):
yesorno = serializers.ChoiceField(choices=[('Yes', 'Yes'), ('No', 'No')])
comment = serializers.CharField(required=False)
# serializers.py

from rest_framework import serializers
from .models import StudentComplain, Caretaker
from applications.globals.models import ExtraInfo

# Serializer for StudentComplain (already added previously)
class StudentComplainSerializer(serializers.ModelSerializer):
class Meta:
model = StudentComplain
fields = '__all__'

# Serializer for Caretaker (already added previously)
class CaretakerSerializer(serializers.ModelSerializer):
class Meta:
model = Caretaker
fields = '__all__'

class WardenSerializer(serializers.ModelSerializer):
class Meta:
model = Warden
fields = '__all__'

class Complaint_AdminSerializer(serializers.ModelSerializer):
class Meta:
model = Complaint_Admin
fields = '__all__'

# Serializer for Feedback submission
class FeedbackSerializer(serializers.Serializer):
feedback = serializers.CharField()
rating = serializers.IntegerField()

# Serializer for Resolve Pending complaints
# class ResolvePendingSerializer(serializers.Serializer):
# yesorno = serializers.ChoiceField(choices=[('Yes', 'Yes'), ('No', 'No')])
# comment = serializers.CharField(required=False, allow_blank=True)
# serializers.py

class ResolvePendingSerializer(serializers.Serializer):
yesorno = serializers.ChoiceField(choices=[('Yes', 'Yes'), ('No', 'No')])
comment = serializers.CharField(required=False, allow_blank=True)
upload_resolved = serializers.ImageField(required=False, allow_null=True)

from rest_framework import serializers
from .models import StudentComplain, Caretaker, Workers
from applications.globals.models import ExtraInfo

# Serializer for StudentComplain (already added previously)
class StudentComplainSerializer(serializers.ModelSerializer):
class Meta:
model = StudentComplain
fields = '__all__'

# Serializer for Workers (added to handle Workers model)
class WorkersSerializer(serializers.ModelSerializer):
class Meta:
model = Workers
fields = '__all__'


Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ $(document).ready(function(){

// alert("Complaint successfully lodged");
setTimeout(function() {
window.location.replace('http://localhost:8000/complaint/supervisor');
window.location.replace('http://localhost:8000/complaint/service_provider');
}, 1500);


Expand Down
Loading