adjust account fields, cache the website_config
This commit is contained in:
@@ -76,7 +76,7 @@ class WebsiteConfigAPITest(APITestCase):
|
||||
url = self.reverse("website_info_api")
|
||||
resp = self.client.get(url)
|
||||
self.assertSuccess(resp)
|
||||
self.assertEqual(resp.data["data"]["name_shortcut"], "oj")
|
||||
self.assertEqual(resp.data["data"]["name_shortcut"], "test oj")
|
||||
|
||||
|
||||
class JudgeServerHeartbeatTest(APITestCase):
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import hashlib
|
||||
import pickle
|
||||
|
||||
from django.utils import timezone
|
||||
|
||||
@@ -7,6 +8,8 @@ from judge.languages import languages, spj_languages
|
||||
from judge.dispatcher import process_pending_task
|
||||
from utils.api import APIView, CSRFExemptAPIView, validate_serializer
|
||||
from utils.shortcuts import rand_str
|
||||
from utils.cache import default_cache
|
||||
from utils.constants import CacheKey
|
||||
|
||||
from .models import JudgeServer, JudgeServerToken, SMTPConfig, WebsiteConfig
|
||||
from .serializers import (CreateEditWebsiteConfigSerializer,
|
||||
@@ -57,9 +60,14 @@ class SMTPTestAPI(APIView):
|
||||
|
||||
class WebsiteConfigAPI(APIView):
|
||||
def get(self, request):
|
||||
config = WebsiteConfig.objects.first()
|
||||
if not config:
|
||||
config = WebsiteConfig.objects.create()
|
||||
config = default_cache.get(CacheKey.website_config)
|
||||
if config:
|
||||
config = pickle.loads(config)
|
||||
else:
|
||||
config = WebsiteConfig.objects.first()
|
||||
if not config:
|
||||
config = WebsiteConfig.objects.create()
|
||||
default_cache.set(CacheKey.website_config, pickle.dumps(config))
|
||||
return self.success(WebsiteConfigSerializer(config).data)
|
||||
|
||||
@validate_serializer(CreateEditWebsiteConfigSerializer)
|
||||
@@ -68,6 +76,7 @@ class WebsiteConfigAPI(APIView):
|
||||
data = request.data
|
||||
WebsiteConfig.objects.all().delete()
|
||||
config = WebsiteConfig.objects.create(**data)
|
||||
default_cache.set(CacheKey.website_config, pickle.dumps(config))
|
||||
return self.success(WebsiteConfigSerializer(config).data)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user