示例#1
0
def new(request):
    selected_user = None

    if request.POST:
        form = NewMessageForm(request.user, request.POST)

        if form.is_valid():
            if form.cleaned_data['user']:
                m = Message(user=form.cleaned_data['user'],
                            author=request.user,
                            content=form.cleaned_data['content'],
                            subject=form.cleaned_data['subject'])
                m.save()
                send_new_message_notification.delay(m.pk)
            elif form.cleaned_data['team']:
                now = datetime.now()
                # TODO: Move this into a task for performance?
                language = form.cleaned_data['language']
                # We create messages using bulk_create, so that only one transaction is needed
                # But that means that we need to sort out the pk of newly created messages to
                # be able to send the notifications
                message_list = []
                for member in form.cleaned_data['team'].members.all():
                    if member.user != request.user:
                        if (len(language) == 0) or (language in set(
                                UserLanguage.objects.filter(
                                    user__exact=member.user).values_list(
                                        'language', flat=True))):
                            message_list.append(
                                Message(user=member.user,
                                        author=request.user,
                                        content=form.cleaned_data['content'],
                                        subject=form.cleaned_data['subject']))
                Message.objects.bulk_create(message_list)
                new_messages_ids = Message.objects.filter(
                    created__gt=now).values_list('pk', flat=True)
                for pk in new_messages_ids:
                    send_new_message_notification.delay(pk)
            messages.success(request, _(u'Message sent.'))
            return HttpResponseRedirect(reverse('messages:inbox'))
        else:
            if request.GET.get('user'):
                selected_user = User.objects.get(username=request.GET['user'])
    else:
        form = NewMessageForm(request.user)

        if request.GET.get('user'):
            selected_user = User.objects.get(username=request.GET['user'])

    return {
        'selected_user': selected_user,
        'user_info': request.user,
        'form': form,
    }
示例#2
0
def new(request):
    selected_user = None

    if request.POST:
        form = NewMessageForm(request.user, request.POST)

        if form.is_valid():
            if form.cleaned_data['user']:
                m = Message(user=form.cleaned_data['user'],
                            author=request.user,
                            content=form.cleaned_data['content'],
                            subject=form.cleaned_data['subject'])
                m.save()
                send_new_message_notification.delay(m.pk)
            elif form.cleaned_data['team']:
                # TODO: Move this into a task for performance?
                # Once we switch to Django 1.4, this should be replaced with
                # `bulk_create`.
                for member in form.cleaned_data['team'].members.all():
                    if member.user != request.user:
                        m = Message(user=member.user,
                                    author=request.user,
                                    content=form.cleaned_data['content'],
                                    subject=form.cleaned_data['subject'])
                        m.save()
                        send_new_message_notification.delay(m.pk)

            messages.success(request, _(u'Message sent.'))
            return HttpResponseRedirect(reverse('messages:inbox'))
        else:
            if request.GET.get('user'):
                selected_user = User.objects.get(username=request.GET['user'])
    else:
        form = NewMessageForm(request.user)

        if request.GET.get('user'):
            selected_user = User.objects.get(username=request.GET['user'])

    return {
        'selected_user': selected_user,
        'user_info': request.user,
        'form': form,
    }
示例#3
0
 def _create_message(self, to_user):
     self.message = Message(user=to_user,
                            author=self.author,
                            subject=self.subject,
                            content=self.body)
     self.message.save()