diff --git a/cab/migrations/0006_alter_snippet_version.py b/cab/migrations/0006_alter_snippet_version.py new file mode 100644 index 00000000..9b0538fa --- /dev/null +++ b/cab/migrations/0006_alter_snippet_version.py @@ -0,0 +1,50 @@ +# Generated by Django 4.2.23 on 2025-06-22 09:58 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("cab", "0005_alter_snippet_tags"), + ] + + operations = [ + migrations.AlterField( + model_name="snippet", + name="version", + field=models.CharField( + choices=[ + ("5.2", "5.2"), + ("5.1", "5.1"), + ("5.0", "5.0"), + ("4.2", "4.2"), + ("4.1", "4.1"), + ("4.0", "4.0"), + ("3.2", "3.2"), + ("3.1", "3.1"), + ("3.0", "3.0"), + ("2.2", "2.2"), + ("2.1", "2.1"), + ("2.0", "2.0"), + ("1.11", "1.11"), + ("1.10", "1.10"), + ("1.9", "1.9"), + ("1.8", "1.8"), + ("1.7", "1.7"), + ("1.6", "1.6"), + ("1.5", "1.5"), + ("1.4", "1.4"), + ("1.3", "1.3"), + ("1.2", "1.2"), + ("1.1", "1.1"), + ("1.0", "1.0"), + ("0.96", ".96"), + ("0.95", "Pre .96"), + ("0", "Not specified"), + ], + default="0.0", + max_length=5, + ), + ), + ] diff --git a/ratings/migrations/0002_alter_rateditem_user.py b/ratings/migrations/0002_alter_rateditem_user.py new file mode 100644 index 00000000..0454b800 --- /dev/null +++ b/ratings/migrations/0002_alter_rateditem_user.py @@ -0,0 +1,23 @@ +# Generated by Django 4.2.23 on 2025-06-22 09:58 + +import django.db.models.deletion +from django.conf import settings +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ("ratings", "0001_initial"), + ] + + operations = [ + migrations.AlterField( + model_name="rateditem", + name="user", + field=models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, related_name="%(class)ss", to=settings.AUTH_USER_MODEL + ), + ), + ] diff --git a/ratings/tests/tests.py b/ratings/tests/tests.py index aaa7527b..fd7e700b 100644 --- a/ratings/tests/tests.py +++ b/ratings/tests/tests.py @@ -726,8 +726,8 @@ class QueryHasWhereTestCase(TestCase): def test_without_where_clause(self): result = ratings_utils.query_has_where(Food.objects.all().query) - self.assertTrue(result) + self.assertFalse(result) def test_with_where_clause(self): result = ratings_utils.query_has_where(Food.objects.filter(name="test").query) - self.assertFalse(result) + self.assertTrue(result) diff --git a/ratings/utils.py b/ratings/utils.py index 6c43a443..bfe2f269 100644 --- a/ratings/utils.py +++ b/ratings/utils.py @@ -3,6 +3,7 @@ from django.contrib.auth.models import User from django.contrib.contenttypes.fields import GenericForeignKey from django.contrib.contenttypes.models import ContentType +from django.core.exceptions import FullResultSet from django.db import connection @@ -11,8 +12,11 @@ def is_gfk(content_field): def query_has_where(query): - where, params = query.get_compiler(using="default").compile(query.where) - return where == "" + try: + where, params = query.get_compiler(using="default").compile(query.where) + return bool(where) + except FullResultSet: + return False def query_as_sql(query): @@ -216,7 +220,7 @@ def _store_top_matches(ratings_queryset, rated_queryset, num, is_gfk): for item in rated_queryset.iterator(): matches = top_matches(ratings_queryset, rated_queryset, item, num) - for (score, match) in matches: + for score, match in matches: si, created = SimilarItem.objects.get_or_create( content_type=ctype, object_id=item.pk, diff --git a/requirements/base.txt b/requirements/base.txt index e1615f6a..3ae2ac65 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -1,5 +1,5 @@ bleach==6.2.0 -Django==4.1.13 +Django==4.2.23 dj-database-url==0.5.0 django-allauth==0.63.6 django-contrib-comments==2.2.0