diff --git a/crowdsourcing/models.py b/crowdsourcing/models.py index e06659e5..29a8ef78 100644 --- a/crowdsourcing/models.py +++ b/crowdsourcing/models.py @@ -406,7 +406,8 @@ def filter_by_boomerang(self, worker, sort_by='-boomerang'): ELSE worker_rating + 0.1 * worker_avg_rating END worker_rating FROM get_worker_ratings(%(worker_id)s)) worker_ratings ON worker_ratings.requester_id = ratings.owner_id - AND (worker_ratings.worker_rating >= ratings.min_rating or p.enable_boomerang is FALSE) + AND (worker_ratings.worker_rating >= ratings.min_rating or p.enable_boomerang is FALSE + or p.owner_id = %(worker_id)s) WHERE coalesce(p.deadline, NOW() + INTERVAL '1 minute') > NOW() AND p.status = 3 AND deleted_at IS NULL AND (requester.is_denied = FALSE OR p.enable_blacklist = FALSE) AND is_worker_qualified(quals.expressions, (%(worker_data)s)::JSON) diff --git a/crowdsourcing/permissions/task.py b/crowdsourcing/permissions/task.py index 9bcebe59..7ff5d0f5 100644 --- a/crowdsourcing/permissions/task.py +++ b/crowdsourcing/permissions/task.py @@ -50,7 +50,8 @@ def has_permission(self, request, view): rating = cursor.fetchall() cursor.close() avg_rating = rating[0][1] if len(rating) and len(rating[0]) and rating[0][1] is not None else 1.99 - if avg_rating < project['min_rating'] and project['enable_boomerang']: + if avg_rating < project['min_rating'] and project['enable_boomerang'] and \ + request.user.id != project['owner_id']: raise PermissionDenied(detail='You don\'t have permission to access this project.') entry = WorkerAccessControlEntry.objects.filter(group__requester_id=project['owner_id'], group__is_global=True, worker=request.user).first()