Beispiel #1
0
    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']
Beispiel #2
0
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)
Beispiel #3
0
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)
Beispiel #4
0
    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()
Beispiel #5
0
    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()