mς ώΜͺJc@sJdklZdkTdkTdddddgZdefd„ƒYZd S( (sexpose(t*tidtuuidtpub_uuidt last_modifiedtbogomipstReportscBs=tZeƒd„ƒZeddƒd„ƒZeddƒd„ƒZeddƒd„ƒZedd ƒd „ƒZedd ƒd d „ƒZeddƒd d„ƒZ eddƒd„ƒZ eddƒd„ƒZ eddƒd„ƒZ eddƒd„ƒZ eddƒd„ƒZedƒd„ƒZRS(NcCs |iƒS(N(tselftsearch(R((t6/usr/share/smolt/smoon/hardware/controllers/reports.pytindex sttemplates hardware.templates.report_recentcCsΫttitigtitiƒtddƒjƒittiƒƒi dƒi ƒi ƒ}tt iit iigt iitiƒtddƒjƒitt iiƒƒi dƒi ƒi ƒ}td|d|ƒS(s( Shows recently added hosts and devices tdaysiZii2trecent_pub_uuidtrecent_devicesN(tselecttHostRRtdatettodayt timedeltatorder_bytdesctlimittexecutetfetchallR tcomputer_logical_devicestct descriptiont date_addedRtdict(RR R((R trecentsLR s&hardware.templates.report_host_ratingscCs‚ttititititiƒgtidjƒitiƒit titiƒƒƒi dƒi ƒi ƒ}td|ƒS(s" Return basic ratings information ii2t host_ratingsN(RRtsystemtvendortratingtfunctcounttgroup_byRRRRRRR(RR((R R s'N s(hardware.templates.report_device_ratingscCsΎttitititiƒidƒgtidjƒititiƒit dƒƒi dƒi dƒ}tt i|ii|iigt i|iijƒiƒiƒ}td|ƒS(s" Return basic ratings information tcntiiτthtdevice_ratingsN(RtHostLinkt device_idR"R#R$tlabelR%RRRtaliasR'tComputerLogicalDeviceRRR&RRRR(R(RR(R'((R R(/s *EBs)hardware.templates.report_search_profilescCstƒS(N(R(R((R tsearch_profiles9ss'hardware.templates.report_view_profilesic Osΐttititititiƒgtti|jt tii d|ƒtii d|ƒƒƒƒi tititiƒi ttitiƒƒƒidƒiƒiƒ}td|ƒS(Ns%%%s%%iτtfound(RRR R!R"R#R$tand_t not_ratedtor_tliketprofileR%RRRRRR/R(RR4R1targstkeysR/((R t view_profiles=s ';Bs&hardware.templates.report_view_profilec Os1ttititititiƒgtti|jt tii d|ƒtii d|ƒƒƒƒi tititiƒi ttitiƒƒƒidƒiƒiƒ}ttitigttidjt tii d|ƒtii d|ƒƒƒƒidƒiƒiƒ}td|d|ƒS(Ns%%%s%%iτtR/t pub_uuids(RRR R!R"R#R$R0R1R2R3R4R%RRRRRR/RR9R(RR4R1R5R6R9R/((R t view_profileGs ';Bks(hardware.templates.report_search_devicescCstƒS(N(R(R((R tsearch_devicesSss&hardware.templates.report_view_devicescOs<|d}tit_tid|ƒiƒ}td|ƒS(Ntdevices„SELECT host_links.rating, count(host_links.rating) AS cnt, d.description, d.vendor_id, d.device_id, d.subsys_vendor_id, d.subsys_device_id FROM host_links use index(rating), (SELECT device.id AS id, device.vendor_id AS vendor_id, device.device_id AS device_id, device.subsys_vendor_id AS subsys_vendor_id, device.subsys_device_id AS subsys_device_id, device.description AS description FROM device WHERE device.description like '%%%%%s%%%%' LIMIT 500) AS d WHERE host_links.device_id = d.id and host_links.rating != 0 GROUP BY host_links.rating, d.description, d.vendor_id, d.device_id, d.subsys_vendor_id, d.subsys_device_id ORDER BY cnt DESC;R/( R6R<tmetadatatbindtsessionRRR/R(RR5R6R<R/((R t view_devicesWs  s%hardware.templates.report_view_devicecOsγtit_tid|ƒiƒ}tti i gti i |jƒi dƒ}ttigti|i i jƒidƒi dƒ}ttititigti |i ijƒiƒiƒ}|}td|d|d|ƒS(NsySELECT host_links.rating, count(host_links.rating) AS cnt, d.description, d.vendor_id, d.device_id, d.subsys_vendor_id, d.subsys_device_id FROM host_links use index(rating), (SELECT device.id AS id, device.vendor_id AS vendor_id, device.device_id AS device_id, device.subsys_vendor_id AS subsys_vendor_id, device.subsys_device_id AS subsys_device_id, device.description AS description FROM device WHERE device.description = '%s' LIMIT 500) AS d WHERE host_links.device_id = d.id and host_links.rating != 0 GROUP BY host_links.rating, d.description, d.vendor_id, d.device_id, d.subsys_vendor_id, d.subsys_device_id ORDER BY cnt DESC;tdiθthlR/tprofilesR<(R=R>R?RR<RR/RRRRRR,RAR)t host_link_idR*RRBRRR R!RCR5R(RR<R5R6RARCRBR/((R t view_devicecs  *<s hardware.templates.report_searchcCsFg}tiD]}||iq~}td„|ƒ}td|ƒS(NcCs |tjS(N(txt hosts_ban(RF((R tstfields(t_[1]thostsRtcoltnamet host_colstfilterR(RRNRJRL((R R|s'shardware.templates.report_viewc sΧ|d}|d} |d}tti|ƒ‰| GH‡d†} t t t | | ƒƒ}|GHt tg|ƒidƒ} tdt| i|ƒdtƒ} t| ƒ}t| ƒ}td|d |d |d |d | ƒS( Ntrestrict_fieldt table_valuest count_fieldcs ˆ|jS(N(t limit_colta(RT(RS(R tcmp_up‰sttmp_hostttmpRtresultsttotalRMtrestrictt restrict_vals(R6RZR[tto_counttgetattrRKRRSRUtreduceR2tmaptrestrict_clauseRR,t temp_hosttsimple_counted_viewtTruetviewt just_selecttdatat just_countRYR( RR5R6RZR`RYR\RSRfRUR[RaRd((RSR Rd‚s       tjsoncOs{|d}tti|ƒ}tti|ƒgƒi |ƒi ƒi ƒ}g}|D]}||dqT~}td|ƒS(Ntcol_nameitvalues(R6RiR]RKRRLRR#tdistinctRRRtvalsRJtvalR(RR5R6RmRiRJRlRL((R tvalues_for_column•s  -%(t__name__t __module__texposeR RRR(R.R7R:R;R@RERRdRn(((R R s    N(t turbogearsRqthardware.modeltsqlalchemy.sqlRGtobjectR(RqRRG((R t?s