diff --git a/admin/pageaudit/report/migrations/0016_merge_20181204_1315.py b/admin/pageaudit/report/migrations/0016_merge_20181204_1315.py new file mode 100644 index 0000000..977f134 --- /dev/null +++ b/admin/pageaudit/report/migrations/0016_merge_20181204_1315.py @@ -0,0 +1,14 @@ +# Generated by Django 2.0.8 on 2018-12-04 18:15 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('report', '0015_auto_20181130_1123'), + ('report', '0012_auto_20181109_1225'), + ] + + operations = [ + ] diff --git a/admin/pageaudit/report/migrations/0017_auto_20181204_1315.py b/admin/pageaudit/report/migrations/0017_auto_20181204_1315.py new file mode 100644 index 0000000..c358896 --- /dev/null +++ b/admin/pageaudit/report/migrations/0017_auto_20181204_1315.py @@ -0,0 +1,24 @@ +# Generated by Django 2.0.8 on 2018-12-04 18:15 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('report', '0016_merge_20181204_1315'), + ] + + operations = [ + migrations.AddField( + model_name='urlfilter', + name='mode', + field=models.CharField(choices=[('AND', 'AND'), ('OR', 'OR')], default='AND', max_length=16), + preserve_default=False, + ), + migrations.AlterField( + model_name='urlfilter', + name='slug', + field=models.SlugField(unique=True), + ), + ] diff --git a/admin/pageaudit/report/models.py b/admin/pageaudit/report/models.py index fe30001..6063310 100644 --- a/admin/pageaudit/report/models.py +++ b/admin/pageaudit/report/models.py @@ -961,11 +961,17 @@ class UrlFilter(models.Model): A named UrlFilter. Allows users to create and save a filter for reuse and shared usage. """ + FILTER_MODES = ( + ('AND', 'AND',), + ('OR', 'OR',), + ) + created_date = models.DateTimeField(auto_now_add=True, editable=False) modified_date = models.DateTimeField(auto_now=True, editable=False) name = models.CharField(max_length=255, unique=True) description = models.TextField(null=True, blank=True) slug = models.SlugField(unique=True) + mode = models.CharField(max_length=16, choices=FILTER_MODES) class Meta: ordering = ['name'] @@ -985,12 +991,13 @@ def run_query(self): to do dashboard operations on. """ filter_parts = UrlFilterPart.objects.filter(url_filter=self) + filter_map = {'OR': Q.OR, 'AND': Q.AND} and_condition = Q() for part in filter_parts: query_obj = self.make_query_object(part) - and_condition.add(Q(**query_obj), Q.AND) + and_condition.add(Q(**query_obj), filter_map[self.mode]) query_set = Url.objects.filter(and_condition).distinct() diff --git a/admin/pageaudit/report/templates/reports_filters.html b/admin/pageaudit/report/templates/reports_filters.html index 143c565..48e5917 100644 --- a/admin/pageaudit/report/templates/reports_filters.html +++ b/admin/pageaudit/report/templates/reports_filters.html @@ -93,7 +93,10 @@