run black

This commit is contained in:
Hugh Rundle 2023-10-22 15:34:25 +11:00
parent a27c652501
commit b34a491172
No known key found for this signature in database
GPG key ID: A7E35779918253F9
10 changed files with 111 additions and 32 deletions

View file

@ -7,28 +7,79 @@ import django.db.models.deletion
class Migration(migrations.Migration): class Migration(migrations.Migration):
dependencies = [ dependencies = [
('bookwyrm', '0182_merge_20230905_2240'), ("bookwyrm", "0182_merge_20230905_2240"),
] ]
operations = [ operations = [
migrations.AddField( migrations.AddField(
model_name='notification', model_name="notification",
name='related_user_export', name="related_user_export",
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='bookwyrm.bookwyrmexportjob'), field=models.ForeignKey(
null=True,
on_delete=django.db.models.deletion.CASCADE,
to="bookwyrm.bookwyrmexportjob",
),
), ),
migrations.AlterField( migrations.AlterField(
model_name='childjob', model_name="childjob",
name='status', name="status",
field=models.CharField(choices=[('pending', 'Pending'), ('active', 'Active'), ('complete', 'Complete'), ('stopped', 'Stopped'), ('failed', 'Failed')], default='pending', max_length=50, null=True), field=models.CharField(
choices=[
("pending", "Pending"),
("active", "Active"),
("complete", "Complete"),
("stopped", "Stopped"),
("failed", "Failed"),
],
default="pending",
max_length=50,
null=True,
),
), ),
migrations.AlterField( migrations.AlterField(
model_name='notification', model_name="notification",
name='notification_type', name="notification_type",
field=models.CharField(choices=[('FAVORITE', 'Favorite'), ('REPLY', 'Reply'), ('MENTION', 'Mention'), ('TAG', 'Tag'), ('FOLLOW', 'Follow'), ('FOLLOW_REQUEST', 'Follow Request'), ('BOOST', 'Boost'), ('IMPORT', 'Import'), ('USER_IMPORT', 'User Import'), ('USER_EXPORT', 'User Export'), ('ADD', 'Add'), ('REPORT', 'Report'), ('LINK_DOMAIN', 'Link Domain'), ('INVITE', 'Invite'), ('ACCEPT', 'Accept'), ('JOIN', 'Join'), ('LEAVE', 'Leave'), ('REMOVE', 'Remove'), ('GROUP_PRIVACY', 'Group Privacy'), ('GROUP_NAME', 'Group Name'), ('GROUP_DESCRIPTION', 'Group Description')], max_length=255), field=models.CharField(
choices=[
("FAVORITE", "Favorite"),
("REPLY", "Reply"),
("MENTION", "Mention"),
("TAG", "Tag"),
("FOLLOW", "Follow"),
("FOLLOW_REQUEST", "Follow Request"),
("BOOST", "Boost"),
("IMPORT", "Import"),
("USER_IMPORT", "User Import"),
("USER_EXPORT", "User Export"),
("ADD", "Add"),
("REPORT", "Report"),
("LINK_DOMAIN", "Link Domain"),
("INVITE", "Invite"),
("ACCEPT", "Accept"),
("JOIN", "Join"),
("LEAVE", "Leave"),
("REMOVE", "Remove"),
("GROUP_PRIVACY", "Group Privacy"),
("GROUP_NAME", "Group Name"),
("GROUP_DESCRIPTION", "Group Description"),
],
max_length=255,
),
), ),
migrations.AlterField( migrations.AlterField(
model_name='parentjob', model_name="parentjob",
name='status', name="status",
field=models.CharField(choices=[('pending', 'Pending'), ('active', 'Active'), ('complete', 'Complete'), ('stopped', 'Stopped'), ('failed', 'Failed')], default='pending', max_length=50, null=True), field=models.CharField(
choices=[
("pending", "Pending"),
("active", "Active"),
("complete", "Complete"),
("stopped", "Stopped"),
("failed", "Failed"),
],
default="pending",
max_length=50,
null=True,
),
), ),
] ]

View file

@ -6,13 +6,13 @@ from django.db import migrations, models
class Migration(migrations.Migration): class Migration(migrations.Migration):
dependencies = [ dependencies = [
('bookwyrm', '0183_auto_20231021_2050'), ("bookwyrm", "0183_auto_20231021_2050"),
] ]
operations = [ operations = [
migrations.AddField( migrations.AddField(
model_name='sitesettings', model_name="sitesettings",
name='user_import_time_limit', name="user_import_time_limit",
field=models.IntegerField(default=48), field=models.IntegerField(default=48),
), ),
] ]

View file

@ -43,7 +43,9 @@ def start_export_task(**kwargs):
except Exception as err: # pylint: disable=broad-except except Exception as err: # pylint: disable=broad-except
logger.exception("User Export Job %s Failed with error: %s", job.id, err) logger.exception("User Export Job %s Failed with error: %s", job.id, err)
job.set_status("failed") job.set_status("failed")
job.set_status("complete") # need to explicitly set this here to trigger notifications job.set_status(
"complete"
) # need to explicitly set this here to trigger notifications
job.save(update_fields=["export_data"]) job.save(update_fields=["export_data"])

View file

@ -2,7 +2,14 @@
from django.db import models, transaction from django.db import models, transaction
from django.dispatch import receiver from django.dispatch import receiver
from .base_model import BookWyrmModel from .base_model import BookWyrmModel
from . import Boost, Favorite, GroupMemberInvitation, ImportJob, BookwyrmImportJob, LinkDomain from . import (
Boost,
Favorite,
GroupMemberInvitation,
ImportJob,
BookwyrmImportJob,
LinkDomain,
)
from bookwyrm.models.bookwyrm_export_job import BookwyrmExportJob from bookwyrm.models.bookwyrm_export_job import BookwyrmExportJob
from . import ListItem, Report, Status, User, UserFollowRequest from . import ListItem, Report, Status, User, UserFollowRequest
@ -64,7 +71,9 @@ class Notification(BookWyrmModel):
) )
related_status = models.ForeignKey("Status", on_delete=models.CASCADE, null=True) related_status = models.ForeignKey("Status", on_delete=models.CASCADE, null=True)
related_import = models.ForeignKey("ImportJob", on_delete=models.CASCADE, null=True) related_import = models.ForeignKey("ImportJob", on_delete=models.CASCADE, null=True)
related_user_export = models.ForeignKey("BookwyrmExportJob", on_delete=models.CASCADE, null=True) related_user_export = models.ForeignKey(
"BookwyrmExportJob", on_delete=models.CASCADE, null=True
)
related_list_items = models.ManyToManyField( related_list_items = models.ManyToManyField(
"ListItem", symmetrical=False, related_name="notifications" "ListItem", symmetrical=False, related_name="notifications"
) )
@ -226,6 +235,7 @@ def notify_user_on_import_complete(
related_import=instance, related_import=instance,
) )
@receiver(models.signals.post_save, sender=BookwyrmImportJob) @receiver(models.signals.post_save, sender=BookwyrmImportJob)
# pylint: disable=unused-argument # pylint: disable=unused-argument
def notify_user_on_user_import_complete( def notify_user_on_user_import_complete(
@ -236,10 +246,10 @@ def notify_user_on_user_import_complete(
if not instance.complete or "complete" not in update_fields: if not instance.complete or "complete" not in update_fields:
return return
Notification.objects.create( Notification.objects.create(
user=instance.user, user=instance.user, notification_type=Notification.USER_IMPORT
notification_type=Notification.USER_IMPORT
) )
@receiver(models.signals.post_save, sender=BookwyrmExportJob) @receiver(models.signals.post_save, sender=BookwyrmExportJob)
# pylint: disable=unused-argument # pylint: disable=unused-argument
def notify_user_on_user_export_complete( def notify_user_on_user_export_complete(
@ -257,6 +267,7 @@ def notify_user_on_user_export_complete(
related_user_export=instance, related_user_export=instance,
) )
@receiver(models.signals.post_save, sender=Report) @receiver(models.signals.post_save, sender=Report)
@transaction.atomic @transaction.atomic
# pylint: disable=unused-argument # pylint: disable=unused-argument

View file

@ -17,7 +17,7 @@ from .admin.imports import (
enable_imports, enable_imports,
set_import_size_limit, set_import_size_limit,
set_user_import_completed, set_user_import_completed,
set_user_import_limit set_user_import_limit,
) )
from .admin.ip_blocklist import IPBlocklist from .admin.ip_blocklist import IPBlocklist
from .admin.invite import ManageInvites, Invite, InviteRequest from .admin.invite import ManageInvites, Invite, InviteRequest

View file

@ -40,9 +40,9 @@ class ImportList(View):
paginated = Paginator(imports, PAGE_LENGTH) paginated = Paginator(imports, PAGE_LENGTH)
page = paginated.get_page(request.GET.get("page")) page = paginated.get_page(request.GET.get("page"))
user_imports = models.BookwyrmImportJob.objects.filter(complete=complete).order_by( user_imports = models.BookwyrmImportJob.objects.filter(
"created_date" complete=complete
) ).order_by("created_date")
user_paginated = Paginator(user_imports, PAGE_LENGTH) user_paginated = Paginator(user_imports, PAGE_LENGTH)
user_page = user_paginated.get_page(request.GET.get("page")) user_page = user_paginated.get_page(request.GET.get("page"))
@ -105,6 +105,7 @@ def set_import_size_limit(request):
site.save(update_fields=["import_size_limit", "import_limit_reset"]) site.save(update_fields=["import_size_limit", "import_limit_reset"])
return redirect("settings-imports") return redirect("settings-imports")
@require_POST @require_POST
@login_required @login_required
@permission_required("bookwyrm.moderate_user", raise_exception=True) @permission_required("bookwyrm.moderate_user", raise_exception=True)

View file

@ -144,8 +144,16 @@ class UserImport(View):
) )
site = models.SiteSettings.objects.get() site = models.SiteSettings.objects.get()
hours = site.user_import_time_limit hours = site.user_import_time_limit
allowed = jobs.first().created_date < timezone.now() - datetime.timedelta(hours=hours) if jobs.first() else True allowed = (
next_available = jobs.first().created_date + datetime.timedelta(hours=hours) if not allowed else False jobs.first().created_date < timezone.now() - datetime.timedelta(hours=hours)
if jobs.first()
else True
)
next_available = (
jobs.first().created_date + datetime.timedelta(hours=hours)
if not allowed
else False
)
paginated = Paginator(jobs, PAGE_LENGTH) paginated = Paginator(jobs, PAGE_LENGTH)
page = paginated.get_page(request.GET.get("page")) page = paginated.get_page(request.GET.get("page"))
data = { data = {

View file

@ -105,8 +105,14 @@ class ExportUser(View):
) )
site = models.SiteSettings.objects.get() site = models.SiteSettings.objects.get()
hours = site.user_import_time_limit hours = site.user_import_time_limit
allowed = jobs.first().created_date < timezone.now() - timedelta(hours=hours) if jobs.first() else True allowed = (
next_available = jobs.first().created_date + timedelta(hours=hours) if not allowed else False jobs.first().created_date < timezone.now() - timedelta(hours=hours)
if jobs.first()
else True
)
next_available = (
jobs.first().created_date + timedelta(hours=hours) if not allowed else False
)
paginated = Paginator(jobs, PAGE_LENGTH) paginated = Paginator(jobs, PAGE_LENGTH)
page = paginated.get_page(request.GET.get("page")) page = paginated.get_page(request.GET.get("page"))
data = { data = {