Merge remote-tracking branch 'origin/master'

This commit is contained in:
Sayyid Hamid Mahdavi 2025-08-05 17:45:49 +03:30
commit 219af640b2
3 changed files with 21 additions and 7 deletions

View file

@ -215,10 +215,11 @@ class Transaction(models.Model):
def update_details(self, force_update=False): def update_details(self, force_update=False):
if not isinstance(self.details, dict): if not isinstance(self.details, dict):
self.details = {} self.details = {}
self.save() self.save()
# detail = {'payer_name', 'payee_name', 'application_name', 'payer_avatar_url', 'payee_avatar_url', 'application_avatar_url'} # detail = {'payer_name', 'payee_name', 'application_name', 'payer_avatar_url', 'payee_avatar_url', 'application_avatar_url'}
is_updated = False is_updated = False
if not self.details.get('payer_name'): if not self.details.get('payer_name'):
print('update payer')
if self.payer_type == TypeChoices.USER.value: if self.payer_type == TypeChoices.USER.value:
payer_details: PublicUser = get_user_details(self.payer_id) payer_details: PublicUser = get_user_details(self.payer_id)
self.details['payer_name'] = payer_details.first_name + payer_details.last_name self.details['payer_name'] = payer_details.first_name + payer_details.last_name
@ -227,10 +228,12 @@ class Transaction(models.Model):
payer_details = get_application_details(self.payer_id) payer_details = get_application_details(self.payer_id)
self.details['payer_name'] = payer_details.name self.details['payer_name'] = payer_details.name
#TODO: get avatar from details #TODO: get avatar from details
is_updated = True is_updated = True
print("payer_details:", payer_details)
print("is_updated:", is_updated)
if not self.details.get('payee_name'): if not self.details.get('payee_name'):
print('update payee')
if self.payee_type == TypeChoices.USER.value: if self.payee_type == TypeChoices.USER.value:
payee_details: PublicUser = get_user_details(self.payee_id) payee_details: PublicUser = get_user_details(self.payee_id)
self.details['payee_name'] = payee_details.first_name + payee_details.last_name self.details['payee_name'] = payee_details.first_name + payee_details.last_name
@ -241,18 +244,24 @@ class Transaction(models.Model):
#TODO: get avatar from details #TODO: get avatar from details
is_updated = True is_updated = True
print("payee_details:", payee_details)
print("is_updated:", is_updated)
if not self.details.get('application_name'): if not self.details.get('application_name'):
print('update application')
application_details = get_application_details(self.application_id) application_details = get_application_details(self.application_id)
print('application_details:', application_details)
try: try:
self.details['application_name'] = application_details.name self.details['application_name'] = application_details.name
# TODO: get avatar from details # TODO: get avatar from details
is_updated = True is_updated = True
except Exception as e: except Exception as e:
pass print("something went wrong")
print(e)
if is_updated: if is_updated:
print('update details')
self.save() self.save()

View file

@ -9,7 +9,7 @@ from apps.users.models import User
from apps.wallet.constans import TypeChoices, StateChoices from apps.wallet.constans import TypeChoices, StateChoices
from apps.wallet.models import Transaction from apps.wallet.models import Transaction
from apps.wallet.serializers import ApplicationDepositSerializer, ApplicationWithdrawSerializer, \ from apps.wallet.serializers import ApplicationDepositSerializer, ApplicationWithdrawSerializer, \
ApplicationTransactionSerializer, ApplicationBalanceSerializer ApplicationTransactionSerializer, ApplicationBalanceSerializer, MyWalletSerializer
def get_application(request): def get_application(request):
@ -37,12 +37,13 @@ class UserBalanceAPIView(generics.RetrieveAPIView):
API for getting specified user or application balance. API for getting specified user or application balance.
''' '''
permission_classes = [IsAuthenticatedOrTokenHasScope] permission_classes = [IsAuthenticatedOrTokenHasScope]
serializer_class = ApplicationBalanceSerializer serializer_class = MyWalletSerializer
required_scopes = ['wallet.application:get_user_balance'] required_scopes = ['wallet.application:get_user_balance']
def get_object(self): def get_object(self):
user_uuid = self.kwargs.get('uuid') user_uuid = self.kwargs.get('uuid')
user = get_object_or_404(User.objects.all(), uuid=user_uuid) user, created = User.objects.get_or_create(uuid=user_uuid)
# user = get_object_or_404(User.objects.all(), uuid=user_uuid)
return user return user

View file

@ -35,6 +35,9 @@ def login_as_client_credentials():
auth=auth) auth=auth)
auth_data = response.json() auth_data = response.json()
print(auth_data)
if 'access_token' in auth_data: if 'access_token' in auth_data:
auth_data['created_at'] = time.time() auth_data['created_at'] = time.time()
cache.set('wallet_access_token', auth_data, timeout=auth_data.get('expires_in')-5) cache.set('wallet_access_token', auth_data, timeout=auth_data.get('expires_in')-5)
@ -43,7 +46,8 @@ def login_as_client_credentials():
def get_client(): def get_client():
access_token = login_as_client_credentials()['access_token'] access_token = login_as_client_credentials()['access_token']
client = AuthenticatedClient(base_url="https://accounts.gooyal.com", token=access_token) # TODO: url
client = AuthenticatedClient(base_url="http://accounts:8000", token=access_token)
return client return client