Keine Beschreibung

api.py 6.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. from rest_framework import viewsets, status, generics
  2. from rest_framework import routers
  3. from pprint import pprint
  4. from .models import (
  5. Role, Permission, RolePermission, User, Customer, Material, MaterialDetail,
  6. Operation, Regulation, ComplianceCheck, Report, AuditLog, Authority,
  7. SustainabilityTracking, SupportTicket
  8. )
  9. from .serializers import (
  10. RoleSerializer, PermissionSerializer, RolePermissionSerializer, UserSerializer,
  11. CustomerSerializer, MaterialSerializer, MaterialDetailSerializer, OperationSerializer,
  12. RegulationSerializer, ComplianceCheckSerializer, ReportSerializer, AuditLogSerializer,
  13. AuthoritySerializer, SustainabilityTrackingSerializer, SupportTicketSerializer
  14. )
  15. from tracking.models import Vehicle, Trip, MaintenanceLog, Appointment, GPSData, FuelTransaction
  16. from .serializers import VehicleSerializer, TripSerializer, MaintenanceLogSerializer, AppointmentSerializer,\
  17. GPSDataSerializer, FuelTransactionSerializer, UserProfileSerializer
  18. from rest_framework.permissions import IsAuthenticated
  19. from rest_framework.decorators import action
  20. from rest_framework.response import Response
  21. from rest_framework.parsers import MultiPartParser, FormParser
  22. from userprofile.models import UserProfile
  23. # ViewSets define the view behavior.
  24. class RoleViewSet(viewsets.ModelViewSet):
  25. queryset = Role.objects.all()
  26. serializer_class = RoleSerializer
  27. class PermissionViewSet(viewsets.ModelViewSet):
  28. queryset = Permission.objects.all()
  29. serializer_class = PermissionSerializer
  30. class RolePermissionViewSet(viewsets.ModelViewSet):
  31. queryset = RolePermission.objects.all()
  32. serializer_class = RolePermissionSerializer
  33. class UserViewSet(viewsets.ModelViewSet):
  34. queryset = User.objects.all()
  35. serializer_class = UserSerializer
  36. class CustomerViewSet(viewsets.ModelViewSet):
  37. queryset = Customer.objects.all()
  38. serializer_class = CustomerSerializer
  39. class MaterialViewSet(viewsets.ModelViewSet):
  40. queryset = Material.objects.all()
  41. serializer_class = MaterialSerializer
  42. class MaterialDetailViewSet(viewsets.ModelViewSet):
  43. queryset = MaterialDetail.objects.all()
  44. serializer_class = MaterialDetailSerializer
  45. class OperationViewSet(viewsets.ModelViewSet):
  46. queryset = Operation.objects.all()
  47. serializer_class = OperationSerializer
  48. class RegulationViewSet(viewsets.ModelViewSet):
  49. queryset = Regulation.objects.all()
  50. serializer_class = RegulationSerializer
  51. class ComplianceCheckViewSet(viewsets.ModelViewSet):
  52. queryset = ComplianceCheck.objects.all()
  53. serializer_class = ComplianceCheckSerializer
  54. class ReportViewSet(viewsets.ModelViewSet):
  55. queryset = Report.objects.all()
  56. serializer_class = ReportSerializer
  57. class AuditLogViewSet(viewsets.ModelViewSet):
  58. queryset = AuditLog.objects.all()
  59. serializer_class = AuditLogSerializer
  60. class AuthorityViewSet(viewsets.ModelViewSet):
  61. queryset = Authority.objects.all()
  62. serializer_class = AuthoritySerializer
  63. class SustainabilityTrackingViewSet(viewsets.ModelViewSet):
  64. queryset = SustainabilityTracking.objects.all()
  65. serializer_class = SustainabilityTrackingSerializer
  66. class SupportTicketViewSet(viewsets.ModelViewSet):
  67. queryset = SupportTicket.objects.all()
  68. serializer_class = SupportTicketSerializer
  69. class VehicleViewSet(viewsets.ModelViewSet):
  70. queryset = Vehicle.objects.all()
  71. serializer_class = VehicleSerializer
  72. class TripViewSet(viewsets.ModelViewSet):
  73. queryset = Trip.objects.all()
  74. serializer_class = TripSerializer
  75. class MaintenanceLogViewSet(viewsets.ModelViewSet):
  76. queryset = MaintenanceLog.objects.all()
  77. serializer_class = MaintenanceLogSerializer
  78. class AppointmentViewSet(viewsets.ModelViewSet):
  79. queryset = Appointment.objects.all()
  80. serializer_class = AppointmentSerializer
  81. class GPSDataViewSet(viewsets.ModelViewSet):
  82. queryset = GPSData.objects.all()
  83. serializer_class = GPSDataSerializer
  84. class FuelTransactionViewSet(viewsets.ModelViewSet):
  85. queryset = FuelTransaction.objects.all()
  86. serializer_class = FuelTransactionSerializer
  87. class UserProfileViewSet(viewsets.ModelViewSet):
  88. queryset = UserProfile.objects.all()
  89. serializer_class = UserProfileSerializer
  90. permission_classes = [IsAuthenticated]
  91. @action(detail=False, methods=['get'], permission_classes=[IsAuthenticated])
  92. def myprofile(self, request):
  93. try:
  94. profile = UserProfile.objects.get(user=request.user)
  95. serializer = self.get_serializer(profile)
  96. return Response(serializer.data, status=status.HTTP_200_OK)
  97. except UserProfile.DoesNotExist:
  98. return Response({"detail": "Profile not found."}, status=status.HTTP_404_NOT_FOUND)
  99. @action(detail=False, methods=['put'], permission_classes=[IsAuthenticated], parser_classes=[MultiPartParser, FormParser])
  100. def update_myprofile(self, request):
  101. pprint(request.data)
  102. pprint(request.user)
  103. profile, created = UserProfile.objects.get_or_create(user=request.user)
  104. serializer = self.get_serializer(profile, data=request.data, partial=True)
  105. if serializer.is_valid():
  106. serializer.save()
  107. return Response(serializer.data, status=status.HTTP_200_OK)
  108. return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
  109. # Routers provide an easy way of automatically determining the URL conf.
  110. router = routers.DefaultRouter()
  111. router.register(r'roles', RoleViewSet)
  112. router.register(r'permissions', PermissionViewSet)
  113. router.register(r'role_permissions', RolePermissionViewSet)
  114. router.register(r'users', UserViewSet)
  115. router.register(r'customers', CustomerViewSet)
  116. router.register(r'materials', MaterialViewSet)
  117. router.register(r'material_details', MaterialDetailViewSet)
  118. router.register(r'operations', OperationViewSet)
  119. router.register(r'regulations', RegulationViewSet)
  120. router.register(r'compliance_checks', ComplianceCheckViewSet)
  121. router.register(r'reports', ReportViewSet)
  122. router.register(r'audit_logs', AuditLogViewSet)
  123. router.register(r'authorities', AuthorityViewSet)
  124. router.register(r'sustainability_trackings', SustainabilityTrackingViewSet)
  125. router.register(r'support_tickets', SupportTicketViewSet)
  126. router.register(r'vehicles', VehicleViewSet)
  127. router.register(r'trips', TripViewSet)
  128. router.register(r'maintenance-logs', MaintenanceLogViewSet)
  129. router.register(r'appointments', AppointmentViewSet)
  130. router.register(r'gps-data', GPSDataViewSet)
  131. router.register(r'fuel-transactions', FuelTransactionViewSet)
  132. router.register(r'user-profiles', UserProfileViewSet)