first commit

This commit is contained in:
javad committed 2026-06-15 10:57:28 +03:30
commit 3e4574dcdd
163 files changed
+3559

No files matched your search

View File
Whitespace-only changes.
+9
View File
@@ -0,0 +1,9 @@
from django.db import models
class BaseModel(models.Model):
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
abstract = True
+6
View File
@@ -0,0 +1,6 @@
from rest_framework.pagination import PageNumberPagination
class OrderViewPagination(PageNumberPagination):
page_size = 200
page_size_query_param = 'page_size'
max_page_size = 10000
View File
Whitespace-only changes.
+32
View File
@@ -0,0 +1,32 @@
from abc import ABC, abstractmethod
import requests
class SmsProviderABC(ABC):
@abstractmethod
def send_sms(self, mobile: str, message: str) -> bool:
pass
class DefaultSmsProvider(SmsProviderABC):
def send_sms(self, mobile: str, message: str) -> bool:
default_provider = DosefrNavadHashtSMS()
return default_provider.send_sms(mobile, message)
class DosefrNavadHashtSMS(SmsProviderABC):
def send_sms(self, mobile: str, message: str) -> bool:
payload = {
'USERNAME': 'vsms7937',
'PASSWORD': '335577775533',
'FROM': '30005367',
'TO': int(mobile),
'TEXT': f'{message}'
}
r = requests.get('http://www.0098sms.com/sendsmslink.aspx', params=payload)
if r.status_code == 200:
return True
else:
return False
+8
View File
@@ -0,0 +1,8 @@
from celery import shared_task
from utils.services.sms import DefaultSmsProvider
@shared_task
def task_send_sms(message: str, mobile):
sms_provider = DefaultSmsProvider()
sms_provider.send_sms(mobile=str(mobile), message=str(message))
+7
View File
@@ -0,0 +1,7 @@
from rest_framework.pagination import PageNumberPagination
class StandardPagination(PageNumberPagination):
page_size = 10
page_size_query_param = 'page_size'
max_page_size = 10000
View File
Whitespace-only changes.
+18
View File
@@ -0,0 +1,18 @@
from rest_framework import serializers
def create_serializer_class(name, fields):
return type(name, (serializers.Serializer,), fields)
def inline_serializer(*, fields, data=None, **kwargs):
# Important note if you are using `drf-spectacular`
# Please refer to the following issue:
# https://github.com/HackSoftware/Django-Styleguide/issues/105#issuecomment-1669468898
# Since you might need to use unique names (uuids) for each inline serializer
serializer_class = create_serializer_class(name="inline_serializer", fields=fields)
if data is not None:
return serializer_class(data=data, **kwargs)
return serializer_class(**kwargs)