feat: add staged subscription rollout mode
This commit is contained in:
+15
-11
@@ -1,7 +1,6 @@
|
||||
import logging
|
||||
|
||||
from django.http import HttpResponse
|
||||
from django.conf import settings
|
||||
from django.utils import timezone
|
||||
from django.utils.decorators import method_decorator
|
||||
from django.views.decorators.csrf import csrf_exempt
|
||||
@@ -79,7 +78,7 @@ from apps.licensing.services import (
|
||||
create_migration_request,
|
||||
expire_software_order,
|
||||
query_and_apply_software_payment,
|
||||
evaluate_account_authorization,
|
||||
evaluate_subscription_access,
|
||||
software_subscription_status,
|
||||
record_device_heartbeat,
|
||||
register_device,
|
||||
@@ -391,7 +390,7 @@ class GenerateImageTaskDetailView(ExternalApiView):
|
||||
return Response(task_detail_response(task), status=status.HTTP_200_OK)
|
||||
|
||||
|
||||
class CmshopeeShadowAuthorizationMixin:
|
||||
class CmshopeeSubscriptionAuthorizationMixin:
|
||||
product_code = "cmshopee"
|
||||
|
||||
def optional_client_device(self, request):
|
||||
@@ -403,7 +402,7 @@ class CmshopeeShadowAuthorizationMixin:
|
||||
request.headers.get("X-Device-Session", "").strip()
|
||||
)
|
||||
device = None
|
||||
decision = evaluate_account_authorization(
|
||||
decision = evaluate_subscription_access(
|
||||
user=request.user,
|
||||
product_code=self.product_code,
|
||||
)
|
||||
@@ -412,9 +411,14 @@ class CmshopeeShadowAuthorizationMixin:
|
||||
"product_code": self.product_code,
|
||||
"user_id": request.user.id,
|
||||
"client_device_id": getattr(device, "id", None),
|
||||
"would_reject": decision.would_reject,
|
||||
"would_reject_code": decision.code,
|
||||
"enforcement": settings.CMSHOPEE_SUBSCRIPTION_ENFORCEMENT,
|
||||
"would_reject": bool(decision.entitlement_code),
|
||||
"would_reject_code": decision.entitlement_code,
|
||||
"final_allowed": decision.allowed,
|
||||
"final_code": decision.code,
|
||||
"subscription_mode": decision.mode,
|
||||
"access_source": decision.access_source,
|
||||
"entitlement_status": decision.entitlement_status,
|
||||
"enforcement": decision.mode == "enforce",
|
||||
}
|
||||
authorization_logger.info(
|
||||
"%s %s",
|
||||
@@ -422,7 +426,7 @@ class CmshopeeShadowAuthorizationMixin:
|
||||
event,
|
||||
extra={"cmshopee_authorization": event},
|
||||
)
|
||||
if settings.CMSHOPEE_SUBSCRIPTION_ENFORCEMENT and decision.would_reject:
|
||||
if decision.would_reject:
|
||||
message = (
|
||||
"当前账号没有有效的软件订阅"
|
||||
if decision.code == "subscription_required"
|
||||
@@ -433,16 +437,16 @@ class CmshopeeShadowAuthorizationMixin:
|
||||
return device
|
||||
|
||||
|
||||
class CmshopeeGenerateTitleView(CmshopeeShadowAuthorizationMixin, GenerateTitleView):
|
||||
class CmshopeeGenerateTitleView(CmshopeeSubscriptionAuthorizationMixin, GenerateTitleView):
|
||||
pass
|
||||
|
||||
|
||||
class CmshopeeAnalyzeImagesView(CmshopeeShadowAuthorizationMixin, AnalyzeImagesView):
|
||||
class CmshopeeAnalyzeImagesView(CmshopeeSubscriptionAuthorizationMixin, AnalyzeImagesView):
|
||||
pass
|
||||
|
||||
|
||||
class CmshopeeGenerateImageTaskSubmitView(
|
||||
CmshopeeShadowAuthorizationMixin,
|
||||
CmshopeeSubscriptionAuthorizationMixin,
|
||||
GenerateImageTaskSubmitView,
|
||||
):
|
||||
pass
|
||||
|
||||
Reference in New Issue
Block a user