U l^Æã@sÎddlmZddlZddlmZddlZddlZddlmZddlZddl m Z ddl m Z ddl mZe d¡Ze ej d ej¡¡ej e¡Zej ed ¡Zed ƒZd ZGd d„dƒZGdd„dƒZdS)é)ÚdatetimeN)ÚPurePath)ÚList)Ú load_workbook)Ú Worksheet)Ú InventoryDatazinventory.reportsÚ LOG_LEVELz;SSP-A13-FedRAMP-Integrated-Inventory-Workbook-Template.xlsxz./tmp/SSP-A13-FedRAMP-Integrated-Inventory.xlsxéc@s4eZdZeeeedœdd„Zeeedœdd„Z dS)ÚCreateReportCommandHandler)Ú worksheetÚcolumnÚrowÚvaluecCs|r|j|||ddS)N)r r r)Úcell)Úselfr r r r©rúH/Users/csantosb/Documents/Writing/inventory/rpt/src/inventory/reports.pyÚ_write_cell_if_value_providedsz8CreateReportCommandHandler._write_cell_if_value_provided)Ú inventoryÚreturncCs”ttƒ}tj dd¡}||}ttj dt¡ƒ}t dt |ƒ›d|›d|›¡|D]}|  |d||j ¡|  |d||j ¡|  |d ||j ¡|  |d ||j¡|  |d ||j¡|  |d ||j¡|  |d ||j¡|  |d||j¡|  |d||j¡|  |d||j¡|  |d||j¡|  |d||j¡|  |d||j¡|  |d||j¡|  |d||j¡|d7}qT| t¡t dt›¡ttƒS)NZREPORT_WORKSHEET_NAMEZ InventoryZ+REPORT_WORKSHEET_FIRST_WRITEABLE_ROW_NUMBERzwriting z rows into worksheet z starting at row éééééééé é é éééééz completed saving inventory into )rÚ_workbook_template_file_nameÚosÚenvironÚgetÚintÚ3DEFAULT_REPORT_WORKSHEET_FIRST_WRITEABLE_ROW_NUMBERÚ_loggerÚinfoÚlenrÚ unique_idÚ ip_addressÚ is_virtualÚ is_publicÚdns_nameÚ mac_addressÚauthenticated_scan_plannedÚbaseline_configÚ asset_typeÚhardware_modelÚsoftware_vendorÚsoftware_product_nameÚ network_idÚownerÚsaveÚ_workbook_output_file_pathÚstr)rrZworkbookZreportWorksheetNameZreportWorksheetZ rowNumberZ inventory_rowrrrÚexecutes2    z"CreateReportCommandHandler.executeN) Ú__name__Ú __module__Ú __qualname__rr)r>rrrr?rrrrr sr c@s.eZdZe d¡fdd„Zeedœdd„ZdS)ÚDeliverReportCommandHandlerÚs3cCs ||_dS)N)Ú _s3_client)rÚ s3_clientrrrÚ__init__<sz$DeliverReportCommandHandler.__init__)Úreport_file_namerc CsŽtjd}tjd}tj |tj›dt ¡ d¡›d¡}t   d|›d|›d|›d ¡t |d ƒ}|j j |||d t   d ¡d |›d|›S)NÚREPORT_TARGET_BUCKET_PATHÚREPORT_TARGET_BUCKET_NAMEú-z%Y-%m-%d-%H-%M-%Sz.xlsxzuploading file 'z ' to bucket 'z ' with key 'ú'Úrb)ÚBucketÚKeyÚBodyzcompleted file uploadzhttps://z.s3.amazonaws.com/)r&r'ÚpathÚjoinr=ÚstemrÚnowÚstrftimer+r,ÚopenrEÚ put_object)rrHÚ target_pathZ target_bucketZ report_s3_keyZ object_datarrrr??s  &  z#DeliverReportCommandHandler.executeN)r@rArBÚboto3ÚclientrGr>r?rrrrrC;srC)rÚloggingÚpathlibrr&Úos.pathÚtypingrrYZopenpyxlrZopenpyxl.worksheet.worksheetrÚinventory.mappersrÚ getLoggerr+ÚsetLevelr'r(ÚINFOrQÚdirnameÚ__file__Z_current_dir_namerRr%r=r*r rCrrrrÚs        &