Skip to content

Commit

Permalink
More tweaks to threads lists
Browse files Browse the repository at this point in the history
  • Loading branch information
rafalp committed Jul 22, 2024
1 parent 1666979 commit e3a0c8f
Show file tree
Hide file tree
Showing 3 changed files with 64 additions and 42 deletions.
2 changes: 1 addition & 1 deletion misago/moderation/results.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,4 @@ class ModerationBulkResult:
updated: set[int]

def __init__(self, updated: set[int]):
self.updated = updated
self.updated = updated
16 changes: 11 additions & 5 deletions misago/moderation/threads.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,9 @@ class ThreadsBulkModerationAction:
submit_btn: str | None
multistage: bool = False

def __call__(self, request: HttpRequest, threads: list[Thread]) -> ModerationResult | None:
def __call__(
self, request: HttpRequest, threads: list[Thread]
) -> ModerationResult | None:
raise NotImplementedError()

def get_context(self):
Expand All @@ -26,7 +28,7 @@ def get_context(self):
"full_name": str(getattr(self, "full_name", self.name)),
"submit_btn": str(getattr(self, "submit_btn", self.name)),
}

def create_bulk_result(self, threads: list[Thread]) -> ModerationBulkResult:
return ModerationBulkResult(set(thread.id for thread in threads))

Expand Down Expand Up @@ -80,7 +82,9 @@ class OpenThreadsBulkModerationAction(ThreadsBulkModerationAction):
id: str = "open"
name: str = pgettext_lazy("threads bulk moderation action", "Open")

def __call__(self, request: HttpRequest, threads: list[Thread]) -> ModerationBulkResult:
def __call__(
self, request: HttpRequest, threads: list[Thread]
) -> ModerationBulkResult:
closed_threads = [thread for thread in threads if thread.is_closed]
updated = Thread.objects.filter(
id__in=[thread.id for thread in closed_threads]
Expand All @@ -99,7 +103,9 @@ class CloseThreadsBulkModerationAction(ThreadsBulkModerationAction):
id: str = "close"
name: str = pgettext_lazy("threads bulk moderation action", "Close")

def __call__(self, request: HttpRequest, threads: list[Thread]) -> ModerationBulkResult:
def __call__(
self, request: HttpRequest, threads: list[Thread]
) -> ModerationBulkResult:
open_threads = [thread for thread in threads if not thread.is_closed]
updated = Thread.objects.filter(
id__in=[thread.id for thread in open_threads]
Expand All @@ -111,4 +117,4 @@ def __call__(self, request: HttpRequest, threads: list[Thread]) -> ModerationBul
pgettext("threads bulk open", "Threads closed"),
)

return self.create_bulk_result(open_threads)
return self.create_bulk_result(open_threads)
88 changes: 52 additions & 36 deletions misago/threads/views/list.py
Original file line number Diff line number Diff line change
Expand Up @@ -158,10 +158,12 @@ def dispatch_moderation(self, request: HttpRequest, kwargs: dict) -> HttpRespons
result = self.moderate_threads(request, kwargs)

if isinstance(result, ModerationTemplateResult):
result.update_context({
"template_name": result.template_name,
"cancel_url": current_url,
})
result.update_context(
{
"template_name": result.template_name,
"cancel_url": current_url,
}
)

if request.is_htmx:
template_name = self.moderation_modal_template_name
Expand All @@ -182,14 +184,15 @@ def dispatch_moderation(self, request: HttpRequest, kwargs: dict) -> HttpRespons
except ValidationError as e:
messages.error(request, e.message)
return self.get(request, **kwargs)

def set_moderation_response_headers(self, request: HttpRequest, response: HttpResponse):

def set_moderation_response_headers(
self, request: HttpRequest, response: HttpResponse
):
response.headers["HX-Trigger"] = "misago:afterModeration"
if request.POST.get("success-hx-target"):
response.headers["hx-retarget"] = request.POST["success-hx-target"]
if request.POST.get("success-hx-swap"):
response.headers["hx-reswap"] = request.POST["success-hx-swap"]


def moderate_threads(self, request: HttpRequest, kwargs) -> dict | None:
raise NotImplementedError()
Expand Down Expand Up @@ -266,6 +269,12 @@ def get_thread_pages_count(self, request: HttpRequest, thread: Thread) -> int:
posts = max(1, thread.replies + 1 - request.settings.posts_per_page_orphans)
return ceil(posts / request.settings.posts_per_page)

def get_thread_moderate(self, request: HttpRequest, thread: Thread) -> bool:
return (
request.user_permissions.is_global_moderator
or thread.category_id in request.user_permissions.categories_moderator
)

def get_metatags(self, request: HttpRequest, context: dict) -> dict:
return get_default_metatags(request)

Expand Down Expand Up @@ -314,14 +323,16 @@ def moderate_threads(self, request: HttpRequest, kwargs) -> ModerationResult | N
result = action(request, selection)

if isinstance(result, ModerationTemplateResult):
result.update_context({
"request": request,
"is_index": kwargs.get("is_index", False),
"moderation_action": action.get_context(),
"threads": threads,
"selection": selection,
"form_action": self.get_current_url(request),
})
result.update_context(
{
"request": request,
"is_index": kwargs.get("is_index", False),
"moderation_action": action.get_context(),
"threads": threads,
"selection": selection,
"form_action": self.get_current_url(request),
}
)

return result

Expand Down Expand Up @@ -403,12 +414,12 @@ def get_threads_action(self, request: HttpRequest, kwargs: dict):
users = self.get_threads_users(request, threads_list)
animate = self.get_threads_to_animate(request, kwargs, threads_list)

moderator = request.user_permissions.is_global_moderator
selected = self.get_selected_threads_ids(request)

items: list[dict] = []
for thread in threads_list:
categories = request.categories.get_thread_categories(thread.category_id)
moderate = self.get_thread_moderator_status(request, thread)

items.append(
{
Expand All @@ -418,10 +429,10 @@ def get_threads_action(self, request: HttpRequest, kwargs: dict):
"last_poster": users.get(thread.last_poster_id),
"pages": self.get_thread_pages_count(request, thread),
"categories": categories,
"moderate": moderator,
"moderate": moderate,
"animate": animate.get(thread.id, False),
"selected": thread.id in selected,
"show_flags": self.show_thread_flags(request, moderator, thread),
"show_flags": self.show_thread_flags(request, moderate, thread),
}
)

Expand Down Expand Up @@ -536,7 +547,10 @@ def get_moderation_actions_action(
self, request: HttpRequest, threads: list[dict]
) -> list[Type[ThreadsBulkModerationAction]]:
actions: list = []
if not request.user_permissions.is_global_moderator:
if (
request.user_permissions.is_global_moderator
or request.user_permissions.categories_moderator
):
return actions

actions += [
Expand Down Expand Up @@ -612,18 +626,20 @@ def moderate_threads(self, request: HttpRequest, kwargs) -> ModerationResult | N
result = action(request, selection)

if isinstance(result, ModerationTemplateResult):
result.update_context({
"request": request,
"category": category,
"moderation_action": action.get_context(),
"threads": threads,
"selection": selection,
"breadcrumbs": request.categories.get_category_path(
category.id, include_self=False
),
"form_action": self.get_current_url(request),
})

result.update_context(
{
"request": request,
"category": category,
"moderation_action": action.get_context(),
"threads": threads,
"selection": selection,
"breadcrumbs": request.categories.get_category_path(
category.id, include_self=False
),
"form_action": self.get_current_url(request),
}
)

return result

def get_context(self, request: HttpRequest, kwargs: dict):
Expand Down Expand Up @@ -780,10 +796,7 @@ def get_threads_action(
thread.category_id, category.id
)

moderate = (
request.user_permissions.is_global_moderator
or thread.category_id in request.user_permissions.categories_moderator
)
moderate = self.get_thread_moderator_status(request, thread)

items.append(
{
Expand Down Expand Up @@ -919,7 +932,10 @@ def get_moderation_actions_action(
self, request: HttpRequest, category: Category, threads: list[dict]
) -> list[Type[ThreadsBulkModerationAction]]:
actions: list = []
if not request.user_permissions.is_global_moderator:
if (
request.user_permissions.is_global_moderator
or request.user_permissions.categories_moderator
):
return actions

actions += [
Expand Down

0 comments on commit e3a0c8f

Please sign in to comment.