def create_schedule_abc(user_model=None):
"""Abstract base schedule model factory.
:param user_model: User model to use as schedule owners.
:type user_model: :class:`~news.models.AbstractModel`
implemenatation
:returns: A abstract base schedule model.
:rtype: Abstract base django model of
:class:`~news.models.AbstractSchedule` implementation.
"""
user_model = user_model or settings.AUTH_USER_MODEL
class AbstractBaseSchedule(models.Model, AbstractSchedule):
owner = models.ForeignKey(
user_model, related_name='schedules',
db_index=True, blank=True, null=True,
)
url = models.URLField()
cycle = models.IntegerField(default=DEFAULT_SCHEDULE_CYCLE)
enabled = models.BooleanField(default=False)
type = models.CharField(max_length=SCHEDULE_TYPE_MAX_LENGTH,
default=DEFAULT_SCHEDULE_TYPE)
options = JSONField(default=DEFAULT_OPTIONS)
class Meta:
abstract = True
unique_together = (('owner', 'url'),)
return AbstractBaseSchedule