mirror of
				https://gitlab.ub.uni-bielefeld.de/sfb1288inf/nopaque.git
				synced 2025-11-04 04:12:45 +00:00 
			
		
		
		
	Rework notification system
This commit is contained in:
		@@ -26,13 +26,12 @@ def add_corpus():
 | 
			
		||||
        try:
 | 
			
		||||
            os.makedirs(dir)
 | 
			
		||||
        except OSError:
 | 
			
		||||
            flash('[ERROR]: Could not add corpus!')
 | 
			
		||||
            flash('[ERROR]: Could not add corpus!', 'corpus')
 | 
			
		||||
            corpus.delete()
 | 
			
		||||
        else:
 | 
			
		||||
            corpus_url = url_for('corpora.corpus', corpus_id=corpus.id)
 | 
			
		||||
            flash('<i class="left material-icons">book</i>'
 | 
			
		||||
                  '[<a href="{}">{}</a>] added'.format(corpus_url,
 | 
			
		||||
                                                       corpus.title))
 | 
			
		||||
            url = url_for('corpora.corpus', corpus_id=corpus.id)
 | 
			
		||||
            flash('[<a href="{}">{}</a>] added'.format(url, corpus.title),
 | 
			
		||||
                  'corpus')
 | 
			
		||||
            return redirect(url_for('corpora.corpus', corpus_id=corpus.id))
 | 
			
		||||
    return render_template('corpora/add_corpus.html.j2',
 | 
			
		||||
                           add_corpus_form=add_corpus_form,
 | 
			
		||||
@@ -82,7 +81,7 @@ def delete_corpus(corpus_id):
 | 
			
		||||
    if not (corpus.creator == current_user or current_user.is_administrator()):
 | 
			
		||||
        abort(403)
 | 
			
		||||
    tasks.delete_corpus(corpus_id)
 | 
			
		||||
    flash('Corpus deleted!')
 | 
			
		||||
    flash('Corpus deleted!', 'corpus')
 | 
			
		||||
    return redirect(url_for('main.dashboard'))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -121,7 +120,7 @@ def add_corpus_file(corpus_id):
 | 
			
		||||
        db.session.add(corpus_file)
 | 
			
		||||
        corpus.status = 'unprepared'
 | 
			
		||||
        db.session.commit()
 | 
			
		||||
        flash('Corpus file added!')
 | 
			
		||||
        flash('Corpus file added!', 'corpus')
 | 
			
		||||
        return make_response(
 | 
			
		||||
            {'redirect_url': url_for('corpora.corpus', corpus_id=corpus.id)},
 | 
			
		||||
            201)
 | 
			
		||||
@@ -141,7 +140,7 @@ def delete_corpus_file(corpus_id, corpus_file_id):
 | 
			
		||||
            or current_user.is_administrator()):
 | 
			
		||||
        abort(403)
 | 
			
		||||
    tasks.delete_corpus_file(corpus_file_id)
 | 
			
		||||
    flash('Corpus file deleted!')
 | 
			
		||||
    flash('Corpus file deleted!', 'corpus')
 | 
			
		||||
    return redirect(url_for('corpora.corpus', corpus_id=corpus_id))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -188,7 +187,7 @@ def edit_corpus_file(corpus_id, corpus_file_id):
 | 
			
		||||
        corpus_file.title = edit_corpus_file_form.title.data
 | 
			
		||||
        corpus.status = 'unprepared'
 | 
			
		||||
        db.session.commit()
 | 
			
		||||
        flash('Corpus file edited!')
 | 
			
		||||
        flash('Corpus file edited!', 'corpus')
 | 
			
		||||
        return redirect(url_for('corpora.corpus', corpus_id=corpus_id))
 | 
			
		||||
    # If no form is submitted or valid, fill out fields with current values
 | 
			
		||||
    edit_corpus_file_form.address.data = corpus_file.address
 | 
			
		||||
@@ -217,7 +216,7 @@ def prepare_corpus(corpus_id):
 | 
			
		||||
        abort(403)
 | 
			
		||||
    if corpus.files.all():
 | 
			
		||||
        tasks.build_corpus(corpus_id)
 | 
			
		||||
        flash('Corpus gets build now.')
 | 
			
		||||
        flash('Corpus gets build now.', 'corpus')
 | 
			
		||||
    else:
 | 
			
		||||
        flash('Can not build corpus, please add corpus file(s).')
 | 
			
		||||
        flash('Can not build corpus, please add corpus file(s).', 'corpus')
 | 
			
		||||
    return redirect(url_for('corpora.corpus', corpus_id=corpus_id))
 | 
			
		||||
 
 | 
			
		||||
@@ -23,7 +23,7 @@ def delete_job(job_id):
 | 
			
		||||
    if not (job.creator == current_user or current_user.is_administrator()):
 | 
			
		||||
        abort(403)
 | 
			
		||||
    tasks.delete_job(job_id)
 | 
			
		||||
    flash('Job has been deleted!')
 | 
			
		||||
    flash('Job has been deleted!', 'job')
 | 
			
		||||
    return redirect(url_for('main.dashboard'))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -61,7 +61,7 @@ def service(service):
 | 
			
		||||
            os.makedirs(absolut_dir)
 | 
			
		||||
        except OSError:
 | 
			
		||||
            job.delete()
 | 
			
		||||
            flash('Internal Server Error')
 | 
			
		||||
            flash('Internal Server Error', 'job')
 | 
			
		||||
            return make_response({'redirect_url': url_for('services.service',
 | 
			
		||||
                                                          service=service)},
 | 
			
		||||
                                 500)
 | 
			
		||||
@@ -74,9 +74,8 @@ def service(service):
 | 
			
		||||
                db.session.add(job_input)
 | 
			
		||||
            job.status = 'submitted'
 | 
			
		||||
            db.session.commit()
 | 
			
		||||
            job_url = url_for('jobs.job', job_id=job.id)
 | 
			
		||||
            flash('<i class="left material-icons">work</i>'
 | 
			
		||||
                  '[<a href="{}">{}</a>] added'.format(job_url, job.title))
 | 
			
		||||
            url = url_for('jobs.job', job_id=job.id)
 | 
			
		||||
            flash('[<a href="{}">{}</a>] added'.format(url, job.title), 'job')
 | 
			
		||||
            return make_response(
 | 
			
		||||
                {'redirect_url': url_for('jobs.job', job_id=job.id)}, 201)
 | 
			
		||||
    return render_template('services/{}.html.j2'.format(service),
 | 
			
		||||
 
 | 
			
		||||
@@ -44,7 +44,7 @@ class CorpusAnalysisClient {
 | 
			
		||||
        }
 | 
			
		||||
      } else {
 | 
			
		||||
        errorText = `Error ${response.payload.code} - ${response.payload.msg}`;
 | 
			
		||||
        nopaque.flash("error", errorText);
 | 
			
		||||
        nopaque.flash(errorText, "error");
 | 
			
		||||
        if (this.displays.query.errorContainer != undefined)  {
 | 
			
		||||
          this.displays.query.errorContainer.innerHTML = `<p class="red-text">`+
 | 
			
		||||
                    `<i class="material-icons tiny">error</i> ${errorText}</p>`;
 | 
			
		||||
 
 | 
			
		||||
@@ -58,7 +58,7 @@ nopaque.socket.init = function() {
 | 
			
		||||
        pathArray = operation.path.split("/").slice(1);
 | 
			
		||||
        if (operation.op === "replace" && pathArray[1] === "status") {
 | 
			
		||||
          if (nopaque.user.settings.jobStatusSiteNotifications === "end" && !["complete", "failed"].includes(operation.value)) {continue;}
 | 
			
		||||
          nopaque.flash(`<i class="left material-icons">work</i>[<a href="/jobs/${pathArray[0]}">${nopaque.jobs[pathArray[0]].title}</a>] New status: ${operation.value}`);
 | 
			
		||||
          nopaque.flash(`[<a href="/jobs/${pathArray[0]}">${nopaque.jobs[pathArray[0]].title}</a>] New status: ${operation.value}`, "job");
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
@@ -184,23 +184,28 @@ nopaque.flash = function() {
 | 
			
		||||
      message = arguments[0];
 | 
			
		||||
      break;
 | 
			
		||||
    case 2:
 | 
			
		||||
      category = arguments[0];
 | 
			
		||||
      message = arguments[1];
 | 
			
		||||
      message = arguments[0];
 | 
			
		||||
      category = arguments[1];
 | 
			
		||||
      break;
 | 
			
		||||
    default:
 | 
			
		||||
      console.error("Usage: nopaque.flash(message) or nopaque.flash(category, message)")
 | 
			
		||||
      console.error("Usage: nopaque.flash(message) or nopaque.flash(message, category)")
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  switch (category) {
 | 
			
		||||
    case "corpus":
 | 
			
		||||
      message = `<i class="left material-icons">book</i>${message}`;
 | 
			
		||||
      break;
 | 
			
		||||
    case "error":
 | 
			
		||||
      classes = "red";
 | 
			
		||||
      message = `<i class="left material-icons red-text">error</i>${message}`;
 | 
			
		||||
      break;
 | 
			
		||||
    case "job":
 | 
			
		||||
      message = `<i class="left material-icons">work</i>${message}`;
 | 
			
		||||
      break;
 | 
			
		||||
    default:
 | 
			
		||||
      classes = "";
 | 
			
		||||
      message = `<i class="left material-icons">notifications</i>${message}`;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  toast = M.toast({classes: classes,
 | 
			
		||||
                   html: `<span>${message}</span>
 | 
			
		||||
  toast = M.toast({html: `<span>${message}</span>
 | 
			
		||||
                          <button data-action="close" class="btn-flat toast-action white-text">
 | 
			
		||||
                            <i class="material-icons">close</i>
 | 
			
		||||
                          </button>`});
 | 
			
		||||
@@ -225,7 +230,8 @@ document.addEventListener("DOMContentLoaded", function() {
 | 
			
		||||
  nopaque.Forms.init();
 | 
			
		||||
  nopaque.Navigation.init();
 | 
			
		||||
  while (nopaque.flashedMessages.length) {
 | 
			
		||||
    nopaque.flash(...nopaque.flashedMessages.shift());
 | 
			
		||||
    flashedMessage = nopaque.flashedMessages.shift();
 | 
			
		||||
    nopaque.flash(flashedMessage[1], flashedMessage[0]);
 | 
			
		||||
  }
 | 
			
		||||
  if (nopaque.user.isAuthenticated) {
 | 
			
		||||
    if (nopaque.user.settings.darkMode) {
 | 
			
		||||
 
 | 
			
		||||
@@ -378,7 +378,7 @@ class ResultsList extends List {
 | 
			
		||||
      if (expertModeSwitchElement.checked) {
 | 
			
		||||
        this.expertModeOn("query-display");  // page holds new result rows, so add new tooltips
 | 
			
		||||
      }
 | 
			
		||||
      nopaque.flash("Updated matches per page.")
 | 
			
		||||
      nopaque.flash("Updated matches per page.", "corpus")
 | 
			
		||||
    } catch (e) {
 | 
			
		||||
      // console.log(e);
 | 
			
		||||
      // console.log("resultsList has no results right now.");
 | 
			
		||||
@@ -394,7 +394,7 @@ class ResultsList extends List {
 | 
			
		||||
    let rc;
 | 
			
		||||
    try {
 | 
			
		||||
        if (event.type === "change") {
 | 
			
		||||
            nopaque.flash("Updated context per match!");
 | 
			
		||||
            nopaque.flash("Updated context per match!", "corpus");
 | 
			
		||||
        }
 | 
			
		||||
    } catch (e) {
 | 
			
		||||
    } finally {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user