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

Fix connection remove cleaning

parent 48b54df3
Branches
Tags
No related merge requests found
...@@ -107,7 +107,7 @@ class Application(QObject): ...@@ -107,7 +107,7 @@ class Application(QObject):
nodes_processor = NodesProcessor(self.db.nodes_repo) nodes_processor = NodesProcessor(self.db.nodes_repo)
bma_connector = BmaConnector(nodes_processor, self.parameters) bma_connector = BmaConnector(nodes_processor, self.parameters)
connections_processor = ConnectionsProcessor(self.db.connections_repo) connections_processor = ConnectionsProcessor(self.db.connections_repo)
identities_processor = IdentitiesProcessor(self.db.identities_repo, self.db.blockchains_repo, bma_connector) identities_processor = IdentitiesProcessor(self.db.identities_repo, self.db.certifications_repo, self.db.blockchains_repo, bma_connector)
certs_processor = CertificationsProcessor(self.db.certifications_repo, self.db.identities_repo, bma_connector) certs_processor = CertificationsProcessor(self.db.certifications_repo, self.db.identities_repo, bma_connector)
blockchain_processor = BlockchainProcessor.instanciate(self) blockchain_processor = BlockchainProcessor.instanciate(self)
sources_processor = SourcesProcessor.instanciate(self) sources_processor = SourcesProcessor.instanciate(self)
...@@ -144,9 +144,8 @@ class Application(QObject): ...@@ -144,9 +144,8 @@ class Application(QObject):
connections_processor = ConnectionsProcessor.instanciate(self) connections_processor = ConnectionsProcessor.instanciate(self)
connections_processor.remove_connections(connection) connections_processor.remove_connections(connection)
IdentitiesProcessor.instanciate(self).cleanup_connection(connection)
CertificationsProcessor.instanciate(self).cleanup_connection(connection, connections_processor.pubkeys()) CertificationsProcessor.instanciate(self).cleanup_connection(connection, connections_processor.pubkeys())
IdentitiesProcessor.instanciate(self).cleanup_connection(connection)
SourcesProcessor.instanciate(self).drop_all_of(currency=connection.currency, pubkey=connection.pubkey) SourcesProcessor.instanciate(self).drop_all_of(currency=connection.currency, pubkey=connection.pubkey)
...@@ -154,9 +153,6 @@ class Application(QObject): ...@@ -154,9 +153,6 @@ class Application(QObject):
TransactionsProcessor.instanciate(self).cleanup_connection(connection, connections_processor.pubkeys()) TransactionsProcessor.instanciate(self).cleanup_connection(connection, connections_processor.pubkeys())
if not connections_processor.connections():
NodesProcessor.instanciate(self).drop_all(self.currency)
self.db.commit() self.db.commit()
def switch_language(self): def switch_language(self):
......
...@@ -114,24 +114,12 @@ class CertificationsProcessor: ...@@ -114,24 +114,12 @@ class CertificationsProcessor:
:param List[str] connections_pubkeys: pubkeys of existing connections :param List[str] connections_pubkeys: pubkeys of existing connections
:return: :return:
""" """
def clean_unused_identity(pubkey):
others_certs = self._certifications_repo.get_all(currency=connection.currency,
certifier=pubkey)
others_certs += self._certifications_repo.get_all(currency=connection.currency,
certified=pubkey)
if not others_certs:
idty = self._identities_repo.get_one(currency=connection.currency, pubkey=pubkey)
if idty:
self._identities_repo.drop(idty)
certifiers = self._certifications_repo.get_all(currency=connection.currency, certifier=connection.pubkey) certifiers = self._certifications_repo.get_all(currency=connection.currency, certifier=connection.pubkey)
for c in certifiers: for c in certifiers:
self._certifications_repo.drop(c)
if c.certified not in connections_pubkeys: if c.certified not in connections_pubkeys:
clean_unused_identity(c.certified) self._certifications_repo.drop(c)
certified = self._certifications_repo.get_all(currency=connection.currency, certified=connection.pubkey) certified = self._certifications_repo.get_all(currency=connection.currency, certified=connection.pubkey)
for c in certified: for c in certified:
self._certifications_repo.drop(c)
if c.certifier not in connections_pubkeys: if c.certifier not in connections_pubkeys:
clean_unused_identity(c.certifier) self._certifications_repo.drop(c)
\ No newline at end of file \ No newline at end of file
...@@ -15,7 +15,16 @@ from sakia.errors import NoPeerAvailable ...@@ -15,7 +15,16 @@ from sakia.errors import NoPeerAvailable
@attr.s @attr.s
class IdentitiesProcessor: class IdentitiesProcessor:
"""
:param _identities_repo: sakia.data.repositories.IdentitiesRepo
:param _certifications_repo: sakia.data.repositories.IdentitiesRepo
:param _blockchain_repo: sakia.data.repositories.BlockchainRepo
:param _bma_connector: sakia.data.connectors.bma.BmaConnector
:param _logger:
"""
_identities_repo = attr.ib() # :type sakia.data.repositories.IdentitiesRepo _identities_repo = attr.ib() # :type sakia.data.repositories.IdentitiesRepo
_certifications_repo = attr.ib() # :type sakia.data.repositories.IdentitiesRepo
_blockchain_repo = attr.ib() # :type sakia.data.repositories.BlockchainRepo _blockchain_repo = attr.ib() # :type sakia.data.repositories.BlockchainRepo
_bma_connector = attr.ib() # :type sakia.data.connectors.bma.BmaConnector _bma_connector = attr.ib() # :type sakia.data.connectors.bma.BmaConnector
_logger = attr.ib(default=attr.Factory(lambda: logging.getLogger('sakia'))) _logger = attr.ib(default=attr.Factory(lambda: logging.getLogger('sakia')))
...@@ -26,7 +35,7 @@ class IdentitiesProcessor: ...@@ -26,7 +35,7 @@ class IdentitiesProcessor:
Instanciate a blockchain processor Instanciate a blockchain processor
:param sakia.app.Application app: the app :param sakia.app.Application app: the app
""" """
return cls(app.db.identities_repo, app.db.blockchains_repo, return cls(app.db.identities_repo, app.db.certifications_repo, app.db.blockchains_repo,
BmaConnector(NodesProcessor(app.db.nodes_repo), app.parameters)) BmaConnector(NodesProcessor(app.db.nodes_repo), app.parameters))
async def find_from_pubkey(self, currency, pubkey): async def find_from_pubkey(self, currency, pubkey):
...@@ -240,6 +249,11 @@ class IdentitiesProcessor: ...@@ -240,6 +249,11 @@ class IdentitiesProcessor:
:param sakia.data.entities.Connectionb connection: :param sakia.data.entities.Connectionb connection:
:return: :return:
""" """
identities = self._identities_repo.get_all(currency=connection.currency, pubkey=connection.pubkey) identities = self._identities_repo.get_all(currency=connection.currency)
for idty in identities: for idty in identities:
others_certs = self._certifications_repo.get_all(currency=connection.currency,
certifier=idty.pubkey)
others_certs += self._certifications_repo.get_all(currency=connection.currency,
certified=idty.pubkey)
if not others_certs:
self._identities_repo.drop(idty) self._identities_repo.drop(idty)
...@@ -65,9 +65,7 @@ class ConnectionConfigController(QObject): ...@@ -65,9 +65,7 @@ class ConnectionConfigController(QObject):
""" """
view = ConnectionConfigView(parent.view if parent else None) view = ConnectionConfigView(parent.view if parent else None)
model = ConnectionConfigModel(None, app, None, model = ConnectionConfigModel(None, app, None,
IdentitiesProcessor(app.db.identities_repo, app.db.blockchains_repo, IdentitiesProcessor.instanciate(app))
BmaConnector(NodesProcessor(app.db.nodes_repo),
app.parameters)))
account_cfg = cls(parent, view, model) account_cfg = cls(parent, view, model)
model.setParent(account_cfg) model.setParent(account_cfg)
view.set_license(app.currency) view.set_license(app.currency)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment