示例#1
0
文件: forms.py 项目: rtnpro/faf
    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)
示例#2
0
文件: faftests.py 项目: rtnpro/faf
    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()