diff --git a/apps/transactions/admin.py b/apps/transactions/admin.py index c00b2ba..75c10bf 100755 --- a/apps/transactions/admin.py +++ b/apps/transactions/admin.py @@ -4,7 +4,7 @@ from .models import Transaction class TransactionAdmin(admin.ModelAdmin): fields = [ - 'code', + 'uuid', 'amount', 'payer', 'payee', @@ -15,7 +15,7 @@ class TransactionAdmin(admin.ModelAdmin): 'detail_id', 'application_id' ] - readonly_fields = ['last_update', 'create', 'detail_id', 'application_id'] + readonly_fields = ['uuid', 'last_update', 'create', 'detail_id', 'application_id'] admin.site.register(Transaction, TransactionAdmin) diff --git a/apps/transactions/migrations/0003_remove_transaction_code.py b/apps/transactions/migrations/0003_remove_transaction_code.py new file mode 100644 index 0000000..b860851 --- /dev/null +++ b/apps/transactions/migrations/0003_remove_transaction_code.py @@ -0,0 +1,17 @@ +# Generated by Django 3.0.4 on 2020-04-04 06:53 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('transactions', '0002_auto_20200308_1113'), + ] + + operations = [ + migrations.RemoveField( + model_name='transaction', + name='code', + ), + ] diff --git a/apps/transactions/models.py b/apps/transactions/models.py index 9c79708..4b28c87 100755 --- a/apps/transactions/models.py +++ b/apps/transactions/models.py @@ -1,5 +1,4 @@ import datetime -import random import uuid from django.db import models @@ -40,7 +39,6 @@ class TransactionManager(models.Manager): if state: transaction.state = state - transaction.set_code() transaction.save() return transaction @@ -54,7 +52,6 @@ class Transaction(models.Model): (5, 'done', 'done'), ) uuid = models.UUIDField(primary_key=True, editable=False, default=uuid.uuid4, unique=True, db_index=True) # reserve_code - code = models.IntegerField(_('code'), blank=False, unique=True, db_index=True) # unique random number amount = models.IntegerField(_('amount'), blank=False) delay = models.IntegerField(default=0, blank=True) # number of days for delayed payments payer = models.ForeignKey(User, on_delete=models.PROTECT, related_name='payments', blank=True, null=True) @@ -70,18 +67,6 @@ class Transaction(models.Model): class Meta: unique_together = ('application_id', 'detail_id',) - def set_code(self): - # TODO: set infinite algorithm - for code in random.sample(range(10000, 100000), 90000): - try: - code = str(code) - self.code = code - return self.save() - except: - pass - - raise APIException('system error') - def pay(self, payer=None): if not self.payer and not payer: raise APIException('payer identification error') @@ -136,4 +121,4 @@ class Transaction(models.Model): self.save() def __str__(self): - return f"{self.payer} -> {self.payee} ({self.code}): {self.amount}" + return f"{self.payer} -> {self.payee} ({self.uuid}): {self.amount}" diff --git a/apps/transactions/serializers.py b/apps/transactions/serializers.py index 1c2241e..09f2838 100755 --- a/apps/transactions/serializers.py +++ b/apps/transactions/serializers.py @@ -12,11 +12,11 @@ class TransactionSerializer(serializers.ModelSerializer): class Meta: model = Transaction - fields = ('payer', + fields = ('uuid', + 'payer', 'payee', "create", "state", - "code", 'amount', 'delay', 'last_update', @@ -24,7 +24,7 @@ class TransactionSerializer(serializers.ModelSerializer): 'application_id' ) - read_only_fields = ['last_update', 'code', 'state', 'create', 'detail_id', 'application_id'] + read_only_fields = ['uuid', 'last_update', 'state', 'create', 'detail_id', 'application_id'] def create(self, validated_data): diff --git a/apps/transactions/views.py b/apps/transactions/views.py index 0423184..8a08901 100755 --- a/apps/transactions/views.py +++ b/apps/transactions/views.py @@ -31,7 +31,7 @@ class TransactionList(generics.ListCreateAPIView): class TransactionDetail(generics.RetrieveAPIView): permission_classes = [permissions.IsAuthenticated, IsAuthenticatedOrTokenHasScope] serializer_class = TransactionSerializer - lookup_field = 'code' + lookup_field = 'uuid' required_scopes = [] def get_queryset(self): @@ -42,7 +42,7 @@ class TransactionDetail(generics.RetrieveAPIView): class TransactionPay(generics.RetrieveAPIView): permission_classes = [permissions.IsAuthenticated, IsAuthenticatedOrTokenHasScope] serializer_class = TransactionSerializer - lookup_field = 'code' + lookup_field = 'uuid' required_scopes = [] def get_queryset(self): @@ -59,7 +59,7 @@ class TransactionPay(generics.RetrieveAPIView): class TransactionReceipt(generics.RetrieveAPIView): permission_classes = [permissions.IsAuthenticated, IsAuthenticatedOrTokenHasScope] serializer_class = TransactionSerializer - lookup_field = 'code' + lookup_field = 'uuid' required_scopes = [] def get_queryset(self): diff --git a/gooyal_accounts/urls.py b/gooyal_accounts/urls.py index 3c7cbe7..412dc07 100644 --- a/gooyal_accounts/urls.py +++ b/gooyal_accounts/urls.py @@ -34,16 +34,16 @@ urlpatterns = [ path('oauth2/', include('oauth2_provider.urls', namespace='oauth2_provider')), + path('account/', AccountView.as_view(), name='account'), path('users/', UserListView.as_view()), path('users//', UserDetailView.as_view(), name='user_detail'), - path('account/', AccountView.as_view(), name='account'), path('request_otp/', RequestOTPView.as_view(), name='register'), path('change_password/', ChangePasswordView.as_view(), name='change_password'), path('transactions/', TransactionList.as_view(), name='transactions'), - path('transactions/', TransactionDetail.as_view(), name='transaction_detail'), - path('transactions//pay', TransactionPay.as_view(), name='transaction_pay'), - path('transactions//receipt', TransactionReceipt.as_view(), name='transaction_receipt'), + path('transactions/', TransactionDetail.as_view(), name='transaction_detail'), + path('transactions//pay', TransactionPay.as_view(), name='transaction_pay'), + path('transactions//receipt', TransactionReceipt.as_view(), name='transaction_receipt'), ] urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) diff --git a/templates/base.html b/templates/base.html index 627058e..3ee1113 100644 --- a/templates/base.html +++ b/templates/base.html @@ -30,7 +30,7 @@