Fixed headers signal

This commit is contained in:
Fergal Moran
2016-01-29 20:13:42 +00:00
parent 12c697a8a5
commit 943507e04a
3 changed files with 17 additions and 18 deletions

View File

@@ -103,17 +103,14 @@ class Mix(BaseModel):
self.slug = unique_slugify(self, self.title) self.slug = unique_slugify(self, self.title)
self.clean_image('mix_image', Mix) self.clean_image('mix_image', Mix)
# Check for the unlikely event that the waveform has been generated
if cdn.file_exists('{0}{1}.png'.format(settings.WAVEFORM_URL, self.uid)):
self.waveform_generated = True
try:
self.duration = mp3_length(self.get_absolute_path())
except Mp3FileNotFoundException:
# Not really bothered about this in save as it can be called before we have an mp3
pass
super(Mix, self).save(force_insert, force_update, using, update_fields) super(Mix, self).save(force_insert, force_update, using, update_fields)
def set_cdn_details(self, path):
self.waveform_generated = True
self.duration = mp3_length(path)
self.save(update_fields=["waveform_generated", "duration"])
self.update_file_http_headers(self.uid, self.title)
def create_mp3_tags(self, prefix=""): def create_mp3_tags(self, prefix=""):
try: try:
tag_mp3( tag_mp3(

View File

@@ -1,16 +1,13 @@
from django.contrib.auth.models import User
from django.contrib.sessions.models import Session from django.contrib.sessions.models import Session
from django.core.exceptions import ObjectDoesNotExist from django.core.exceptions import ObjectDoesNotExist
from django.db.models.signals import post_save, pre_save, m2m_changed from django.db.models.signals import post_save, pre_save, m2m_changed
from django.dispatch import Signal, receiver from django.dispatch import Signal, receiver
from django.contrib.auth.models import User
from core.realtime import activity
from core.utils.audio.mp3 import mp3_length
from spa.models import SocialAccountLink from spa.models import SocialAccountLink
from spa.models.activity import ActivityFollow from spa.models.activity import ActivityFollow
from spa.models.userprofile import UserProfile
from spa.models.mix import Mix from spa.models.mix import Mix
from spa.models.userprofile import UserProfile
waveform_generated_signal = Signal() waveform_generated_signal = Signal()
@@ -23,10 +20,7 @@ def _waveform_generated_callback(sender, **kwargs):
if uid is not None: if uid is not None:
mix = Mix.objects.get(uid=uid) mix = Mix.objects.get(uid=uid)
if mix is not None: if mix is not None:
mix.waveform_generated = True mix.set_cdn_details(path)
mix.duration = mp3_length(path)
mix.save(update_fields=["waveform_generated", "duration"])
except ObjectDoesNotExist: except ObjectDoesNotExist:
print("Mix has still not been uploaded") print("Mix has still not been uploaded")
pass pass

View File

@@ -36,6 +36,14 @@ def create_waveform_task(in_file, uid):
logger.error("Outfile is missing") logger.error("Outfile is missing")
@task(time_limit=3600)
def update_file_http_headers(uid, title):
cdn.set_azure_details(
blob_name='{0}.mp3'.format(uid),
download_name='Deep South Sounds - {0}.mp3'.format(title),
container_name='mixes')
@task(time_limit=3600) @task(time_limit=3600)
def upload_to_cdn_task(filetype, uid, container_name): def upload_to_cdn_task(filetype, uid, container_name):
source_file = os.path.join(settings.CACHE_ROOT, '{0}/{1}.{2}'.format(container_name, uid, filetype)) source_file = os.path.join(settings.CACHE_ROOT, '{0}/{1}.{2}'.format(container_name, uid, filetype))