Skip to content

Commit

Permalink
#1268: Show recent query results in initial Batch Edit View.
Browse files Browse the repository at this point in the history
  • Loading branch information
susanodd committed Jun 24, 2024
1 parent 22efca9 commit 58bf68e
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 39 deletions.
57 changes: 20 additions & 37 deletions signbank/dictionary/adminviews.py
Original file line number Diff line number Diff line change
Expand Up @@ -6549,60 +6549,43 @@ def get_context_data(self, **kwargs):
field='Location', machine_value__gt=1).order_by('name')]
context['available_locprim'] = available_locprim

# data structures to store the query parameters in order to keep them in the form
context['query_parameters'] = json.dumps(self.query_parameters)
query_parameters_keys = list(self.query_parameters.keys())
context['query_parameters_keys'] = json.dumps(query_parameters_keys)

context['SHOW_DATASET_INTERFACE_OPTIONS'] = getattr(settings, 'SHOW_DATASET_INTERFACE_OPTIONS', False)
context['USE_REGULAR_EXPRESSIONS'] = getattr(settings, 'USE_REGULAR_EXPRESSIONS', False)

# construct scroll bar
# the following retrieves language code for English (or DEFAULT LANGUAGE)
# so the sorting of the scroll bar matches the default sorting of the results in Gloss List View

list_of_objects = self.object_list

(interface_language, interface_language_code,
default_language, default_language_code) = get_interface_language_and_default_language_codes(self.request)

dataset_display_languages = []
for lang in dataset_languages:
dataset_display_languages.append(lang.language_code_2char)
if interface_language_code in dataset_display_languages:
lang_attr_name = interface_language_code
else:
lang_attr_name = default_language_code

items = construct_scrollbar(list_of_objects, self.search_type, lang_attr_name)
self.request.session['search_results'] = items

return context

def get_queryset(self):
# this is a ListView for a complicated data structure

selected_datasets = get_selected_datasets_for_user(self.request.user)

if not selected_datasets or selected_datasets.count() > 1:
feedback_message = _('Please select a single dataset to use Batch Edit.')
messages.add_message(self.request, messages.ERROR, feedback_message)
# the query set is a list of tuples (gloss, keyword_translations, senses_groups)
return []
return Gloss.objects.none()

get = self.request.GET
if 'search_results' in self.request.session.keys():
search_results = self.request.session['search_results']
if len(search_results) > 0:
if search_results[0]['href_type'] not in ['gloss']:
search_results = []
else:
search_results = []

# multilingual
# this needs to be sorted for jquery purposes
dataset_languages = get_dataset_languages(selected_datasets).order_by('id')
(objects_on_page, object_list) = map_search_results_to_gloss_list(search_results)

if get:
glosses_of_datasets = Gloss.none_morpheme_objects().filter(lemma__dataset__in=selected_datasets)
get = self.request.GET

if not get:
glosses_of_dataset = object_list
else:
recently_added_signs_since_date = DT.datetime.now(tz=get_current_timezone()) - RECENTLY_ADDED_SIGNS_PERIOD
glosses_of_datasets = Gloss.objects.filter(morpheme=None, lemma__dataset__in=selected_datasets).filter(
creationDate__range=[recently_added_signs_since_date, DT.datetime.now(tz=get_current_timezone())]).order_by(
'creationDate')
glosses_of_dataset = Gloss.none_morpheme_objects().filter(lemma__dataset__in=selected_datasets)

if not get:
return glosses_of_dataset

# data structure to store the query parameters in order to keep them in the form
query_parameters = dict()
Expand All @@ -6613,12 +6596,12 @@ def get_queryset(self):
query_parameters['tags[]'] = vals
glosses_with_tag = list(
TaggedItem.objects.filter(tag__id__in=vals).values_list('object_id', flat=True))
glosses_of_datasets = glosses_of_datasets.filter(id__in=glosses_with_tag)
glosses_of_dataset = glosses_of_dataset.filter(id__in=glosses_with_tag)
if 'createdBy' in get and get['createdBy']:
get_value = get['createdBy']
query_parameters['createdBy'] = get_value.strip()
created_by_search_string = ' '.join(get_value.strip().split()) # remove redundant spaces
glosses_of_datasets = glosses_of_datasets.annotate(
glosses_of_dataset = glosses_of_dataset.annotate(
created_by=Concat('creator__first_name', V(' '), 'creator__last_name', output_field=CharField())) \
.filter(created_by__icontains=created_by_search_string)

Expand All @@ -6627,7 +6610,7 @@ def get_queryset(self):
self.request.session.modified = True
self.query_parameters = query_parameters

return glosses_of_datasets
return glosses_of_dataset


class ToggleListView(ListView):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -220,15 +220,15 @@

<div id="keywordsSenses">
<h3>{% trans "Batch Edit View" %}</h3>
<h4>{% trans "On initial view, prior to searching, recently added glosses are shown below." %}</h4>
<h4>{% trans "On initial view, the most recent query results are shown." %}</h4>

<div id='searchform_outer' class='well '>
<form name='adminsearch' id='adminsearch' method='get' action='{{PREFIX_URL}}/analysis/batch_edit_view/'>
{% csrf_token %}
<div class="panel panel-default">
<div class="panel-heading" data-toggle="collapse" data-target="#query-area">{% trans "Construct Filter" %}
</div>
<div id='query-area' class='collapse {% if request.GET|length == 0 and not show_all %} in {% endif %}'>
<div id='query-area' class='collapse'>
<div id='searchformwell' class='well'>

<div class="hidden">
Expand Down

0 comments on commit 58bf68e

Please sign in to comment.