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

Fix connection remove cleaning

parent 48b54df3
No related branches found
No related tags found
No related merge requests found
......@@ -107,7 +107,7 @@ class Application(QObject):
nodes_processor = NodesProcessor(self.db.nodes_repo)
bma_connector = BmaConnector(nodes_processor, self.parameters)
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)
blockchain_processor = BlockchainProcessor.instanciate(self)
sources_processor = SourcesProcessor.instanciate(self)
......@@ -144,9 +144,8 @@ class Application(QObject):
connections_processor = ConnectionsProcessor.instanciate(self)
connections_processor.remove_connections(connection)
IdentitiesProcessor.instanciate(self).cleanup_connection(connection)
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)
......@@ -154,9 +153,6 @@ class Application(QObject):
TransactionsProcessor.instanciate(self).cleanup_connection(connection, connections_processor.pubkeys())
if not connections_processor.connections():
NodesProcessor.instanciate(self).drop_all(self.currency)
self.db.commit()
def switch_language(self):
......
......@@ -114,24 +114,12 @@ class CertificationsProcessor:
:param List[str] connections_pubkeys: pubkeys of existing connections
: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)
for c in certifiers:
self._certifications_repo.drop(c)
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)
for c in certified:
self._certifications_repo.drop(c)
if c.certifier not in connections_pubkeys:
clean_unused_identity(c.certifier)
\ No newline at end of file
self._certifications_repo.drop(c)
\ No newline at end of file
......@@ -15,7 +15,16 @@ from sakia.errors import NoPeerAvailable
@attr.s
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
_certifications_repo = attr.ib() # :type sakia.data.repositories.IdentitiesRepo
_blockchain_repo = attr.ib() # :type sakia.data.repositories.BlockchainRepo
_bma_connector = attr.ib() # :type sakia.data.connectors.bma.BmaConnector
_logger = attr.ib(default=attr.Factory(lambda: logging.getLogger('sakia')))
......@@ -26,7 +35,7 @@ class IdentitiesProcessor:
Instanciate a blockchain processor
: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))
async def find_from_pubkey(self, currency, pubkey):
......@@ -240,6 +249,11 @@ class IdentitiesProcessor:
:param sakia.data.entities.Connectionb connection:
: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:
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)
......@@ -65,9 +65,7 @@ class ConnectionConfigController(QObject):
"""
view = ConnectionConfigView(parent.view if parent else None)
model = ConnectionConfigModel(None, app, None,
IdentitiesProcessor(app.db.identities_repo, app.db.blockchains_repo,
BmaConnector(NodesProcessor(app.db.nodes_repo),
app.parameters)))
IdentitiesProcessor.instanciate(app))
account_cfg = cls(parent, view, model)
model.setParent(account_cfg)
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