Untitled
unknown
plain_text
3 years ago
2.5 kB
11
Indexable
# -*- coding: utf-8 -*-
import os
from django.conf import settings
from django.urls import reverse
from django.db import models
from django.db.models.signals import pre_save
from django.dispatch import receiver
from django.utils.text import slugify
from django.utils.translation import ugettext_lazy as _
#from sorl.thumbnail import ImageField
from moviesapp.apps.movies import managers
from moviesapp.apps.categories.models import Category
from moviesapp.apps.core.utils import generate_random_string
class Movie(models.Model):
#def upload_location(instance, filename):
# try:
# MovieModel = instance.__class__
# new_id = MovieModel.objects.order_by("id").last().id + 1
# except:
# new_id=1
# return "{} {}".format(new_id, filename)
# Relations
categories = models.ManyToManyField(Category, default=[1], verbose_name=_(
"related_categories"),related_name="movie_categories" )
user = models.ForeignKey(settings.AUTH_USER_MODEL, default=1, verbose_name=_(
"related_user"),related_name="movies", on_delete=models.CASCADE,)
# Attributes - Mandatory
title = models.CharField(max_length=200, verbose_name=_(
"title"), help_text=_("Enter the Movie title"))
slug = models.SlugField(max_length=255, unique=True)
content = models.TextField()
draft = models.BooleanField(default=False)
publish = models.DateField(auto_now=False, auto_now_add=False)
created_at = models.DateTimeField(
auto_now=True, auto_now_add=False, verbose_name=("created_at"))
updated_at = models.DateTimeField(auto_now_add=True, auto_now=False, verbose_name=_(
"updated_at"), help_text=_("Enter a new date"))
# Attributes - Optional
# Object Manager
objects = managers.MovieManager()
# Custom Properties
# Methods
def get_absolute_url(self):
return reverse("movies:detail", kwargs={"slug": self.slug})
# Meta and String
class Meta:
verbose_name = _("Movie")
verbose_name_plural = _("Movies")
ordering = ( "title")
unique_together = ( "title")
def __str__(self):
return "{} - {}".format(self.title)
def human_format_time(self):
from django.utils.timesince import timesince
return timesince(self.publish)
@receiver(pre_save, sender=Movie)
def pre_save_article_receiver(sender, instance, raw, using, **kwargs):
if instance and not instance.slug:
slug = slugify(instance.title)
random_string = generate_random_string()
instance.slug = slug + "_" + random_string
pre_save.connect(pre_save_article_receiver, sender=Article)
Editor is loading...