def filter_plans(self, chat_id): for i, plan in enumerate(self.plans[chat_id]): if not is_datetime( plan['dt']) or get_datetime(plan['dt']) >= datetime.now(): return self.move_to_history(chat_id, i, plan)
def extract_date(plan): dt_str = plan["dt"] if is_datetime(dt_str) and ":" in dt_str: return dt_str[:dt_str.rfind(",")] return dt_str
def extract_time(plan): dt_str = plan["dt"] if is_datetime(dt_str): if ":" in dt_str: return dt_str[dt_str.rfind(",") + 2:] return "" return dt_str
def sort_plans(plans): with_dt = [] without_dt = [] for plan in plans: if is_datetime(plan['dt']): with_dt.append(plan) else: without_dt.append(plan) with_dt = sorted(with_dt, key=lambda x: get_datetime(x['dt'])) return with_dt + without_dt
def set_date(self, chat_id, i, date): try: chat_id = str(chat_id) plan = self.plans[chat_id][i] date = datetime2str(update_year(get_datetime(date))) time = util.extract_time(plan) if ":" not in date and is_datetime(plan["dt"]) and time: date += ", " + time plan["dt"] = date self.plans[chat_id] = sort_plans(self.plans[chat_id]) iomgr.save(PLANS_JSON, self.plans) return "*Date is updated!* 😎" except IndexError: return False except KeyError: return False
def set_time(self, chat_id, i, time): try: plan = self.plans[str(chat_id)][i] dt_str = plan["dt"] if is_datetime(dt_str): dt_str = util.extract_date(plan) + ", " + time plan["dt"] = datetime2str(get_datetime(dt_str)) else: return "_Set a date first!_" self.plans[chat_id] = sort_plans(self.plans[chat_id]) iomgr.save(PLANS_JSON, self.plans) return "*Time is updated!* 😎" except IndexError: return False except KeyError: return False