Skip to content

Commit

Permalink
Merge branch 'main' into CONCD-447-jstegmaier-pip-audit
Browse files Browse the repository at this point in the history
  • Loading branch information
joshuastegmaier committed Feb 5, 2024
2 parents b72ad12 + 016f7e3 commit 9f0124f
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 43 deletions.
38 changes: 13 additions & 25 deletions concordia/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -174,32 +174,20 @@ def listed(self):
def unlisted(self):
return self.filter(unlisted=True)

def get_next_transcription_campaign(self):
try:
return self.get(next_transcription_campaign=True)
except Campaign.DoesNotExist:
# If no campaign is configured, we use the latest to launch
return self.published().listed().latest("launch_date")
except Campaign.MultipleObjectsReturned:
return (
self.published()
.listed()
.filter(next_transcription_campaign=True)
.latest("launch_date")
)
def active(self):
return self.filter(status=Campaign.Status.ACTIVE)

def get_next_review_campaign(self):
try:
return self.get(next_review_campaign=True)
except Campaign.DoesNotExist:
return self.published().listed().latest("launch_date")
except Campaign.MultipleObjectsReturned:
return (
self.published()
.listed()
.filter(next_review_campaign=True)
.latest("launch_date")
)
def completed(self):
return self.filter(status=Campaign.Status.COMPLETED)

def retired(self):
return self.filter(status=Campaign.Status.RETIRED)

def get_next_transcription_campaigns(self):
return self.filter(next_transcription_campaign=True)

def get_next_review_campaigns(self):
return self.filter(next_review_campaign=True)


class Campaign(MetricsModelMixin("campaign"), models.Model):
Expand Down
17 changes: 1 addition & 16 deletions concordia/signals/handlers.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
from django_registration.signals import user_activated, user_registered
from flags.state import flag_enabled

from ..models import Asset, Campaign, Transcription, TranscriptionStatus
from ..models import Asset, Transcription, TranscriptionStatus
from ..tasks import calculate_difficulty_values
from .signals import reservation_obtained, reservation_released

Expand Down Expand Up @@ -176,18 +176,3 @@ def send_asset_reservation_message(
@receiver(post_delete, sender=Asset)
def remove_file_from_s3(sender, instance, using, **kwargs):
instance.storage_image.delete(save=False)


@receiver(post_save, sender=Campaign)
def resolve_next_flags(sender, *, instance, **kwargs):
# We want to make sure only one campaign is ever set
# to be the campaign used for the "jump to a transcription"
# and "jump to a review" links
if instance.next_transcription_campaign:
sender.objects.filter(next_transcription_campaign=True).exclude(
pk=instance.pk
).update(next_transcription_campaign=False)
if instance.next_review_campaign:
sender.objects.filter(next_review_campaign=True).exclude(pk=instance.pk).update(
next_review_campaign=False
)
27 changes: 25 additions & 2 deletions concordia/views.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import datetime
import json
import os
import random
import re
from functools import wraps
from logging import getLogger
Expand Down Expand Up @@ -2012,7 +2013,18 @@ def filter_and_order_reviewable_assets(
@never_cache
@atomic
def redirect_to_next_reviewable_asset(request):
campaign = Campaign.objects.get_next_review_campaign()
campaign_ids = list(
Campaign.objects.active()
.listed()
.published()
.get_next_review_campaigns()
.values_list("id", flat=True)
)
try:
campaign_id = random.choice(campaign_ids) # nosec
campaign = Campaign.objects.get(id=campaign_id)
except IndexError:
campaign = Campaign.objects.active().listed().published().latest("launch_date")
project_slug = request.GET.get("project", "")
item_id = request.GET.get("item", "")
asset_id = request.GET.get("asset", 0)
Expand Down Expand Up @@ -2059,7 +2071,18 @@ def find_transcribable_assets(campaign, project_slug, item_id, asset_id):
@never_cache
@atomic
def redirect_to_next_transcribable_asset(request):
campaign = Campaign.objects.get_next_transcription_campaign()
campaign_ids = list(
Campaign.objects.active()
.listed()
.published()
.get_next_transcription_campaigns()
.values_list("id", flat=True)
)
try:
campaign_id = random.choice(campaign_ids) # nosec
campaign = Campaign.objects.get(id=campaign_id)
except IndexError:
campaign = Campaign.objects.active().listed().published().latest("launch_date")
project_slug = request.GET.get("project", "")
item_id = request.GET.get("item", "")
asset_id = request.GET.get("asset", 0)
Expand Down

0 comments on commit 9f0124f

Please sign in to comment.