1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- from misago.markup import parse
- from misago.threads.checksums import update_report_checksum
- from misago.threads.models import Report
- def make_posts_reports_aware(user, thread, posts):
- make_posts_aware = (
- user.is_authenticated() and
- thread.has_reported_posts and
- thread.acl['can_report']
- )
- if not make_posts_aware:
- return
- posts_dict = {}
- for post in posts:
- post.is_reported = False
- post.report = None
- posts_dict[post.pk] = post
- for report in user.report_set.filter(post_id__in=posts_dict.keys()):
- posts_dict[report.post_id].is_reported = True
- posts_dict[report.post_id].report = report
- def user_has_reported_post(user, post):
- if not post.has_reports:
- return False
- return post.report_set.filter(reported_by=user).exists()
- def report_post(request, post, message):
- if message:
- message = parse(message, request, request.user,
- allow_images=False, allow_blocks=False)
- message = message['parsed_text']
- report = Report.objects.create(
- forum=post.forum,
- thread=post.thread,
- post=post,
- reported_by=request.user,
- reported_by_name=request.user.username,
- reported_by_slug=request.user.slug,
- reported_by_ip=request.user_ip,
- message=message,
- checksum=''
- )
- if message:
- update_report_checksum(report)
- report.save(update_fields=['checksum'])
- post.thread.has_reported_posts = True
- post.thread.has_open_reports = True
- post.thread.save(update_fields=['has_reported_posts', 'has_open_reports'])
- post.has_reports = True
- post.has_open_reports = True
- post.save(update_fields=['has_reports', 'has_open_reports'])
- return report
|