From 20c5aa9ee58bcec6ac0b7c96d04c83e3c2bf4ba4 Mon Sep 17 00:00:00 2001 From: Kaladaran Date: Sun, 29 Oct 2023 22:01:38 +0100 Subject: [PATCH] rename mabras -> marbas, fix not condition in search, allow page_size for pagination --- Dockerfile | 4 ++-- api/views.py | 15 ++++++--------- docker-compose.dev.yml | 14 +++++++------- manage.py | 2 +- {mabras => marbas}/__init__.py | 0 {mabras => marbas}/asgi.py | 4 ++-- marbas/pagination.py | 8 ++++++++ {mabras => marbas}/settings.py | 13 ++++++------- {mabras => marbas}/templates/redoc.html | 0 {mabras => marbas}/templates/swagger-ui.html | 0 {mabras => marbas}/urls.py | 4 ++-- {mabras => marbas}/wsgi.py | 4 ++-- 12 files changed, 36 insertions(+), 32 deletions(-) rename {mabras => marbas}/__init__.py (100%) rename {mabras => marbas}/asgi.py (75%) create mode 100644 marbas/pagination.py rename {mabras => marbas}/settings.py (93%) rename {mabras => marbas}/templates/redoc.html (100%) rename {mabras => marbas}/templates/swagger-ui.html (100%) rename {mabras => marbas}/urls.py (95%) rename {mabras => marbas}/wsgi.py (75%) diff --git a/Dockerfile b/Dockerfile index 4774d88..17620d3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -9,9 +9,9 @@ WORKDIR /app COPY --chown=appuser:appuser manage.py /app/manage.py COPY requirements.txt . RUN python -m pip install --no-cache-dir --upgrade -r requirements.txt -COPY --chown=appuser:appuser mabras /app/mabras +COPY --chown=appuser:appuser marbas /app/marbas COPY --chown=appuser:appuser sde /app/sde COPY --chown=appuser:appuser api /app/api USER appuser -CMD ["uvicorn", "mabras.asgi:application", "--host", "0.0.0.0", "--port", "8000"] \ No newline at end of file +CMD ["uvicorn", "marbas.asgi:application", "--host", "0.0.0.0", "--port", "8000"] \ No newline at end of file diff --git a/api/views.py b/api/views.py index b59b7bb..7291476 100644 --- a/api/views.py +++ b/api/views.py @@ -42,24 +42,21 @@ def custom_types_search(request): items = [] for q in request.data: - condition = Q() + conditions = Q() for k in q.keys(): value = q[k] token = k.split('___') key, mods = token[0], token[1:] - if "i" in mods: - condition = condition & Q(**{key + '__icontains': value}) - elif "in" in mods: - condition = condition & Q(**{key + '__in': value}) - else: - condition = condition & Q(**{key: value}) + cond = Q(**{key: value}) if "not" in mods: - condition = ~condition + cond = ~cond - items.extend(sde_models.SDEType.objects.filter(condition)) + conditions = conditions & cond + + items.extend(sde_models.SDEType.objects.filter(conditions)) paginator = settings.api_settings.DEFAULT_PAGINATION_CLASS() result_page = paginator.paginate_queryset(items, request) diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index 54b52c5..2102756 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -1,7 +1,7 @@ version: '3' services: migrations: - image: mabras:local + image: marbas:local build: context: . dockerfile: Dockerfile @@ -9,7 +9,7 @@ services: - .env user: "1000:1000" volumes: - - ./mabras:/app/mabras + - ./marbas:/app/marbas - ./api:/app/api - ./sde:/app/sde - ./manage.py:/app/manage.py @@ -19,19 +19,19 @@ services: condition: service_healthy eveal: - image: mabras:local + image: marbas:local env_file: - .env ports: - 8000:8000 user: "1000:1000" volumes: - - ./mabras:/app/mabras + - ./marbas:/app/marbas - ./api:/app/api - ./sde:/app/sde - ./manage.py:/app/manage.py # - ./static_eve:/app/static_eve - command: ["uvicorn", "mabras.asgi:application", "--host", "0.0.0.0", "--port", "8000", "--reload"] + command: ["uvicorn", "marbas.asgi:application", "--host", "0.0.0.0", "--port", "8000", "--reload"] depends_on: redis: condition: service_healthy @@ -55,7 +55,7 @@ services: ports: - 5432:5432 volumes: - - mabras_dbdata:/var/lib/postgresql/data + - marbas_dbdata:/var/lib/postgresql/data env_file: - .env healthcheck: @@ -80,4 +80,4 @@ services: # retries: 3 volumes: - mabras_dbdata: + marbas_dbdata: diff --git a/manage.py b/manage.py index 3a4a74c..54b8e05 100755 --- a/manage.py +++ b/manage.py @@ -6,7 +6,7 @@ import sys def main(): """Run administrative tasks.""" - os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mabras.settings') + os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'marbas.settings') try: from django.core.management import execute_from_command_line except ImportError as exc: diff --git a/mabras/__init__.py b/marbas/__init__.py similarity index 100% rename from mabras/__init__.py rename to marbas/__init__.py diff --git a/mabras/asgi.py b/marbas/asgi.py similarity index 75% rename from mabras/asgi.py rename to marbas/asgi.py index d714762..82e99c4 100644 --- a/mabras/asgi.py +++ b/marbas/asgi.py @@ -1,5 +1,5 @@ """ -ASGI config for mabras project. +ASGI config for marbas project. It exposes the ASGI callable as a module-level variable named ``application``. @@ -11,6 +11,6 @@ import os from django.core.asgi import get_asgi_application -os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mabras.settings') +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'marbas.settings') application = get_asgi_application() diff --git a/marbas/pagination.py b/marbas/pagination.py new file mode 100644 index 0000000..c4d4f9b --- /dev/null +++ b/marbas/pagination.py @@ -0,0 +1,8 @@ +from rest_framework import pagination + + +class CustomPagination(pagination.PageNumberPagination): + page_size = 10 + page_size_query_param = 'page_size' + max_page_size = 250 + diff --git a/mabras/settings.py b/marbas/settings.py similarity index 93% rename from mabras/settings.py rename to marbas/settings.py index 6adc5ee..b5a328f 100644 --- a/mabras/settings.py +++ b/marbas/settings.py @@ -1,5 +1,5 @@ """ -Django settings for mabras project. +Django settings for marbas project. Generated by 'django-admin startproject' using Django 4.2.6. @@ -11,7 +11,7 @@ https://docs.djangoproject.com/en/4.2/ref/settings/ """ from pathlib import Path -import os, socket +import os # Build paths inside the project like this: BASE_DIR / 'subdir'. BASE_DIR = Path(__file__).resolve().parent.parent @@ -32,8 +32,7 @@ ALLOWED_HOSTS = [] if not any(ALLOWED_HOSTS) else ALLOWED_HOSTS # Application definition REST_FRAMEWORK = { - 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination', - 'PAGE_SIZE': 100, + 'DEFAULT_PAGINATION_CLASS': 'marbas.pagination.CustomPagination', 'DEFAULT_RENDERER_CLASSES': [ 'rest_framework.renderers.JSONRenderer', ], @@ -67,12 +66,12 @@ MIDDLEWARE = [ 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] -ROOT_URLCONF = 'mabras.urls' +ROOT_URLCONF = 'marbas.urls' TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', - 'DIRS': ["mabras/templates"], + 'DIRS': ["marbas/templates"], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ @@ -85,7 +84,7 @@ TEMPLATES = [ }, ] -WSGI_APPLICATION = 'mabras.wsgi.application' +WSGI_APPLICATION = 'marbas.wsgi.application' CACHES = { diff --git a/mabras/templates/redoc.html b/marbas/templates/redoc.html similarity index 100% rename from mabras/templates/redoc.html rename to marbas/templates/redoc.html diff --git a/mabras/templates/swagger-ui.html b/marbas/templates/swagger-ui.html similarity index 100% rename from mabras/templates/swagger-ui.html rename to marbas/templates/swagger-ui.html diff --git a/mabras/urls.py b/marbas/urls.py similarity index 95% rename from mabras/urls.py rename to marbas/urls.py index 7e158b1..0c03814 100644 --- a/mabras/urls.py +++ b/marbas/urls.py @@ -1,5 +1,5 @@ """ -URL configuration for mabras project. +URL configuration for marbas project. The `urlpatterns` list routes URLs to views. For more information please see: https://docs.djangoproject.com/en/4.2/topics/http/urls/ @@ -25,7 +25,7 @@ urlpatterns = [ path('api-auth/', include('rest_framework.urls', namespace='rest_framework')), path('sso/', include('esi.urls', namespace='esi')), path('openapi/', get_schema_view( - title="Mabras", + title="marbas", description="API for EvEal", version="0.0.9" ), name='openapi-schema'), diff --git a/mabras/wsgi.py b/marbas/wsgi.py similarity index 75% rename from mabras/wsgi.py rename to marbas/wsgi.py index f15aaf8..aab9192 100644 --- a/mabras/wsgi.py +++ b/marbas/wsgi.py @@ -1,5 +1,5 @@ """ -WSGI config for mabras project. +WSGI config for marbas project. It exposes the WSGI callable as a module-level variable named ``application``. @@ -11,6 +11,6 @@ import os from django.core.wsgi import get_wsgi_application -os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mabras.settings') +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'marbas.settings') application = get_wsgi_application()