a
    )f                     @   s  d dl mZ d dlmZ d dlT d dlmZ d dlmZ d dlm	Z	 d dl
mZmZ d dl
mZ d d	lZed
ZG dd de	ZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd  d eZG d!d" d"eZG d#d$ d$eZG d%d& d&eZG d'd( d(eZG d)d* d*eZ G d+d, d,eZ!d	S )-    )SerializerMethodField)ModelSerializer)*)serializers)filters)PageNumberPagination)FQ)SumNdjangoc                   @   s   e Zd ZdZdZdZdS )NoPaginationResultsd   	page_sizeN)__name__
__module____qualname__r   page_size_query_parammax_page_size r   r   /Users/christophesurbier/Dropbox/Mon Mac (MacBook-Air-de-christophe.local)/Documents/Programmation/SellTix/tixsellbackend/api/serializers.pyr      s   r   c                   @   s   e Zd ZG dd dZdS )SellerSerializerc                   @   s   e Zd ZeZdZdS )zSellerSerializer.Meta__all__N)r   r   r   Sellermodelfieldsr   r   r   r   Meta   s   r   Nr   r   r   r   r   r   r   r   r      s   r   c                   @   s   e Zd ZG dd dZdS )TasksSerializerc                   @   s   e Zd ZeZdZdS )zTasksSerializer.Metar   N)r   r   r   Tasksr   r   r   r   r   r   r      s   r   Nr   r   r   r   r   r      s   r   c                   @   s$   e Zd ZeddZG dd dZdS )FullUserSerializerT	read_onlyc                   @   s   e Zd ZeZdZg dZdS )zFullUserSerializer.Meta)is_superuser	is_activeuser_permissionsis_staffr%   r"   r#   r$   N)r   r   r   Userr   excluderead_only_fieldsr   r   r   r   r   #   s   r   Nr   r   r   r   sellerr   r   r   r   r   r       s   
r   c                   @   s$   e Zd ZeddZG dd dZdS )UserSerializerTr    c                   @   s    e Zd ZeZdZdZg dZdS )zUserSerializer.Metaselltix_user)groupsr$   
privateKeywords	publicKeypinCoder%   r"   r#   lastLoginCodelastLoginCodeDatenoncer&   N)r   r   r   r'   r   ref_namer(   r)   r   r   r   r   r   -   s   r   Nr*   r   r   r   r   r,   )   s   
r,   c                   @   s   e Zd ZG dd dZdS )CategorySerializerc                   @   s   e Zd ZeZdZdS )zCategorySerializer.Metar   N)r   r   r   Categoryr   r   r   r   r   r   r   5   s   r   Nr   r   r   r   r   r7   3   s   r7   c                   @   s   e Zd ZG dd dZdS )EventPageTemplateSerializerc                   @   s   e Zd ZeZdZdS )z EventPageTemplateSerializer.Metar   N)r   r   r   EventPageTemplater   r   r   r   r   r   r   <   s   r   Nr   r   r   r   r   r9   :   s   r9   c                   @   s   e Zd ZG dd dZdS )TicketTypeTemplateSerializerc                   @   s   e Zd ZeZdZdS )z!TicketTypeTemplateSerializer.Metar   N)r   r   r   TicketTypeTemplater   r   r   r   r   r   r   C   s   r   Nr   r   r   r   r   r;   B   s   r;   c                   @   s0   e Zd Ze Ze ZG dd dZdd Z	dS )TicketTypeSerializerc                   @   s   e Zd ZeZdZdS )zTicketTypeSerializer.Metar   Nr   r   r   
TicketTyper   r   r   r   r   r   r   L   s   r   c                 C   sJ   t jjd|dtd}|rBt| |d d kr8dS |d S ndS d S )N   )statusrefTicketType	nbTicketsZnbTickets__sumr   )Paymentobjectsfilter	aggregater
   loggerinfo)selfobjdictr   r   r   
get_nbSoldP   s    

zTicketTypeSerializer.get_nbSoldN)
r   r   r   r;   refTicketTypeTemplater   r   ZnbSoldr   rM   r   r   r   r   r=   H   s   r=   c                   @   s   e Zd ZG dd dZdS )TicketTypeCreateSerializerc                   @   s   e Zd ZeZdZdS )zTicketTypeCreateSerializer.Metar   Nr>   r   r   r   r   r   [   s   r   Nr   r   r   r   r   rO   Z   s   rO   c                   @   s   e Zd Ze Ze Ze Ze Ze Z	e Z
e ZG dd dZdd Zdd Zdd Zd	d
 Zdd Zdd Zdd ZdS )EventSerializerc                   @   s   e Zd ZeZdZdS )zEventSerializer.Metar   Nr   r   r   Eventr   r   r   r   r   r   r   g   s   r   c                 C   s0   t jj|jdddd}t|ddjS )N)refEvent	createdAtrS   rN   Tmany)r?   rE   rF   idorder_byselect_relatedr=   data)rJ   rK   querysetr   r   r   get_ticketTypesk   s    "zEventSerializer.get_ticketTypesc                 C   s   |j jS N)refCategorynamerJ   rK   r   r   r   get_categoryNameo   s    z EventSerializer.get_categoryNamec                 C   s   |j jS r]   )refOrganiserorganizerCompanyr`   r   r   r   get_organiserNamer   s    z!EventSerializer.get_organiserNamec                 C   s   |j jS r]   )rb   organizeWebsiter`   r   r   r   get_organiserWebsiteu   s    z$EventSerializer.get_organiserWebsitec              
   C   sJ   z|j jr|j jjW S W dS W n& tyD } zW Y d }~d S d }~0 0 d S NF)rb   r+   stripe_user_id	ExceptionrJ   rK   er   r   r   get_organizerStripeAccountIdx   s    
z,EventSerializer.get_organizerStripeAccountIdc              
   C   sJ   z|j jr|j jjW S W dS W n& tyD } zW Y d }~dS d }~0 0 d S rg   )rb   r+   stripe_charges_enabledri   rj   r   r   r   get_stripeAccepted   s    
z"EventSerializer.get_stripeAcceptedc                 C   s   |j j|j j|j j|j jdS )N)cbZmaticZusdtZusdc)rb   
cbAcceptedmaticAcceptedusdtAcceptedusdcAcceptedr`   r   r   r   get_payments   s    zEventSerializer.get_paymentsN)r   r   r   r   r   ZcategoryNameticketTypesZorganiserNameZorganiserWebsiteZstripeAcceptedZorganizerStripeAccountIdpaymentsr   r\   ra   rd   rf   rl   rn   rt   r   r   r   r   rP   _   s   

rP   c                   @   s   e Zd ZG dd dZdS )EventPayeesSerializerc                   @   s   e Zd ZeZdZdS )zEventPayeesSerializer.Metar   N)r   r   r   EventPayeesr   r   r   r   r   r   r      s   r   Nr   r   r   r   r   rw      s   rw   c                   @   s   e Zd ZG dd dZdS )ScanUsersSerializerc                   @   s   e Zd ZeZdZdS )zScanUsersSerializer.Metar   N)r   r   r   	ScanUsersr   r   r   r   r   r   r      s   r   Nr   r   r   r   r   ry      s   ry   c                   @   s   e Zd ZG dd dZdS )EventForTicketSerializerc                   @   s   e Zd ZeZdZdS )zEventForTicketSerializer.Meta)rW   ticketContractr_   slug	venueNamevenueAddressvenueGeoloc	eventDateduration	eventType	onlineUrlrecordedVideorecordedStreamingUrlstreamWithSelltixstreamingIdisConferenceNrQ   r   r   r   r   r      s   r   Nr   r   r   r   r   r{      s   r{   c                   @   s0   e Zd Ze Ze ZG dd dZdd Z	dS )TicketSerializerc                   @   s   e Zd ZeZdZdS )zTicketSerializer.MetaownersNr   r   r   Ticketr   r(   r   r   r   r   r      s   r   c                 C   s    t jj|jjd}t|ddjS )N)rW   FrU   )rR   rE   getrB   refEvent_idr{   rZ   )rJ   rK   qsr   r   r   	get_event   s    zTicketSerializer.get_eventN)
r   r   r   r=   rB   r   r   eventr   r   r   r   r   r   r      s   r   c                   @   s&   e Zd Ze Ze ZG dd dZdS )TicketSoldSerializerc                   @   s   e Zd ZeZdZdS )zTicketSoldSerializer.Metar   Nr   r   r   r   r   r      s   r   N)r   r   r   r=   rB   r,   refUserr   r   r   r   r   r      s   r   c                   @   s6   e Zd Ze Ze Ze Z	G dd dZ
dd ZdS )InvitationSerializerc                   @   s   e Zd ZeZdZdS )zInvitationSerializer.Metar   N)r   r   r   
Invitationr   r   r   r   r   r   r      s   r   c                 C   s4   z t jj|jd}t|ddjW S    Y d S 0 d S )N)emailFrU   )r'   rE   r   toUserr,   rZ   )rJ   rK   userr   r   r   get_userExists   s
    z#InvitationSerializer.get_userExistsN)r   r   r   r   	refTicketr,   fromUserr   r   Z
userExistsr   r   r   r   r   r   r      s
   r   )"rest_framework.fieldsr   rest_framework.serializersr   backoffice.modelsrest_frameworkr   r   rest_framework.paginationr   django.db.modelsr   r	   r
   logging	getLoggerrH   r   r   r   r   r,   r7   r9   r;   r=   rO   rP   rw   ry   r{   r   r   r   r   r   r   r   <module>   s4   
	
0