def serialize_obj(self, store, key, obj, language): obj_id = obj.id cache_key = key + '-' + obj_id + '-' + language cache_obj = None if cache_key not in self.cache: if key == 'user': cache_obj = user_serialize_user(store, obj, language) elif key == 'context': cache_obj = admin_serialize_context(store, obj, language) elif key == 'tip': itip = store.find(models.InternalTip, id=obj.internaltip_id).one() cache_obj = serialize_rtip(store, obj, itip, language) elif key == 'message': cache_obj = serialize_message(store, obj) elif key == 'comment': cache_obj = serialize_comment(store, obj) elif key == 'file': cache_obj = models.serializers.serialize_ifile(store, obj) self.cache[cache_key] = cache_obj return self.cache[cache_key]
def create_message(session, tid, wbtip_id, receiver_id, content): wbtip, itip, rtip_id = db_get(session, (models.WhistleblowerTip, models.InternalTip, models.ReceiverTip.id), (models.WhistleblowerTip.id == wbtip_id, models.ReceiverTip.internaltip_id == wbtip_id, models.ReceiverTip.receiver_id == receiver_id, models.InternalTip.id == models.WhistleblowerTip.id, models.InternalTip.enable_two_way_messages.is_(True), models.InternalTip.status != 'closed', models.InternalTip.tid == tid)) itip.update_date = itip.wb_last_access = datetime_now() _content = content if itip.crypto_tip_pub_key: _content = base64.b64encode(GCE.asymmetric_encrypt(itip.crypto_tip_pub_key, content)).decode() msg = models.Message() msg.receivertip_id = rtip_id msg.type = 'whistleblower' msg.content = _content session.add(msg) session.flush() ret = serialize_message(session, msg) ret['content'] = content return ret
def create_message(session, tid, wbtip_id, user_key, receiver_id, content): wbtip, itip, rtip_id = session.query(models.WhistleblowerTip, models.InternalTip, models.ReceiverTip.id) \ .filter(models.WhistleblowerTip.id == wbtip_id, models.ReceiverTip.internaltip_id == wbtip_id, models.ReceiverTip.receiver_id == receiver_id, models.InternalTip.id == models.WhistleblowerTip.id, models.InternalTip.tid == tid).one_or_none() if wbtip is None: raise errors.ModelNotFound(models.WhistleblowerTip) itip.update_date = itip.wb_last_access = datetime_now() msg = models.Message() msg.receivertip_id = rtip_id msg.type = u'whistleblower' if itip.crypto_tip_pub_key: msg.content = base64.b64encode(GCE.asymmetric_encrypt(itip.crypto_tip_pub_key, content)).decode() else: msg.content = content session.add(msg) session.flush() ret = serialize_message(session, msg) ret['content'] = content return ret
def serialize_obj(self, session, key, obj, tid, language): obj_id = obj.id cache_key = gen_cache_key(key, tid, obj_id, language) cache_obj = None if cache_key not in self.cache: if key == 'user': cache_obj = user_serialize_user(session, obj, language) elif key == 'context': cache_obj = admin_serialize_context(session, obj, language) elif key == 'tip': itip = session.query(models.InternalTip).filter( models.InternalTip.id == obj.internaltip_id).one() cache_obj = serialize_rtip(session, obj, itip, language) elif key == 'message': cache_obj = serialize_message(session, obj) elif key == 'comment': cache_obj = serialize_comment(session, obj) elif key == 'file': cache_obj = models.serializers.serialize_ifile(session, obj) self.cache[cache_key] = cache_obj return self.cache[cache_key]
def db_get_itip_message_list(session, wbtip_id): messages = session.query(models.Message) \ .filter(models.Message.receivertip_id == models.ReceiverTip.id, models.ReceiverTip.internaltip_id == models.InternalTip.id, models.InternalTip.id == wbtip_id) return [serialize_message(session, message) for message in messages]
def get_itip_message_list(store, wbtip_id, receiver_id): """ Get the messages content and mark all the unread messages as "read" """ rtip = store.find(models.ReceiverTip, models.ReceiverTip.internaltip_id == wbtip_id, models.InternalTip.id == wbtip_id, models.ReceiverTip.receiver_id == receiver_id).one() return [serialize_message(store, message) for message in store.find(models.Message, models.Message.receivertip_id == rtip.id)]
def process_Message(self, store, message, data): # if the message is destinated to the whistleblower no mail should be sent if message.type == u"receiver": return language = message.receivertip.receiver.user.language data['message'] = serialize_message(message) data['tip'] = serialize_rtip(store, message.receivertip, language) data['context'] = admin_serialize_context(store, message.receivertip.internaltip.context, language) data['receiver'] = admin_serialize_receiver(message.receivertip.receiver, language) self.process_mail_creation(store, data)
def get_itip_message_list(store, wbtip_id, receiver_id): """ Get the messages content and mark all the unread messages as "read" """ wbtip = db_access_wbtip(store, wbtip_id) rtip = store.find(ReceiverTip, ReceiverTip.internaltip_id == wbtip.id, ReceiverTip.receiver_id == receiver_id).one() if not rtip: raise errors.TipIdNotFound return [serialize_message(message) for message in rtip.messages]
def create_message(store, wbtip_id, receiver_id, request): wbtip = db_access_wbtip(store, wbtip_id) wbtip.internaltip.update_date = datetime_now() rtip = store.find(ReceiverTip, ReceiverTip.internaltip_id == wbtip.id, ReceiverTip.receiver_id == receiver_id).one() if not rtip: raise errors.TipIdNotFound msg = Message() msg.content = request['content'] msg.receivertip_id = rtip.id msg.type = u'whistleblower' store.add(msg) return serialize_message(msg)
def create_message(store, wbtip_id, receiver_id, request): rtip_id, internaltip = store.find( (models.ReceiverTip.id, models.InternalTip), models.ReceiverTip.internaltip_id == wbtip_id, models.InternalTip.id == wbtip_id, models.ReceiverTip.receiver_id == receiver_id).one() if rtip_id is None: raise errors.ModelNotFound(models.ReceiverTip) internaltip.update_date = internaltip.wb_last_access = datetime_now() msg = models.Message() msg.content = request['content'] msg.receivertip_id = rtip_id msg.type = u'whistleblower' store.add(msg) return serialize_message(store, msg)
def create_message(session, tid, wbtip_id, receiver_id, request): rtip_id, internaltip = session.query(models.ReceiverTip.id, models.InternalTip) \ .filter(models.ReceiverTip.internaltip_id == wbtip_id, models.InternalTip.id == wbtip_id, models.ReceiverTip.receiver_id == receiver_id, models.InternalTip.tid == tid).one_or_none() if rtip_id is None: raise errors.ModelNotFound(models.ReceiverTip) internaltip.update_date = internaltip.wb_last_access = datetime_now() msg = models.Message() msg.content = request['content'] msg.receivertip_id = rtip_id msg.type = u'whistleblower' session.add(msg) session.flush() return serialize_message(session, msg)
def serialize_obj(self, store, key, obj, language): obj_id = obj.id cache_key = key + '-' + obj_id + '-' + language if cache_key not in self.cache: if key == 'tip': cache_obj = serialize_rtip(store, obj, language) elif key == 'context': cache_obj = admin_serialize_context(store, obj, language) elif key == 'receiver': cache_obj = admin_serialize_receiver(obj, language) elif key == 'message': cache_obj = serialize_message(obj) elif key == 'comment': cache_obj = serialize_comment(obj) elif key == 'file': cache_obj = serialize_internalfile(obj) self.cache[cache_key] = cache_obj return self.cache[cache_key]
def get_messages_content(store, wbtip_id, receiver_id): """ Get the messages content and mark all the unread messages as "read" """ wbtip = db_access_wbtip(store, wbtip_id) rtip = store.find(ReceiverTip, ReceiverTip.internaltip_id == wbtip.internaltip_id, ReceiverTip.receiver_id == receiver_id).one() if not rtip: raise errors.TipIdNotFound messages_list = [] for msg in rtip.messages: messages_list.append(serialize_message(msg)) if not msg.visualized and msg.type == u'receiver': log.debug("Marking as readed message [%s] from %s" % (msg.content, msg.author)) msg.visualized = True return messages_list
def serialize_content(store, cache, key, obj, language): obj_id = obj.id cache_key = key + obj_id + language if cache_key not in cache: if key == 'tip': cache_obj = serialize_rtip(store, obj, language) elif key == 'context': cache_obj = admin_serialize_context(store, obj, language) elif key == 'receiver': cache_obj = admin_serialize_receiver(obj, language) elif key == 'message': cache_obj = serialize_message(obj) elif key == 'comment': cache_obj = serialize_comment(obj) elif key == 'file': cache_obj = serialize_internalfile(obj) cache[cache_key] = cache_obj return copy.deepcopy(cache[cache_key])
def process_event(self, store, message): message_desc = serialize_message(message) # message.type can be 'receiver' or 'wb' at the moment, we care of the latter if message.type == u"receiver": return tip_desc = serialize_rtip(store, message.receivertip, self.language) context_desc = admin.context.admin_serialize_context(store, message.receivertip.internaltip.context, self.language) do_mail, receiver_desc = self.import_receiver(message.receivertip.receiver) self.events.append(Event(type=self.template_type, trigger=self.trigger, node_info={}, receiver_info=receiver_desc, context_info=context_desc, tip_info=tip_desc, subevent_info=message_desc, do_mail=do_mail))
def serialize_obj(self, session, key, obj, tid, language): obj_id = obj.id cache_key = gen_cache_key(key, tid, obj_id, language) cache_obj = None if cache_key not in self.cache: if key == 'user': cache_obj = user_serialize_user(session, obj, language) elif key == 'context': cache_obj = admin_serialize_context(session, obj, language) elif key == 'tip': itip = session.query(models.InternalTip).filter(models.InternalTip.id == obj.internaltip_id).one() cache_obj = serialize_rtip(session, obj, itip, language) elif key == 'message': cache_obj = serialize_message(session, obj) elif key == 'comment': cache_obj = serialize_comment(session, obj) elif key == 'file': cache_obj = models.serializers.serialize_ifile(session, obj) self.cache[cache_key] = cache_obj return self.cache[cache_key]
def process_event(self, store, message): message_desc = serialize_message(message) # message.type can be 'receiver' or 'wb' at the moment, we care of the latter if message.type == u"receiver": return tip_desc = serialize_rtip(store, message.receivertip, self.language) context_desc = admin.context.admin_serialize_context( store, message.receivertip.internaltip.context, self.language) do_mail, receiver_desc = self.import_receiver( message.receivertip.receiver) self.events.append( Event(type=self.template_type, trigger=self.trigger, node_info={}, receiver_info=receiver_desc, context_info=context_desc, tip_info=tip_desc, subevent_info=message_desc, do_mail=do_mail))