From 650c0ffdbb6c05026415a139e034a74c8d21f30d Mon Sep 17 00:00:00 2001 From: Fergal Moran Date: Fri, 23 Sep 2016 00:21:02 +0100 Subject: [PATCH] Added audio url --- INSTALL | 0 LICENSE | 0 README | 0 angular_upgrade.md | 0 apache/django_live.wsgi | 0 api/__init__.py | 0 api/pipeline.py | 0 api/serializers.py | 136 +++++++++++------- api/tests.py | 0 api/urls.py | 1 + api/views.py | 2 +- bin/wav2png | Bin clean_thumbnails | 0 core/__init__.py | 0 core/analytics/__init__.py | 0 core/analytics/google.py | 0 core/decorators.py | 0 core/realtime/__init__.py | 0 core/realtime/activity.py | 0 core/serialisers/__init__.py | 0 core/utils/__init__.py | 0 core/utils/audio/__init__.py | 0 core/utils/audio/mp3.py | 0 core/utils/cdn.py | 0 core/utils/file.py | 0 core/utils/html.py | 0 core/utils/ice.py | 0 core/utils/live.py | 0 core/utils/string.py | 0 core/utils/url.py | 0 core/utils/waveform.py | 0 core/widgets/__init__.py | 0 core/widgets/upload.py | 0 db_reset | 0 dss/__init__.py | 0 dss/localsettings.py | 6 +- dss/logsettings.py | 0 dss/paymentsettings.py | 0 dss/pipelinesettings.py | 0 dss/psa.py | 0 dss/settings.py | 0 dss/urls.py | 0 dss/warning_settings.py | 0 dss/wsgi.py | 0 manage.py | 0 pip_upgrade.py | 0 requirements.txt | 0 run_celery.sh | 0 run_web.sh | 0 spa/__init__.py | 0 spa/admin.py | 0 spa/blog/urls.py | 0 spa/blog/views.py | 0 spa/embedding/__init__.py | 0 spa/embedding/urls.py | 0 spa/embedding/views.py | 0 spa/management/__init__.py | 0 spa/management/commands/__init__.py | 0 spa/management/commands/__template_Debug.py | 0 .../commands/__timeside_waveforms.py | 0 spa/management/commands/add_user_uid.py | 0 spa/management/commands/archive_mixes.py | 0 spa/management/commands/azure_util.py | 2 +- .../commands/create_notifications.py | 0 spa/management/commands/debugHumanize.py | 0 spa/management/commands/debugRelations.py | 0 spa/management/commands/debugUserProfile.py | 0 spa/management/commands/deletefailed.py | 0 spa/management/commands/deleteorphanmp3.py | 0 .../commands/fake_comment_timeindex.py | 0 spa/management/commands/get_avatars.py | 0 spa/management/commands/processmix.py | 0 spa/management/commands/tidy_cdn.py | 0 spa/management/commands/waveforms.py | 0 .../commands/zoom_convert_waveforms.py | 0 spa/middleware/__init__.py | 0 spa/middleware/sqlprinter.py | 0 spa/middleware/stripwhitespace.py | 0 spa/middleware/uploadify.py | 0 spa/models/__init__.py | 0 spa/models/_lookup.py | 0 spa/models/activity.py | 0 spa/models/basemodel.py | 0 spa/models/chatmessage.py | 0 spa/models/comment.py | 0 spa/models/fields.py | 0 spa/models/genre.py | 0 spa/models/label.py | 0 .../managers/QueuedActivityModelManager.py | 0 spa/models/managers/__init__.py | 0 spa/models/mix.py | 0 spa/models/notification.py | 0 spa/models/playlist.py | 6 + spa/models/purchaselink.py | 0 spa/models/release.py | 0 spa/models/show.py | 0 spa/models/tracklist.py | 0 spa/models/userprofile.py | 0 spa/models/venue.py | 0 spa/signals.py | 0 spa/social/__init__.py | 0 spa/social/urls.py | 0 spa/social/views.py | 0 spa/tasks.py | 0 spa/tests/__init__.py | 0 spa/tests/dom_helper.py | 0 spa/tests/facebook_dom.py | 0 spa/tests/schedule.py | 0 spa/tests/webdriver.py | 0 utils.py | 0 110 files changed, 100 insertions(+), 53 deletions(-) mode change 100755 => 100644 INSTALL mode change 100755 => 100644 LICENSE mode change 100755 => 100644 README mode change 100755 => 100644 angular_upgrade.md mode change 100755 => 100644 apache/django_live.wsgi mode change 100755 => 100644 api/__init__.py mode change 100755 => 100644 api/pipeline.py mode change 100755 => 100644 api/serializers.py mode change 100755 => 100644 api/tests.py mode change 100755 => 100644 api/urls.py mode change 100755 => 100644 api/views.py mode change 100755 => 100644 bin/wav2png mode change 100755 => 100644 clean_thumbnails mode change 100755 => 100644 core/__init__.py mode change 100755 => 100644 core/analytics/__init__.py mode change 100755 => 100644 core/analytics/google.py mode change 100755 => 100644 core/decorators.py mode change 100755 => 100644 core/realtime/__init__.py mode change 100755 => 100644 core/realtime/activity.py mode change 100755 => 100644 core/serialisers/__init__.py mode change 100755 => 100644 core/utils/__init__.py mode change 100755 => 100644 core/utils/audio/__init__.py mode change 100755 => 100644 core/utils/audio/mp3.py mode change 100755 => 100644 core/utils/cdn.py mode change 100755 => 100644 core/utils/file.py mode change 100755 => 100644 core/utils/html.py mode change 100755 => 100644 core/utils/ice.py mode change 100755 => 100644 core/utils/live.py mode change 100755 => 100644 core/utils/string.py mode change 100755 => 100644 core/utils/url.py mode change 100755 => 100644 core/utils/waveform.py mode change 100755 => 100644 core/widgets/__init__.py mode change 100755 => 100644 core/widgets/upload.py mode change 100755 => 100644 db_reset mode change 100755 => 100644 dss/__init__.py mode change 100755 => 100644 dss/logsettings.py mode change 100755 => 100644 dss/paymentsettings.py mode change 100755 => 100644 dss/pipelinesettings.py mode change 100755 => 100644 dss/psa.py mode change 100755 => 100644 dss/settings.py mode change 100755 => 100644 dss/urls.py mode change 100755 => 100644 dss/warning_settings.py mode change 100755 => 100644 dss/wsgi.py mode change 100755 => 100644 manage.py mode change 100755 => 100644 pip_upgrade.py mode change 100755 => 100644 requirements.txt mode change 100755 => 100644 run_celery.sh mode change 100755 => 100644 run_web.sh mode change 100755 => 100644 spa/__init__.py mode change 100755 => 100644 spa/admin.py mode change 100755 => 100644 spa/blog/urls.py mode change 100755 => 100644 spa/blog/views.py mode change 100755 => 100644 spa/embedding/__init__.py mode change 100755 => 100644 spa/embedding/urls.py mode change 100755 => 100644 spa/embedding/views.py mode change 100755 => 100644 spa/management/__init__.py mode change 100755 => 100644 spa/management/commands/__init__.py mode change 100755 => 100644 spa/management/commands/__template_Debug.py mode change 100755 => 100644 spa/management/commands/__timeside_waveforms.py mode change 100755 => 100644 spa/management/commands/add_user_uid.py mode change 100755 => 100644 spa/management/commands/archive_mixes.py mode change 100755 => 100644 spa/management/commands/azure_util.py mode change 100755 => 100644 spa/management/commands/create_notifications.py mode change 100755 => 100644 spa/management/commands/debugHumanize.py mode change 100755 => 100644 spa/management/commands/debugRelations.py mode change 100755 => 100644 spa/management/commands/debugUserProfile.py mode change 100755 => 100644 spa/management/commands/deletefailed.py mode change 100755 => 100644 spa/management/commands/deleteorphanmp3.py mode change 100755 => 100644 spa/management/commands/fake_comment_timeindex.py mode change 100755 => 100644 spa/management/commands/get_avatars.py mode change 100755 => 100644 spa/management/commands/processmix.py mode change 100755 => 100644 spa/management/commands/tidy_cdn.py mode change 100755 => 100644 spa/management/commands/waveforms.py mode change 100755 => 100644 spa/management/commands/zoom_convert_waveforms.py mode change 100755 => 100644 spa/middleware/__init__.py mode change 100755 => 100644 spa/middleware/sqlprinter.py mode change 100755 => 100644 spa/middleware/stripwhitespace.py mode change 100755 => 100644 spa/middleware/uploadify.py mode change 100755 => 100644 spa/models/__init__.py mode change 100755 => 100644 spa/models/_lookup.py mode change 100755 => 100644 spa/models/activity.py mode change 100755 => 100644 spa/models/basemodel.py mode change 100755 => 100644 spa/models/chatmessage.py mode change 100755 => 100644 spa/models/comment.py mode change 100755 => 100644 spa/models/fields.py mode change 100755 => 100644 spa/models/genre.py mode change 100755 => 100644 spa/models/label.py mode change 100755 => 100644 spa/models/managers/QueuedActivityModelManager.py mode change 100755 => 100644 spa/models/managers/__init__.py mode change 100755 => 100644 spa/models/mix.py mode change 100755 => 100644 spa/models/notification.py mode change 100755 => 100644 spa/models/playlist.py mode change 100755 => 100644 spa/models/purchaselink.py mode change 100755 => 100644 spa/models/release.py mode change 100755 => 100644 spa/models/show.py mode change 100755 => 100644 spa/models/tracklist.py mode change 100755 => 100644 spa/models/userprofile.py mode change 100755 => 100644 spa/models/venue.py mode change 100755 => 100644 spa/signals.py mode change 100755 => 100644 spa/social/__init__.py mode change 100755 => 100644 spa/social/urls.py mode change 100755 => 100644 spa/social/views.py mode change 100755 => 100644 spa/tasks.py mode change 100755 => 100644 spa/tests/__init__.py mode change 100755 => 100644 spa/tests/dom_helper.py mode change 100755 => 100644 spa/tests/facebook_dom.py mode change 100755 => 100644 spa/tests/schedule.py mode change 100755 => 100644 spa/tests/webdriver.py mode change 100755 => 100644 utils.py diff --git a/INSTALL b/INSTALL old mode 100755 new mode 100644 diff --git a/LICENSE b/LICENSE old mode 100755 new mode 100644 diff --git a/README b/README old mode 100755 new mode 100644 diff --git a/angular_upgrade.md b/angular_upgrade.md old mode 100755 new mode 100644 diff --git a/apache/django_live.wsgi b/apache/django_live.wsgi old mode 100755 new mode 100644 diff --git a/api/__init__.py b/api/__init__.py old mode 100755 new mode 100644 diff --git a/api/pipeline.py b/api/pipeline.py old mode 100755 new mode 100644 diff --git a/api/serializers.py b/api/serializers.py old mode 100755 new mode 100644 index c555694..6a25de1 --- a/api/serializers.py +++ b/api/serializers.py @@ -87,6 +87,7 @@ class InlineUserProfileSerializer(serializers.ModelSerializer): return n + class LikeSerializer(serializers.ModelSerializer): class Meta: model = UserProfile @@ -98,6 +99,11 @@ class LikeSerializer(serializers.ModelSerializer): display_name = serializers.ReadOnlyField(source='get_nice_name') +class PlaylistSerializer(serializers.ModelSerializer): + class Meta: + model = Playlist + + class FavouriteSerializer(serializers.ModelSerializer): class Meta: model = UserProfile @@ -160,6 +166,7 @@ class MixSerializer(serializers.ModelSerializer): 'description', 'user', 'duration', + 'audio_url', 'waveform_url', 'waveform_progress_url', 'mix_image', @@ -170,6 +177,7 @@ class MixSerializer(serializers.ModelSerializer): 'genres', 'likes', 'favourites', + 'playlists', 'plays', 'downloads', 'is_liked', @@ -179,6 +187,7 @@ class MixSerializer(serializers.ModelSerializer): slug = serializers.ReadOnlyField(required=False) user = InlineUserProfileSerializer(read_only=True) + audio_url = serializers.ReadOnlyField(source='get_stream_url') waveform_url = serializers.ReadOnlyField(source='get_waveform_url') waveform_progress_url = serializers.ReadOnlyField(source='get_waveform_progress_url') mix_image = serializers.ReadOnlyField(source='get_image_url') @@ -187,6 +196,7 @@ class MixSerializer(serializers.ModelSerializer): genres = GenreSerializer(many=True, required=False, read_only=True) likes = LikeSerializer(many=True, required=False, read_only=True) # slug_field='slug', many=True, read_only=True) favourites = FavouriteSerializer(many=True, required=False, read_only=True) # slug_field='slug', many=True, read_only=True) + playlists = serializers.SerializerMethodField() plays = InlineActivityPlaySerializer(many=True, read_only=True, source='activity_plays') downloads = InlineActivityDownloadSerializer(read_only=True, source='activity_downloads') is_liked = serializers.SerializerMethodField(read_only=True) @@ -196,53 +206,13 @@ class MixSerializer(serializers.ModelSerializer): # all nested representations need to be serialized separately here try: # get any likes that aren't in passed bundle - likes = self.initial_data['likes'] - unliked = instance.likes.exclude(user__userprofile__slug__in=[l['slug'] for l in likes]) - for ul in unliked: - # check that the user removing the like is an instance of the current user - # for now, only the current user can like stuff - if ul == self.context['request'].user.userprofile: - instance.update_liked(ul, False) + self._update_likes(instance) - for like in likes: - # check that the user adding the like is an instance of the current user - # for now, only the current user can like stuff - try: - user = UserProfile.objects.get(slug=like['slug']) - if user is not None and user == self.context['request'].user.userprofile: - instance.update_liked(user, True) + self._update_favourites(instance) - except UserProfile.DoesNotExist: - pass + self._update_genres(instance) - favourites = self.initial_data['favourites'] - unfavourited = instance.favourites.exclude(user__userprofile__slug__in=[f['slug'] for f in favourites]) - for uf in unfavourited: - # check that the user removing the like is an instance of the current user - # for now, only the current user can like stuff - if uf == self.context['request'].user.userprofile: - instance.update_favourite(uf, False) - - for favourite in favourites: - # check that the user adding the like is an instance of the current user - # for now, only the current user can like stuff - try: - user = UserProfile.objects.get(slug=favourite['slug']) - if user is not None and user == self.context['request'].user.userprofile: - instance.update_favourite(user, True) - - except UserProfile.DoesNotExist: - pass - - genres = self.initial_data['genres'] - instance.genres.clear() - for genre in genres: - try: - g = Genre.objects.get(slug=genre.get('slug')) - instance.genres.add(g) - except Genre.DoesNotExist: - """ Possibly allow adding genres here """ - pass + self._update_playlists(instance) validated_data.pop('genres', None) @@ -259,6 +229,72 @@ class MixSerializer(serializers.ModelSerializer): except Exception as ex: raise ex + def _update_genres(self, instance): + genres = self.initial_data['genres'] + instance.genres.clear() + for genre in genres: + try: + g = Genre.objects.get(slug=genre.get('slug')) + instance.genres.add(g) + except Genre.DoesNotExist: + """ Possibly allow adding genres here """ + pass + + def _update_playlists(self, instance): + try: + user = self.context['request'].user + playlists = self.initial_data['playlists'] + removed = user.userprofile.playlists.exclude(slug__in=[f['slug'] for f in playlists]) + if user.is_authenticated(): + + for r in removed: + playlist = Playlist.objects.get(slug=r.slug) + playlist.mixes.remove(instance) + playlist.save() + + for p in playlists: + try: + playlist = Playlist.objects.get(slug=p['slug']) + playlist.mixes.add(instance) + playlist.save() + except Playlist.DoesNotExist: + print("Playlist %s not found".format(p['slug'])) + pass + else: + pass + except Exception as ex: + print(ex) + + def _update_favourites(self, instance): + favourites = self.initial_data['favourites'] + unfavourited = instance.favourites.exclude(user__userprofile__slug__in=[f['slug'] for f in favourites]) + for uf in unfavourited: + if uf == self.context['request'].user.userprofile: + instance.update_favourite(uf, False) + for favourite in favourites: + try: + user = UserProfile.objects.get(slug=favourite['slug']) + if user is not None and user == self.context['request'].user.userprofile: + instance.update_favourite(user, True) + + except UserProfile.DoesNotExist: + pass + + def _update_likes(self, instance): + likes = self.initial_data['likes'] + unliked = instance.likes.exclude(user__userprofile__slug__in=[l['slug'] for l in likes]) + for ul in unliked: + if ul == self.context['request'].user.userprofile: + instance.update_liked(ul, False) + for like in likes: + try: + user = UserProfile.objects.get(slug=like['slug']) + if user is not None and user == self.context['request'].user.userprofile: + instance.update_liked(user, True) + + except UserProfile.DoesNotExist: + pass + def is_valid(self, raise_exception=False): return super(MixSerializer, self).is_valid(raise_exception) @@ -284,6 +320,14 @@ class MixSerializer(serializers.ModelSerializer): user = self.context['request'].user return obj.is_liked(user) if user.is_authenticated() else False + def get_playlists(self, obj): + user = self.context['request'].user + if user.is_authenticated(): + playlists = user.userprofile.playlists.filter(mixes__in=[obj]) + return list(playlists.values('slug')) + else: + return [] + class UserProfileSerializer(serializers.ModelSerializer): roles = serializers.SerializerMethodField() @@ -581,7 +625,3 @@ class BlogSerializer(serializers.ModelSerializer): class Meta: model = Blog - -class PlaylistSerializer(serializers.ModelSerializer): - class Meta: - model = Playlist diff --git a/api/tests.py b/api/tests.py old mode 100755 new mode 100644 diff --git a/api/urls.py b/api/urls.py old mode 100755 new mode 100644 index bfe20b4..8a17ce4 --- a/api/urls.py +++ b/api/urls.py @@ -22,6 +22,7 @@ router.register(r'messages', views.MessageViewSet, base_name='messages') router.register(r'shows', views.ShowViewSet, base_name='shows') router.register(r'blog', views.BlogViewSet, base_name='shows') router.register(r'playlist', views.PlaylistViewSet, base_name='playlists') +router.register(r'playlist', views.PlaylistViewSet, base_name='playlists') router.register(r'user', views.UserProfileViewSet) router.register(r'mix', views.MixViewSet) diff --git a/api/views.py b/api/views.py old mode 100755 new mode 100644 index 42cd496..fdbf276 --- a/api/views.py +++ b/api/views.py @@ -384,6 +384,6 @@ class PlaylistViewSet(viewsets.ModelViewSet): def get_queryset(self): if self.request.user.is_authenticated: - return self.queryset.get(user=self.request.user.userprofile) + return self.queryset.filter(user=self.request.user.userprofile) return Response(status=HTTP_401_UNAUTHORIZED) diff --git a/bin/wav2png b/bin/wav2png old mode 100755 new mode 100644 diff --git a/clean_thumbnails b/clean_thumbnails old mode 100755 new mode 100644 diff --git a/core/__init__.py b/core/__init__.py old mode 100755 new mode 100644 diff --git a/core/analytics/__init__.py b/core/analytics/__init__.py old mode 100755 new mode 100644 diff --git a/core/analytics/google.py b/core/analytics/google.py old mode 100755 new mode 100644 diff --git a/core/decorators.py b/core/decorators.py old mode 100755 new mode 100644 diff --git a/core/realtime/__init__.py b/core/realtime/__init__.py old mode 100755 new mode 100644 diff --git a/core/realtime/activity.py b/core/realtime/activity.py old mode 100755 new mode 100644 diff --git a/core/serialisers/__init__.py b/core/serialisers/__init__.py old mode 100755 new mode 100644 diff --git a/core/utils/__init__.py b/core/utils/__init__.py old mode 100755 new mode 100644 diff --git a/core/utils/audio/__init__.py b/core/utils/audio/__init__.py old mode 100755 new mode 100644 diff --git a/core/utils/audio/mp3.py b/core/utils/audio/mp3.py old mode 100755 new mode 100644 diff --git a/core/utils/cdn.py b/core/utils/cdn.py old mode 100755 new mode 100644 diff --git a/core/utils/file.py b/core/utils/file.py old mode 100755 new mode 100644 diff --git a/core/utils/html.py b/core/utils/html.py old mode 100755 new mode 100644 diff --git a/core/utils/ice.py b/core/utils/ice.py old mode 100755 new mode 100644 diff --git a/core/utils/live.py b/core/utils/live.py old mode 100755 new mode 100644 diff --git a/core/utils/string.py b/core/utils/string.py old mode 100755 new mode 100644 diff --git a/core/utils/url.py b/core/utils/url.py old mode 100755 new mode 100644 diff --git a/core/utils/waveform.py b/core/utils/waveform.py old mode 100755 new mode 100644 diff --git a/core/widgets/__init__.py b/core/widgets/__init__.py old mode 100755 new mode 100644 diff --git a/core/widgets/upload.py b/core/widgets/upload.py old mode 100755 new mode 100644 diff --git a/db_reset b/db_reset old mode 100755 new mode 100644 diff --git a/dss/__init__.py b/dss/__init__.py old mode 100755 new mode 100644 diff --git a/dss/localsettings.py b/dss/localsettings.py index ec4fc83..b34b3ce 100644 --- a/dss/localsettings.py +++ b/dss/localsettings.py @@ -6,7 +6,7 @@ DEBUG = ast.literal_eval(os.environ.get('IS_DEBUG', 'True')) DSS_TEMP_PATH = os.environ.get('DSS_TEMP_PATH', '/tmp/') DSS_LAME_PATH = os.environ.get('DSS_LAME_PATH', '/usr/bin/sox') DSS_WAVE_PATH = os.environ.get('DSS_WAVE_PATH', - '/home/fergalm/Dropbox/development/deepsouthsounds.com/dss.lib/wav2png/bin/Linux/wav2png') + '/home/fergalm/dev/personal/deepsouthsounds.com/dss.lib/wav2png/bin/Linux/wav2png') GEOIP_PATH = os.environ.get('GEOIP_PATH', '/home/fergalm/Dropbox/Private/deepsouthsounds.com/working/geolite') DATABASE_PASSWORD = os.environ.get('DATABASE_PASSWORD', 'deepsouthsounds') @@ -17,7 +17,7 @@ DATABASE_HOST = os.environ.get('DATABASE_HOST', 'localhost') STATIC_URL = '/assets/' MEDIA_ROOT = os.environ.get('MEDIA_ROOT', '/mnt/dev/deepsouthsounds.com/media') -STATIC_ROOT = os.environ.get('STATIC_ROOT', '/home/fergalm/Dropbox/development/deepsouthsounds.com/cache/static') +STATIC_ROOT = os.environ.get('STATIC_ROOT', '/home/fergalm/dev/personal/deepsouthsounds.com/cache/static') CACHE_ROOT = os.environ.get('CACHE_ROOT', '/mnt/dev/deepsouthsounds.com/cache') MEDIA_URL = os.environ.get('MEDIA_URL', 'http://localhost/DSSMedia/') # '{0}media/'.format(CDN_URL) @@ -40,7 +40,7 @@ MANDRILL_API_KEY = os.environ.get('MANDRILL_API_KEY', '') FACEBOOK_API_VERSION = os.environ.get('FACEBOOK_API_VERSION', '2.5') GOOGLE_CREDENTIALS = os.environ.get('GOOGLE_CREDENTIALS', - '/home/fergalm/Dropbox/development/deepsouthsounds.com/dss.api/googleapikey.json') + '/home/fergalm/dev/personal/deepsouthsounds.com/dss.api/googleapikey.json') SOCIAL_AUTH_FACEBOOK_KEY = os.environ.get('SOCIAL_AUTH_FACEBOOK_KEY', '') SOCIAL_AUTH_FACEBOOK_SECRET = os.environ.get('SOCIAL_AUTH_FACEBOOK_SECRET', '') diff --git a/dss/logsettings.py b/dss/logsettings.py old mode 100755 new mode 100644 diff --git a/dss/paymentsettings.py b/dss/paymentsettings.py old mode 100755 new mode 100644 diff --git a/dss/pipelinesettings.py b/dss/pipelinesettings.py old mode 100755 new mode 100644 diff --git a/dss/psa.py b/dss/psa.py old mode 100755 new mode 100644 diff --git a/dss/settings.py b/dss/settings.py old mode 100755 new mode 100644 diff --git a/dss/urls.py b/dss/urls.py old mode 100755 new mode 100644 diff --git a/dss/warning_settings.py b/dss/warning_settings.py old mode 100755 new mode 100644 diff --git a/dss/wsgi.py b/dss/wsgi.py old mode 100755 new mode 100644 diff --git a/manage.py b/manage.py old mode 100755 new mode 100644 diff --git a/pip_upgrade.py b/pip_upgrade.py old mode 100755 new mode 100644 diff --git a/requirements.txt b/requirements.txt old mode 100755 new mode 100644 diff --git a/run_celery.sh b/run_celery.sh old mode 100755 new mode 100644 diff --git a/run_web.sh b/run_web.sh old mode 100755 new mode 100644 diff --git a/spa/__init__.py b/spa/__init__.py old mode 100755 new mode 100644 diff --git a/spa/admin.py b/spa/admin.py old mode 100755 new mode 100644 diff --git a/spa/blog/urls.py b/spa/blog/urls.py old mode 100755 new mode 100644 diff --git a/spa/blog/views.py b/spa/blog/views.py old mode 100755 new mode 100644 diff --git a/spa/embedding/__init__.py b/spa/embedding/__init__.py old mode 100755 new mode 100644 diff --git a/spa/embedding/urls.py b/spa/embedding/urls.py old mode 100755 new mode 100644 diff --git a/spa/embedding/views.py b/spa/embedding/views.py old mode 100755 new mode 100644 diff --git a/spa/management/__init__.py b/spa/management/__init__.py old mode 100755 new mode 100644 diff --git a/spa/management/commands/__init__.py b/spa/management/commands/__init__.py old mode 100755 new mode 100644 diff --git a/spa/management/commands/__template_Debug.py b/spa/management/commands/__template_Debug.py old mode 100755 new mode 100644 diff --git a/spa/management/commands/__timeside_waveforms.py b/spa/management/commands/__timeside_waveforms.py old mode 100755 new mode 100644 diff --git a/spa/management/commands/add_user_uid.py b/spa/management/commands/add_user_uid.py old mode 100755 new mode 100644 diff --git a/spa/management/commands/archive_mixes.py b/spa/management/commands/archive_mixes.py old mode 100755 new mode 100644 diff --git a/spa/management/commands/azure_util.py b/spa/management/commands/azure_util.py old mode 100755 new mode 100644 index 71f466a..b620569 --- a/spa/management/commands/azure_util.py +++ b/spa/management/commands/azure_util.py @@ -22,7 +22,7 @@ def _check_missing_mixes(): for m in ms: url = m.get_download_url() if not cdn.file_exists(url): - file = '/mnt/dev/working/Dropbox/Development/deepsouthsounds.com/media/mixes/{0}.mp3'.format(m.uid) + file = '/mnt/dev/working/deepsouthsounds.com/media/mixes/{0}.mp3'.format(m.uid) if os.path.isfile(file): print(('* {0}'.format(file))) # cdn.upload_file_to_azure(file, '{0}.mp3'.format(m.uid), 'mixes') diff --git a/spa/management/commands/create_notifications.py b/spa/management/commands/create_notifications.py old mode 100755 new mode 100644 diff --git a/spa/management/commands/debugHumanize.py b/spa/management/commands/debugHumanize.py old mode 100755 new mode 100644 diff --git a/spa/management/commands/debugRelations.py b/spa/management/commands/debugRelations.py old mode 100755 new mode 100644 diff --git a/spa/management/commands/debugUserProfile.py b/spa/management/commands/debugUserProfile.py old mode 100755 new mode 100644 diff --git a/spa/management/commands/deletefailed.py b/spa/management/commands/deletefailed.py old mode 100755 new mode 100644 diff --git a/spa/management/commands/deleteorphanmp3.py b/spa/management/commands/deleteorphanmp3.py old mode 100755 new mode 100644 diff --git a/spa/management/commands/fake_comment_timeindex.py b/spa/management/commands/fake_comment_timeindex.py old mode 100755 new mode 100644 diff --git a/spa/management/commands/get_avatars.py b/spa/management/commands/get_avatars.py old mode 100755 new mode 100644 diff --git a/spa/management/commands/processmix.py b/spa/management/commands/processmix.py old mode 100755 new mode 100644 diff --git a/spa/management/commands/tidy_cdn.py b/spa/management/commands/tidy_cdn.py old mode 100755 new mode 100644 diff --git a/spa/management/commands/waveforms.py b/spa/management/commands/waveforms.py old mode 100755 new mode 100644 diff --git a/spa/management/commands/zoom_convert_waveforms.py b/spa/management/commands/zoom_convert_waveforms.py old mode 100755 new mode 100644 diff --git a/spa/middleware/__init__.py b/spa/middleware/__init__.py old mode 100755 new mode 100644 diff --git a/spa/middleware/sqlprinter.py b/spa/middleware/sqlprinter.py old mode 100755 new mode 100644 diff --git a/spa/middleware/stripwhitespace.py b/spa/middleware/stripwhitespace.py old mode 100755 new mode 100644 diff --git a/spa/middleware/uploadify.py b/spa/middleware/uploadify.py old mode 100755 new mode 100644 diff --git a/spa/models/__init__.py b/spa/models/__init__.py old mode 100755 new mode 100644 diff --git a/spa/models/_lookup.py b/spa/models/_lookup.py old mode 100755 new mode 100644 diff --git a/spa/models/activity.py b/spa/models/activity.py old mode 100755 new mode 100644 diff --git a/spa/models/basemodel.py b/spa/models/basemodel.py old mode 100755 new mode 100644 diff --git a/spa/models/chatmessage.py b/spa/models/chatmessage.py old mode 100755 new mode 100644 diff --git a/spa/models/comment.py b/spa/models/comment.py old mode 100755 new mode 100644 diff --git a/spa/models/fields.py b/spa/models/fields.py old mode 100755 new mode 100644 diff --git a/spa/models/genre.py b/spa/models/genre.py old mode 100755 new mode 100644 diff --git a/spa/models/label.py b/spa/models/label.py old mode 100755 new mode 100644 diff --git a/spa/models/managers/QueuedActivityModelManager.py b/spa/models/managers/QueuedActivityModelManager.py old mode 100755 new mode 100644 diff --git a/spa/models/managers/__init__.py b/spa/models/managers/__init__.py old mode 100755 new mode 100644 diff --git a/spa/models/mix.py b/spa/models/mix.py old mode 100755 new mode 100644 diff --git a/spa/models/notification.py b/spa/models/notification.py old mode 100755 new mode 100644 diff --git a/spa/models/playlist.py b/spa/models/playlist.py old mode 100755 new mode 100644 index 73c78e5..f401d20 --- a/spa/models/playlist.py +++ b/spa/models/playlist.py @@ -25,6 +25,12 @@ class Playlist(BaseModel): objects = PlaylistManager() + def __str__(self): + return self.__unicode__().encode('utf-8') + + def __unicode__(self): + return self.name + def save(self, force_insert=False, force_update=False, using=None, update_fields=None): if not self.id: self.slug = unique_slugify(self, self.name) diff --git a/spa/models/purchaselink.py b/spa/models/purchaselink.py old mode 100755 new mode 100644 diff --git a/spa/models/release.py b/spa/models/release.py old mode 100755 new mode 100644 diff --git a/spa/models/show.py b/spa/models/show.py old mode 100755 new mode 100644 diff --git a/spa/models/tracklist.py b/spa/models/tracklist.py old mode 100755 new mode 100644 diff --git a/spa/models/userprofile.py b/spa/models/userprofile.py old mode 100755 new mode 100644 diff --git a/spa/models/venue.py b/spa/models/venue.py old mode 100755 new mode 100644 diff --git a/spa/signals.py b/spa/signals.py old mode 100755 new mode 100644 diff --git a/spa/social/__init__.py b/spa/social/__init__.py old mode 100755 new mode 100644 diff --git a/spa/social/urls.py b/spa/social/urls.py old mode 100755 new mode 100644 diff --git a/spa/social/views.py b/spa/social/views.py old mode 100755 new mode 100644 diff --git a/spa/tasks.py b/spa/tasks.py old mode 100755 new mode 100644 diff --git a/spa/tests/__init__.py b/spa/tests/__init__.py old mode 100755 new mode 100644 diff --git a/spa/tests/dom_helper.py b/spa/tests/dom_helper.py old mode 100755 new mode 100644 diff --git a/spa/tests/facebook_dom.py b/spa/tests/facebook_dom.py old mode 100755 new mode 100644 diff --git a/spa/tests/schedule.py b/spa/tests/schedule.py old mode 100755 new mode 100644 diff --git a/spa/tests/webdriver.py b/spa/tests/webdriver.py old mode 100755 new mode 100644 diff --git a/utils.py b/utils.py old mode 100755 new mode 100644