forked from rc/aircox
		
	fix issues with categories and so on
This commit is contained in:
		@ -21,7 +21,7 @@ from aircox.models import Station, Diffusion, Track, Sound, Log #, DiffusionLog,
 | 
			
		||||
 | 
			
		||||
# force using UTC
 | 
			
		||||
import pytz
 | 
			
		||||
timezone.activate(pytz.UTC)
 | 
			
		||||
tz.activate(pytz.UTC)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Tracer:
 | 
			
		||||
@ -140,26 +140,32 @@ class Monitor:
 | 
			
		||||
        log = self.get_last_log(models.Q(diffusion__isnull = False) |
 | 
			
		||||
                                models.Q(sound__isnull = False))
 | 
			
		||||
 | 
			
		||||
        # check if sound on air changed
 | 
			
		||||
        try:
 | 
			
		||||
            on_air = current_source.metadata and \
 | 
			
		||||
                        current_source.metadata.get('on_air')
 | 
			
		||||
            on_air = tz.datetime.strptime(on_air, "%Y/%m/%d %H:%M:%S")
 | 
			
		||||
            on_air = tz.make_aware(on_air)
 | 
			
		||||
        if log:
 | 
			
		||||
            # check if sound on air changed compared to logged one
 | 
			
		||||
            try:
 | 
			
		||||
                # FIXME: TO-check liquidsoap ensure we have utc time
 | 
			
		||||
                on_air = current_source.metadata and \
 | 
			
		||||
                            current_source.metadata.get('on_air')
 | 
			
		||||
                on_air = tz.datetime.strptime(on_air, "%Y/%m/%d %H:%M:%S")
 | 
			
		||||
                on_air = tz.make_aware(on_air)
 | 
			
		||||
 | 
			
		||||
            is_diff = log.date != on_air
 | 
			
		||||
        except:
 | 
			
		||||
            on_air = None
 | 
			
		||||
            is_diff = log.source != current_source.id or \
 | 
			
		||||
                        (log.sound and log.sound.path != current_sound)
 | 
			
		||||
                is_diff = log.date != on_air
 | 
			
		||||
            except:
 | 
			
		||||
                on_air = None
 | 
			
		||||
                is_diff = log.source != current_source.id or \
 | 
			
		||||
                            (log.sound and log.sound.path != current_sound)
 | 
			
		||||
        else:
 | 
			
		||||
            # no log: sound is different
 | 
			
		||||
            is_diff = True
 | 
			
		||||
 | 
			
		||||
        if is_diff:
 | 
			
		||||
            sound = Sound.objects.filter(path = current_sound).first()
 | 
			
		||||
 | 
			
		||||
            # find an eventual diff
 | 
			
		||||
            # find an eventual diffusion associated to current sound
 | 
			
		||||
            # => check using last (started) diffusion's archives
 | 
			
		||||
            last_diff = self.last_diff_start
 | 
			
		||||
            diff = None
 | 
			
		||||
            if not last_diff.is_expired():
 | 
			
		||||
            if last_diff and not last_diff.is_expired():
 | 
			
		||||
                archives = last_diff.diffusion.get_archives()
 | 
			
		||||
                if archives.filter(pk = sound.pk).exists():
 | 
			
		||||
                    diff = last_diff.diffusion
 | 
			
		||||
@ -344,8 +350,8 @@ class Monitor:
 | 
			
		||||
        # enable dealer
 | 
			
		||||
        if not source.active:
 | 
			
		||||
            source.active = True
 | 
			
		||||
            last_start = self.last_start
 | 
			
		||||
            if last_start.diffusion_id != diff.pk:
 | 
			
		||||
            last_start = self.last_diff_start
 | 
			
		||||
            if not last_start or last_start.diffusion_id != diff.pk:
 | 
			
		||||
                # log triggered diffusion
 | 
			
		||||
                self.log(type = Log.Type.start, source = source.id,
 | 
			
		||||
                         diffusion = diff, date = date)
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user