def assign_admin(request, group_pk, person_pk): response = {'result': False, 'reason': 'nope'} # import pdb # pdb.set_trace() user = is_logged_in(request) if user: group = Group.objects.filter(pk=group_pk) person = User.objects.filter(pk=person_pk) if group and person: group, person = group[0], person[0] if user not in group.admins.all(): response['reason'] = "You don't have permission to perform this action" return HttpResponse(json.dumps(response), content_type="application/json") if not person in group.members.all(): response['reason'] = "The person should be a member of this group" return HttpResponse(json.dumps(response), content_type="application/json") if person in group.admins.all(): response['reason'] = "The person is already an admin of this group" return HttpResponse(json.dumps(response), content_type="application/json") person.adminOf.add(group) person.save() group.save() response['result'] = True response['message'] = "added as admin" badge = Badge.get_worth_following_badge() if badge not in person.badges.all(): person.badges.add(badge) person.points += badge.points person.save() badge.save() else: response['reason'] = "No group or person with this PK found" else: response['reason'] = "not logged in" return HttpResponse(json.dumps(response), content_type="application/json")