|
|
|
@ -2,7 +2,7 @@ import arrow |
|
|
|
from django.db import models |
|
|
|
from django.db import models |
|
|
|
from django.utils import timezone |
|
|
|
from django.utils import timezone |
|
|
|
from django.contrib.auth import get_user_model |
|
|
|
from django.contrib.auth import get_user_model |
|
|
|
|
|
|
|
from django.urls import reverse_lazy |
|
|
|
from polymorphic_tree.models import PolymorphicMPTTModel, PolymorphicTreeForeignKey |
|
|
|
from polymorphic_tree.models import PolymorphicMPTTModel, PolymorphicTreeForeignKey |
|
|
|
|
|
|
|
|
|
|
|
from .manager import CategoryQuerySet |
|
|
|
from .manager import CategoryQuerySet |
|
|
|
@ -49,7 +49,6 @@ class Course(models.Model): |
|
|
|
category = models.ForeignKey('Category', on_delete=models.PROTECT) |
|
|
|
category = models.ForeignKey('Category', on_delete=models.PROTECT) |
|
|
|
duration = models.IntegerField('Продолжительность курса', default=0) |
|
|
|
duration = models.IntegerField('Продолжительность курса', default=0) |
|
|
|
is_featured = models.BooleanField(default=False) |
|
|
|
is_featured = models.BooleanField(default=False) |
|
|
|
url = models.URLField('Ссылка', default='') |
|
|
|
|
|
|
|
status = models.PositiveSmallIntegerField('Статус', default=0, choices=STATUS_CHOICES) |
|
|
|
status = models.PositiveSmallIntegerField('Статус', default=0, choices=STATUS_CHOICES) |
|
|
|
likes = models.ManyToManyField(Like, blank=True) |
|
|
|
likes = models.ManyToManyField(Like, blank=True) |
|
|
|
materials = models.ManyToManyField('Material', blank=True) |
|
|
|
materials = models.ManyToManyField('Material', blank=True) |
|
|
|
@ -61,6 +60,13 @@ class Course(models.Model): |
|
|
|
created_at = models.DateTimeField(auto_now_add=True) |
|
|
|
created_at = models.DateTimeField(auto_now_add=True) |
|
|
|
update_at = models.DateTimeField(auto_now=True) |
|
|
|
update_at = models.DateTimeField(auto_now=True) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@property |
|
|
|
|
|
|
|
def url(self): |
|
|
|
|
|
|
|
return self.get_absolute_url() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_absolute_url(self): |
|
|
|
|
|
|
|
return reverse_lazy('course', args=[self.id]) |
|
|
|
|
|
|
|
|
|
|
|
@property |
|
|
|
@property |
|
|
|
def is_free(self): |
|
|
|
def is_free(self): |
|
|
|
if self.price: |
|
|
|
if self.price: |
|
|
|
|