Host-customized fork of https://github.com/tecnovert/basicswap/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
136 lines
5.5 KiB
136 lines
5.5 KiB
# -*- coding: utf-8 -*- |
|
|
|
# Copyright (c) 2023 tecnovert |
|
# Distributed under the MIT software license, see the accompanying |
|
# file LICENSE or http://www.opensource.org/licenses/mit-license.php. |
|
|
|
|
|
from .util import ( |
|
PAGE_LIMIT, |
|
get_data_entry, |
|
have_data_entry, |
|
get_data_entry_or, |
|
validateTextInput, |
|
set_pagination_filters, |
|
) |
|
from basicswap.util import ( |
|
ensure, |
|
) |
|
from basicswap.basicswap_util import ( |
|
AddressTypes, |
|
strAddressType, |
|
) |
|
|
|
|
|
def page_smsgaddresses(self, url_split, post_string): |
|
swap_client = self.server.swap_client |
|
swap_client.checkSystemStatus() |
|
summary = swap_client.getSummary() |
|
|
|
filters = { |
|
'page_no': 1, |
|
'limit': PAGE_LIMIT, |
|
'sort_by': 'created_at', |
|
'sort_dir': 'desc', |
|
'addr_type': -1, |
|
} |
|
|
|
page_data = {} |
|
messages = [] |
|
err_messages = [] |
|
smsgaddresses = [] |
|
|
|
listaddresses = True |
|
form_data = self.checkForm(post_string, 'smsgaddresses', err_messages) |
|
if form_data: |
|
edit_address_id = None |
|
for key in form_data: |
|
if key.startswith(b'editaddr_'): |
|
edit_address_id = int(key.split(b'_')[1]) |
|
break |
|
if edit_address_id is not None: |
|
listaddresses = False |
|
page_data['edit_address'] = edit_address_id |
|
page_data['addr_data'] = swap_client.listAllSMSGAddresses({'addr_id': edit_address_id})[0] |
|
elif have_data_entry(form_data, 'saveaddr'): |
|
edit_address_id = int(get_data_entry(form_data, 'edit_address_id')) |
|
edit_addr = get_data_entry(form_data, 'edit_address') |
|
active_ind = int(get_data_entry(form_data, 'active_ind')) |
|
ensure(active_ind in (0, 1), 'Invalid sort by') |
|
addressnote = get_data_entry_or(form_data, 'addressnote', '') |
|
if not validateTextInput(addressnote, 'Address note', err_messages, max_length=30): |
|
listaddresses = False |
|
page_data['edit_address'] = edit_address_id |
|
else: |
|
swap_client.editSMSGAddress(edit_addr, active_ind=active_ind, addressnote=addressnote) |
|
messages.append(f'Edited address {edit_addr}') |
|
elif have_data_entry(form_data, 'shownewaddr'): |
|
listaddresses = False |
|
page_data['new_address'] = True |
|
elif have_data_entry(form_data, 'showaddaddr'): |
|
listaddresses = False |
|
page_data['new_send_address'] = True |
|
elif have_data_entry(form_data, 'createnewaddr'): |
|
addressnote = get_data_entry_or(form_data, 'addressnote', '') |
|
if not validateTextInput(addressnote, 'Address note', err_messages, max_length=30): |
|
listaddresses = False |
|
page_data['new_address'] = True |
|
else: |
|
new_addr, pubkey = swap_client.newSMSGAddress(addressnote=addressnote) |
|
messages.append(f'Created address {new_addr}, pubkey {pubkey}') |
|
elif have_data_entry(form_data, 'createnewsendaddr'): |
|
pubkey_hex = get_data_entry(form_data, 'addresspubkey') |
|
addressnote = get_data_entry_or(form_data, 'addressnote', '') |
|
if not validateTextInput(addressnote, 'Address note', messages, max_length=30) or \ |
|
not validateTextInput(pubkey_hex, 'Pubkey', messages, max_length=66): |
|
listaddresses = False |
|
page_data['new_send_address'] = True |
|
else: |
|
new_addr = swap_client.addSMSGAddress(pubkey_hex, addressnote=addressnote) |
|
messages.append(f'Added address {new_addr}') |
|
|
|
if have_data_entry(form_data, 'clearfilters'): |
|
swap_client.clearFilters('page_smsgaddresses') |
|
else: |
|
if have_data_entry(form_data, 'sort_by'): |
|
sort_by = get_data_entry(form_data, 'sort_by') |
|
ensure(sort_by in ['created_at', 'rate'], 'Invalid sort by') |
|
filters['sort_by'] = sort_by |
|
if have_data_entry(form_data, 'sort_dir'): |
|
sort_dir = get_data_entry(form_data, 'sort_dir') |
|
ensure(sort_dir in ['asc', 'desc'], 'Invalid sort dir') |
|
filters['sort_dir'] = sort_dir |
|
if have_data_entry(form_data, 'filter_addressnote'): |
|
addressnote = get_data_entry(form_data, 'filter_addressnote') |
|
if validateTextInput(addressnote, 'Address note', err_messages, max_length=30): |
|
filters['addressnote'] = addressnote |
|
if have_data_entry(form_data, 'filter_addr_type'): |
|
filters['addr_type'] = int(get_data_entry(form_data, 'filter_addr_type')) |
|
|
|
set_pagination_filters(form_data, filters) |
|
if have_data_entry(form_data, 'applyfilters'): |
|
swap_client.setFilters('page_smsgaddresses', filters) |
|
else: |
|
saved_filters = swap_client.getFilters('page_smsgaddresses') |
|
if saved_filters: |
|
filters.update(saved_filters) |
|
|
|
if listaddresses is True: |
|
smsgaddresses = swap_client.listAllSMSGAddresses(filters) |
|
|
|
page_data['addr_types'] = [(int(t), strAddressType(t)) for t in AddressTypes] |
|
page_data['network_addr'] = swap_client.network_addr |
|
|
|
for addr in smsgaddresses: |
|
addr['type'] = strAddressType(addr['type']) |
|
|
|
template = self.server.env.get_template('smsgaddresses.html') |
|
return self.render_template(template, { |
|
'messages': messages, |
|
'err_messages': err_messages, |
|
'filters': filters, |
|
'data': page_data, |
|
'smsgaddresses': smsgaddresses, |
|
'page_data': page_data, |
|
'summary': summary, |
|
})
|
|
|