Ejemplo n.º 1
0
def add_todo(request):
    data = request.POST
    todo = Todo()
    todo.title = data.get('title', '')
    todo.deadline = data.get('deadline', '')
    todo.save()
    return JsonResponse(todo.to_json(), status=201)
Ejemplo n.º 2
0
 def put(self, request):
     """ Update a todo """
     data = request.data
     todo_id = data['id']
     desc = data['description']
     done = data['done']
     bucket = data['bucket']
     t = Todo(id=todo_id, bucket= bucket, user=str(request.user), description=desc,\
              done=done, updated=datetime.now())
     t.save()
     return Response(status=status.HTTP_200_OK)
Ejemplo n.º 3
0
 def post(self, request):
     " Adding a new todo." ""
     data = request.data
     user = request.user
     t = Todo(user=user,
              bucket=data['bucket'],
              description=data['description'],
              done=False)
     t.save()
     request.data['id'] = t.pk  # return id
     return Response(request.data, status=status.HTTP_201_CREATED)
Ejemplo n.º 4
0
def create_todo(json_resp, response):
    valid = True
    success = True
    new_todo = Todo()
    for key in json_resp:
        if hasattr(new_todo, key):
            setattr(new_todo, key, json_resp[key])
        else:
            valid = False
            # response['status'] = 400
            reason = "Todo does not have attribute: %s" % key
            error_obj = build_error_obj(status=404,
                                        code="Failed",
                                        title="Invalid attribute",
                                        detail=reason)
            response['errors'].append(error_obj)

    if valid:
        valid, response = validate_new_todo(new_todo, response)

    if valid:
        try:
            new_todo.save()
        except:
            success = False
            reason = "Unable to create todo"
            error_obj = build_error_obj(status=404,
                                        code="Failed",
                                        title="Unable to create",
                                        detail=reason)
            response['errors'].append(error_obj)

        if success:
            # response['status'] = 201
            for key in json_resp:
                response['data'][key] = json_resp[key]
            response.pop("errors", None)
        else:
            # response['status'] = 500
            response['code'] = "Failed"
            response.pop('data', None)
    else:
        # response['status'] = 400
        response['code'] = "Failed"
        response.pop("data", None)

    return response
Ejemplo n.º 5
0
def index(request):
    tasks = Todo.objects.all()
    default_status = False
    if request.method == 'POST':
        if request.POST.get("save"):
            for i in tasks:
                if request.POST.get(str(i.id)) == "clicked":
                    i.completed = True
                else:
                    i.completed = False
                i.save()

        elif request.POST.get("delete") == "delete":
            for i in tasks:
                i.delete()

        else:
            new_task = Todo(title=request.POST['title'],
                            completed=default_status)
            new_task.save()

        return redirect('/')

    return render(request, 'index.html', {'tasks': tasks})
Ejemplo n.º 6
0
def create_update(request):
    title = request.POST.get('title')
    if not title:
        return redirect(reverse('web:index'))

    # get priority if supplied
    if title.strip().endswith('!'):
        priority = Todo.HIGH
        title = title.strip()[:-1].strip()
    else:
        priority = Todo.LOW

    # get date if defined
    if '^' in title:
        date = title.split('^')[1].split()[0]
        title = title.split('^')[0].strip()

        # parse date to datetime object
        date = timezone.datetime.strptime(date, '%m/%d/%Y')
    else:
        date = None

    todo_id = request.POST.get('todo_id')
    if todo_id:
        todo = get_object_or_404(Todo, id=todo_id)
    else:
        todo = Todo()
        todo.owner = request.user
        todo.completed = False

    todo.title = title
    todo.priority = priority
    todo.due_date = date
    todo.save()

    return redirect(reverse('web:index'))
Ejemplo n.º 7
0
 def create(self, validated_data):
     todo = Todo(**validated_data)
     todo.save()
     return todo
Ejemplo n.º 8
0
def TodoView(request, todo_id=None):

    if request.method == 'GET' and request.resolver_match.url_name == 'todos':
        todos = Todo.objects.filter(user=request.user).order_by('-updated_at')
        todo_serializer = TodoListSerializer(todos, many=True)
        return Response(todo_serializer.data, status=200)

    if request.method == 'GET' and request.resolver_match.url_name == 'shared_todos':
        todos = Todo.objects.filter(assigned_users=request.user)
        todo_serializer = TodoListSerializer(todos, many=True)
        return Response(todo_serializer.data, status=200)

    if request.method == 'GET' and request.resolver_match.url_name == 'todo':

        if not todo_id:
            return Response({'error': 'Todo id is missing'}, status=400)

        try:
            todo = Todo.objects.get(id=todo_id)
        except Todo.DoesNotExist:
            return Response({'error': 'Not Found Todo'}, status=404)

        if todo.user != request.user and not todo.assigned_users.filter(
                username=request.user.username).exists():
            return Response({'error': 'Permission Denied'}, status=403)

        todo_serializer = TodoSerializer(todo, many=False)

        return Response(todo_serializer.data, status=200)

    if request.method == 'PUT' and request.resolver_match.url_name == 'todos':

        _id = request.data.get('id', None)
        title = request.data.get('title', None)
        status = request.data.get('status', False)
        content = request.data.get('content', '')

        if not title:
            return Response({'error': 'Title is missing'}, status=400)

        if _id:  # For Update
            try:
                todo = Todo.objects.get(id=_id)
            except Todo.DoesNotExist:
                return Response({'error': 'Todo not Found'}, status=404)

            if todo.user != request.user and not todo.assigned_users.filter(
                    username=request.user.username).exists():
                return Response({'error': 'Permission Denied'}, status=403)
        else:
            todo = Todo()

        if not _id:
            todo.user = request.user

        todo.title = title
        todo.content = content
        todo.status = status
        todo.updated_at = timezone.now()
        if not _id:
            todo.created_at = timezone.now()

        todo.save()
        return Response({
            'success': 'todo is created',
            'id': todo.id
        },
                        status=201)

    if request.method == 'POST' and request.resolver_match.url_name == 'users':

        if not todo_id:
            return Response({'error': 'Todo id is missing'}, status=400)

        try:
            todo = Todo.objects.get(id=todo_id)
        except Todo.DoesNotExist:
            return Response({'error': 'Not Found Todo'}, status=404)

        if todo.user != request.user:
            return Response({'error': 'Permission Denied'}, status=403)

        usr_email = request.data.get('email', None)

        if not usr_email:
            return Response({'error': 'User is missing'}, status=400)

        try:
            user = User.objects.get(email=usr_email)
        except User.DoesNotExist:
            return Response({'error': 'User Not Found'}, status=404)

        if not todo.assigned_users.filter(username=user.username).exists():
            todo.assigned_users.add(user)

        return Response({'success': 'added user'}, status=200)

    if request.method == 'DELETE' and request.resolver_match.url_name == 'todo':

        if not todo_id:
            return Response({'error': 'Todo id is missing'}, status=400)

        try:
            todo = Todo.objects.get(id=todo_id)
        except Todo.DoesNotExist:
            return Response({'error': 'Not Found Todo'}, status=404)

        if todo.user != request.user:
            return Response({'error': 'Permission Denied'}, status=403)

        todo.delete()
        return Response({'success': 'todo is deleted'}, status=200)

    if request.method == 'DELETE' and request.resolver_match.url_name == 'users':

        if not todo_id:
            return Response({'error': 'Todo id is missing'}, status=400)

        try:
            todo = Todo.objects.get(id=todo_id)
        except Todo.DoesNotExist:
            return Response({'error': 'Not Found Todo'}, status=404)

        if todo.user != request.user:
            return Response({'error': 'Permission Denied'}, status=403)

        email = request.query_params.get('email', None)

        if not email:
            return Response({'error': 'Email is missing'}, status=400)

        try:
            user = User.objects.get(email=email)
        except User.DoesNotExist:
            return Response({'error': 'User not Found'}, status=404)

        if todo.assigned_users.filter(email=email).exists():
            todo.assigned_users.remove(user)
            return Response({'success': 'User removed the todo list'},
                            status=200)

        return Response({'error': 'Bad Request'}, status=400)
Ejemplo n.º 9
0
from django.contrib.auth.models import User
from api.models import Todo

# usr = User.objects.get(id=1)

todo_1 = Todo(title="First things first")
todo_1.save()

todo_2 = Todo(title="Finish first thing", is_completed=True)
todo_2.save()

todo_3 = Todo(title="Do other things")
todo_3.save()
Ejemplo n.º 10
0
 def create(self, validated_data):
     basket = validated_data.pop('basket', None)
     instance = Todo(**validated_data)
     instance.basket_id = basket.get('name')
     instance.save()
     return instance