diff --git a/api/funkwhale_api/audio/serializers.py b/api/funkwhale_api/audio/serializers.py index fd57ed374..e15325d8c 100644 --- a/api/funkwhale_api/audio/serializers.py +++ b/api/funkwhale_api/audio/serializers.py @@ -818,7 +818,7 @@ def rss_serialize_item(upload): data = { "title": [{"value": upload.track.title}], "itunes:title": [{"value": upload.track.title}], - "guid": [{"cdata_value": str(upload.uuid), "isPermalink": "false"}], + "guid": [{"cdata_value": str(upload.uuid), "isPermaLink": "false"}], "pubDate": [{"value": rfc822_date(upload.creation_date)}], "itunes:duration": [{"value": rss_duration(upload.duration)}], "itunes:explicit": [{"value": "no"}], @@ -841,7 +841,7 @@ def rss_serialize_item(upload): ], } if upload.track.description: - data["itunes:subtitle"] = [{"value": upload.track.description.truncate(255)}] + data["itunes:subtitle"] = [{"value": upload.track.description.truncate(254)}] data["itunes:summary"] = [{"cdata_value": upload.track.description.rendered}] data["description"] = [{"value": upload.track.description.as_plain_text}] @@ -853,7 +853,7 @@ def rss_serialize_item(upload): tagged_items = getattr(upload.track, "_prefetched_tagged_items", []) if tagged_items: data["itunes:keywords"] = [ - {"value": " ".join([ti.tag.name for ti in tagged_items])} + {"value": ",".join([ti.tag.name for ti in tagged_items])} ] return data @@ -903,7 +903,7 @@ def rss_serialize_channel(channel): data["itunes:category"] = [node] if channel.artist.description: - data["itunes:subtitle"] = [{"value": channel.artist.description.truncate(255)}] + data["itunes:subtitle"] = [{"value": channel.artist.description.truncate(254)}] data["itunes:summary"] = [{"cdata_value": channel.artist.description.rendered}] data["description"] = [{"value": channel.artist.description.as_plain_text}] diff --git a/api/funkwhale_api/users/adapters.py b/api/funkwhale_api/users/adapters.py index e52892bd9..436ed2d77 100644 --- a/api/funkwhale_api/users/adapters.py +++ b/api/funkwhale_api/users/adapters.py @@ -26,6 +26,9 @@ class FunkwhaleAccountAdapter(DefaultAccountAdapter): def get_login_redirect_url(self, request): return "noop" + def get_signup_redirect_url(self, request): + return "noop" + def add_message(self, *args, **kwargs): # disable message sending return diff --git a/api/requirements/base.txt b/api/requirements/base.txt index 602ec8f46..0b6234d8a 100644 --- a/api/requirements/base.txt +++ b/api/requirements/base.txt @@ -6,7 +6,7 @@ django-environ~=0.4 # Images Pillow~=7.0 -django-allauth~=0.42 +django-allauth~=0.42.0 psycopg2-binary~=2.8 diff --git a/api/tests/audio/test_serializers.py b/api/tests/audio/test_serializers.py index fbcd28a1a..5f0c1226f 100644 --- a/api/tests/audio/test_serializers.py +++ b/api/tests/audio/test_serializers.py @@ -300,13 +300,13 @@ def test_rss_item_serializer(factories): expected = { "title": [{"value": upload.track.title}], "itunes:title": [{"value": upload.track.title}], - "itunes:subtitle": [{"value": description.truncate(255)}], + "itunes:subtitle": [{"value": description.truncate(254)}], "itunes:summary": [{"cdata_value": description.rendered}], "description": [{"value": description.as_plain_text}], - "guid": [{"cdata_value": str(upload.uuid), "isPermalink": "false"}], + "guid": [{"cdata_value": str(upload.uuid), "isPermaLink": "false"}], "pubDate": [{"value": serializers.rfc822_date(upload.creation_date)}], "itunes:duration": [{"value": serializers.rss_duration(upload.duration)}], - "itunes:keywords": [{"value": "pop rock"}], + "itunes:keywords": [{"value": "pop,rock"}], "itunes:explicit": [{"value": "no"}], "itunes:episodeType": [{"value": "full"}], "itunes:season": [{"value": upload.track.disc_number}], diff --git a/changes/changelog.d/1250.bugfix b/changes/changelog.d/1250.bugfix new file mode 100644 index 000000000..4d4cbddf2 --- /dev/null +++ b/changes/changelog.d/1250.bugfix @@ -0,0 +1 @@ +Make the generated RSS feed more conformant with w3c specification (#1250)