Example #1
0
 def mutate(self, args, request, info):
     with make_session_scope() as sess:
         todo_item = TodoItem(**args, is_done=False)
         sess.add(todo_item)
         sess.commit()
         todo = sess.query(Todo).get(args.get('todo_id'))
         return AddTodoItem(ok=True, user=todo.user)
Example #2
0
 def post(self, **kwargs):
     data = super().post()
     todo_list = self.get_todo_list(**kwargs)
     new_todo_item = TodoItem(content=data.get('content'), todo_list=todo_list)
     self.session.add(new_todo_item)
     self.session.commit()
     return self.make_response(new_todo_item.serialize())
Example #3
0
def addItem(listid, item):
    if listid is None or item is None:
        return abort()
    list = TodoList.query.filter_by(id=listid).first()
    if list is None:
        return abort()
    newItem = TodoItem(list=list, description=item)
    db.session.add(newItem)
    db.session.commit()
    return redirect(url_for("routes.viewList", listid = listid))
Example #4
0
def new_todo():
    if request.method == 'POST':
        todo = TodoItem(name=request.form['name'],
                        deadline_date=datetime.datetime.strptime(
                            request.form['deadline_date'], "%m/%d/%Y").date(),
                        users_id=current_user.id)
        db.session.add(todo)
        db.session.commit()
        return redirect(url_for('success'))
    return render_template('new-todo.html', page='new-todo')
Example #5
0
def todo(request, project_name):
    """Allows to create a new todolist and todoitems.
    Actions available here:
    Add a todolist: Owner Participant
    Add a todoitem: Owner Participant
    """
    project = get_project(request, project_name)
    access = get_access(project, request.user)
    if request.GET.get('includecomplete', 0):
        lists = TodoList.objects.filter(user=request.user, project=project)
    else:
        lists = TodoList.objects.filter(user=request.user, project=project, is_complete_attr=False)
    addlistform = bforms.AddTodoListForm()
    if request.method == 'POST':
        if request.POST.has_key('addlist'):
            addlistform = bforms.AddTodoListForm(project, request.user, request.POST)
            if addlistform.is_valid():
                addlistform.save()
                return HttpResponseRedirect('.')
        elif request.POST.has_key('additem'):
            id = int(request.POST['id'])
            list = TodoList.objects.get(id=id)
            text_id = '%s-text' % list.id
            if request.POST[text_id]:
                item = TodoItem(list=list, text=request.POST[text_id])
                item.save()
        elif request.POST.has_key('listmarkdone'):
            id = int(request.POST['id'])
            list = TodoList.objects.get(id=id)
            list.is_complete = True
            list.save()
            return HttpResponseRedirect('.')
        elif request.POST.has_key('itemmarkdone'):
            id = int(request.POST['id'])
            todoitem = TodoItem.objects.get(id=id)
            todoitem.is_complete = True
            todoitem.save()
            return HttpResponseRedirect('.')

    if request.method == 'GET':
        addlistform = bforms.AddTodoListForm()

    if request.GET.get('csv', ''):
        response, writer = reponse_for_cvs(project=project)
        writer.writerow(('Todo Lists',))
        writer.writerow(TodoList.as_csv_header())
        lists = TodoList.objects.filter(user=request.user, project=project)
        for list in lists:
            writer.writerow(list.as_csv())
        for list in lists:
            for item in list.todoitem_set.all():
                writer.writerow(item.as_csv())
        return response
    payload = {'project': project, 'lists': lists, 'addlistform': addlistform}
    return render(request, 'project/todo.html', payload)
Example #6
0
def create_dummy_data():
    for i in range(10):
        new_list = TodoList(name=randomword(10))
        for i2 in range(10):
            new_item = TodoItem(
                content=randomword(100),
                todo_list=new_list,
            )
            db.session.add(new_item)
    db.session.commit()
    print('Created 10 Todo lists with each' ' 10 items!')
Example #7
0
 def post(self, **kwargs):
     todo_list_id = kwargs.get('todo_list_id')
     data = request.data
     print(data)
     data = json.loads(data)
     content = data.get('content')
     if not content:
         return abort(400, 'no content posted')
     new_item = TodoItem(todo_list_id=todo_list_id, content=content)
     self.session.add(new_item)
     self.session.commit()
     return json.dumps(new_item.serialize())
Example #8
0
    def post(self):
        # validate incoming data
        parser.add_argument('title', type=str, required=True)
        parser.add_argument('description', type=str)

        # parse args
        args = parser.parse_args()
        title = args['title']
        description = args['description']
        
        # create new todo
        new_todo = TodoItem(title, description)
        print(new_todo)

        # save todo
        Todos.append(new_todo)

        # return8888 created todo
        return new_todo.serialize(), 201
Example #9
0
    def post(self):
        json_data = request.get_json(force=True)

        if not json_data:
            return {'message': 'No valid data provided'}, 400

        # Deserialize input
        data, errors = todo_item_schema.load(json_data)
        if errors:
            return errors, 422

        todo_item = TodoItem.objects(title=data['title']).first()
        if todo_item:
            return {
                'message': 'A todo item with the same title already exists'
            }, 400

        todo_item = TodoItem(title=json_data['title'])
        todo_item.save()

        # Serialize and dump input
        result = todo_item_schema.dump(todo_item).data

        return {"status": 'success', 'data': result}, 201
Example #10
0
from models import TodoItem

TodoItem(title="Do laundry").save()
TodoItem(title="Buy groceries").save()
TodoItem(title="Hit the gym").save()
TodoItem(title="Read 20 pages of book X").save()
TodoItem(title="Call friend").save()
TodoItem(title="Go to bank").save()
TodoItem(title="Meditate for 5 min").save()
TodoItem(title="Learn flask framework").save()


def todos(request, list_id):
    if request.method == 'OPTIONS':
        resp = HttpResponse()
        resp['Access-Control-Max-Age'] = '3600'
        return resp

    if request.method == 'HEAD':
        last_cursor = TodoItem.get_last_cursor(list_id)
        resp = HttpResponse()
        resp['Link'] = _changes_link(list_id, last_cursor.cur)
        return resp
    elif request.method == 'GET':
        stream = request.GET.get('stream')
        after = request.GET.get('after_change')
        wait = request.META.get('HTTP_WAIT')
        if stream:
            stream = (stream == 'true')
        if wait:
            wait = int(wait)

        if stream:
            set_hold_stream(request, Channel('todos-%s' % list_id))
            return HttpResponse(content_type='text/plain')
        else:
            if after:
                try:
                    items, last_cursor = TodoItem.get_after(list_id, after)
                except TodoItem.DoesNotExist:
                    return HttpResponseNotFound()
            else:
                items, last_cursor = TodoItem.get_all(list_id)
            resp = _list_response(list_id, items)
            resp['Link'] = _changes_link(list_id, last_cursor.cur)
            if len(items) == 0 and wait:
                set_hold_longpoll(request,
                                  Channel('todos-%s' % list_id,
                                          prev_id=last_cursor.cur),
                                  timeout=wait)
            return resp
    elif request.method == 'POST':
        params = json.loads(request.body)
        i = TodoItem(list_id=list_id)
        if 'text' in params:
            i.text = params['text']
        if 'completed' in params:
            if not isinstance(params['completed'], bool):
                return HttpResponseBadRequest('completed must be a bool\n',
                                              content_type='text/plain')
            i.completed = params['completed']
        try:
            cursor = i.save()
        except TodoItem.LimitError:
            return HttpResponseForbidden('limit reached\n',
                                         content_type='text/plain')
        if cursor.cur != cursor.prev:
            _publish_item(list_id, i, cursor)
        resp = _item_response(i, status=201)
        resp['Location'] = reverse('todos-item', args=[list_id, i.id])
        return resp
    else:
        return HttpResponseNotAllowed(['HEAD', 'GET', 'POST'])