o
    i$                     @   s   d dl mZ d dlmZ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 d dlmZ d d	lmZmZmZmZ G d
d dejZdS )    )render)viewsetsstatus)action)Response)swagger_auto_schema)openapi)Origen)timezone)OrigenSerializerCreateOrigenSerializerEditOrigenSerializerDeleteOrigenSerializerc                   @   sN  e Zd Zeddeddideddgdd	d
d Zedeej	dej
ejej
ejddej
ejddej
ejdddddej	dej
ejej
ejdej
ejddddddeddgdd	dd Zedeej	dej
ejej
ejddej
ejd dej
ejd!ddddej	dej
ejej
ejdej
ejddddej	d"ej
ejd#ej
ejdiddd$deddgd%d	d&d' Zed(eej	d)ej
ejej
ejdej
ejdd*ddej	d+ej
ejej
ejdej
ejddddej	d"ej
ejd#ej
ejdiddd$deddgd,d	d-d. Zd/S )0OrigenViewSetu!   Lista todos los orígenes activos   Tmany)operation_description	responsesFgetlist_origin)detailmethodsurl_pathc                 C   s$   t jjdd}t|dd}t|jS )NT)deleted_at__isnullr   )r	   objectsfilterr   r   data)selfrequestorigenes
serializer r"   )/var/www/html/crm_dreinet/origen/views.pylistar_origenes   s   
zOrigenViewSet.listar_origenesz,Crea un nuevo origen con id_usuario y nombreOrigen creado correctamenteu   Mensaje de éxito)typedescriptionzID del origen creadozDatos del origen creadomensajeiddatos)r&   
properties)r'   schemaz!Error en los datos proporcionados)r&   errordetalles)     )r   request_bodyr   postcreate_originc                 C   sp   t |jd}| std|jdtjdS |jd}t	j
j|jd |t d}td|jt|jd	tjdS )
Nr      Datos inválidosr.   r   
id_usuarionombre)r:   
created_by
created_atr%   r(   )r   r   is_validr   errorsr   HTTP_400_BAD_REQUESTvalidated_datapopr	   r   creater
   nowr*   r   HTTP_201_CREATED)r   r   r!   r9   origenr"   r"   r#   crear_origen   s    zOrigenViewSet.crear_origenuz   Actualiza un origen existente mediante método POST. Solo es necesario incluir el ID y los campos que se desean modificar. Origen actualizado correctamentezID del origen actualizadozDatos actualizados del origenzOrigen no encontrador/   )r   r2   i  update_originc           
      C   s  t |jd}| std|jdtjdS zb|jd}t	j
j|dd}g }|j D ]\}}t||d }||krDt||| || q+|jjrM|jjnd }	t |_|	rX|	nd|_|d	d
g |j|d td||t|jdtjdW S  t	jy   tdditjd Y S w )Nr6   r7   r.   r8   r*   Tr*   r      
updated_at
updated_byupdate_fieldsrG   )r)   r*   campos_actualizadosr+   r/   &El origen no existe o ya fue eliminado)r   r   r=   r   r>   r   r?   r@   rA   r	   r   r   itemsgetattrsetattrappenduseris_authenticatedr*   r
   rC   rK   rL   extendsaver   HTTP_200_OKDoesNotExistHTTP_404_NOT_FOUND)
r   r   r!   	id_origenrE   rO   campovalor	old_value
usuario_idr"   r"   r#   actualizar_origenK   s:   &

zOrigenViewSet.actualizar_origenu(   Elimina lógicamente un origen por su IDOrigen eliminado correctamenter)   r*   r7   delete_originc                 C   s   t |jd}| std|jdtjdS z6|jd }tj	j
|dd}|jjr+|jjnd }t |_|r6|nd|_|jd	d
gd td|dtjdW S  tjy^   tdditjd Y S w )Nr6   r7   r.   r8   r*   TrI   rJ   
deleted_at
deleted_byrM   rb   rc   r/   rP   )r   r   r=   r   r>   r   r?   r@   r	   r   r   rU   rV   r*   r
   rC   re   rf   rX   rY   rZ   r[   )r   r   r!   r\   rE   r`   r"   r"   r#   eliminar_origen   s   %

zOrigenViewSet.eliminar_origenN)__name__
__module____qualname__r   r   r   r$   r   r   r   SchemaTYPE_OBJECTTYPE_STRINGTYPE_INTEGERrF   r   ra   r   rg   r"   r"   r"   r#   r      s    

$*

#r   N)django.shortcutsr   rest_frameworkr   r   rest_framework.decoratorsr   rest_framework.responser   drf_yasg.utilsr   drf_yasgr   Models.origenr	   django.utilsr
   origen.serializersr   r   r   r   ViewSetr   r"   r"   r"   r#   <module>   s    