Switch over comment reporting to use the new system
This commit is contained in:
parent
a0488f2b23
commit
bd5fd8fb21
4 changed files with 37 additions and 51 deletions
|
@ -50,6 +50,10 @@ function filter_new_comment_status(id, new_status) {
|
|||
const commentRow = document.getElementById(`comment-${id}`);
|
||||
if(document.location.pathname === '/admin/filtered/comments' || document.location.pathname === '/admin/reported/comments' ) {
|
||||
commentRow.parentElement.removeChild(commentRow);
|
||||
const postRow = document.querySelector(`div.post-row-cid-${id}`);
|
||||
if (postRow) {
|
||||
postRow.parentElement.removeChild(postRow);
|
||||
}
|
||||
} else {
|
||||
const approveLink = commentRow.querySelector('button#filter-approve')
|
||||
const removeLink = commentRow.querySelector('button#filter-remove')
|
||||
|
@ -57,6 +61,16 @@ function filter_new_comment_status(id, new_status) {
|
|||
approveLink.parentElement.removeChild(approveLink);
|
||||
removeLink.parentElement.removeChild(removeLink);
|
||||
}
|
||||
|
||||
const reportButtonCell = document.getElementById(`flaggers-${id}`);
|
||||
if(reportButtonCell) {
|
||||
reportButtonCell.classList.add('d-none')
|
||||
}
|
||||
|
||||
const reportButton = document.getElementById(`report-btn-${id}`);
|
||||
if(reportButton) {
|
||||
reportButton.parentElement.removeChild(reportButton);
|
||||
}
|
||||
}
|
||||
|
||||
document.getElementById('toast-post-success-text').innerText = json.result;
|
||||
|
|
|
@ -559,16 +559,20 @@ def reported_comments(v):
|
|||
is_approved=None,
|
||||
is_banned=False
|
||||
).join(Comment.reports).order_by(Comment.id.desc()).offset(25 * (page - 1)).limit(26).all()
|
||||
comments_just_ids = g.db.query(Comment) \
|
||||
.filter(Comment.filter_state == 'reported') \
|
||||
.order_by(Comment.id.desc()) \
|
||||
.offset(25 * (page - 1)) \
|
||||
.limit(26) \
|
||||
.with_entities(Comment.id)
|
||||
|
||||
listing = [c.id for c in listing]
|
||||
next_exists = len(listing) > 25
|
||||
listing = listing[:25]
|
||||
|
||||
listing = get_comments(listing, v=v)
|
||||
comment_ids = [c.id for c in comments_just_ids]
|
||||
next_exists = len(comment_ids) > 25
|
||||
comments = get_comments(comment_ids[:25], v=v)
|
||||
|
||||
return render_template("admin/reported_comments.html",
|
||||
next_exists=next_exists,
|
||||
listing=listing,
|
||||
listing=comments,
|
||||
page=page,
|
||||
v=v,
|
||||
standalone=True)
|
||||
|
|
|
@ -42,49 +42,14 @@ def api_flag_post(pid, v):
|
|||
def api_flag_comment(cid, v):
|
||||
|
||||
comment = get_comment(cid)
|
||||
|
||||
existing = g.db.query(CommentFlag.comment_id).filter_by( user_id=v.id, comment_id=comment.id).one_or_none()
|
||||
if existing: return "", 409
|
||||
|
||||
reason = request.values.get("reason", "").strip()
|
||||
|
||||
if blackjack and any(i in reason.lower() for i in blackjack.split()):
|
||||
v.shadowbanned = 'AutoJanny'
|
||||
send_repeatable_notification(CARP_ID, f"reports on {comment.permalink}")
|
||||
|
||||
reason = reason[:100]
|
||||
|
||||
reason = request.values.get("reason", "").strip()[:100]
|
||||
reason = filter_emojis_only(reason)
|
||||
|
||||
if len(reason) > 350: return {"error": "Too long."}
|
||||
|
||||
flag = CommentFlag(comment_id=comment.id, user_id=v.id, reason=reason)
|
||||
|
||||
g.db.add(flag)
|
||||
g.db.query(Comment) \
|
||||
.where(Comment.id == comment.id, Comment.filter_state != 'ignored') \
|
||||
.update({Comment.filter_state: 'reported'})
|
||||
g.db.commit()
|
||||
|
||||
return {"message": "Comment reported!"}
|
||||
|
||||
@app.post('/del_report/comment/<cid>/<uid>')
|
||||
@limiter.limit("1/second;30/minute;200/hour;1000/day")
|
||||
@admin_level_required(2)
|
||||
def remove_report_comment(v, cid, uid):
|
||||
|
||||
cid = int(cid)
|
||||
uid = int(uid)
|
||||
|
||||
report = g.db.query(CommentFlag).filter_by(comment_id=cid, user_id=uid).one()
|
||||
|
||||
g.db.delete(report)
|
||||
|
||||
ma=ModAction(
|
||||
kind="delete_report",
|
||||
user_id=v.id,
|
||||
target_comment_id=cid
|
||||
)
|
||||
|
||||
g.db.add(ma)
|
||||
|
||||
g.db.commit()
|
||||
|
||||
return {"message": "Report removed successfully!"}
|
||||
|
|
|
@ -118,7 +118,7 @@
|
|||
{% endif %}
|
||||
|
||||
{% if standalone and level==1 %}
|
||||
<div class="post-info mb-1 mr-2 {% if request.path == '/notifications' %}mt-5{% else %}mt-3{% endif %}">
|
||||
<div class="post-info post-row-cid-{{c.id}} mb-1 mr-2 {% if request.path == '/notifications' %}mt-5{% else %}mt-3{% endif %}">
|
||||
{% if c.post and c.post.over_18 %}<span class="badge badge-danger text-small-extra mr-1">+18</span>{% endif %}
|
||||
<span class="align-top">
|
||||
{% if c.post %}
|
||||
|
@ -181,7 +181,7 @@
|
|||
{% if c.bannedfor %}
|
||||
<a role="button"><i class="fas fa-hammer-crash text-danger" data-bs-toggle="tooltip" data-bs-placement="bottom" title="User was banned for this comment{% if c.author.banned_by %} by @{{c.author.banned_by.username}}{% endif %}"></i></a>
|
||||
{% endif %}
|
||||
{% if c.active_flags(v) %}<a class="btn btn-primary" style="padding:1px 5px; font-size:10px"role="button" onclick="document.getElementById('flaggers-{{c.id}}').classList.toggle('d-none')">{{c.active_flags(v)}} Reports</a>{% endif %}
|
||||
{% if v and c.filter_state == 'reported' and v.can_manage_reports() %}<a class="btn btn-primary" id="report-btn-{{c.id}}" style="padding:1px 5px; font-size:10px" role="button" onclick="document.getElementById('flaggers-{{c.id}}').classList.toggle('d-none')">{{c.active_flags(v)}} Reports</a>{% endif %}
|
||||
{% if c.over_18 %}<span class="badge badge-danger text-small-extra mr-1">+18</span>{% endif %}
|
||||
{% if v and v.admin_level > 1 and c.author.shadowbanned %}<i class="fas fa-user-times text-admin" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Shadowbanned by @{{c.author.shadowbanned}}"></i>{% endif %}
|
||||
{% if c.is_pinned %}
|
||||
|
@ -245,13 +245,16 @@
|
|||
{{c.wordle_html(v) | safe}}
|
||||
{% endif %}
|
||||
</div>
|
||||
{% if c.active_flags(v) %}
|
||||
{% if v and c.filter_state == 'reported' and v.can_manage_reports() %}
|
||||
<div id="flaggers-{{c.id}}" class="flaggers d-none">
|
||||
<strong><i class="far fa-fw fa-flag"></i> Reported by:</strong>
|
||||
<strong><i class="far fa-fw fa-flag"></i> Reports:</strong>
|
||||
<a class="btn btn-primary" style="margin:1px 5px" onclick="filter_new_comment_status({{c.id}}, 'normal')">Approve</a>
|
||||
<a class="btn btn-secondary" style="margin:1px 5px" onclick="filter_new_comment_status({{c.id}}, 'ignored')">Approve and Ignore</a>
|
||||
<a class="btn btn-danger" style="margin:1px 5px" onclick="filter_new_comment_status({{c.id}}, 'removed')">Remove</a>
|
||||
<pre></pre>
|
||||
<ul style="padding-left:20px; margin-bottom: 0;word-wrap:break-word">
|
||||
{% for f in c.flags(v) %}
|
||||
<li><a style="font-weight:bold" href="{{f.user.url}}">{{f.user.username}}</a>{% if f.reason %}: {{f.realreason(v) | safe}}{% endif %} {% if v and v.admin_level > 1 %}<a role="button" onclick="post_toast(this,'/del_report/comment/{{f.comment_id}}/{{f.user_id}}')">[remove]</a>{% endif %}</li>
|
||||
<li><a style="font-weight:bold" href="{{f.user.url}}">{{f.user.username}}</a>{% if f.reason %}: {{f.realreason(v) | safe}}{% endif %}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
|
@ -848,7 +851,7 @@
|
|||
{% if v and v.admin_level > 1 %}
|
||||
<script src="/assets/js/comments_admin.js?v=250"></script>
|
||||
{% if v.admin_level > 2 %}
|
||||
<script src="/assets/js/filter_actions.js?v=2"></script>
|
||||
<script src="/assets/js/filter_actions.js?v=6"></script>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue