B
    KDb*                 @   s   d dl mZ d dl mZ d dl mZ d dlmZ d dlmZ d dlm	Z	m
Z
mZmZ G dd de
ZG d	d
 d
eZG dd deZG dd dejeeZdS )    )filters)status)viewsets)Response)DjangoFilterBackend)DefaultSchemaDefaultPaginationBaseBaseExportModelMixinBaseActionModelMixinc               @   s   e Zd ZdS )DefaultPaginationN)__name__
__module____qualname__ r   r   8G:\easytimepro\master/mysite/workflow\api\utils_class.pyr      s   r   c               @   s   e Zd ZdZdd ZdS )ExportModelMixinzM
    Define Export Operations to List.
    It base to List Get Operation
    c             C   s6   |  |  }d|jkr"| |}| j|dd}|jS )NZ	page_sizeT)Zmany)Zfilter_querysetZget_querysetZquery_paramsZpaginate_querysetZget_serializerdata)selfrequestZquerysetZ
serializerr   r   r   get_export_data   s
    

z ExportModelMixin.get_export_dataN)r   r   r   __doc__r   r   r   r   r   r      s   r   c               @   s   e Zd ZdZdd ZdS )ActionModelMixinzV
    Define Action Operations to Bulk Objects.
    It base to List Post Operation
    c          	   C   s\   g }xJ| j jj|dD ]6}|j}y|  W q tk
rJ   || Y qX qW d}||fS )N)Zid__in )modelZobjectsfilteriddelete	Exceptionappend)r   Z
object_idsZ
error_listobjZobj_idZ	error_msgr   r   r   action_delete%   s    zActionModelMixin.action_deleteN)r   r   r   r   r    r   r   r   r   r      s   r   c               @   s0   e Zd ZdZe ZeZee	j
e	jfZdd ZdS )UtilGenericViewSetNc          
   O   sT   |   }y| | W n0 tk
rF } ztd|itjdS d }~X Y nX ttjdS )NZdetail)r   )Z
get_objectZperform_destroyr   r   r   ZHTTP_400_BAD_REQUESTZHTTP_204_NO_CONTENT)r   r   argskwargsinstanceer   r   r   destroy;   s     zUtilGenericViewSet.destroy)r   r   r   r   r   Zschemar   Zpagination_classr   r   ZSearchFilterZOrderingFilterZfilter_backendsr&   r   r   r   r   r!   1   s   r!   N)Zrest_frameworkr   r   r   Zrest_framework.responser   Zdjango_filters.rest_frameworkr   Zmysite.api.utils_classr   r   r	   r
   r   r   r   ZGenericViewSetr!   r   r   r   r   <module>   s   