| 168 | return f"EPG Data for {self.name}" |
| 169 | |
| 170 | class ProgramData(models.Model): |
| 171 | epg = models.ForeignKey(EPGData, on_delete=models.CASCADE, related_name="programs") |
| 172 | start_time = models.DateTimeField() |
| 173 | end_time = models.DateTimeField() |
| 174 | title = models.CharField(max_length=255) |
| 175 | sub_title = models.TextField(blank=True, null=True) |
| 176 | description = models.TextField(blank=True, null=True) |
| 177 | tvg_id = models.CharField(max_length=255, null=True, blank=True) |
| 178 | program_id = models.CharField(max_length=64, null=True, blank=True, help_text='Schedules Direct programID (e.g. EP123456789). Null for XMLTV sources.') |
| 179 | custom_properties = models.JSONField(default=dict, blank=True, null=True) |
| 180 | |
| 181 | class Meta: |
| 182 | indexes = [ |
| 183 | models.Index(fields=['epg', 'id'], name='epg_prog_epg_id_idx'), |
| 184 | ] |
| 185 | |
| 186 | def __str__(self): |
| 187 | return f"{self.title} ({self.start_time} - {self.end_time})" |
| 188 | |
| 189 | class SDScheduleMD5(models.Model): |
| 190 | """ |
no outgoing calls
no test coverage detected