forked from rDrama/rDrama
1. tell jannies the location of the report that caused someone to get under-sieged
2. allow jannies to see reports by shadowbanned users 3. destroy the shadowbanned underworld for reports 4. dedup reports HTML code 5. show JL5 the message that caused someone to get under-siegedmaster
parent
beeb3dba94
commit
bbaa6cd6b0
|
@ -398,7 +398,7 @@ class Comment(Base):
|
||||||
|
|
||||||
@lazy
|
@lazy
|
||||||
def filtered_flags(self, v):
|
def filtered_flags(self, v):
|
||||||
return [f for f in self.flags if (v and v.shadowbanned) or not f.user.shadowbanned]
|
return [f for f in self.flags if not f.user.shadowbanned or (v and v.id == f.user_id) or (v and v.admin_level)]
|
||||||
|
|
||||||
@lazy
|
@lazy
|
||||||
def active_flags(self, v):
|
def active_flags(self, v):
|
||||||
|
|
|
@ -365,7 +365,7 @@ class Submission(Base):
|
||||||
|
|
||||||
@lazy
|
@lazy
|
||||||
def filtered_flags(self, v):
|
def filtered_flags(self, v):
|
||||||
return [f for f in self.flags if (v and v.shadowbanned) or not f.user.shadowbanned]
|
return [f for f in self.flags if not f.user.shadowbanned or (v and v.id == f.user_id) or (v and v.admin_level)]
|
||||||
|
|
||||||
@lazy
|
@lazy
|
||||||
def active_flags(self, v):
|
def active_flags(self, v):
|
||||||
|
|
|
@ -467,33 +467,47 @@ def execute_antispam_comment_check(body:str, v:User):
|
||||||
g.db.commit()
|
g.db.commit()
|
||||||
abort(403, "Too much spam!")
|
abort(403, "Too much spam!")
|
||||||
|
|
||||||
def execute_under_siege(v:User, target:Optional[Union[Submission, Comment]], body, type:str) -> bool:
|
def execute_under_siege(v:User, target:Optional[Union[Submission, Comment]], body, kind:str) -> bool:
|
||||||
if not get_setting("under_siege"): return True
|
if not get_setting("under_siege"): return
|
||||||
|
if v.shadowbanned: return
|
||||||
|
if v.admin_level >= PERMS['SITE_BYPASS_UNDER_SIEGE_MODE']: return
|
||||||
|
|
||||||
unshadowbannedcels = [x[0] for x in g.db.query(ModAction.target_user_id).filter_by(kind='unshadowban').all()]
|
if kind in {'message', 'report'}:
|
||||||
if v.id in unshadowbannedcels: return True
|
|
||||||
|
|
||||||
if type in ('report', 'message'):
|
|
||||||
threshold = 86400
|
threshold = 86400
|
||||||
else:
|
else:
|
||||||
threshold = UNDER_SIEGE_AGE_THRESHOLD
|
threshold = UNDER_SIEGE_AGE_THRESHOLD
|
||||||
|
|
||||||
if not v.shadowbanned and v.age < threshold and not v.admin_level >= PERMS['SITE_BYPASS_UNDER_SIEGE_MODE']:
|
if v.age > threshold: return
|
||||||
|
|
||||||
|
unshadowbannedcels = [x[0] for x in g.db.query(ModAction.target_user_id).filter_by(kind='unshadowban').all()]
|
||||||
|
if v.id in unshadowbannedcels: return
|
||||||
|
|
||||||
v.shadowbanned = AUTOJANNY_ID
|
v.shadowbanned = AUTOJANNY_ID
|
||||||
|
v.ban_reason = "Under Siege"
|
||||||
|
g.db.add(v)
|
||||||
|
|
||||||
|
if kind == "report":
|
||||||
|
if isinstance(target, Submission):
|
||||||
|
reason = f'report on <a href="{target.permalink}">post</a>'
|
||||||
|
else:
|
||||||
|
reason = f'report on <a href="{target.permalink}">comment</a>'
|
||||||
|
else:
|
||||||
|
reason = kind
|
||||||
|
|
||||||
ma = ModAction(
|
ma = ModAction(
|
||||||
kind="shadowban",
|
kind="shadowban",
|
||||||
user_id=AUTOJANNY_ID,
|
user_id=AUTOJANNY_ID,
|
||||||
target_user_id=v.id,
|
target_user_id=v.id,
|
||||||
_note=f'reason: "Under Siege ({type}, {v.age} seconds)"'
|
_note=f'reason: "Under Siege ({reason}, {v.age} seconds)"'
|
||||||
)
|
)
|
||||||
g.db.add(ma)
|
g.db.add(ma)
|
||||||
|
|
||||||
v.ban_reason = "Under Siege"
|
if kind == 'message':
|
||||||
g.db.add(v)
|
notified_ids = [x[0] for x in g.db.query(User.id).filter(User.admin_level >= PERMS['BLACKJACK_NOTIFICATIONS'])]
|
||||||
t = time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(time.time()))
|
for uid in notified_ids:
|
||||||
return False
|
n = Notification(comment_id=target.id, user_id=uid)
|
||||||
return True
|
g.db.add(n)
|
||||||
|
|
||||||
|
|
||||||
def execute_lawlz_actions(v:User, p:Submission):
|
def execute_lawlz_actions(v:User, p:Submission):
|
||||||
if v.id != LAWLZ_ID: return
|
if v.id != LAWLZ_ID: return
|
||||||
|
|
|
@ -234,16 +234,8 @@
|
||||||
{{c.blackjack_html | safe}}
|
{{c.blackjack_html | safe}}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
{% if c.active_flags(v) %}
|
|
||||||
<div id="flaggers-{{c.id}}" class="flaggers d-none">
|
{{macros.flags(c)}}
|
||||||
<strong><i class="far fa-fw fa-flag"></i> Reported by:</strong>
|
|
||||||
<ul class="mt-1 mb-0" style="padding-left:20px;word-wrap:break-word">
|
|
||||||
{% for f in c.filtered_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 >= PERMS['FLAGS_REMOVE'] %}<button type="button" data-nonce="{{g.nonce}}" data-onclick="delReportComment(this,'/del_report/comment/{{f.comment_id}}/{{f.user_id}}')">[remove]</button>{% endif %}</li>
|
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if c.is_banned and c.ban_reason %}
|
{% if c.is_banned and c.ban_reason %}
|
||||||
<div id="comment-banned-warning" class="comment-text text-removed mb-0">removed by @{{c.ban_reason}} (Admin)</div>
|
<div id="comment-banned-warning" class="comment-text text-removed mb-0">removed by @{{c.ban_reason}} (Admin)</div>
|
||||||
|
|
|
@ -74,18 +74,11 @@
|
||||||
<div id="post-content" class="card-block w-100 my-md-auto">
|
<div id="post-content" class="card-block w-100 my-md-auto">
|
||||||
|
|
||||||
<div class="post-meta text-left mb-2">
|
<div class="post-meta text-left mb-2">
|
||||||
{{ macros.post_meta(p) }}
|
{{macros.post_meta(p)}}
|
||||||
</div>
|
</div>
|
||||||
{% if p.active_flags(v) %}
|
|
||||||
<div id="flaggers-{{p.id}}" class="flaggers d-none">
|
{{macros.flags(p)}}
|
||||||
<strong><i class="far fa-fw fa-flag"></i> Reported by:</strong>
|
|
||||||
<ul class="mt-1 mb-0" style="padding-left:20px; word-wrap:break-word">
|
|
||||||
{% for f in p.filtered_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 >= PERMS['FLAGS_REMOVE'] %}<button type="button" data-nonce="{{g.nonce}}" data-onclick="delReportPost(this,'/del_report/post/{{f.post_id}}/{{f.user_id}}')">[remove]</button>{% endif %}</li>
|
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
{% if p.realurl(v) and not v_forbid_deleted %}
|
{% if p.realurl(v) and not v_forbid_deleted %}
|
||||||
<h1 id="post-title" class="card-title post-title text-left mb-md-3 {% if p.author.agendaposter and p.sub != 'chudrama' %}text-uppercase{% endif %}">
|
<h1 id="post-title" class="card-title post-title text-left mb-md-3 {% if p.author.agendaposter and p.sub != 'chudrama' %}text-uppercase{% endif %}">
|
||||||
<a {% if p.author.rainbow %}class="rainbow-text"{% endif %} {% if not v or v.newtabexternal %}target="_blank"{% endif %} rel="nofollow noopener" href="{{p.realurl(v)}}">
|
<a {% if p.author.rainbow %}class="rainbow-text"{% endif %} {% if not v or v.newtabexternal %}target="_blank"{% endif %} rel="nofollow noopener" href="{{p.realurl(v)}}">
|
||||||
|
|
|
@ -26,16 +26,7 @@
|
||||||
|
|
||||||
{% set v_forbid_deleted = (p.deleted_utc != 0 or p.is_banned) and not (v and v.admin_level >= PERMS['POST_COMMENT_MODERATION']) and not (v and v.id == p.author_id) %}
|
{% set v_forbid_deleted = (p.deleted_utc != 0 or p.is_banned) and not (v and v.admin_level >= PERMS['POST_COMMENT_MODERATION']) and not (v and v.id == p.author_id) %}
|
||||||
|
|
||||||
{% if p.active_flags(v) %}
|
{{macros.flags(p)}}
|
||||||
<div id="flaggers-{{p.id}}" class="flaggers d-none">
|
|
||||||
<strong><i class="far fa-fw fa-flag"></i> Reported by:</strong>
|
|
||||||
<ul class="mt-1 mb-0" style="padding-left:20px; word-wrap:break-word">
|
|
||||||
{% for f in p.filtered_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 >= PERMS['FLAGS_REMOVE'] %}<button type="button" data-nonce="{{g.nonce}}" data-onclick="delReportPost(this,'/del_report/post/{{f.post_id}}/{{f.user_id}}')">[remove]</button>{% endif %}</li>
|
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<div id="post-{{p.id}}" class="actual-post {% if p.ghost %}ghost-post{% endif %} {% if p.unread %}unread{% else %}card{% endif %} {% if p.is_banned %} banned{% endif %}{% if p.deleted_utc %} deleted{% endif %}{% if p.stickied %} stickied{% endif %}{% if voted==1 %} upvoted{% elif voted==-1 %} downvoted{% endif %}{% if p.over_18 %} nsfw{% endif %}">
|
<div id="post-{{p.id}}" class="actual-post {% if p.ghost %}ghost-post{% endif %} {% if p.unread %}unread{% else %}card{% endif %} {% if p.is_banned %} banned{% endif %}{% if p.deleted_utc %} deleted{% endif %}{% if p.stickied %} stickied{% endif %}{% if voted==1 %} upvoted{% elif voted==-1 %} downvoted{% endif %}{% if p.over_18 %} nsfw{% endif %}">
|
||||||
|
|
||||||
|
|
|
@ -196,3 +196,25 @@
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endmacro %}
|
{% endmacro %}
|
||||||
|
|
||||||
|
{% macro flags(i) %}
|
||||||
|
{% if i.active_flags(v) %}
|
||||||
|
<div id="flaggers-{{i.id}}" class="flaggers d-none">
|
||||||
|
<strong><i class="far fa-fw fa-flag"></i> Reported by:</strong>
|
||||||
|
<ul class="mt-1 mb-0" style="padding-left:20px;word-wrap:break-word">
|
||||||
|
{% for f in i.filtered_flags(v) %}
|
||||||
|
<li>
|
||||||
|
{% if v and v.admin_level %}
|
||||||
|
<i class="fas fa-user-times text-admin" data-bs-toggle="tooltip" data-bs-placement="bottom" title='Shadowbanned by @{{f.user.shadowbanner}} for "{{f.user.ban_reason}}"'></i>
|
||||||
|
{% endif %}
|
||||||
|
<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 >= PERMS['FLAGS_REMOVE'] %}
|
||||||
|
<button type="button" data-nonce="{{g.nonce}}" data-onclick="delReportComment(this,'/del_report/comment/{{f.comment_id}}/{{f.user_id}}')">[remove]</button>
|
||||||
|
{% endif %}
|
||||||
|
</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
{% endmacro %}
|
||||||
|
|
Loading…
Reference in New Issue