mirror of
https://github.com/fergalmoran/dss.git
synced 2025-12-25 19:17:35 +00:00
Added stream function
This commit is contained in:
@@ -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)
|
|
||||||
@@ -151,6 +151,8 @@ class MixResource(BackboneCompatibleResource):
|
|||||||
|
|
||||||
f_user = request.GET.get('user', None)
|
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:
|
if f_user is not None:
|
||||||
semi_filtered = semi_filtered.filter(user__slug=f_user)
|
semi_filtered = semi_filtered.filter(user__slug=f_user)
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -37,26 +37,18 @@ class UserResource(BackboneCompatibleResource):
|
|||||||
}
|
}
|
||||||
authorization = Authorization()
|
authorization = Authorization()
|
||||||
authentication = Authentication()
|
authentication = Authentication()
|
||||||
favourites = fields.ToManyField('spa.api.v1.MixResource', 'favourites')
|
|
||||||
|
|
||||||
def _hydrateBitmapOption(self, source, comparator):
|
def _hydrateBitmapOption(self, source, comparator):
|
||||||
return True if (source & comparator) != 0 else False
|
return True if (source & comparator) != 0 else False
|
||||||
|
|
||||||
def prepend_urls(self):
|
def prepend_urls(self):
|
||||||
return [
|
return [
|
||||||
url(r"^(?P<resource_name>%s)/(?P<slug>[\w\d_.-]+)/favourites%s$" % (
|
|
||||||
self._meta.resource_name, trailing_slash()),
|
|
||||||
self.wrap_view('get_user_favourites'), name="api_get_user_favourites"),
|
|
||||||
url(r"^(?P<resource_name>%s)/(?P<pk>\d+)/$" % self._meta.resource_name,
|
url(r"^(?P<resource_name>%s)/(?P<pk>\d+)/$" % self._meta.resource_name,
|
||||||
self.wrap_view('dispatch_detail'), name="api_dispatch_detail"),
|
self.wrap_view('dispatch_detail'), name="api_dispatch_detail"),
|
||||||
url(r"^(?P<resource_name>%s)/(?P<slug>[\w\d_.-]+)/$" % self._meta.resource_name,
|
url(r"^(?P<resource_name>%s)/(?P<slug>[\w\d_.-]+)/$" % self._meta.resource_name,
|
||||||
self.wrap_view('dispatch_detail'), name="api_dispatch_detail"),
|
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):
|
def apply_filters(self, request, applicable_filters):
|
||||||
semi_filtered = super(UserResource, self).apply_filters(request, applicable_filters)
|
semi_filtered = super(UserResource, self).apply_filters(request, applicable_filters)
|
||||||
q = request.GET.get('q', None)
|
q = request.GET.get('q', None)
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ from spa.models.userprofile import UserProfile
|
|||||||
from spa.models._basemodel import _BaseModel
|
from spa.models._basemodel import _BaseModel
|
||||||
from core.utils.file import generate_save_file_name
|
from core.utils.file import generate_save_file_name
|
||||||
|
|
||||||
|
|
||||||
def mix_file_name(instance, filename):
|
def mix_file_name(instance, filename):
|
||||||
return generate_save_file_name(instance.uid, 'mixes', filename)
|
return generate_save_file_name(instance.uid, 'mixes', filename)
|
||||||
|
|
||||||
|
|||||||
24
spa/urls.py
24
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.UserResource import UserResource
|
||||||
from spa.api.v1.ActivityResource import ActivityResource
|
from spa.api.v1.ActivityResource import ActivityResource
|
||||||
|
|
||||||
v1_api = Api(api_name='v1')
|
api = Api(api_name='v1')
|
||||||
v1_api.register(ChatResource())
|
api.register(ChatResource())
|
||||||
v1_api.register(CommentResource())
|
api.register(CommentResource())
|
||||||
v1_api.register(MixResource())
|
api.register(MixResource())
|
||||||
v1_api.register(ReleaseResource())
|
api.register(ReleaseResource())
|
||||||
v1_api.register(ReleaseAudioResource())
|
api.register(ReleaseAudioResource())
|
||||||
v1_api.register(EventResource())
|
api.register(EventResource())
|
||||||
v1_api.register(UserResource())
|
api.register(UserResource())
|
||||||
v1_api.register(ActivityResource())
|
api.register(ActivityResource())
|
||||||
v1_api.register(NotificationResource())
|
api.register(NotificationResource())
|
||||||
v1_api.register(DebugResource())
|
api.register(DebugResource())
|
||||||
|
|
||||||
ajax = AjaxHandler()
|
ajax = AjaxHandler()
|
||||||
audio = AudioHandler()
|
audio = AudioHandler()
|
||||||
@@ -44,7 +44,7 @@ urlpatterns = patterns(
|
|||||||
url(r'_upload/', 'spa.ajax.upload', name='jfu_upload'),
|
url(r'_upload/', 'spa.ajax.upload', name='jfu_upload'),
|
||||||
url(r'^ajax/', include(ajax.urls)),
|
url(r'^ajax/', include(ajax.urls)),
|
||||||
url(r'^audio/', include(audio.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')),
|
url(r'^comments/', include('django.contrib.comments.urls')),
|
||||||
(r'^.*/$', 'spa.views.default')
|
(r'^.*/$', 'spa.views.default')
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
define ['app', 'marionette', 'vent', 'utils'
|
define ['app', 'marionette', 'vent', 'utils'
|
||||||
'views/mix/mixListLayout', 'views/mix/mixListView', 'views/mix/mixDetailView'
|
'views/mix/mixListLayout', 'views/mix/mixListView', 'views/mix/mixDetailView'
|
||||||
|
'views/stream/streamListLayout',
|
||||||
'views/mix/mixEditView', 'views/user/userProfileView', 'views/user/userListView', 'views/user/userEditView',
|
'views/mix/mixEditView', 'views/user/userProfileView', 'views/user/userListView', 'views/user/userEditView',
|
||||||
'models/mix/mixItem', 'models/mix/mixCollection', 'models/user/userItem'],
|
'models/mix/mixItem', 'models/mix/mixCollection', 'models/user/userItem'],
|
||||||
(App, Marionette, vent, utils,
|
(App, Marionette, vent, utils,
|
||||||
MixListLayout, MixListView, MixDetailView,
|
MixListLayout, MixListView, MixDetailView,
|
||||||
|
StreamListLayout,
|
||||||
MixEditView, UserProfileView, UserListView, UserEditView,
|
MixEditView, UserProfileView, UserListView, UserEditView,
|
||||||
MixItem, MixCollection, UserItem)->
|
MixItem, MixCollection, UserItem)->
|
||||||
class DssController extends Marionette.Controller
|
class DssController extends Marionette.Controller
|
||||||
@@ -19,6 +21,9 @@ define ['app', 'marionette', 'vent', 'utils'
|
|||||||
app = require('app')
|
app = require('app')
|
||||||
app.contentRegion.show(new MixListLayout(options or {order_by: 'latest'}))
|
app.contentRegion.show(new MixListLayout(options or {order_by: 'latest'}))
|
||||||
|
|
||||||
|
showStreamList: () ->
|
||||||
|
@showMixList({stream: true})
|
||||||
|
|
||||||
showMixListType: (type) ->
|
showMixListType: (type) ->
|
||||||
@showMixList({order_by: type})
|
@showMixList({order_by: type})
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
var __hasProp = {}.hasOwnProperty,
|
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; };
|
__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;
|
var DssController;
|
||||||
DssController = (function(_super) {
|
DssController = (function(_super) {
|
||||||
|
|
||||||
@@ -30,6 +30,12 @@
|
|||||||
}));
|
}));
|
||||||
};
|
};
|
||||||
|
|
||||||
|
DssController.prototype.showStreamList = function() {
|
||||||
|
return this.showMixList({
|
||||||
|
stream: true
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
DssController.prototype.showMixListType = function(type) {
|
DssController.prototype.showMixListType = function(type) {
|
||||||
return this.showMixList({
|
return this.showMixList({
|
||||||
order_by: type
|
order_by: type
|
||||||
|
|||||||
@@ -13,7 +13,8 @@ define ['marionette', 'vent', 'app.lib/controller'],
|
|||||||
"mix/edit/:slug": "editMix",
|
"mix/edit/:slug": "editMix",
|
||||||
|
|
||||||
"chat": "showChat",
|
"chat": "showChat",
|
||||||
#"random": "showRandomMix",
|
"random": "showRandomMix",
|
||||||
|
"stream": "showStreamList",
|
||||||
|
|
||||||
"users": "showUserList"
|
"users": "showUserList"
|
||||||
"user/:slug/favourites": "showUserFavourites"
|
"user/:slug/favourites": "showUserFavourites"
|
||||||
|
|||||||
@@ -24,6 +24,8 @@
|
|||||||
"mix/:slug": "showMix",
|
"mix/:slug": "showMix",
|
||||||
"mix/edit/:slug": "editMix",
|
"mix/edit/:slug": "editMix",
|
||||||
"chat": "showChat",
|
"chat": "showChat",
|
||||||
|
"random": "showRandomMix",
|
||||||
|
"stream": "showStreamList",
|
||||||
"users": "showUserList",
|
"users": "showUserList",
|
||||||
"user/:slug/favourites": "showUserFavourites",
|
"user/:slug/favourites": "showUserFavourites",
|
||||||
"user/:slug/likes": "showUserLikes",
|
"user/:slug/likes": "showUserLikes",
|
||||||
|
|||||||
@@ -11,7 +11,10 @@
|
|||||||
<ul class="nav ace-nav">
|
<ul class="nav ace-nav">
|
||||||
<li><a href="/mixes"><i class="icon-music icon-white"></i>Mixes</a></li>
|
<li><a href="/mixes"><i class="icon-music icon-white"></i>Mixes</a></li>
|
||||||
<li><a href="/users"><i class="icon-user icon-white"></i>Users</a></li>
|
<li><a href="/users"><i class="icon-user icon-white"></i>Users</a></li>
|
||||||
<li><a data-bypass="true" id="header-random-button"><i class="icon-cogs icon-white"></i>Random</a></li>
|
{% if user.is_authenticated %}
|
||||||
|
<li><a href="/stream" title="Show mixes from people you follow" id="header-stream-button"><i class="icon-circle-arrow-down icon-white"></i>Stream</a></li>
|
||||||
|
{% endif %}
|
||||||
|
<li><a data-bypass="true" title="Show random mix from our vaults" id="header-random-button"><i class="icon-cogs icon-white"></i>Random</a></li>
|
||||||
<li><a data-bypass="true" target="_blank" href="/podcast"><i class="icon-rss icon-white"></i>Podcast</a></li>
|
<li><a data-bypass="true" target="_blank" href="/podcast"><i class="icon-rss icon-white"></i>Podcast</a></li>
|
||||||
{% if false %}
|
{% if false %}
|
||||||
<li class="purple">
|
<li class="purple">
|
||||||
|
|||||||
Reference in New Issue
Block a user