1
0
mirror of https://github.com/Microsoft/sql-server-samples.git synced 2025-12-08 14:58:54 +00:00
Files
sql-server-samples/samples/development-frameworks/django/bootcamp/messenger/models.py
2016-11-08 13:10:49 -08:00

57 lines
2.0 KiB
Python

from django.db import models
from django.utils.translation import ugettext_lazy as _
from django.contrib.auth.models import User
from django.db.models import Max
class Message(models.Model):
user = models.ForeignKey(User, related_name='+')
message = models.TextField(max_length=1000, blank=True)
date = models.DateTimeField(auto_now_add=True)
conversation = models.ForeignKey(User, related_name='+')
from_user = models.ForeignKey(User, related_name='+')
is_read = models.BooleanField(default=False)
class Meta:
verbose_name = _('Message')
verbose_name_plural = _('Messages')
ordering = ('date',)
db_table = 'messages_message'
def __unicode__(self):
return self.message
@staticmethod
def send_message(from_user, to_user, message):
message = message[:1000]
current_user_message = Message(from_user=from_user,
message=message,
user=from_user,
conversation=to_user,
is_read=True)
current_user_message.save()
Message(from_user=from_user,
conversation=from_user,
message=message,
user=to_user).save()
return current_user_message
@staticmethod
def get_conversations(user):
conversations = Message.objects.filter(
user=user).values('conversation').annotate(
last=Max('date')).order_by('-last')
users = []
for conversation in conversations:
users.append({
'user': User.objects.get(pk=conversation['conversation']),
'last': conversation['last'],
'unread': Message.objects.filter(user=user,
conversation__pk=conversation[
'conversation'],
is_read=False).count(),
})
return users