2026-03-24 14:46:03 +00:00
|
|
|
from django.urls import path
|
|
|
|
|
from rest_framework_simplejwt.views import TokenRefreshView
|
|
|
|
|
from . import views
|
|
|
|
|
|
|
|
|
|
urlpatterns = [
|
|
|
|
|
path('admin/auth/login/', views.AdminLoginView.as_view(), name='admin_login'),
|
|
|
|
|
path('auth/refresh/', TokenRefreshView.as_view(), name='token_refresh'),
|
|
|
|
|
path('auth/me/', views.MeView.as_view(), name='auth_me'),
|
|
|
|
|
path('health/', views.HealthView.as_view(), name='health'),
|
feat: Phase 1+2 - JWT auth, dashboard metrics API, DB indexes
Phase 1 - JWT Auth Foundation:
- Replace token auth with djangorestframework-simplejwt
- POST /api/v1/admin/auth/login/ - returns access + refresh JWT
- POST /api/v1/auth/refresh/ - JWT refresh
- GET /api/v1/auth/me/ - current admin profile
- GET /api/v1/health/ - DB health check
- Add ledger app to INSTALLED_APPS
Phase 2 - Dashboard Metrics API:
- GET /api/v1/dashboard/metrics/ - revenue, partners, events, tickets
- GET /api/v1/dashboard/revenue/ - 7-day revenue vs payouts chart data
- GET /api/v1/dashboard/activity/ - last 10 platform events feed
- GET /api/v1/dashboard/actions/ - KYC queue, flagged events, pending payouts
DB Indexes (dashboard query optimisation):
- RazorpayTransaction: status, captured_at
- Partner: status, kyc_compliance_status
- Event: event_status, start_date, created_date
- Booking: created_date
- PaymentTransaction: payment_type, payment_transaction_status, payment_transaction_date
Infra:
- Add Dockerfile for eventify-backend container
- Add simplejwt to requirements.txt
- All 4 dashboard views use IsAuthenticated permission class
2026-03-24 17:46:41 +00:00
|
|
|
# Phase 2: Dashboard endpoints
|
|
|
|
|
path('dashboard/metrics/', views.DashboardMetricsView.as_view(), name='dashboard-metrics'),
|
|
|
|
|
path('dashboard/revenue/', views.DashboardRevenueView.as_view(), name='dashboard-revenue'),
|
|
|
|
|
path('dashboard/activity/', views.DashboardActivityView.as_view(), name='dashboard-activity'),
|
|
|
|
|
path('dashboard/actions/', views.DashboardActionsView.as_view(), name='dashboard-actions'),
|
feat: Phase 3 - Partners API (5 endpoints + 2 helpers)
- GET /api/v1/partners/stats/ - total, active, pendingKyc, highRisk counts
- GET /api/v1/partners/ - paginated list with status/kyc/type/search filters
- GET /api/v1/partners/:id/ - full detail with events, kycDocuments, dealTerms, ledger
- PATCH /api/v1/partners/:id/status/ - suspend/activate partner
- POST /api/v1/partners/:id/kyc/review/ - approve/reject KYC with reason
Helpers: _serialize_partner(), _partner_kyc_docs()
Status/KYC/type mapping: backend snake_case to frontend capitalised values
Risk score derived from kyc_compliance_status (high_risk=80, approved=5, etc.)
All views IsAuthenticated, models imported inside methods
2026-03-24 18:11:33 +00:00
|
|
|
# Phase 3: Partner endpoints
|
|
|
|
|
path('partners/stats/', views.PartnerStatsView.as_view(), name='partner-stats'),
|
|
|
|
|
path('partners/', views.PartnerListView.as_view(), name='partner-list'),
|
|
|
|
|
path('partners/<int:pk>/', views.PartnerDetailView.as_view(), name='partner-detail'),
|
|
|
|
|
path('partners/<int:pk>/status/', views.PartnerStatusView.as_view(), name='partner-status'),
|
|
|
|
|
path('partners/<int:pk>/kyc/review/', views.PartnerKYCReviewView.as_view(), name='partner-kyc-review'),
|
2026-03-24 18:26:55 +00:00
|
|
|
path('users/metrics/', views.UserMetricsView.as_view(), name='user-metrics'),
|
|
|
|
|
path('users/', views.UserListView.as_view(), name='user-list'),
|
|
|
|
|
path('users/<int:pk>/', views.UserDetailView.as_view(), name='user-detail'),
|
|
|
|
|
path('users/<int:pk>/status/', views.UserStatusView.as_view(), name='user-status'),
|
2026-03-24 18:42:15 +00:00
|
|
|
# Phase 5: Events endpoints
|
|
|
|
|
path('events/stats/', views.EventStatsView.as_view(), name='event-stats'),
|
|
|
|
|
path('events/', views.EventListView.as_view(), name='event-list'),
|
|
|
|
|
path('events/<int:pk>/', views.EventDetailView.as_view(), name='event-detail'),
|
|
|
|
|
path('events/<int:pk>/moderate/', views.EventModerationView.as_view(), name='event-moderate'),
|
|
|
|
|
]
|