def mail_track(http_meta, encrypted): from dbmail.models import MailLogTrack, MailLog class Request(object): META = http_meta try: request = Request() mail_log_id = signing.loads(encrypted) mail_log = MailLog.objects.get(log_id=mail_log_id) track_log = MailLogTrack.objects.filter(mail_log=mail_log) if not track_log.exists(): MailLogTrack.objects.create( mail_log=mail_log, ip=get_ip(request), ua=request.META.get('HTTP_USER_AGENT'), is_read=True, ) else: track_log[0].save() except (signing.BadSignature, MailLog.DoesNotExist): pass except Exception as exc: raise mail_track.retry( retry=True, max_retries=SEND_RETRY, countdown=SEND_RETRY_DELAY, exc=exc, )
def is_allowed_ip(self, request): """ Returns True if client ip is in allowed_origins or allowed_origins field is empty """ if not self.allowed_origins: return True client_ip = get_ip(request) return client_ip in self.allowed_origins.split()
def track(cls, http_meta, encrypted): class Request(object): META = http_meta try: request = Request() mail_log_id = signing.loads(encrypted) mail_log = MailLog.objects.get(log_id=mail_log_id) track_log = MailLogTrack.objects.filter(mail_log=mail_log) if not track_log.exists(): MailLogTrack.objects.create( mail_log=mail_log, ip=get_ip(request), ua=request.META.get('HTTP_USER_AGENT'), is_read=True, ) else: track_log[0].save() except (signing.BadSignature, MailLog.DoesNotExist): pass