示例#1
0
 def save_edit(self, builds, notes, expiration=None, **kw):
     log.debug(repr(locals()))
     if len(builds) > 1:
         flash('Unable to add builds to an existing override')
         raise redirect('/override')
     builds = builds[0]
     if expiration:
         if datetime.utcnow() > expiration:
             flash('Cannot set an expiration in the past')
             if request_format() == 'json': return dict()
             raise redirect('/override/edit?build=' + builds)
     try:
         override = BuildRootOverride.byBuild(builds)
     except SQLObjectNotFound:
         flash('Cannot find override to edit %r' % builds)
         raise redirect('/override')
     override.notes = notes
     override.expiration = expiration
     if override.date_expired:
         log.debug('Retagging expired override: %s' % override.build)
         override.date_expired = None
         override.tag()
     flash('%s successfully edited' % builds)
     if request_format() == 'json': return override.__json__()
     raise redirect('/override')
示例#2
0
 def save_edit(self, builds, notes, expiration=None, **kw):
     log.debug(repr(locals()))
     if len(builds) > 1:
         flash("Unable to add builds to an existing override")
         raise redirect("/override")
     builds = builds[0]
     if expiration:
         if datetime.utcnow() > expiration:
             flash("Cannot set an expiration in the past")
             if request_format() == "json":
                 return dict()
             raise redirect("/override/edit?build=" + builds)
     try:
         override = BuildRootOverride.byBuild(builds)
     except SQLObjectNotFound:
         flash("Cannot find override to edit %r" % builds)
         raise redirect("/override")
     override.notes = notes
     override.expiration = expiration
     if override.date_expired:
         log.debug("Retagging expired override: %s" % override.build)
         override.date_expired = None
         override.tag()
     flash("%s successfully edited" % builds)
     if request_format() == "json":
         return override.__json__()
     raise redirect("/override")
示例#3
0
 def expire(self, build, *args, **kw):
     """ Expire a given override """
     override = BuildRootOverride.byBuild(build)
     if override.date_expired:
         flash('Override %s already expired!' % build)
         if request_format() == 'json': return dict()
         raise redirect('/override')
     override.date_expired = datetime.utcnow()
     try:
         override.untag()
     except Exception, e:
         log.error(str(e))
         flash(str(e))
         raise redirect('/override')
示例#4
0
 def expire(self, build, *args, **kw):
     """ Expire a given override """
     override = BuildRootOverride.byBuild(build)
     if override.date_expired:
         flash('Override %s already expired!' % build)
         if request_format() == 'json': return dict()
         raise redirect('/override')
     override.date_expired = datetime.utcnow()
     try:
         override.untag()
     except Exception, e:
         log.error(str(e))
         flash(str(e))
         raise redirect('/override')
示例#5
0
 def edit(self, build):
     """ Edit an override """
     try:
         override = BuildRootOverride.byBuild(build)
     except SQLObjectNotFound:
         flash("Cannot find override %r" % build)
         raise redirect("/override")
     values = {
         "builds": {"text": override.build, "hidden": override.build},
         "expiration": override.expiration,
         "notes": override.notes,
         "edited": override.build,
     }
     if override.date_expired:
         flash("This override is EXPIRED. Editing it will re-enable it")
     return dict(
         form=override_form, values=values, action=url("/override/save_edit"), title="Edit Buildroot Override"
     )
示例#6
0
 def edit(self, build):
     """ Edit an override """
     try:
         override = BuildRootOverride.byBuild(build)
     except SQLObjectNotFound:
         flash('Cannot find override %r' % build)
         raise redirect('/override')
     values = {
             'builds': {'text': override.build, 'hidden': override.build},
             'expiration': override.expiration,
             'notes': override.notes,
             'edited': override.build,
     }
     if override.date_expired:
         flash('This override is EXPIRED. Editing it will re-enable it')
     return dict(form=override_form, values=values,
                 action=url("/override/save_edit"),
                 title='Edit Buildroot Override')
示例#7
0
 def expire(self, build, *args, **kw):
     """ Expire a given override """
     override = BuildRootOverride.byBuild(build)
     if identity.current.user_name != override.submitter and "releng" not in identity.current.groups:
         flash("Only the submitter or a releng memeber can " + "expire this buildroot override")
         if request_format() == "json":
             return dict()
         raise redirect("/override")
     if override.date_expired:
         flash("Override %s already expired!" % build)
         if request_format() == "json":
             return dict()
         raise redirect("/override")
     override.date_expired = datetime.utcnow()
     try:
         override.untag()
     except Exception, e:
         log.error(str(e))
         flash(str(e))
         raise redirect("/override")
示例#8
0
文件: overrides.py 项目: tyll/bodhi
 def expire(self, build, *args, **kw):
     """ Expire a given override """
     override = BuildRootOverride.byBuild(build)
     if identity.current.user_name != override.submitter and \
        'releng' not in identity.current.groups:
         flash('Only the submitter or a releng memeber can ' +
               'expire this buildroot override')
         if request_format() == 'json': return dict()
         raise redirect('/override')
     if override.date_expired:
         flash('Override %s already expired!' % build)
         if request_format() == 'json': return dict()
         raise redirect('/override')
     override.date_expired = datetime.utcnow()
     try:
         override.untag()
     except Exception, e:
         log.error(str(e))
         flash(str(e))
         raise redirect('/override')
示例#9
0
 def save_edit_cli(self, builds, notes, expiration=None, **kw):
     log.debug(repr(locals()))
     if expiration:
         if datetime.utcnow() > expiration:
             flash('Cannot set an expiration in the past')
             if request_format() == 'json': return dict()
             raise redirect('/override/edit?build=' + builds)
     try:
         override = BuildRootOverride.byBuild(builds)
     except SQLObjectNotFound:
         flash('Cannot find override to edit %r' % builds)
         raise redirect('/override')
     override.notes = notes
     override.expiration = expiration
     if override.date_expired:
         log.debug('Retagging expired override: %s' % override.build)
         override.date_expired = None
         override.tag()
     flash('%s successfully edited' % builds)
     if request_format() == 'json': return override.__json__()
     raise redirect('/override')
示例#10
0
 def edit(self, build):
     """ Edit an override """
     try:
         override = BuildRootOverride.byBuild(build)
     except SQLObjectNotFound:
         flash('Cannot find override %r' % build)
         raise redirect('/override')
     values = {
         'builds': {
             'text': override.build,
             'hidden': override.build
         },
         'expiration': override.expiration,
         'notes': override.notes,
         'edited': override.build,
     }
     if override.date_expired:
         flash('This override is EXPIRED. Editing it will re-enable it')
     return dict(form=override_form,
                 values=values,
                 action=url("/override/save_edit"),
                 title='Edit Buildroot Override')
示例#11
0
文件: pickledb.py 项目: bitlord/bodhi
def load_db():
    print "\nLoading pickled database %s" % sys.argv[2]
    db = file(sys.argv[2], 'r')
    data = pickle.load(db)

    # Load up all of the overrides
    for override in data.get('overrides', []):
        try:
            BuildRootOverride.byBuild(override['build'])
        except SQLObjectNotFound:
            BuildRootOverride(**override)

    # Legacy format was just a list of update dictionaries
    # Now we'll pull things out into an organized dictionary:
    # {'updates': [], 'releases': []}
    if isinstance(data, dict):
        for release in data['releases']:
            try:
                Release.byName(release['name'])
            except SQLObjectNotFound:
                Release(**release)
        data = data['updates']

    progress = ProgressBar(maxValue=len(data))

    for u in data:
        try:
            release = Release.byName(u['release'][0])
        except SQLObjectNotFound:
            release = Release(name=u['release'][0], long_name=u['release'][1],
                              id_prefix=u['release'][2], dist_tag=u['release'][3])

        ## Backwards compatbility
        request = u['request']
        if u['request'] == 'move':
            request = 'stable'
        elif u['request'] == 'push':
            request = 'testing'
        elif u['request'] == 'unpush':
            request = 'obsolete'
        if u['approved'] in (True, False):
            u['approved'] = None
        if 'update_id' in u:
            u['updateid'] = u['update_id']
        if not 'date_modified' in u:
            u['date_modified'] = None

        try:
            update = PackageUpdate.byTitle(u['title'])
        except SQLObjectNotFound:
            update = PackageUpdate(title=u['title'],
                                   date_submitted=u['date_submitted'],
                                   date_pushed=u['date_pushed'],
                                   date_modified=u['date_modified'],
                                   release=release,
                                   submitter=u['submitter'],
                                   updateid=u['updateid'],
                                   type=u['type'],
                                   status=u['status'],
                                   pushed=u['pushed'],
                                   notes=u['notes'],
                                   karma=u['karma'],
                                   request=request,
                                   approved=u['approved'])

        ## Create Package and PackageBuild objects
        for pkg, nvr in u['builds']:
            try:
                package = Package.byName(pkg)
            except SQLObjectNotFound:
                package = Package(name=pkg)
            try:
                build = PackageBuild.byNvr(nvr)
            except SQLObjectNotFound:
                build = PackageBuild(nvr=nvr, package=package)
            update.addPackageBuild(build)

        ## Create all Bugzilla objects for this update
        for bug_num, bug_title, security, parent in u['bugs']:
            try:
                bug = Bugzilla.byBz_id(bug_num)
            except SQLObjectNotFound:
                bug = Bugzilla(bz_id=bug_num, security=security, parent=parent)
                bug.title = bug_title
            update.addBugzilla(bug)

        ## Create all CVE objects for this update
        for cve_id in u['cves']:
            try:
                cve = CVE.byCve_id(cve_id)
            except SQLObjectNotFound:
                cve = CVE(cve_id=cve_id)
            update.addCVE(cve)
        for timestamp, author, text, karma, anonymous in u['comments']:
            comment = Comment(timestamp=timestamp, author=author, text=text,
                              karma=karma, update=update, anonymous=anonymous)

        progress()
示例#12
0
def load_db():
    print "\nLoading pickled database %s" % sys.argv[2]
    db = file(sys.argv[2], 'r')
    data = pickle.load(db)

    # Load up all of the overrides
    for override in data.get('overrides', []):
        try:
            BuildRootOverride.byBuild(override['build'])
        except SQLObjectNotFound:
            BuildRootOverride(**override)

    # Legacy format was just a list of update dictionaries
    # Now we'll pull things out into an organized dictionary:
    # {'updates': [], 'releases': []}
    if isinstance(data, dict):
        for release in data['releases']:
            try:
                Release.byName(release['name'])
            except SQLObjectNotFound:
                Release(**release)
        data = data['updates']

    progress = ProgressBar(maxValue=len(data))

    for u in data:
        try:
            release = Release.byName(u['release'][0])
        except SQLObjectNotFound:
            release = Release(name=u['release'][0],
                              long_name=u['release'][1],
                              id_prefix=u['release'][2],
                              dist_tag=u['release'][3])

        ## Backwards compatbility
        request = u['request']
        if u['request'] == 'move':
            request = 'stable'
        elif u['request'] == 'push':
            request = 'testing'
        elif u['request'] == 'unpush':
            request = 'obsolete'
        if u['approved'] in (True, False):
            u['approved'] = None
        if 'update_id' in u:
            u['updateid'] = u['update_id']
        if not 'date_modified' in u:
            u['date_modified'] = None

        try:
            update = PackageUpdate.byTitle(u['title'])
        except SQLObjectNotFound:
            update = PackageUpdate(title=u['title'],
                                   date_submitted=u['date_submitted'],
                                   date_pushed=u['date_pushed'],
                                   date_modified=u['date_modified'],
                                   release=release,
                                   submitter=u['submitter'],
                                   updateid=u['updateid'],
                                   type=u['type'],
                                   status=u['status'],
                                   pushed=u['pushed'],
                                   notes=u['notes'],
                                   karma=u['karma'],
                                   request=request,
                                   approved=u['approved'])

        ## Create Package and PackageBuild objects
        for pkg, nvr in u['builds']:
            try:
                package = Package.byName(pkg)
            except SQLObjectNotFound:
                package = Package(name=pkg)
            try:
                build = PackageBuild.byNvr(nvr)
            except SQLObjectNotFound:
                build = PackageBuild(nvr=nvr, package=package)
            update.addPackageBuild(build)

        ## Create all Bugzilla objects for this update
        for bug_num, bug_title, security, parent in u['bugs']:
            try:
                bug = Bugzilla.byBz_id(bug_num)
            except SQLObjectNotFound:
                bug = Bugzilla(bz_id=bug_num, security=security, parent=parent)
                bug.title = bug_title
            update.addBugzilla(bug)

        ## Create all CVE objects for this update
        for cve_id in u['cves']:
            try:
                cve = CVE.byCve_id(cve_id)
            except SQLObjectNotFound:
                cve = CVE(cve_id=cve_id)
            update.addCVE(cve)
        for timestamp, author, text, karma, anonymous in u['comments']:
            comment = Comment(timestamp=timestamp,
                              author=author,
                              text=text,
                              karma=karma,
                              update=update,
                              anonymous=anonymous)

        progress()