diff options
Diffstat (limited to 'ishtar_common/views.py')
-rw-r--r-- | ishtar_common/views.py | 48 |
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: |