diff --git a/spa/api/v1/MixResource.py b/spa/api/v1/MixResource.py index b8e6db9..4291761 100755 --- a/spa/api/v1/MixResource.py +++ b/spa/api/v1/MixResource.py @@ -67,6 +67,8 @@ class MixResource(BackboneCompatibleResource): name="api_get_search"), url(r"^(?P%s)/(?P[\d]+)/$" % self._meta.resource_name, self.wrap_view('dispatch_detail'), name="api_dispatch_detail"), + url(r"^(?P%s)/random/$" % self._meta.resource_name, self.wrap_view('dispatch_random'), + name="api_dispatch_random"), url(r"^(?P%s)/(?P[\w\d-]+)/$" % self._meta.resource_name, self.wrap_view('dispatch_detail'), name="api_dispatch_detail"), url(r"^(?P%s)/(?P\w[\w/-]*)/comments%s$" % ( @@ -75,6 +77,10 @@ class MixResource(BackboneCompatibleResource): self._meta.resource_name, trailing_slash()), self.wrap_view('get_activity'), name="api_get_activity"), ] + def dispatch_random(self, request, **kwargs): + kwargs['pk'] = self._meta.queryset.values_list('pk', flat=True).order_by('?')[0] + return self.get_detail(request, **kwargs) + def get_comments(self, request, **kwargs): try: basic_bundle = self.build_bundle(request=request) @@ -176,6 +182,12 @@ class MixResource(BackboneCompatibleResource): bundle.data['genre-list'] = json.to_ajax(bundle.obj.genres.all(), 'description', 'slug') bundle.data['liked'] = bundle.obj.is_liked(bundle.request.user) + + if bundle.request.user.is_authenticated(): + bundle.data['can_edit'] = bundle.request.user.is_staff or bundle.obj.user_id == bundle.request.user.id + else: + bundle.data['can_edit'] = False + if bundle.request.user.is_authenticated(): bundle.data['favourited'] = bundle.obj.favourites.filter(user=bundle.request.user).count() != 0 else: diff --git a/templates/views/_MixItemInsert.html b/templates/views/_MixItemInsert.html index 4130a38..f56a2b0 100755 --- a/templates/views/_MixItemInsert.html +++ b/templates/views/_MixItemInsert.html @@ -112,13 +112,16 @@ - {% if user.is_staff %} -