Skip to content

Commit 42f84bb

Browse files
committed
refactor: add label to obr-sync
1 parent 66dc526 commit 42f84bb

File tree

6 files changed

+94
-23
lines changed

6 files changed

+94
-23
lines changed

README.md

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ sudo dnf install \
3232

3333
### Tooling
3434

35-
#### Ptyhon
35+
#### Python
3636

3737
```shell
3838
pyenv install 2.7.18
@@ -79,11 +79,17 @@ make build
7979
```
8080

8181

82-
## Deploy
82+
## Deploy (DEPRECIATED)
8383

8484
Deployment is handled via ansible: [obp-infrastructure](https://github.com/digris/obp-infrastructure)
8585

8686
```shell
8787
cd obp-infrastructure/ansible
8888
./deploy.sh
8989
```
90+
91+
92+
## Deploy (HACK)
93+
94+
Due to the situation of a completely outdated environment ansible cannot be used anymore.
95+
For now deployment has to be done "manually" directly on the server(s).

docker/docker-compose.yml

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,5 @@
11
version: "3"
22
services:
3-
# rabbitmq:
4-
# image: rabbitmq:3.9-management
5-
# ports:
6-
# - "5672:5672"
7-
# - "15672:15672"
8-
# environment:
9-
# - RABBITMQ_DEFAULT_USER=admin
10-
# - RABBITMQ_DEFAULT_PASS=admin
11-
# volumes:
12-
# - ${PWD}/docker/rabbitmq/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf
13-
# - ${PWD}/docker/rabbitmq/definitions.json:/etc/rabbitmq/definitions.json
14-
# restart: always
15-
# networks:
16-
# - obp
173
nginx:
184
container_name: nginx
195
build:
@@ -70,7 +56,6 @@ services:
7056
- discovery.type=single-node
7157
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
7258
volumes:
73-
# - ${PWD}/data/elasticsearch:/usr/share/elasticsearch/data
7459
- obp-elasticsearch:/usr/share/elasticsearch/data
7560
ports:
7661
- "9200:9200"

website/apps/alibrary/models/labelmodels.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,10 @@ def get_root(self):
203203
return None
204204

205205
parent = self.parent
206+
207+
if parent == self:
208+
return None
209+
206210
last_parent = None
207211
i = 0
208212
while parent and i < 10:

website/apps/obr_sync_api/serializers.py

Lines changed: 50 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
Artist,
1010
Media,
1111
Release,
12+
Label,
1213
Relation,
1314
Playlist,
1415
PlaylistItemPlaylist,
@@ -177,6 +178,52 @@ class Meta:
177178
]
178179

179180

181+
class LabelSerializer(serializers.HyperlinkedModelSerializer):
182+
183+
url = serializers.HyperlinkedIdentityField(
184+
view_name="api:obr-sync:label-detail",
185+
lookup_field="uuid",
186+
)
187+
188+
ct = serializers.CharField(source="get_ct")
189+
190+
type = serializers.CharField()
191+
description = serializers.CharField()
192+
image = ImageSerializer(source="main_image")
193+
tags = TagSerializer(many=True)
194+
relations = RelationSerializer(many=True)
195+
196+
date_start = ApproximateDateSerializer()
197+
date_end = ApproximateDateSerializer()
198+
199+
root_uuid = serializers.SerializerMethodField()
200+
201+
def get_root_uuid(self, obj):
202+
root_label = obj.get_root()
203+
return root_label.uuid if root_label else None
204+
205+
206+
class Meta:
207+
model = Label
208+
fields = [
209+
"url",
210+
"ct",
211+
"uuid",
212+
"updated",
213+
#
214+
"type",
215+
"name",
216+
"date_start",
217+
"date_end",
218+
"description",
219+
"image",
220+
"tags",
221+
"relations",
222+
#
223+
"root_uuid",
224+
]
225+
226+
180227
class ReleaseSerializer(serializers.HyperlinkedModelSerializer):
181228

182229
url = serializers.HyperlinkedIdentityField(
@@ -185,14 +232,14 @@ class ReleaseSerializer(serializers.HyperlinkedModelSerializer):
185232
)
186233

187234
ct = serializers.CharField(source="get_ct")
188-
189235
type = serializers.CharField(source="releasetype")
190236
description = serializers.CharField()
191237
image = ImageSerializer(source="main_image")
192238
tags = TagSerializer(many=True)
193239
relations = RelationSerializer(many=True)
194-
195240
releasedate = ApproximateDateSerializer()
241+
label = LabelSerializer()
242+
196243

197244
class Meta:
198245
model = Release
@@ -209,6 +256,7 @@ class Meta:
209256
"image",
210257
"tags",
211258
"relations",
259+
"label",
212260
]
213261

214262

website/apps/obr_sync_api/urls.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,24 +6,29 @@
66

77
from . import views
88

9+
app_name = "obr-sync"
10+
911
router = routers.DefaultRouter(schema_title="OBR Sync API")
12+
1013
# alibrary
1114
router.register(r"media", views.MediaViewSet)
1215
router.register(r"artists", views.ArtistViewSet)
1316
router.register(r"releases", views.ReleaseViewSet)
1417
router.register(r"playlists", views.PlaylistViewSet)
18+
router.register(r"labels", views.LabelViewSet)
19+
1520
# accounts / user / profiles
1621
router.register(r"accounts", views.AccountViewSet)
1722
router.register(r"profiles", views.ProfileViewSet)
23+
1824
# abcast
1925
router.register(r"emissions", views.EmissionViewSet)
26+
2027
# arating
2128
router.register(r"votes", views.VoteViewSet)
29+
2230
# tagging
2331
router.register(r"tags", views.TagViewSet)
24-
25-
26-
app_name = "obr-sync"
2732
urlpatterns = [
2833
url(r"^", include(router.urls)),
2934
url(

website/apps/obr_sync_api/views.py

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from django.contrib.auth import get_user_model
99

1010
from . import serializers
11-
from alibrary.models import Media, Artist, Release, Playlist
11+
from alibrary.models import Media, Artist, Release, Label, Playlist
1212
from profiles.models import Profile
1313
from abcast.models import Emission
1414
from arating.models import Vote
@@ -112,6 +112,29 @@ def get_object(self):
112112
)
113113

114114

115+
class LabelViewSet(
116+
mixins.ListModelMixin,
117+
mixins.RetrieveModelMixin,
118+
viewsets.GenericViewSet,
119+
):
120+
queryset = Label.objects.all().order_by("-updated")
121+
permission_classes = (SyncPermissions,)
122+
serializer_class = serializers.LabelSerializer
123+
lookup_field = "uuid"
124+
125+
def get_queryset(self):
126+
qs = self.queryset.prefetch_related("relations",).select_related(
127+
"parent",
128+
)
129+
return qs
130+
131+
def get_object(self):
132+
return get_object_or_404(
133+
self.get_queryset(),
134+
uuid=self.kwargs["uuid"],
135+
)
136+
137+
115138
class PlaylistViewSet(
116139
mixins.ListModelMixin,
117140
mixins.RetrieveModelMixin,

0 commit comments

Comments
 (0)