def clean_file(self): raw_data = self.cleaned_data['file'].read() try: data = json.loads(raw_data) except Exception as ex: self._save_invalid_ureport(raw_data, str(ex)) raise forms.ValidationError('Invalid JSON file') converted = ureport.convert_to_str(data) try: converted = ureport.validate(converted) except Exception as exp: reporter = None if ("reporter" in converted and "name" in converted["reporter"] and "version" in converted["reporter"]): reporter = "{0} {1}".format(converted["reporter"]["name"], converted["reporter"]["version"]) self._save_invalid_ureport(json.dumps(data, indent=2), str(exp), reporter=reporter) raise forms.ValidationError('Validation failed: %s' % exp) return dict(converted=converted, json=raw_data)
def save_report(self, filename): ''' Save report located in sample_reports directory with `filename`. ''' path = os.path.join('sample_reports', filename) with open(path) as f: report = ureport.convert_to_str(json.loads(f.read())) report = ureport.validate(report) mtime = datetime.datetime.utcfromtimestamp(os.stat(path).st_mtime) ureport.add_report(report, self.db, utctime=mtime) self.db.session.flush()