Esempio n. 1
0
    def test_message_create_filled(self):
        message = Message()

        message.sender = self.sender
        message.title = u"title"
        message.text = u"text"

        message.save()

        message.recipients = self.recipients
        message.recipients_user = self.recipients
        message.recipients_course = self.recipients_course
        message.recipients_group = self.recipients_group

        message_id = message.id

        message = Message.objects.get(id=message_id)

        self.assertIsInstance(message, Message)
        self.assertEqual(message.sender, self.sender)
        self.assertEqual(message.title, u"title")
        self.assertEqual(message.text, u"text")
        self.assertItemsEqual(message.recipients.all(), self.recipients)
        self.assertItemsEqual(message.recipients_user.all(), self.recipients)
        self.assertItemsEqual(message.recipients_course.all(),
                              self.recipients_course)
        self.assertItemsEqual(message.recipients_group.all(),
                              self.recipients_group)
Esempio n. 2
0
    def test_message_create_filled(self):
        message = Message()

        message.sender = self.sender
        message.title = u"title"
        message.text = u"text"

        message.save()

        message.recipients = self.recipients
        message.recipients_user = self.recipients
        message.recipients_course = self.recipients_course
        message.recipients_group = self.recipients_group

        message_id = message.id

        message = Message.objects.get(id=message_id)

        self.assertIsInstance(message, Message)
        self.assertEqual(message.sender, self.sender)
        self.assertEqual(message.title, u"title")
        self.assertEqual(message.text, u"text")
        self.assertItemsEqual(message.recipients.all(), self.recipients)
        self.assertItemsEqual(message.recipients_user.all(), self.recipients)
        self.assertItemsEqual(message.recipients_course.all(), self.recipients_course)
        self.assertItemsEqual(message.recipients_group.all(), self.recipients_group)
Esempio n. 3
0
    def test_ajax_get_message_user(self):
        client = self.client

        message = Message()
        message.sender = self.sender
        message.title = u"title"
        message.text = u"text"
        message.save()
        message.recipients = self.recipients
        message.recipients_user = self.recipients_user
        message.recipients_group = self.recipients_group
        message.recipients_course = self.recipients_course

        get_data = {
            u'unread_count': 0,
            u'msg_id': 1,
            u'mailbox': 'inbox'
        }

        response_data = {
            'sender': {
                'url': self.sender.get_absolute_url(),
                'fullname': u'%s %s' % (self.sender.last_name, self.sender.first_name),
                'id': self.sender.id,
                'avatar': ''
            },
            'unread_count': 0,
            'text': message.text,
            'date': message.create_time.astimezone(
                timezone_pytz(self.sender.get_profile().time_zone)
            ).strftime("%d.%m.%y %H:%M:%S"),
            'recipients_course': [{
                'url': self.recipients_course[0].get_absolute_url(),
                'name': self.recipients_course[0].name,
                'id': self.recipients_course[0].id
            }],
            'recipients_group': [{
                'name': self.recipients_group[0].name,
                'id': self.recipients_group[0].id
            }],
            'recipients_user': [{
                'url': self.recipients_user[0].get_absolute_url(),
                'fullname': u'%s %s' % (self.recipients_user[0].last_name, self.recipients_user[0].first_name),
                'id': self.recipients_user[0].id
            }],
            'recipients_status': []
        }

        # login
        self.assertTrue(client.login(username=self.sender.username, password=self.sender_password))

        # get page
        response = client.get(reverse('mail.views.ajax_get_message'), get_data)
        self.assertEqual(response.status_code, 200)

        self.assertEqual(json.loads(response.content), response_data)
Esempio n. 4
0
def ajax_send_message(request):
    user = request.user

    data = dict(request.POST)

    hidden_copy = False
    if 'hidden_copy' in data and data['hidden_copy'][0]:
        hidden_copy = True

    variable = False
    if 'variable' in data and data['variable'][0]:
        variable = True

    message = Message()
    message.sender = user
    message.title = data['new_title'][0]
    message.text = data['new_text'][0]
    message.hidden_copy = hidden_copy
    message.variable = variable
    message.save()

    recipients_ids = set()

    if "new_recipients_user[]" in data or "new_recipients_preinit[]" in data:
        users = data.get("new_recipients_user[]", [])
        if "new_recipients_preinit[]" in data:
            users += request.session.get('user_ids_send_mail_' + data["new_recipients_preinit[]"][0], [])
        message.recipients_user = users
        recipients_ids.update(message.recipients_user.values_list('id', flat=True))

    group_ids = []
    if "new_recipients_group[]" in data:
        message.recipients_group = data["new_recipients_group[]"]

        for group in Group.objects.filter(id__in=data["new_recipients_group[]"]):
            recipients_ids.update(group.students.exclude(id=user.id).values_list('id', flat=True))
            group_ids.append(group.id)

    if "new_recipients_course[]" in data:
        message.recipients_course = data["new_recipients_course[]"]

        for course in Course.objects.filter(id__in=data["new_recipients_course[]"]):
            for group in course.groups.exclude(id__in=group_ids).distinct():
                recipients_ids.update(group.students.exclude(id=user.id).values_list('id', flat=True))

    if "new_recipients_status[]" in data:
        message.recipients_status = data["new_recipients_status[]"]

        recipients_ids.update(UserProfile.objects.filter(user_status__in=data["new_recipients_status[]"])
                              .values_list('user__id', flat=True))

    message.recipients = list(recipients_ids)

    return HttpResponse("OK")