forked from mirrors/bookwyrm
Create connectors to federated bookwyrm servers
This got messed up when I refactored how connectors work! Poor bookwyrm.social doesn't have a wyrms.de connector, but this will fix that.
This commit is contained in:
parent
ec8eb01a0f
commit
8ea60c66a3
1 changed files with 13 additions and 1 deletions
|
@ -3,6 +3,9 @@ import importlib
|
||||||
import re
|
import re
|
||||||
from urllib.parse import urlparse
|
from urllib.parse import urlparse
|
||||||
|
|
||||||
|
from django.dispatch import receiver
|
||||||
|
from django.db.models import signals
|
||||||
|
|
||||||
from requests import HTTPError
|
from requests import HTTPError
|
||||||
|
|
||||||
from bookwyrm import models
|
from bookwyrm import models
|
||||||
|
@ -44,6 +47,7 @@ def search(query, min_confidence=0.1):
|
||||||
except (HTTPError, ConnectorException):
|
except (HTTPError, ConnectorException):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
# if the search results look the same, ignore them
|
||||||
result_set = [r for r in result_set if dedup_slug(r) not in result_index]
|
result_set = [r for r in result_set if dedup_slug(r) not in result_index]
|
||||||
# `|=` concats two sets. WE ARE GETTING FANCY HERE
|
# `|=` concats two sets. WE ARE GETTING FANCY HERE
|
||||||
result_index |= set(dedup_slug(r) for r in result_set)
|
result_index |= set(dedup_slug(r) for r in result_set)
|
||||||
|
@ -85,7 +89,7 @@ def get_connectors():
|
||||||
|
|
||||||
|
|
||||||
def get_or_create_connector(remote_id):
|
def get_or_create_connector(remote_id):
|
||||||
""" get the connector related to the author's server """
|
""" get the connector related to the object's server """
|
||||||
url = urlparse(remote_id)
|
url = urlparse(remote_id)
|
||||||
identifier = url.netloc
|
identifier = url.netloc
|
||||||
if not identifier:
|
if not identifier:
|
||||||
|
@ -122,3 +126,11 @@ def load_connector(connector_info):
|
||||||
"bookwyrm.connectors.%s" % connector_info.connector_file
|
"bookwyrm.connectors.%s" % connector_info.connector_file
|
||||||
)
|
)
|
||||||
return connector.Connector(connector_info.identifier)
|
return connector.Connector(connector_info.identifier)
|
||||||
|
|
||||||
|
|
||||||
|
@receiver(signals.post_save, sender="bookwyrm.FederatedServer")
|
||||||
|
# pylint: disable=unused-argument
|
||||||
|
def create_connector(sender, instance, created, *args, **kwargs):
|
||||||
|
""" create a connector to an external bookwyrm server """
|
||||||
|
if instance.application_type == "bookwyrm":
|
||||||
|
get_or_create_connector("https://{:s}".format(instance.server_name))
|
||||||
|
|
Loading…
Reference in a new issue