def detail_message(request, conv_id): """ view untuk menampilkan detail pesan beserta percakapan """ conv = get_object_or_404(Conversation, id=conv_id, users=request.user, membership__deleted=False) list_messages = Message.objects.filter(conversation=conv) msg = list_messages[0] if request.POST: form = SendConversationForm(request.POST) if form.is_valid(): msg = Message() msg.conversation = conv msg.user = request.user msg.content = form.cleaned_data['content'] msg.save() to2 = list(conv.users.all()) to2.remove(request.user) notification.send(to2, 'new_message', {'user': request.user, 'message': conv}) messages.info(request, _('Message sent')) return HttpResponseRedirect(conv.get_absolute_url()) else: form = SendConversationForm() return render_to_response('message/detail_message.html', {"conv": conv, 'form': form, 'msg': msg, 'list_messages': list_messages}, context_instance=RequestContext(request))
def save_message(user_id, message): type_name = message.get('type_name') args = message.get('args') file = message.get('file', '') conversation_id = message.get('conversation_id') mt = MessageType.select().where(MessageType.name == type_name).first() u = User.select().where(User.id == user_id).first() cps = ConversationParty.select().where(ConversationParty.conversation == conversation_id) number_of_conversationees = cps.count() if not mt or not u or not cps or not number_of_conversationees: raise InvalidMessageDataException('Couldn\'t save message: invalid message data') m = Message() with database.transaction(): m.conversation = conversation_id m.message_type = mt m.sender_id = user_id m.ts = datetime.now() m.file = file m.content, m.display_content = __save_content(args, mt, user_id, cps) m.save() update_conversation(conversation_id=conversation_id, last_message=m) mark_message_as_read(user_id=user_id, message=m, conversation_id=conversation_id) message_object = get_message_json(message=m) message_object['recipient_ids'] = [cp.user.id for cp in cps] return json.dumps(message_object)
def on_message(self, message): message = Message(**json.loads(message)) message.author = self.current_user message.created_at = datetime.utcnow() message.conversation = self.conversation self.db.add(message) self.db.commit() for user in self.conversation.connected_users: user.write_message(json.dumps(message.as_json()))
def create_message(request, username=None): """ view untuk menampilkan pembuatan pesan """ to = [] if username: to.append(username) if request.POST: to = request.POST.getlist('to') form = CreateMessageForm(request.POST) if form.is_valid(): title = form.cleaned_data['title'] message = form.cleaned_data['content'] location = form.cleaned_data['location'] conv = Conversation() conv.title = title conv.origin = request.user conv.location = location conv.save() Membership.objects.create(user=request.user, conversation=conv) to2 = [] for person in to: to_person = User.objects.get(username=person) to2.append(to_person) Membership.objects.create(user=to_person, conversation=conv) msg = Message() msg.conversation = conv msg.content = message msg.user = request.user msg.save() notification.send(to2, 'new_message', {'user': request.user, 'message': conv}) messages.info(request, _('Message sent')) return HttpResponseRedirect(reverse('message_list')) else: form = CreateMessageForm() return render_to_response('message/create_message.html', {'form': form, 'to': to}, context_instance=(RequestContext(request)))
from models import BaseModel, User, Conversation, ConversationParty, Message, MessageType, database from datetime import datetime # Messages m = Message() m.conversation = Conversation.get(Conversation.id==1) m.sender = User.get(User.id==1) m.message_type = MessageType.get(MessageType.name=='directive_quotation_mt') m.ts = datetime.now() args = {'currency':'R$', 'per_day_beneficiary_value':'20.50', 'number_of_beneficiaries':'5', 'company_name':'VR', 'company_picture':'' } with database.transaction(): m.save() m.run_constructor(args) m.save()