Beispiel #1
0
def complete_task(request, pk, person_pk):
    response = {'result': False, 'reason': 'nope'}
    # import pdb
    # pdb.set_trace()
    user = is_logged_in(request)
    if user:
        task = Task.objects.filter(pk=pk)
        person = User.objects.filter(pk=person_pk)
        if task and person:
            task, person = task[0], person[0]
            if not (user in task.assigner.all() or user in task.group.first().admins.all()):
                response['reason'] = "You don't have permission to mark it complete"
                return HttpResponse(json.dumps(response), content_type="application/json")
            if person in task.assignedto.all():
                task.completedby.add(person)
                task.save()
                person.points += task.points
                person.save()
                response['result'] = True
                response['message'] = "Done"

                badge = Badge.get_well_begun_is_half_done_badge()
                if badge not in person.badges.all():
                    person.badges.add(badge)
                    person.points += badge.points
                    person.save()
                    badge.save()

                if person.completedtasks.count() > 10:
                    badge = Badge.get_dependable_badge()
                    if badge not in person.badges.all():
                        person.badges.add(badge)
                        person.points += badge.points
                        person.save()
                        badge.save()
            else:
                response['reason'] = "This person was never assigned this task"
        else:
            response['reason'] = "Task with this pk does not exist"
    else:
        response['reason'] = "not logged in"
    return HttpResponse(json.dumps(response), content_type="application/json")