from django.contrib.sites.models import Site
from django.conf import settings
from patchwork.parser import hash_patch
-import django.oldforms as oldforms
import re
import datetime, time
import random
try:
- from email.mime.text import MIMEText
+ from email.mime.nonmultipart import MIMENonMultipart
+ from email.encoders import encode_7or8bit
import email.utils
except ImportError:
# Python 2.4 compatibility
- from email.MIMEText import MIMEText
+ from email.MIMENonMultipart import MIMENonMultipart
+ from email.Encoders import encode_7or8bit
import email.Utils
email.utils = email.Utils
def db_type(self):
return 'char(%d)' % self.n_bytes
+class PatchMbox(MIMENonMultipart):
+ patch_charset = 'utf-8'
+ def __init__(self, _text):
+ MIMENonMultipart.__init__(self, 'text', 'plain',
+ **{'charset': self.patch_charset})
+ self.set_payload(_text.encode(self.patch_charset))
+ encode_7or8bit(self)
+
class Patch(models.Model):
project = models.ForeignKey(Project)
- msgid = models.CharField(max_length=255, unique = True)
+ msgid = models.CharField(max_length=255)
name = models.CharField(max_length=255)
date = models.DateTimeField(default=datetime.datetime.now)
submitter = models.ForeignKey(Person)
body += self.content
- mail = MIMEText(body, _charset = 'utf-8')
+ mail = PatchMbox(body)
mail['Subject'] = self.name
mail['Date'] = email.utils.formatdate(
time.mktime(self.date.utctimetuple()))
- mail['From'] = str(self.submitter)
+ mail['From'] = unicode(self.submitter)
mail['X-Patchwork-Id'] = str(self.id)
mail.set_unixfrom('From patchwork ' + self.date.ctime())
class Meta:
verbose_name_plural = 'Patches'
ordering = ['date']
+ unique_together = [('msgid', 'project')]
class Comment(models.Model):
patch = models.ForeignKey(Patch)
- msgid = models.CharField(max_length=255, unique = True)
+ msgid = models.CharField(max_length=255)
submitter = models.ForeignKey(Person)
date = models.DateTimeField(default = datetime.datetime.now)
headers = models.TextField(blank = True)
class Meta:
ordering = ['date']
+ unique_together = [('msgid', 'patch')]
class Bundle(models.Model):
owner = models.ForeignKey(User)