def action_delete(self, ids): try: query = tools.get_query_for_ids(self.get_query(), self.model, ids) if self.fast_mass_delete: count = query.delete(synchronize_session=False) else: count = 0 for m in query.all(): if self.delete_model(m): count += 1 self.session.commit() flash( ngettext('Record was successfully deleted.', '%(count)s records were successfully deleted.', count, count=count), 'success') except Exception as ex: if not self.handle_view_exception(ex): raise flash( gettext('Failed to delete records. %(error)s', error=str(ex)), 'error')
def action_delete(self, ids): try: query = tools.get_query_for_ids(self.get_query(), self.model, ids) if self.fast_mass_delete: count = query.delete(synchronize_session=False) else: count = 0 for m in query.all(): if self.delete_model(m): count += 1 self.session.commit() flash( ngettext( "Record was successfully deleted.", "%(count)s records were successfully deleted.", count, count=count, ), "success", ) except Exception as ex: if not self.handle_view_exception(ex): raise flash(gettext("Failed to delete records. %(error)s", error=str(ex)), "error")
def action_unsign(self, ids): try: builds = get_query_for_ids(self.get_query(), self.model, ids).all() not_signed = [] success = [] failed = [] for build in builds: filename = os.path.basename(build.path) with io.open(os.path.join(current_app.config['DATA_PATH'], build.path), 'rb+') as f: spk = SPK(f) if spk.signature is None: not_signed.append(filename) continue try: spk.unsign() success.append(filename) except Exception: failed.append(filename) if failed: if len(failed) == 1: flash('Failed to unsign build %s' % failed[0], 'error') else: flash('Failed to unsign %d builds: %s' % (len(failed), ', '.join(failed)), 'error') if not_signed: if len(not_signed) == 1: flash('Build %s not signed' % not_signed[0], 'info') else: flash('%d builds not signed: %s' % (len(not_signed), ', '.join(not_signed)), 'info') if success: if len(success) == 1: flash('Build %s successfully unsigned' % success[0]) else: flash('Successfully unsigned %d builds: %s' % (len(success), ', '.join(success))) except Exception as e: # pragma: no cover flash('Failed to unsign builds. %s' % str(e), 'error')
def handle_action(self, return_view=None): action = request.form.get('action') ids = request.form.getlist('rowid') page, sort, sort_desc, search, filters = self._get_action_extra_args() select_all = request.form.get('select-all', 0, type=int) select_page = request.form.get('select-page', 0, type=int) if select_all: count, query = self.get_list(None, sort, sort_desc, search, filters, False) elif select_page: count, query = self.get_list(page, sort, sort_desc, search, filters, False) else: query = get_query_for_ids(self.get_query(), self.model, ids) handler = self._actions_data.get(action) if handler and self.is_action_allowed(action): response = handler[0](ids, query) if response is not None: return response if not return_view: url = url_for('.' + self._default_view) else: url = url_for('.' + return_view) return redirect(url)
def action_deactivate(self, ids): try: users = get_query_for_ids(self.get_query(), self.model, ids).all() for user in users: user.active = False self.session.commit() flash('User was successfully deactivated.' if len(users) == 1 else '%d users were successfully deactivated.' % len(users)) except Exception as e: # pragma: no cover self.session.rollback() flash('Failed to deactivate users. %s' % str(e), 'error')
def action_deactivate(self, ids): try: builds = get_query_for_ids(self.get_query(), self.model, ids).all() for build in builds: build.active = False self.session.commit() flash('Build was successfully deactivated.' if len(builds) == 1 else '%d builds were successfully deactivated.' % len(builds)) except Exception as e: # pragma: no cover self.session.rollback() flash('Failed to deactivate builds. %s' % str(e), 'error')
def action_activate(self, ids): try: users = get_query_for_ids(self.get_query(), self.model, ids).all() for user in users: user.active = True self.session.commit() flash("User was successfully activated." if len(users) == 1 else "%d users were successfully activated." % len(users)) except Exception as e: # pragma: no cover self.session.rollback() flash("Failed to activate users. %s" % str(e), "error")
def action_deactivate(self, ids): try: versions = get_query_for_ids(self.get_query(), self.model, ids).all() for version in versions: for build in version.builds: build.active = False self.session.commit() flash('Builds on version were successfully deactivated.' if len(versions) == 1 else 'Builds have been successfully deactivated for %d versions.' % len(versions)) except Exception as e: # pragma: no cover self.session.rollback() flash('Failed to deactivate versions\' builds. %s' % str(e), 'error')
def action_activate(self, ids): try: builds = get_query_for_ids(self.get_query(), self.model, ids).all() for build in builds: build.active = True self.session.commit() flash("Build was successfully activated." if len(builds) == 1 else "%d builds were successfully activated." % len(builds)) except Exception as e: # pragma: no cover self.session.rollback() flash("Failed to activate builds. %s" % str(e), "error")
def action_finish(self, ids): try: query = tools.get_query_for_ids(self.get_query(), self.model, ids) query.update({'has_finished': '1'}, synchronize_session=False) self.session.commit() flash('success') except Exception as ex: if not self.handle_view_exception(ex): raise flash('error')
def action_sign(self, ids): try: versions = get_query_for_ids(self.get_query(), self.model, ids).all() already_signed = [] success = [] failed = [] for version in versions: for build in version.builds: filename = os.path.basename(build.path) with io.open( os.path.join(current_app.config["DATA_PATH"], build.path), "rb+") as f: spk = SPK(f) if spk.signature is not None: already_signed.append(filename) continue try: spk.sign( current_app.config["GNUPG_TIMESTAMP_URL"], current_app.config["GNUPG_PATH"], ) success.append(filename) except Exception: failed.append(filename) if failed: if len(failed) == 1: flash("Failed to sign build %s" % failed[0], "error") else: flash( "Failed to sign %d builds: %s" % (len(failed), ", ".join(failed)), "error", ) if already_signed: if len(already_signed) == 1: flash("Build %s already signed" % already_signed[0], "info") else: flash( "%d builds already signed: %s" % (len(already_signed), ", ".join(already_signed)), "info", ) if success: if len(success) == 1: flash("Build %s successfully signed" % success[0]) else: flash("Successfully signed %d builds: %s" % (len(success), ", ".join(success))) except Exception as e: # pragma: no cover flash("Failed to sign builds. %s" % str(e), "error")
def action_resuccess(self, ids): try: query = tools.get_query_for_ids(self.get_query(), self.model, ids) count = query.update({self.model.status, 'success'}, synchronize_session=False) flash(ngettext('jobs was successfully success.', '%(count)s records were successfully success.', count, count=count), 'success') except Exception as ex: if not self.handle_view_exception(ex): raise flash(gettext('Failed to rerun records. %(error)s', error=str(ex)), 'error')
def action_activate(self, ids): try: versions = get_query_for_ids(self.get_query(), self.model, ids).all() for version in versions: for build in version.builds: build.active = True self.session.commit() flash("Builds on version were successfully activated." if len(versions) == 1 else "Builds have been successfully activated for %d versions." % len(versions)) except Exception as e: # pragma: no cover self.session.rollback() flash("Failed to activate versions' builds. %s" % str(e), "error")
def action_resuccess(self, ids): try: query = tools.get_query_for_ids(self.get_query(), self.model, ids) count = query.update({self.model.status, 'success'}, synchronize_session=False) flash( ngettext('jobs was successfully success.', '%(count)s records were successfully success.', count, count=count), 'success') except Exception as ex: if not self.handle_view_exception(ex): raise flash(gettext('Failed to rerun records. %(error)s', error=str(ex)), 'error')
def action_confirm(self, ids): count = 0 query = get_query_for_ids(self.get_query(), self.model, ids) def confirm(project): project.status = "True" self.session.commit() return True for project in query.all(): if confirm(project): count += 1 self.session.commit() flash(ngettext('Record was successfully confirmed.', '%(count)s records were successfully confirmed.', count, count=count))
def action_update(self, ids): count = 0 query = get_query_for_ids(self.get_query(), self.model, ids) def update(project): update_single_project(project) self.session.commit() return True for project in query.all(): if update_single_project(project): count += 1 self.session.commit() flash(ngettext('Record was successfully updated.', '%(count)s records were successfully updated.', count, count=count))
def action_dryrun(self, ids): try: query = tools.get_query_for_ids(self.get_query(), self.model, ids) count = 0 for job in query: msg = models.Admin().rerun_task(job.task_id, job.etl_day, up_and_down=False, run_up=False, run_down=False, force=True) count += 1 flash(ngettext('jobs was successfully dryrun.', '%(count)s records were successfully dryrun.', count, count=count), 'success') except Exception as ex: if not self.handle_view_exception(ex): raise flash(gettext('Failed to rerun records. %(error)s', error=str(ex)), 'error')
def action_dryrun(self, ids): try: query = tools.get_query_for_ids(self.get_query(), self.model, ids) count = 0 for job in query: msg = models.Admin().rerun_task(job.task_id, job.etl_day, up_and_down=False, run_up=False, run_down=False, force=True) count += 1 flash( ngettext('jobs was successfully dryrun.', '%(count)s records were successfully dryrun.', count, count=count), 'success') except Exception as ex: if not self.handle_view_exception(ex): raise flash(gettext('Failed to rerun records. %(error)s', error=str(ex)), 'error')
def action_sign(self, ids): try: versions = get_query_for_ids(self.get_query(), self.model, ids).all() already_signed = [] success = [] failed = [] for version in versions: for build in version.builds: filename = os.path.basename(build.path) with io.open(os.path.join(current_app.config['DATA_PATH'], build.path), 'rb+') as f: spk = SPK(f) if spk.signature is not None: already_signed.append(filename) continue try: spk.sign(current_app.config['GNUPG_TIMESTAMP_URL'], current_app.config['GNUPG_PATH']) success.append(filename) except Exception: failed.append(filename) if failed: if len(failed) == 1: flash('Failed to sign build %s' % failed[0], 'error') else: flash('Failed to sign %d builds: %s' % (len(failed), ', '.join(failed)), 'error') if already_signed: if len(already_signed) == 1: flash('Build %s already signed' % already_signed[0], 'info') else: flash('%d builds already signed: %s' % (len(already_signed), ', '.join(already_signed)), 'info') if success: if len(success) == 1: flash('Build %s successfully signed' % success[0]) else: flash('Successfully signed %d builds: %s' % (len(success), ', '.join(success))) except Exception as e: # pragma: no cover flash('Failed to sign builds. %s' % str(e), 'error')