
    JiV                     r    d Z ddlmZ ddlZddlmZmZ ddlmZ  ej                  e	      Z
 G d de      Zy)zN
Fixed Developer Discovery that includes developers from the developers table
    )DeveloperDiscoveryN)datetimetimezone)textc                   D     e Zd ZdZd Z	 	 d	dededededef
 fdZ xZS )
FixedDeveloperDiscoveryzAExtended DeveloperDiscovery that also checks the developers tablec                    | j                   sg S 	 t        d      }| j                   j                  |      }g }|D ]>  }d}d}	 t        d      }| j                   j                  |d|j                  i      j	                         }|r|j
                  xs d}|j                  }|j                  |j                  xs d|j                   |j                  d	d
|j                  |j                  xs d|j                   d| d|r|j                         n'|j                  r|j                  j                         nd|dd|j                  |j                  r|j                  j                         ndddd       A t        j!                  dt#        |       d       |S # t        $ r0}	t        j                  d|j                   d|	        Y d}	~	2d}	~	ww xY w# t        $ r$}	t        j%                  d|	        g cY d}	~	S d}	~	ww xY w)z(Get developers from the developers tableaQ  
                SELECT 
                    id,
                    developer_id,
                    name,
                    email,
                    active,
                    api_token,
                    created_at,
                    last_sync
                FROM developers
                WHERE active = true
            r   Na  
                        SELECT 
                            COUNT(*) as count,
                            MAX(timestamp) as last_activity
                        FROM activity_records 
                        WHERE developer_id = :dev_id
                    dev_idzError counting activities for z: dev_unknowni  zRegistered developer (z activities)developers_table
registeredzN/A)idnamehostporthostname	device_iddescription	last_seenactivity_countsourcestatusemail
created_atversionbucket_countzFound z developers in developers tablez)Error discovering from developers table: )
db_sessionr   executedeveloper_idfetchonecountlast_activity	Exceptionloggerwarningr   appendr   	isoformatr   r   infolenerror)
selfqueryresult
developersrowr   r#   count_querycount_resultes
             ?E:\timesheet\timesheet_new\backend\fixed_developer_discovery.pydiscover_from_developers_tablez6FixedDeveloperDiscovery.discover_from_developers_table   s   I@	  E __,,U3FJ!" $U"& ( #K $(??#:#:; #"2"2I $xz ! $)5););)@q(4(B(B !!**=SVVHoHH%  #!$!1!1!DtCFF8_%;N;K<#X>K!8!8!:oro}o}QTQ_Q_QiQiQk  DH&40* YY@C#..":":"<TX$$%# - P KK&Z 11PQR- ! UNN%CCHH:RPQs#STTU0  	LLDQCHII	sI   2G AF "C=G  	G)%GG GG 	H	%H>H	H	scan_network
scan_localscan_databaseinclude_developers_tablereturnc                    t         |   |||      }|rt        j                  d       | j	                         }|D ch c]  }|d   	 }}|D ]  }|d   |vr|j                  |       t        |      D ]d  \  }	}
|
d   |d   k(  s|
j                  d      s|j                  d      |
d<   |j                  dd      |
j                  dd      kD  r|d   |
d<      t        j                  dt        |              |S c c}w )z1Extended discovery that includes developers tablez/Discovering developers from developers table...r   r   r   r   z3Total developers after including developers table: )	superdiscover_all_developersr%   r)   r5   r'   	enumerategetr*   )r,   r6   r7   r8   r9   all_developers
table_devsdevexisting_idsiexisting	__class__s              r4   r=   z/FixedDeveloperDiscovery.discover_all_developersW   s    8zS`a $KKIJ<<>J 2@@#CIL@!t9L0"))#. (1'@8#D>SY6#+<<#847GGG4D 1"ww'7;hllK[]^>__=@AQ=R)9 :! (A " 	I#nJ]I^_`! As   D)FTTT)	__name__
__module____qualname____doc__r5   boollistr=   __classcell__)rF   s   @r4   r   r      sG    KEN VZ[_D d -1TXdh     r   )rJ   developer_discoveryr   loggingr   r   
sqlalchemyr   	getLoggerrG   r%   r    rN   r4   <module>rT      s9    3  ' 			8	$f0 frN   