Esempio n. 1
0
    def post(self, releaseName):
        table = getReleaseTable(releaseName)
        release = table.query.filter_by(name=releaseName).first()
        form = ReleaseAPIForm()
        if not form.validate(release):
            errors = form.errors
            cef_event('User Input Failed', CEF_INFO, **errors)
            errorsStr = ', '.join("%s" % val[0] for val in errors.values())
            return Response(status=400, response=errorsStr)

        # All of the validation has already been done by the form so we can
        # safely assume that the values we have are valid.
        if form.ready.data is not None:
            log.debug('%s: ready being changed to: %s', releaseName,
                      form.ready.data)
            release.ready = form.ready.data
        if form.complete.data is not None:
            log.debug('%s: complete being changed to: %s', releaseName,
                      form.complete.data)
            release.complete = form.complete.data
        if form.status.data:
            log.debug('%s: status being changed to: %s', releaseName,
                      form.status.data)
            release.status = form.status.data
        if form.enUSPlatforms.data:
            log.debug('%s: enUSPlatforms being changed to: %s', releaseName,
                      form.enUSPlatforms.data)
            release.enUSPlatforms = form.enUSPlatforms.data
        log.debug('%s: shippedAt being changed to: %s', releaseName,
                  form.shippedAt.data)
        release.shippedAt = form.shippedAt.data

        db.session.add(release)
        db.session.commit()
        return Response(status=200)
Esempio n. 2
0
    def post(self, releaseName):
        table = getReleaseTable(releaseName)
        release = table.query.filter_by(name=releaseName).first()
        form = ReleaseAPIForm()
        if not form.validate(release):
            errors = form.errors
            cef_event('User Input Failed', CEF_INFO, **errors)
            errorsStr = ', '.join("%s" % val[0] for val in errors.values())
            return Response(status=400, response=errorsStr)

        # All of the validation has already been done by the form so we can
        # safely assume that the values we have are valid.
        if form.ready.data is not None:
            log.debug('%s: ready being changed to: %s', releaseName, form.ready.data)
            release.ready = form.ready.data
        if form.complete.data is not None:
            log.debug('%s: complete being changed to: %s', releaseName, form.complete.data)
            release.complete = form.complete.data
        if form.status.data:
            log.debug('%s: status being changed to: %s', releaseName, form.status.data)
            release.status = form.status.data
        if form.enUSPlatforms.data:
            log.debug('%s: enUSPlatforms being changed to: %s', releaseName, form.enUSPlatforms.data)
            release.enUSPlatforms = form.enUSPlatforms.data

        db.session.add(release)
        db.session.commit()
        return Response(status=200)
Esempio n. 3
0
    def post(self):
        starter = request.environ.get('REMOTE_USER')

        form = ReleasesForm()
        form.readyReleases.choices = [(r.name, r.name) for r in getReleases(ready=False)]
        # Don't include completed or ready releases, because they aren't allowed to be deleted
        form.deleteReleases.choices = [(r.name, r.name) for r in getReleases(complete=False, ready=False)]
        if not form.validate():
            cef_event('User Input Failed', CEF_WARN, **form.errors)
            return make_response(render_template('releases.html', errors=form.errors, releases=sortedReleases(), form=form), 400)

        for release in form.deleteReleases.data:
            log.debug('%s is being deleted', release)
            table = getReleaseTable(release)
            r = table.query.filter_by(name=release).first()
            db.session.delete(r)
        for release in form.readyReleases.data:
            log.debug('%s is being marked as ready', release)
            table = getReleaseTable(release)
            r = table.query.filter_by(name=release).first()
            r.ready = True
            r.status = 'Pending'
            r.comment = form.comment.data
            r.starter = starter
            db.session.add(r)
        db.session.commit()
        return render_template('releases.html', releases=sortedReleases(), form=form)
Esempio n. 4
0
    def post(self):
        starter = request.environ.get('REMOTE_USER')

        form = ReleasesForm()
        form.readyReleases.choices = [(r.name, r.name) for r in getReleases(ready=False)]
        # Don't include completed or ready releases, because they aren't allowed to be deleted
        form.deleteReleases.choices = [(r.name, r.name) for r in getReleases(complete=False, ready=False)]
        if not form.validate():
            cef_event('User Input Failed', CEF_WARN, **form.errors)
            return make_response(render_template('releases.html', errors=form.errors, releases=sortedReleases(), form=form), 400)

        for release in form.deleteReleases.data:
            log.debug('%s is being deleted', release)
            table = getReleaseTable(release)
            r = table.query.filter_by(name=release).first()
            db.session.delete(r)
        for release in form.readyReleases.data:
            log.debug('%s is being marked as ready', release)
            table = getReleaseTable(release)
            r = table.query.filter_by(name=release).first()
            r.ready = True
            r.status = 'Pending'
            r.comment = form.comment.data
            r.starter = starter
            db.session.add(r)
        db.session.commit()
        return render_template('releases.html', releases=sortedReleases(ready=False), form=form)
Esempio n. 5
0
 def get(self):
     group = request.args.get('group')
     if not group:
         cef_event('User Input Failed', CEF_INFO, group=group)
         return Response(status=400, response="Got unparseable value for group")
     events = [(r.name, r.event_name) for r in getEvents(group)]
     return jsonify({'events': events})
Esempio n. 6
0
    def post(self, releaseName):
        table = getReleaseTable(releaseName)
        release = table.query.filter_by(name=releaseName).first()
        form = ReleaseAPIForm()
        if not form.validate(release):
            errors = form.errors
            cef_event('User Input Failed', CEF_INFO, **errors)
            errorsStr = ', '.join("%s" % val[0] for val in errors.values())
            return Response(status=400, response=errorsStr)

        # All of the validation has already been done by the form so we can
        # safely assume that the values we have are valid.
        if form.ready.data is not None:
            log.debug('%s: ready being changed to: %s', releaseName, form.ready.data)
            release.ready = form.ready.data
        if form.complete.data is not None:
            log.debug('%s: complete being changed to: %s', releaseName, form.complete.data)
            release.complete = form.complete.data
        if form.status.data:
            log.debug('%s: status being changed to: %s', releaseName, form.status.data)
            release.status = form.status.data
        if form.description.data:
            log.debug('%s: description being changed to: %s', releaseName, form.description.data)
            release.description = form.description.data
            log.debug('%s: isSecurityDriven being changed to: %s', releaseName, form.isSecurityDriven.data)
            release.isSecurityDriven = form.isSecurityDriven.data
        else:
            # Don't do when we are updating the desc, it would reset the date
            log.debug('%s: shippedAt being changed to: %s', releaseName, form.shippedAt.data)
            release.shippedAt = form.shippedAt.data

        db.session.add(release)
        db.session.commit()
        return Response(status=200)
Esempio n. 7
0
 def get(self):
     group = request.args.get('group')
     if not group:
         cef_event('User Input Failed', CEF_INFO, group=group)
         return Response(status=400,
                         response="Got unparseable value for group")
     events = [(r.name, r.event_name)
               for r in ReleaseEvents.getEvents(group)]
     return jsonify({'events': events})
Esempio n. 8
0
 def get(self):
     # We can't get request.args to convert directly to a bool because
     # it will convert even if the arg isn't present! In these cases
     # we need to be able to pass along a None, so we must be a bit
     # roundabout here.
     try:
         ready = request.args.get('ready', type=int)
         complete = request.args.get('complete', type=int)
         if ready is not None:
             ready = bool(ready)
         if complete is not None:
             complete = bool(complete)
     except ValueError:
         cef_event('User Input Failed', CEF_INFO, ready=ready, complete=complete)
         return Response(status=400, response="Got unparseable value for ready or complete")
     releases = [r.name for r in getReleases(ready, complete)]
     return jsonify({'releases': releases})
Esempio n. 9
0
 def get(self):
     # We can't get request.args to convert directly to a bool because
     # it will convert even if the arg isn't present! In these cases
     # we need to be able to pass along a None, so we must be a bit
     # roundabout here.
     try:
         ready = request.args.get('ready', type=int)
         complete = request.args.get('complete', type=int)
         if ready is not None:
             ready = bool(ready)
         if complete is not None:
             complete = bool(complete)
     except ValueError:
         cef_event('User Input Failed', CEF_INFO, ready=ready, complete=complete)
         return Response(status=400, response="Got unparseable value for ready or complete")
     releases = [r.name for r in getReleases(ready, complete)]
     return jsonify({'releases': releases})
Esempio n. 10
0
    def post(self, releaseName):
        form = ReleaseEventsAPIForm()

        if not form.validate(releaseName):
            errors = form.errors
            log.error('User Input Failed - {} - ({}, {})'.format(errors.values(),                                                                 releaseName,                                                                 form.event_name.data))
            cef_event('User Input Failed', CEF_INFO, **errors)
            return Response(status=400, response=errors.values())

        # Create a ReleaseEvent object from the request data
        try:
            releaseEventsUpdate = ReleaseEvents.createFromForm(releaseName, form)
        except Exception as e:
            log.error('User Input Failed - {} - ({}, {})'.format(e, releaseName,                                                                 form.event_name.data))
            cef_event('User Input Failed', CEF_ALERT)
            return Response(status=400, response=e)

        # Check if this ReleaseEvent already exists in the ReleaseEvents table
        if db.session.query(ReleaseEvents).\
                      filter(ReleaseEvents.name==releaseEventsUpdate.name,
                             ReleaseEvents.event_name==releaseEventsUpdate.event_name).first():
            msg = 'ReleaseEvents ({}, {}) already exists'.\
                   format(releaseEventsUpdate.name, releaseEventsUpdate.event_name)
            log.error('{}'.format(msg))
            cef_event('User Input Failed', CEF_INFO,
                      ReleaseName=releaseEventsUpdate.name)
            return Response(status=400, response=msg)

        # Add a new ReleaseEvents row to the ReleaseEvents table with new data
        db.session.add(releaseEventsUpdate)
        db.session.commit()
        log.debug('({}, {}) - added to the ReleaseEvents table in the database'.
                  format(releaseEventsUpdate.name, releaseEventsUpdate.event_name))

        return Response(status=200)
Esempio n. 11
0
    def post(self):
        # This is checked for in a before_request hook.
        submitter = request.environ.get('REMOTE_USER')
        # We need copies of all the forms to reprint the page if there's any
        # errors. The form that was actually submitted will get overridden with
        # data later on.
        forms = {
            'fennecForm': FennecReleaseForm(formdata=None),
            'firefoxForm': FirefoxReleaseForm(formdata=None),
            'thunderbirdForm': ThunderbirdReleaseForm(formdata=None)
        }

        for field, value in request.form.items():
            if field.endswith('product'):
                product = value
                break

        try:
            form = getReleaseForm(product)()
        except ValueError:
            cef_event('User Input Failed', CEF_ALERT, ProductName=product)
            return Response(status=400,
                            response="Unknown product name '%s'" % product)
        errors = []
        if not form.validate():
            cef_event('User Input Failed', CEF_INFO, **form.errors)
            for error in form.errors.values():
                errors.extend(error)

        table = getReleaseTable(form.product.data)
        release = table.createFromForm(submitter, form)

        if db.session.query(table).filter(table.name == release.name).first():
            msg = 'Release "%s" already exists' % release.name
            cef_event('User Input Failed', CEF_INFO, ReleaseName=release.name)
            errors.append(msg)
        if errors:
            forms['%sForm' % product] = getReleaseForm(product)()
            return make_response(
                render_template('submit_release.html',
                                errors=errors,
                                selectedProduct=product,
                                **forms), 400)

        db.session.add(release)
        db.session.commit()
        log.debug('%s added to the database', release.name)
        return redirect('releases.html')
Esempio n. 12
0
    def post(self):
        # This is checked for in a before_request hook.
        submitter = request.environ.get('REMOTE_USER')
        # We need copies of all the forms to reprint the page if there's any
        # errors. The form that was actually submitted will get overridden with
        # data later on.
        forms = {
            'fennecForm': FennecReleaseForm(formdata=None),
            'firefoxForm': FirefoxReleaseForm(formdata=None),
            'deveditionForm': DeveditionReleaseForm(formdata=None),
            'thunderbirdForm': ThunderbirdReleaseForm(formdata=None)
        }

        for field, value in request.form.items():
            if field.endswith('product'):
                product = value
                break

        try:
            form = getReleaseForm(product)()
        except ValueError:
            cef_event('User Input Failed', CEF_ALERT, ProductName=product)
            return Response(status=400,
                            response="Unknown product name '%s'" % product)
        errors = []
        if not form.validate():
            cef_event('User Input Failed', CEF_INFO, **form.errors)
            for error in form.errors.values():
                errors.extend(error)

        table = getReleaseTable(form.product.data)
        release = table.createFromForm(submitter, form)

        if db.session.query(table).filter(table.name == release.name).first():
            msg = 'Release "%s" already exists' % release.name
            cef_event('User Input Failed', CEF_INFO, ReleaseName=release.name)
            errors.append(msg)
        if errors:
            forms['%sForm' % product] = getReleaseForm(product)()
            return make_response(
                render_template('submit_release.html', errors=errors,
                                selectedProduct=product, **forms), 400
            )

        db.session.add(release)
        db.session.commit()
        log.debug('%s added to the database', release.name)
        return redirect('releases.html')
Esempio n. 13
0
    def post(self, releaseName):
        form = ReleaseEventsAPIForm()

        if not form.validate():
            errors = form.errors
            log.error('User Input Failed - %s - (%s, %s)', errors.values(),
                      releaseName, form.event_name.data)
            cef_event('User Input Failed', CEF_INFO, **errors)
            return Response(status=400, response=errors.values())

        # Create a ReleaseEvent object from the request data
        try:
            releaseEventsUpdate = ReleaseEvents.createFromForm(
                releaseName, form)
        except Exception as e:
            log.error('User Input Failed - %s - (%s, %s)', e, releaseName,
                      form.event_name.data)
            cef_event('User Input Failed', CEF_ALERT)
            return Response(status=400, response=e)

        # Check if this ReleaseEvent already exists in the ReleaseEvents table
        if db.session.query(ReleaseEvents).filter_by(
                name=releaseEventsUpdate.name,
                event_name=releaseEventsUpdate.event_name).first():
            msg = 'ReleaseEvents ({r_name}, {e_name}) already exists'.format(
                r_name=releaseEventsUpdate.name,
                e_name=releaseEventsUpdate.event_name)
            log.error(msg)
            cef_event('User Input Failed',
                      CEF_INFO,
                      ReleaseName=releaseEventsUpdate.name)
            return Response(status=400, response=msg)

        # Add a new ReleaseEvents row to the ReleaseEvents table with new data
        db.session.add(releaseEventsUpdate)
        db.session.commit()
        log.debug('(%s, %s) - added to the ReleaseEvents',
                  releaseEventsUpdate.name, releaseEventsUpdate.event_name)

        return Response(status=200)
Esempio n. 14
0
def require_login():
    if not request.environ.get('REMOTE_USER'):
        cef_event('Login Required', CEF_WARN)
        return Response(status=401)
Esempio n. 15
0
def require_login():
    if not request.environ.get('REMOTE_USER'):
        cef_event('Login Required', CEF_WARN)
        return Response(status=401)