瀏覽代碼

Changing the way statuses are processed

- Now the ticket type can only be selected when creating a ticket
- Statuses can only be changed to an available status
TonyKurts 1 年之前
父節點
當前提交
3553d24245
共有 2 個文件被更改,包括 8 次插入9 次删除
  1. 8 1
      api/serializers/ticket.py
  2. 0 8
      models/ticket.py

+ 8 - 1
api/serializers/ticket.py

@@ -24,10 +24,11 @@ class TicketSerializer(BaseTicketSerializer):
 
     class Meta():
         model = Ticket
-        exclude = ["updated_at"]
+        fields = "__all__"
 
 
 class TicketDetailSerializer(BaseTicketSerializer):
+    ticket_type = serializers.IntegerField(read_only=True)
     available_statuses = serializers.SerializerMethodField()
 
     def get_available_statuses(self, obj):
@@ -45,6 +46,12 @@ class TicketStatusSerializer(BaseTicketSerializer):
     def get_available_statuses(self, obj):
         return obj.get_available_statuses()
 
+    def validate_status(self, status):
+        valid_statuses = self.get_available_statuses(self.instance)
+        if valid_statuses and status not in valid_statuses:
+            raise serializers.ValidationError("Invalid value for the status field")
+        return status
+
     class Meta():
         model = Ticket
         fields = ["id", "available_statuses", "status"]

+ 0 - 8
models/ticket.py

@@ -48,14 +48,6 @@ class Ticket(models.Model):
     def save(self, *args, **kwargs):
         if not self.status:
             self.set_first_status()
-        else:
-            unique_statuses = set()
-            for status_group in self._get_statuses():
-                for status in status_group:
-                    unique_statuses.add(status)
-
-            if self.status not in unique_statuses:
-                self.set_first_status()
         
         super(Ticket, self).save(*args, **kwargs)