Skip to content

Commit

Permalink
Fix import file_path generation
Browse files Browse the repository at this point in the history
Fixes: https://sentry.io/nyaruka/rapidpro/issues/701555086/

This fix includes the file_path_prefix length when truncating the file
name.
  • Loading branch information
dodobas committed Sep 28, 2018
1 parent b318518 commit 4436fa4
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 6 deletions.
8 changes: 6 additions & 2 deletions smartmin/csv_imports/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,15 @@


def generate_file_path(instance, filename):

file_path_prefix = 'csv_imports/'

name, extension = os.path.splitext(filename)

if len(name) + len(extension) >= 100:
name = name[:100-len(extension)]
name = name[:100-len(extension)-len(file_path_prefix)]

return "csv_imports/%s%s" % (name, extension)
return "%s%s%s" % (file_path_prefix, name, extension)


class ImportTask(SmartModel):
Expand Down
11 changes: 7 additions & 4 deletions smartmin/csv_imports/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,11 @@ def test_generate_file_path(self):
self.assertEquals(generate_file_path(ImportTask(), 'allo.foo.bar'), 'csv_imports/allo.foo.bar')

long_name = 'foo' * 100
self.assertEquals(generate_file_path(ImportTask(), '%s.xls.csv' % long_name),
'csv_imports/%s.csv' % long_name[:96])

self.assertEquals(generate_file_path(ImportTask(), '%s.abc.xlsx' % long_name),
'csv_imports/%s.xlsx' % long_name[:95])
test_file_name = '%s.xls.csv' % long_name
self.assertEquals(len(generate_file_path(ImportTask(), test_file_name)), 100)
self.assertEquals(generate_file_path(ImportTask(), test_file_name), 'csv_imports/%s.csv' % long_name[:84])

test_file_name = '%s.abc.xlsx' % long_name
self.assertEquals(len(generate_file_path(ImportTask(), test_file_name)), 100)
self.assertEquals(generate_file_path(ImportTask(), test_file_name), 'csv_imports/%s.xlsx' % long_name[:83])

0 comments on commit 4436fa4

Please sign in to comment.