Spaces:
Running
Running
# management/urls.py | |
# -*- coding: utf-8 -*- | |
from django.urls import path, include | |
from rest_framework_simplejwt.views import TokenRefreshView | |
from rest_framework.routers import DefaultRouter | |
from .views import ( | |
CustomTokenObtainPairView, | |
LogoutAPIView, | |
TelegramWebhookView, | |
PushSubscriptionAPIView, | |
GenerateTelegramTokenAPIView, | |
VerifyTelegramTokenAPIView, | |
PanelViewSet, | |
LicenseViewSet, | |
MarzbanAdminViewSet, | |
PlanViewSet, | |
EndUserViewSet, | |
SubscriptionViewSet, | |
PaymentViewSet, | |
PaymentReceiptUploadAPIView, | |
# New views for payment system | |
PaymentMethodViewSet, | |
PaymentDetailAPIView, | |
EndUserPaymentOptionsAPIView, | |
# New views that were recently added | |
AdminLevel3SubscriptionViewSet, | |
PurchaseSubscriptionForUserAPIView, | |
) | |
# Create a router and register our viewsets with it. | |
router = DefaultRouter() | |
router.register(r'panels', PanelViewSet, basename='panel') | |
router.register(r'licenses', LicenseViewSet, basename='license') | |
router.register(r'plans', PlanViewSet, basename='plan') | |
router.register(r'endusers', EndUserViewSet, basename='enduser') | |
router.register(r'subscriptions', SubscriptionViewSet, basename='subscription') | |
router.register(r'payments', PaymentViewSet, basename='payment') | |
# New: ViewSet for managing payment methods by Admin Level 2 | |
router.register(r'payment-methods', PaymentMethodViewSet, basename='payment-method') | |
# New: ViewSet for Admin Level 3 to manage subscriptions | |
router.register(r'admin/subscriptions', AdminLevel3SubscriptionViewSet, basename='admin-subscription') | |
# The MarzbanAdminViewSet is a custom ViewSet, so we define its paths manually. | |
marzban_admin_list = MarzbanAdminViewSet.as_view({ | |
'get': 'list', | |
'post': 'create' | |
}) | |
marzban_admin_detail = MarzbanAdminViewSet.as_view({ | |
'delete': 'destroy' | |
}) | |
urlpatterns = [ | |
# API endpoints | |
path('api/token/', CustomTokenObtainPairView.as_view(), name='token_obtain_pair'), | |
path('api/token/refresh/', TokenRefreshView.as_view(), name='token_refresh'), | |
path('api/logout/', LogoutAPIView.as_view(), name='logout'), | |
# Use the router to handle all ViewSet API endpoints | |
path('api/', include(router.urls)), | |
# Marzban Admin Management (manual routing for a custom ViewSet) | |
path('api/marzban-admins/', marzban_admin_list, name='api_marzban_admin_list'), | |
path('api/marzban-admins/<str:pk>/', marzban_admin_detail, name='api_marzban_admin_detail'), | |
# Telegram & Push notifications | |
path('telegram-webhook/<str:bot_token>/', TelegramWebhookView.as_view(), name='telegram_webhook'), | |
path('api/push-subscription/', PushSubscriptionAPIView.as_view(), name='push_subscription'), | |
path('api/telegram-token/', GenerateTelegramTokenAPIView.as_view(), name='generate_telegram_token'), | |
path('api/verify-telegram-token/', VerifyTelegramTokenAPIView.as_view(), name='verify_telegram_token'), | |
path('api/upload-receipt/', PaymentReceiptUploadAPIView.as_view(), name='upload_receipt'), | |
# New: Payment System URLs | |
path('api/admin/payment-details/', PaymentDetailAPIView.as_view(), name='admin_payment_details'), | |
path('api/enduser/payment-options/', EndUserPaymentOptionsAPIView.as_view(), name='enduser_payment_options'), | |
# New: URL for EndUser to purchase subscriptions for other users | |
path('api/purchase-subscription/', PurchaseSubscriptionForUserAPIView.as_view(), name='purchase_subscription'), | |
] | |