conflict error

This commit is contained in:
Sayyid Hamid Mahdavi 2026-04-11 12:55:06 +03:30
parent 7256578ec7
commit 0e9ca49ca0
5 changed files with 15 additions and 2 deletions

View file

@ -21,7 +21,7 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='application',
name='max_allowed_session',
field=models.PositiveIntegerField(default=1),
field=models.PositiveIntegerField(default=0),
),
migrations.AlterField(
model_name='application',

View file

@ -38,7 +38,7 @@ class Application(AbstractApplication, BaseModel):
allowed_scope = models.TextField(blank=True)
avatar = models.ImageField(upload_to='avatars', null=True, blank=True)
max_allowed_session = models.PositiveIntegerField(default=1)
max_allowed_session = models.PositiveIntegerField(default=0)
@property

View file

@ -26,6 +26,9 @@ class TokenLimitThrottle:
if max_allowed_session >= session_count:
return True
else:
from utils.exceptions import Conflict
raise Conflict(code='max_allowed_session_reached')
active_tokens = AccessToken.objects.filter(
application=application, user=request.user
).order_by("created")[:max_allowed_session].values_list("token", flat=True)
@ -37,3 +40,8 @@ class TokenLimitThrottle:
else:
return True
return True
def wait(self):
pass

View file

@ -187,6 +187,8 @@ class UserSessionListView(generics.ListAPIView):
serializer_class = SessionSerializer
filter_backends = (DjangoFilterBackend,)
max_allowed_session = 0
required_alternate_scopes = {
"GET": [["accounts.account:retrieve"]],
}

View file

@ -56,6 +56,7 @@ def exception_handler(exc, context):
# در فایل middleware.py
from django.http import JsonResponse
class ErrorMiddleware:
def __init__(self, get_response):
self.get_response = get_response
@ -76,6 +77,7 @@ class ErrorMiddleware:
status=500
)
from rest_framework.exceptions import APIException
from rest_framework import status
from django.utils.translation import gettext_lazy as _
@ -86,6 +88,7 @@ class UnprocessableEntity(APIException):
default_detail = 'The request was well-formed but cannot be processed due to semantic errors.'
default_code = 'unprocessable_entity'
class ServiceUnavailable(APIException):
status_code = status.HTTP_503_SERVICE_UNAVAILABLE
default_ = _('SERVICE_UNAVAILABLE')