diff --git a/fedireads/activitypub/actor.py b/fedireads/activitypub/actor.py index 7dec3bbc..d26346f3 100644 --- a/fedireads/activitypub/actor.py +++ b/fedireads/activitypub/actor.py @@ -49,4 +49,3 @@ def get_actor(user): "url": icon_url, }, } - diff --git a/fedireads/activitypub/follow.py b/fedireads/activitypub/follow.py index c54e928d..4d6a5dad 100644 --- a/fedireads/activitypub/follow.py +++ b/fedireads/activitypub/follow.py @@ -111,6 +111,3 @@ def get_follow_page(user_list, id_slug, page): if start > 0: data['prev'] = '%s?page=%d' % (id_slug, page - 1) return data - - - diff --git a/fedireads/activitypub/outbox.py b/fedireads/activitypub/outbox.py index 13ba2415..8dbfe66a 100644 --- a/fedireads/activitypub/outbox.py +++ b/fedireads/activitypub/outbox.py @@ -41,6 +41,3 @@ def get_outbox_page(user, page_id, statuses, max_id, min_id): urlencode({'max_id': min_id, 'page': 'true'}) return page - - - diff --git a/fedireads/activitypub/shelve.py b/fedireads/activitypub/shelve.py index efb22dd3..d3a22edf 100644 --- a/fedireads/activitypub/shelve.py +++ b/fedireads/activitypub/shelve.py @@ -31,5 +31,3 @@ def get_add_remove(user, book, shelf, action='Add'): 'id': shelf.absolute_id, } } - - diff --git a/fedireads/activitypub/status.py b/fedireads/activitypub/status.py index df21c2b2..68a58a67 100644 --- a/fedireads/activitypub/status.py +++ b/fedireads/activitypub/status.py @@ -252,5 +252,3 @@ def get_remove_tag(tag): 'id': tag.book.absolute_id, } } - - diff --git a/fedireads/broadcast.py b/fedireads/broadcast.py index 7e814411..f1a29b43 100644 --- a/fedireads/broadcast.py +++ b/fedireads/broadcast.py @@ -1,12 +1,12 @@ ''' send out activitypub messages ''' +import json +from urllib.parse import urlparse from base64 import b64encode from Crypto.PublicKey import RSA from Crypto.Signature import pkcs1_15 from Crypto.Hash import SHA256 from django.utils.http import http_date -import json import requests -from urllib.parse import urlparse from fedireads import models from fedireads.tasks import app @@ -93,4 +93,3 @@ def sign_and_send(sender, activity, destination): if not response.ok: response.raise_for_status() return response - diff --git a/fedireads/connectors/abstract_connector.py b/fedireads/connectors/abstract_connector.py index c98ae174..9013d6d0 100644 --- a/fedireads/connectors/abstract_connector.py +++ b/fedireads/connectors/abstract_connector.py @@ -33,34 +33,29 @@ class AbstractConnector(ABC): def search(self, query): ''' free text search ''' # return list of search result objs - pass @abstractmethod def get_or_create_book(self, book_id): ''' request and format a book given an identifier ''' # return book model obj - pass @abstractmethod def expand_book_data(self, book): ''' get more info on a book ''' - pass @abstractmethod def get_or_create_author(self, book_id): ''' request and format a book given an identifier ''' # return book model obj - pass @abstractmethod def update_book(self, book_obj): ''' sync a book with the canonical remote copy ''' # return book model obj - pass def update_from_mappings(obj, data, mappings): @@ -96,7 +91,7 @@ def get_date(date_string): return None -class SearchResult(object): +class SearchResult: ''' standardized search result object ''' def __init__(self, title, key, author, year, raw_data): self.title = title @@ -108,4 +103,3 @@ class SearchResult(object): def __repr__(self): return "".format( self.key, self.title, self.author) - diff --git a/fedireads/connectors/fedireads_connector.py b/fedireads/connectors/fedireads_connector.py index ba482094..ea06dbba 100644 --- a/fedireads/connectors/fedireads_connector.py +++ b/fedireads/connectors/fedireads_connector.py @@ -9,11 +9,6 @@ from .abstract_connector import update_from_mappings, get_date class Connector(AbstractConnector): - ''' instantiate a connector ''' - def __init__(self, identifier): - super().__init__(identifier) - - def search(self, query): ''' right now you can't search fedireads, but... ''' resp = requests.get( @@ -80,7 +75,7 @@ class Connector(AbstractConnector): author_id = author_id.split('/')[-1] book.authors.add(self.get_or_create_author(author_id)) - if book.sync_cover and data.get('covers') and len(data['covers']): + if book.sync_cover and data.get('covers') and data['covers']: book.cover.save(*get_cover(data['covers'][0]), save=True) return book @@ -119,4 +114,3 @@ def get_cover(cover_url): response.raise_for_status() image_content = ContentFile(response.content) return [image_name, image_content] - diff --git a/fedireads/connectors/openlibrary.py b/fedireads/connectors/openlibrary.py index 2abe90eb..7b34e5f7 100644 --- a/fedireads/connectors/openlibrary.py +++ b/fedireads/connectors/openlibrary.py @@ -1,9 +1,10 @@ ''' openlibrary data connector ''' -from django.core.files.base import ContentFile -from django.db import transaction import re import requests +from django.core.files.base import ContentFile +from django.db import transaction + from fedireads import models from .abstract_connector import AbstractConnector, SearchResult from .abstract_connector import update_from_mappings, get_date @@ -247,7 +248,7 @@ def get_languages(language_blob): def pick_default_edition(options): ''' favor physical copies with covers in english ''' - if not len(options): + if not options: return None if len(options) == 1: return options[0] @@ -261,5 +262,3 @@ def pick_default_edition(options): options = [e for e in options if e.get('isbn_13')] or options options = [e for e in options if e.get('ocaid')] or options return options[0] - - diff --git a/fedireads/connectors/self_connector.py b/fedireads/connectors/self_connector.py index ab701b38..d44dac60 100644 --- a/fedireads/connectors/self_connector.py +++ b/fedireads/connectors/self_connector.py @@ -38,4 +38,3 @@ class Connector(AbstractConnector): def update_book(self, book_obj): pass - diff --git a/fedireads/forms.py b/fedireads/forms.py index 022925b3..45ee4f14 100644 --- a/fedireads/forms.py +++ b/fedireads/forms.py @@ -1,6 +1,5 @@ ''' usin django model forms ''' -from django.core.validators import MaxValueValidator, MinValueValidator -from django.forms import ModelForm, PasswordInput, IntegerField +from django.forms import ModelForm, PasswordInput from django import forms from fedireads import models @@ -117,4 +116,3 @@ class EditionForm(ModelForm): class ImportForm(forms.Form): csv_file = forms.FileField() - diff --git a/fedireads/incoming.py b/fedireads/incoming.py index f14b7d62..9f86cd02 100644 --- a/fedireads/incoming.py +++ b/fedireads/incoming.py @@ -1,4 +1,5 @@ ''' handles all of the activity coming in to the server ''' +import json from base64 import b64decode from Crypto.Hash import SHA256 from Crypto.PublicKey import RSA @@ -7,7 +8,6 @@ import django.db.utils from django.http import HttpResponse from django.http import HttpResponseBadRequest, HttpResponseNotFound from django.views.decorators.csrf import csrf_exempt -import json import requests from fedireads import models, outgoing @@ -318,4 +318,3 @@ def handle_tag(activity): if not user.local: book = activity['target']['id'].split('/')[-1] status_builder.create_tag(user, book, activity['object']['name']) - diff --git a/fedireads/models/book.py b/fedireads/models/book.py index f5ea2ba3..fd21e2de 100644 --- a/fedireads/models/book.py +++ b/fedireads/models/book.py @@ -1,8 +1,9 @@ ''' database schema for books and shelves ''' +from uuid import uuid4 + from django.utils import timezone from django.db import models from model_utils.managers import InheritanceManager -from uuid import uuid4 from fedireads.settings import DOMAIN from fedireads.utils.fields import JSONField, ArrayField @@ -155,4 +156,3 @@ class Author(FedireadsModel): models.CharField(max_length=255), blank=True, default=list ) bio = models.TextField(null=True, blank=True) - diff --git a/fedireads/models/status.py b/fedireads/models/status.py index 6f19fe28..45a4b8d7 100644 --- a/fedireads/models/status.py +++ b/fedireads/models/status.py @@ -1,9 +1,10 @@ ''' models for storing different kinds of Activities ''' +import urllib.parse + from django.utils import timezone from django.core.validators import MaxValueValidator, MinValueValidator from django.db import models from model_utils.managers import InheritanceManager -import urllib.parse from fedireads.utils.models import FedireadsModel @@ -15,7 +16,8 @@ class Status(FedireadsModel): status_type = models.CharField(max_length=255, default='Note') content = models.TextField(blank=True, null=True) mention_users = models.ManyToManyField('User', related_name='mention_user') - mention_books = models.ManyToManyField('Edition', related_name='mention_book') + mention_books = models.ManyToManyField( + 'Edition', related_name='mention_book') activity_type = models.CharField(max_length=255, default='Note') local = models.BooleanField(default=True) privacy = models.CharField(max_length=255, default='public') diff --git a/fedireads/models/user.py b/fedireads/models/user.py index dfc03f7c..2f2c3dab 100644 --- a/fedireads/models/user.py +++ b/fedireads/models/user.py @@ -5,7 +5,7 @@ from django.contrib.auth.models import AbstractUser from django.db import models from django.dispatch import receiver -from fedireads.models import Shelf +from fedireads.models.shelf import Shelf from fedireads.settings import DOMAIN from fedireads.utils.models import FedireadsModel @@ -190,4 +190,3 @@ def execute_after_save(sender, instance, created, *args, **kwargs): user=instance, editable=False ).save() - diff --git a/fedireads/outgoing.py b/fedireads/outgoing.py index 435843c0..ccddf428 100644 --- a/fedireads/outgoing.py +++ b/fedireads/outgoing.py @@ -37,10 +37,10 @@ def outbox(request, username): filters = {} # params for the outbox page id params = {'page': 'true'} - if min_id != None: + if min_id is not None: params['min_id'] = min_id filters['id__gt'] = min_id - if max_id != None: + if max_id is not None: params['max_id'] = max_id filters['id__lte'] = max_id @@ -224,7 +224,8 @@ def handle_review(user, book, name, content, rating): fr_serializer = activitypub.get_review ap_serializer = activitypub.get_review_article handle_status( - user, book, builder, fr_serializer, ap_serializer, name, content, rating) + user, book, builder, fr_serializer, + ap_serializer, name, content, rating) def handle_quotation(user, book, content, quote): @@ -310,7 +311,8 @@ def handle_favorite(user, status): return fav_activity = activitypub.get_favorite(favorite) - broadcast(user, fav_activity, privacy='direct', direct_recipients=[status.user]) + broadcast( + user, fav_activity, privacy='direct', direct_recipients=[status.user]) def handle_unfavorite(user, status): @@ -356,4 +358,3 @@ def handle_update_user(user): actor = activitypub.get_actor(user) update_activity = activitypub.get_update(user, actor) broadcast(user, update_activity) - diff --git a/fedireads/remote_user.py b/fedireads/remote_user.py index b9f95b42..7708dfaa 100644 --- a/fedireads/remote_user.py +++ b/fedireads/remote_user.py @@ -1,7 +1,7 @@ ''' manage remote users ''' -import requests from urllib.parse import urlparse from uuid import uuid4 +import requests from django.core.files.base import ContentFile @@ -118,4 +118,3 @@ def get_or_create_remote_server(domain): application_version=data['software']['version'], ) return server - diff --git a/fedireads/routine_book_tasks.py b/fedireads/routine_book_tasks.py index 6c96ef3f..d40e73b3 100644 --- a/fedireads/routine_book_tasks.py +++ b/fedireads/routine_book_tasks.py @@ -14,4 +14,3 @@ def sync_book_data(): for book in books: # TODO: create background tasks books_manager.update_book(book) - diff --git a/fedireads/sanitize_html.py b/fedireads/sanitize_html.py index 537e2c5f..669b6888 100644 --- a/fedireads/sanitize_html.py +++ b/fedireads/sanitize_html.py @@ -48,4 +48,3 @@ class InputHtmlParser(HTMLParser): if not self.allow_html: return ''.join(v for (k, v) in self.output if k == 'data') return ''.join(v for (k, v) in self.output) - diff --git a/fedireads/tasks.py b/fedireads/tasks.py index 9492fa69..58e378e1 100644 --- a/fedireads/tasks.py +++ b/fedireads/tasks.py @@ -1,6 +1,6 @@ ''' background tasks ''' -from celery import Celery import os +from celery import Celery from fedireads import settings @@ -10,5 +10,3 @@ app = Celery( 'tasks', broker=settings.CELERY_BROKER, ) - - diff --git a/fedireads/templatetags/fr_display.py b/fedireads/templatetags/fr_display.py index 0b9e9867..883edccd 100644 --- a/fedireads/templatetags/fr_display.py +++ b/fedireads/templatetags/fr_display.py @@ -132,7 +132,7 @@ def shelve_button_identifier(context, book): identifier = shelf.shelf.identifier if identifier == 'to-read': return 'reading' - elif identifier == 'reading': + if identifier == 'reading': return 'read' return 'to-read' @@ -151,7 +151,7 @@ def shelve_button_text(context, book): identifier = shelf.shelf.identifier if identifier == 'to-read': return 'Start reading' - elif identifier == 'reading': + if identifier == 'reading': return 'I\'m done!' return 'Want to read' diff --git a/fedireads/utils/fields.py b/fedireads/utils/fields.py index 1d6c8a39..8978f4bc 100644 --- a/fedireads/utils/fields.py +++ b/fedireads/utils/fields.py @@ -55,7 +55,7 @@ if 'sqlite' in settings.DATABASES['default']['ENGINE']: """Care for DjangoArrayField's kwargs.""" self.base_field = base_field self.size = size - return super().__init__(**kwargs) + super().__init__(**kwargs) def deconstruct(self): """Need to create migrations properly.""" @@ -64,4 +64,4 @@ if 'sqlite' in settings.DATABASES['default']['ENGINE']: 'base_field': self.base_field.clone(), 'size': self.size, }) - return name, path, args, kwargs \ No newline at end of file + return name, path, args, kwargs diff --git a/fedireads/utils/models.py b/fedireads/utils/models.py index 11bdee60..bedc8e8e 100644 --- a/fedireads/utils/models.py +++ b/fedireads/utils/models.py @@ -20,4 +20,3 @@ class FedireadsModel(models.Model): class Meta: abstract = True - diff --git a/fedireads/view_actions.py b/fedireads/view_actions.py index a5fb1f07..4c85a44f 100644 --- a/fedireads/view_actions.py +++ b/fedireads/view_actions.py @@ -453,4 +453,3 @@ def import_data(request): 'failures': failures, }) return HttpResponseBadRequest() - diff --git a/fedireads/views.py b/fedireads/views.py index 544faf1f..0bbff55f 100644 --- a/fedireads/views.py +++ b/fedireads/views.py @@ -207,18 +207,18 @@ def user_page(request, username, subpage=None): if subpage == 'followers': data['followers'] = user.followers.all() return TemplateResponse(request, 'followers.html', data) - elif subpage == 'following': + if subpage == 'following': data['following'] = user.following.all() return TemplateResponse(request, 'following.html', data) - elif subpage == 'shelves': + if subpage == 'shelves': data['shelves'] = user.shelf_set.all() return TemplateResponse(request, 'user_shelves.html', data) - else: - shelves = get_user_shelf_preview(user) - data['shelves'] = shelves - activities = get_activity_feed(user, 'self')[:15] - data['activities'] = activities - return TemplateResponse(request, 'user.html', data) + + shelves = get_user_shelf_preview(user) + data['shelves'] = shelves + activities = get_activity_feed(user, 'self')[:15] + data['activities'] = activities + return TemplateResponse(request, 'user.html', data) @csrf_exempt @@ -531,4 +531,3 @@ def get_user_shelf_preview(user, shelf_proportions=None): 'size': shelf.books.count(), }) return shelves - diff --git a/fedireads/wellknown.py b/fedireads/wellknown.py index 6e4198fa..9e5f3f31 100644 --- a/fedireads/wellknown.py +++ b/fedireads/wellknown.py @@ -107,4 +107,3 @@ def peers(request): names = models.FederatedServer.objects.values_list('server_name', flat=True) return JsonResponse(list(names), safe=False) -