예제 #1
0
def create_or_update(board_id=None):
    db = get_db()

    name = request.form.get('name', None)
    color = request.form.get('color', None)
    error = validate_board(name, color)

    print(request.form['name'])
    print(color)

    if error:
        return json.dumps({'result': 0, 'error': error})

    myresponse = {'result': 1}

    if request.method == 'POST':
        added_id = add_board(name, color)
        myresponse.update(id=added_id)
    elif request.method == 'PUT':
        if color is None:
            color = get_by_id(board_id)['color']
        update(board_id, name, color)
        myresponse.update(board={'name': name, 'color': color})

    db.commit()

    return json.dumps(myresponse)
예제 #2
0
def update(task_id):
	if not is_author(task_id, g.user['id']):
		abort(403)

	db = get_db()
	task_obj = get_by_id(task_id)
	task = request.form.get('task', task_obj['task'])
	description = request.form.get('description', task_obj['description'])
	sort = request.form.get('sort', task_obj['sort'])
	color = request.form.get('color', task_obj['color'])

	db.execute(
		'UPDATE task SET task = ?, sort = ?, color = ?, description = ? WHERE id = ?',
		(task, sort, color, description, task_id)
	)
	db.commit()
	return json.dumps({
		'result': 1,
		'task': {
			'task': task,
			'description': description,
			'color': color,
			'sort': sort,
		}
	})
예제 #3
0
def add_board(name, color):
    db = get_db()
    cursor = db.execute(
        'INSERT INTO board (name, color, user_id) VALUES (?, ?, ?)',
        (name, color, g.user['id']))
    db.commit()
    return cursor.lastrowid
예제 #4
0
def create(list_id):
	db = get_db()

	task = request.form.get('task', None)
	description = request.form.get('description', '')
	sort = request.form.get('sort', 0)
	color = request.form.get('color', '#fff')
	error = validate_task(task)

	if error:
		return json.dumps({
			'result': 0,
			'error': error
		})

	cursor = db.execute(
		'INSERT INTO task (task, description, sort, color, list_id) VALUES (?, ?, ?, ?, ?)',
		[task, description, sort, color, list_id]
	)

	db.commit()

	return json.dumps({
		'result': 1,
		'id': cursor.lastrowid
	})
예제 #5
0
def reorder(task_id, destination):
	if not is_author(task_id, g.user['id']):
			abort(403)

	source = get_by_id(task_id)['sort']

	db = get_db()

	if source > destination:
		db.execute(
			'UPDATE task SET sort = sort + 1 WHERE sort >= ? AND sort < ?',
			(destination, source)
		)
	else:
		db.execute(
			'UPDATE task SET sort = sort - 1 WHERE sort > ? AND sort <= ?',
			(source, destination)
		)

	db.execute(
		'UPDATE task SET sort = ? WHERE id = ?',
		(destination, task_id)
	)
	db.commit()

	return json.dumps({
		'result': 1
	})
예제 #6
0
def delete(board_id):
    db = get_db()

    if not is_author(board_id, g.user['id']):
        abort(403)

    db.execute('DELETE FROM board WHERE id = ?', (board_id, ))
    db.commit()

    return json.dumps({'result': 1, 'id': board_id})
예제 #7
0
    def wrapped_view(**kwargs):
        token = request.headers.get('token', None)
        if token:
            db = get_db()
            user = db.execute('SELECT * FROM user WHERE token = ?',
                              (token, )).fetchone()
            if user:
                g.user = user
                return view(**kwargs)

        abort(403)
예제 #8
0
def validate_signin(username, password):
    error = None

    if not username:
        error = {'username': '******'}
    elif not password:
        error = {'password': '******'}
    else:
        db = get_db()
        user = db.execute('SELECT * FROM user WHERE username = ?',
                          (username, )).fetchone()

        if user is None or not check_password_hash(user['password'], password):
            error = {'password': '******'}
    return error
예제 #9
0
def singup():
    db = get_db()

    username = request.form.get('username', None)
    password = request.form.get('password', None)
    repeated_password = request.form.get('repeated-password', None)
    error = validate_signup(username, password, repeated_password)

    if error:
        return json.dumps({'result': 0, 'error': error})

    db.execute('INSERT INTO user (username, password) VALUES (?, ?)',
               (username, generate_password_hash(password)))
    db.commit()
    return json.dumps({
        'result': 1,
    })
예제 #10
0
def index(list_id):
	db = get_db()
	tasks = db.execute('SELECT * FROM task WHERE list_id = ?', (list_id,)).fetchall()

	# shit code
	data = []
	for task in tasks:
		data.append({
			'id': task['id'],
			'task': task['task'],
			'description': task['description'],
			'color': task['color'],
			'sort': task['sort'],
		})

	return json.dumps({
		'result': 1,
		'tasks': data
	})
예제 #11
0
def signin():
    db = get_db()

    # get form data and validate
    username = request.form.get('username', None)
    password = request.form.get('password', None)
    error = validate_signin(username, password)

    # set errors and return
    if error:
        return json.dumps({'result': 0, 'error': error})

    # if no errors, generate token, set it in DB and return it
    user = db.execute('SELECT id FROM user WHERE username = ?',
                      (username, )).fetchone()
    token = str(uuid.uuid4())
    db.execute('UPDATE user SET token = ? WHERE id = ?', (token, user['id']))
    db.commit()
    return json.dumps({'result': 1, 'token': token})
예제 #12
0
def create_or_update(list_id=None, board_id=None):
	db = get_db()

	name = request.form.get('name', None)
	sort = request.form.get('sort', None)
	error = validate_list(name, sort)

	if error:
		return json.dumps({
			'result': 0,
			'error': error
		})

	myresponse = {
		'result': 1
	}

	if request.method == 'POST':
		sort = get_last_sort(board_id) if sort is None else sort
		cursor = db.execute(
			'INSERT INTO list (name, sort, board_id) VALUES (?, ?, ?)',
			(name, sort + 1, board_id)
		)
		myresponse.update(id=cursor.lastrowid, name=name, sort=sort+1)
	elif request.method == 'PUT':
		if not is_author(list_id, g.user['id']):
			abort(403)
		if sort is None:
			sort = db.execute('SELECT sort FROM list WHERE id = ?', (list_id,)).fetchone()['sort']
		db.execute(
			'UPDATE list SET name = ?, sort = ? WHERE id = ?',
			(name, sort, list_id)
		)
		myresponse.update(list={
			'name': name,
			'sort': sort
		})

	db.commit()

	return json.dumps(myresponse)
예제 #13
0
def validate_signup(username, password, repeated_password):
    error = None

    if not username:
        error = {'username': '******'}
    elif len(username) < 3:
        error = {'username': '******'}
    elif not password:
        error = {'password': '******'}
    elif len(password) < 6:
        error = {'password': '******'}
    elif not repeated_password:
        error = {'repeated-password': '******'}
    elif password != repeated_password:
        error = {'repeated-password': '******'}
    else:
        db = get_db()
        if db.execute('SELECT * FROM user WHERE username = ?',
                      (username, )).fetchone():
            error = {'username': '******'}

    return error
예제 #14
0
def reorder(list_id, destination):
	if not is_author(list_id, g.user['id']):
			abort(403)

	current_list = get_by_id(list_id)

	source = current_list['sort']

	db = get_db()

	if source > destination:
		db.execute(
			'UPDATE list SET sort = sort + 1 WHERE sort >= ? AND sort < ?',
			(destination, source)
		)
	else:
		db.execute(
			'UPDATE list SET sort = sort - 1 WHERE sort > ? AND sort <= ?',
			(source, destination)
		)

	db.execute(
		'UPDATE list SET sort = ? WHERE id = ?',
		(destination, list_id)
	)
	db.commit()

	new_order = db.execute('SELECT id, sort FROM list WHERE board_id = ?', (current_list['board_id'],)).fetchall()
	data = {}
	for row in new_order:
		data.update({
			row['id']: row['sort']
		})

	return json.dumps({
		'result': 1,
		'order': data
	})
예제 #15
0
def get_by_id(task_id):
	db = get_db()
	return db.execute(
		'SELECT * FROM task t JOIN list l ON t.list_id == l.id JOIN board b ON b.id = l.board_id AND t.id = ?',
		(task_id,)
	).fetchone()
예제 #16
0
def get_by_id(board_id):
    db = get_db()
    return db.execute('SELECT * FROM board WHERE id = ?',
                      [board_id]).fetchone()
예제 #17
0
def update(board_id, name, color):
    db = get_db()
    db.execute('UPDATE board SET name = ?, color = ? WHERE id = ?',
               (name, color, board_id))
예제 #18
0
def get_last_sort(board_id):
	db = get_db()
	result = db.execute('SELECT sort FROM list WHERE board_id == ? ORDER BY sort DESC', (board_id, )).fetchone()
	return int(result['sort']) if result else 0
예제 #19
0
def get_by_user(user_id):
    db = get_db()
    return db.execute('SELECT * FROM board WHERE user_id = ?',
                      (user_id, )).fetchall()
예제 #20
0
def get_by_board(board_id):
	db = get_db()
	return db.execute('SELECT * FROM list WHERE board_id = ? ORDER BY sort', (board_id,)).fetchall()
예제 #21
0
def get_by_id(list_id):
	db = get_db()
	return db.execute('SELECT * FROM list l JOIN board b ON l.board_id == b.id AND l.id = ?', (list_id, )).fetchone()