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('maker.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+_\-\.]+@[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)
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('maker.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+_\-\.]+@[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
def mlist_view(request, mlist_id, response_format='html'): "Mailing List view page" user = request.user.get_profile() mlist = get_object_or_404(MailingList, pk=mlist_id) if not request.user.get_profile().has_permission(mlist): return user_denied(request, message="You don't have access to this Mailing List", response_format=response_format) if request.user.get_profile().has_permission(mlist, mode='x'): if request.POST: message = Message() message.author = request.user.get_profile().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(), mlist_id, None, request.POST, instance=message) if form.is_valid(): message = form.save() message.set_user_from_request(request) message.read_by.add(user) return HttpResponseRedirect(reverse('messaging_mlist_view', args=[mlist.id])) else: form = MessageForm(request.user.get_profile(), mlist_id) else: form = None messages = Object.filter_by_request(request, Message.objects.filter(reply_to__isnull=True, mlist=mlist).order_by('-date_created')) context = _get_default_context(request) context.update({'messages':messages, 'form': form, 'mlist':mlist}) return render_to_response('messaging/mlist_view', context, context_instance=RequestContext(request), response_format=response_format)
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('maker.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+_\-\.]+@[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)