
    ei                        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mZmZmZ ddlmZmZ dd	lmZmZ d d
lmZ d dlZd dlZd dlZ edgd ed      e ed      d edddddddddddddddddgdd      g       G d  d!ej6                               Z edgd"ed ed      d# ed$dd%d&d'd(dddd)dd*ddgdd      g       G d+ d,ej:                               Z edgd- ed.eej@                  d/d0      g ed       ed       ed1      d2 ed3ddddd4ddddddddddd5dddd5gd6d6d7gd8      g9       G d: d;ejB                               Z" ed<gd= ed      e ed      d ed>ddd?d@dAddBdCd      g       G dD dEej6                               Z# ed<gdFed ed      d# edGddd?dHdAddBdCd      g       G dI dJej:                               Z$y)K    )settings)api_viewpermission_classes)Response)generics)IsAuthenticated)extend_schemaOpenApiResponseOpenApiParameterOpenApiExample   )PropertyTypeProperty)PropertyTypeSerializerPropertySerializer)JsonResponseNzproperty-typezList and create property typesT)many	Forbidden)description)        zCreate Property TypezDeluxe SuitezDLX-001z45.5      z!WiFi,TV,Air Conditioning,Mini BarzKing Bed)bed_typequantityz
Single Bed)	structurenameinternal_property_type_idproperty_size_sqm
max_guestsnum_sofa_bedsnum_bedroomsnum_bathrooms	amenitiesstatusbeds)r   valuerequest_only)tagssummary	responsesexamplesc                   "    e Zd ZegZeZd Zd Zy)PropertyTypeListCreateViewc                 j    t         j                  j                  | j                  j                        S N)structure__userr   objectsfilterrequestuserselfs    /backend/properties/views.pyget_querysetz'PropertyTypeListCreateView.get_queryset8   &    ##**4<<;L;L*MM    c                 $    |j                          y Nsaver9   
serializers     r:   perform_createz)PropertyTypeListCreateView.perform_create<       r=   N)	__name__
__module____qualname__r   r   r   serializer_classr;   rD    r=   r:   r/   r/      s    @ **-Nr=   r/   z,Retrieve, update, and delete a property type)r      r   zUpdate Property TypezExecutive SuitezEXE-002z60.0   zWiFi,Smart TV,Work Deskz	Queen Bedc                       e Zd ZegZeZd Zy)%PropertyTypeRetrieveUpdateDestroyViewc                 j    t         j                  j                  | j                  j                        S r1   r3   r8   s    r:   r;   z2PropertyTypeRetrieveUpdateDestroyView.get_queryseta   r<   r=   NrF   rG   rH   r   r   r   rI   r;   rJ   r=   r:   rN   rN   A   s    : **-Nr=   rN   z#List property types by structure IDstructure_idzFilter by structure ID)r   typelocationr   requiredzStructure not found)r   r   i  z List Property Types by Structurez{https://upload.wikimedia.org/wikipedia/commons/thumb/3/3f/Placeholder_view_vector.svg/681px-Placeholder_view_vector.svg.png)idr   r   z2025-07-11T10:00:00Z)rU   r   r   r   	image_urlr    r!   r"   r#   r$   r%   r&   r'   
created_at
updated_at)r   r(   response_only)r*   r+   
parametersr,   r-   c                       e Zd ZegZeZd Zy)PropertyTypeByStructureViewc                     | j                   j                  j                  d      }|st        j	                  d      t
        j                  j                  || j                   j                        S )NrQ   z"structure_id parameter is required)rQ   r2   )	r6   query_paramsgetserializersValidationErrorr   r4   r5   r7   )r9   rQ   s     r:   r;   z(PropertyTypeByStructureView.get_queryset   s_    ||0044^D--.RSS##**% LL-- + 
 	
r=   NrP   rJ   r=   r:   r\   r\   f   s    ^ **-
r=   r\   propertyzList and create propertieszCreate Propertyz
Room A-101	availablezA-101zWiFi,TV,Mini Bar)r   property_typer   availabilityinternal_property_idfloor_numberr%   c                   "    e Zd ZegZeZd Zd Zy)PropertyListCreateViewc                 j    t         j                  j                  | j                  j                        S r1   r   r4   r5   r6   r7   r8   s    r:   r;   z#PropertyListCreateView.get_queryset   &    &&t||7H7H&IIr=   c                 $    |j                          y r?   r@   rB   s     r:   rD   z%PropertyListCreateView.perform_create   rE   r=   N)	rF   rG   rH   r   r   r   rI   r;   rD   rJ   r=   r:   ri   ri      s    2 **)Jr=   ri   z'Retrieve, update, and delete a propertyzUpdate Propertyroom_cleaningc                       e Zd ZegZeZd Zy)!PropertyRetrieveUpdateDestroyViewc                 j    t         j                  j                  | j                  j                        S r1   rk   r8   s    r:   r;   z.PropertyRetrieveUpdateDestroyView.get_queryset   rl   r=   N)rF   rG   rH   r   r   r   rI   r;   rJ   r=   r:   rp   rp      s    2 **)Jr=   rp   )%django.confr   rest_framework.decoratorsr   r   rest_framework.responser   rest_frameworkr   rest_framework.permissionsr   drf_spectacular.utilsr	   r
   r   r   modelsr   r   r`   r   r   django.httpr   timehashlibosListCreateAPIViewr/   RetrieveUpdateDestroyAPIViewrN   intQUERYListAPIViewr\   ri   rp   rJ   r=   r:   <module>r      s     B , # 6  + C $   	 
	,#.#5 	'&-6%+!" !!"@!+;!-1=  %	
>
!;!; 
?>
 
	:#5 	')-6%+!" !!"6&1qAB 	
8NH,Q,Q N98N 
	1%++0	
 $.5)>? 	3 !"*1: "_)/"#%&$%%&!D jaH lJ #9"8%, 1	
#-\
("6"6 
]-\
 
(T*5 	"!"$ +(/ !/ 	
0
X77 
10
 
55 	"!"$ /(/ !/ 	
0J(M(M J10Jr=   