mirror of
				https://gitlab.ub.uni-bielefeld.de/sfb1288inf/nopaque.git
				synced 2025-11-04 04:12:45 +00:00 
			
		
		
		
	integrate nopaque repo
This commit is contained in:
		@@ -1,5 +0,0 @@
 | 
			
		||||
from flask import Blueprint
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
profile = Blueprint('profile', __name__)
 | 
			
		||||
from . import views  # noqa
 | 
			
		||||
@@ -1,52 +0,0 @@
 | 
			
		||||
from flask_wtf import FlaskForm
 | 
			
		||||
from wtforms import (BooleanField, PasswordField, SelectField, StringField,
 | 
			
		||||
                     SubmitField, ValidationError)
 | 
			
		||||
from wtforms.validators import DataRequired, Email, EqualTo
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class EditEmailForm(FlaskForm):
 | 
			
		||||
    email = StringField('New email', validators=[Email(), DataRequired()])
 | 
			
		||||
    save_email = SubmitField('Save email')
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class EditGeneralSettingsForm(FlaskForm):
 | 
			
		||||
    dark_mode = BooleanField('Dark mode')
 | 
			
		||||
    job_status_mail_notifications = SelectField(
 | 
			
		||||
        'Job status mail notifications',
 | 
			
		||||
        choices=[('', 'Choose your option'),
 | 
			
		||||
                 ('all', 'Notify on all status changes'),
 | 
			
		||||
                 ('end', 'Notify only when a job ended'),
 | 
			
		||||
                 ('none', 'No status update notifications')],
 | 
			
		||||
        validators=[DataRequired()])
 | 
			
		||||
    job_status_site_notifications = SelectField(
 | 
			
		||||
        'Job status site notifications',
 | 
			
		||||
        choices=[('', 'Choose your option'),
 | 
			
		||||
                 ('all', 'Notify on all status changes'),
 | 
			
		||||
                 ('end', 'Notify only when a job ended'),
 | 
			
		||||
                 ('none', 'No status update notifications')],
 | 
			
		||||
        validators=[DataRequired()])
 | 
			
		||||
    save_settings = SubmitField('Save settings')
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class EditPasswordForm(FlaskForm):
 | 
			
		||||
    current_password = PasswordField('Current password',
 | 
			
		||||
                                     validators=[DataRequired()])
 | 
			
		||||
    password = PasswordField(
 | 
			
		||||
        'New password',
 | 
			
		||||
        validators=[DataRequired(), EqualTo('password_confirmation',
 | 
			
		||||
                                            message='Passwords must match.')]
 | 
			
		||||
    )
 | 
			
		||||
    password_confirmation = PasswordField(
 | 
			
		||||
        'Password confirmation',
 | 
			
		||||
        validators=[DataRequired(),
 | 
			
		||||
                    EqualTo('password', message='Passwords must match.')]
 | 
			
		||||
    )
 | 
			
		||||
    save_password = SubmitField('Save password')
 | 
			
		||||
 | 
			
		||||
    def __init__(self, user, *args, **kwargs):
 | 
			
		||||
        super(EditPasswordForm, self).__init__(*args, **kwargs)
 | 
			
		||||
        self.user = user
 | 
			
		||||
 | 
			
		||||
    def validate_current_password(self, field):
 | 
			
		||||
        if not self.user.verify_password(field.data):
 | 
			
		||||
            raise ValidationError('Invalid password.')
 | 
			
		||||
@@ -1,16 +0,0 @@
 | 
			
		||||
from ..decorators import background
 | 
			
		||||
from ..models import User
 | 
			
		||||
import os
 | 
			
		||||
import shutil
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@background
 | 
			
		||||
def delete_user(user_id, *args, **kwargs):
 | 
			
		||||
    app = kwargs['app']
 | 
			
		||||
    with app.app_context():
 | 
			
		||||
        user = User.query.get(user_id)
 | 
			
		||||
        if user is None:
 | 
			
		||||
            raise Exception('User {} not found!'.format(user_id))
 | 
			
		||||
        path = os.path.join(app.config['NOPAQUE_STORAGE'], str(user.id))
 | 
			
		||||
        shutil.rmtree(path, ignore_errors=True)
 | 
			
		||||
        user.delete()
 | 
			
		||||
@@ -1,69 +0,0 @@
 | 
			
		||||
from flask import flash, redirect, render_template, url_for
 | 
			
		||||
from flask_login import current_user, login_required, logout_user
 | 
			
		||||
from . import profile
 | 
			
		||||
from . import tasks
 | 
			
		||||
from .forms import EditEmailForm, EditGeneralSettingsForm, EditPasswordForm
 | 
			
		||||
from .. import db
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@profile.route('/settings', methods=['GET', 'POST'])
 | 
			
		||||
@login_required
 | 
			
		||||
def settings():
 | 
			
		||||
    edit_email_form = EditEmailForm(prefix='edit-email-form')
 | 
			
		||||
    edit_general_settings_form = EditGeneralSettingsForm(
 | 
			
		||||
        prefix='edit-general-settings-form')
 | 
			
		||||
    edit_password_form = EditPasswordForm(prefix='edit-password-form',
 | 
			
		||||
                                          user=current_user)
 | 
			
		||||
    # Check if edit_email_form is submitted and valid
 | 
			
		||||
    if (edit_email_form.save_email.data
 | 
			
		||||
            and edit_email_form.validate_on_submit()):
 | 
			
		||||
        db.session.add(current_user)
 | 
			
		||||
        db.session.commit()
 | 
			
		||||
        flash('Your email address has been updated.')
 | 
			
		||||
        return redirect(url_for('profile.settings'))
 | 
			
		||||
    # Check if edit_settings_form is submitted and valid
 | 
			
		||||
    if (edit_general_settings_form.save_settings.data
 | 
			
		||||
            and edit_general_settings_form.validate_on_submit()):
 | 
			
		||||
        current_user.setting_dark_mode = \
 | 
			
		||||
            edit_general_settings_form.dark_mode.data
 | 
			
		||||
        current_user.setting_job_status_mail_notifications = \
 | 
			
		||||
            edit_general_settings_form.job_status_mail_notifications.data
 | 
			
		||||
        current_user.setting_job_status_site_notifications = \
 | 
			
		||||
            edit_general_settings_form.job_status_site_notifications.data
 | 
			
		||||
        db.session.add(current_user)
 | 
			
		||||
        db.session.commit()
 | 
			
		||||
        flash('Your settings have been updated.')
 | 
			
		||||
        return redirect(url_for('profile.settings'))
 | 
			
		||||
    # Check if edit_password_form is submitted and valid
 | 
			
		||||
    if (edit_password_form.save_password.data
 | 
			
		||||
            and edit_password_form.validate_on_submit()):
 | 
			
		||||
        current_user.password = edit_password_form.password.data
 | 
			
		||||
        db.session.add(current_user)
 | 
			
		||||
        db.session.commit()
 | 
			
		||||
        flash('Your password has been updated.')
 | 
			
		||||
        return redirect(url_for('profile.settings'))
 | 
			
		||||
    # If no form is submitted or valid, fill out fields with current values
 | 
			
		||||
    edit_email_form.email.data = current_user.email
 | 
			
		||||
    edit_general_settings_form.dark_mode.data = current_user.setting_dark_mode
 | 
			
		||||
    edit_general_settings_form.job_status_site_notifications.data = \
 | 
			
		||||
        current_user.setting_job_status_site_notifications
 | 
			
		||||
    edit_general_settings_form.job_status_mail_notifications.data = \
 | 
			
		||||
        current_user.setting_job_status_mail_notifications
 | 
			
		||||
    return render_template(
 | 
			
		||||
        'profile/settings.html.j2',
 | 
			
		||||
        edit_email_form=edit_email_form,
 | 
			
		||||
        edit_password_form=edit_password_form,
 | 
			
		||||
        edit_general_settings_form=edit_general_settings_form,
 | 
			
		||||
        title='Settings')
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@profile.route('/delete', methods=['GET', 'POST'])
 | 
			
		||||
@login_required
 | 
			
		||||
def delete():
 | 
			
		||||
    """
 | 
			
		||||
    View to delete yourslef and all associated data.
 | 
			
		||||
    """
 | 
			
		||||
    tasks.delete_user(current_user.id)
 | 
			
		||||
    logout_user()
 | 
			
		||||
    flash('Your account has been deleted!')
 | 
			
		||||
    return redirect(url_for('main.index'))
 | 
			
		||||
		Reference in New Issue
	
	Block a user