diff --git a/core/tasks.py b/core/tasks.py index 594b9de..0377a41 100755 --- a/core/tasks.py +++ b/core/tasks.py @@ -1,6 +1,8 @@ import shutil from celery.task import task import os +from django.core.exceptions import ObjectDoesNotExist + try: from django.contrib.gis.geoip import GeoIP except ImportError: @@ -8,9 +10,10 @@ except ImportError: from core.utils.waveform import generate_waveform from dss import settings -from spa.signals import waveform_generated +from spa.signals import waveform_generated_signal, update_user_geoip_signal from spa.models.userprofile import UserProfile + @task(time_limit=3600) def create_waveform_task(in_file, uid): out_file = os.path.join(settings.MEDIA_ROOT, 'waveforms/%s.png' % uid) @@ -24,10 +27,11 @@ def create_waveform_task(in_file, uid): shutil.move(in_file, new_file) print "Uid: %s" % uid - waveform_generated.send(sender=None, uid=uid) + waveform_generated_signal.send(sender=None, uid=uid) else: print "Outfile is missing" + @task def update_geo_info_task(ip_address, profile_id): try: @@ -36,13 +40,8 @@ def update_geo_info_task(ip_address, profile_id): g = GeoIP() city = g.city(ip) country = g.country(ip) - try: - user = UserProfile.objects.get(pk=profile_id) - user.city = city['city'] - user.country = country['country_name'] - user.save() - except ObjectDoesNotExist: - pass + update_user_geoip_signal.send(sender=None, profile_id=profile_id, city=city['city'], + country=country['country']) print "Updated user location" except Exception, e: print e.message diff --git a/spa/signals.py b/spa/signals.py index 45a53cd..c0a004d 100755 --- a/spa/signals.py +++ b/spa/signals.py @@ -9,10 +9,8 @@ from core.utils.audio.mp3 import mp3_length from spa.models.userprofile import UserProfile from spa.models.mix import Mix -waveform_generated = Signal() - - -def waveform_generated_callback(sender, **kwargs): +waveform_generated_signal = Signal() +def _waveform_generated_callback(sender, **kwargs): print "Updating model with waveform" try: uid = kwargs['uid'] @@ -25,10 +23,18 @@ def waveform_generated_callback(sender, **kwargs): except ObjectDoesNotExist: print "Mix has still not been uploaded" pass +waveform_generated_signal.connect(_waveform_generated_callback) - -waveform_generated.connect(waveform_generated_callback) - +update_user_geoip_signal = Signal() +def _update_user_geoip_callback(sender, **kwargs): + try: + user = UserProfile.objects.get(pk=kwargs['profile_id']) + user.city = kwargs['city'] + user.country = kwargs['country'] + user.save() + except ObjectDoesNotExist: + pass +update_user_geoip_signal.connect(_update_user_geoip_callback) def create_profile(sender, **kw): user = kw["instance"] @@ -76,4 +82,5 @@ def session_pre_save(sender, **kwargs): p.last_known_session = s.session_key p.save() except ObjectDoesNotExist: - pass \ No newline at end of file + pass +