
    wi                     2    d dl mZ d dlmZ  G d de      Zy)    )BaseCommand)process_manual_queuec                       e Zd ZdZd Zd Zy)CommanduL   Przetwarza zakolejkowane ogłoszenia z parse_data do NetworkMonitoringManualc                    |j                  dt        d       |j                  dt        d       |j                  dt        dd	       |j                  d
dd       |j                  ddd       |j                  ddd       |j                         }|j                  ddd       |j                  ddd       |j                  ddd       |j                  ddd       |j                  ddd       |j                  ddd        y )!Nz--idz#ID konkretnego NetworkMonitoredPage)typehelpz--nameu.   Filtruj po nazwie źródła (case-insensitive)z--limitip  u!   Limit ogłoszeń do przetworzenia)r   defaultr	   z	--dry-run
store_trueu   Wyświetl dane bez zapisywania)actionr	   z--forcezBIgnoruj filtry is_complete/is_active/network_ad_manual (globalnie)z--force-nameforce_namesu   Wymuś tryb 'force' tylko dla wybranych źródeł; podaj nazwy rozdzielone przecinkami (porównywane case-insensitive do SourceManual.name lub source.title).)destr	   z--only-activezTylko is_active=Truez--only-inactivezTylko is_active=Falsez--only-emptyonly_empty_fieldsu~   Przetwarzaj tylko rekordy, gdzie któreś z podanych pól jest puste. Lista pól po przecinku: price,title,description,addressz--require-all-emptyuV   Wymagaj, by wszystkie wskazane pola były puste (domyślnie: wystarczy którekolwiek).z--empty-include-zerou;   Traktuj 0 jako puste dla pól numerycznych (dotyczy price).z--use-description-scraperux   WŁĄCZ ekstrakcję danych z opisu (description_extrator) - uzupełnia tylko puste pola, nie nadpisuje danych z parsera.)add_argumentintstradd_mutually_exclusive_group)selfparseractive_groups      H/var/www/extractly/manual_agregator/management/commands/manual_parser.pyadd_argumentszCommand.add_arguments   sS   F3XYH35efICDghKCcdIl  BF  	GZ 	 	
 ::<!!/,Mc!d!!"3LOf!g 	$L 	 	
 	!i 	 	

 	"N 	 	
 	' L 	 	
    c                    |j                  d      }|j                  d      }|j                  d      }|j                  dd      }|j                  d      xs dj                         }|j                  d      D ch c]2  }|r.|j                         r|j                         j                         4 c}xs d }	|j                  d	      xs dj                         }
|
j                  d      D cg c]1  }|j                         s|j                         j                         3 c}xs d }|j                  d
      r| j                  j                  | j                  j                  d             | j                  j                  | j                  j                  d             | j                  j                  d       nh| j                  j                  | j                  j                  d             | j                  j                  | j                  j                  d             t        |||||j                  dd      |	|j                  dd      |j                  dd      ||j                  dd      |j                  dd      |j                  d
d            }| j                  j                  | j                  j                  d| d             y c c}w c c}w )Nidnamelimitdry_runFr    ,r   use_description_scraperu/   ✓ Manual scraper (database settings): ENABLEDu7   ✓ Description scraper (description_extrator): ENABLEDu:     → Description scraper will fill only NULL/empty fieldsu!   ✗ Description scraper: DISABLEDforceonly_activeonly_inactiverequire_all_emptyempty_include_zero)r   name_filtersonly_idr   r"   r   r#   r$   r   r%   r&   r!   zPrzetworzono u    ogłoszeń.)
getstripsplitlowerstdoutwritestyleSUCCESSWARNINGr   )r   argsoptionsr(   name_filterr   r   raw_force_namessr   	raw_emptyfr   counts                 r   handlezCommand.handle1   s]   ++d#kk&)G$++i/";;}5;BBD %**3/
/QWWY GGIOO/
  	 	 [[!45;BBD	'0s';
';!qwwyAGGIOO';
  	
 ;;01KKdjj001bcdKKdjj001jklKKZ[KKdjj001bcdKKdjj001TUV$$++gu-#M59!++ou=/%kk*=uE&{{+?G$+KK0I5$Q
" 	$**,,}UG<-PQRM

s   <7K0K KN)__name__
__module____qualname__r	   r   r:    r   r   r   r      s    YD'
R-Sr   r   N)django.core.management.baser   manual_agregator.run_parserr   r   r>   r   r   <module>rA      s    3 <YSk YSr   