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)
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)
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)
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)
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})
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)
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})
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})
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)
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')
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')
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)
def require_login(): if not request.environ.get('REMOTE_USER'): cef_event('Login Required', CEF_WARN) return Response(status=401)