
    Ƿi                         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	m
Z
 d dlmZ g dZd Z G d	 d
e	          ZdS )    N)settings)get_user_model)Group)BaseCommandCommandError)signalcommand)addressemailsgoogleoutlooklinkedinvcardc                     |                      d          }|                      d          }d                    d ||fD                       }|r|S |                      d          }|r|S |                      d          }|r|S dS )zReturn full name or username.
first_name	last_name c              3      K   | ]}||V  	d S N ).0ns     k/srv/django_bis/venv311/lib/python3.11/site-packages/django_extensions/management/commands/export_emails.py	<genexpr>zfull_name.<locals>.<genexpr>   s'      <<!!<A<<<<<<    nameusername )getjoin)kwargsr   r   r   r   s        r   	full_namer!      s    L))J

;''I88<<
I6<<<<<D ::fD zz*%%H 2r   c                   |     e Zd ZdZdZdZdZdZ fdZ fdZ	d Z
ed	             Zd
 Zd Zd Zd Zd Zd Z xZS )Commandz=Export user email address list in one of a number of formats.z[output file]zfilename to save toTzutf-8c                 `     t                      j        |i | t                      | _        d S r   )super__init__r   	UserModel)selfargsr    	__class__s      r   r&   zCommand.__init__3   s0    $)&)))'))r   c                    t                                          |           |                    ddddd d          f |                    dddd	t          d
         dd                    t                    z             d S )Nz--groupz-gstoregroupz8Limit to users which are part of the supplied group name)actiondestdefaulthelpz--formatz-fformatr   z output format. May be one of %s.z, )r%   add_argumentsadd_argumentFORMATSr   )r(   parserr*   s     r   r3   zCommand.add_arguments7   s    f%%%tG'4K 	 	
 	
 	 	 	W8WQZ3dii6H6HH 	 	
 	
 	
 	
 	
r   c                 D     t          t          dt                    di |S )NEXPORT_EMAILS_FULL_NAME_FUNCr   )getattrr   r!   )r(   r    s     r   r!   zCommand.full_nameB   s%    Kwx!?KKUUfUUUr   c                    t          |          dk    rt          d          |d         }|rt          j                            |                                          dk    s^d                    d t          j                            d          D                       }|rd|z   d	z   }t          d
|z   dz   |z             t                      }t          t          dg d          }t          t          dg d          } |j                                        j        | }|r(|                    |                                          } |j        | } t          | |d                   |           d S )N   zextra arguments suppliedr-   )r   z', 'c              3   &   K   | ]}|d          V  dS )r   Nr   )r   gs     r   r   z!Command.handle.<locals>.<genexpr>K   s&      PPa&	PPPPPPr   r   'z'.zUnknown group 'z'. Valid group names are: EXPORT_EMAILS_ORDER_BY)r   r   r   emailEXPORT_EMAILS_FIELDS)groups__namer2   )lenr   r   objectsfiltercountr   valuesr   r9   r   allorder_bydistinct)	r(   r)   optionsr-   namesr'   rI   fieldsqss	            r   handlezCommand.handleE   sw   t99q==9:::  	a--5-99??AAQFFKKPP5=3G3G3O3OPPPPPE +ed*058;WWZ__```"$$	8%=?o?o?opp#9;k;k;kll-Y""$$-x8 	:..7799BRY(gh'((,,,,,r   c                       j                             d                     fd|D                                   j                             d           dS )zc
        Single entry per line in the format of:
            "full name" <my@address.com>;
        
c              3   h   K   | ],}d  j         di |d|                    dd          dV  -dS )"z" <r@   r   z>;Nr   )r!   r   )r   entr(   s     r   r   z"Command.address.<locals>.<genexpr>_   sZ      #o#oehehNDN4I4IS4I4I4I4I377SZ\^K_K_K_K_$`#o#o#o#o#o#or   Nstdoutwriter   r(   rN   s   ` r   r	   zCommand.addressZ   sY    
 	$))#o#o#o#oln#o#o#oooppp$r   c                     | j                             d                    d |D                                  | j                             d           dS )z\
        Single entry with email only in the format of:
            my@address.com,
        z,
c              3   P   K   | ]!}|                     d           |d          V  "dS )r@   N)r   )r   rT   s     r   r   z!Command.emails.<locals>.<genexpr>g   s7      $T$Tc3777CSCS$TS\$T$T$T$T$T$Tr   rQ   NrU   rX   s     r   r
   zCommand.emailsb   sQ    
 	%**$T$TR$T$T$TTTUUU$r   c                     t          j        t          j                  }|                    ddg           |D ]8}|                     | j        di ||                    dd          g           9dS )z3CSV format suitable for importing into google GMailNameEmailr@   r   Nr   )csvwritersysrV   writerowr!   r   r(   rN   csvfrT   s       r   r   zCommand.googlej   s    z#*%%vw'((( 	I 	ICMM>4>00C00#'''22F2FGHHHH	I 	Ir   c           	      "   t          j        t          j                  }|                    g d           |D ]V}|                    |                    dd          |                    dd          |                    dd          g           WdS )z
        CSV format suitable for importing into linkedin Groups.
        perfect for pre-approving members of a linkedin group.
        )z
First Namez	Last Namer]   r   r   r   r@   N)r^   r_   r`   rV   ra   r   rb   s       r   r   zCommand.linkedinq   s    
 z#*%%:::;;; 	g 	gCMM377<44cggk26N6NPSPWPWX_acPdPdeffff	g 	gr   c                    t          j        t          j                  }g d}|                    |           dgt          |          dz
  z  }|D ];}|                     | j        di ||                    dd          g|z              <dS )z.CSV format suitable for importing into outlook)r\   zE-mail AddressNoteszE-mail 2 AddresszE-mail 3 AddresszMobile PhonePagerCompanyz	Job Titlez
Home PhonezHome Phone 2zHome FaxzHome AddresszBusiness PhonezBusiness Phone 2zBusiness FaxzBusiness AddresszOther Phonez	Other FaxzOther Addressr      r@   Nr   )r^   r_   r`   rV   ra   rC   r!   r   )r(   rN   rc   columnsemptyrT   s         r   r   zCommand.outlook{   s    z#*%%d d d 	gGq() 	Q 	QCMM>4>00C00#'''22F2FG%OPPPP	Q 	Qr   c                 X   	 ddl }nK# t          $ r> t          | j                            d                     t          j        d           Y nw xY wt
          j        }|D ]H}|                                } | j	        di ||
                    d          _        |                    d          rU|                    d          r@|j                            |d         |d                   |
                    d          _        n=|j                             | j	        di |          |
                    d          _        |                    d	          r)|
                    d	          }|d	         |_        d
|_        |                    |                                           JdS )zVCARD format.r   Nz6Please install vobject to use the vcard export format.r;   fnr   r   r   r@   INTERNETr   )vobjectImportErrorprintstyleERRORr`   exitrV   vCardr!   addvaluer   r   r\   
type_paramrW   	serialize)r(   rN   ro   outrT   card	emailparts          r   r   zCommand.vcard   s   	NNNN 	 	 	$*""#[\\]]]HQKKKKK	 j 	( 	(C==??D#14>#8#8C#8#8DHHTNN ww{## P(=(= P&-m&8&8[9I3|K\&]&]## '.m&8&89N9N#9N9N&O&O#www 2 HHW--	"%g,	'1	$IIdnn&&''''	( 	(s    AAA)__name__
__module____qualname__r1   r)   labelcan_import_settingsencodingr&   r3   r!   r   rO   r	   r
   r   r   r   r   __classcell__)r*   s   @r   r#   r#   +   s        JDD!EH* * * * *	
 	
 	
 	
 	
V V V - - ]-(          I I Ig g g
Q 
Q 
Q( ( ( ( ( ( (r   r#   )r`   r^   django.confr   django.contrib.authr   django.contrib.auth.modelsr   django.core.management.baser   r   "django_extensions.management.utilsr   r5   r!   r#   r   r   r   <module>r      s    



 



             . . . . . . , , , , , , A A A A A A A A < < < < < <    (r( r( r( r( r(k r( r( r( r( r(r   