12 KiB
12 KiB
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)
# 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)
# 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/<int:user_id>/', views.user_detail_view, name='user_detail'),
path('users/<int:user_id>/edit/', views.edit_user_view, name='edit_user'),
path('users/<int:user_id>/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/<int:role_id>/', views.role_detail_view, name='role_detail'),
path('roles/<int:role_id>/edit/', views.edit_role_view, name='edit_role'),
path('roles/<int:role_id>/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)
# 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/<int:product_id>/', views.product_detail_view, name='product_detail'),
path('products/<int:product_id>/edit/', views.edit_product_view, name='edit_product'),
path('products/<int:product_id>/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/<int:category_id>/edit/', views.edit_category_view, name='edit_category'),
path('categories/<int:category_id>/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/<int:uom_id>/edit/', views.edit_uom_view, name='edit_uom'),
path('uom/<int:uom_id>/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/<int:warehouse_id>/edit/', views.edit_warehouse_view, name='edit_warehouse'),
path('warehouses/<int:warehouse_id>/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)
# 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/<int:supplier_id>/', views.supplier_detail_view, name='supplier_detail'),
path('suppliers/<int:supplier_id>/edit/', views.edit_supplier_view, name='edit_supplier'),
path('suppliers/<int:supplier_id>/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/<str:po_number>/', views.po_detail_view, name='po_detail'),
path('orders/<str:po_number>/edit/', views.edit_po_view, name='edit_po'),
path('orders/<str:po_number>/approve/', views.approve_po_view, name='approve_po'),
path('orders/<str:po_number>/cancel/', views.cancel_po_view, name='cancel_po'),
path('orders/<str:po_number>/delete/', views.delete_po_view, name='delete_po'),
# Goods Receipt
path('receipts/', views.gr_list_view, name='gr_list'),
path('receipts/create/<str:po_number>/', views.create_gr_view, name='create_gr'),
path('receipts/<str:gr_number>/', views.gr_detail_view, name='gr_detail'),
]
5. Sales URLs (sales/urls.py)
# 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/<int:customer_id>/', views.customer_detail_view, name='customer_detail'),
path('customers/<int:customer_id>/edit/', views.edit_customer_view, name='edit_customer'),
path('customers/<int:customer_id>/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/<str:so_number>/', views.so_detail_view, name='so_detail'),
path('orders/<str:so_number>/edit/', views.edit_so_view, name='edit_so'),
path('orders/<str:so_number>/approve/', views.approve_so_view, name='approve_so'),
path('orders/<str:so_number>/cancel/', views.cancel_so_view, name='cancel_so'),
path('orders/<str:so_number>/delete/', views.delete_so_view, name='delete_so'),
# Delivery
path('deliveries/', views.delivery_list_view, name='delivery_list'),
path('deliveries/create/<str:so_number>/', views.create_delivery_view, name='create_delivery'),
path('deliveries/<str:delivery_number>/', views.delivery_detail_view, name='delivery_detail'),
]
6. Manufacturing URLs (manufacturing/urls.py)
# 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/<int:bom_id>/', views.bom_detail_view, name='bom_detail'),
path('bom/<int:bom_id>/edit/', views.edit_bom_view, name='edit_bom'),
path('bom/<int:bom_id>/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/<str:mo_number>/', views.mo_detail_view, name='mo_detail'),
path('orders/<str:mo_number>/edit/', views.edit_mo_view, name='edit_mo'),
path('orders/<str:mo_number>/start/', views.start_mo_view, name='start_mo'),
path('orders/<str:mo_number>/complete/', views.complete_mo_view, name='complete_mo'),
path('orders/<str:mo_number>/cancel/', views.cancel_mo_view, name='cancel_mo'),
path('orders/<str:mo_number>/delete/', views.delete_mo_view, name='delete_mo'),
]
7. Database Management URLs (database_management/urls.py)
# 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/<int:backup_id>/download/', views.download_backup_view, name='download_backup'),
path('backups/<int:backup_id>/delete/', views.delete_backup_view, name='delete_backup'),
]
8. Reports URLs (reports/urls.py)
# 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('<int:report_id>/export/excel/', views.export_to_excel_view, name='export_excel'),
path('<int:report_id>/export/pdf/', views.export_to_pdf_view, name='export_pdf'),
]
9. Dashboard URLs (dashboard/urls.py)
# 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/<int:widget_id>/configure/', views.configure_widget_view, name='configure_widget'),
path('widgets/<int:widget_id>/toggle/', views.toggle_widget_view, name='toggle_widget'),
]
URL Naming Convention
To maintain consistency across the application, we'll follow these naming conventions:
- List views:
module_list(e.g.,product_list,user_list) - Detail views:
module_detail(e.g.,product_detail,user_detail) - Create views:
create_module(e.g.,create_product,create_user) - Edit views:
edit_module(e.g.,edit_product,edit_user) - Delete views:
delete_module(e.g.,delete_product,delete_user) - 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:
# 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.