o
    54g4                     @   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mZmZ ddlmZmZmZmZ ddlmZ ejed	 d
 ZG dd dejZG dd deZG dd deZejee ejee ejee ejee dS )    )apps)adminmessages)	force_str)gettext_lazy   )APNSServerErrorGCMErrorWebPushError)
APNSDevice	GCMDeviceWebPushDevice	WNSDevice)PUSH_NOTIFICATIONS_SETTINGS
USER_MODEL.c                   @   s   e Zd ZdZdZdZdZeedrdddej	 fZ
nd	Z
dddZdd Zede_dd Zede_dd Zede_dd Zede_dS )DeviceAdmin)__str__	device_iduseractivedate_createdr   )send_messagesend_bulk_messageenabledisable)r   USERNAME_FIELDnamer   user__%s)r   r   Fc                 C   s  g }g }d}|D ]e}z|r| d}n| d}|r|| W nH ty9 } z|t| W Y d}~n4d}~w tyP } z||j W Y d}~nd}~w tyh } z|t| W Y d}~nd}~ww |rm nq|s|D ]}d|d d v r||d d d  qrnUd|d d v rzdd	 |d d d D }W n= ty   |d d D ]}	|d
d	 |	d D  }qY n! t	y   Y nw |d d 
 D ]\}
}| dkr|| q|r| j|tdd| tjd |rn|rKd|d d v r.z
|d d d }W n ty%   d}|d d D ]	}	||	d  }qY nw |dkr-dS n(g }|d d 
 D ]\}
}| dkrH||
 q8nt|t|krVdS |r`td| }ntd| }| || dS dS )Y
		Provides error handling for DeviceAdmin send_message and send_bulk_message methods.
		 Test bulk notificationTest single notificationNerrorresultsr   c                 S      g | ]
}d |v r|d  qS r$    .0rr(   r(   ^/var/www/html/notificationserver/venv/lib/python3.10/site-packages/push_notifications/admin.py
<listcomp><       z-DeviceAdmin.send_messages.<locals>.<listcomp>c                 S   r&   r'   r(   r)   r(   r(   r,   r-   ?   r.   successz(Some messages could not be processed: %r, levelzSome messages were sent: %szAll messages were sent: %s)r   appendr	   strr   statusr
   r   	TypeError
IndexErroritemslowermessage_user_joinr   ERRORlen)selfrequestquerysetbulkreterrorsr+   deviceeentrykeyvaluer/   msgr(   r(   r,   send_messages   s   




zDeviceAdmin.send_messagesc                 C   s   |  || d S )NrK   r?   r@   rA   r(   r(   r,   r   l      zDeviceAdmin.send_messagezSend test messagec                 C   s   |  ||d d S )NTrL   rM   r(   r(   r,   r   q   s   zDeviceAdmin.send_bulk_messagezSend test message in bulkc                 C      |j dd d S )NTr   updaterM   r(   r(   r,   r   v   rN   zDeviceAdmin.enablezEnable selected devicesc                 C   rO   )NFr   rP   rM   r(   r(   r,   r   {   rN   zDeviceAdmin.disablezDisable selected devicesNF)__name__
__module____qualname__list_displaylist_filteractionsraw_id_fieldshasattrUserr   search_fieldsrK   r   r;   short_descriptionr   r   r   r(   r(   r(   r,   r      s"    

S


r   c                   @   s   e Zd ZdZdZdddZdS )GCMDeviceAdmin)r   r   r   r   r   cloud_message_type)r   r_   Fc           
      C   s   g }g }|r| |d n|D ]}|d}|r| | q|D ]}|jD ]}	|	jr4| t|	j q'q"|rJ| j|tdd| tj	d dS | j|tdtj
d dS )r    r"   r#   z(Some messages could not be processed: %sr0   r1   zAll messages were sent.N)r3   r   	responses	exceptionreprr:   r;   r<   r   r=   SUCCESS)
r?   r@   rA   rB   r%   rD   rE   resultbatchresponser(   r(   r,   rK      s0   




zGCMDeviceAdmin.send_messagesNrR   )rS   rT   rU   rV   rW   rK   r(   r(   r(   r,   r^      s    r^   c                   @   s6   e Zd ZdZdZeedrdddej fZdS dZdS )	WebPushDeviceAdmin)r   browserr   r   r   )r   rh   r   r   registration_idr   )r   ri   N)	rS   rT   rU   rV   rW   rZ   r[   r   r\   r(   r(   r(   r,   rg      s    
rg   N)django.appsr   django.contribr   r   django.utils.encodingr   django.utils.translationr   r;   
exceptionsr   r	   r
   modelsr   r   r   r   settingsr   SETTINGS	get_modelsplitr[   
ModelAdminr   r^   rg   siteregisterr(   r(   r(   r,   <module>   s    s&
