Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from django.db import models
- from django.db.models.signals import post_delete, pre_save
- from django.dispatch import receiver
- from django.contrib.auth.models import AbstractBaseUser, BaseUserManager
- from django.conf import settings
- from django.utils.text import slugify
- # get post upload folder
- def photo_directory_path(instance, filename):
- return 'posts/{0}/{1}'.format(instance.author, filename)
- class Post(models.Model):
- author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete= models.CASCADE, related_name='posts')
- title = models.CharField(max_length=200)
- description = models.TextField()
- photo = models.ImageField(upload_to=photo_directory_path, blank=True)
- likes = models.ManyToManyField(settings.AUTH_USER_MODEL, related_name='likes', blank=True)
- picked = models.BooleanField(default=False)
- slug = models.SlugField(max_length=200, blank=True)
- updated_on = models.DateTimeField(auto_now= True)
- created_on = models.DateTimeField(auto_now_add=True)
- class Meta:
- ordering = ['-created_on']
- def __str__(self):
- return self.title
- # delete post picture
- @receiver(post_delete, sender=Post)
- def file_cleanup(sender, instance, **kwargs):
- if instance.photo:
- os.remove(instance.photo.path)
- # generate slug for posts
- @receiver(pre_save, sender=Post)
- def slug_generator(sender, instance, *args, **kwargs):
- instance.slug = f'{slugify(instance.title)}-{int(time.time())}'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement