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))
Exemple #2
0
    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()
Exemple #3
0
 class Meta:
     database = get_database()