From 716eef7f1083491c111eb1c2673cd41a4dc43f9f Mon Sep 17 00:00:00 2001 From: parkseongheum Date: Sat, 25 Feb 2023 03:10:06 +0900 Subject: [PATCH] =?UTF-8?q?update:=20=EA=B0=81=20=EA=B8=B0=EB=8A=A5?= =?UTF-8?q?=EC=9D=98=20Open=20=EC=97=AC=EB=B6=80=EB=A5=BC=20=EC=A1=B0?= =?UTF-8?q?=ED=9A=8C=ED=95=98=EB=8A=94=20status=20API=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pyconkr/settings.py | 1 + pyconkr/urls.py | 2 ++ status/__init__.py | 0 status/admin.py | 16 ++++++++++++++++ status/apps.py | 6 ++++++ status/migrations/0001_initial.py | 30 ++++++++++++++++++++++++++++++ status/migrations/__init__.py | 0 status/models.py | 7 +++++++ status/tests.py | 3 +++ status/urls.py | 23 +++++++++++++++++++++++ status/views.py | 22 ++++++++++++++++++++++ 11 files changed, 110 insertions(+) create mode 100644 status/__init__.py create mode 100644 status/admin.py create mode 100644 status/apps.py create mode 100644 status/migrations/0001_initial.py create mode 100644 status/migrations/__init__.py create mode 100644 status/models.py create mode 100644 status/tests.py create mode 100644 status/urls.py create mode 100644 status/views.py diff --git a/pyconkr/settings.py b/pyconkr/settings.py index 2b193e8..66f96be 100644 --- a/pyconkr/settings.py +++ b/pyconkr/settings.py @@ -44,6 +44,7 @@ "constance.backends.database", # apps "sponsor", + "status", ] MIDDLEWARE = [ diff --git a/pyconkr/urls.py b/pyconkr/urls.py index d00d408..dce2934 100644 --- a/pyconkr/urls.py +++ b/pyconkr/urls.py @@ -17,10 +17,12 @@ from django.urls import include, path import sponsor.routers +import status.urls urlpatterns = [ path("api-auth/", include("rest_framework.urls")), path("summernote/", include("django_summernote.urls")), path("admin/", admin.site.urls), path("sponsors/", include(sponsor.routers.get_router().urls)), + path("status/", include(status.urls)), ] diff --git a/status/__init__.py b/status/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/status/admin.py b/status/admin.py new file mode 100644 index 0000000..608954c --- /dev/null +++ b/status/admin.py @@ -0,0 +1,16 @@ +from django.contrib import admin + +from status.models import Status + + +class StatusAdmin(admin.ModelAdmin): + list_display = ("name", "open_at", "close_at") + list_editable = ( + "open_at", + "close_at", + ) + ordering = ("open_at",) + search_fields = ("name",) + + +admin.site.register(Status, StatusAdmin) diff --git a/status/apps.py b/status/apps.py new file mode 100644 index 0000000..cb23d09 --- /dev/null +++ b/status/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class StatusConfig(AppConfig): + default_auto_field = "django.db.models.BigAutoField" + name = "status" diff --git a/status/migrations/0001_initial.py b/status/migrations/0001_initial.py new file mode 100644 index 0000000..d259696 --- /dev/null +++ b/status/migrations/0001_initial.py @@ -0,0 +1,30 @@ +# Generated by Django 4.1.5 on 2023-02-24 17:43 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [] + + operations = [ + migrations.CreateModel( + name="Status", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("name", models.CharField(max_length=100)), + ("open_at", models.DateTimeField()), + ("close_at", models.DateTimeField()), + ], + ), + ] diff --git a/status/migrations/__init__.py b/status/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/status/models.py b/status/models.py new file mode 100644 index 0000000..4e8c97d --- /dev/null +++ b/status/models.py @@ -0,0 +1,7 @@ +from django.db import models + + +class Status(models.Model): + name = models.CharField(max_length=100) + open_at = models.DateTimeField() + close_at = models.DateTimeField() diff --git a/status/tests.py b/status/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/status/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/status/urls.py b/status/urls.py new file mode 100644 index 0000000..9ba260f --- /dev/null +++ b/status/urls.py @@ -0,0 +1,23 @@ +"""pyconkr URL Configuration + +The `urlpatterns` list routes URLs to views. For more information please see: + https://docs.djangoproject.com/en/4.1/topics/http/urls/ +Examples: +Function views + 1. Add an import: from my_app import views + 2. Add a URL to urlpatterns: path('', views.home, name='home') +Class-based views + 1. Add an import: from other_app.views import Home + 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') +Including another URLconf + 1. Import the include() function: from django.urls import include, path + 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) +""" +from django.contrib import admin +from django.urls import include, path + +from status.views import StatusView + +urlpatterns = [ + path("", StatusView.as_view()), +] diff --git a/status/views.py b/status/views.py new file mode 100644 index 0000000..7e8daad --- /dev/null +++ b/status/views.py @@ -0,0 +1,22 @@ +import datetime + +from pytz import timezone +from rest_framework.response import Response +from rest_framework.views import APIView + +from status.models import Status + + +class StatusView(APIView): + def get(self, request, name: str): + status = Status.objects.get(name=name) + now = datetime.datetime.now(tz=timezone("Asia/Seoul")) + + flag = None + + if status.open_at < now < status.close_at: + flag = True + else: + flag = False + + return Response({"name": name, "open": flag})