# URL Routing Plan for Django Manufacturing App ## Overview This document outlines the URL routing structure for the manufacturing application, defining how users will navigate through different modules and features. ## Main URLs Configuration ### 1. Root URLs (manufacturing_app/urls.py) ```python # manufacturing_app/urls.py from django.contrib import admin from django.urls import path, include from django.conf import settings from django.conf.urls.static import static from dashboard import views as dashboard_views urlpatterns = [ path('admin/', admin.site.urls), path('', dashboard_views.home, name='home'), path('dashboard/', include('dashboard.urls')), path('accounts/', include('accounts.urls')), path('inventory/', include('inventory.urls')), path('purchasing/', include('purchasing.urls')), path('sales/', include('sales.urls')), path('manufacturing/', include('manufacturing.urls')), path('reports/', include('reports.urls')), path('database/', include('database_management.urls')), ] # Serve media files in development if settings.DEBUG: urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) ``` ## Module-specific URL Patterns ### 2. Accounts URLs (accounts/urls.py) ```python # accounts/urls.py from django.urls import path from . import views app_name = 'accounts' urlpatterns = [ # Authentication path('login/', views.login_view, name='login'), path('logout/', views.logout_view, name='logout'), path('register/', views.register_view, name='register'), path('profile/', views.profile_view, name='profile'), path('profile/edit/', views.edit_profile_view, name='edit_profile'), # User Management path('users/', views.user_list_view, name='user_list'), path('users/create/', views.create_user_view, name='create_user'), path('users//', views.user_detail_view, name='user_detail'), path('users//edit/', views.edit_user_view, name='edit_user'), path('users//delete/', views.delete_user_view, name='delete_user'), # Role Management path('roles/', views.role_list_view, name='role_list'), path('roles/create/', views.create_role_view, name='create_role'), path('roles//', views.role_detail_view, name='role_detail'), path('roles//edit/', views.edit_role_view, name='edit_role'), path('roles//delete/', views.delete_role_view, name='delete_role'), # Permission Management path('permissions/', views.permission_list_view, name='permission_list'), ] ``` ### 3. Inventory URLs (inventory/urls.py) ```python # inventory/urls.py from django.urls import path from . import views app_name = 'inventory' urlpatterns = [ # Dashboard path('', views.inventory_dashboard, name='dashboard'), # Products path('products/', views.product_list_view, name='product_list'), path('products/create/', views.create_product_view, name='create_product'), path('products//', views.product_detail_view, name='product_detail'), path('products//edit/', views.edit_product_view, name='edit_product'), path('products//delete/', views.delete_product_view, name='delete_product'), # Categories path('categories/', views.category_list_view, name='category_list'), path('categories/create/', views.create_category_view, name='create_category'), path('categories//edit/', views.edit_category_view, name='edit_category'), path('categories//delete/', views.delete_category_view, name='delete_category'), # Units of Measure path('uom/', views.uom_list_view, name='uom_list'), path('uom/create/', views.create_uom_view, name='create_uom'), path('uom//edit/', views.edit_uom_view, name='edit_uom'), path('uom//delete/', views.delete_uom_view, name='delete_uom'), # Warehouses path('warehouses/', views.warehouse_list_view, name='warehouse_list'), path('warehouses/create/', views.create_warehouse_view, name='create_warehouse'), path('warehouses//edit/', views.edit_warehouse_view, name='edit_warehouse'), path('warehouses//delete/', views.delete_warehouse_view, name='delete_warehouse'), # Stock Movements path('movements/', views.stock_movement_list_view, name='movement_list'), path('movements/in/', views.stock_in_view, name='stock_in'), path('movements/out/', views.stock_out_view, name='stock_out'), path('movements/adjustment/', views.stock_adjustment_view, name='stock_adjustment'), path('movements/transfer/', views.stock_transfer_view, name='stock_transfer'), ] ``` ### 4. Purchasing URLs (purchasing/urls.py) ```python # purchasing/urls.py from django.urls import path from . import views app_name = 'purchasing' urlpatterns = [ # Dashboard path('', views.purchasing_dashboard, name='dashboard'), # Suppliers path('suppliers/', views.supplier_list_view, name='supplier_list'), path('suppliers/create/', views.create_supplier_view, name='create_supplier'), path('suppliers//', views.supplier_detail_view, name='supplier_detail'), path('suppliers//edit/', views.edit_supplier_view, name='edit_supplier'), path('suppliers//delete/', views.delete_supplier_view, name='delete_supplier'), # Purchase Orders path('orders/', views.po_list_view, name='po_list'), path('orders/create/', views.create_po_view, name='create_po'), path('orders//', views.po_detail_view, name='po_detail'), path('orders//edit/', views.edit_po_view, name='edit_po'), path('orders//approve/', views.approve_po_view, name='approve_po'), path('orders//cancel/', views.cancel_po_view, name='cancel_po'), path('orders//delete/', views.delete_po_view, name='delete_po'), # Goods Receipt path('receipts/', views.gr_list_view, name='gr_list'), path('receipts/create//', views.create_gr_view, name='create_gr'), path('receipts//', views.gr_detail_view, name='gr_detail'), ] ``` ### 5. Sales URLs (sales/urls.py) ```python # sales/urls.py from django.urls import path from . import views app_name = 'sales' urlpatterns = [ # Dashboard path('', views.sales_dashboard, name='dashboard'), # Customers path('customers/', views.customer_list_view, name='customer_list'), path('customers/create/', views.create_customer_view, name='create_customer'), path('customers//', views.customer_detail_view, name='customer_detail'), path('customers//edit/', views.edit_customer_view, name='edit_customer'), path('customers//delete/', views.delete_customer_view, name='delete_customer'), # Sales Orders path('orders/', views.so_list_view, name='so_list'), path('orders/create/', views.create_so_view, name='create_so'), path('orders//', views.so_detail_view, name='so_detail'), path('orders//edit/', views.edit_so_view, name='edit_so'), path('orders//approve/', views.approve_so_view, name='approve_so'), path('orders//cancel/', views.cancel_so_view, name='cancel_so'), path('orders//delete/', views.delete_so_view, name='delete_so'), # Delivery path('deliveries/', views.delivery_list_view, name='delivery_list'), path('deliveries/create//', views.create_delivery_view, name='create_delivery'), path('deliveries//', views.delivery_detail_view, name='delivery_detail'), ] ``` ### 6. Manufacturing URLs (manufacturing/urls.py) ```python # manufacturing/urls.py from django.urls import path from . import views app_name = 'manufacturing' urlpatterns = [ # Dashboard path('', views.manufacturing_dashboard, name='dashboard'), # Bill of Materials path('bom/', views.bom_list_view, name='bom_list'), path('bom/create/', views.create_bom_view, name='create_bom'), path('bom//', views.bom_detail_view, name='bom_detail'), path('bom//edit/', views.edit_bom_view, name='edit_bom'), path('bom//delete/', views.delete_bom_view, name='delete_bom'), # Manufacturing Orders path('orders/', views.mo_list_view, name='mo_list'), path('orders/create/', views.create_mo_view, name='create_mo'), path('orders//', views.mo_detail_view, name='mo_detail'), path('orders//edit/', views.edit_mo_view, name='edit_mo'), path('orders//start/', views.start_mo_view, name='start_mo'), path('orders//complete/', views.complete_mo_view, name='complete_mo'), path('orders//cancel/', views.cancel_mo_view, name='cancel_mo'), path('orders//delete/', views.delete_mo_view, name='delete_mo'), ] ``` ### 7. Database Management URLs (database_management/urls.py) ```python # database_management/urls.py from django.urls import path from . import views app_name = 'database_management' urlpatterns = [ path('', views.db_dashboard, name='dashboard'), path('backup/', views.backup_view, name='backup'), path('restore/', views.restore_view, name='restore'), path('initialize/', views.initialize_view, name='initialize'), path('backups/', views.backup_list_view, name='backup_list'), path('backups//download/', views.download_backup_view, name='download_backup'), path('backups//delete/', views.delete_backup_view, name='delete_backup'), ] ``` ### 8. Reports URLs (reports/urls.py) ```python # reports/urls.py from django.urls import path from . import views app_name = 'reports' urlpatterns = [ path('', views.reports_dashboard, name='dashboard'), path('inventory/', views.inventory_report_view, name='inventory_report'), path('sales/', views.sales_report_view, name='sales_report'), path('purchasing/', views.purchasing_report_view, name='purchasing_report'), path('manufacturing/', views.manufacturing_report_view, name='manufacturing_report'), path('financial/', views.financial_report_view, name='financial_report'), path('/export/excel/', views.export_to_excel_view, name='export_excel'), path('/export/pdf/', views.export_to_pdf_view, name='export_pdf'), ] ``` ### 9. Dashboard URLs (dashboard/urls.py) ```python # dashboard/urls.py from django.urls import path from . import views app_name = 'dashboard' urlpatterns = [ path('', views.home, name='home'), path('print/', views.print_dashboard, name='print_dashboard'), path('widgets//configure/', views.configure_widget_view, name='configure_widget'), path('widgets//toggle/', views.toggle_widget_view, name='toggle_widget'), ] ``` ## URL Naming Convention To maintain consistency across the application, we'll follow these naming conventions: 1. **List views**: `module_list` (e.g., `product_list`, `user_list`) 2. **Detail views**: `module_detail` (e.g., `product_detail`, `user_detail`) 3. **Create views**: `create_module` (e.g., `create_product`, `create_user`) 4. **Edit views**: `edit_module` (e.g., `edit_product`, `edit_user`) 5. **Delete views**: `delete_module` (e.g., `delete_product`, `delete_user`) 6. **Action views**: `action_module` (e.g., `approve_po`, `start_mo`) ## Access Control URLs will be protected using Django's permission system: - Superusers can access all URLs - Regular users can only access URLs for modules they have permission to - Some URLs (like login/logout) are publicly accessible ## API Endpoints (Future Consideration) For potential future API development, we can add API endpoints: ```python # api/urls.py from django.urls import path, include from rest_framework.routers import DefaultRouter urlpatterns = [ path('api/v1/inventory/', include('inventory.api_urls')), path('api/v1/purchasing/', include('purchasing.api_urls')), path('api/v1/sales/', include('sales.api_urls')), # ... other API endpoints ] ``` This URL structure provides a clean, organized, and scalable routing system for the manufacturing application, making it easy for users to navigate and for developers to maintain.