U
    h                     @   sr   d Z ddlZddlZddlmZ ddlmZ ddlmZ ddl	m
Z
 edZeedd	 Zeed
d ZdS )z
Django Signals for Core Application

This module contains signal handlers for automatic user creation
and other core application events.
    N)post_migrate)receiver)User)settingszstream_processor.corec              
   K   s   | j dkrdS z|tj r*td W dS tjdd}tjdd}tjdd	}tjj	|||d
dd}td|  t
d|  W n@ tk
r } z"td|  t
d|  W 5 d}~X Y nX dS )aq  
    Create default admin user after migrations run.
    
    This signal handler automatically creates a default admin user
    if no users exist in the system. It uses environment variables
    for configuration and only runs after the auth app migrations.
    
    Args:
        sender: The app that sent the signal
        **kwargs: Additional signal arguments
    zdjango.contrib.authNz4Users already exist, skipping default admin creationZDEFAULT_ADMIN_USERNAMEadminZDEFAULT_ADMIN_EMAILzadmin@streamprocessor.comZDEFAULT_ADMIN_PASSWORDzStreamAdmin2024!ZStreamZAdministrator)usernameemailpassword
first_name	last_namezCreated default admin user: u    ✅ Created default admin user: z#Error creating default admin user: u'   ❌ Error creating default admin user: )namer   objectsexistsloggerinfoosenvirongetcreate_superuserprint	Exceptionerror)senderkwargsZadmin_usernameZadmin_emailZadmin_passwordZ
admin_usere r   6/var/www/html/StreamProcessor/src/apps/core/signals.pycreate_default_admin_user   s*    


r   c              
   K   s^   | j dkrdS ztd td W n2 tk
rX } ztd|  W 5 d}~X Y nX dS )aP  
    Set up initial application data after migrations.
    
    This signal handler can be used to create initial configuration
    data, notification templates, or other required setup after
    the database schema is ready.
    
    Args:
        sender: The app that sent the signal
        **kwargs: Additional signal arguments
    z	apps.coreNz#Setting up initial application dataz(Initial application data setup completedzError setting up initial data: )r   r   r   r   r   )r   r   r   r   r   r   setup_initial_data?   s    

r   )__doc__r   loggingZdjango.db.models.signalsr   django.dispatchr   django.contrib.auth.modelsr   django.confr   	getLoggerr   r   r   r   r   r   r   <module>   s   

,