Skip to content

Commit

Permalink
consolidate channe overwrite endpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
bbilly1 committed Nov 8, 2024
1 parent 29ce05b commit 9b45187
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 38 deletions.
2 changes: 1 addition & 1 deletion backend/channel/src/index.py
Original file line number Diff line number Diff line change
Expand Up @@ -344,4 +344,4 @@ def channel_overwrites(channel_id, overwrites):
channel.upload_to_es()
channel.sync_to_videos()

return channel.json_data["channel_overwrites"]
return channel.json_data
5 changes: 0 additions & 5 deletions backend/channel/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,6 @@
views.ChannelApiView.as_view(),
name="api-channel",
),
path(
"<slug:channel_id>/about/",
views.ChannelApiAboutView.as_view(),
name="api-channel-view",
),
path(
"<slug:channel_id>/aggs/",
views.ChannelAggsApiView.as_view(),
Expand Down
47 changes: 15 additions & 32 deletions backend/channel/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,21 @@ def get(self, request, channel_id):
self.get_document(channel_id)
return Response(self.response, status=self.status_code)

def post(self, request, channel_id):
"""modify channel overwrites"""
data = request.data
if not isinstance(data, dict) or not "channel_overwrites" in data:
return Response({"error": "invalid payload"}, status=400)

overwrites = data["channel_overwrites"]

try:
json_data = channel_overwrites(channel_id, overwrites)
except ValueError as err:
return Response({"error": str(err)}, status=400)

return Response(json_data, status=200)

def delete(self, request, channel_id):
# pylint: disable=unused-argument
"""delete channel"""
Expand All @@ -102,38 +117,6 @@ def delete(self, request, channel_id):
return Response(message, status=status_code)


class ChannelApiAboutView(ApiBaseView):
"""resolves to /api/channel/<channel_id>/about/
GET: returns the channel specific settings
POST: sets the channel specific settings, returning current values
"""

permission_classes = [AdminWriteOnly]

def get(self, request, channel_id):
"""get channel overwrites"""
# pylint: disable=unused-argument
channel = YoutubeChannel(channel_id)
channel.get_from_es()
if not channel.json_data:
return Response({"error": "unknown channel id"}, status=404)

return Response(channel.get_overwrites())

def post(self, request, channel_id):
"""modify channel overwrites"""
data = request.data
if not isinstance(data, dict):
return Response({"error": "invalid payload"}, status=400)

try:
new_channel_overwrites = channel_overwrites(channel_id, data)
except ValueError as err:
return Response({"error": str(err)}, status=400)

return Response(new_channel_overwrites, status=200)


class ChannelAggsApiView(ApiBaseView):
"""resolves to /api/channel/<channel_id>/aggs/
GET: get channel aggregations
Expand Down

0 comments on commit 9b45187

Please sign in to comment.