コード例 #1
0
    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]
コード例 #2
0
ファイル: wbtip.py プロジェクト: prateekj117/GlobaLeaks
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
コード例 #3
0
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
コード例 #4
0
    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]
コード例 #5
0
ファイル: wbtip.py プロジェクト: prateekj117/GlobaLeaks
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]
コード例 #6
0
ファイル: wbtip.py プロジェクト: chojar/GlobaLeaks
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
コード例 #7
0
ファイル: wbtip.py プロジェクト: chojar/GlobaLeaks
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]
コード例 #8
0
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)]
コード例 #9
0
    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)
コード例 #10
0
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]
コード例 #11
0
ファイル: wbtip.py プロジェクト: code4romania/GlobaLeaks
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]
コード例 #12
0
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)
コード例 #13
0
ファイル: wbtip.py プロジェクト: code4romania/GlobaLeaks
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)
コード例 #14
0
ファイル: wbtip.py プロジェクト: vondrakk/GlobaLeaks
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)
コード例 #15
0
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)
コード例 #16
0
    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]
コード例 #17
0
    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]
コード例 #18
0
ファイル: wbtip.py プロジェクト: nyimbi/GlobaLeaks
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
コード例 #19
0
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])
コード例 #20
0
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])
コード例 #21
0
ファイル: wbtip.py プロジェクト: corvolino/GlobaLeaks
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
コード例 #22
0
    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))
コード例 #23
0
ファイル: notification.py プロジェクト: chojar/GlobaLeaks
    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]
コード例 #24
0
    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))