summaryrefslogtreecommitdiff
path: root/ishtar_common/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common/views.py')
-rw-r--r--ishtar_common/views.py76
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: