def process_csv_hint(self): data = [] for i in range(int(self.request.POST.get('rows'))): data.append( [ self.request.POST.get('col[%d][%d]' % (i, j)) for j in range(int(self.request.POST.get('cols'))) ] ) if 'reference' not in self.request.POST: messages.error(self.request, _('You need to select the column containing the payment reference.')) return self.assign_view(data) try: hint = csvimport.new_hint(self.request.POST) except Exception as e: logger.error('Parsing hint failed: ' + str(e)) messages.error(self.request, _('We were unable to process your input.')) return self.assign_view(data) o = getattr(self.request, 'event', self.request.organizer) try: o.settings.set('banktransfer_csvhint', hint) except Exception as e: # TODO: narrow down logger.error('Import using stored hint failed: ' + str(e)) pass else: parsed, __ = csvimport.parse(data, hint) return self.start_processing(parsed)
def process_csv_hint(self): try: data = json.loads(self.request.POST.get('data').strip()) except ValueError: messages.error(self.request, _('Invalid input data.')) return self.get(self.request, *self.args, **self.kwargs) if 'reference' not in self.request.POST: messages.error( self.request, _('You need to select the column containing the payment reference.' )) return self.assign_view(data) try: hint = csvimport.new_hint(self.request.POST) except Exception as e: logger.error('Parsing hint failed: ' + str(e)) messages.error(self.request, _('We were unable to process your input.')) return self.assign_view(data) o = getattr(self.request, 'event', self.request.organizer) try: o.settings.set('banktransfer_csvhint', hint) except Exception as e: # TODO: narrow down logger.error('Import using stored hint failed: ' + str(e)) pass else: parsed, __ = csvimport.parse(data, hint) return self.start_processing(parsed)
def process_csv_file(self): o = getattr(self.request, 'event', self.request.organizer) try: data = csvimport.get_rows_from_file(self.request.FILES['file']) except csv.Error as e: # TODO: narrow down logger.error('Import failed: ' + str(e)) messages.error(self.request, _('I\'m sorry, but we were unable to import this CSV file. Please ' 'contact support for help.')) return self.redirect_back() if len(data) == 0: messages.error(self.request, _('I\'m sorry, but we detected this file as empty. Please ' 'contact support for help.')) if o.settings.get('banktransfer_csvhint') is not None: hint = o.settings.get('banktransfer_csvhint', as_type=dict) try: parsed, good = csvimport.parse(data, hint) except csvimport.HintMismatchError: # TODO: narrow down logger.exception('Import using stored hint failed') else: if good: return self.start_processing(parsed) return self.assign_view(data)
def process_csv_hint(self): data = [] for i in range(int(self.request.POST.get('rows'))): data.append( [ self.request.POST.get('col[%d][%d]' % (i, j)) for j in range(int(self.request.POST.get('cols'))) ] ) if 'reference' not in self.request.POST: messages.error(self.request, _('You need to select the column containing the payment reference.')) return self.assign_view(data) try: hint = csvimport.new_hint(self.request.POST) except Exception as e: logger.error('Parsing hint failed: ' + str(e)) messages.error(self.request, _('We were unable to process your input.')) return self.assign_view(data) try: self.request.event.settings.set('banktransfer_csvhint', hint) except Exception as e: # TODO: narrow down logger.error('Import using stored hint failed: ' + str(e)) pass else: parsed = csvimport.parse(data, hint) return self.confirm_view(parsed)
def _test_from_sample_file(self, filename, expected, hint, expected_parsed): with open(os.path.join(DATA_DIR, filename), 'rb') as f: data = csvimport.get_rows_from_file(f) self.assertEqual(data, expected) parsed, good = csvimport.parse(data, hint) self.assertEqual(parsed, expected_parsed)
def process_csv_hint(self): try: data = json.loads(self.request.POST.get('data').strip()) except ValueError: messages.error(self.request, _('Invalid input data.')) return self.get(self.request, *self.args, **self.kwargs) if 'reference' not in self.request.POST: messages.error(self.request, _('You need to select the column containing the payment reference.')) return self.assign_view(data) try: hint = csvimport.new_hint(self.request.POST) except Exception as e: logger.error('Parsing hint failed: ' + str(e)) messages.error(self.request, _('We were unable to process your input.')) return self.assign_view(data) o = getattr(self.request, 'event', self.request.organizer) try: o.settings.set('banktransfer_csvhint', hint) except Exception as e: # TODO: narrow down logger.error('Import using stored hint failed: ' + str(e)) pass else: parsed, __ = csvimport.parse(data, hint) return self.start_processing(parsed)
def _test_from_sample_file(self, filename, expected, hint, expected_parsed): with open(os.path.join(DATA_DIR, filename), 'rb') as f: data = csvimport.get_rows_from_file(f) self.assertEqual(data, expected) parsed = csvimport.parse(data, hint) self.assertEqual(parsed, expected_parsed)