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.py48
1 files changed, 42 insertions, 6 deletions
diff --git a/ishtar_common/views.py b/ishtar_common/views.py
index 9ff53e89a..1536868d4 100644
--- a/ishtar_common/views.py
+++ b/ishtar_common/views.py
@@ -1890,25 +1890,30 @@ class ImportStepByStepView(IshtarMixin, LoginRequiredMixin, TemplateView):
self.errors = [e.message]
return super(ImportStepByStepView, self).get(request, *args,
**kwargs)
- is_current = self.current_line_number == self.imprt_obj.current_line
if self.imprt_obj.get_number_of_lines() >= self.current_line_number:
self.current_line_number += 1
else:
self.current_line_number = None
- if is_current:
- self.imprt_obj.current_line = self.current_line_number
- self.imprt_obj.save()
+ self.imprt_obj.current_line = self.current_line_number
+ self.imprt_obj.save()
return self.current_line_number
def post(self, request, *args, **kwargs):
if not request.POST or request.POST.get('valid', None) not in (
- 'change-csv', 'import'):
+ 'change-csv', 'import', 'change-page'):
return self.get(request, *args, **kwargs)
-
self.get_import()
+
+ if request.POST.get('valid') == 'change-page':
+ return HttpResponseRedirect(
+ reverse('import_step_by_step',
+ args=[self.imprt_obj.pk,
+ request.POST.get('line-to-go', None)]))
+
if request.POST.get('valid') == 'change-csv':
self.update_csv(request)
return self.get(request, *args, **kwargs)
+
if not self.import_line(request, *args, **kwargs):
return HttpResponseRedirect(reverse('current_imports'))
else:
@@ -1932,16 +1937,47 @@ class ImportStepByStepView(IshtarMixin, LoginRequiredMixin, TemplateView):
**kwargs)
if not data or not data[0]:
self.errors = self.imprt.errors
+ if not self.errors:
+ self.errors = [("", "", _(u"No data provided"))]
else:
self.new_data = data[:]
return super(ImportStepByStepView, self).get(request, *args, **kwargs)
+ def get_pagination(self, dct):
+ pagination_step = 10
+ 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)
+ already_imported = self.imprt_obj.imported_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)
+ )
+ else:
+ dct['page_numbers'].append(
+ (_(u"Previous"), self.imprt_obj.skip_lines, False, False)
+ )
+ 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))
+ else:
+ dct['page_numbers'].append((_(u"Next"), total_line_nb, False,
+ False))
+
def get_context_data(self, **kwargs):
dct = super(ImportStepByStepView, self).get_context_data(**kwargs)
dct['import'] = self.imprt_obj
dct['line_number_displayed'] = self.current_line_number + 1
dct['line_is_imported'] = self.imprt_obj.line_is_imported(
self.current_line_number)
+ self.get_pagination(dct)
dct['errors'] = self.errors
if self.errors:
if self.imprt.current_csv_line: