From 5b6e8894435b4acd17ffc116d690a595eab4f76e Mon Sep 17 00:00:00 2001 From: Inga Kirschnick <inga.kirschnick@uni-bielefeld.de> Date: Tue, 7 Feb 2023 16:06:09 +0100 Subject: [PATCH] New public corpus route --- app/corpora/routes.py | 9 +++ app/templates/corpora/corpus.html.j2 | 51 ------------ app/templates/corpora/public_corpus.html.j2 | 86 +++++++++++++++++++++ 3 files changed, 95 insertions(+), 51 deletions(-) create mode 100644 app/templates/corpora/public_corpus.html.j2 diff --git a/app/corpora/routes.py b/app/corpora/routes.py index 4c1ebd29..63af1b07 100644 --- a/app/corpora/routes.py +++ b/app/corpora/routes.py @@ -332,3 +332,12 @@ def remove_permission(corpus_id, user_id, permission): a.remove_permission(permission) db.session.commit() return 'ok' + +@bp.route('/public/<hashid:corpus_id>') +def public_corpus(corpus_id): + corpus = Corpus.query.get_or_404(corpus_id) + return render_template( + 'corpora/public_corpus.html.j2', + corpus=corpus, + title=corpus.title + ) diff --git a/app/templates/corpora/corpus.html.j2 b/app/templates/corpora/corpus.html.j2 index 0f7b0bf4..c29da972 100644 --- a/app/templates/corpora/corpus.html.j2 +++ b/app/templates/corpora/corpus.html.j2 @@ -120,56 +120,5 @@ {{ super() }} <script> let corpusDisplay = new CorpusDisplay(document.querySelector('#corpus-display')); - let corpusFollowingRequest = document.querySelector('#follow-corpus-request'); - - {# let followingUserList = new UserList(document.querySelector('.user-list')); - followingUserList.add({{ following_users|tojson }}); #} - - corpusFollowingRequest.addEventListener('click', function() { - corpusFollowingRequest.innerHTML = '<i class="material-icons left">add</i>Unfollow Corpus'; - if ("{{ current_user.is_following_corpus(corpus) }}" === "False") { - corpusFollowingRequest.lastChild.textContent = 'Unfollow Corpus'; - return new Promise((resolve, reject) => { - fetch(`/corpora/{{ corpus.hashid }}/follow`, {method: 'POST', headers: {Accept: 'application/json'}}) - .then( - (response) => { - if (response.status === 403) {app.flash('Forbidden', 'error'); reject(response);} - if (response.status === 404) {app.flash('Not Found', 'error'); reject(response);} - if (response.status === 409) {app.flash('Conflict', 'error'); reject(response);} - app.flash(`You follow "{{ corpus.title }}" now`, 'corpus'); - window.location.href = '{{ url_for("corpora.corpus", corpus_id=corpus.id) }}' - resolve(response); - }, - (response) => { - app.flash('Something went wrong', 'error'); - reject(response); - } - ); - }); - - } else { - corpusFollowingRequest.innerHTML = '<i class="material-icons left">add</i>Unfollow Corpus'; - return new Promise((resolve, reject) => { - fetch(`/corpora/{{ corpus.hashid }}/unfollow`, {method: 'POST', headers: {Accept: 'application/json'}}) - .then( - (response) => { - if (response.status === 403) {app.flash('Forbidden', 'error'); reject(response);} - if (response.status === 404) {app.flash('Not Found', 'error'); reject(response);} - if (response.status === 409) {app.flash('Conflict', 'error'); reject(response);} - app.flash(`You are not following "{{ corpus.title }}" anymore`, 'corpus'); - resolve(response); - window.location.href = '{{ url_for("corpora.corpus", corpus_id=corpus.id) }}' - }, - (response) => { - app.flash('Something went wrong', 'error'); - reject(response); - } - ); - }); - - } - }); - - </script> {% endblock scripts %} diff --git a/app/templates/corpora/public_corpus.html.j2 b/app/templates/corpora/public_corpus.html.j2 new file mode 100644 index 00000000..f9cb4bc9 --- /dev/null +++ b/app/templates/corpora/public_corpus.html.j2 @@ -0,0 +1,86 @@ +{% extends "base.html.j2" %} +{% import "materialize/wtf.html.j2" as wtf %} + +{% block main_attribs %} class="service-scheme" data-service="corpus-analysis"{% endblock main_attribs %} + +{% block page_content %} +<div class="container"> + <div class="row"> + <div class="col s12"> + <h1>{{ title }} </h1> + <div class="card service-color-border border-darken" data-service="corpus-analysis" style="border-top: 10px solid"> + <div class="card-content"> + <div class="row"> + <div class="col s12"> + <p><b>Description:</b> {{ corpus.description }}</p> + <br> + <p></p> + </div> + <div class="col s6"> + <p><b>Creation date:</b> {{ corpus.creation_date }}</p> + </div> + <div class="col s6"> + <p><b>Number of tokens used:</b> {{ corpus.num_tokens }}</p> + </div> + </div> + </div> + </div> + </div> + </div> +</div> +{% endblock page_content %} + +{% block scripts %} +{{ super() }} +<script> + let corpusFollowingRequest = document.querySelector('#follow-corpus-request'); + + {# let followingUserList = new UserList(document.querySelector('.user-list')); + followingUserList.add({{ following_users|tojson }}); #} + + corpusFollowingRequest.addEventListener('click', function() { + corpusFollowingRequest.innerHTML = '<i class="material-icons left">add</i>Unfollow Corpus'; + if ("{{ current_user.is_following_corpus(corpus) }}" === "False") { + corpusFollowingRequest.lastChild.textContent = 'Unfollow Corpus'; + return new Promise((resolve, reject) => { + fetch(`/corpora/{{ corpus.hashid }}/follow`, {method: 'POST', headers: {Accept: 'application/json'}}) + .then( + (response) => { + if (response.status === 403) {app.flash('Forbidden', 'error'); reject(response);} + if (response.status === 404) {app.flash('Not Found', 'error'); reject(response);} + if (response.status === 409) {app.flash('Conflict', 'error'); reject(response);} + app.flash(`You follow "{{ corpus.title }}" now`, 'corpus'); + window.location.href = '{{ url_for("corpora.corpus", corpus_id=corpus.id) }}' + resolve(response); + }, + (response) => { + app.flash('Something went wrong', 'error'); + reject(response); + } + ); + }); + + } else { + corpusFollowingRequest.innerHTML = '<i class="material-icons left">add</i>Unfollow Corpus'; + return new Promise((resolve, reject) => { + fetch(`/corpora/{{ corpus.hashid }}/unfollow`, {method: 'POST', headers: {Accept: 'application/json'}}) + .then( + (response) => { + if (response.status === 403) {app.flash('Forbidden', 'error'); reject(response);} + if (response.status === 404) {app.flash('Not Found', 'error'); reject(response);} + if (response.status === 409) {app.flash('Conflict', 'error'); reject(response);} + app.flash(`You are not following "{{ corpus.title }}" anymore`, 'corpus'); + resolve(response); + window.location.href = '{{ url_for("corpora.corpus", corpus_id=corpus.id) }}' + }, + (response) => { + app.flash('Something went wrong', 'error'); + reject(response); + } + ); + }); + + } + }); +</script> +{% endblock scripts %} -- GitLab