def update_duration(category, dur): entity_by_id = db_session.query(Project).filter_by(title=category) if entity_by_id[0].duration: dur = dur + entity_by_id[0].duration if entity_by_id[0].tasks: amount = entity_by_id[0].tasks else: amount = 0 db_session.query(Project).filter_by(title=category).update({'duration': dur}) db_session.query(Project).filter_by(title=category).update({'tasks': amount + 1}) db_session.commit()
def get_remind(id): stat = db_session.query(Task, Task_remind, Category). \ join(Task_remind, Task_remind.task_id == Task.id). \ join(Category, Category.task_id == Task.id) # stat = db_session.execute('Select * from tasks t join task_remind r on t.id=r.task_id join category g on t.id=g.task_id') stat = list(stat) return stat
def change_category(user_id, task_id, cat): all_cat = find_all(Category) category = [ t for t in all_cat if user_id == t.user_id and task_id == t.task_id ] category[0].category = cat entity_by_id = db_session.query(Category).filter_by( task_id=task_id, user_id=user_id).update({'category': cat}) db_session.commit()
def find_nearest_task(user_id): all_tasks = (db_session.query( Task, Task_create_date).filter(Task.id == Task_create_date.task_id).filter( Task.user_id == user_id).all()) # tasks_by_user_id = filter( # lambda t: t.user_id == user_id, all_tasks) sorted_by_remind_date = sorted(all_tasks, key=lambda t: Task_create_date.create_date) return sorted_by_remind_date[-1]
def create_remind(task_id, user_id, date): user = user_id all = find_all(Task_remind) all = list( filter(lambda t: t.task_id == task_id and t.user_id == user_id, all)) if len(all) == 0: date = Task_remind(user_id=user, task_id=task_id, date=date) saved_date = save(date) return saved_date else: entity_by_id = db_session.query(Task_remind).filter_by( user_id=user, task_id=task_id).update({'next_remind_date': date}) db_session.commit()
def find_one_by_id(id_value, entity_class): """ assuming id is unique, get entity of entity_class by it """ id_int = None try: id_int = int(id_value) except ValueError as e: err_cause = 'Provided value is not valid id' raise ValueError(err_cause) entity_by_id = db_session.query(entity_class) \ .filter_by(id=id_int) \ .first() # here can be none if nothing found! return entity_by_id
def create_remind(task_id, user_id, date): user = user_id all = find_all(Task_remind) if all.count() == 0: date = Task_remind(user_id=user, task_id=task_id, date=date) saved_date = save(date) # project_service.update_nearest_task_for_project(project.get_id()) return saved_date else: entity_by_id = db_session.query(Task_remind).filter_by( user_id=user, task_id=task_id).update({'next_remind_date': date}) db_session.commit()
def select(message, vk): showtask(message, vk) vk.messages.send(user_id=message.user_id, message=u'Введите id задания', random_id=random.randint(1, MAXINT)) text = vk.messages.getConversations()['items'][0]['last_message']['text'] while (text == 'Введите id задания'): text = vk.messages.getConversations( )['items'][0]['last_message']['text'] time.sleep(0.2) task = task_service.find_tasks_by_id(int(text)) KEYBOARD_STEP_1 = kb.Keyboard.KEYBOARD_STEP_3 keyboard = json.dumps(KEYBOARD_STEP_1, ensure_ascii=False).encode('utf-8') keyboard = str(keyboard.decode('utf-8')) vk.messages.send(user_id=message.user_id, message=u"Задание выбрано", random_id=random.randint(1, MAXINT), keyboard=keyboard) text = vk.messages.getConversations()['items'][0]['last_message']['text'] while (text == 'Задание выбрано'): text = vk.messages.getConversations( )['items'][0]['last_message']['text'] time.sleep(0.2) if text == 'Выполнено': delta = datetime.datetime.now() - task_service.get_date(task[0].id) print(int(delta.total_seconds() / 60) - 180) project_service.update_duration( str(task_service.get_category(task[0].id, message.user_id)), int(delta.total_seconds() / 60) - 180) task_service.delete_task(task[0].id) if text == 'Посмотреть сведения': category, create_date, next_remind_date, end_date = task_service.get_info( task[0].id, message.user_id) res = f'Категория: {category}\n' \ f'Дата создания: {create_date}\n' \ f'Дата напоминания: {next_remind_date}\n' \ f'Дата окончания: {end_date}\n' vk.messages.send(user_id=message.user_id, message=res, random_id=random.randint(1, MAXINT), keyboard=keyboard) if text == 'Удалить': task_service.delete_task(task[0].id) if text == 'Изменить текст': while (text == 'Изменить текст'): text = vk.messages.getConversations( )['items'][0]['last_message']['text'] time.sleep(0.2) task_service.update_text(task[0].id, text) if text == 'Добавить время окончания': while (text == 'Добавить время окончания'): text = vk.messages.getConversations( )['items'][0]['last_message']['text'] time.sleep(0.2) time1 = parse_date_msg(text) entity_by_id = task_service.create_end(task[0].id, message.user_id, time1) if text == 'Изменить врeмя напоминания': while (text == 'Изменить врeмя напоминания'): text = vk.messages.getConversations( )['items'][0]['last_message']['text'] time.sleep(0.2) # task_service.update_text(task[0].id, text) if timers.get(task[0].get_id()) is not None: timers[task[0].get_id()].cancel() notification_message = task[0].get_description() print(message.text.split(u' ')) # time1 = message.text.split(u' ')[1] time1 = parse_date_msg(text) print(time1) reply_text = 'Notification not found' delta = time1 - datetime.datetime.now() entity_by_id = db_session.query(Task_remind).filter_by( task_id=task[0].id, user_id=message.user_id).update({'next_remind_date': time1}) db_session.commit() print(delta.total_seconds()) seconds_till_notify = delta.total_seconds() if not notification_message: vk.messages.send(user_id=message.user_id, message=reply_text, random_id=random.randint(1, MAXINT)) return context = [vk, message.user_id, notification_message] print(context) try: vk.messages.send(user_id=message.user_id, message='notification is added', random_id=random.randint(1, MAXINT)) seconds_as_int = int( seconds_till_notify) # do not forget casting to float t = Timer(seconds_as_int, callback_notifier, context) timers['1'] = t t.start() except Exception as e: reply_text = 'There were an error: ' + str(e) else: reply_text = 'Notification has been set up' vk.messages.send(user_id=message.user_id, message=reply_text, random_id=random.randint(1, MAXINT)) if text == 'Изменить кaтегорию': KEYBOARD_STEP_1 = kb.Keyboard.KEYBOARD_STEP_2 keyboard = json.dumps(KEYBOARD_STEP_1, ensure_ascii=False).encode('utf-8') keyboard = str(keyboard.decode('utf-8')) vk.messages.send(user_id=message.user_id, message=u"Выберите кaтегорию", random_id=random.randint(1, MAXINT), keyboard=keyboard) text = vk.messages.getConversations( )['items'][0]['last_message']['text'] while (text == 'Выберите кaтегорию'): text = vk.messages.getConversations( )['items'][0]['last_message']['text'] time.sleep(0.2) task_service.set_category(task[0].id, message.user_id, text) task_service.add_category(text, message.user_id) KEYBOARD_STEP_1 = kb.Keyboard.KEYBOARD_STEP_1 keyboard = json.dumps(KEYBOARD_STEP_1, ensure_ascii=False).encode('utf-8') keyboard = str(keyboard.decode('utf-8')) vk.messages.send(user_id=message.user_id, message=u"Выберите действие", random_id=random.randint(1, MAXINT), keyboard=keyboard)
def find_all(entity_class): all_entities = db_session.query(entity_class) return all_entities
def set_category(task_id, user, category): entity_by_id = db_session.query(Category).filter_by( id=task_id, user_id=user).update({'category': category}) db_session.commit()
def delete_task(task_id): db_session.query(Task).filter_by(id=task_id).delete() db_session.query(Task_create_date).filter_by(task_id=task_id).delete() db_session.query(Task_end).filter_by(task_id=task_id).delete() db_session.query(Task_remind).filter_by(task_id=task_id).delete() db_session.query(Task_userid).filter_by(task_id=task_id).delete() db_session.query(Category).filter_by(task_id=task_id).delete() db_session.commit()
def update_text(task_id, text): entity_by_id = db_session.query(Task).filter_by(id=task_id).update( {'description': text}) db_session.commit()
def get_gant(): stat = db_session.query(Task,Category, Task_remind). \ join(Category, Category.task_id == Task.id). \ join(Task_remind, Task_remind.task_id == Task.id) return stat
def find_nearest_task(user_id): all_tasks = db_session.query(Task, Task_create_date).join( Task_create_date, Task_create_date.task_id == Task.id) sorted_by_remind_date = sorted( all_tasks, key=lambda t: t.Task_create_date.create_date) return sorted_by_remind_date[-1]