diff options
Diffstat (limited to 'ishtar_common/views.py')
-rw-r--r-- | ishtar_common/views.py | 76 |
1 files changed, 59 insertions, 17 deletions
diff --git a/ishtar_common/views.py b/ishtar_common/views.py index d4fb68004..2c2a6fe7e 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -1822,6 +1822,11 @@ class ImportListView(IshtarMixin, LoginRequiredMixin, ListView): imprt.delayed_importation(request.session.session_key) else: imprt.importation() + elif action == 'CH': + if settings.USE_BACKGROUND_TASK: + imprt.delayed_check_modified(request.session.session_key) + else: + imprt.check_modified() elif action == 'IS': if imprt.current_line is None: imprt.current_line = imprt.skip_lines @@ -1944,35 +1949,67 @@ class ImportStepByStepView(IshtarMixin, LoginRequiredMixin, TemplateView): return super(ImportStepByStepView, self).get(request, *args, **kwargs) def get_pagination(self, dct): - pagination_step = 10 + pagination_step = 5 + only_modified = not self.kwargs.get('all_pages', False) + dct['all'] = not only_modified + dct['import_url'] = 'import_step_by_step' if only_modified else \ + 'import_step_by_step_all' line_nb = self.imprt_obj.get_number_of_lines() total_line_nb = self.imprt_obj.skip_lines + line_nb - delta = int((self.current_line_number + 1) / pagination_step) + delta = 0 already_imported = [] if self.imprt_obj.imported_line_numbers: already_imported = self.imprt_obj.imported_line_numbers.split(',') + changes = [] + if self.imprt_obj.changed_line_numbers: + changes = self.imprt_obj.changed_line_numbers.split(',') dct['page_is_last'] = self.current_line_number == line_nb - dct['page_numbers'] = [] # label, number, enabled, is_imported - if delta > 0: - dct['page_numbers'].append( - (_(u"Previous"), delta * pagination_step - 1, True, False) + # label, number, enabled, is_imported, has_changes + dct['page_numbers'] = [] + # first pass for the delta + current = 0 + for idx in range(self.imprt_obj.skip_lines, total_line_nb): + imported = str(idx) in already_imported + changed = str(idx) in changes + if only_modified and (imported or not changed): + continue + current += 1 + if idx == self.current_line_number - 1: + delta = int(current / pagination_step) + + current, has_next, previous = 0, False, None + for idx in range(self.imprt_obj.skip_lines, total_line_nb): + if current >= ((delta + 1) * pagination_step): + has_next = idx + break + imported = str(idx) in already_imported + changed = str(idx) in changes + if only_modified and (imported or not changed): + continue + current += 1 + if current <= (delta * pagination_step): + previous = idx + continue + nb = idx + 1 + dct['page_numbers'].append((nb, nb, True, imported, changed)) + + if previous: + dct['page_numbers'].insert(0, + (_(u"Previous"), previous + 1, True, False, + True) ) else: - dct['page_numbers'].append( - (_(u"Previous"), self.imprt_obj.skip_lines, False, False) + dct['page_numbers'].insert(0, + (_(u"Previous"), self.imprt_obj.skip_lines, False, False, True) ) - for idx in range(0, 10): - nb = idx + delta * pagination_step - if nb > self.imprt_obj.skip_lines and nb <= total_line_nb: - imported = str(nb) in already_imported - dct['page_numbers'].append((nb, nb, True, imported)) - if nb + 1 <= total_line_nb: - dct['page_numbers'].append((_(u"Next"), nb + 1, True, False)) + if has_next: + dct['page_numbers'].append((_(u"Next"), has_next + 1, True, False, + True)) else: dct['page_numbers'].append((_(u"Next"), total_line_nb, False, - False)) + False, True)) def get_context_data(self, **kwargs): dct = super(ImportStepByStepView, self).get_context_data(**kwargs) @@ -2107,7 +2144,12 @@ class ImportStepByStepView(IshtarMixin, LoginRequiredMixin, TemplateView): old_and_updated) updated_objects.append((label, obj, values, old_and_updated)) - dct['have_change'] = main_changed + dct['have_change'] = main_changed or self.imprt.new_objects + if dct["have_change"]: + self.imprt_obj.add_changed_line(self.current_line_number) + else: + self.imprt_obj.remove_changed_line(self.current_line_number) + dct['updated_objects'] = [] dct['matched_objects'] = [] for path, obj, values, old_and_updated in updated_objects: |