annoucment logic implemented, fixing looks

This commit is contained in:
2026-08-05 15:50:32 -05:00
parent c163271a04
commit f5954247fc
22 changed files with 1020 additions and 18 deletions
+24
View File
@@ -35,6 +35,8 @@ from .models import (
slugify_tag,
)
from .storage import delete_file_index, move_file_index, refresh_file_index, store_temp_file
from announcements.models import Notification
from announcements.notifications import notify_project_change
from .zips import (
inject_animationframework,
parse_mods_manifest,
@@ -425,6 +427,12 @@ def project_detail(request, slug):
comments = project.comments.select_related('user').order_by('-created_at')[:200]
can_comment = request.user.is_authenticated
# Visiting the UGC page marks the user's personal notifications for it read.
if request.user.is_authenticated:
Notification.objects.filter(
user=request.user, project=project, read=False,
).update(read=True)
autoload_plugins_json = ''
if plugins_manifest:
members = [
@@ -1219,6 +1227,10 @@ def project_edit(request, slug):
project.sync_creator_tags(actor=request.user)
_sync_auto_tags(project, request.user)
messages.success(request, 'Project updated.')
notify_project_change(
project, request.user, 'edit',
f'{request.user.username} edited {project.title}',
)
return redirect('library:project_detail', slug=project.slug)
else:
form = ProjectForm(initial={
@@ -1311,6 +1323,10 @@ def version_upload(request, slug):
if missing_animation_id and project.category == 'non_pack':
messages.warning(request, ANIMATION_API_WARNING)
messages.success(request, f'Version {form.cleaned_data["version_name"]} uploaded.')
notify_project_change(
project, request.user, 'version',
f'{request.user.username} uploaded version {form.cleaned_data["version_name"]} on {project.title}',
)
return redirect('library:project_detail', slug=project.slug)
version_files = _pending_kind(request.user, 'version')
@@ -1422,6 +1438,10 @@ def asset_upload(request, slug):
temp.save(update_fields=['status'])
count += 1
messages.success(request, f'{count} media file{"s" if count != 1 else ""} added to the gallery.')
notify_project_change(
project, request.user, 'asset',
f'{request.user.username} added {count} new media file{"s" if count != 1 else ""} to {project.title}',
)
return redirect('library:project_detail', slug=project.slug)
return render(request, 'library/asset_upload.html', {
@@ -1581,6 +1601,10 @@ def add_comment(request, slug):
body = request.POST.get('body', '').strip()
if body:
Comment.objects.create(project=project, user=request.user, body=body)
notify_project_change(
project, request.user, 'comment',
f'{request.user.username} commented on {project.title}',
)
messages.success(request, 'Comment added.')
else:
messages.error(request, 'Comment cannot be empty.')