This repository has been archived on 2023-02-21. You can view files and clone it, but cannot push or open issues or pull requests.
logtracker/logtracker/mail/management/commands/collect.py

26 lines
990 B
Python

from django.core.management.base import BaseCommand, CommandError
from logtracker.data.models import Entry, Mail, Sender
from logtracker.collectors import parse
from logtracker.utils import lock
class Command(BaseCommand):
help = 'Collect entries from exim4 log'
def add_arguments(self, parser):
parser.add_argument('-l', '--logfile', default='/var/log/exim4/mainlog')
parser.add_argument('--lockfile', default='/var/lock/mainlog.lock')
def handle(self, logfile, *args, **options):
with lock(options.get('lockfile')):
new_mails = []
for stamp, identifier, action, data in parse(logfile):
mail, created = Mail.objects.get_or_create(identifier=identifier)
entry = Entry(mail=mail, action=action, data=data, stamp=stamp)
entry.save()
if created:
new_mails.append(mail)
for mail in new_mails:
mail.handle_exim_data()