U
    h                     @   sd   d Z ddlmZ ddlmZ ddlmZ ddlmZm	Z	 ddd	Z
dddZdddZdddZd
S )z|
Helper functions for the activities app to maintain backward compatibility
with the old UserActivity model usage patterns.
    )ContentType)timezone)IntegrityError   )ActivityActivityCategoryTc                 C   sr   zt jj| dW S  t jk
rl   zt jj| |||||dW  Y S  tk
rf   t jj| d Y  Y S X Y nX dS )z=
    Helper function to get or create a category safely.
    )coder   namedescriptioncoloriconZ	is_systemN)r   objectsgetDoesNotExistcreater   r	    r   2/var/www/html/Focus/src/apps/activities/helpers.pyget_or_create_category   s    r   Nc	                 C   s  dddddddddd	d
ddd}	|	 || }
| r:| jnd}|dd }|rh| d| d| }n| d| }|dkrtddddddd}n2|dkrtddddd dd}ntdd!d"d#d$dd}| |
|||||pi dd%}|rx|rxzXd&|kr,| d&\}}tj	j ||d'}||d(< ||d)< n|d* 
|||d+ W n2 tjtfk
rv   |d* 
|||d+ Y nX |rtjf d,|i|S tjf |S d-S ).z
    Helper function to maintain backward compatibility with old UserActivity.objects.create() calls.
    
    This function maps the old UserActivity parameters to the new Activity.log_activity() method.
    ZLOGINZLOGOUTZPASSWORD_CHANGEZPASSWORD_RESETZACCOUNT_VERIFIEDUPDATECREATEREADDELETEZEXPORTZIMPORTADMIN)loginlogoutpassword_changepassword_resetaccount_verifiedprofile_updater   readupdatedeleteexportimportadminSystem_ z - z: )r   r   r   r   r   authZAuthenticationz*User authentication and account activitiesz#28a745zfas fa-sign-in-altTr	   )r   r!   r%   zUser Managementz.User profile and account management activitiesz#007bffzfas fa-usersZGeneralzGeneral system activitiesz#6c757dz
fas fa-cog)useractionr   category
ip_address
user_agentmetadataZis_successful.)	app_labelmodelcontent_type	object_idr/   )Zoriginal_object_typeZoriginal_object_idZoriginal_object_reprrequestN)r   upperemailreplacetitler   lowersplitr   r   r!   r   
ValueErrorr   log_activity)r*   r+   object_typer4   object_reprdetailsr-   r.   r5   Zaction_mappingZmapped_actionuser_strZ
action_strr   r,   Zactivity_datar1   
model_namer3   r   r   r   log_user_activity    s    		

rC   c                 C   s(   t jj| dd}|r$|d| }|S )zW
    Get user activities with backward compatibility for old UserActivity queries.
    )r*   -created_atN)r   r   filterorder_by)r*   limit
activitiesr   r   r   get_user_activities   s    rI      c                 C   sD   t  t j| d }tjj|dddd}|r@|d| }|S )z.
    Get recent activities for all users.
    )days)created_at__gter*   r,   rD   N)r   now	timedeltar   r   rE   select_relatedrF   )rK   rG   cutoff_daterH   r   r   r   get_recent_activities   s     rQ   )T)NNNNNNN)N)rJ   N)__doc__"django.contrib.contenttypes.modelsr   django.utilsr   	django.dbr   modelsr   r   r   rC   rI   rQ   r   r   r   r   <module>   s   
        
k
