Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion apps/account/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ def sign_up(self, request, *args, **kwargs):
password=request_data["password"],
nick_name=request_data["nick_name"],
phone_number=request_data["phone_number"],
email_address=f"{request_data["username"]}@{urlparse(settings.BACKEND_URL).hostname}",
email_address=f"{request_data['username']}@{urlparse(settings.BACKEND_URL).hostname}",
)

# bind wechat
Expand Down
3 changes: 2 additions & 1 deletion apps/home/urls.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
from rest_framework.routers import DefaultRouter

from apps.home.views import HomeView, I18nViewSet, MetaConfigViewSet
from apps.home.views import HealthViewSet, HomeView, I18nViewSet, MetaConfigViewSet

router = DefaultRouter()
router.register("", HomeView)
router.register("", HealthViewSet, basename="health")
router.register("i18n", I18nViewSet, basename="i18n")
router.register("meta", MetaConfigViewSet)

Expand Down
37 changes: 37 additions & 0 deletions apps/home/views.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,23 @@
from django.conf import settings
from django.conf.global_settings import LANGUAGE_COOKIE_NAME
from django.contrib.auth import get_user_model
from django.core.cache import cache
from django.db import connection
from django.db.models import Q
from django_redis.cache import RedisCache
from ovinc_client.core.auth import SessionAuthenticate
from ovinc_client.core.logger import logger
from ovinc_client.core.viewsets import MainViewSet
from redis import ConnectionError as RedisConnectionError
from rest_framework import status
from rest_framework.decorators import action
from rest_framework.response import Response

from apps.account.models import User
from apps.home.models import MetaConfig
from apps.home.serializers import I18nRequestSerializer, MetaConfigQuerySerializer

cache: RedisCache
USER_MODEL: User = get_user_model()


Expand All @@ -20,6 +28,7 @@ class HomeView(MainViewSet):

queryset = USER_MODEL.get_queryset()
authentication_classes = [SessionAuthenticate]
enable_record_log = False

def list(self, request, *args, **kwargs):
msg = f"[{request.method}] Connect Success"
Expand All @@ -31,6 +40,34 @@ def list(self, request, *args, **kwargs):
)


class HealthViewSet(MainViewSet):
"""
Health Check
"""

authentication_classes = []
enable_record_log = False

@action(methods=["GET"], detail=False)
def health(self, request, *args, **kwargs):
# database ping
try:
connection.ensure_connection()
except Exception as err: # pylint: disable=broad-except
logger.exception("[Healthy] database connection error: %s", err)
return Response(status=status.HTTP_500_INTERNAL_SERVER_ERROR, data="database connection error")
# redis ping
try:
result = cache.client.get_client().ping()
if not result:
raise RedisConnectionError("redis ping failed")
except Exception as err: # pylint: disable=broad-except
logger.exception("[Healthy] redis connection error: %s", err)
return Response(status=status.HTTP_500_INTERNAL_SERVER_ERROR, data="redis connection error")
# success
return Response()


class I18nViewSet(MainViewSet):
"""
International
Expand Down
1 change: 1 addition & 0 deletions entry/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@
]

# MIDDLEWARE
# pylint: disable=C0103
MIDDLEWARE = [
"corsheaders.middleware.CorsMiddleware",
"ovinc_client.core.middlewares.CSRFExemptMiddleware",
Expand Down
Loading