it/itf/erang/models.py
2011-09-10 07:43:14 +05:30

100 lines
2.8 KiB
Python

from django.db import models
import datetime
from django.db.models.signals import post_save
# import subprocess
import os
import codecs
class Issue(models.Model):
name = models.CharField(max_length=255)
date = models.DateField()
published = models.BooleanField(default=False)
notes = models.TextField(blank=True)
is_itf_model = False
def __unicode__(self):
return self.name
class Article(models.Model):
authors = models.ManyToManyField("Contributor", blank=True, null=True)
title = models.CharField(max_length=255)
order = models.IntegerField(blank=True, null=True)
notes = models.TextField(blank=True)
issue = models.ForeignKey(Issue)
def __unicode__(self):
return self.title + " - " + self.author
class Contributor(models.Model):
name = models.CharField(max_length=255)
email = models.EmailField(blank=True, null=True)
def __unicode__(self):
return self.name + ": " + self.email
DOC_CATEGORIES = (
('main', 'Main Article'),
('secondary', 'Secondary Article'),
('feedback', 'Feedback'),
('announce', 'Announcements & Reviews'),
('reference', 'Reference'),
('other', 'Other'),
)
class Document(models.Model):
file = models.FileField(upload_to='erang/documents/')
title = models.CharField(max_length=500)
issue = models.ForeignKey(Issue)
category = models.CharField(max_length=255, choices=DOC_CATEGORIES, blank=True)
notes = models.TextField(blank=True)
contributor = models.ForeignKey(Contributor, blank=True, null=True)
doc_txt = models.TextField(blank=True)
date_added = models.DateTimeField(default=datetime.datetime.now(), editable=False)
def txtPath(self):
path = self.file.path
return path + ".txt"
def __unicode__(self):
return self.title
class Image(models.Model):
file = models.FileField(upload_to='erang/images/')
title = models.CharField(max_length=255)
contributor = models.ForeignKey(Contributor, blank=True, null=True)
issue = models.ForeignKey(Issue)
notes = models.TextField(blank=True)
date_added = models.DateTimeField(default=datetime.datetime.now(), editable=False)
def __unicode__(self):
return self.title
'''
def docToTxt(**kwargs):
obj = kwargs['instance']
f = open("/tmp/tmpDocToTxt.txt", "w")
s = subprocess.Popen(["antiword", "-f", "-m", "UTF-8", obj.file.path], stdout = f)
f.close()
f2 = open("/tmp/tmpDocToTxt.txt")
txt = f2.read()
f2.close()
obj.doc_txt = txt
obj.save()
return
'''
def docToTxt(**kwargs):
obj = kwargs['instance']
docFilePath = obj.file.path
txtPath = obj.txtPath()
if not os.path.isfile(txtPath):
os.system("antiword -f -m 'UTF-8' '%s' > %s" % (docFilePath, txtPath,))
f = codecs.open(txtPath, encoding='utf-8')
txt = f.read()
f.close()
obj.doc_txt = txt
obj.save()
return
return
post_save.connect(docToTxt, sender=Document)