Changeset View
Changeset View
Standalone View
Standalone View
training/models/trainings.py
| from django.contrib.auth.models import User | from django.contrib.auth.models import User | ||||
| from django.db import models | from django.db import models | ||||
| from django.urls.base import reverse | from django.urls.base import reverse | ||||
| from django.utils.text import slugify | from django.utils.text import slugify | ||||
| from taggit.managers import TaggableManager | from taggit.managers import TaggableManager | ||||
| from common import mixins | from common import mixins | ||||
| from common.upload_paths import get_upload_to_hashed_path | from common.upload_paths import get_upload_to_hashed_path | ||||
| from static_assets.models import StorageLocation, DynamicStorageFileField | |||||
| class TrainingStatus(models.TextChoices): | class TrainingStatus(models.TextChoices): | ||||
| published = 'published', 'Published' | published = 'published', 'Published' | ||||
| unpublished = 'unpublished', 'Unpublished' | unpublished = 'unpublished', 'Unpublished' | ||||
| class TrainingType(models.TextChoices): | class TrainingType(models.TextChoices): | ||||
| Show All 9 Lines | |||||
| class Training(mixins.CreatedUpdatedMixin, models.Model): | class Training(mixins.CreatedUpdatedMixin, models.Model): | ||||
| class Meta: | class Meta: | ||||
| indexes = [ | indexes = [ | ||||
| models.Index(fields=['status', 'type', 'difficulty']), | models.Index(fields=['status', 'type', 'difficulty']), | ||||
| models.Index(fields=['status', 'difficulty', 'type']), | models.Index(fields=['status', 'difficulty', 'type']), | ||||
| ] | ] | ||||
| storage_location = models.OneToOneField(StorageLocation, on_delete=models.PROTECT) | |||||
| name = models.CharField(unique=True, max_length=512) | name = models.CharField(unique=True, max_length=512) | ||||
| slug = models.SlugField(unique=True, blank=True) | slug = models.SlugField(unique=True, blank=True) | ||||
| description = models.TextField() | description = models.TextField() | ||||
| description.description = 'Description consisting of a few sentences.' | description.description = 'Description consisting of a few sentences.' | ||||
| summary = models.TextField() | summary = models.TextField() | ||||
| summary.description = 'Summary consisting of multiple paragraphs.' | summary.description = 'Summary consisting of multiple paragraphs.' | ||||
| status = models.TextField(choices=TrainingStatus.choices) | status = models.TextField(choices=TrainingStatus.choices) | ||||
| ▲ Show 20 Lines • Show All 49 Lines • Show Last 20 Lines | |||||