From b8bcb159a285a796494c56e14d0a757ff037e299 Mon Sep 17 00:00:00 2001
From: Inga Kirschnick <inga.kirschnick@uni-bielefeld.de>
Date: Wed, 7 Jun 2023 15:13:47 +0200
Subject: [PATCH] Hide Community Update code

---
 app/corpora/followers/json_routes.py          | 116 +++++++++---------
 app/corpora/json_routes.py                    |  98 +++++++--------
 app/corpora/routes.py                         |  37 +++---
 app/main/routes.py                            |  24 ++--
 app/models.py                                 |   2 +-
 app/static/js/ResourceLists/CorpusList.js     |  19 +--
 app/templates/_sidenav.html.j2                |  10 +-
 app/templates/admin/user.html.j2              |   2 +-
 app/templates/corpora/corpus.html.j2          |  32 ++---
 app/templates/users/settings/settings.html.j2 |  16 +--
 app/users/json_routes.py                      |  88 ++++++-------
 app/users/routes.py                           |  58 ++++-----
 12 files changed, 252 insertions(+), 250 deletions(-)

diff --git a/app/corpora/followers/json_routes.py b/app/corpora/followers/json_routes.py
index 87299862..db6bb635 100644
--- a/app/corpora/followers/json_routes.py
+++ b/app/corpora/followers/json_routes.py
@@ -12,65 +12,65 @@ from ..decorators import corpus_follower_permission_required
 from . import bp
 
 
-@bp.route('/<hashid:corpus_id>/followers', methods=['POST'])
-@corpus_follower_permission_required('MANAGE_FOLLOWERS')
-@content_negotiation(consumes='application/json', produces='application/json')
-def create_corpus_followers(corpus_id):
-    usernames = request.json
-    if not (isinstance(usernames, list) or all(isinstance(u, str) for u in usernames)):
-        abort(400)
-    corpus = Corpus.query.get_or_404(corpus_id)
-    for username in usernames:
-        user = User.query.filter_by(username=username, is_public=True).first_or_404()
-        user.follow_corpus(corpus)
-    db.session.commit()
-    response_data = {
-        'message': f'Users are now following "{corpus.title}"',
-        'category': 'corpus'
-    }
-    return response_data, 200
+# @bp.route('/<hashid:corpus_id>/followers', methods=['POST'])
+# @corpus_follower_permission_required('MANAGE_FOLLOWERS')
+# @content_negotiation(consumes='application/json', produces='application/json')
+# def create_corpus_followers(corpus_id):
+#     usernames = request.json
+#     if not (isinstance(usernames, list) or all(isinstance(u, str) for u in usernames)):
+#         abort(400)
+#     corpus = Corpus.query.get_or_404(corpus_id)
+#     for username in usernames:
+#         user = User.query.filter_by(username=username, is_public=True).first_or_404()
+#         user.follow_corpus(corpus)
+#     db.session.commit()
+#     response_data = {
+#         'message': f'Users are now following "{corpus.title}"',
+#         'category': 'corpus'
+#     }
+#     return response_data, 200
 
 
-@bp.route('/<hashid:corpus_id>/followers/<hashid:follower_id>/role', methods=['PUT'])
-@corpus_follower_permission_required('MANAGE_FOLLOWERS')
-@content_negotiation(consumes='application/json', produces='application/json')
-def update_corpus_follower_role(corpus_id, follower_id):
-    role_name = request.json
-    if not isinstance(role_name, str):
-        abort(400)
-    cfr = CorpusFollowerRole.query.filter_by(name=role_name).first()
-    if cfr is None:
-        abort(400)
-    cfa = CorpusFollowerAssociation.query.filter_by(corpus_id=corpus_id, follower_id=follower_id).first_or_404()
-    cfa.role = cfr
-    db.session.commit()
-    response_data = {
-        'message': f'User "{cfa.follower.username}" is now {cfa.role.name}',
-        'category': 'corpus'
-    }
-    return response_data, 200
+# @bp.route('/<hashid:corpus_id>/followers/<hashid:follower_id>/role', methods=['PUT'])
+# @corpus_follower_permission_required('MANAGE_FOLLOWERS')
+# @content_negotiation(consumes='application/json', produces='application/json')
+# def update_corpus_follower_role(corpus_id, follower_id):
+#     role_name = request.json
+#     if not isinstance(role_name, str):
+#         abort(400)
+#     cfr = CorpusFollowerRole.query.filter_by(name=role_name).first()
+#     if cfr is None:
+#         abort(400)
+#     cfa = CorpusFollowerAssociation.query.filter_by(corpus_id=corpus_id, follower_id=follower_id).first_or_404()
+#     cfa.role = cfr
+#     db.session.commit()
+#     response_data = {
+#         'message': f'User "{cfa.follower.username}" is now {cfa.role.name}',
+#         'category': 'corpus'
+#     }
+#     return response_data, 200
 
 
-@bp.route('/<hashid:corpus_id>/followers/<hashid:follower_id>', methods=['DELETE'])
-def delete_corpus_follower(corpus_id, follower_id):
-    cfa = CorpusFollowerAssociation.query.filter_by(corpus_id=corpus_id, follower_id=follower_id).first_or_404()
-    if not (
-        current_user.id == follower_id
-        or current_user == cfa.corpus.user 
-        or CorpusFollowerAssociation.query.filter_by(corpus_id=corpus_id, follower_id=current_user.id).first().role.has_permission('MANAGE_FOLLOWERS')
-        or current_user.is_administrator()):
-        abort(403)
-    if current_user.id == follower_id:
-        flash(f'You are no longer following "{cfa.corpus.title}"', 'corpus')
-        response = make_response()
-        response.status_code = 204
-    else:
-        response_data = {
-            'message': f'"{cfa.follower.username}" is not following "{cfa.corpus.title}" anymore',
-            'category': 'corpus'
-        }
-        response = jsonify(response_data)
-        response.status_code = 200
-    cfa.follower.unfollow_corpus(cfa.corpus)
-    db.session.commit()
-    return response
+# @bp.route('/<hashid:corpus_id>/followers/<hashid:follower_id>', methods=['DELETE'])
+# def delete_corpus_follower(corpus_id, follower_id):
+#     cfa = CorpusFollowerAssociation.query.filter_by(corpus_id=corpus_id, follower_id=follower_id).first_or_404()
+#     if not (
+#         current_user.id == follower_id
+#         or current_user == cfa.corpus.user 
+#         or CorpusFollowerAssociation.query.filter_by(corpus_id=corpus_id, follower_id=current_user.id).first().role.has_permission('MANAGE_FOLLOWERS')
+#         or current_user.is_administrator()):
+#         abort(403)
+#     if current_user.id == follower_id:
+#         flash(f'You are no longer following "{cfa.corpus.title}"', 'corpus')
+#         response = make_response()
+#         response.status_code = 204
+#     else:
+#         response_data = {
+#             'message': f'"{cfa.follower.username}" is not following "{cfa.corpus.title}" anymore',
+#             'category': 'corpus'
+#         }
+#         response = jsonify(response_data)
+#         response.status_code = 200
+#     cfa.follower.unfollow_corpus(cfa.corpus)
+#     db.session.commit()
+#     return response
diff --git a/app/corpora/json_routes.py b/app/corpora/json_routes.py
index 908f1604..6005fc48 100644
--- a/app/corpora/json_routes.py
+++ b/app/corpora/json_routes.py
@@ -57,55 +57,55 @@ def build_corpus(corpus_id):
     return response_data, 202
 
 
-@bp.route('/<hashid:corpus_id>/generate-share-link', methods=['POST'])
-@corpus_follower_permission_required('MANAGE_FOLLOWERS')
-@content_negotiation(consumes='application/json', produces='application/json')
-def generate_corpus_share_link(corpus_id):
-    data = request.json
-    if not isinstance(data, dict):
-        abort(400)
-    expiration = data.get('expiration')
-    if not isinstance(expiration, str):
-        abort(400)
-    role_name = data.get('role')
-    if not isinstance(role_name, str):
-        abort(400)
-    expiration_date = datetime.strptime(expiration, '%b %d, %Y')
-    cfr = CorpusFollowerRole.query.filter_by(name=role_name).first()
-    if cfr is None:
-        abort(400)
-    corpus = Corpus.query.get_or_404(corpus_id)
-    token = current_user.generate_follow_corpus_token(corpus.hashid, role_name, expiration_date)
-    corpus_share_link = url_for(
-        'corpora.follow_corpus',
-        corpus_id=corpus_id,
-        token=token,
-        _external=True
-    )
-    response_data = {
-        'message': 'Corpus share link generated',
-        'category': 'corpus',
-        'corpusShareLink': corpus_share_link
-    }
-    return response_data, 200
+# @bp.route('/<hashid:corpus_id>/generate-share-link', methods=['POST'])
+# @corpus_follower_permission_required('MANAGE_FOLLOWERS')
+# @content_negotiation(consumes='application/json', produces='application/json')
+# def generate_corpus_share_link(corpus_id):
+#     data = request.json
+#     if not isinstance(data, dict):
+#         abort(400)
+#     expiration = data.get('expiration')
+#     if not isinstance(expiration, str):
+#         abort(400)
+#     role_name = data.get('role')
+#     if not isinstance(role_name, str):
+#         abort(400)
+#     expiration_date = datetime.strptime(expiration, '%b %d, %Y')
+#     cfr = CorpusFollowerRole.query.filter_by(name=role_name).first()
+#     if cfr is None:
+#         abort(400)
+#     corpus = Corpus.query.get_or_404(corpus_id)
+#     token = current_user.generate_follow_corpus_token(corpus.hashid, role_name, expiration_date)
+#     corpus_share_link = url_for(
+#         'corpora.follow_corpus',
+#         corpus_id=corpus_id,
+#         token=token,
+#         _external=True
+#     )
+#     response_data = {
+#         'message': 'Corpus share link generated',
+#         'category': 'corpus',
+#         'corpusShareLink': corpus_share_link
+#     }
+#     return response_data, 200
     
 
 
-@bp.route('/<hashid:corpus_id>/is_public', methods=['PUT'])
-@corpus_owner_or_admin_required
-@content_negotiation(consumes='application/json', produces='application/json')
-def update_corpus_is_public(corpus_id):
-    is_public = request.json
-    if not isinstance(is_public, bool):
-        abort(400)
-    corpus = Corpus.query.get_or_404(corpus_id)
-    corpus.is_public = is_public
-    db.session.commit()
-    response_data = {
-        'message': (
-            f'Corpus "{corpus.title}" is now'
-            f' {"public" if is_public else "private"}'
-        ),
-        'category': 'corpus'
-    }
-    return response_data, 200
+# @bp.route('/<hashid:corpus_id>/is_public', methods=['PUT'])
+# @corpus_owner_or_admin_required
+# @content_negotiation(consumes='application/json', produces='application/json')
+# def update_corpus_is_public(corpus_id):
+#     is_public = request.json
+#     if not isinstance(is_public, bool):
+#         abort(400)
+#     corpus = Corpus.query.get_or_404(corpus_id)
+#     corpus.is_public = is_public
+#     db.session.commit()
+#     response_data = {
+#         'message': (
+#             f'Corpus "{corpus.title}" is now'
+#             f' {"public" if is_public else "private"}'
+#         ),
+#         'category': 'corpus'
+#     }
+#     return response_data, 200
diff --git a/app/corpora/routes.py b/app/corpora/routes.py
index 7d9b30d6..b1b9142d 100644
--- a/app/corpora/routes.py
+++ b/app/corpora/routes.py
@@ -71,16 +71,17 @@ def corpus(corpus_id):
             users = users
         )
     if (current_user.is_following_corpus(corpus) or corpus.is_public):
-        cfas = CorpusFollowerAssociation.query.filter(Corpus.id == corpus_id, CorpusFollowerAssociation.follower_id != corpus.user.id).all()
-        return render_template(
-            'corpora/public_corpus.html.j2',
-            title=corpus.title,
-            corpus=corpus,
-            cfrs=cfrs,
-            cfr=cfr,
-            cfas=cfas,
-            users = users
-        )
+        abort(404)
+        # cfas = CorpusFollowerAssociation.query.filter(Corpus.id == corpus_id, CorpusFollowerAssociation.follower_id != corpus.user.id).all()
+        # return render_template(
+        #     'corpora/public_corpus.html.j2',
+        #     title=corpus.title,
+        #     corpus=corpus,
+        #     cfrs=cfrs,
+        #     cfr=cfr,
+        #     cfas=cfas,
+        #     users = users
+        # )
     abort(403)
 
 
@@ -97,14 +98,14 @@ def analysis(corpus_id):
     )
 
 
-@bp.route('/<hashid:corpus_id>/follow/<token>')
-def follow_corpus(corpus_id, token):
-    corpus = Corpus.query.get_or_404(corpus_id)
-    if current_user.follow_corpus_by_token(token):
-        db.session.commit()
-        flash(f'You are following "{corpus.title}" now', category='corpus')
-        return redirect(url_for('corpora.corpus', corpus_id=corpus_id))
-    abort(403)
+# @bp.route('/<hashid:corpus_id>/follow/<token>')
+# def follow_corpus(corpus_id, token):
+#     corpus = Corpus.query.get_or_404(corpus_id)
+#     if current_user.follow_corpus_by_token(token):
+#         db.session.commit()
+#         flash(f'You are following "{corpus.title}" now', category='corpus')
+#         return redirect(url_for('corpora.corpus', corpus_id=corpus_id))
+#     abort(403)
 
 
 @bp.route('/import', methods=['GET', 'POST'])
diff --git a/app/main/routes.py b/app/main/routes.py
index 080616ec..3be92196 100644
--- a/app/main/routes.py
+++ b/app/main/routes.py
@@ -78,15 +78,15 @@ def terms_of_use():
     )
 
 
-@bp.route('/social-area')
-@register_breadcrumb(bp, '.social_area', '<i class="material-icons left">group</i>Social Area')
-@login_required
-def social_area():
-    corpora = Corpus.query.filter(Corpus.is_public == True, Corpus.user != current_user).all()
-    users = User.query.filter(User.is_public == True, User.id != current_user.id).all()
-    return render_template(
-        'main/social_area.html.j2',
-        title='Social Area',
-        corpora=corpora,
-        users=users
-    )
+# @bp.route('/social-area')
+# @register_breadcrumb(bp, '.social_area', '<i class="material-icons left">group</i>Social Area')
+# @login_required
+# def social_area():
+#     corpora = Corpus.query.filter(Corpus.is_public == True, Corpus.user != current_user).all()
+#     users = User.query.filter(User.is_public == True, User.id != current_user.id).all()
+#     return render_template(
+#         'main/social_area.html.j2',
+#         title='Social Area',
+#         corpora=corpora,
+#         users=users
+#     )
diff --git a/app/models.py b/app/models.py
index 5b8a4694..a7cc77e9 100644
--- a/app/models.py
+++ b/app/models.py
@@ -853,7 +853,7 @@ class User(HashidMixin, UserMixin, db.Model):
         json_serializeable = {
             'id': self.hashid,
             'confirmed': self.confirmed,
-            'avatar': url_for('users.user_avatar', user_id=self.id),
+            # 'avatar': url_for('users.user_avatar', user_id=self.id),
             'email': self.email,
             'last_seen': (
                 None if self.last_seen is None
diff --git a/app/static/js/ResourceLists/CorpusList.js b/app/static/js/ResourceLists/CorpusList.js
index deebb356..985ff1d1 100644
--- a/app/static/js/ResourceLists/CorpusList.js
+++ b/app/static/js/ResourceLists/CorpusList.js
@@ -225,15 +225,16 @@ class CorpusList extends ResourceList {
         break;
       }
       case 'delete': {
+        // Saved for future use:
+        // <p class="hide">Do you really want to unfollow this Corpora?</p>
+        // <ul id="selected-unfollow-items-list"></ul>
         let modalElement = Utils.HTMLToElement(
           `
             <div class="modal">
               <div class="modal-content">
                 <h4>Confirm Corpus deletion</h4>
                 <p>Do you really want to delete this Corpora? <i>All corpora will be permanently deleted!</i></p>
-                  <ul id="selected-deletion-items-list"></ul>
-                <p>Do you really want to unfollow this Corpora?</p>
-                  <ul id="selected-unfollow-items-list"></ul>
+                <ul id="selected-deletion-items-list"></ul>
               </div>
               <div class="modal-footer">
                 <a class="btn modal-close waves-effect waves-light">Cancel</a>
@@ -244,16 +245,16 @@ class CorpusList extends ResourceList {
         );
         document.querySelector('#modals').appendChild(modalElement);
         let itemDeletionList = document.querySelector('#selected-deletion-items-list');
-        let itemUnfollowList = document.querySelector('#selected-unfollow-items-list');
+        // let itemUnfollowList = document.querySelector('#selected-unfollow-items-list');
         this.selectedItemIds.forEach(selectedItemId => {
           let listItem = this.listjs.get('id', selectedItemId)[0].elm;
           let values = this.listjs.get('id', listItem.dataset.id)[0].values();
           let itemElement = Utils.HTMLToElement(`<li> - ${values.title}</li>`);
-          if (!values['is-owner']) { 
-            itemUnfollowList.appendChild(itemElement);
-          } else {
-            itemDeletionList.appendChild(itemElement);
-          }
+          // if (!values['is-owner']) { 
+          //   itemUnfollowList.appendChild(itemElement);
+          // } else {
+          itemDeletionList.appendChild(itemElement);
+          // }
         });
         let modal = M.Modal.init(
           modalElement,
diff --git a/app/templates/_sidenav.html.j2 b/app/templates/_sidenav.html.j2
index 684ac2c7..f9549d43 100644
--- a/app/templates/_sidenav.html.j2
+++ b/app/templates/_sidenav.html.j2
@@ -3,12 +3,12 @@
     <div class="user-view" style="padding-top: 3px;">
       <div class="background primary-color"></div>
       <div class="row">
-        <div class="col s4">
+        {# <div class="col s4">
           <a href="{{ url_for('users.user', user_id=current_user.id) }}">
             <img src="{{ url_for('users.user_avatar', user_id=current_user.id) }}" alt="user-image" class="circle responsive-img"  style="height:80%; margin-top: 13px; margin-left:-15px;">
           </a>
-        </div>
-        <div class="col s8">
+        </div> #}
+        <div class="col s12">
           <span class="white-text name">{{ current_user.username }}</span>
           <span class="white-text email">{{ current_user.email }}</span>
         </div>
@@ -58,7 +58,7 @@
   <li class="service-color service-color-border border-darken" data-service="corpus-analysis" style="border-left: 10px solid; margin-top: 5px;">
     <a class="waves-effect" href="{{ url_for('services.corpus_analysis') }}"><i class="nopaque-icons service-icons" data-service="corpus-analysis"></i>Corpus Analysis</a>
   </li>
-  <li><div class="divider"></div></li>
+  {# <li><div class="divider"></div></li>
   <li>
     <a class="waves-effect" class="waves-effect" href="{{ url_for('main.social_area') }}"><i class="material-icons">rocket_launch</i>Social Area</a>
     <ul>
@@ -69,7 +69,7 @@
     <a class="waves-effect" href="{{ url_for('main.social_area', _anchor='public-corpora') }}" style="padding-left: 47px;"><i class="nopaque-icons">I</i>Public Corpora</a>
   </li>
     </ul>
-  </li>
+  </li> #}
   <li class="hide-on-large-only"><div class="divider"></div></li>
   <li class="hide-on-large-only"><a class="subheader">Account</a></li>
   <li class="hide-on-large-only">
diff --git a/app/templates/admin/user.html.j2 b/app/templates/admin/user.html.j2
index 82c8723d..4d99ea57 100644
--- a/app/templates/admin/user.html.j2
+++ b/app/templates/admin/user.html.j2
@@ -5,7 +5,7 @@
   <div class="row">
     <div class="col s12 l2">
       <p>&nbsp;</p>
-      <img src="{{ url_for('users.user_avatar', user_id=user.id) }}" alt="user-image" class="circle responsive-img">
+      {# <img src="{{ url_for('users.user_avatar', user_id=user.id) }}" alt="user-image" class="circle responsive-img"> #}
     </div>
     <div class="col s12 l10">
       <h1 id="title">{{ title }}</h1>
diff --git a/app/templates/corpora/corpus.html.j2 b/app/templates/corpora/corpus.html.j2
index 07cb330d..5ced98e4 100644
--- a/app/templates/corpora/corpus.html.j2
+++ b/app/templates/corpora/corpus.html.j2
@@ -65,14 +65,14 @@
             <div class="col s12 l6" style="padding: 0 2.5px;">
               <a class="action-button btn disabled waves-effect waves-light" data-action="analyze" href="{{ url_for('corpora.analysis', corpus_id=corpus.id) }}" style="width: 100%;"><i class="material-icons left">search</i>Analyze</a>
             </div>
-            <div class="col s12 l6" style="padding: 5px 2.5px 0 2.5px;">
+            {# <div class="col s12 l6" style="padding: 5px 2.5px 0 2.5px;">
               <a class="btn waves-effect waves-light modal-trigger" href="#publishing-modal" style="width: 100%;"><i class="material-icons left">publish</i>Publishing</a>
-            </div>
+            </div> #}
             <div class="col s12 l6" style="padding: 5px 2.5px 0 2.5px;">
               <a class="btn red waves-effect waves-light modal-trigger" href="#delete-modal" style="width: 100%;"><i class="material-icons left">delete</i>Delete</a>
             </div>
           </div>
-          {% if cfr.has_permission('MANAGE_FOLLOWERS') %}
+          {# {% if cfr.has_permission('MANAGE_FOLLOWERS') %}
           <span class="card-title">Social</span>
           <div class="row">
             <div class="col s12 l6" style="padding: 0 2.5px;">
@@ -82,7 +82,7 @@
               <a class="btn waves-effect waves-light modal-trigger" href="#share-link-modal" style="width: 100%;"><i class="material-icons left">link</i>Share link</a>
             </div>
           </div>
-          {% endif %}
+          {% endif %} #}
         </div>
       </div>
     </div>
@@ -102,7 +102,7 @@
       </div>
     </div>
 
-    {% if cfr.has_permission('MANAGE_FOLLOWERS') %}
+    {# {% if cfr.has_permission('MANAGE_FOLLOWERS') %}
     <div class="col s12">
       <div class="card">
         <div class="card-content">
@@ -111,7 +111,7 @@
         </div>
       </div>
     </div>
-    {% endif %}
+    {% endif %} #}
 
   </div>
 </div>
@@ -121,7 +121,7 @@
 {{ super() }}
 
 {% if current_user == corpus.user or current_user.is_administrator() %}
-<div class="modal" id="publishing-modal">
+{# <div class="modal" id="publishing-modal">
   <div class="modal-content">
     <h4>Change your Corpus publishing status</h4>
     <p><i>Other users can only see the meta data of your corpus. The files of the corpus remain private and can only be viewed via a share link.</i></p>
@@ -138,7 +138,7 @@
   <div class="modal-footer">
     <a class="modal-close waves-effect waves-green btn-flat">Close</a>
   </div>
-</div>
+</div> #}
 
 <div class="modal" id="delete-modal">
   <div class="modal-content">
@@ -152,7 +152,7 @@
 </div>
 {% endif %}
 
-{% if cfr.has_permission('MANAGE_FOLLOWERS') %}
+{# {% if cfr.has_permission('MANAGE_FOLLOWERS') %}
 <div class="modal no-autoinit" id="invite-user-modal">
   <div class="modal-content">
     <h4>Invite a nopaque user by username</h4>
@@ -230,7 +230,7 @@
     <a class="modal-close waves-effect waves-green btn-flat">Close</a>
   </div>
 </div>
-{% endif %}
+{% endif %} #}
 
 {% endblock modals %}
 
@@ -239,7 +239,7 @@
 <script>
 let corpusDisplay = new CorpusDisplay(document.querySelector('#corpus-display'));
 
-{% if current_user.is_following_corpus(corpus) %}
+{# {% if current_user.is_following_corpus(corpus) %}
   let unfollowRequestElement = document.querySelector('.action-button[data-action="unfollow-request"]');
   unfollowRequestElement.addEventListener('click', () => {
     Requests.corpora.entity.followers.entity.delete({{ corpus.hashid|tojson }}, {{ current_user.hashid|tojson }})
@@ -247,18 +247,18 @@ let corpusDisplay = new CorpusDisplay(document.querySelector('#corpus-display'))
         window.location.reload();
       });
   });
-{% endif %}
+{% endif %} #}
 
 {% if current_user == corpus.user or current_user.is_administrator() %}
 // #region Publishing
-let publishingModalIsPublicSwitchElement = document.querySelector('#publishing-modal-is-public-switch');
+{# let publishingModalIsPublicSwitchElement = document.querySelector('#publishing-modal-is-public-switch');
 publishingModalIsPublicSwitchElement.addEventListener('change', (event) => {
   let newIsPublic = publishingModalIsPublicSwitchElement.checked;
   Requests.corpora.entity.isPublic.update({{ corpus.hashid|tojson }}, newIsPublic)
     .catch((response) => {
       publishingModalIsPublicSwitchElement.checked = !newIsPublic;
     });
-});
+}); #}
 // #endregion Publishing
 
 // #region Delete
@@ -274,7 +274,7 @@ deleteModalDeleteButtonElement.addEventListener('click', (event) => {
 
 {% if cfr.has_permission('MANAGE_FOLLOWERS') %}
 // #region Invite user
-let inviteUserModalElement = document.querySelector('#invite-user-modal');
+{# let inviteUserModalElement = document.querySelector('#invite-user-modal');
 let inviteUserModalSearchElement = document.querySelector('#invite-user-modal-search');
 let inviteUserModalInviteButtonElement = document.querySelector('#invite-user-modal-invite-button');
 let users = {
@@ -376,7 +376,7 @@ shareLinkModalOutputCopyButtonElement.addEventListener('click', (event) => {
       () => {app.flash('Could not copy to clipboard. Please copy manually.', 'error');}
     );
   
-});
+}); #}
 // #endregion Share link
 {% endif %}
 
diff --git a/app/templates/users/settings/settings.html.j2 b/app/templates/users/settings/settings.html.j2
index 4e52344a..9b7d6b05 100644
--- a/app/templates/users/settings/settings.html.j2
+++ b/app/templates/users/settings/settings.html.j2
@@ -8,7 +8,7 @@
       <h1 id="title">{{ title }}</h1>
     </div>
 
-    <div class="col s12 l4">
+    {# <div class="col s12 l4">
       <h4>Profile Settings</h4>
       <p>You can edit your public profile here and share it with other nopaque users. 
       Tell others about your (scientific) background so they can relate and network with you. 
@@ -112,7 +112,7 @@
       </ul>
     </div>
 
-    <div class="col s12"></div>
+    <div class="col s12"></div> #}
 
     <div class="col s12 l4">
       <h4>General Settings</h4>
@@ -181,7 +181,7 @@
 
 {% block modals %}
 {{ super() }}
-<div class="modal" id="delete-avatar-modal">
+{# <div class="modal" id="delete-avatar-modal">
   <div class="modal-content">
     <h4>Confirm Avatar deletion</h4>
     <p>Do you really want to delete <b>{{ user.username }}</b>’s avatar?</p>
@@ -190,7 +190,7 @@
     <a class="btn modal-close waves-effect waves-light">Cancel</a>
     <a class="btn modal-close red waves-effect waves-light" id="delete-avatar">Delete</a>
   </div>
-</div>
+</div> #}
 
 <div class="modal" id="delete-user-modal">
   <div class="modal-content">
@@ -212,7 +212,7 @@
 {% block scripts %}
 {{ super() }}
 <script>
-let avatarPreviewElement = document.querySelector('#update-avatar-form-avatar-preview');
+{# let avatarPreviewElement = document.querySelector('#update-avatar-form-avatar-preview');
 let avatarUploadElement = document.querySelector('#update-avatar-form-avatar');
 
 avatarUploadElement.addEventListener('change', () => {
@@ -227,7 +227,7 @@ document.querySelector('#delete-avatar').addEventListener('click', () => {
         avatarPreviewElement.src = {{ url_for('static', filename='images/user_avatar.png')|tojson }};
       }
     );
-});
+}); #}
 
 document.querySelector('#delete-user').addEventListener('click', (event) => {
   Requests.users.entity.delete({{ user.hashid|tojson }})
@@ -251,7 +251,7 @@ for (let collapsibleElement of document.querySelectorAll('.collapsible.no-autoin
 }
 
 // #region Profile Privacy settings
-let profileIsPublicSwitchElement = document.querySelector('#profile-is-public-switch');
+{# let profileIsPublicSwitchElement = document.querySelector('#profile-is-public-switch');
 let profilePrivacySettingCheckboxElements = document.querySelectorAll('.profile-privacy-setting-checkbox');
 profileIsPublicSwitchElement.addEventListener('change', (event) => {
   let newEnabled = profileIsPublicSwitchElement.checked;
@@ -276,7 +276,7 @@ for (let profilePrivacySettingCheckboxElement of profilePrivacySettingCheckboxEl
         profilePrivacySettingCheckboxElement.checked = !newEnabled;
       });
   });
-}
+} #}
 // #endregion Profile Privacy settings
 </script>
 {% endblock scripts %}
diff --git a/app/users/json_routes.py b/app/users/json_routes.py
index 0e1503d6..da8ea335 100644
--- a/app/users/json_routes.py
+++ b/app/users/json_routes.py
@@ -7,54 +7,54 @@ from app.models import Avatar, User
 from . import bp
 
 
-@bp.route('/<hashid:user_id>', methods=['DELETE'])
-@content_negotiation(produces='application/json')
-def delete_user(user_id):
-    def _delete_user(app, user_id):
-        with app.app_context():
-            user = User.query.get(user_id)
-            user.delete()
-            db.session.commit()
+# @bp.route('/<hashid:user_id>', methods=['DELETE'])
+# @content_negotiation(produces='application/json')
+# def delete_user(user_id):
+#     def _delete_user(app, user_id):
+#         with app.app_context():
+#             user = User.query.get(user_id)
+#             user.delete()
+#             db.session.commit()
 
-    user = User.query.get_or_404(user_id)
-    if not (user == current_user or current_user.is_administrator()):
-        abort(403)
-    thread = Thread(
-        target=_delete_user,
-        args=(current_app._get_current_object(), user.id)
-    )
-    if user == current_user:
-        logout_user()
-    thread.start()
-    response_data = {
-        'message': f'User "{user.username}" marked for deletion'
-    }
-    return response_data, 202
+#     user = User.query.get_or_404(user_id)
+#     if not (user == current_user or current_user.is_administrator()):
+#         abort(403)
+#     thread = Thread(
+#         target=_delete_user,
+#         args=(current_app._get_current_object(), user.id)
+#     )
+#     if user == current_user:
+#         logout_user()
+#     thread.start()
+#     response_data = {
+#         'message': f'User "{user.username}" marked for deletion'
+#     }
+#     return response_data, 202
 
 
-@bp.route('/<hashid:user_id>/avatar', methods=['DELETE'])
-@content_negotiation(produces='application/json')
-def delete_user_avatar(user_id):
-    def _delete_avatar(app, avatar_id):
-        with app.app_context():
-            avatar = Avatar.query.get(avatar_id)
-            avatar.delete()
-            db.session.commit()
+# @bp.route('/<hashid:user_id>/avatar', methods=['DELETE'])
+# @content_negotiation(produces='application/json')
+# def delete_user_avatar(user_id):
+#     def _delete_avatar(app, avatar_id):
+#         with app.app_context():
+#             avatar = Avatar.query.get(avatar_id)
+#             avatar.delete()
+#             db.session.commit()
 
-    user = User.query.get_or_404(user_id)
-    if user.avatar is None:
-        abort(404)
-    if not (user == current_user or current_user.is_administrator()):
-        abort(403)
-    thread = Thread(
-        target=_delete_avatar,
-        args=(current_app._get_current_object(), user.avatar.id)
-    )
-    thread.start()
-    response_data = {
-        'message': f'Avatar marked for deletion'
-    }
-    return response_data, 202
+#     user = User.query.get_or_404(user_id)
+#     if user.avatar is None:
+#         abort(404)
+#     if not (user == current_user or current_user.is_administrator()):
+#         abort(403)
+#     thread = Thread(
+#         target=_delete_avatar,
+#         args=(current_app._get_current_object(), user.avatar.id)
+#     )
+#     thread.start()
+#     response_data = {
+#         'message': f'Avatar marked for deletion'
+#     }
+#     return response_data, 202
 
 @bp.route('/accept-terms-of-use', methods=['POST'])
 @content_negotiation(produces='application/json')
diff --git a/app/users/routes.py b/app/users/routes.py
index fbb5a609..8c817617 100644
--- a/app/users/routes.py
+++ b/app/users/routes.py
@@ -13,36 +13,36 @@ from . import bp
 from .utils import user_dynamic_list_constructor as user_dlc
 
 
-@bp.route('')
-@register_breadcrumb(bp, '.', '<i class="material-icons left">group</i>Users')
-def users():
-    return redirect(url_for('main.social_area', _anchor='users'))
+# @bp.route('')
+# @register_breadcrumb(bp, '.', '<i class="material-icons left">group</i>Users')
+# def users():
+#     return redirect(url_for('main.social_area', _anchor='users'))
 
 
-@bp.route('/<hashid:user_id>')
-@register_breadcrumb(bp, '.entity', '', dynamic_list_constructor=user_dlc)
-def user(user_id):
-    user = User.query.get_or_404(user_id)
-    if not (user.is_public or user == current_user or current_user.is_administrator()):
-        abort(403)
-    return render_template(
-        'users/user.html.j2',
-        title=user.username,
-        user=user
-    )
+# @bp.route('/<hashid:user_id>')
+# @register_breadcrumb(bp, '.entity', '', dynamic_list_constructor=user_dlc)
+# def user(user_id):
+#     user = User.query.get_or_404(user_id)
+#     if not (user.is_public or user == current_user or current_user.is_administrator()):
+#         abort(403)
+#     return render_template(
+#         'users/user.html.j2',
+#         title=user.username,
+#         user=user
+#     )
 
 
-@bp.route('/<hashid:user_id>/avatar')
-def user_avatar(user_id):
-    user = User.query.get_or_404(user_id)
-    if not (user.is_public or user == current_user or current_user.is_administrator()):
-        abort(403)
-    if user.avatar is None:
-        return redirect(url_for('static', filename='images/user_avatar.png'))
-    return send_from_directory(
-        os.path.dirname(user.avatar.path),
-        os.path.basename(user.avatar.path),
-        as_attachment=True,
-        attachment_filename=user.avatar.filename,
-        mimetype=user.avatar.mimetype
-    )
+# @bp.route('/<hashid:user_id>/avatar')
+# def user_avatar(user_id):
+#     user = User.query.get_or_404(user_id)
+#     if not (user.is_public or user == current_user or current_user.is_administrator()):
+#         abort(403)
+#     if user.avatar is None:
+#         return redirect(url_for('static', filename='images/user_avatar.png'))
+#     return send_from_directory(
+#         os.path.dirname(user.avatar.path),
+#         os.path.basename(user.avatar.path),
+#         as_attachment=True,
+#         attachment_filename=user.avatar.filename,
+#         mimetype=user.avatar.mimetype
+#     )
-- 
GitLab