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 @@
+