Advertisement
SalahAdDinYusuf

Modelo para Noticia

Jul 27th, 2014
216
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. from django.db import models
  2. from django.template.defaultfilters import slugify
  3. from django.core.urlresolvers import reverse
  4.  
  5. from authors.models import Author
  6. from subtopic.models import Subtopic
  7. from topic.models import Topic
  8. from keyWords.models import KeyWord
  9.  
  10. #Global Vars
  11.  
  12.  
  13. # Create your models here.
  14.  
  15. class New(models.Model):
  16.     title = models.CharField(verbose_name='Título', max_length=255, unique=True)
  17.     topic = models.ForeignKey(Topic, verbose_name='Tema', related_name='news', )
  18.     subtopic = models.ForeignKey(Subtopic, verbose_name='Subtema', related_name='news') #Filtramos por Opinion para sacar todas las columnas
  19.     author = models.ForeignKey(Author, verbose_name='Autor', related_name='news')
  20.     keyword = models.ManyToManyField(KeyWord, blank=True, verbose_name='Palabras Clave', related_name='news')
  21.     dateTime = models.DateTimeField(auto_now_add=True, verbose_name='Fecha y Hora')
  22.     place = models.CharField(max_length=255, verbose_name='Lugar')
  23.     content = models.TextField(verbose_name='Contenido')
  24.     source = models.URLField(verbose_name='Fuente', blank=True)
  25.     slug =  models.SlugField(verbose_name='Slug', max_length=100, unique=True)
  26.     is_published = models.BooleanField(verbose_name='Publicada', default=False,) #Nueva, para verificar si se publica o no
  27.     times_viewed = models.PositiveIntegerField(default=0, editable=False, verbose_name='Veces Vista' )
  28.  
  29.     class Meta:
  30.         ordering=['-dateTime']
  31.         verbose_name_plural='Noticias'
  32.  
  33.     #@models.permalink
  34.     #def get_absolute_url(self):
  35.     #    return ('news.views.New_view', None, {'year': self.dateTime.year,
  36.     #    'month': self.dateTime.strftime('%m'),
  37.     #    'day': self.dateTime.strftime('%d'),
  38.     #    'slug': self.slug})
  39.  
  40.     def first_image(self):
  41.         return self.images.first() # siendo images el related_name en Image
  42.  
  43.     def first_video(self):
  44.         return self.video.first()
  45.  
  46.     def get_absolute_url(self):
  47.         return reverse ('NewsDefaultView', args = [str(self.dateTime.strftime("%Y")), str(self.dateTime.strftime("%b")), str(self.dateTime.strftime("%d")), str(self.slug)])
  48.  
  49.     def get_all_keys(self):
  50.         return '%s, ' % self.keyword
  51.  
  52.     #def is_published(self): devuelve si la noticia ha sido pulicada para que salga en la lista de noticias
  53.  
  54.     def __str__(self):
  55.         return self.title
  56.  
  57.     def save(self):  #Definir metodo para guardar, validar y otros metodos del Slug
  58.         super(New, self).save() #Solo con este me funciona correctamente
  59.         if not self.id:
  60.             self.slug = slugify(self.title)
  61.         super(New, self).save()
  62.  
  63. from django.core.cache import cache
  64. from django.db.models.signals import post_save
  65. from django.dispatch import receiver
  66.  
  67. from django.contrib.sessions.models import Session
  68. @receiver(post_save)
  69. def clear_cache(sender, **kwargs):
  70.     if sender != Session:
  71.         cache.clear()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement