mirror of https://gitlab.com/bashrc2/epicyon
Create qrcode for lxmf address
parent
2235ab7a78
commit
8bd9f99cfd
|
|
@ -1971,19 +1971,24 @@ def _profile_post_tox_address(fields: {}, actor_json: {},
|
||||||
return actor_changed
|
return actor_changed
|
||||||
|
|
||||||
|
|
||||||
def _profile_post_lxmf_address(fields: {}, actor_json: {},
|
def _profile_post_lxmf_address(base_dir: str, nickname: str, domain: str,
|
||||||
|
fields: {}, actor_json: {},
|
||||||
actor_changed: bool) -> bool:
|
actor_changed: bool) -> bool:
|
||||||
""" HTTP POST change LXMF address
|
""" HTTP POST change LXMF address
|
||||||
"""
|
"""
|
||||||
|
qrcode_scale = 6
|
||||||
current_lxmf_address = get_lxmf_address(actor_json)
|
current_lxmf_address = get_lxmf_address(actor_json)
|
||||||
if fields.get('lxmfAddress'):
|
if fields.get('lxmfAddress'):
|
||||||
if fields['lxmfAddress'] != current_lxmf_address:
|
if fields['lxmfAddress'] != current_lxmf_address:
|
||||||
set_lxmf_address(actor_json,
|
set_lxmf_address(base_dir, nickname, domain,
|
||||||
fields['lxmfAddress'])
|
actor_json,
|
||||||
|
fields['lxmfAddress'],
|
||||||
|
qrcode_scale)
|
||||||
actor_changed = True
|
actor_changed = True
|
||||||
else:
|
else:
|
||||||
if current_lxmf_address:
|
if current_lxmf_address:
|
||||||
set_lxmf_address(actor_json, '')
|
set_lxmf_address(base_dir, nickname, domain,
|
||||||
|
actor_json, '', qrcode_scale)
|
||||||
actor_changed = True
|
actor_changed = True
|
||||||
return actor_changed
|
return actor_changed
|
||||||
|
|
||||||
|
|
@ -3223,7 +3228,8 @@ def profile_edit(self, calling_domain: str, cookie: str,
|
||||||
actor_changed)
|
actor_changed)
|
||||||
|
|
||||||
actor_changed = \
|
actor_changed = \
|
||||||
_profile_post_lxmf_address(fields, actor_json,
|
_profile_post_lxmf_address(base_dir, nickname, domain,
|
||||||
|
fields, actor_json,
|
||||||
actor_changed)
|
actor_changed)
|
||||||
|
|
||||||
actor_changed = \
|
actor_changed = \
|
||||||
|
|
|
||||||
48
lxmf.py
48
lxmf.py
|
|
@ -8,7 +8,11 @@ __status__ = "Production"
|
||||||
__module_group__ = "Profile Metadata"
|
__module_group__ = "Profile Metadata"
|
||||||
|
|
||||||
|
|
||||||
|
import os
|
||||||
|
import pyqrcode
|
||||||
from utils import get_attachment_property_value
|
from utils import get_attachment_property_value
|
||||||
|
from utils import acct_dir
|
||||||
|
from utils import load_json
|
||||||
|
|
||||||
VALID_LXMF_CHARS = set('0123456789abcdefghijklmnopqrstuvwxyz')
|
VALID_LXMF_CHARS = set('0123456789abcdefghijklmnopqrstuvwxyz')
|
||||||
|
|
||||||
|
|
@ -25,6 +29,34 @@ def _is_valid_lxmf_address(lxmf_address: str) -> bool:
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
def _save_lxmf_qrcode(base_dir: str,
|
||||||
|
nickname: str, domain: str,
|
||||||
|
scale: int = 6) -> bool:
|
||||||
|
"""Saves a qrcode image for the handle of the person
|
||||||
|
This helps to transfer onion or i2p handles to a mobile device
|
||||||
|
"""
|
||||||
|
qrcode_filename = acct_dir(base_dir, nickname, domain) + '/qrcode_lxmf.png'
|
||||||
|
if os.path.isfile(qrcode_filename):
|
||||||
|
return False
|
||||||
|
actor_filename = \
|
||||||
|
acct_dir(base_dir, nickname, domain) + '.json'
|
||||||
|
if not os.path.isfile(actor_filename):
|
||||||
|
return False
|
||||||
|
actor_json = load_json(actor_filename)
|
||||||
|
if not actor_json:
|
||||||
|
return False
|
||||||
|
lxmf_address = get_lxmf_address(actor_json)
|
||||||
|
if not lxmf_address:
|
||||||
|
return False
|
||||||
|
url = pyqrcode.create(lxmf_address)
|
||||||
|
try:
|
||||||
|
url.png(qrcode_filename, scale)
|
||||||
|
return True
|
||||||
|
except ModuleNotFoundError:
|
||||||
|
print('EX: save_lxmf_qrcode pyqrcode png module not found')
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
def get_lxmf_address(actor_json: {}) -> str:
|
def get_lxmf_address(actor_json: {}) -> str:
|
||||||
"""Returns lxmf address for the given actor
|
"""Returns lxmf address for the given actor
|
||||||
"""
|
"""
|
||||||
|
|
@ -67,9 +99,20 @@ def get_lxmf_address(actor_json: {}) -> str:
|
||||||
return ''
|
return ''
|
||||||
|
|
||||||
|
|
||||||
def set_lxmf_address(actor_json: {}, lxmf_address: str) -> None:
|
def set_lxmf_address(base_dir: str, nickname: str, domain: str,
|
||||||
|
actor_json: {}, lxmf_address: str,
|
||||||
|
qrcode_scale: int) -> None:
|
||||||
"""Sets an lxmf address for the given actor
|
"""Sets an lxmf address for the given actor
|
||||||
"""
|
"""
|
||||||
|
if not lxmf_address:
|
||||||
|
qrcode_filename = \
|
||||||
|
acct_dir(base_dir, nickname, domain) + '/qrcode_lxmf.png'
|
||||||
|
if os.path.isfile(qrcode_filename):
|
||||||
|
try:
|
||||||
|
os.remove(qrcode_filename)
|
||||||
|
except OSError:
|
||||||
|
print('EX: cannot remove lxmf qrcode ' + qrcode_filename)
|
||||||
|
|
||||||
lxmf_address = lxmf_address.strip()
|
lxmf_address = lxmf_address.strip()
|
||||||
|
|
||||||
# remove any prefix
|
# remove any prefix
|
||||||
|
|
@ -137,3 +180,6 @@ def set_lxmf_address(actor_json: {}, lxmf_address: str) -> None:
|
||||||
"value": lxmf_address
|
"value": lxmf_address
|
||||||
}
|
}
|
||||||
actor_json['attachment'].append(new_lxmf_address)
|
actor_json['attachment'].append(new_lxmf_address)
|
||||||
|
_save_lxmf_qrcode(base_dir,
|
||||||
|
nickname, domain,
|
||||||
|
qrcode_scale)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue