Skip to content

Commit

Permalink
rref #5367
Browse files Browse the repository at this point in the history
rref #5366
ref #66
ref #65
  • Loading branch information
evrenesat committed Jun 26, 2016
1 parent 6ebcf44 commit 7ec6003
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 24 deletions.
17 changes: 8 additions & 9 deletions zengine/messaging/model.py
Original file line number Diff line number Diff line change
Expand Up @@ -76,8 +76,8 @@ def get_or_create_direct_channel(cls, initiator, receiver):
Returns:
Channel
"""
existing = cls.objects.or_filter(
code_name='%s_%s' % (initiator.key, receiver.key)).or_filter(
existing = cls.objects.OR().filter(
code_name='%s_%s' % (initiator.key, receiver.key)).filter(
code_name='%s_%s' % (receiver.key, initiator.key))
if existing:
return existing[0]
Expand All @@ -88,13 +88,12 @@ def get_or_create_direct_channel(cls, initiator, receiver):
Subscription(channel=channel, user=receiver).save()
return channel


def add_message(self, body, title, sender=None, url=None, typ=2, receiver=None):
channel = self._connect_mq()
def add_message(self, body, title=None, sender=None, url=None, typ=2, receiver=None):
mq_channel = self._connect_mq()
mq_msg = json.dumps(dict(sender=sender, body=body, msg_title=title, url=url, typ=typ))
channel.basic_publish(exchange=self.code_name, body=mq_msg)
Message(sender=sender, body=body, msg_title=title, url=url,
typ=typ, channel=self, receiver=receiver).save()
mq_channel.basic_publish(exchange=self.code_name, body=mq_msg)
return Message(sender=sender, body=body, msg_title=title, url=url,
typ=typ, channel=self, receiver=receiver).save()

@classmethod
def _connect_mq(cls):
Expand Down Expand Up @@ -221,7 +220,7 @@ class Attachment(Model):
"""
file = field.File("File", random_name=True, required=False)
typ = field.Integer("Type", choices=ATTACHMENT_TYPES)
name = field.String("Name")
name = field.String("File Name")
description = field.String("Description")
channel = Channel()
message = Message()
Expand Down
57 changes: 42 additions & 15 deletions zengine/messaging/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,41 +8,68 @@
# (GPLv3). See LICENSE.txt for details.
from pyoko.conf import settings
from pyoko.lib.utils import get_object_from_path
from zengine.messaging.model import Channel, Attachment
from zengine.views.base import BaseView

UserModel = get_object_from_path(settings.USER_MODEL)

class MessageView(BaseView):

class MessageView(BaseView):
def create_message(self):
"""
Creates a message for the given channel.
Args:
API:
self.current.input['data']['message'] = {
'channel': code_name of the channel
'title': Title of the message, optional
'body': Title of the message
'attachment':{
'name': title/name of file
'key': storage key
}
'channel': code_name of the channel.
'receiver': Key of receiver. Can be blank for non-direct messages.
'title': Title of the message. Can be blank.
'body': Message body.
'type': zengine.messaging.model.MSG_TYPES
'attachments': [{
'description': Can be blank.
'name': File name with extension.
'content': base64 encoded file content
}]
}
"""
# TODO: Attachment support!!!
msg = self.current.input['message']
ch = Channel.objects.get(msg['channel'])
msg_obj = ch.add_message(body=msg['body'], typ=msg['typ'], sender=self.current.user,
title=msg['title'], receiver=msg['receiver'] or None)
if 'attachment' in msg:
for atch in msg['attachments']:
# TODO: Attachment type detection
typ = self._dedect_file_type(atch['name'], atch['content'])
Attachment(channel=ch, msg=msg_obj, name=atch['name'], file=atch['content'],
description=atch['description'], typ=typ).save()

# UserModel.objects.get(msg['receiver']).send_message(msg.get('title'), msg['body'], typ=2,
# sender=self.current.user)
def _dedect_file_type(self, name, content):
# TODO: Attachment type detection
return 1 # Document

def show_channel(self):
pass

def list_channels(self):
pass

def new_broadcast_message(self):
def create_public_channel(self):
pass

def show_channel(self):
def create_direct_channel(self):
"""
Create a One-To-One channel for current user and selected user.
"""
pass

def find_message(self):
pass

def list_channels(self):
def delete_message(self):
pass

def edit_message(self):
pass

0 comments on commit 7ec6003

Please sign in to comment.