mirror of
https://gitlab.ub.uni-bielefeld.de/sfb1288inf/nopaque.git
synced 2024-12-25 10:54:18 +00:00
move settings related json routes to users package
This commit is contained in:
parent
2289106ac7
commit
f1d8b81923
@ -65,10 +65,10 @@ def user_settings(user_id):
|
|||||||
user = User.query.get_or_404(user_id)
|
user = User.query.get_or_404(user_id)
|
||||||
update_account_information_form = UpdateAccountInformationForm(user=user)
|
update_account_information_form = UpdateAccountInformationForm(user=user)
|
||||||
update_profile_information_form = UpdateProfileInformationForm(user=user)
|
update_profile_information_form = UpdateProfileInformationForm(user=user)
|
||||||
update_avatar_form = UpdateAvatarForm(user=user)
|
update_avatar_form = UpdateAvatarForm()
|
||||||
update_password_form = UpdatePasswordForm(user=user)
|
update_password_form = UpdatePasswordForm(user=user)
|
||||||
update_notifications_form = UpdateNotificationsForm(user=user)
|
update_notifications_form = UpdateNotificationsForm(user=user)
|
||||||
update_user_form = UpdateUserForm(user)
|
update_user_form = UpdateUserForm(user=user)
|
||||||
|
|
||||||
# region handle update profile information form
|
# region handle update profile information form
|
||||||
if update_profile_information_form.submit.data and update_profile_information_form.validate():
|
if update_profile_information_form.submit.data and update_profile_information_form.validate():
|
||||||
|
@ -2,5 +2,4 @@ from flask import Blueprint
|
|||||||
|
|
||||||
|
|
||||||
bp = Blueprint('settings', __name__)
|
bp = Blueprint('settings', __name__)
|
||||||
from . import routes, json_routes
|
from . import routes
|
||||||
|
|
||||||
|
@ -1,6 +0,0 @@
|
|||||||
from flask import request, url_for
|
|
||||||
from app.models import User
|
|
||||||
|
|
||||||
|
|
||||||
def user_endpoint_arguments_constructor():
|
|
||||||
return {'user_id': request.view_args['user_id']}
|
|
@ -1,45 +0,0 @@
|
|||||||
/*****************************************************************************
|
|
||||||
* Settings *
|
|
||||||
* Fetch requests for /settings routes *
|
|
||||||
*****************************************************************************/
|
|
||||||
Requests.settings = {};
|
|
||||||
|
|
||||||
Requests.settings.entity = {};
|
|
||||||
|
|
||||||
Requests.settings.entity.delete = (userId) => {
|
|
||||||
let input = `/settings/${userId}`;
|
|
||||||
let init = {
|
|
||||||
method: 'DELETE'
|
|
||||||
};
|
|
||||||
return Requests.JSONfetch(input, init);
|
|
||||||
}
|
|
||||||
|
|
||||||
Requests.settings.entity.deleteAvatar = (userId) => {
|
|
||||||
let input = `/settings/${userId}/avatar`;
|
|
||||||
let init = {
|
|
||||||
method: 'DELETE'
|
|
||||||
};
|
|
||||||
return Requests.JSONfetch(input, init);
|
|
||||||
}
|
|
||||||
|
|
||||||
Requests.settings.entity.isPublic = {};
|
|
||||||
|
|
||||||
Requests.settings.entity.isPublic.update = (userId, isPublic) => {
|
|
||||||
let input = `/settings/${userId}/is-public`;
|
|
||||||
let init = {
|
|
||||||
method: 'PUT',
|
|
||||||
body: JSON.stringify(isPublic)
|
|
||||||
};
|
|
||||||
return Requests.JSONfetch(input, init);
|
|
||||||
};
|
|
||||||
|
|
||||||
Requests.settings.entity.profilePrivacySettings = {};
|
|
||||||
|
|
||||||
Requests.settings.entity.profilePrivacySettings.update = (userId, profilePrivacySetting, enabled) => {
|
|
||||||
let input = `/settings/${userId}/profile-privacy-settings/${profilePrivacySetting}`;
|
|
||||||
let init = {
|
|
||||||
method: 'PUT',
|
|
||||||
body: JSON.stringify(enabled)
|
|
||||||
};
|
|
||||||
return Requests.JSONfetch(input, init);
|
|
||||||
}
|
|
@ -6,10 +6,33 @@ Requests.users = {};
|
|||||||
|
|
||||||
Requests.users.entity = {};
|
Requests.users.entity = {};
|
||||||
|
|
||||||
Requests.settings.entity.delete = (userId) => {
|
Requests.users.entity.delete = (userId) => {
|
||||||
let input = `/users/${userId}`;
|
let input = `/users/${userId}`;
|
||||||
let init = {
|
let init = {
|
||||||
method: 'DELETE'
|
method: 'DELETE'
|
||||||
};
|
};
|
||||||
return Requests.JSONfetch(input, init);
|
return Requests.JSONfetch(input, init);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Requests.users.entity.settings = {};
|
||||||
|
|
||||||
|
Requests.users.entity.settings.avatar = {};
|
||||||
|
|
||||||
|
Requests.users.entity.settings.avatar.delete = (userId) => {
|
||||||
|
let input = `/users/${userId}/settings/avatar`;
|
||||||
|
let init = {
|
||||||
|
method: 'DELETE'
|
||||||
|
};
|
||||||
|
return Requests.JSONfetch(input, init);
|
||||||
|
}
|
||||||
|
|
||||||
|
Requests.users.entity.settings.profilePrivacy = {};
|
||||||
|
|
||||||
|
Requests.users.entity.settings.profilePrivacy.update = (userId, profilePrivacySetting, enabled) => {
|
||||||
|
let input = `/users/${userId}/settings/profile-privacy/${profilePrivacySetting}`;
|
||||||
|
let init = {
|
||||||
|
method: 'PUT',
|
||||||
|
body: JSON.stringify(enabled)
|
||||||
|
};
|
||||||
|
return Requests.JSONfetch(input, init);
|
||||||
|
}
|
||||||
|
@ -66,7 +66,6 @@
|
|||||||
'js/Requests/corpora/files.js',
|
'js/Requests/corpora/files.js',
|
||||||
'js/Requests/corpora/followers.js',
|
'js/Requests/corpora/followers.js',
|
||||||
'js/Requests/jobs/jobs.js',
|
'js/Requests/jobs/jobs.js',
|
||||||
'js/Requests/settings/settings.js',
|
|
||||||
'js/Requests/users/users.js'
|
'js/Requests/users/users.js'
|
||||||
%}
|
%}
|
||||||
<script src="{{ ASSET_URL }}"></script>
|
<script src="{{ ASSET_URL }}"></script>
|
||||||
|
@ -212,7 +212,7 @@ avatarUploadElement.addEventListener('change', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
deleteAvatarButtonElement.addEventListener('click', () => {
|
deleteAvatarButtonElement.addEventListener('click', () => {
|
||||||
Requests.settings.entity.deleteAvatar({{ user.hashid|tojson }})
|
Requests.users.entity.settings.avatar.delete({{ user.hashid|tojson }})
|
||||||
.then(
|
.then(
|
||||||
(response) => {
|
(response) => {
|
||||||
avatarPreviewElement.src = {{ url_for('static', filename='images/user_avatar.png')|tojson }};
|
avatarPreviewElement.src = {{ url_for('static', filename='images/user_avatar.png')|tojson }};
|
||||||
@ -245,16 +245,16 @@ for (let collapsibleElement of document.querySelectorAll('.collapsible.no-autoin
|
|||||||
let profileIsPublicSwitchElement = document.querySelector('#profile-is-public-switch');
|
let profileIsPublicSwitchElement = document.querySelector('#profile-is-public-switch');
|
||||||
let profilePrivacySettingCheckboxElements = document.querySelectorAll('.profile-privacy-setting-checkbox');
|
let profilePrivacySettingCheckboxElements = document.querySelectorAll('.profile-privacy-setting-checkbox');
|
||||||
profileIsPublicSwitchElement.addEventListener('change', (event) => {
|
profileIsPublicSwitchElement.addEventListener('change', (event) => {
|
||||||
let newIsPublic = profileIsPublicSwitchElement.checked;
|
let newEnabled = profileIsPublicSwitchElement.checked;
|
||||||
Requests.settings.entity.isPublic.update({{ user.hashid|tojson }}, newIsPublic)
|
Requests.users.entity.settings.profilePrivacy.update({{ user.hashid|tojson }}, 'is-public', newEnabled)
|
||||||
.then(
|
.then(
|
||||||
(response) => {
|
(response) => {
|
||||||
for (let profilePrivacySettingCheckboxElement of document.querySelectorAll('.profile-privacy-setting-checkbox')) {
|
for (let profilePrivacySettingCheckboxElement of document.querySelectorAll('.profile-privacy-setting-checkbox')) {
|
||||||
profilePrivacySettingCheckboxElement.disabled = !newIsPublic;
|
profilePrivacySettingCheckboxElement.disabled = !newEnabled;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
(response) => {
|
(response) => {
|
||||||
profileIsPublicSwitchElement.checked = !newIsPublic;
|
profileIsPublicSwitchElement.checked = !newEnabled;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
@ -262,7 +262,7 @@ for (let profilePrivacySettingCheckboxElement of profilePrivacySettingCheckboxEl
|
|||||||
profilePrivacySettingCheckboxElement.addEventListener('change', (event) => {
|
profilePrivacySettingCheckboxElement.addEventListener('change', (event) => {
|
||||||
let newEnabled = profilePrivacySettingCheckboxElement.checked;
|
let newEnabled = profilePrivacySettingCheckboxElement.checked;
|
||||||
let valueName = profilePrivacySettingCheckboxElement.dataset.profilePrivacySettingName;
|
let valueName = profilePrivacySettingCheckboxElement.dataset.profilePrivacySettingName;
|
||||||
Requests.settings.entity.profilePrivacySettings.update({{ user.hashid|tojson }}, valueName, newEnabled)
|
Requests.users.entity.settings.profilePrivacy.update({{ user.hashid|tojson }}, valueName, newEnabled)
|
||||||
.catch((response) => {
|
.catch((response) => {
|
||||||
profilePrivacySettingCheckboxElement.checked = !newEnabled;
|
profilePrivacySettingCheckboxElement.checked = !newEnabled;
|
||||||
});
|
});
|
||||||
|
@ -3,4 +3,4 @@ from flask import Blueprint
|
|||||||
|
|
||||||
bp = Blueprint('users', __name__)
|
bp = Blueprint('users', __name__)
|
||||||
from . import events, routes
|
from . import events, routes
|
||||||
|
from . import settings
|
||||||
|
2
app/users/settings/__init__.py
Normal file
2
app/users/settings/__init__.py
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
from .. import bp
|
||||||
|
from . import json_routes
|
@ -1,5 +1,5 @@
|
|||||||
from flask import abort, current_app, request
|
from flask import abort, current_app, request
|
||||||
from flask_login import current_user, login_required, logout_user
|
from flask_login import login_required
|
||||||
from threading import Thread
|
from threading import Thread
|
||||||
import os
|
import os
|
||||||
from app import db
|
from app import db
|
||||||
@ -8,14 +8,15 @@ from app.models import Avatar, User, ProfilePrivacySettings
|
|||||||
from . import bp
|
from . import bp
|
||||||
|
|
||||||
|
|
||||||
@bp.route('/<hashid:user_id>/avatar', methods=['DELETE'])
|
@bp.route('/<hashid:user_id>/settings/avatar', methods=['DELETE'])
|
||||||
@content_negotiation(produces='application/json')
|
@content_negotiation(produces='application/json')
|
||||||
def delete_profile_avatar(user_id):
|
def delete_user_avatar(user_id):
|
||||||
def _delete_avatar(app, avatar_id):
|
def _delete_avatar(app, avatar_id):
|
||||||
with app.app_context():
|
with app.app_context():
|
||||||
avatar = Avatar.query.get(avatar_id)
|
avatar = Avatar.query.get(avatar_id)
|
||||||
avatar.delete()
|
avatar.delete()
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
user = User.query.get_or_404(user_id)
|
user = User.query.get_or_404(user_id)
|
||||||
if user.avatar is None:
|
if user.avatar is None:
|
||||||
abort(404)
|
abort(404)
|
||||||
@ -30,27 +31,27 @@ def delete_profile_avatar(user_id):
|
|||||||
return response_data, 202
|
return response_data, 202
|
||||||
|
|
||||||
|
|
||||||
@bp.route('/<hashid:user_id>/is-public', methods=['PUT'])
|
@bp.route('/<hashid:user_id>/settings/profile-privacy/is-public', methods=['PUT'])
|
||||||
@login_required
|
@login_required
|
||||||
@content_negotiation(consumes='application/json', produces='application/json')
|
@content_negotiation(consumes='application/json', produces='application/json')
|
||||||
def update_user_is_public(user_id):
|
def update_user_profile_privacy_setting_is_public(user_id):
|
||||||
|
user = User.query.get_or_404(user_id)
|
||||||
is_public = request.json
|
is_public = request.json
|
||||||
if not isinstance(is_public, bool):
|
if not isinstance(is_public, bool):
|
||||||
abort(400)
|
abort(400)
|
||||||
user = User.query.get_or_404(user_id)
|
|
||||||
user.is_public = is_public
|
user.is_public = is_public
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
response_data = {
|
response_data = {
|
||||||
'message': 'Profile privacy settings updated',
|
'message': 'Profile privacy settings updated',
|
||||||
'category': 'corpus'
|
'category': 'settings'
|
||||||
}
|
}
|
||||||
return response_data, 200
|
return response_data, 200
|
||||||
|
|
||||||
|
|
||||||
@bp.route('/<hashid:user_id>/profile-privacy-settings/<string:profile_privacy_setting_name>', methods=['PUT'])
|
@bp.route('/<hashid:user_id>/settings/profile-privacy/<string:profile_privacy_setting_name>', methods=['PUT'])
|
||||||
@login_required
|
@login_required
|
||||||
@content_negotiation(consumes='application/json', produces='application/json')
|
@content_negotiation(consumes='application/json', produces='application/json')
|
||||||
def add_profile_privacy_settings(user_id, profile_privacy_setting_name):
|
def update_user_profile_privacy_settings(user_id, profile_privacy_setting_name):
|
||||||
user = User.query.get_or_404(user_id)
|
user = User.query.get_or_404(user_id)
|
||||||
enabled = request.json
|
enabled = request.json
|
||||||
if not isinstance(enabled, bool):
|
if not isinstance(enabled, bool):
|
||||||
@ -66,6 +67,6 @@ def add_profile_privacy_settings(user_id, profile_privacy_setting_name):
|
|||||||
db.session.commit()
|
db.session.commit()
|
||||||
response_data = {
|
response_data = {
|
||||||
'message': 'Profile privacy settings updated',
|
'message': 'Profile privacy settings updated',
|
||||||
'category': 'corpus'
|
'category': 'settings'
|
||||||
}
|
}
|
||||||
return response_data, 200
|
return response_data, 200
|
Loading…
Reference in New Issue
Block a user