adjust account fields, cache the website_config

This commit is contained in:
zema1
2017-09-22 16:41:29 +08:00
parent 034ad59f2e
commit e9c7344815
9 changed files with 90 additions and 11 deletions

View File

@@ -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):

View File

@@ -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)