Source code for accounts.views.admin

from django.contrib.auth.decorators import login_required
from django.http import HttpResponse
from django.shortcuts import get_object_or_404, render
from django.urls import reverse
from django.utils import timezone
from django.views.decorators.http import require_POST

from accounts.models import User, UnregisteredUser
from cobalt.settings import GLOBAL_TITLE, GLOBAL_ORG
from logs.views import log_event

# from masterpoints.views import user_summary
from notifications.views.core import send_cobalt_email_with_template
from organisations.models import Organisation
from organisations.club_admin_core import mark_player_as_deceased
from utils.utils import cobalt_paginator


[docs] @login_required() @require_POST def admin_toggle_user_is_active(request): """Activate or deactivate a user""" if not request.user.is_superuser: return HttpResponse("Forbidden") if "user_id" in request.POST: user_id = request.POST.get("user_id") user = get_object_or_404(User, pk=user_id) user.is_active = not user.is_active user.save() log_event( request.user, "WARN", "Accounts", "admin-activate", f"{user} is_active status changed to {user.is_active}", ) return render( request, "accounts/profile/public_profile_header_admin.html", {"profile": user} )
[docs] @login_required() @require_POST def admin_mark_user_deceased(request): """Mark user as deceased""" if not request.user.is_superuser: return HttpResponse("Forbidden") if "user_id" in request.POST: user_id = request.POST.get("user_id") user = get_object_or_404(User, pk=user_id) mark_player_as_deceased(user.system_number, request.user) log_event( request.user, "WARN", "Accounts", "admin-deceased", f"{user} marked as deceased", ) user = get_object_or_404(User, pk=user_id) return render( request, "accounts/profile/public_profile_header_admin.html", {"profile": user} )
[docs] @login_required() def user_signed_up_list(request): """Show users who have signed up Args: request(HTTPRequest): standard request Returns: Page """ users = User.objects.order_by("-date_joined") things = cobalt_paginator(request, users) total_users = User.objects.count() return render( request, "accounts/general/user_signed_up_list.html", {"things": things, "total_users": total_users}, )
[docs] def invite_to_join( un_reg: UnregisteredUser, email: str, requested_by_user: User, requested_by_org: Organisation, ): """Invite an unregistered user to sign up Args: un_reg: An unregistered user object email: email address to send to requested_by_user: User who is inviting this person requested_by_org: Org making request """ email_body = f""" {requested_by_user.full_name} from {requested_by_org} is inviting you to sign up for {GLOBAL_TITLE}. This is free for {GLOBAL_ORG} members. <br><br> Benefits of signing up include: <ul> <li>View and enter events across the country <li>Use a single account to pay for all you bridge at participating clubs <li>Use credit card auto top up to add funds to your account automatically <li>Use club pre-paid systems to pay for your normal duplicate bridge <li>Manage your preference to receive information on things that interest you <li>Use forums to follow topics of interest and to communicate with other members </ul> Click the link below to sign up now. It's Free! <br><br> """ link = reverse( "accounts:register", kwargs={"system_number": un_reg.system_number, "email": email}, ) context = { "name": un_reg.first_name, "title": f"Sign Up for {GLOBAL_TITLE}", "link_text": "Sign Up", "link": link, "email_body": email_body, "unregistered_identifier": un_reg.identifier, } if send_cobalt_email_with_template( to_address=email, context=context, apply_default_template_for_club=requested_by_org, ): un_reg.last_registration_invite_sent = timezone.now() un_reg.last_registration_invite_by_user = requested_by_user un_reg.last_registration_invite_by_club = requested_by_org un_reg.save() return True return False