
    P1i!                         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
 d dlmZmZ d dlmZmZmZ  e       Z G d d	e      Z G d
 de      Zy)    )TestCaseoverride_settings)mail)get_user_model)
Permission)ContentType)get_report_recipientssend_admin_report_notification)$create_admin_with_report_permissionsdebug_permission_systemcreate_test_bazi_personc                   L     e Zd ZdZ fdZd Z ed      d        Zd Z xZ	S )DebugAdminSetupTestz0Debug test to understand admin permission issuesc                 d    t         |           t        d       t        d       t        d       y )N3
==================================================z DEBUG: Starting admin setup test2==================================================)supersetUpprint)self	__class__s    [/home/cursorai/projects/iching/iching/tests/../../tests/ai_report/test_debug_admin_setup.pyr   zDebugAdminSetupTest.setUp   s$    m01f    c                    t        d       t               }t        d|d           t        d|d           t        d|d           t        d       t        d	
      }t        d       t               }t        d|d           t        d|d           t        d|d           |d   D ]  }t        d|         |d   D ]  }t        d|         t        d       t        j                  j                  d      }t        d|j                          t        d|j                          |j                  j                  d      j                         }t        d|        t        j                  j                  d|dd      j                  d
      }t        d|j                                 |D ]  }t        d|j                           t               }	t        d|	        | j!                  d	|	       y )!z0Test to debug the permission system step by stepz
1. Initial state check...zInitial recipients: 
recipientszInitial permissions found: permissions_foundzInitial staff users: staff_users_countz&
2. Creating admin with permissions...zdebug_admin@example.comemailz!
3. After admin creation check...zRecipients after creation: zPermissions found: zStaff users: staff_user_detailszStaff user: permission_detailsPermission: z
4. Manual verification...can_receive_ai_report_emails)codenamezPermission ID: Permission content type: z%Admin has permission (direct check): TFis_staffuser_permissionsemail__isnull	is_active zQuery result count: zQuery result user: zFinal recipients: N)r   r   r   r   objectsgetidcontent_typer(   filterexistsUserexcludecountr   r	   assertIn)
r   
debug_infoadmindetailperm_detail
permissionhas_permissionquery_resultuserr   s
             r   test_debug_permission_systemz0DebugAdminSetupTest.test_debug_permission_system   s&   +,,.
$Z%=$>?@+J7J,K+LMN%j1D&E%FGH784;TU23,.
+J|,D+EFG#J/B$C#DEFj)<=>?@ !56FL)* 7 &&:;KL./ < 	+,''++5S+T

/0)**A*A)BCD //663 7 

&( 	 	5n5EFG ||**'	 + 

 ''
 	 	$\%7%7%9$:;< D'

|45 ! +,
":,/0/<r   -django.core.mail.backends.locmem.EmailBackendEMAIL_BACKENDc                    t        d       t        d       t        d       t        d       t        d      }t        d       t        j                  j	                  dd	d
      }t        |d      }t        d       t               }t        d|        | j                  t        |      d       | j                  d|       t        d       t        |ddd      }t        d|        t        dt        t        j                                t        j                  rCt        j                  d   }t        d|j                          t        d|j                          | j                  |d       | j                  t        t        j                        dd       | j                  dt        j                  d   j                         y)z;Test the complete flow from admin creation to email sendingr   zDEBUG: Testing complete flowr   z
1. Creating admin...zflow_admin@example.comr   z
2. Creating test data...13800000999ztestuser@example.comtestpass123)phoner   passwordzDebug Test Person)r=   namez
3. Checking recipients...zRecipients:    z
4. Sending notification...baziinappropriate_contentzThis is a debug test messageanalysis_objanalysis_typecategoryuser_messagezSend result: zMail outbox count: r   z
Email to: zEmail subject: zEmail sending should succeedz"Should have sent exactly one emailN)r   r   r2   r,   create_userr   r	   assertEquallenr5   r
   r   outboxtosubject
assertTrue)r   r7   	test_usertest_personr   successr   s          r   test_complete_flow_with_debugz1DebugAdminSetupTest.test_complete_flow_with_debugP   s    	m,-f 	&'4;ST 	*+LL,,(" - 
	 .9CVW 	+,*,
ZL)*Z!,.
; 	,-0$ ,7	
 	gY'(#C$4#567;;KKNEJuxxj)*OEMM?34 	!?@T[[)1.RS.A0A0ABr   c                 z   t        d       t        d       t        d       t        j                  j                  dddd      }t        d|j                   d	|j
                   d
|j                          t        j                  j                  t              }t        d|        t        j                  j                  dd|d      \  }}t        d|j                   d|        t        d|j                          |j                  j                  |       t        d       |j                  j                         }t        d|j                                 |D ](  }t        d|j                    d|j                   d       * t        d       t        j                  j#                  d|dd      j%                  d      }t        d|j                                 |D ](  }t        d|j                   d|j                   d       * t'               }	t        d|	        | j)                  d|	       y )!z:Test manual permission setup to understand the exact issuer   zDEBUG: Manual permission setupr   13800000888zmanual_admin@example.comT)rE   r   r'   r*   zCreated admin: z	, staff: z	, email: zUser content type: r#   z%Can receive AI analysis report emails)rG   r/   )r$   defaultsr"   z, created: r%   zPermission added to userzUser permissions count: z  Permission: z (ID: )z
Testing query directly...Fr&   r+   r   zMatching users count: z  User: zget_report_recipients result: N)r   r2   r,   rP   r.   r'   r   r   get_for_modelr   get_or_creater/   r(   addallr4   r$   r0   r3   r	   r5   )
r   r7   user_content_typer:   created
user_permspermmatching_usersr=   r   s
             r   test_manual_permission_setupz0DebugAdminSetupTest.test_manual_permission_setup   s   m./f ((,	 ) 
 	z5>>2B)EKK=YZ (//==dC#$5#678 )00>>3? 1 ? 

G 	Z]]O;wi@A)**A*A)BCD 	"":.() ++//1
()9)9);(<=>DN4==/yBC  	+,,,'	 - 

 ''
 	 	&~';';'=&>?@"DHTZZLtwwiq9: # +,
.zl;<0*=r   )
__name__
__module____qualname____doc__r   r>   r   rZ   rh   __classcell__)r   s   @r   r   r      s4    :2=h %TU/C V/Cb9>r   r   c                   .    e Zd ZdZ ed      d        Zy)QuickFixTestzTest the quick fix approachr?   r@   c                 6   t        d       t        d       t        d       t               }t               }t        d|        | j                  t	        |      d       | j                  d|       t        j                  j                  dd	      }t        |
      }t        |ddd      }t        d|        t        dt	        t        j                                | j                  |       | j                  t	        t        j                        d       y)z,Test using the simplified quick fix approachr   z&QUICK FIX: Testing simplified approachr   zQuick fix recipients: rH   ztest_admin@example.com13800000777zquicktest@example.com)rE   r   )r=   rI   technical_errorzQuick fix testrK   zQuick fix success: zQuick fix emails sent: N)r   r   r	   rQ   rR   r5   r2   r,   rP   r   r
   r   rS   rV   )r   r7   r   rW   rX   rY   s         r   test_quick_fix_approachz$QuickFixTest.test_quick_fix_approach   s     	m67f 56 +,
&zl34Z!,.
; LL,,) - 
	
 .9=0$ &)	
 	#G9-.'DKK(8'9:; T[[)1-r   N)ri   rj   rk   rl   r   rs    r   r   ro   ro      s    %%TU#. V#.r   ro   N)django.testr   r   django.corer   django.contrib.authr   django.contrib.auth.modelsr   "django.contrib.contenttypes.modelsr   	api.utilsr	   r
   tests.test_utilsr   r   r   r2   r   ro   rt   r   r   <module>r|      sH    4  . 1 : K  h>( h>V'.8 '.r   