Exemple #1
0
class Content(models.Model):
    module = models.ForeignKey(Module, related_name='contents')
    content_type = models.ForeignKey(ContentType, limit_choices_to={'model__in':('text', 'video', 'image', 'file')})
    object_id = models.PositiveIntegerField()
    item = GenericForeignKey('content_type', 'object_id')
    order = OrderField(blank=True, for_fields=['module'])

    class Meta:
        ordering = ['order']
Exemple #2
0
class Module(models.Model):
    course = models.ForeignKey(Course, related_name='modules')
    title = models.CharField(max_length=200)
    description = models.TextField(blank=True)
    order = OrderField(blank=True, for_fields=['course'])

    class Meta:
        ordering = ['order']

    def __str__(self):
        return '{}. {}'.format(self.order, self.title)
Exemple #3
0
class Module(models.Model):
    course = models.ForeignKey(Course, related_name='modules', on_delete=models.CASCADE)
    title = models.CharField(max_length=200)
    description = models.TextField(blank=True)
    order = OrderField(blank=True, for_fields=['course'])

    def __str__(self):
        return f'{self.order}. {self.title}'

    class Meta:
        ordering = ['order']
Exemple #4
0
class Content(models.Model):
    # Generic relation to associate any kind of content.
    module = models.ForeignKey(Module,
                               related_name='contents',
                               on_delete=models.CASCADE)
    content_type = models.ForeignKey(
        ContentType,
        on_delete=models.CASCADE,
        limit_choices_to={'model__in': ('text', 'file', 'image', 'video')})
    object_id = models.PositiveIntegerField()
    item = GenericForeignKey('content_type', 'object_id')
    order = OrderField(blank=True, for_fields=['module'])

    class Meta:
        ordering = ['order']
Exemple #5
0
class Module(models.Model):
    # A course can have several modules
    course = models.ForeignKey(Course,
                               related_name='modules',
                               on_delete=models.CASCADE)
    # Custom order field
    order = OrderField(blank=True, for_fields=['course'])
    title = models.CharField(max_length=200)
    description = models.TextField(blank=True)

    class Meta:
        ordering = ['order']

    def __str__(self):
        return '{}. {}'.format(self.order, self.title)
Exemple #6
0
class Module(models.Model):
    """章节"""
    course = models.ForeignKey(Course,
                               related_name="modules",
                               on_delete=models.CASCADE)
    #  章节的标题
    title = models.CharField(max_length=200)
    description = models.TextField(blank=True)
    order = OrderField(for_fields=["course"], blank=True)

    def __str__(self):
        return "{}.{}".format(self.order, self.title)

    class Meta:
        db_table = "module"
        ordering = ("order", )
Exemple #7
0
class Module(models.Model):
    course = models.ForeignKey(Course,
                               related_name='modules',
                               on_delete=models.CASCADE)
    title = models.CharField(max_length=100)
    desc = models.TextField(blank=True)
    order = OrderField(null=True, for_fields=['course_id'])

    def __str__(self):
        return '%s.%s' % (
            self.order,
            self.title,
        )

    class Meta:
        ordering = ['order']
Exemple #8
0
class Content(models.Model):
    module = models.ForeignKey(Module,
                               related_name='contents',
                               on_delete=models.CASCADE)
    # limit_choices_to  限定contenttype对象是这四个模型
    content_type = models.ForeignKey(
        ContentType,
        on_delete=models.CASCADE,
        limit_choices_to={'model__in': ('text', 'file', 'image', 'video')})
    object_id = models.PositiveIntegerField()
    # 通用的关联关系字段,通过合并content_type和object_id进行关联的
    item = GenericForeignKey('content_type', 'object_id')
    order = OrderField(for_fields=['module'], blank=True)

    class Meta:
        db_table = 'content'
        ordering = ('order', )
Exemple #9
0
class Module(models.Model):
    # 章节
    course = models.ForeignKey(Course,
                               related_name='modules',
                               on_delete=models.CASCADE)
    # 章节的标题
    title = models.CharField(max_length=200, verbose_name='标题')
    # 章节的详细介绍
    description = models.TextField(blank=True)
    order = OrderField(for_fields=['course'], blank=True)

    def __str__(self):
        return '{}.{}'.format(self.order, self.title)

    class Meta:
        db_table = 'module'
        ordering = ('order', )
Exemple #10
0
class Content(models.Model):
    """内容"""
    module = models.ForeignKey(Module,
                               related_name="contents",
                               on_delete=models.CASCADE)
    # limit_choices_to 限定contenttype 对象是这四个模型中
    content_type = models.ForeignKey(
        ContentType,
        on_delete=models.CASCADE,
        limit_choices_to={"model__in": ("text", "file", "image", "video")})
    object_id = models.PositiveIntegerField()
    # 通用的关联关系字段,通过合并content_type 和object_id 字段进行关联的
    item = GenericForeignKey("content_type", "object_id")
    order = OrderField(for_fields=["module"], blank=True)

    class Meta:
        db_table = "content"
        ordering = ("order", )
class SchoolContent(models.Model):
    module = models.ForeignKey(SchoolModule,
                               related_name='contents',
                               on_delete=models.CASCADE)
    # Creates a link to every model
    content_type = models.ForeignKey(
        ContentType,
        on_delete=models.CASCADE,
        limit_choices_to={'model__in': ('stext', 'svideo', 'simage', 'sfile')})
    # index value
    object_id = models.PositiveIntegerField()
    item = GenericForeignKey('content_type', 'object_id')
    order = OrderField(blank=True, for_fields=['module'])

    class Meta:
        ordering = ['order']
        verbose_name = 'Content'
        verbose_name_plural = 'Contents'
class OpenContent(models.Model):
    module = models.ForeignKey(OpenModule,
                               related_name='contents',
                               on_delete=models.CASCADE)
    # Creates a link to every model
    content_type = models.ForeignKey(
        ContentType,
        on_delete=models.CASCADE,
        limit_choices_to={'model__in': ('atext', 'avideo', 'aimage', 'afile')})
    # index value
    object_id = models.PositiveIntegerField()
    item = GenericForeignKey('content_type', 'object_id')
    order = OrderField(blank=True, for_fields=['module'])
    history = HistoricalRecords()

    def __str__(self):
        return self.item.title

    class Meta:
        ordering = ['order']
        verbose_name = 'Content'
        verbose_name_plural = 'Contents'
class SchoolModule(Module):
    course = models.ForeignKey(SchoolCourse,
                               related_name='modules',
                               on_delete=models.CASCADE)
    order = OrderField(blank=True, for_fields=['schoolcourse'])

    class Meta:
        verbose_name = 'Module'
        verbose_name_plural = 'Modules'

    def _get_unique_slug(self):
        slug = slugify(self.title)
        unique_slug = slug
        num = 1
        while SchoolModule.objects.filter(slug=unique_slug).exists():
            unique_slug = '{}-{}'.format(slug, num)
            num += 1
        return unique_slug

    def save(self, *args, **kwargs):
        if not self.slug:
            self.slug = self._get_unique_slug()
        super().save(*args, **kwargs)