Skip to content
Closed
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
96 changes: 96 additions & 0 deletions FusionIIIT/applications/iwdModuleV2/api/serializers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
from rest_framework import serializers
from applications.globals.models import *
from applications.iwdModuleV2.models import *
from applications.ps1.models import *
from decimal import Decimal
import json
class WorkOrderFormSerializer(serializers.ModelSerializer):
class Meta:
model = WorkOrder
fields = '__all__'

class DesignationSerializer(serializers.ModelSerializer):
class Meta:
model = Designation
fields = ['id', 'name']

class HoldsDesignationSerializer(serializers.ModelSerializer):
designation = DesignationSerializer()
username = serializers.CharField(source='user.username')

class Meta:
model = HoldsDesignation
fields = ['id', 'designation', 'username']

class CreateRequestsSerializer(serializers.ModelSerializer):
class Meta:
model = Requests
fields = ['id', 'name', 'area', 'description', 'requestCreatedBy']

def create(self, validated_data):
validated_data['engineerProcessed'] = 0
validated_data['iwdAdminApproval'] = 0
validated_data['directorApproval'] = 0
validated_data['deanProcessed'] = 0
validated_data['status'] = "Pending"
validated_data['issuedWorkOrder'] = 0
validated_data['workCompleted'] = 0
validated_data['billGenerated'] = 0
validated_data['billProcessed'] = 0
validated_data['billSettled'] = 0
return super().create(validated_data)

class IWDAdminApprovedRequestsSerializer(serializers.ModelSerializer):
class Meta:
model = Requests
fields = ['id', 'name', 'area', 'description', 'requestCreatedBy']

class DirectorApprovedRequestsSerializer(serializers.ModelSerializer):
class Meta:
model = Requests
fields = ['id', 'name', 'area', 'description', 'requestCreatedBy']

class WorkUnderProgressSerializer(serializers.ModelSerializer):
class Meta:
model = Requests
fields = ['id', 'name', 'area', 'description', 'requestCreatedBy', 'issuedWorkOrder', 'workCompleted']


class RequestsInProgressSerializer(serializers.ModelSerializer):
class Meta:
model = Requests
fields = ['id', 'name', 'area', 'description', 'requestCreatedBy', 'issuedWorkOrder', 'workCompleted']

class ItemsSerializer(serializers.ModelSerializer):
class Meta:
model = Item
fields = ['name', 'description', 'unit', 'price_per_unit', 'quantity', 'docs', 'total_price', 'id']


class CreateProposalSerializer(serializers.ModelSerializer):
items = ItemsSerializer(many=True, write_only=True) # Keep the many=True option

class Meta:
model = Proposal
fields = '__all__'

def create(self, validated_data):
items_data = validated_data.pop('items', [])
proposal = Proposal.objects.create(**validated_data)
proposal.save()
return proposal

class ProposalSerializer(serializers.ModelSerializer):
class Meta:
model = Proposal
fields = '__all__'


class VendorSerializer(serializers.ModelSerializer):
class Meta:
model = Vendor
fields = '__all__'
def create(self, validated_data):
vendor = Vendor.objects.create(**validated_data)
vendor.save()
return vendor
49 changes: 49 additions & 0 deletions FusionIIIT/applications/iwdModuleV2/api/urls.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
from django.urls import path
from rest_framework.routers import DefaultRouter
from . import views

router = DefaultRouter()

# Main resources
router.register("requests", views.RequestViewSet, basename="requests")
router.register("budgets", views.BudgetViewSet, basename="budgets")
router.register("vendors", views.VendorViewSet, basename="vendors")
router.register("work", views.WorkViewSet, basename="work")

urlpatterns = router.urls + [

# Request workflows
path("requests/<int:pk>/forward/", views.forward_request, name="forward-request"),
path("requests/<int:pk>/director-approval/", views.handle_director_approval, name="director-approval"),
path("requests/<int:pk>/admin-approval/", views.handle_admin_approval, name="admin-approval"),
path("requests/<int:pk>/dean-process/", views.handle_dean_process_request, name="dean-process"),

# Status endpoints
path("requests-status/", views.requests_status, name="requests-status"),
path("rejected-requests/", views.rejected_requests, name="rejected-requests"),

# Work progress
path("work/issued/", views.get_issued_work, name="issued-work"),
path("work/progress/", views.work_under_progress, name="work-under-progress"),
path("work/completed/", views.work_completed, name="work-completed"),

# Vendor & proposal endpoints
path("proposals/", views.get_proposals, name="proposals"),
path("items/", views.get_items, name="items"),

# Budget APIs
path("budget/add/", views.add_budget, name="add-budget"),
path("budget/edit/", views.edit_budget, name="edit-budget"),
path("budget/view/", views.view_budget, name="view-budget"),

# Audit APIs
path("audit/", views.handle_audit_document, name="audit-document"),
path("audit/view/", views.audit_document_view, name="audit-document-view"),

# Billing APIs
path("bills/process/", views.handle_process_bills, name="process-bills"),
path("bills/generated/", views.generatedBillsView, name="generated-bills"),
path("bills/settle/", views.settle_bills_view, name="settle-bills"),
path("bills/settle-request/", views.handle_settle_bill_requests, name="settle-bills-request"),

]
Loading
Loading