pref: 修改授权 api,去掉不用的

This commit is contained in:
ibuler
2022-11-15 10:43:21 +08:00
parent 8e1312e8ce
commit 63b32ae903
8 changed files with 87 additions and 187 deletions

View File

@@ -3,31 +3,35 @@
from django.utils.translation import ugettext_lazy as _
from rest_framework import serializers
from orgs.models import Organization
from common.drf.fields import LabeledChoiceField
from orgs.mixins.serializers import OrgResourceModelSerializerMixin
from orgs.models import Organization
from tickets.const import TicketType, TicketStatus, TicketState
from tickets.models import Ticket, TicketFlow
from tickets.const import TicketType
__all__ = [
'TicketDisplaySerializer', 'TicketApplySerializer', 'TicketListSerializer', 'TicketApproveSerializer'
'TicketApplySerializer', 'TicketApproveSerializer', 'TicketSerializer',
]
class TicketSerializer(OrgResourceModelSerializerMixin):
type_display = serializers.ReadOnlyField(source='get_type_display', label=_('Type display'))
status_display = serializers.ReadOnlyField(source='get_status_display', label=_('Status display'))
type = LabeledChoiceField(choices=TicketType.choices, read_only=True, label=_('Type'))
status = LabeledChoiceField(choices=TicketStatus.choices, read_only=True, label=_('Status'))
state = LabeledChoiceField(choices=TicketState.choices, read_only=True, label=_("State"))
class Meta:
model = Ticket
fields_mini = ['id', 'title']
fields_small = fields_mini + [
'type', 'type_display', 'status', 'status_display',
'state', 'approval_step', 'rel_snapshot', 'comment',
'type', 'status', 'state', 'approval_step', 'comment',
'date_created', 'date_updated', 'org_id', 'rel_snapshot',
'process_map', 'org_name', 'serial_num'
]
fields_fk = ['applicant', ]
fields = fields_small + fields_fk
extra_kwargs = {
'type': {'required': True}
}
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
@@ -41,43 +45,20 @@ class TicketSerializer(OrgResourceModelSerializerMixin):
choices.pop(TicketType.general, None)
tp._choices = choices
class TicketListSerializer(TicketSerializer):
class Meta:
model = Ticket
fields = [
'id', 'title', 'serial_num', 'type', 'type_display', 'status',
'state', 'rel_snapshot', 'date_created', 'rel_snapshot'
]
read_only_fields = fields
class TicketDisplaySerializer(TicketSerializer):
class Meta:
model = Ticket
fields = TicketSerializer.Meta.fields
read_only_fields = fields
@classmethod
def setup_eager_loading(cls, queryset):
queryset = queryset.prefetch_related('ticket_steps')
return queryset
class TicketApproveSerializer(TicketSerializer):
class Meta:
model = Ticket
class Meta(TicketSerializer.Meta):
fields = TicketSerializer.Meta.fields
read_only_fields = fields
class TicketApplySerializer(TicketSerializer):
org_id = serializers.CharField(
required=True, max_length=36,
allow_blank=True, label=_("Organization")
)
class Meta:
model = Ticket
fields = TicketSerializer.Meta.fields
extra_kwargs = {
'type': {'required': True}
}
org_id = serializers.CharField(required=True, max_length=36, allow_blank=True, label=_("Organization"))
@staticmethod
def validate_org_id(org_id):
@@ -91,10 +72,13 @@ class TicketApplySerializer(TicketSerializer):
if self.instance:
return attrs
print("Attrs: ", attrs)
ticket_type = attrs.get('type')
org_id = attrs.get('org_id')
flow = TicketFlow.get_org_related_flows(org_id=org_id)\
flow = TicketFlow.get_org_related_flows(org_id=org_id) \
.filter(type=ticket_type).first()
if flow:
attrs['flow'] = flow
else: