Server IP : 85.214.239.14 / Your IP : 3.145.90.207 Web Server : Apache/2.4.62 (Debian) System : Linux h2886529.stratoserver.net 4.9.0 #1 SMP Tue Jan 9 19:45:01 MSK 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.18 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : OFF | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /proc/2/root/proc/2/root/proc/2/cwd/srv/modoboa/env/lib64/python3.5/site-packages/modoboa/core/views/ |
Upload File : |
"""Simple user views.""" from django.contrib.auth.decorators import login_required, user_passes_test from django.shortcuts import render from django.template.loader import render_to_string from django.utils import translation from django.utils.encoding import force_text from django.utils.translation import ugettext as _ from rest_framework.authtoken.models import Token from modoboa.lib.cryptutils import encrypt from modoboa.lib.web_utils import render_to_json_response from modoboa.parameters import tools as param_tools from .. import signals from ..forms import APIAccessForm, ProfileForm @login_required def index(request, tplname="core/user_index.html"): """Render user index page.""" return render(request, tplname, {"selection": "user"}) @login_required def profile(request, tplname="core/user_profile.html"): """Profile detail/update view.""" update_password = True results = signals.allow_password_change.send( sender="profile", user=request.user) if True in [result[1] for result in results]: update_password = False password_url = request.localconfig.parameters.get_value( "update_password_url") show_password_url = False if not request.user.is_local and password_url: show_password_url = True update_password = False if request.method == "POST": form = ProfileForm( update_password, request.POST, instance=request.user ) if form.is_valid(): form.save() if update_password and form.cleaned_data["confirmation"] != "": request.session["password"] = force_text(encrypt( form.cleaned_data["confirmation"] )) translation.activate(request.user.language) request.session[translation.LANGUAGE_SESSION_KEY] = ( request.user.language) return render_to_json_response(_("Profile updated")) return render_to_json_response( {"form_errors": form.errors}, status=400) form = ProfileForm(update_password, instance=request.user) return render_to_json_response({ "content": render_to_string(tplname, { "form": form, "show_password_url": show_password_url, "password_url": password_url }, request) }) @login_required def preferences(request): if request.method == "POST": forms = param_tools.registry.get_forms( "user", request.POST, user=request.user) for formdef in forms: form = formdef["form"] if form.is_valid(): form.save() continue return render_to_json_response({ "prefix": form.app, "form_errors": form.errors }, status=400) request.user.save() return render_to_json_response(_("Preferences saved")) return render_to_json_response({ "content": render_to_string("core/user_preferences.html", { "forms": param_tools.registry.get_forms( "user", user=request.user, first_app="general") }, request), "onload_cb": "preferencesCallback", }) @login_required @user_passes_test(lambda u: u.is_superuser) def api_access(request): """A view to configure API access.""" if request.method == "POST": form = APIAccessForm(request.POST, user=request.user) if form.is_valid(): if form.cleaned_data.get("enable_api_access"): Token.objects.get_or_create(user=request.user) else: Token.objects.filter(user=request.user).delete() return render_to_json_response(_("Access updated")) return render_to_json_response({ "form_errors": form.errors }, status=400) form = APIAccessForm(user=request.user) return render_to_json_response({ "content": render_to_string( "core/api_access.html", {"form": form}, request) })