Exemple #1
0
 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})
Exemple #2
0
    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,
                })
Exemple #3
0
 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
             })
Exemple #4
0
 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,
         })
Exemple #5
0
    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)
Exemple #6
0
    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)