예제 #1
0
class ManageAlbumFilterSet(filters.FilterSet):
    q = fields.SmartSearchFilter(
        config=search.SearchConfig(
            search_fields={
                "title": {"to": "title"},
                "fid": {"to": "fid"},
                "artist": {"to": "artist__name"},
                "mbid": {"to": "mbid"},
            },
            filter_fields={
                "uuid": {"to": "uuid"},
                "artist_id": {"to": "artist_id", "field": forms.IntegerField()},
                "domain": {
                    "handler": lambda v: federation_utils.get_domain_query_from_url(v)
                },
                "library_id": {
                    "to": "tracks__uploads__library_id",
                    "field": forms.IntegerField(),
                    "distinct": True,
                },
                "tag": {"to": "tagged_items__tag__name", "distinct": True},
            },
        )
    )

    class Meta:
        model = music_models.Album
        fields = ["q", "title", "mbid", "fid", "artist"]
예제 #2
0
class ManageChannelFilterSet(filters.FilterSet):
    q = fields.SmartSearchFilter(
        config=search.SearchConfig(
            search_fields={
                "name": {"to": "artist__name"},
                "username": {"to": "artist__name"},
                "fid": {"to": "artist__fid"},
                "rss": {"to": "rss_url"},
            },
            filter_fields={
                "uuid": {"to": "uuid"},
                "category": {"to": "artist__content_category"},
                "domain": {
                    "handler": lambda v: federation_utils.get_domain_query_from_url(
                        v, url_field="attributed_to__fid"
                    )
                },
                "tag": {"to": "artist__tagged_items__tag__name", "distinct": True},
                "account": get_actor_filter("attributed_to"),
            },
        )
    )

    class Meta:
        model = audio_models.Channel
        fields = ["q"]