def set_as_admin(request, pk): user = get_object_or_404(User, pk=pk) if request.user.is_superuser: user.is_staff = True user.is_admin = True user.is_superuser = True try: user_data = user.userdata except UserData.DoesNotExist: user_data = UserData() user_data.user = user user_data.save() old_role = user_data.role user_data.role = "admin" user.is_staff = True user.is_superuser = True user_data.save() user.save() action = Action(user=request.user, target=str(user)) action.action = "set user as admin" action.timestamp = timezone.now() action.save() Cruise.objects.filter(leader=user).update( missing_information_cache_outdated=True) messages.add_message(request, messages.WARNING, mark_safe('User ' + str(user) + ' set as admin.')) if old_role == "": send_user_approval_email(request, user) else: raise PermissionDenied return redirect(request.META['HTTP_REFERER'])
def check_for_and_fix_users_without_userdata(): from django.contrib.auth.models import User from django.core.exceptions import PermissionDenied, ObjectDoesNotExist from reserver.models import UserData, Organization for user in User.objects.all(): # check for users without user data, and add them to unapproved users if they're not admins # these may be legacy accounts or accounts created using manage.py's adduser try: user.userdata except ObjectDoesNotExist: user_data = UserData() if user.is_superuser: user_data.role = "admin" user_data.organization = Organization.objects.get(name="R/V Gunnerus") else: user_data.role = "" user_data.user = user user_data.save()