mirror of https://github.com/CIRCL/AIL-framework
chg: [message image] show qrcodes extracted
parent
d91e14f200
commit
c8b1c67a08
|
@ -23,6 +23,7 @@ from lib.objects import Chats
|
|||
from lib.objects import ChatSubChannels
|
||||
from lib.objects import ChatThreads
|
||||
from lib.objects import Messages
|
||||
from lib.objects.QrCodes import Qrcode
|
||||
from lib.objects import UsersAccount
|
||||
from lib.objects import Usernames
|
||||
from lib import Language
|
||||
|
@ -418,7 +419,7 @@ def get_nb_messages_iterator(filters={}):
|
|||
nb_messages += chat.get_nb_messages()
|
||||
return nb_messages
|
||||
|
||||
def get_chat_object_messages_forward_meta(c_messages):
|
||||
def get_chat_object_messages_meta(c_messages):
|
||||
temp_chats = {}
|
||||
for date in c_messages:
|
||||
for meta in c_messages[date]:
|
||||
|
@ -428,6 +429,12 @@ def get_chat_object_messages_forward_meta(c_messages):
|
|||
temp_chats[meta['forwarded_from']] = chat.get_meta({'icon'})
|
||||
else:
|
||||
meta['forwarded_from'] = temp_chats[meta['forwarded_from']]
|
||||
if meta['qrcodes']:
|
||||
qrcodes = []
|
||||
for q in meta['qrcodes']:
|
||||
qr = Qrcode(q)
|
||||
qrcodes.append({'id': qr.id, 'content': qr.get_content(), 'tags': qr.get_tags()})
|
||||
meta['qrcodes'] = qrcodes
|
||||
return c_messages
|
||||
|
||||
def get_user_account_chats_meta(user_id, chats, subchannels):
|
||||
|
@ -754,7 +761,7 @@ def api_get_chat(chat_id, chat_instance_uuid, translation_target=None, nb=-1, pa
|
|||
translation_target = None
|
||||
if messages:
|
||||
meta['messages'], meta['pagination'], meta['tags_messages'] = chat.get_messages(translation_target=translation_target, nb=nb, page=page)
|
||||
meta['messages'] = get_chat_object_messages_forward_meta(meta['messages'])
|
||||
meta['messages'] = get_chat_object_messages_meta(meta['messages'])
|
||||
return meta, 200
|
||||
|
||||
def api_get_nb_message_by_week(chat_type, chat_instance_uuid, chat_id):
|
||||
|
@ -800,7 +807,7 @@ def api_get_subchannel(chat_id, chat_instance_uuid, translation_target=None, nb=
|
|||
if meta.get('username'):
|
||||
meta['username'] = get_username_meta_from_global_id(meta['username'])
|
||||
meta['messages'], meta['pagination'], meta['tags_messages'] = subchannel.get_messages(translation_target=translation_target, nb=nb, page=page)
|
||||
meta['messages'] = get_chat_object_messages_forward_meta(meta['messages'])
|
||||
meta['messages'] = get_chat_object_messages_meta(meta['messages'])
|
||||
return meta, 200
|
||||
|
||||
def api_get_thread(thread_id, thread_instance_uuid, translation_target=None, nb=-1, page=-1):
|
||||
|
@ -812,17 +819,22 @@ def api_get_thread(thread_id, thread_instance_uuid, translation_target=None, nb=
|
|||
# if meta['chat']:
|
||||
# meta['chat'] = get_chat_meta_from_global_id(meta['chat'])
|
||||
meta['messages'], meta['pagination'], meta['tags_messages'] = thread.get_messages(translation_target=translation_target, nb=nb, page=page)
|
||||
meta['messages'] = get_chat_object_messages_forward_meta(meta['messages'])
|
||||
meta['messages'] = get_chat_object_messages_meta(meta['messages'])
|
||||
return meta, 200
|
||||
|
||||
def api_get_message(message_id, translation_target=None):
|
||||
message = Messages.Message(message_id)
|
||||
if not message.exists():
|
||||
return {"status": "error", "reason": "Unknown uuid"}, 404
|
||||
meta = message.get_meta({'chat', 'content', 'files-names', 'forwarded_from', 'icon', 'images', 'language', 'link', 'parent', 'parent_meta', 'reactions', 'thread', 'translation', 'user-account'}, translation_target=translation_target)
|
||||
meta = message.get_meta({'chat', 'content', 'files-names', 'forwarded_from', 'icon', 'images', 'language', 'link', 'parent', 'parent_meta', 'qrcodes', 'reactions', 'thread', 'translation', 'user-account'}, translation_target=translation_target)
|
||||
if 'forwarded_from' in meta:
|
||||
chat = get_obj_chat_from_global_id(meta['forwarded_from'])
|
||||
meta['forwarded_from'] = chat.get_meta({'icon'})
|
||||
qrcodes = []
|
||||
for q in meta['qrcodes']:
|
||||
qr = Qrcode(q)
|
||||
qrcodes.append({'id': qr.id, 'content': qr.get_content(), 'tags': qr.get_tags()})
|
||||
meta['qrcodes'] = qrcodes
|
||||
return meta, 200
|
||||
|
||||
def api_message_detect_language(message_id):
|
||||
|
|
|
@ -151,6 +151,12 @@ class Message(AbstractObject):
|
|||
images.append({'id': obj_id, 'ocr': self._get_image_ocr(obj_id)})
|
||||
return images
|
||||
|
||||
def get_qrcodes(self):
|
||||
qrcodes = []
|
||||
for c in self.get_correlation('qrcode').get('qrcode', []):
|
||||
qrcodes.append(c[1:])
|
||||
return qrcodes
|
||||
|
||||
def get_user_account(self, meta=False):
|
||||
user_account = self.get_correlation('user-account')
|
||||
if user_account.get('user-account'):
|
||||
|
@ -300,6 +306,8 @@ class Message(AbstractObject):
|
|||
meta['thread'] = thread
|
||||
if 'images' in options:
|
||||
meta['images'] = self.get_images()
|
||||
if 'qrcodes' in options:
|
||||
meta['qrcodes'] = self.get_qrcodes()
|
||||
if 'files-names' in options:
|
||||
meta['files-names'] = self.get_files_names()
|
||||
if 'reactions' in options:
|
||||
|
|
|
@ -226,7 +226,7 @@ class AbstractChatObject(AbstractSubtypeObject, ABC):
|
|||
def get_message_meta(self, message, timestamp=None, translation_target='', options=None): # TODO handle file message
|
||||
message = Messages.Message(message[9:])
|
||||
if not options:
|
||||
options = {'content', 'files-names', 'forwarded_from', 'images', 'language', 'link', 'parent', 'parent_meta', 'reactions', 'thread', 'translation', 'user-account'}
|
||||
options = {'content', 'files-names', 'forwarded_from', 'images', 'language', 'link', 'parent', 'parent_meta', 'qrcodes', 'reactions', 'thread', 'translation', 'user-account'}
|
||||
meta = message.get_meta(options=options, timestamp=timestamp, translation_target=translation_target)
|
||||
return meta
|
||||
|
||||
|
|
|
@ -80,7 +80,7 @@ def objects_qrcodes_range_json():
|
|||
return jsonify(QrCodes.Qrcodes().api_get_chart_nb_by_daterange(date_from, date_to))
|
||||
|
||||
|
||||
@objects_qrcode.route("/objects/qrcodes", methods=['GET'])
|
||||
@objects_qrcode.route("/objects/qrcode", methods=['GET'])
|
||||
@login_required
|
||||
@login_read_only
|
||||
def object_qrcode():
|
||||
|
@ -90,11 +90,9 @@ def object_qrcode():
|
|||
return create_json_response(meta[0], meta[1])
|
||||
else:
|
||||
meta = meta[0]
|
||||
languages = Language.get_translation_languages()
|
||||
return render_template("ShowQrcode.html", meta=meta,
|
||||
bootstrap_label=bootstrap_label,
|
||||
ail_tags=Tag.get_modal_add_tags(meta['id'], meta['type'], meta['subtype']),
|
||||
translation_languages=languages, translation_target=target)
|
||||
ail_tags=Tag.get_modal_add_tags(meta['id'], meta['type'], meta['subtype']))
|
||||
|
||||
|
||||
# ============= ROUTES ==============
|
||||
|
|
|
@ -97,6 +97,21 @@
|
|||
<a class="btn btn-info" target="_blank" href="{{ url_for('objects_ocr.object_ocr', id=message_image['id'])}}"><i class="fas fa-expand"></i> OCR</a>
|
||||
</span>
|
||||
{% endif %}
|
||||
{% if message['qrcodes'] %}
|
||||
{% for qrcode in message['qrcodes'] %}
|
||||
<span>
|
||||
<a class="btn btn-info" target="_blank" href="{{ url_for('correlation.show_correlation', type='qrcode', id=qrcode['id'])}}" style="max-width: 49%">
|
||||
<i class="fas fa-qrcode fa-lg"></i> {{ qrcode['content'] }}
|
||||
<div>
|
||||
{% for tag in qrcode['tags'] %}
|
||||
<span class="badge badge-{{ bootstrap_label[loop.index0 % 5] }}">{{ tag }}</span>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</a>
|
||||
</span>
|
||||
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% if message['files-names'] %}
|
||||
|
|
|
@ -15,7 +15,8 @@
|
|||
|
||||
<div class="card my-1">
|
||||
<div class="card-header">
|
||||
<h4 class="text-secondary">{{ meta["id"] }} :</h4>
|
||||
<small>{{ meta["id"] }} :</small>
|
||||
<div class="py-1 my-1 bg-white">{{ meta["content"] }}</div>
|
||||
<ul class="list-group mb-2">
|
||||
<li class="list-group-item py-0">
|
||||
<table class="table">
|
||||
|
|
Loading…
Reference in New Issue