From a3b532b917029abe2fb64b1ac17016aa8a35697d Mon Sep 17 00:00:00 2001 From: jaeyoungleeee Date: Tue, 8 Nov 2022 20:47:47 +0900 Subject: [PATCH] update enum class to django text choices --- backend/notifications/models.py | 15 +++++++-------- backend/notifications/serializers.py | 1 + 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/backend/notifications/models.py b/backend/notifications/models.py index 4260040e..d9c6dac6 100644 --- a/backend/notifications/models.py +++ b/backend/notifications/models.py @@ -1,9 +1,8 @@ from django.db import models -from enum import Enum # TODO - state definition for notification, notification log, and reservation -class EnumNotifcationStatus(Enum): +class EnumNotifcationStatus(models.TextChoices): PENDING = 'PENDING' SENDING = 'SENDING' SUCCESS = 'SUCCESS' @@ -11,22 +10,22 @@ class EnumNotifcationStatus(Enum): FAILURE = 'FAILURE' -class EnumNotificationType(Enum): +class EnumNotificationType(models.TextChoices): EMAIL = 'EMAIL' SMS = 'SMS' API = 'API' class Notification(models.Model): - message = models.TextField() # TODO - should be changed to foreign key to message + message = models.TextField() # TODO - should be changed to foreign key to message project = models.ForeignKey('project.Project', on_delete=models.CASCADE) - status = models.CharField(max_length=20, choices=[(tag, tag.value) for tag in EnumNotifcationStatus]) - type = models.CharField(max_length=20, choices=[(tag, tag.value) for tag in EnumNotificationType]) + status = models.CharField(max_length=20, choices=EnumNotifcationStatus.choices) + type = models.CharField(max_length=20, choices=EnumNotificationType.choices) class NotificationLog(models.Model): notification = models.ForeignKey('Notification', on_delete=models.CASCADE) - status = models.CharField(max_length=20, choices=[(tag, tag.value) for tag in EnumNotifcationStatus]) + status = models.CharField(max_length=20, choices=EnumNotificationType.choices) request = models.JSONField() response = models.JSONField() created_at = models.DateTimeField(auto_now_add=True) @@ -37,5 +36,5 @@ class NotificationLog(models.Model): class Reservation(models.Model): notifcation = models.ForeignKey('Notification', on_delete=models.CASCADE) reserved_at = models.DateTimeField(auto_now_add=True) - status = models.CharField(max_length=20, choices=[(tag, tag.value) for tag in EnumNotifcationStatus]) + status = models.CharField(max_length=20, choices=EnumNotifcationStatus.choices) # TODO - add target user diff --git a/backend/notifications/serializers.py b/backend/notifications/serializers.py index 057559c0..2f87655f 100644 --- a/backend/notifications/serializers.py +++ b/backend/notifications/serializers.py @@ -7,3 +7,4 @@ class NotificationSerializer(serializers.ModelSerializer): class Meta: model = Notification fields = ('id', 'message', 'project', 'status', 'type',) +