示例#1
0
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")