application views

This commit is contained in:
Sayyid Hamid Mahdavi 2026-06-26 14:58:36 +03:30
parent 83582f25aa
commit a7964ce0ab
3 changed files with 124 additions and 35 deletions

View file

@ -58,8 +58,10 @@ class TokenMatchesViewSetActions(BasePermission):
if hasattr(token, "scope"): # OAuth 2
required_action_scopes = self.get_required_action_scopes(request, view)
# m = request.method.upper()
# TODO: use action map instead to analyze method
action_map = view.action_map
a = view.action
if a in required_action_scopes:
logger.debug(
"Required scopes alternatives to access resource: {0}".format(

View file

@ -77,6 +77,8 @@ class ApplicationApiFlowsTests(APITestCase):
'promotions.user.self-plans:list-retrieve',
'promotions.application.user-promotions:promote',
'promotions.application.user-promotions:list-retrieve',
'promotions.application.user-plan:promote',
'promotions.application.user-plan:list-retrieve'
]
def setUp(self):
@ -166,19 +168,25 @@ class ApplicationApiFlowsTests(APITestCase):
'base_amount': 800
}
}
response = self.client.get(reverse('promotions:promotion-list', kwargs={"plan": self.first_ad_view_reward_plan.uuid}), event_create_data, HTTP_AUTHORIZATION=auth,
format='json')
response = self.client.get(
reverse('promotions:promotion-list', kwargs={"plan": self.first_ad_view_reward_plan.uuid}),
event_create_data, HTTP_AUTHORIZATION=auth,
format='json')
print(response.json())
print(response.status_code)
# response = self.client.post(reverse('promotions:user-promote', kwargs={"pk":self.first_ad_view_reward_plan.uuid}), event_create_data, HTTP_AUTHORIZATION=auth, format='json')
response = self.client.post(reverse('promotions:promotion-create', kwargs={"plan": self.first_ad_view_reward_plan.uuid}), event_create_data, HTTP_AUTHORIZATION=auth,
format='json')
response = self.client.post(
reverse('promotions:promotion-create', kwargs={"plan": self.first_ad_view_reward_plan.uuid}),
event_create_data, HTTP_AUTHORIZATION=auth,
format='json')
print(response.json())
self.first_ad_view_reward_plan.refresh_from_db()
self.assertEqual(self.first_ad_view_reward_plan.balance, 10000 - 800)
response = self.client.get(reverse('promotions:promotion-list', kwargs={"plan": self.first_ad_view_reward_plan.uuid}), event_create_data, HTTP_AUTHORIZATION=auth,
format='json')
response = self.client.get(
reverse('promotions:promotion-list', kwargs={"plan": self.first_ad_view_reward_plan.uuid}),
event_create_data, HTTP_AUTHORIZATION=auth,
format='json')
print(response.json())
# response = self.client.post(reverse('promotions:promotion-create', kwargs={"plan": self.first_ad_view_reward_plan.uuid}), event_create_data, HTTP_AUTHORIZATION=auth, format='json')
@ -216,8 +224,10 @@ class ApplicationApiFlowsTests(APITestCase):
'referral': self.user_2_uuid
}
}
response = self.client.post(reverse('promotions:promotion-create', kwargs={"plan": self.referral_reward_plan.uuid}), event_create_data, HTTP_AUTHORIZATION=auth,
format='json')
response = self.client.post(
reverse('promotions:promotion-create', kwargs={"plan": self.referral_reward_plan.uuid}), event_create_data,
HTTP_AUTHORIZATION=auth,
format='json')
print(response.json())
self.referral_reward_plan.refresh_from_db()
self.assertEqual(self.referral_reward_plan.balance, 10000 - 1000)
@ -271,17 +281,22 @@ class ApplicationApiFlowsTests(APITestCase):
}
}
self.assertEqual(Event.objects.count(), 0)
response = self.client.post(reverse('promotions:event-create'), submit_referral_create_data, HTTP_AUTHORIZATION=auth, format='json')
response = self.client.post(reverse('promotions:event-create'), submit_referral_create_data,
HTTP_AUTHORIZATION=auth, format='json')
print(response.json())
self.settlement_reward_plan.refresh_from_db()
self.assertEqual(self.settlement_reward_plan.balance, 100000)
self.assertEqual(Event.objects.count(), 1)
response = self.client.post(reverse('promotions:promotion-create', kwargs={'plan': str(self.settlement_reward_plan.uuid)}), submit_settlement_create_data,
HTTP_AUTHORIZATION=auth, format='json')
response = self.client.post(
reverse('promotions:promotion-create', kwargs={'plan': str(self.settlement_reward_plan.uuid)}),
submit_settlement_create_data,
HTTP_AUTHORIZATION=auth, format='json')
print(response.json())
response = self.client.post(reverse('promotions:promotion-create', kwargs={'plan': str(self.settlement_reward_plan.uuid)}), submit_settlement_create_data,
HTTP_AUTHORIZATION=auth, format='json')
response = self.client.post(
reverse('promotions:promotion-create', kwargs={'plan': str(self.settlement_reward_plan.uuid)}),
submit_settlement_create_data,
HTTP_AUTHORIZATION=auth, format='json')
print(response.json())
def test_referral_percentage_reward_submit_settlement_success(self):
@ -333,17 +348,22 @@ class ApplicationApiFlowsTests(APITestCase):
}
}
self.assertEqual(Event.objects.count(), 0)
response = self.client.post(reverse('promotions:event-create'), submit_referral_create_data, HTTP_AUTHORIZATION=auth, format='json')
response = self.client.post(reverse('promotions:event-create'), submit_referral_create_data,
HTTP_AUTHORIZATION=auth, format='json')
print(response.json())
self.settlement_reward_plan.refresh_from_db()
self.assertEqual(self.settlement_reward_plan.balance, 100000)
self.assertEqual(Event.objects.count(), 1)
response = self.client.post(reverse('promotions:promotion-create', kwargs={'plan': str(self.settlement_reward_plan.uuid)}), submit_settlement_create_data,
HTTP_AUTHORIZATION=auth, format='json')
response = self.client.post(
reverse('promotions:promotion-create', kwargs={'plan': str(self.settlement_reward_plan.uuid)}),
submit_settlement_create_data,
HTTP_AUTHORIZATION=auth, format='json')
print(response.json())
response = self.client.post(reverse('promotions:promotion-create', kwargs={'plan': str(self.settlement_reward_plan.uuid)}), submit_settlement_create_data,
HTTP_AUTHORIZATION=auth, format='json')
response = self.client.post(
reverse('promotions:promotion-create', kwargs={'plan': str(self.settlement_reward_plan.uuid)}),
submit_settlement_create_data,
HTTP_AUTHORIZATION=auth, format='json')
print(response.json())
def test_serial_ad_view_promotion_success(self):
@ -438,11 +458,15 @@ class ApplicationApiFlowsTests(APITestCase):
self.assertEqual(Event.objects.count(), 0)
response = self.client.post(reverse('promotions:promotion-create', kwargs={"plan": str(self.serial_promotion_plan.pk)}), serial_ad_1_event_create_data,
HTTP_AUTHORIZATION=auth, format='json')
response = self.client.post(
reverse('promotions:promotion-create', kwargs={"plan": str(self.serial_promotion_plan.pk)}),
serial_ad_1_event_create_data,
HTTP_AUTHORIZATION=auth, format='json')
print(response.json())
response = self.client.post(reverse('promotions:promotion-create', kwargs={"plan": str(self.serial_promotion_plan.pk)}), serial_ad_2_event_create_data,
HTTP_AUTHORIZATION=auth, format='json')
response = self.client.post(
reverse('promotions:promotion-create', kwargs={"plan": str(self.serial_promotion_plan.pk)}),
serial_ad_2_event_create_data,
HTTP_AUTHORIZATION=auth, format='json')
# response = self.client.post(reverse('promotions:event-create'), serial_ad_2_event_create_data, HTTP_AUTHORIZATION=auth, format='json')
print(response.json())
@ -450,11 +474,14 @@ class ApplicationApiFlowsTests(APITestCase):
return
response = self.client.post(reverse('promotions:event-create'), serial_ad_1_event_create_data, HTTP_AUTHORIZATION=auth, format='json')
response = self.client.post(reverse('promotions:event-create'), serial_ad_1_event_create_data,
HTTP_AUTHORIZATION=auth, format='json')
event_1 = Event.objects.first()
response = self.client.post(reverse('promotions:event-create'), serial_ad_2_event_create_data, HTTP_AUTHORIZATION=auth, format='json')
response = self.client.post(reverse('promotions:event-create'), serial_ad_2_event_create_data,
HTTP_AUTHORIZATION=auth, format='json')
event_2 = Event.objects.first()
response = self.client.post(reverse('promotions:event-create'), serial_ad_3_event_create_data, HTTP_AUTHORIZATION=auth, format='json')
response = self.client.post(reverse('promotions:event-create'), serial_ad_3_event_create_data,
HTTP_AUTHORIZATION=auth, format='json')
event_3 = Event.objects.first()
analyze_event_task(event_1.uuid)
@ -477,12 +504,12 @@ class ApplicationApiFlowsTests(APITestCase):
)
base_promotion, _created = Promotion.objects.get_or_create(
user_uuid = self.user_1_uuid,
application = self.application,
plan = base_plan,
state = PaymentStateChoices.SUCCESS,
base_amount = 10000,
promotion_amount = 10000
user_uuid=self.user_1_uuid,
application=self.application,
plan=base_plan,
state=PaymentStateChoices.SUCCESS,
base_amount=10000,
promotion_amount=10000
)
promotion_event_saver, _created = EventSaver.objects.get_or_create(
@ -529,6 +556,65 @@ class ApplicationApiFlowsTests(APITestCase):
self.assertEqual(base_promotion.promotion_amount, 9000)
self.assertEqual(Event.objects.count(), 1)
response = self.client.post(reverse('promotions:promotion-create', kwargs={'plan': str(promotion_plan.uuid)}), create_data,
response = self.client.post(reverse('promotions:promotion-create', kwargs={'plan': str(promotion_plan.uuid)}),
create_data,
HTTP_AUTHORIZATION=auth, format='json')
print(response.json())
def test_application_promote_user_success(self):
self.first_ad_view_reward_event_saver, _created = EventSaver.objects.get_or_create(
title=self.first_ad_view_reward_label,
event_label=self.first_ad_view_reward_label,
save_once=True,
)
self.first_ad_view_reward_plan, _created = Plan.objects.get_or_create(
title=self.first_ad_view_reward_label,
balance=10000,
user=self.user_1,
application=self.application,
event_list=[self.first_ad_view_reward_label]
)
self.first_ad_view_reward_recipient, _created = Recipient.objects.get_or_create(
label=self.first_ad_view_reward_label,
plan=self.first_ad_view_reward_plan,
wallet_uuid=self.user_1_uuid,
recipient_uuid_field="->event:user",
base_amount_field="event:base_amount",
)
auth = self._create_authorization_header(self.application_access_token.token)
event_create_data = {
'label': self.first_ad_view_reward_label,
"data": {
'user': self.user_1_uuid,
'base_amount': 800
}
}
url = reverse('promotions-application:plan-promote',
kwargs={"pk": self.first_ad_view_reward_plan.uuid, "user_uuid": self.user_1_uuid})
# url = reverse('promotions-application:plan-test', kwargs={"pk": self.first_ad_view_reward_plan.uuid, "user_uuid":self.user_1_uuid})
# response = self.client.get(url, event_create_data, HTTP_AUTHORIZATION=auth,
# format='json')
# print(response.json())
# print(response.status_code)
# response = self.client.post(reverse('promotions:user-promote', kwargs={"pk":self.first_ad_view_reward_plan.uuid}), event_create_data, HTTP_AUTHORIZATION=auth, format='json')
response = self.client.post(url, event_create_data, HTTP_AUTHORIZATION=auth, format='json')
print(response.json())
response = self.client.post(url, event_create_data, HTTP_AUTHORIZATION=auth, format='json')
print(response.json())
self.first_ad_view_reward_plan.refresh_from_db()
self.assertEqual(self.first_ad_view_reward_plan.balance, 10000 - 800)
# response = self.client.get(reverse('promotions:promotion-list', kwargs={"plan": self.first_ad_view_reward_plan.uuid}), event_create_data, HTTP_AUTHORIZATION=auth,
# format='json')
# print(response.json())
# response = self.client.post(reverse('promotions:promotion-create', kwargs={"plan": self.first_ad_view_reward_plan.uuid}), event_create_data, HTTP_AUTHORIZATION=auth, format='json')
# print(response.json())

View file

@ -33,7 +33,8 @@ class ApplicationPlanViewSet(
def get_queryset(self):
application = get_application(self.request)
return Promotion.objects.filter(application=application)
# return Promotion.objects.filter(application=application)
return Plan.objects.all()
# def perform_create(self, serializer):
# user = self.get_user()
@ -48,7 +49,7 @@ class ApplicationPlanViewSet(
# promotion.promote(**promotion_args)
@action(detail=True, methods=['POST'], serializer_class=PromoteSerializer)
def promote(self, request, pk=None):
def promote(self, request, *args, pk=None, **kwargs):
plan = self.get_object()
application = get_application(self.request)