Skip to content
Snippets Groups Projects
Commit 6f21cf1a authored by inso's avatar inso
Browse files

Fix missing signature when certifying

parent 1b4dcebb
No related branches found
No related tags found
No related merge requests found
import attr
import asyncio
from duniterpy.api import bma, errors
from duniterpy.documents import BlockUID
from duniterpy.documents import block_uid
from ..connectors import BmaConnector
from ..processors import NodesProcessor
from ..entities import Certification, Identity
......
......@@ -80,6 +80,7 @@ class CertificationController(QObject):
"""
dialog = cls.create(parent, app)
dialog.view.combo_pubkey.setCurrentText(connection.title())
dialog.user_information.change_identity(identity)
dialog.refresh()
return await dialog.async_exec()
......@@ -125,7 +126,8 @@ class CertificationController(QObject):
QApplication.restoreOverrideCursor()
self.view.button_box.setEnabled(True)
def reject(self):
@asyncify
async def reject(self):
self.view.reject()
def refresh(self):
......
......@@ -71,6 +71,7 @@ class TransferController(QObject):
async def send_money_to_identity(cls, parent, app, connection, identity):
dialog = cls.create(parent, app)
dialog.view.combo_connections.setCurrentText(connection.title())
dialog.user_information.change_identity(identity)
dialog.view.edit_pubkey.setText(identity.pubkey)
dialog.view.radio_pubkey.setChecked(True)
......
......@@ -34,7 +34,7 @@ class ToolbarModel(QObject):
version_url = ""
if not latest[0]:
version_info = "Latest release : {version}" \
.format(version='.'.join(latest[1]))
.format(version=latest[1])
version_url = latest[2]
new_version_text = """
......
......@@ -62,12 +62,11 @@ class BaseGraphController(QObject):
"""
raise NotImplementedError("refresh not implemented")
def node_context_menu(self, pubkey):
def node_context_menu(self, identity):
"""
Open the node context menu
:param str pubkey: the pubkey of the node to open
:param sakia.data.entities.Identity identity: the identity of the node to open
"""
identity = self.model.get_identity(pubkey)
menu = ContextMenu.from_data(self.view, self.model.app, self.model.connection, (identity,))
menu.view_identity_in_wot.connect(self.draw_graph)
......
......@@ -66,5 +66,5 @@ class BaseNode(QGraphicsEllipseItem):
:param event: scene context menu event
"""
self.scene().node_context_menu_requested.emit(self.id)
self.scene().node_context_menu_requested.emit(self.metadata['identity'])
from sakia.data.entities import Identity
from PyQt5.QtCore import pyqtSignal
from PyQt5.QtWidgets import QGraphicsScene, QGraphicsSceneContextMenuEvent
class BaseScene(QGraphicsScene):
# This defines signals taking string arguments
node_context_menu_requested = pyqtSignal(str)
node_context_menu_requested = pyqtSignal(Identity)
node_hovered = pyqtSignal(str)
node_clicked = pyqtSignal(str, dict)
......
......@@ -134,7 +134,6 @@ class ContextMenu(QObject):
@asyncify
async def send_money(self, identity):
await TransferController.send_money_to_identity(None, self._app, self._connection, identity)
self._app.refresh_transfers.emit()
def view_wot(self, identity):
self.view_identity_in_wot.emit(identity)
......
import asyncio
import attr
import logging
import jsonschema
from collections import Counter
from duniterpy.key import SigningKey
from duniterpy import PROTOCOL_VERSION
from duniterpy.documents import BlockUID, Block, Certification, Membership, Revocation, InputSource, \
OutputSource, SIGParameter, Unlock
OutputSource, SIGParameter, Unlock, block_uid
from duniterpy.documents import Identity as IdentityDoc
from duniterpy.documents import Transaction as TransactionDoc
from duniterpy.documents.transaction import reduce_base
......@@ -142,6 +140,15 @@ class DocumentsService:
"""
self._logger.debug("Certdata")
blockUID = self._blockchain_processor.current_buid(connection.currency)
if not identity.signature:
lookup_data = await self._bma_connector.get(connection.currency, bma.wot.lookup,
req_args={'search': identity.pubkey})
for uid_data in next(data["uids"] for data in lookup_data["results"] if data["pubkey"] == identity.pubkey):
if uid_data["uid"] == identity.uid and block_uid(uid_data["meta"]["timestamp"]) == identity.blockstamp:
identity.signature = uid_data["self"]
break
else:
return False, "Could not find certified identity signature"
certification = Certification(10, connection.currency,
connection.pubkey, identity.pubkey, blockUID, None)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment