new Dockerfile
This commit is contained in:
parent
95df80f593
commit
27db599e8c
3 changed files with 40 additions and 3 deletions
|
|
@ -5,8 +5,8 @@ from django.contrib.admin.widgets import AdminDateWidget
|
||||||
from django.forms.fields import DateField, SplitDateTimeField, TimeField, DateTimeField
|
from django.forms.fields import DateField, SplitDateTimeField, TimeField, DateTimeField
|
||||||
from django.utils.encoding import force_str
|
from django.utils.encoding import force_str
|
||||||
from datetime import date as datetime_date, datetime as datetime_datetime
|
from datetime import date as datetime_date, datetime as datetime_datetime
|
||||||
from jdatetime import GregorianToJalali, datetime as jalali_datetime
|
# from jdatetime import GregorianToJalali, datetime as jalali_datetime
|
||||||
import jdatetime
|
# import jdatetime
|
||||||
|
|
||||||
class JalaliDateField(DateField):
|
class JalaliDateField(DateField):
|
||||||
def __init__(self, *, input_formats=None, **kwargs):
|
def __init__(self, *, input_formats=None, **kwargs):
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,10 @@ from django.db import transaction
|
||||||
from django.db.models import F
|
from django.db.models import F
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
|
from collections import defaultdict
|
||||||
|
from django.db.models import Count, Sum
|
||||||
|
|
||||||
from rest_framework.exceptions import APIException
|
from rest_framework.exceptions import APIException
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from oauth2_provider import settings as oauth2_settings
|
from oauth2_provider import settings as oauth2_settings
|
||||||
|
|
@ -97,6 +101,39 @@ class TransactionQuerySet(models.QuerySet):
|
||||||
def available(self):
|
def available(self):
|
||||||
return self.select_related('payer_account', 'payee_account')
|
return self.select_related('payer_account', 'payee_account')
|
||||||
|
|
||||||
|
def group_by_reference(self, reference):
|
||||||
|
from collections import defaultdict
|
||||||
|
from django.db.models import Count, Sum
|
||||||
|
|
||||||
|
# 'id': id,
|
||||||
|
# 'appid': appid,
|
||||||
|
# 'message': message,
|
||||||
|
# 'title': title,
|
||||||
|
# 'priority': priority,
|
||||||
|
# 'date': date.toIso8601String(),
|
||||||
|
|
||||||
|
Transaction.objects.values('reference').annotate(
|
||||||
|
total=Sum('amount'),
|
||||||
|
count=Count('id')
|
||||||
|
).values_list('refrence', 'total', 'count')
|
||||||
|
|
||||||
|
# کوئری ۲: همه تراکنشها
|
||||||
|
transactions = Transaction.objects.all().order_by('refrence', 'created_at')
|
||||||
|
|
||||||
|
# گروهبندی در پایتون
|
||||||
|
groups = defaultdict(list)
|
||||||
|
for t in transactions:
|
||||||
|
groups[t.refrence].append(t)
|
||||||
|
|
||||||
|
# ترکیب
|
||||||
|
result = []
|
||||||
|
for ref, items in groups.items():
|
||||||
|
result.append({
|
||||||
|
'refrence': ref,
|
||||||
|
'stats': {'total': stats.get(ref, 0), 'count': len(items)},
|
||||||
|
'transactions': items
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
class Transaction(BaseModel):
|
class Transaction(BaseModel):
|
||||||
amount = models.PositiveBigIntegerField(_('amount'), blank=False, validators=[MinValueValidator(1)])
|
amount = models.PositiveBigIntegerField(_('amount'), blank=False, validators=[MinValueValidator(1)])
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,7 @@ INSTALLED_APPS = [
|
||||||
'crispy_forms',
|
'crispy_forms',
|
||||||
'crispy_bootstrap5',
|
'crispy_bootstrap5',
|
||||||
'django_filters',
|
'django_filters',
|
||||||
'jalali_date',
|
# 'jalali_date',
|
||||||
|
|
||||||
# local apps
|
# local apps
|
||||||
'apps.core',
|
'apps.core',
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue