def user_details(_, info, **kwargs): """ returns basic user data about the currently logged in user """ user = get_user(info) return { "user": {"username": user.username, "username_slug": user.username_slug}, "error": None, }
def update_daily_habit(_, info, data, name_slug): error_container = ErrorContainer("duration", "name", "name_slug") status = False habit = None name = data.get("name") user = get_user(info) description = data.get("description") date_to = data.get("date_to") vault = data.get('vault') habits = habit_models.DailyHabit.objects.filter(name_slug=name_slug, user=user) if len(habits) > 1: error_container.update_with_error( "name_slug", "There was an error processing your request") if not habits.exists(): error_container.update_with_error( "name_slug", "The habit you requested for does not exist") if not error_container: habit = habits[0] habit.name = name habit.description = description habit.date_to = date_to habit.vault = vault habit.save() status = True return { "status": status, "errors": error_container.get_all_errors(), "habit": habit }
def set_vault_password(self, info, password, *args, **kwargs): user = get_user(info) status = False error = None if not user.vault_password: user.set_vault_password(password) status = True else: error = "You have already set a vault password" return {"status": status, "error": error}
def delete_habit(_, info, name_slug, *args, **kwargs): user = get_user(info) status = False error = None try: habit_models.DailyHabit.objects.get(name_slug=name_slug, user=user).delete() status = True except habit_models.DailyHabit.DoesNotExist: error = "The requested habit does not exist in the database." return {"status": status, "error": error}
def toggle_tag_cycle(_, info, data, **kwargs): status = False error = None user = get_user(info) habit = habit_models.DailyHabit.objects.get(name_slug=data["name_slug"], user=user) try: today = data.get("date").strftime("%Y-%m-%d") habit.toggle_day(today) habit.save() status = True except KeyError: error = "The day you're trying to mark does not fall in this habit's duration." return {"status": status, "error": error}
def get_habit_details(_, info, name_slug, **kwargs): error = None user = get_user(info) ret_value = None try: habit = habit_models.DailyHabit.objects.get(name_slug=name_slug, user=user) vars(habit)["is_completed"] = habit.is_completed vars(habit)["is_done"] = habit.is_done habit.is_done habit.progress = json.dumps(habit.progress) ret_value = vars(habit) except habit_models.DailyHabit.DoesNotExist: error = "The habit you requested for does not exist" return {"habit": ret_value, "error": error}
def create_daily_habit(_, info, data): error_container = ErrorContainer("date_from", "date_to", "name") status = False habit = None user = get_user(info) name = data.get("name") description = data.get("description") date_from = data.get("date_from") date_to = data.get("date_to") vault = data.get("vault") today = datetime.date.today() if date_from < today: error_container.update_with_error( "date_from", f"The starting date must be greater than {today.strftime('%m/%d/%Y')}", ) if date_to - date_from < datetime.timedelta(days=0): error_container.update_with_error( "date_to", "The ending date can not be before the ending date") if habit_models.DailyHabit.objects.filter(name__iexact=name, user=user).exists(): error_container.update_with_error( "name", "A habit with this name already exists") if not error_container: habit = habit_models.DailyHabit.objects.create( user=user, name=name, date_from=date_from, date_to=date_to, description=description, vault=vault, ) status = True return { "status": status, "errors": error_container.get_all_errors(), "habit": habit }
def get_habit_report(_, info, name_slug, **kwargs): user = get_user(info) habit = habit_models.DailyHabit.objects.get(name_slug=name_slug, user=user) return habit.generate_report()
def check_vault_password(self, info, password, *args, **kwargs): user = get_user(info) return user.check_vault_password(password)
def get_user_report(self, info, *args, **kwargs): return get_user(info).get_report()
def check_if_vault_password_set(self, info, *args, **kwargs): user = get_user(info) flag = user.vault_password return flag is not None