本文整理汇总了Python中treeio.identities.models.Contact.get_or_create_by_email方法的典型用法代码示例。如果您正苦于以下问题:Python Contact.get_or_create_by_email方法的具体用法?Python Contact.get_or_create_by_email怎么用?Python Contact.get_or_create_by_email使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类treeio.identities.models.Contact
的用法示例。
在下文中一共展示了Contact.get_or_create_by_email方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: messaging_compose
# 需要导入模块: from treeio.identities.models import Contact [as 别名]
# 或者: from treeio.identities.models.Contact import get_or_create_by_email [as 别名]
def messaging_compose(request, response_format='html'):
"New message page"
user = request.user.get_profile()
if request.POST:
if not 'cancel' in request.POST:
message = Message()
message.author = user.get_contact()
if not message.author:
return user_denied(request,
message="You can't send message without a Contact Card assigned to you.",
response_format=response_format)
form = MessageForm(
request.user.get_profile(), None, None, request.POST, instance=message)
if form.is_valid():
message = form.save()
message.recipients.add(user.get_contact())
message.set_user_from_request(request)
message.read_by.add(user)
try:
# if email entered create contact and add to recipients
if 'multicomplete_recipients' in request.POST and request.POST['multicomplete_recipients']:
try:
conf = ModuleSetting.get_for_module(
'treeio.messaging', 'default_contact_type')[0]
default_contact_type = ContactType.objects.get(
pk=long(conf.value))
except Exception:
default_contact_type = None
emails = request.POST[
'multicomplete_recipients'].split(',')
for email in emails:
emailstr = unicode(email).strip()
if re.match('[a-zA-Z0-9+_\-\.][email protected][0-9a-zA-Z][.-0-9a-zA-Z]*.[a-zA-Z]+', emailstr):
contact, created = Contact.get_or_create_by_email(
emailstr, contact_type=default_contact_type)
message.recipients.add(contact)
if created:
contact.set_user_from_request(request)
except:
pass
# send email to all recipients
message.send_email()
return HttpResponseRedirect(reverse('messaging'))
else:
return HttpResponseRedirect(reverse('messaging'))
else:
form = MessageForm(request.user.get_profile(), None)
context = _get_default_context(request)
context.update({'form': form})
return render_to_response('messaging/message_compose', context,
context_instance=RequestContext(request), response_format=response_format)
示例2: process_msg
# 需要导入模块: from treeio.identities.models import Contact [as 别名]
# 或者: from treeio.identities.models.Contact import get_or_create_by_email [as 别名]
def process_msg(self, msg, attrs, attachments):
"Save message, Cap!"
from treeio.messaging.models import Message
try:
conf = ModuleSetting.get_for_module('treeio.messaging', 'default_contact_type')[0]
default_contact_type = ContactType.objects.get(pk=long(conf.value))
except:
default_contact_type = None
email_author, created = Contact.get_or_create_by_email(attrs.author_email.encode('utf-8', errors='replace'), attrs.author_name.encode('utf-8', errors='replace'), default_contact_type)
if created:
email_author.copy_permissions(self.stream)
# check if the message is already retrieved
# XXX should store a unique 'msg-id'
existing = Message.objects.filter(stream=self.stream, title=attrs.subject, author=email_author, body=attrs.body.encode('utf-8', errors='replace')).exists()
if not existing:
message = None
if attrs.subject[:3] == 'Re:':
# process replies
if attrs.subject[:4] == 'Re: ':
original_subject = attrs.subject[4:]
else:
original_subject = attrs.subject[3:]
try:
query = Q(reply_to__isnull=True) & Q(recipients=email_author) & (Q(title=original_subject) | Q(title=attrs.subject))
original = Message.objects.filter(query).order_by('-date_created')[:1][0]
message = Message(title=attrs.subject.encode('utf-8', errors='replace'), body=attrs.body.encode('utf-8', errors='replace').decode('unicode_escape'), author=email_author,
stream=self.stream, reply_to=original)
if attrs.email_date:
message.date_created = attrs.email_date
message.rfc822 = msg.as_string().decode('utf-8', errors='replace')
message.save()
message.copy_permissions(original)
original.read_by.clear()
except IndexError:
pass
if not message:
message = Message(title=attrs.subject.encode('utf-8', errors='replace'), body=attrs.body.encode('utf-8', errors='replace').decode('unicode_escape'), author=email_author, stream=self.stream)
if attrs.email_date:
message.date_created = attrs.email_date
message.rfc822 = msg.as_string().decode('utf-8', errors='replace') #utf-8', errors='replace')
message.save()
message.copy_permissions(self.stream)
message.recipients.add(email_author)
示例3: create
# 需要导入模块: from treeio.identities.models import Contact [as 别名]
# 或者: from treeio.identities.models.Contact import get_or_create_by_email [as 别名]
def create(self, request, *args, **kwargs):
"Send email to some recipients"
user = request.user.get_profile()
if request.data is None:
return rc.BAD_REQUEST
if request.data.has_key('stream'):
stream = getOrNone(MessageStream, request.data['stream'])
if stream and not user.has_permission(stream, mode='x'):
return rc.FORBIDDEN
message = Message()
message.author = user.get_contact()
if not message.author:
return rc.FORBIDDEN
form = MessageForm(user, None, None, request.data, instance=message)
if form.is_valid():
message = form.save()
message.recipients.add(user.get_contact())
message.set_user_from_request(request)
message.read_by.add(user)
try:
# if email entered create contact and add to recipients
if 'multicomplete_recipients' in request.POST and request.POST['multicomplete_recipients']:
try:
conf = ModuleSetting.get_for_module(
'treeio.messaging', 'default_contact_type')[0]
default_contact_type = ContactType.objects.get(
pk=long(conf.value))
except Exception:
default_contact_type = None
emails = request.POST[
'multicomplete_recipients'].split(',')
for email in emails:
emailstr = unicode(email).strip()
if re.match('[a-zA-Z0-9+_\-\.][email protected][0-9a-zA-Z][.-0-9a-zA-Z]*.[a-zA-Z]+', emailstr):
contact, created = Contact.get_or_create_by_email(
emailstr, contact_type=default_contact_type)
message.recipients.add(contact)
if created:
contact.set_user_from_request(request)
except:
pass
# send email to all recipients
message.send_email()
return message
else:
self.status = 400
return form.errors
示例4: messaging_view
# 需要导入模块: from treeio.identities.models import Contact [as 别名]
# 或者: from treeio.identities.models.Contact import get_or_create_by_email [as 别名]
def messaging_view(request, message_id, response_format='html'):
"Single message page"
message = get_object_or_404(Message, pk=message_id)
user = request.user.get_profile()
if not user.has_permission(message):
return user_denied(request, message="You don't have access to this Message",
response_format=response_format)
message.read_by.add(user)
if request.POST and request.POST.get('body', False):
"Unread message"
reply = Message()
reply.author = user.get_contact()
if not reply.author:
return user_denied(request,
message="You can't send message without a Contact Card assigned to you.",
response_format=response_format)
reply.reply_to = message
form = MessageReplyForm(user, message.stream_id, message, request.POST, instance=reply)
if form.is_valid():
reply = form.save()
reply.set_user_from_request(request)
# Add author to recipients
reply.recipients.add(reply.author)
message.read_by.clear()
try:
# if email entered create contact and add to recipients
if 'multicomplete_recipients' in request.POST and request.POST['multicomplete_recipients']:
try:
conf = ModuleSetting.get_for_module('treeio.messaging', 'default_contact_type')[0]
default_contact_type = ContactType.objects.get(pk=long(conf.value))
except Exception:
default_contact_type = None
emails = request.POST['multicomplete_recipients'].split(',')
for email in emails:
emailstr = unicode(email).strip()
if re.match('[a-zA-Z0-9+_\-\.][email protected][0-9a-zA-Z][.-0-9a-zA-Z]*.[a-zA-Z]+', emailstr):
contact, created = Contact.get_or_create_by_email(emailstr, contact_type=default_contact_type)
reply.recipients.add(contact)
if created:
contact.set_user_from_request(request)
except:
pass
# Add each recipient of the reply to the original message
for recipient in reply.recipients.all():
message.recipients.add(recipient)
# send email to all recipients
reply.send_email()
return HttpResponseRedirect(reverse('messaging_message_view', args=[message.id]))
else:
form = MessageReplyForm(request.user.get_profile(), message.stream_id, message)
replies = Object.filter_by_request(request,
Message.objects.filter(reply_to=message).order_by('date_created'))
context = _get_default_context(request)
context.update({'message':message,
'messages':replies,
'form':form})
return render_to_response('messaging/message_view', context,
context_instance=RequestContext(request),
response_format=response_format)
示例5: stream_view
# 需要导入模块: from treeio.identities.models import Contact [as 别名]
# 或者: from treeio.identities.models.Contact import get_or_create_by_email [as 别名]
def stream_view(request, stream_id, response_format='html'):
"Stream view page"
user = request.user.get_profile()
stream = get_object_or_404(MessageStream, pk=stream_id)
if not request.user.get_profile().has_permission(stream):
return user_denied(request, message="You don't have access to this Stream",
response_format=response_format)
if request.user.get_profile().has_permission(stream, mode='x'):
if request.POST:
message = Message()
message.author = user.get_contact()
if not message.author:
return user_denied(request,
message="You can't send message without a Contact Card assigned to you.",
response_format=response_format)
form = MessageForm(request.user.get_profile(), None, None, request.POST, instance=message)
if form.is_valid():
message = form.save()
message.recipients.add(user.get_contact())
message.set_user_from_request(request)
message.read_by.add(user)
try:
# if email entered create contact and add to recipients
if 'multicomplete_recipients' in request.POST and request.POST['multicomplete_recipients']:
try:
conf = ModuleSetting.get_for_module('treeio.messaging', 'default_contact_type')[0]
default_contact_type = ContactType.objects.get(pk=long(conf.value))
except Exception:
default_contact_type = None
emails = request.POST['multicomplete_recipients'].split(',')
for email in emails:
emailstr = unicode(email).strip()
if re.match('[a-zA-Z0-9+_\-\.][email protected][0-9a-zA-Z][.-0-9a-zA-Z]*.[a-zA-Z]+', emailstr):
contact, created = Contact.get_or_create_by_email(emailstr, contact_type=default_contact_type)
message.recipients.add(contact)
if created:
contact.set_user_from_request(request)
except:
pass
# send email to all recipients
message.send_email()
return HttpResponseRedirect(reverse('messaging_stream_view', args=[stream.id]))
else:
form = MessageForm(request.user.get_profile(), stream_id)
else:
form = None
messages = Object.filter_by_request(request,
Message.objects.filter(reply_to__isnull=True,
stream=stream).order_by('-date_created'))
context = _get_default_context(request)
context.update({'messages':messages,
'form': form,
'stream':stream})
return render_to_response('messaging/stream_view', context,
context_instance=RequestContext(request),
response_format=response_format)
示例6: update
# 需要导入模块: from treeio.identities.models import Contact [as 别名]
# 或者: from treeio.identities.models.Contact import get_or_create_by_email [as 别名]
def update(self, request, *args, **kwargs):
"Reply to message"
if request.data is None:
return rc.BAD_REQUEST
pkfield = kwargs.get(self.model._meta.pk.name) or request.data.get(
self.model._meta.pk.name)
if not pkfield:
return rc.BAD_REQUEST
user = request.user.get_profile()
try:
message = self.model.objects.get(pk=pkfield)
except ObjectDoesNotExist:
return rc.NOT_FOUND
if not user.has_permission(message):
return rc.FORBIDDEN
reply = Message()
reply.author = user.get_contact()
if not reply.author:
return rc.FORBIDDEN
reply.reply_to = message
form = MessageReplyForm(
user, message.stream_id, message, request.data, instance=reply)
if form.is_valid():
reply = form.save()
reply.set_user_from_request(request)
# Add author to recipients
reply.recipients.add(reply.author)
message.read_by.clear()
try:
# if email entered create contact and add to recipients
if 'multicomplete_recipients' in request.POST and request.POST['multicomplete_recipients']:
try:
conf = ModuleSetting.get_for_module(
'treeio.messaging', 'default_contact_type')[0]
default_contact_type = ContactType.objects.get(
pk=long(conf.value))
except Exception:
default_contact_type = None
emails = request.POST[
'multicomplete_recipients'].split(',')
for email in emails:
emailstr = unicode(email).strip()
if re.match('[a-zA-Z0-9+_\-\.][email protected][0-9a-zA-Z][.-0-9a-zA-Z]*.[a-zA-Z]+', emailstr):
contact, created = Contact.get_or_create_by_email(
emailstr, contact_type=default_contact_type)
reply.recipients.add(contact)
if created:
contact.set_user_from_request(request)
except:
pass
# Add each recipient of the reply to the original message
for recipient in reply.recipients.all():
message.recipients.add(recipient)
# send email to all recipients
reply.send_email()
return reply
else:
self.status = 400
return form.errors
示例7: process_msg
# 需要导入模块: from treeio.identities.models import Contact [as 别名]
# 或者: from treeio.identities.models.Contact import get_or_create_by_email [as 别名]
def process_msg(self, msg, attrs, attachments):
"Save message, Cap!"
from treeio.messaging.models import Message
try:
conf = ModuleSetting.get_for_module("treeio.messaging", "default_contact_type")[0]
default_contact_type = ContactType.objects.get(pk=long(conf.value))
except:
default_contact_type = None
email_author, created = Contact.get_or_create_by_email(
attrs.author_email, attrs.author_name, default_contact_type
)
if created:
email_author.copy_permissions(self.stream)
# check if the message is already retrieved
threshold = datetime.datetime.now() - datetime.timedelta(minutes=20)
existing = Message.objects.filter(
stream=self.stream, title=attrs.subject, author=email_author, date_created__gte=threshold
).exists()
if not existing:
# check if it could be a renamed ticket message
existing = Message.objects.filter(
stream=self.stream,
title__regex=r"\[#\d*\] %s" % attrs.subject,
author=email_author,
date_created__gte=threshold,
).exists()
if not existing:
message = None
if attrs.subject[:3] in MAIL_PREF:
if attrs.subject[3] == " ":
original_subject = attrs.subject[4:]
else:
original_subject = attrs.subject[3:]
try:
query = (
Q(reply_to__isnull=True)
& Q(recipients=email_author)
& (Q(title=original_subject) | Q(title=attrs.subject))
)
original = Message.objects.filter(query).order_by("-date_created")[:1][0]
message = Message(
title=attrs.subject, body=attrs.body, author=email_author, stream=self.stream, reply_to=original
)
message.date_created = datetime.datetime.now()
message.is_mail = True
message.save()
message.copy_permissions(original)
original.read_by.clear()
except IndexError:
pass
if not message:
message = Message(title=attrs.subject, body=attrs.body, author=email_author, stream=self.stream)
message.date_created = datetime.datetime.now()
message.is_mail = True
message.save()
message.copy_permissions(self.stream)
message.recipients.add(email_author)