it/itf/emailer/models.py
2012-03-18 11:42:41 +05:30

106 lines
3.3 KiB
Python
Executable File

from django.db import models
from app.models import ItfModel
from sorl.thumbnail import get_thumbnail
class EmailerIssue(ItfModel):
title = models.CharField(max_length=512)
date = models.DateField()
issue_no = models.IntegerField()
published = models.BooleanField(default=False)
fts_fields = ['title', 'emailerarticle__text']
def __unicode__(self):
return self.title
class Meta:
ordering = ['-issue_no']
def info_dict(self):
return {
'issue': self,
'weblinks': Weblink.objects.filter(issue=self),
'articles': EmailerArticle.objects.filter(issue=self),
'bbitems': BulletinBoardItem.objects.filter(issue=self)
}
def list_dict(self):
return {
'id': self.id,
'title': self.title
}
def main_image(self):
for article in self.emailerarticle_set.all():
if article.main_image:
return article.main_image
return None
@classmethod
def get_qset(kls):
return kls.objects.filter(published=True)
class EmailerArticle(models.Model):
issue = models.ForeignKey(EmailerIssue)
title = models.CharField(max_length=512)
subtitle = models.TextField(blank=True)
author = models.CharField(max_length=512, blank=True)
author_bio = models.TextField(blank=True)
main_image = models.ImageField(upload_to='upload/images/emailer/', blank=True)
text = models.TextField()
position = models.IntegerField(null=True)
def __unicode__(self):
return self.title
def get_images(self):
return self.articleimage_set.all()
def getImageHTML(self, short_name, typ):
img = ArticleImage.objects.filter(article=self).filter(short_name=short_name)
if len(img) > 0:
return img[0].getHTML(typ)
else:
return ''
class ArticleImage(models.Model):
image = models.ImageField(upload_to='upload/images/emailer/')
caption = models.CharField(max_length=512, blank=True)
article = models.ForeignKey(EmailerArticle)
short_name = models.CharField(max_length=64, blank=True, help_text='Short name to insert images into article')
def __unicode__(self):
return self.caption
def getThumbPath(self, size):
return get_thumbnail(self.image, size).url
def getHTML(self, typ):
thumb = self.getThumbPath("450x380")
caption = self.caption
return "<p style='text-align:center;margin-top:6px;margin-bottom:6px;'><img title='%s' src='%s' style='border:1px solid #f7c00c' /><br />%s</p>" % (caption, thumb, caption)
# return "<img title='%s' src='%s' style='display:block;margin:0 auto;border:1px solid #f7c00c;' />" % (caption, thumb,)
class Weblink(models.Model):
url = models.URLField()
title = models.CharField(max_length=512)
box_title = models.CharField(max_length=512, blank=True)
text = models.TextField(blank=True)
issue = models.ForeignKey(EmailerIssue)
def __unicode__(self):
return self.url
class BulletinBoardItem(models.Model):
issue = models.ForeignKey(EmailerIssue)
title = models.CharField(max_length=512)
box_title = models.CharField(max_length=512, blank=True)
text = models.TextField()
position = models.IntegerField(default=1)
def __unicode__(self):
return self.title