Skip to content

Commit

Permalink
update: handle dodginess
Browse files Browse the repository at this point in the history
  • Loading branch information
HermanMartinus committed Jun 20, 2024
1 parent c32d521 commit 0a2577f
Show file tree
Hide file tree
Showing 5 changed files with 51 additions and 35 deletions.
18 changes: 18 additions & 0 deletions blogs/migrations/0018_blog_dodginess_score.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Generated by Django 3.1.14 on 2024-06-20 09:05

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('blogs', '0017_post_first_published_at'),
]

operations = [
migrations.AddField(
model_name='blog',
name='dodginess_score',
field=models.FloatField(default=0),
),
]
33 changes: 26 additions & 7 deletions blogs/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ class Blog(models.Model):
header_directive = models.TextField(blank=True)
footer_directive = models.TextField(blank=True)

dodginess_score = models.FloatField(default=0)
reviewed = models.BooleanField(default=False)
ignored_date = models.DateTimeField(blank=True, null=True)
to_review = models.BooleanField(default=False)
Expand Down Expand Up @@ -135,13 +136,26 @@ def generate_auth_token(self):
self.auth_token = ''.join(random.choice(allowed_chars) for _ in range(30))
self.save()

def determine_dodginess(self):
persistent_store = PersistentStore.load()
dodgy_term_count = 0
all_content = f"{self.title} {self.content}"

post = self.posts.first()
if post:
all_content += f"{post.title} {post.content}"

for term in persistent_store.highlight_terms:
dodgy_term_count += all_content.lower().count(term.lower())

self.dodginess_score = dodgy_term_count / len(all_content) *10000

def save(self, *args, **kwargs):
# # Create auth_token
# if not self.auth_token:
# allowed_chars = string.ascii_letters.replace('O', '').replace('l', '')
# self.auth_token = ''.join(random.choice(allowed_chars) for _ in range(20))
if self.user.settings.upgraded:
self.reviewed = True

self.determine_dodginess()

super(Blog, self).save(*args, **kwargs)

def __str__(self):
Expand Down Expand Up @@ -200,7 +214,6 @@ def update_score(self):
else:
score = (log_of_upvotes) + ((seconds - 1577811600) / (14 * 86400))
self.score = score
self.save()

def save(self, *args, **kwargs):
self.slug = self.slug.lower()
Expand All @@ -216,6 +229,12 @@ def save(self, *args, **kwargs):
if self.publish and self.first_published_at is None:
self.first_published_at = self.published_date or timezone.now()

# Update the score for the discover feed
self.update_score()

# Save blog to trigger determine_dodginess
self.blog.save()

super(Post, self).save(*args, **kwargs)

def __str__(self):
Expand All @@ -231,8 +250,8 @@ def save(self, *args, **kwargs):
# Save the Upvote instance
super(Upvote, self).save(*args, **kwargs)

# Now that the Upvote is saved and counted, update the post score
self.post.update_score()
# Update the post score on post save
self.post.save()

def __str__(self):
return f"{self.created_date.strftime('%d %b %Y, %X')} - {self.hash_id} - {self.post}"
Expand Down
31 changes: 6 additions & 25 deletions blogs/views/staff.py
Original file line number Diff line number Diff line change
Expand Up @@ -132,38 +132,19 @@ def get_empty_blogs():

def blogs_to_review():
# Opted-in for review
to_review = Blog.objects.filter(reviewed=False, user__is_active=True, to_review=True)
to_review = Blog.objects.filter(reviewed=False, user__is_active=True, to_review=True).order_by('created_date')

if to_review.count() < 1:
persistent_store = PersistentStore.load()
highlight_terms = persistent_store.highlight_terms

new_blogs = Blog.objects.filter(
to_review = Blog.objects.filter(
reviewed=False,
user__is_active=True,
to_review=False,
dodginess_score__gt=5,
ignored_date__isnull=True
).prefetch_related('posts')

blog_ids_to_review = []

for blog in new_blogs:
term_count = 0
content = f"{blog.title} {blog.content}"

# post = blog.posts.first()
# if post:
# content += f"{post.title} {post.content}"
for term in highlight_terms:
term_count += content.lower().count(term.lower())

if term_count >= 2:
blog_ids_to_review.append(blog.id)

to_review = Blog.objects.filter(id__in=blog_ids_to_review)
).prefetch_related('posts').order_by('-dodginess_score')


return to_review.order_by('created_date')
return to_review


@staff_member_required
Expand All @@ -177,7 +158,7 @@ def delete_empty(request):

@staff_member_required
def review_bulk(request):
blogs = blogs_to_review()[:20]
blogs = blogs_to_review()[:100]
still_to_go = blogs.count()
persistent_store = PersistentStore.load()

Expand Down
3 changes: 0 additions & 3 deletions blogs/views/studio.py
Original file line number Diff line number Diff line change
Expand Up @@ -245,9 +245,6 @@ def post(request, id, uid=None):
return post
else:
post.save()

# Recalculate score to prevent future date spoofing
post.update_score()

if is_new:
# Self-upvote
Expand Down
1 change: 1 addition & 0 deletions templates/staff/review_bulk.html
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ <h3>Still to go: {{ still_to_go }}</h3>
{% for blog in blogs %}
<div id="blog-{{ blog.pk }}">
<h3>{{ blog.title }}</h3>
<h4>Dodginess score: {{ blog.dodginess_score }}</h4>
<a href="{{ blog.useful_domain }}" target="_blank">{{ blog.useful_domain }}</a>
<br>
<a href="mailto:{{ blog.user.email }}">{{ blog.user.email }}</a>
Expand Down

0 comments on commit 0a2577f

Please sign in to comment.