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)
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, } })
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
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 })
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 })
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})
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)
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
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, })
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 })
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})
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)
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
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 })
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()
def get_by_id(board_id): db = get_db() return db.execute('SELECT * FROM board WHERE id = ?', [board_id]).fetchone()
def update(board_id, name, color): db = get_db() db.execute('UPDATE board SET name = ?, color = ? WHERE id = ?', (name, color, board_id))
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
def get_by_user(user_id): db = get_db() return db.execute('SELECT * FROM board WHERE user_id = ?', (user_id, )).fetchall()
def get_by_board(board_id): db = get_db() return db.execute('SELECT * FROM list WHERE board_id = ? ORDER BY sort', (board_id,)).fetchall()
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()