Example #1
0
 def _serialize(self, obj):
     event = Events.get(obj.get('event'))
     params = {
         'actor': self.resolve(Role, obj.get('actor_id'), RoleSerializer)
     }
     for name, clazz in event.params.items():
         key = obj.get('params', {}).get(name)
         serializer = self.SERIALIZERS.get(clazz)
         params[name] = self.resolve(clazz, key, serializer)
     obj['params'] = params
     obj['event'] = event.to_dict()
     return obj
Example #2
0
 def _serialize(self, obj):
     event = Events.get(obj.get("event"))
     if event is None:
         return None
     params = {"actor": self.resolve(Role, obj.get("actor_id"), RoleSerializer)}
     for name, clazz in event.params.items():
         key = obj.get("params", {}).get(name)
         serializer = self.SERIALIZERS.get(clazz)
         params[name] = self.resolve(clazz, key, serializer)
     obj["params"] = params
     obj["event"] = event.to_dict()
     return obj
Example #3
0
def render_notification(stub, notification):
    """Generate a text version of the notification, suitable for use
    in an email or text message."""
    from aleph.logic import resolver

    notification = unpack_result(notification)
    event = Events.get(notification.get("event"))
    if event is None:
        return

    for name, clazz, value in _iter_params(notification, event):
        resolver.queue(stub, clazz, value)
    resolver.resolve(stub)
    plain = str(event.template)
    html = str(event.template)
    for name, clazz, value in _iter_params(notification, event):
        data = resolver.get(stub, clazz, value)
        if data is None:
            return
        link, title = None, None
        if clazz == Role:
            title = data.get("label")
        elif clazz == Alert:
            title = data.get("query")
        elif clazz == Collection:
            title = data.get("label")
            link = collection_url(value)
        elif clazz == Entity:
            proxy = model.get_proxy(data)
            title = proxy.caption
            link = entity_url(value)
        elif clazz == EntitySet:
            title = data.label
            link = entityset_url(data.id)
        elif clazz == Export:
            title = data.get("label")
            link = archive_url(
                data.get("content_hash"),
                file_name=data.get("file_name"),
                mime_type=data.get("file_name"),
            )
            link = url_for("exports_api.download", export_id=data.get("id"))

        template = "{{%s}}" % name
        html = html.replace(template, html_link(title, link))
        plain = plain.replace(template, "'%s'" % title)
        if name == event.link_to:
            plain = "%s (%s)" % (plain, link)
    return {"plain": plain, "html": html}
Example #4
0
def render_notification(stub, notification):
    """Generate a text version of the notification, suitable for use
    in an email or text message."""
    from aleph.logic import resolver
    notification = unpack_result(notification)
    event = Events.get(notification.get('event'))
    if event is None:
        return

    for name, clazz, value in _iter_params(notification, event):
        resolver.queue(stub, clazz, value)
    resolver.resolve(stub)
    plain = str(event.template)
    html = str(event.template)
    for name, clazz, value in _iter_params(notification, event):
        data = resolver.get(stub, clazz, value)
        if data is None:
            return
        link, title = None, None
        if clazz == Role:
            title = data.get('label')
        elif clazz == Alert:
            title = data.get('query')
        elif clazz == Collection:
            title = data.get('label')
            link = collection_url(value)
        elif clazz == Entity:
            proxy = model.get_proxy(data)
            title = proxy.caption
            link = entity_url(value)
        elif clazz == Diagram:
            title = data.label
            link = diagram_url(data.id)

        template = '{{%s}}' % name
        html = html.replace(template, html_link(title, link))
        plain = plain.replace(template, "'%s'" % title)
        if name == event.link_to:
            plain = '%s (%s)' % (plain, link)
    return {'plain': plain, 'html': html}
Example #5
0
 def _collect(self, obj):
     self.queue(Role, obj.get('actor_id'))
     event = Events.get(obj.get('event'))
     for name, clazz in event.params.items():
         key = obj.get('params', {}).get(name)
         self.queue(clazz, key, Entity.THING)
Example #6
0
 def update(self, result, key):
     event = Events.get(key)
     result["label"] = key if event is None else event.title