hackspace/mhackspace/blog/models.py

53 lines
1.5 KiB
Python

from django.db import models
from django.utils import timezone
from django.urls import reverse
from draceditor.models import DraceditorField
from mhackspace.users.models import User
from stdimage.models import StdImageField
from stdimage.utils import UploadToAutoSlugClassNameDir
class Category(models.Model):
name = models.CharField(max_length=100)
slug = models.SlugField(max_length=100)
description = models.TextField()
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse('blog-category', kwargs={'category': self.slug})
class Post(models.Model):
title = models.CharField(max_length=100, unique=True)
slug = models.SlugField(max_length=100, unique=True)
categories = models.ManyToManyField(Category)
author = models.ForeignKey(User)
image = StdImageField(
upload_to=UploadToAutoSlugClassNameDir(populate_from='title'),
blank=True,
null=True,
variations={
'home': {
"width": 530,
"height": 220,
"crop": True}})
description = DraceditorField()
published_date = models.DateTimeField(default=timezone.now)
updated_date = models.DateTimeField(default=timezone.now)
active = models.BooleanField(default=True)
members_only = models.BooleanField(default=False)
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('blog-item', kwargs={'slug': self.slug})
class Meta:
ordering = ('-published_date',)