new Dockerfile

This commit is contained in:
Sayyid Hamid Mahdavi 2026-02-07 12:37:14 +03:30
parent 95df80f593
commit 27db599e8c
3 changed files with 40 additions and 3 deletions

View file

@ -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):

View file

@ -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)])

View file

@ -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',