def _DisplayLogs(self): """Displays all models.AdminPackageLog entities.""" key_id = self.request.get('plist') if key_id: try: key_id = int(key_id) except ValueError: self.error(404) return log = models.AdminPackageLog.get_by_id(key_id) if self.request.get('format') == 'xml': self.response.headers['Content-Type'] = 'text/xml; charset=utf-8' self.response.out.write(log.plist) else: time = datetime.datetime.strftime(log.mtime, '%Y-%m-%d %H:%M:%S') title = 'plist for Package Log <b>%s - %s</b>' % (log.filename, time) raw_xml = '/admin/packages/logs?plist=%d&format=xml' % key_id self.Render('plist.html', {'plist_type': 'package_log', 'xml': admin.XmlToHtml(log.plist.GetXml()), 'title': title, 'raw_xml_link': raw_xml, }) else: filename = self.request.get('filename') query = models.AdminPackageLog.all() if filename: query.filter('filename =', filename) query.order('-mtime') logs = self.Paginate(query, DEFAULT_PACKAGE_LOG_FETCH_LIMIT) self.Render('package_logs.html', {'logs': logs, 'report_type': 'package_logs', 'filename': filename})
def _DisplayHostManifest(self, uuid): """Display live manifest view for a host. Args: uuid: str, computer uuid to display """ if not uuid: self.response.set_status(404) return manifest = common.GetComputerManifest(uuid=uuid, packagemap=True) contents = manifest['plist'].GetContents() manifest_str = manifest['plist'].GetXml() if self.request.get('format') == 'xml': self.response.headers['Content-Type'] = 'text/xml; charset=utf-8' self.response.out.write(manifest_str) else: manifest_html = admin.XmlToHtml(manifest_str) self.Render( 'plist.html', { 'plist_type': 'host_manifest', 'title': 'Host Manifest: %s' % uuid, 'xml': manifest_html, 'raw_xml_link': '/admin/hostmanifest/%s?format=xml' % uuid, })
def _DisplayLogs(self): """Displays all models.AdminPackageLog entities.""" key_id = self.request.get('plist') if key_id: try: key_id = int(key_id) except ValueError: self.error(httplib.NOT_FOUND) return log = self.LOGGING_MODEL.get_by_id(key_id) if self.request.get('format') == 'xml': self.response.headers[ 'Content-Type'] = 'text/xml; charset=utf-8' self.response.out.write(log.plist) else: time = datetime.datetime.strftime(log.mtime, '%Y-%m-%d %H:%M:%S') title = 'plist for Package Log <b>%s - %s</b>' % (log.filename, time) raw_xml = '/admin/packages/logs?plist=%d&format=xml' % key_id self.Render( 'plist.html', { 'plist_type': 'package_log', 'xml': admin.XmlToHtml(log.plist.GetXml()), 'title': title, 'raw_xml_link': raw_xml, }) else: filename = self.request.get('filename') query = self.LOGGING_MODEL.all() if filename: query.filter('filename =', filename) query.order('-mtime') logs = self.Paginate(query, DEFAULT_PACKAGE_LOG_FETCH_LIMIT) formatted_logs = [] for log in logs: formatted_log = {} formatted_log['data'] = log if (hasattr(log, 'proposed_catalogs') and hasattr(log, 'proposed_manifest')): formatted_log['catalogs'] = common.util.MakeTrackMatrix( log.catalogs, log.proposed_catalogs) formatted_log['manifests'] = common.util.MakeTrackMatrix( log.manifests, log.proposed_manifests) else: formatted_log['catalogs'] = common.util.MakeTrackMatrix( log.catalogs) formatted_log['manifests'] = common.util.MakeTrackMatrix( log.manifests) formatted_logs.append(formatted_log) self.Render( 'package_logs.html', { 'logs': formatted_logs, 'report_type': self.LOG_REPORT_TYPE, 'filename': filename })
def _DisplayManifest(self, track): """Displays Manifests in a template.""" m = models.Manifest.get_by_key_name(track) self.Render( 'plist.html', { 'plist_type': 'manifests', 'xml': admin.XmlToHtml(m.plist.GetXml()), 'title': track + ' manifest', 'report_type': 'manifest_%s' % track, 'raw_xml_link': '/manifests/track=' + track, })
def get(self, filename=None): """GET handler.""" if not self.IsAdminUser() or not filename: self.error(404) return filename = urllib.unquote(filename) p = models.PackageInfo.get_by_key_name(filename) if not p: self.error(404) self.response.out.write('PackageInfo not found: %s' % filename) return p.name = p.plist['name'] p.display_name = p.plist.get('display_name', '') p.unattended = p.plist.get('unattended_install') p.version = p.plist['version'] force_install_after_date = p.plist.get('force_install_after_date', None) if force_install_after_date: p.force_install_after_date = datetime.datetime.strftime( force_install_after_date, '%Y-%m-%d') p.force_install_after_date_time = datetime.datetime.strftime( force_install_after_date, '%H:%M') if self.request.get('plist_xml'): self.Render( 'plist.html', { 'report_type': 'packages', 'plist_type': 'package_plist', 'xml': admin.XmlToHtml(p.plist.GetXml()), 'title': 'Plist for %s' % p.name, 'raw_xml_link': '/pkgsinfo/%s' % filename, }) else: manifests_and_catalogs_unlocked = ( p.blob_info or p.plist.get('PackageCompleteURL')) data = { 'pkg': p, 'report_type': 'package', 'tracks': common.TRACKS, 'install_types': common.INSTALL_TYPES, 'manifest_mod_groups': common.MANIFEST_MOD_GROUPS, 'pkg_safe_to_modify': p.IsSafeToModify(), 'editxml': self.request.get('editxml'), 'manifests_and_catalogs_unlocked': manifests_and_catalogs_unlocked } self.Render('package.html', data)
def get(self, filename=None): """GET handler.""" if not filename: self.error(httplib.NOT_FOUND) return elif not auth.HasPermission(auth.VIEW_PACKAGES): self.error(httplib.FORBIDDEN) return filename = urllib.unquote(filename) p = models.PackageInfo.get_by_key_name(filename) if not p: self.error(httplib.NOT_FOUND) self.Render('error.html', {'message': 'PackageInfo not found: %s' % filename}) return p.name = p.plist['name'] p.display_name = p.plist.get('display_name', '') p.unattended = p.plist.get('unattended_install') p.unattended_uninstall = p.plist.get('unattended_uninstall') p.version = p.plist['version'] force_install_after_date = p.plist.get('force_install_after_date', None) if force_install_after_date: p.force_install_after_date = datetime.datetime.strftime( force_install_after_date, '%Y-%m-%d') p.force_install_after_date_time = datetime.datetime.strftime( force_install_after_date, '%H:%M') if self.request.referrer and self.request.referrer.endswith( 'proposals'): return_address = '/admin/proposals' return_title = 'proposals' else: return_address = '/admin/packages' return_title = 'package' if self.request.get('plist_xml'): self.Render( 'plist.html', { 'report_type': 'packages', 'plist_type': 'package_plist', 'xml': admin.XmlToHtml(p.plist.GetXml()), 'title': 'Plist for %s' % p.name, 'raw_xml_link': '/pkgsinfo/%s' % filename, }) else: categories = ([ x.strip() for x in settings.LIST_OF_CATEGORIES.split(',') if x ]) manifests_and_catalogs_unlocked = ( p.blob_info or p.plist.get('PackageCompleteURL')) data = { 'pkg': p, 'report_type': 'package', 'tracks': common.TRACKS, 'install_types': common.INSTALL_TYPES, 'manifest_mod_groups': common.MANIFEST_MOD_GROUPS, 'approval_required': settings.APPROVAL_REQUIRED, 'is_admin_user': self.IsAdminUser(), 'is_support_user': auth.IsSupportUser(), 'pkg_safe_to_modify': p.IsSafeToModify(), 'editxml': self.request.get('editxml'), 'manifests_and_catalogs_unlocked': manifests_and_catalogs_unlocked, 'return_address': return_address, 'return_title': return_title, 'categories': categories } self.Render('package.html', data)