diff --git a/pip_upgrade.py b/pip_upgrade.py deleted file mode 100755 index 2dbb564..0000000 --- a/pip_upgrade.py +++ /dev/null @@ -1,5 +0,0 @@ -import pip -from subprocess import call - -for dist in pip.get_installed_distributions(): - call("pip install --upgrade " + dist.project_name, shell=True) diff --git a/spa/api/v1/MixResource.py b/spa/api/v1/MixResource.py index 4291761..2b5e4b8 100755 --- a/spa/api/v1/MixResource.py +++ b/spa/api/v1/MixResource.py @@ -151,6 +151,8 @@ class MixResource(BackboneCompatibleResource): f_user = request.GET.get('user', None) + if request.GET.get('stream'): + semi_filtered = semi_filtered.filter(user__in=request.user.get_profile().following.all()) if f_user is not None: semi_filtered = semi_filtered.filter(user__slug=f_user) else: diff --git a/spa/api/v1/UserResource.py b/spa/api/v1/UserResource.py index d87f8a5..42c0199 100755 --- a/spa/api/v1/UserResource.py +++ b/spa/api/v1/UserResource.py @@ -37,26 +37,18 @@ class UserResource(BackboneCompatibleResource): } authorization = Authorization() authentication = Authentication() - favourites = fields.ToManyField('spa.api.v1.MixResource', 'favourites') def _hydrateBitmapOption(self, source, comparator): return True if (source & comparator) != 0 else False def prepend_urls(self): return [ - url(r"^(?P%s)/(?P[\w\d_.-]+)/favourites%s$" % ( - self._meta.resource_name, trailing_slash()), - self.wrap_view('get_user_favourites'), name="api_get_user_favourites"), url(r"^(?P%s)/(?P\d+)/$" % self._meta.resource_name, self.wrap_view('dispatch_detail'), name="api_dispatch_detail"), url(r"^(?P%s)/(?P[\w\d_.-]+)/$" % self._meta.resource_name, self.wrap_view('dispatch_detail'), name="api_dispatch_detail"), ] - def ___apply_filters(self, request, applicable_filters): - semi_filtered = super(UserResource, self).apply_filters(request, applicable_filters) - return semi_filtered - def apply_filters(self, request, applicable_filters): semi_filtered = super(UserResource, self).apply_filters(request, applicable_filters) q = request.GET.get('q', None) diff --git a/spa/models/mix.py b/spa/models/mix.py index 5ef8b64..82b0ae1 100755 --- a/spa/models/mix.py +++ b/spa/models/mix.py @@ -15,6 +15,7 @@ from spa.models.userprofile import UserProfile from spa.models._basemodel import _BaseModel from core.utils.file import generate_save_file_name + def mix_file_name(instance, filename): return generate_save_file_name(instance.uid, 'mixes', filename) diff --git a/spa/urls.py b/spa/urls.py index 6c5aa66..9305cd2 100755 --- a/spa/urls.py +++ b/spa/urls.py @@ -13,17 +13,17 @@ from spa.api.v1.ReleaseResource import ReleaseResource from spa.api.v1.UserResource import UserResource from spa.api.v1.ActivityResource import ActivityResource -v1_api = Api(api_name='v1') -v1_api.register(ChatResource()) -v1_api.register(CommentResource()) -v1_api.register(MixResource()) -v1_api.register(ReleaseResource()) -v1_api.register(ReleaseAudioResource()) -v1_api.register(EventResource()) -v1_api.register(UserResource()) -v1_api.register(ActivityResource()) -v1_api.register(NotificationResource()) -v1_api.register(DebugResource()) +api = Api(api_name='v1') +api.register(ChatResource()) +api.register(CommentResource()) +api.register(MixResource()) +api.register(ReleaseResource()) +api.register(ReleaseAudioResource()) +api.register(EventResource()) +api.register(UserResource()) +api.register(ActivityResource()) +api.register(NotificationResource()) +api.register(DebugResource()) ajax = AjaxHandler() audio = AudioHandler() @@ -44,7 +44,7 @@ urlpatterns = patterns( url(r'_upload/', 'spa.ajax.upload', name='jfu_upload'), url(r'^ajax/', include(ajax.urls)), url(r'^audio/', include(audio.urls)), - url(r'^api/', include(v1_api.urls)), + url(r'^api/', include(api.urls)), url(r'^comments/', include('django.contrib.comments.urls')), (r'^.*/$', 'spa.views.default') ) diff --git a/static/js/app/lib/controller.coffee b/static/js/app/lib/controller.coffee index 3f7a617..a1adc42 100755 --- a/static/js/app/lib/controller.coffee +++ b/static/js/app/lib/controller.coffee @@ -1,9 +1,11 @@ define ['app', 'marionette', 'vent', 'utils' 'views/mix/mixListLayout', 'views/mix/mixListView', 'views/mix/mixDetailView' + 'views/stream/streamListLayout', 'views/mix/mixEditView', 'views/user/userProfileView', 'views/user/userListView', 'views/user/userEditView', 'models/mix/mixItem', 'models/mix/mixCollection', 'models/user/userItem'], (App, Marionette, vent, utils, MixListLayout, MixListView, MixDetailView, + StreamListLayout, MixEditView, UserProfileView, UserListView, UserEditView, MixItem, MixCollection, UserItem)-> class DssController extends Marionette.Controller @@ -19,6 +21,9 @@ define ['app', 'marionette', 'vent', 'utils' app = require('app') app.contentRegion.show(new MixListLayout(options or {order_by: 'latest'})) + showStreamList: () -> + @showMixList({stream: true}) + showMixListType: (type) -> @showMixList({order_by: type}) diff --git a/static/js/app/lib/controller.js b/static/js/app/lib/controller.js index 247fe7d..aaeab68 100755 --- a/static/js/app/lib/controller.js +++ b/static/js/app/lib/controller.js @@ -3,7 +3,7 @@ var __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; - define(['app', 'marionette', 'vent', 'utils', 'views/mix/mixListLayout', 'views/mix/mixListView', 'views/mix/mixDetailView', 'views/mix/mixEditView', 'views/user/userProfileView', 'views/user/userListView', 'views/user/userEditView', 'models/mix/mixItem', 'models/mix/mixCollection', 'models/user/userItem'], function(App, Marionette, vent, utils, MixListLayout, MixListView, MixDetailView, MixEditView, UserProfileView, UserListView, UserEditView, MixItem, MixCollection, UserItem) { + define(['app', 'marionette', 'vent', 'utils', 'views/mix/mixListLayout', 'views/mix/mixListView', 'views/mix/mixDetailView', 'views/stream/streamListLayout', 'views/mix/mixEditView', 'views/user/userProfileView', 'views/user/userListView', 'views/user/userEditView', 'models/mix/mixItem', 'models/mix/mixCollection', 'models/user/userItem'], function(App, Marionette, vent, utils, MixListLayout, MixListView, MixDetailView, StreamListLayout, MixEditView, UserProfileView, UserListView, UserEditView, MixItem, MixCollection, UserItem) { var DssController; DssController = (function(_super) { @@ -30,6 +30,12 @@ })); }; + DssController.prototype.showStreamList = function() { + return this.showMixList({ + stream: true + }); + }; + DssController.prototype.showMixListType = function(type) { return this.showMixList({ order_by: type diff --git a/static/js/app/lib/router.coffee b/static/js/app/lib/router.coffee index b07658e..dccb2fb 100755 --- a/static/js/app/lib/router.coffee +++ b/static/js/app/lib/router.coffee @@ -13,7 +13,8 @@ define ['marionette', 'vent', 'app.lib/controller'], "mix/edit/:slug": "editMix", "chat": "showChat", - #"random": "showRandomMix", + "random": "showRandomMix", + "stream": "showStreamList", "users": "showUserList" "user/:slug/favourites": "showUserFavourites" diff --git a/static/js/app/lib/router.js b/static/js/app/lib/router.js index 676a0d3..60c1ca5 100755 --- a/static/js/app/lib/router.js +++ b/static/js/app/lib/router.js @@ -24,6 +24,8 @@ "mix/:slug": "showMix", "mix/edit/:slug": "editMix", "chat": "showChat", + "random": "showRandomMix", + "stream": "showStreamList", "users": "showUserList", "user/:slug/favourites": "showUserFavourites", "user/:slug/likes": "showUserLikes", diff --git a/templates/views/HeaderView.html b/templates/views/HeaderView.html index 5032a92..23646a9 100755 --- a/templates/views/HeaderView.html +++ b/templates/views/HeaderView.html @@ -11,7 +11,10 @@