diff --git a/core/tests/mix.py b/core/tests/mix.py index e569258..327116a 100644 --- a/core/tests/mix.py +++ b/core/tests/mix.py @@ -1,12 +1,12 @@ from unittest import TestCase -class Mix(object): +class MixTestItem(object): def get_mix_at(self, hour): pass class MixTest(TestCase): def test_simple(self): - m = Mix() + m = MixTestItem() diff --git a/dss/settings.py b/dss/settings.py index 3eea5ca..a5cdd6a 100644 --- a/dss/settings.py +++ b/dss/settings.py @@ -236,7 +236,6 @@ PIPELINE_CSS = { }, }, } -COMPRESS_ENABLED = True COMPRESS_CSS_FILTERS = [ 'compressor.filters.css_default.CssAbsoluteFilter', ] diff --git a/spa/api/v1/MixResource.py b/spa/api/v1/MixResource.py index 7ee8db8..1e44e43 100644 --- a/spa/api/v1/MixResource.py +++ b/spa/api/v1/MixResource.py @@ -32,7 +32,7 @@ class MixResource(BackboneCompatibleResource): return Mix.get_listing(sort, request.user) def dehydrate_mix_image(self, bundle): - return bundle.obj.get_image() + return bundle.obj.get_image_url() def dehydrate_description(self, bundle): return bundle.obj.description.replace("\n", "
") diff --git a/spa/management/commands/cleanup.py b/spa/management/commands/cleanup.py new file mode 100644 index 0000000..25c7039 --- /dev/null +++ b/spa/management/commands/cleanup.py @@ -0,0 +1,18 @@ +from shutil import copyfile +from django.core.management.base import NoArgsCommand +import os +from spa.models import Mix + +class Command(NoArgsCommand): + def handle_noargs(self, **options): + mixes = Mix.objects.all() + for mix in mixes: + filename = mix.mix_image.file.name + if os.path.isfile(filename): + filename, extension = os.path.splitext(filename) + new_file = "%s/%s%s" % (os.path.dirname(mix.mix_image.file.name), mix.uid, extension) + print "Moving %s to %s" % (mix.mix_image.file.name, new_file) + mix.mix_image = extension + mix.save() + copyfile(filename, new_file) + diff --git a/spa/models/Mix.py b/spa/models/Mix.py index ab8c31a..bafe262 100644 --- a/spa/models/Mix.py +++ b/spa/models/Mix.py @@ -53,7 +53,11 @@ class Mix(_BaseModel): ret = "%s/%s.%s" % (waveform_root, self.uid, "png") return ret - def get_image(self): + def get_image_url(self): + images_root = localsettings.IMAGE_URL if hasattr(localsettings, 'IMAGE_URL') else "%s/mix_images/" % settings.MEDIA_URL + ret = "%s/%s.%s" % (images_root, self.uid, self.mix_image) + return ret + """ try: if os.path.isfile(self.mix_image.path): image_root = localsettings.IMAGE_URL if hasattr(localsettings, 'IMAGE_URL') else settings.MEDIA_URL @@ -63,10 +67,11 @@ class Mix(_BaseModel): return settings.STATIC_URL + 'img/default-track.png' return settings.STATIC_URL + 'img/default-track.png' + """ def get_stream_path(self): #return 'media/%s/' % self.local_file.name - return '/audio/stream/%d' % self.id; + return '/audio/stream/%d' % self.id @classmethod def get_listing(cls, listing_type, user=None): diff --git a/spa/models/_BaseModel.py b/spa/models/_BaseModel.py index 0da7868..a354d5a 100644 --- a/spa/models/_BaseModel.py +++ b/spa/models/_BaseModel.py @@ -25,6 +25,6 @@ class _BaseModel(models.Model): def get_lookup_filter_field(cls): field_list = cls._meta.get_all_field_names(); for field in field_list: - if field.endswith("_name"): + if field.endswith("name") or field.endswith("description"): return field return "description" \ No newline at end of file diff --git a/spa/social.py b/spa/social.py index 4fa63c5..78402e3 100644 --- a/spa/social.py +++ b/spa/social.py @@ -28,7 +28,7 @@ def redirect_mix(request, mix_id): except Mix.DoesNotExist: raise Http404 - image = mix.get_image() + image = mix.get_image_url() audio_url = mix.get_stream_path() redirect_url = mix.get_absolute_url() response = render_to_response( diff --git a/static/js/app/models/release.js b/static/js/app/models/release.js index bec1dca..b78a461 100644 --- a/static/js/app/models/release.js +++ b/static/js/app/models/release.js @@ -10,19 +10,19 @@ var Release = DSSModel.extend({ urlRoot:com.podnoms.settings.urlRoot + "release/", isValid:function () { this.errors = {}; - if (isEmpty(this.get('release_label'))) { + if (com.podnoms.utils.isEmpty(this.get('release_label'))) { return this.addError('release_label', 'Please choose a label'); } - if (isEmpty(this.get('release_title'))) { + if (com.podnoms.utils.isEmpty(this.get('release_title'))) { return this.addError('release_title', 'Please choose a title'); } - if (isEmpty(this.get('release_artist'))) { + if (com.podnoms.utils.isEmpty(this.get('release_artist'))) { return this.addError('release_artist', 'Please choose an artist'); } - if (isEmpty(this.get('release_date'))) { + if (com.podnoms.utils.isEmpty(this.get('release_date'))) { return this.addError('release_date', 'Please choose a valid date'); } - if (isEmpty(this.get('release_description'))) { + if (com.podnoms.utils.isEmpty(this.get('release_description'))) { return this.addError('release_description', 'Please enter a description of some sort'); } return ""; diff --git a/static/js/app/views/event.js b/static/js/app/views/event.js index 3ac4287..3692def 100644 --- a/static/js/app/views/event.js +++ b/static/js/app/views/event.js @@ -73,7 +73,7 @@ var EventCreateView = DSSEditableView.extend({ "click #save-changes":"saveChanges", "change input":"changed", "change textarea":"changed", - "change select": "changeSelect" + "change select":"changeSelect" }, initialize:function () { this.render(); @@ -84,11 +84,13 @@ var EventCreateView = DSSEditableView.extend({ return this; }, saveChanges:function () { + var model = this.model; this.model.set('event_description', $('#event-description', this.el).html()); this.model.set('event_date', $('#event_date', this.el).val()); this._saveChanges({ success:function () { com.podnoms.utils.showAlert("Success", "Event successfully added", "alert-info", true); + app.navigate('#/event/' + model.get('id')); } }); return false; diff --git a/static/js/app/views/release.js b/static/js/app/views/release.js index a5e7631..9638aa8 100644 --- a/static/js/app/views/release.js +++ b/static/js/app/views/release.js @@ -69,14 +69,17 @@ var ReleaseView = Backbone.View.extend({ }); var ReleaseCreateView = DSSEditableView.extend({ events:{ - "click #save-changes":"saveChanges" + "click #save-changes":"saveChanges", + "change input":"changed", + "change textarea":"changed", + "change select":"changeSelect" }, initialize:function () { this.render(); }, render:function () { $(this.el).html(this.template({"item":this.model.toJSON()})); - this._bakeForm(this.el, 'release'); + this._bakeForm(this.el, 'label'); }, saveChanges:function () { var model = this.model; @@ -89,27 +92,30 @@ var ReleaseCreateView = DSSEditableView.extend({ this._saveChanges({ success:function () { - $.ajaxFileUpload({ - url:'ajax/upload_release_image/' + model.get('id') + '/', - secureuri:false, - fileElementId:'release_image', - success:function (data, status) { - if (typeof(data.error) != 'undefined') { - if (data.error != '') { - alert(data.error); - } else { - alert(data.msg); - } - } else { - com.podnoms.utils.showAlert("Success", "Release successfully added", "alert-info", true); - app.navigate('#/release/' + model.get('id')); - } - }, - error:function (data, status, e) { - alert(e); - } - }); + com.podnoms.utils.showAlert("Success", "Release successfully added", "alert-info", true); + window.app.navigate('#/release/' + model.get('id'), true); } + /* + $.ajaxFileUpload({ + url:'ajax/upload_release_image/' + model.get('id') + '/', + secureuri:false, + fileElementId:'release_image', + success:function (data, status) { + if (typeof(data.error) != 'undefined') { + if (data.error != '') { + alert(data.error); + } else { + alert(data.msg); + } + } else { + com.podnoms.utils.showAlert("Success", "Release successfully added", "alert-info", true); + app.navigate('#/release/' + model.get('id')); + } + }, + error:function (data, status, e) { + alert(e); + } + });*/ }); return false; } diff --git a/static/js/libs/backbone/backbone.mine.js b/static/js/libs/backbone/backbone.mine.js index 6efe08a..4d636b8 100644 --- a/static/js/libs/backbone/backbone.mine.js +++ b/static/js/libs/backbone/backbone.mine.js @@ -132,6 +132,7 @@ window.DSSEditableView = Backbone.View.extend({ }); }, _saveChanges:function () { + var args = arguments; if (this.model.isValid() != "") { if (this.model.errors) { for (var error in this.model.errors) { @@ -143,7 +144,7 @@ window.DSSEditableView = Backbone.View.extend({ this.model.save( null, { success:function () { - arguments.success(); + args[0].success(); }, error:function () { alert("Error saving release"); diff --git a/templates/base.html b/templates/base.html index 0c8d2e6..e7df326 100644 --- a/templates/base.html +++ b/templates/base.html @@ -79,10 +79,6 @@ - - - - {% if debug %} diff --git a/templates/inc/image_insert.html b/templates/inc/image_insert.html new file mode 100644 index 0000000..5a310e7 --- /dev/null +++ b/templates/inc/image_insert.html @@ -0,0 +1,26 @@ +
+
+ +
+
+ +
+
+
+
+ + + Select image + + + Change + + + + Remove +
+
+ +
+
\ No newline at end of file diff --git a/templates/views/EventCreateView.html b/templates/views/EventCreateView.html index 7ccec29..33c4d21 100644 --- a/templates/views/EventCreateView.html +++ b/templates/views/EventCreateView.html @@ -7,7 +7,6 @@
-
diff --git a/templates/views/ReleaseCreateView.html b/templates/views/ReleaseCreateView.html index d0a56ab..dc6d487 100644 --- a/templates/views/ReleaseCreateView.html +++ b/templates/views/ReleaseCreateView.html @@ -6,6 +6,7 @@
+
@@ -15,6 +16,7 @@
+
@@ -24,6 +26,7 @@
+
@@ -31,6 +34,7 @@
+
@@ -39,43 +43,21 @@
-
- +
+ +
-