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)
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)
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")