]> git.0d.be Git - django-panik-nonstop.git/commitdiff
models: merge recurring occurences parts into a mixin
authorFrédéric Péters <fpeters@0d.be>
Thu, 16 Jul 2020 09:58:15 +0000 (11:58 +0200)
committerFrédéric Péters <fpeters@0d.be>
Thu, 16 Jul 2020 09:58:15 +0000 (11:58 +0200)
nonstop/models.py

index ec007d0d118d1acb33834b3838f4de8d016eeea2..2310a81c7b9d14b337fcdcf920e581c31447c882 100644 (file)
@@ -296,9 +296,7 @@ class RecurringStreamDiffusion(models.Model):
         return _('Recurring Stream for %s') % self.schedule
 
 
-class RecurringStreamOccurence(models.Model):
-    diffusion = models.ForeignKey(RecurringStreamDiffusion, on_delete=models.CASCADE)
-    datetime = models.DateTimeField(_('Date/time'), db_index=True)
+class RecurringOccurenceMixin:
 
     @property
     def jingle(self):
@@ -316,6 +314,14 @@ class RecurringStreamOccurence(models.Model):
     def end_datetime(self):
         return self.datetime + datetime.timedelta(minutes=self.diffusion.schedule.get_duration())
 
+    def get_jingle_filepath(self):
+        return self.diffusion.jingle.get_local_filepath() if self.diffusion.jingle_id else None
+
+
+class RecurringStreamOccurence(models.Model, RecurringOccurenceMixin):
+    diffusion = models.ForeignKey(RecurringStreamDiffusion, on_delete=models.CASCADE)
+    datetime = models.DateTimeField(_('Date/time'), db_index=True)
+
     @property
     def stream(self):
         return self.diffusion.stream
@@ -323,9 +329,6 @@ class RecurringStreamOccurence(models.Model):
     def is_stream(self):
         return True
 
-    def get_jingle_filepath(self):
-        return self.diffusion.jingle.get_local_filepath() if self.diffusion.jingle_id else None
-
 
 class RecurringRandomDirectoryDiffusion(models.Model):
     # between soundfiles and nonstop zones, this is used for the "mix
@@ -339,32 +342,13 @@ class RecurringRandomDirectoryDiffusion(models.Model):
         return _('Recurring Random Directory for %s') % self.schedule
 
 
-class RecurringRandomDirectoryOccurence(models.Model):
+class RecurringRandomDirectoryOccurence(models.Model, RecurringOccurenceMixin):
     diffusion = models.ForeignKey(RecurringRandomDirectoryDiffusion, on_delete=models.CASCADE)
     datetime = models.DateTimeField(_('Date/time'), db_index=True)
 
-    @property
-    def jingle(self):
-        return self.diffusion.jingle
-
-    @property
-    def jingle_id(self):
-        return self.diffusion.jingle_id
-
-    @property
-    def duration(self):
-        return self.diffusion.schedule.get_duration() * 60
-
-    @property
-    def end_datetime(self):
-        return self.datetime + datetime.timedelta(minutes=self.diffusion.schedule.get_duration())
-
     def is_stream(self):
         return False
 
-    def get_jingle_filepath(self):
-        return self.diffusion.jingle.get_local_filepath() if self.diffusion.jingle_id else None
-
     def file_path(self):
         directory = self.diffusion.directory
         return os.path.join(directory, random.choice(os.listdir(directory)))