diff options
author | Kirill Yakovenko <kirill.yakovenko@gmail.com> | 2016-07-27 18:26:39 +0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-07-27 18:26:39 +0700 |
commit | 1a808a0ea80b14aad99faf0b29683c5331329894 (patch) | |
tree | 85d70fa62b79968ca4e1cfbb18011efe792e1116 /omaha_server/crash/forms.py | |
parent | 4056a61b94d466716890d411d975d7d66d8bf1f3 (diff) | |
parent | c6216fc4e013ce13124f754bdf23c38c373ddf3c (diff) | |
download | omaha-server-1a808a0ea80b14aad99faf0b29683c5331329894.zip omaha-server-1a808a0ea80b14aad99faf0b29683c5331329894.tar.gz omaha-server-1a808a0ea80b14aad99faf0b29683c5331329894.tar.bz2 |
Merge pull request #207 from Crystalnix/crash_issues
close #203 The bug relating to uploading new crash reports has been fixed.
Diffstat (limited to 'omaha_server/crash/forms.py')
-rw-r--r-- | omaha_server/crash/forms.py | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/omaha_server/crash/forms.py b/omaha_server/crash/forms.py index 27cbb16..233e97a 100644 --- a/omaha_server/crash/forms.py +++ b/omaha_server/crash/forms.py @@ -52,17 +52,20 @@ class CrashFrom(forms.ModelForm): def clean_upload_file_minidump(self): file = self.cleaned_data["upload_file_minidump"] - if file.name.endswith('.tar'): - t_file = BytesIO(file.read()) - t_file = tarfile.open(fileobj=t_file, mode='r') - self.cleaned_data['archive_file'] = file - dump_name = filter(lambda i: i.endswith('.dmp'), t_file.getnames()) + if file and file.name.endswith('.tar'): try: - file_name = next(dump_name) - file = t_file.extractfile(file_name) - file = SimpleUploadedFile(file_name, file.read()) - except StopIteration: - return None + t_file = BytesIO(file.read()) + t_file = tarfile.open(fileobj=t_file, mode='r') + self.cleaned_data['archive_file'] = file + dump_name = filter(lambda i: i.endswith('.dmp'), t_file.getnames()) + try: + file_name = next(dump_name) + file = t_file.extractfile(file_name) + file = SimpleUploadedFile(file_name, file.read()) + except StopIteration: + return None + except tarfile.TarError as err: + raise forms.ValidationError('The tar file is broken, error: {0}'.format(err.message)) return file def clean_minidump_size(self): |