- Timestamp:
- 05/02/09 13:38:19 (3 years ago)
- Children:
- 4bceacf6b979775083c8623c2906a66e95eefe48
- Parents:
- 935fbfb3a362aa24429eff491679842cfb8feb81
- git-committer:
- Gartersnake Server <gartersnake@gartersnake.precisionconversions.com> / 2009-05-02T13:38:19Z-0700
- File:
-
- 1 edited
-
resourcetotrac/resourcetotrac/script.py (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
resourcetotrac/resourcetotrac/script.py
r935fbfb ref235ae 19 19 import daemonize 20 20 from trac.env import Environment 21 from trac.core import Component 21 from trac.core import Component, ExtensionPoint 22 22 from trac.config import OrderedExtensionsOption 23 23 24 24 # Local imports 25 from emailtoticket.api import IEmailStore 26 from emailtoticket.util import EmailParser 25 from resourcetotrac.api import IDataSource, IResourceSubmitter 27 26 28 27 … … 30 29 31 30 32 __all__ = [' EmailToTicketConfig']31 __all__ = ['ResourceSubmission'] 33 32 34 33 35 class EmailTicketSubmission(Component):34 class ResourceSubmission(Component): 36 35 37 36 implemnts(IResourceSubmitter) 38 37 39 email_stores = OrderedExtensionsOption('email2ticket', 'stores',40 I EmailStore, include_missing=False,41 doc="List of enabled email stores")38 data_sources = OrderedExtensionsOption('resource2trac', 'sources', 39 IDataSource, include_missing=False, 40 doc="List of enabled data sources") 42 41 43 archive = BoolOption('email2ticket', 'archive', True, 44 doc="Whether or not to archive the processed emails") 42 resource_submitters = ExtensionPoint(IResourceSubmitter) 45 43 46 def submit_ticket(self, email): 47 """ Rape the email and submit/update a ticket """ 48 49 parser = EmailParser(self.env) 50 subject = parser.get_subject(email)email['Subject'].strip() 51 author_email = parseaddr(email['From'])[1] 52 update = subject[:3].lower() == 're:' 53 if update: 54 subject = subject[3:].strip() 55 44 archive = BoolOption('resource2trac', 'archive', True, 45 doc="Whether or not to archive the processed messages") 56 46 57 47 58 def process_tickets(self): 59 self.parser 60 for store in self.email_stores: 61 for id, email in store.get_email(): 48 def process_resources(self): 49 for src in self.data_sources: 50 for id, msg in src.get_message(): 62 51 try: 63 info = self.submit_ticket(email) 52 resource_type = msg.get_type() 53 for submitter in self.resource_submitters(): 54 if submitter.match_resource_type(resource_type): 55 break 56 continue 57 submitter.submit_resource(resource_type, msg) 64 58 if self.archive: 65 s tore.archive_email(id)66 s tore.delete_email(id)59 src.archive_message(id) 60 src.delete_message(id) 67 61 except: 68 self.log.debug('Unable to submit the ticket')69 s tore.cleanup()62 self.log.debug('Unable to submit the resource') 63 src.cleanup() 70 64 continue 71 72 73 65 74 66 … … 103 95 def main(argv): 104 96 opts = doArgs(argv) 105 emailticket = EmailTicketSubmission(opts.env)97 emailticket = ResourceSubmission(opts.env) 106 98 emailticket.process_tickets() 107 99 return 0
Note: See TracChangeset
for help on using the changeset viewer.
