Delete all POP3 messages after their attachments are processed, remove delete_messages field
This commit is contained in:
@@ -8,14 +8,14 @@ from smart_settings.api import Setting, SettingNamespace
|
||||
|
||||
namespace = SettingNamespace('sources', _(u'Sources'), module='sources.conf.settings')
|
||||
|
||||
POP3_DEFAULT_TIMEOUT = 5
|
||||
POP3_DEFAULT_EMAIL_PROCESSING_INTERVAL = 15 * 60
|
||||
POP3_DEFAULT_TIMEOUT = 10 # POP3 only not SSL
|
||||
POP3_DEFAULT_EMAIL_PROCESSING_INTERVAL = 15 * 60 # 15 minutes
|
||||
|
||||
Setting(
|
||||
namespace=namespace,
|
||||
name='POP3_TIMEOUT',
|
||||
global_name='SOURCES_POP3_TIMEOUT',
|
||||
default=5,
|
||||
default=POP3_DEFAULT_TIMEOUT,
|
||||
)
|
||||
|
||||
Setting(
|
||||
|
||||
@@ -0,0 +1,98 @@
|
||||
# encoding: utf-8
|
||||
import datetime
|
||||
from south.db import db
|
||||
from south.v2 import SchemaMigration
|
||||
from django.db import models
|
||||
|
||||
class Migration(SchemaMigration):
|
||||
|
||||
def forwards(self, orm):
|
||||
|
||||
# Deleting field 'POP3Email.delete_messages'
|
||||
db.delete_column('sources_pop3email', 'delete_messages')
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
|
||||
# Adding field 'POP3Email.delete_messages'
|
||||
db.add_column('sources_pop3email', 'delete_messages', self.gf('django.db.models.fields.BooleanField')(default=False), keep_default=False)
|
||||
|
||||
|
||||
models = {
|
||||
'contenttypes.contenttype': {
|
||||
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
|
||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||
},
|
||||
'sources.outofprocess': {
|
||||
'Meta': {'ordering': "('title',)", 'object_name': 'OutOfProcess'},
|
||||
'blacklist': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'title': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
|
||||
'whitelist': ('django.db.models.fields.TextField', [], {'blank': 'True'})
|
||||
},
|
||||
'sources.pop3email': {
|
||||
'Meta': {'ordering': "('title',)", 'object_name': 'POP3Email'},
|
||||
'blacklist': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'host': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
|
||||
'port': ('django.db.models.fields.PositiveIntegerField', [], {'default': '110', 'null': 'True', 'blank': 'True'}),
|
||||
'ssl': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'title': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
|
||||
'uncompress': ('django.db.models.fields.CharField', [], {'max_length': '1'}),
|
||||
'username': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
|
||||
'whitelist': ('django.db.models.fields.TextField', [], {'blank': 'True'})
|
||||
},
|
||||
'sources.sourcetransformation': {
|
||||
'Meta': {'ordering': "('order',)", 'object_name': 'SourceTransformation'},
|
||||
'arguments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
|
||||
'order': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0', 'null': 'True', 'db_index': 'True', 'blank': 'True'}),
|
||||
'transformation': ('django.db.models.fields.CharField', [], {'max_length': '128'})
|
||||
},
|
||||
'sources.stagingfolder': {
|
||||
'Meta': {'ordering': "('title',)", 'object_name': 'StagingFolder'},
|
||||
'blacklist': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'delete_after_upload': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'folder_path': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'icon': ('django.db.models.fields.CharField', [], {'max_length': '24', 'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'preview_height': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'preview_width': ('django.db.models.fields.IntegerField', [], {}),
|
||||
'title': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
|
||||
'uncompress': ('django.db.models.fields.CharField', [], {'max_length': '1'}),
|
||||
'whitelist': ('django.db.models.fields.TextField', [], {'blank': 'True'})
|
||||
},
|
||||
'sources.watchfolder': {
|
||||
'Meta': {'ordering': "('title',)", 'object_name': 'WatchFolder'},
|
||||
'blacklist': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'delete_after_upload': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'folder_path': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'interval': ('django.db.models.fields.PositiveIntegerField', [], {}),
|
||||
'title': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
|
||||
'uncompress': ('django.db.models.fields.CharField', [], {'max_length': '1'}),
|
||||
'whitelist': ('django.db.models.fields.TextField', [], {'blank': 'True'})
|
||||
},
|
||||
'sources.webform': {
|
||||
'Meta': {'ordering': "('title',)", 'object_name': 'WebForm'},
|
||||
'blacklist': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'icon': ('django.db.models.fields.CharField', [], {'max_length': '24', 'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'title': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
|
||||
'uncompress': ('django.db.models.fields.CharField', [], {'max_length': '1'}),
|
||||
'whitelist': ('django.db.models.fields.TextField', [], {'blank': 'True'})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['sources']
|
||||
@@ -188,7 +188,6 @@ class POP3Email(BaseModel):
|
||||
username = models.CharField(max_length=64, verbose_name=_(u'username'))
|
||||
password = models.CharField(max_length=64, verbose_name=_(u'password'))
|
||||
uncompress = models.CharField(max_length=1, choices=SOURCE_UNCOMPRESS_CHOICES, verbose_name=_(u'uncompress'), help_text=_(u'Whether to expand or not compressed archives.'))
|
||||
delete_messages = models.BooleanField(default=True, verbose_name=_(u'delete messages'), help_text=_(u'Delete messages after downloading their respective attached documents.'))
|
||||
|
||||
# From: http://bookmarks.honewatson.com/2009/08/11/python-gmail-imaplib-search-subject-get-attachments/
|
||||
@staticmethod
|
||||
@@ -197,7 +196,7 @@ class POP3Email(BaseModel):
|
||||
counter = 1
|
||||
|
||||
for part in email.walk():
|
||||
disposition = part.get('Content-Disposition', 'attachment')
|
||||
disposition = part.get('Content-Disposition', 'none')
|
||||
logger.debug('Disposition: %s' % disposition)
|
||||
|
||||
if disposition.startswith('attachment'):
|
||||
@@ -245,8 +244,7 @@ class POP3Email(BaseModel):
|
||||
complete_message = '\n'.join(mailbox.retr(message_number)[1])
|
||||
|
||||
POP3Email.process_message(source=self, message=complete_message, expand=self.uncompress)
|
||||
if self.delete_messages:
|
||||
mailbox.dele(message_number)
|
||||
mailbox.dele(message_number)
|
||||
|
||||
mailbox.quit()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user