Skip to content
Snippets Groups Projects
Commit 02fe59d6 authored by inso's avatar inso
Browse files

Fix issue #585

parent d920eb00
Branches
Tags
No related merge requests found
...@@ -51,6 +51,7 @@ class Application(QObject): ...@@ -51,6 +51,7 @@ class Application(QObject):
referential_changed = pyqtSignal() referential_changed = pyqtSignal()
sources_refreshed = pyqtSignal() sources_refreshed = pyqtSignal()
new_blocks_handled = pyqtSignal() new_blocks_handled = pyqtSignal()
view_in_wot = pyqtSignal(Connection, Identity)
qapp = attr.ib() qapp = attr.ib()
loop = attr.ib() loop = attr.ib()
......
...@@ -62,8 +62,18 @@ class NavigationController(QObject): ...@@ -62,8 +62,18 @@ class NavigationController(QObject):
model.setParent(navigation) model.setParent(navigation)
navigation.init_navigation() navigation.init_navigation()
app.new_connection.connect(navigation.add_connection) app.new_connection.connect(navigation.add_connection)
app.view_in_wot.connect(navigation.view_in_wot)
return navigation return navigation
def view_in_wot(self, connection, _):
raw_data = self.model.get_raw_data('Wot', connection=connection)
if raw_data:
widget = raw_data['widget']
if self.view.stacked_widget.indexOf(widget) != -1:
self.view.stacked_widget.setCurrentWidget(widget)
self.view.current_view_changed.emit(raw_data)
return
def parse_node(self, node_data): def parse_node(self, node_data):
if 'component' in node_data: if 'component' in node_data:
component_class = self.components[node_data['component']] component_class = self.components[node_data['component']]
......
...@@ -39,6 +39,7 @@ class WotController(BaseGraphController): ...@@ -39,6 +39,7 @@ class WotController(BaseGraphController):
search_user = SearchUserController.create(wot, app) search_user = SearchUserController.create(wot, app)
wot.view.set_search_user(search_user.view) wot.view.set_search_user(search_user.view)
app.identity_changed.connect(wot.handle_identity_change) app.identity_changed.connect(wot.handle_identity_change)
app.view_in_wot.connect(lambda c, i: wot.center_on_identity(i) if c == connection else None)
search_user.identity_selected.connect(wot.center_on_identity) search_user.identity_selected.connect(wot.center_on_identity)
search_user.view.button_reset.clicked.connect(wot.reset) search_user.view.button_reset.clicked.connect(wot.reset)
return wot return wot
......
...@@ -5,6 +5,7 @@ from PyQt5.QtCore import QObject, pyqtSignal ...@@ -5,6 +5,7 @@ from PyQt5.QtCore import QObject, pyqtSignal
from sakia.errors import NoPeerAvailable from sakia.errors import NoPeerAvailable
from duniterpy.api import errors from duniterpy.api import errors
from sakia.data.entities import Identity
from sakia.decorators import once_at_a_time, asyncify from sakia.decorators import once_at_a_time, asyncify
from sakia.gui.widgets.context_menu import ContextMenu from sakia.gui.widgets.context_menu import ContextMenu
from .model import IdentitiesModel from .model import IdentitiesModel
...@@ -15,7 +16,7 @@ class IdentitiesController(QObject): ...@@ -15,7 +16,7 @@ class IdentitiesController(QObject):
""" """
The navigation panel The navigation panel
""" """
view_in_wot = pyqtSignal(object) view_in_wot = pyqtSignal(Identity)
def __init__(self, parent, view, model, password_asker=None): def __init__(self, parent, view, model, password_asker=None):
""" """
...@@ -40,6 +41,7 @@ class IdentitiesController(QObject): ...@@ -40,6 +41,7 @@ class IdentitiesController(QObject):
model = IdentitiesModel(None, app, connection, blockchain_service, identities_service) model = IdentitiesModel(None, app, connection, blockchain_service, identities_service)
identities = cls(parent, view, model) identities = cls(parent, view, model)
model.setParent(identities) model.setParent(identities)
identities.view_in_wot.connect(lambda i: app.view_in_wot.emit(connection, i))
return identities return identities
def identity_context_menu(self, point): def identity_context_menu(self, point):
......
...@@ -115,6 +115,20 @@ class NavigationModel(QObject): ...@@ -115,6 +115,20 @@ class NavigationModel(QObject):
def current_data(self, key): def current_data(self, key):
return self._current_data.get(key, None) return self._current_data.get(key, None)
def _lookup_raw_data(self, raw_data, component, **kwargs):
if raw_data['component'] == component:
for k in kwargs:
if raw_data['misc'].get(k, None) == kwargs[k]:
return raw_data
for c in raw_data.get('children', []):
children_data = self._lookup_raw_data(c, component, **kwargs)
if children_data:
return children_data
def get_raw_data(self, component, **kwargs):
for data in self.navigation:
return self._lookup_raw_data(data, component, **kwargs)
def current_connection(self): def current_connection(self):
if self._current_data: if self._current_data:
return self._current_data['misc'].get('connection', None) return self._current_data['misc'].get('connection', None)
......
...@@ -42,6 +42,7 @@ class TxHistoryController(QObject): ...@@ -42,6 +42,7 @@ class TxHistoryController(QObject):
model.setParent(txhistory) model.setParent(txhistory)
app.referential_changed.connect(txhistory.refresh_balance) app.referential_changed.connect(txhistory.refresh_balance)
app.sources_refreshed.connect(txhistory.refresh_balance) app.sources_refreshed.connect(txhistory.refresh_balance)
txhistory.view_in_wot.connect(lambda i: app.view_in_wot.emit(connection, i))
return txhistory return txhistory
def refresh_minimum_maximum(self): def refresh_minimum_maximum(self):
......
...@@ -372,7 +372,8 @@ class IdentitiesService(QObject): ...@@ -372,7 +372,8 @@ class IdentitiesService(QObject):
try: try:
requirements = await self._bma_connector.get(self.currency, bma.wot.requirements, requirements = await self._bma_connector.get(self.currency, bma.wot.requirements,
req_args={'search': identity.pubkey}) req_args={'search': identity.pubkey})
identity_data = requirements['identities'][0] for identity_data in requirements['identities']:
if not identity.uid or identity.uid == identity_data["uid"]:
identity.uid = identity_data["uid"] identity.uid = identity_data["uid"]
identity.blockstamp = block_uid(identity_data["meta"]["timestamp"]) identity.blockstamp = block_uid(identity_data["meta"]["timestamp"])
identity.timestamp = await self._blockchain_processor.timestamp(self.currency, identity.blockstamp.number) identity.timestamp = await self._blockchain_processor.timestamp(self.currency, identity.blockstamp.number)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment