def description(self): warning = '' dependent_items = '' if not self['status'] == 'will-be-removed': force_install_after_date = self.get('force_install_after_date') if force_install_after_date: # insert installation deadline into description try: local_date = munki.discardTimeZoneFromDate( force_install_after_date) except munki.BadDateError: # some issue with the stored date pass else: date_str = munki.stringFromDate(local_date) forced_date_text = NSLocalizedString( u"This item must be installed by %s", u"Forced Date warning") warning = ('<span class="warning">' + forced_date_text % date_str + '</span><br><br>') if self.get('dependent_items'): dependent_items = self.dependency_description() return warning + dependent_items + self['raw_description']
def build_updatedetail_page(identifier): '''Build detail page for a non-optional update''' items = MunkiItems.getUpdateList() page_name = u'updatedetail-%s.html' % identifier name, sep, version = identifier.partition('--version-') for item in items: if item['name'] == name and item.get('version_to_install', '') == version: page = MunkiItems.UpdateItem(item) escapeAndQuoteCommonFields(page) addDetailSidebarLabels(page) force_install_after_date = item.get('force_install_after_date') if force_install_after_date: try: local_date = munki.discardTimeZoneFromDate( force_install_after_date) date_str = munki.shortRelativeStringFromDate( local_date) page['dueLabel'] += u' ' page['short_due_date'] = date_str except munki.BadDateError: # some issue with the stored date msclog.debug_log('Problem with force_install_after_date for %s' % identifier) page['dueLabel'] = u'' page['short_due_date'] = u'' else: page['dueLabel'] = u'' page['short_due_date'] = u'' footer = get_template('footer_template.html', raw=True) generate_page(page_name, 'updatedetail_template.html', page, footer=footer) return # if we get here we didn't find any item matching identifier msclog.debug_log('No update detail found for %s' % identifier) build_item_not_found_page(page_name)
def build_updatedetail_page(identifier): '''Build detail page for a non-optional update''' items = MunkiItems.getUpdateList() page_name = u'updatedetail-%s.html' % identifier name, sep, version = identifier.partition('--version-') for item in items: if item['name'] == name and item['version_to_install'] == version: page = MunkiItems.UpdateItem(item) addDetailSidebarLabels(page) force_install_after_date = item.get('force_install_after_date') if force_install_after_date: local_date = munki.discardTimeZoneFromDate( force_install_after_date) date_str = munki.shortRelativeStringFromDate(local_date) page['dueLabel'] += u' ' page['short_due_date'] = date_str else: page['dueLabel'] = u'' page['short_due_date'] = u'' footer = get_template('footer_template.html', raw=True) generate_page(page_name, 'updatedetail_template.html', page, footer=footer) return # if we get here we didn't find any item matching identifier msclog.debug_log('No update detail found for %s' % item_name) build_item_not_found_page(page_name)
def getAvailableUpdates(self): updatelist = [] installinfo = munki.getInstallInfo() if installinfo: updatelist = installinfo.get("managed_installs", []) for update in updatelist: force_install_after_date = update.get('force_install_after_date') if force_install_after_date: # insert installation deadline into description local_date = munki.discardTimeZoneFromDate(force_install_after_date) date_str = munki.stringFromDate(local_date) forced_date_text = NSLocalizedString(u"This item must be installed by ", None) description = update["description"] # prepend deadline info to description. This will fail if the description is HTML... update["description"] = forced_date_text + date_str + "\n\n" + description if installinfo.get("removals"): removallist = installinfo.get("removals") restartNeeded = False showRemovalDetail = munki.getRemovalDetailPrefs() for item in removallist: if item.get("RestartAction") == "RequireRestart" or item.get("RestartAction") == "RecommendRestart": restartNeeded = True if showRemovalDetail: item["display_name"] = ((item.get("display_name") or item.get("name", "")) + NSLocalizedString(u" (will be removed)", None)) item["description"] = NSLocalizedString(u"This item will be removed.", None) updatelist.append(item) if not showRemovalDetail: row = {} row["display_name"] = NSLocalizedString(u"Software removals", None) row["version"] = "" row["description"] = NSLocalizedString(u"Scheduled removal of managed software.", None) if restartNeeded: row["RestartAction"] = "RequireRestart" updatelist.append(row) if updatelist: self._listofupdates = updatelist self.enableUpdateNowBtn_(YES) #self.performSelector_withObject_afterDelay_("enableUpdateNowBtn:", YES, 4) self.getOptionalInstalls() else: appleupdates = munki.getAppleUpdates() if appleupdates: munki.log("MSU", "appleupdates") self._listofupdates = appleupdates.get("AppleUpdates", []) self.update_view_controller.updateNowBtn.setEnabled_(YES) self.update_view_controller.optionalSoftwareBtn.setHidden_(YES) else: self.update_view_controller.updateNowBtn.setEnabled_(NO) self.getOptionalInstalls()
def getAvailableUpdates(self): updatelist = [] installinfo = munki.getInstallInfo() if installinfo: updatelist = installinfo.get("managed_installs", []) for update in updatelist: force_install_after_date = update.get( 'force_install_after_date') if force_install_after_date: # insert installation deadline into description local_date = munki.discardTimeZoneFromDate( force_install_after_date) date_str = munki.stringFromDate(local_date) forced_date_text = NSLocalizedString( u"This item must be installed by ", None) description = update["description"] # prepend deadline info to description. This will fail if the description is HTML... update[ "description"] = forced_date_text + date_str + "\n\n" + description if installinfo.get("removals"): removallist = installinfo.get("removals") restartNeeded = False showRemovalDetail = munki.getRemovalDetailPrefs() for item in removallist: if item.get( "RestartAction") == "RequireRestart" or item.get( "RestartAction") == "RecommendRestart": restartNeeded = True if showRemovalDetail: item["display_name"] = ( (item.get("display_name") or item.get("name", "")) + NSLocalizedString(u" (will be removed)", None)) item["description"] = NSLocalizedString( u"This item will be removed.", None) updatelist.append(item) if not showRemovalDetail: row = {} row["display_name"] = NSLocalizedString( u"Software removals", None) row["version"] = "" row["description"] = NSLocalizedString( u"Scheduled removal of managed software.", None) if restartNeeded: row["RestartAction"] = "RequireRestart" updatelist.append(row) if updatelist: self._sortUpdateList(updatelist) self._listofupdates = updatelist self.enableUpdateNowBtn_(YES) #self.performSelector_withObject_afterDelay_("enableUpdateNowBtn:", YES, 4) self.getOptionalInstalls() else: appleupdates = munki.getAppleUpdates() if appleupdates: munki.log("MSU", "appleupdates") self._listofupdates = appleupdates.get("AppleUpdates", []) self.update_view_controller.updateNowBtn.setEnabled_(YES) self.update_view_controller.optionalSoftwareBtn.setHidden_(YES) else: self._listofupdates = [] self.update_view_controller.updateNowBtn.setEnabled_(NO) self.getOptionalInstalls()