def get_programs(self, sort_by: str = None, start_date_from: date = None, start_date_to: date = None, page: int = 1, per_page: int = 10): sort_field = self.SORT_FIELDS_MAP.get(sort_by, None) with DbManager(get_database()) as db: programs = Program.select().order_by(sort_field) if start_date_from: programs = programs.where( Program.start_of_availability >= start_date_from) if start_date_to: programs = programs.where( Program.start_of_availability <= start_date_to) return list(programs.paginate(page, per_page))
def __call__(self, program_data: dict): with DbManager(get_database()) as db: try: program = Program() program.init_with_data(program_data) program.save() except peewee.IntegrityError as e: print("Duplicate found: " + repr(e)) return for genre_data in program_data["genres"]: genre = Genre(program=program) genre.init_with_data(genre_data) genre.save() for other_identifier_data in program_data["other_identifiers"]: identifier = OtherIdentifier(program=program) identifier.init_with_data(other_identifier_data) identifier.save() for group_id_value in program_data["group_ids"]: group_id = GroupId(program=program) group_id.value = group_id_value group_id.save()
class Meta: database = get_database()