def UpdatePackageInfoFromPlist(self, create_new=False):
    plist_xml = self.request.get('new_pkginfo_plist').encode('utf-8').strip()
    try:
      pkginfo, log = models.PackageInfo.UpdateFromPlist(
          plist_xml, create_new=create_new)
    except models.PackageInfoUpdateError as e:
      self.error(400)
      self.Render(
          'error.html', {'message': 'PackageInfoUpdateError: %s' % str(e)})
      return
    else:
      if settings.email_on_every_change:
        self.NotifyAdminsOfPackageChangeFromPlist(log)

    self.redirect('/admin/package/%s?msg=PackageInfo saved#package-%s' % (
        pkginfo.filename, pkginfo.filename))
Updates or creates a new PackageInfo entity from plist XML.
dataset/ETHPy150Open google/simian/src/simian/mac/admin/package.py/Package.UpdatePackageInfoFromPlist