106 lines
3.3 KiB
Python
Executable File
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
|