Exemple #1
0
 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)
Exemple #2
0
    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)
Exemple #3
0
    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)
Exemple #4
0
 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)
Exemple #6
0
    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)
Exemple #7
0
    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)
Exemple #8
0
 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)