o
    i                     @   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
 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 G dd dejZdS )    )local)render)viewsets)action)Responsestatus)swagger_auto_schema)openapi)	Localidad)	Provincia   )LocalidadSerializerc                	   @   s   e Zd Zeddgdddd Zedejejdejej	d	d
idgde
deddddeddgdddd Zedejejdejejdd
idgddddddeddgdddd ZdS )LocalidadViewSetFgetlist_locality)detailmethodsurl_pathc                 C   s0   t jdddddd}dd |D }t|S )N	provinciaidnombrecodigo_postalprovincia__nombrec                 S   s0   g | ]}|d  |d |d |d |d dqS )r   r   r   r   r   )r   r   r   provincia_idr    ).0locr   r   ,/var/www/html/crm_dreinet/localidad/views.py
<listcomp>   s    z2LocalidadViewSet.list_locality.<locals>.<listcomp>)r   objectsselect_relatedvaluesr   )selfrequestlocalidadesdatar   r   r   r      s   
zLocalidadViewSet.list_localityz!Devuelve una localidad por su ID.r   zID de la localidad)typedescription)r'   
propertiesrequiredr   zSolicitud incorrectaLocalidad no encontrada)   i  i  )operation_descriptionrequest_body	responsespostget_locality_by_idc           	      C   s   |j d}|stdditjdS z	tjj|d}W n tjy-   tdditjd Y S w t	|}|j }t
|dd }d }|rOtjj|d }|rM|jnd }||d< t|S )	Nr   errorz!Se requiere el id de la localidadr   r   r+   r   r   )r&   r   r   r   HTTP_400_BAD_REQUESTr   r    DoesNotExistHTTP_404_NOT_FOUNDr   getattrr   filterfirstr   )	r#   r$   localidad_id	localidad
serializerr&   r   provincia_nombrer   r   r   r   r1   +   s"   z#LocalidadViewSet.get_locality_by_iduA   Devuelve la localidad y su provincia a partir del código postal.r   u   Código postalzLocalidad y provinciazNo encontradoget_locality_by_postal_codec           	      C   s   |j d}|stdditjdS tjj|d}| s%tdditj	dS |
 }t|dd }d }|rCtjj|d
 }|rA|jnd }|j|j|jd	||d
d}t|tjdS )Nr   r2   u   Se requiere el código postalr   )r   u5   No se encontraron localidades para ese código postalr   r3   )r   r   r   )r   r   )r;   r   )r&   r   r   r   r4   r   r    r8   existsr6   r9   r7   r   r   r   r   HTTP_200_OK)	r#   r$   r   qsr;   r   r=   r   r&   r   r   r   r>   M   s*   z,LocalidadViewSet.get_locality_by_postal_codeN)__name__
__module____qualname__r   r   r	   r
   SchemaTYPE_OBJECTTYPE_INTEGERr   r   r1   TYPE_STRINGr>   r   r   r   r   r      sB    

r   N)	threadingr   django.shortcutsr   rest_frameworkr   rest_framework.decoratorsr   rest_framework.responser   r   drf_yasg.utilsr	   drf_yasgr
   Models.Localidadr   Models.Provinciar   serializersr   ViewSetr   r   r   r   r   <module>   s    