def save_result(data): res, error = validate_result(data) if error: return res, True else: assert(isinstance(res, Environment)) e = res p, created = Project.objects.get_or_create(name=data["project"]) branch, created = Branch.objects.get_or_create(name=data["branch"], project=p) b, created = Benchmark.objects.get_or_create(name=data["benchmark"]) try: rev = branch.revisions.get(commitid=data['commitid']) except Revision.DoesNotExist: rev_date = data.get("revision_date") # "None" (as string) can happen when we urlencode the POST data if not rev_date or rev_date in ["", "None"]: rev_date = datetime.today() rev = Revision(branch=branch, project=p, commitid=data['commitid'], date=rev_date) try: rev.full_clean() except ValidationError as e: return str(e), True if p.repo_type not in ("N", ""): try: saverevisioninfo(rev) except StandardError, e: logging.warning("unable to save revision %s info: %s", rev, e, exc_info=True) rev.save()
def save_result(data): res, error = validate_result(data) if error: return res, True else: assert(isinstance(res, Environment)) env = res p, created = Project.objects.get_or_create(name=data["project"]) branch, created = Branch.objects.get_or_create(name=data["branch"], project=p) b, created = Benchmark.objects.get_or_create(name=data["benchmark"]) try: rev = branch.revisions.get(commitid=data['commitid']) except Revision.DoesNotExist: rev_date = data.get("revision_date") # "None" (as string) can happen when we urlencode the POST data if not rev_date or rev_date in ["", "None"]: rev_date = datetime.today() rev = Revision(branch=branch, project=p, commitid=data['commitid'], date=rev_date) try: rev.full_clean() except ValidationError as e: return str(e), True if p.repo_type not in ("N", ""): try: saverevisioninfo(rev) except RuntimeError as e: logger.warning("unable to save revision %s info: %s", rev, e, exc_info=True) rev.save() exe, created = Executable.objects.get_or_create( name=data['executable'], project=p ) try: r = Result.objects.get( revision=rev, executable=exe, benchmark=b, environment=env) except Result.DoesNotExist: r = Result(revision=rev, executable=exe, benchmark=b, environment=env) r.value = data["result_value"] if 'result_date' in data: r.date = data["result_date"] elif rev.date: r.date = rev.date else: r.date = datetime.now() r.std_dev = data.get('std_dev') r.val_min = data.get('min') r.val_max = data.get('max') r.full_clean() r.save() return (rev, exe, env), False
def save_result(data): res, error = validate_result(data) if error: return res, True else: assert(isinstance(res, Environment)) env = res p, created = Project.objects.get_or_create(name=data["project"]) branch, created = Branch.objects.get_or_create(name=data["branch"], project=p) b, created = Benchmark.objects.get_or_create(name=data["benchmark"]) try: rev = branch.revisions.get(commitid=data['commitid']) except Revision.DoesNotExist: rev_date = data.get("revision_date") # "None" (as string) can happen when we urlencode the POST data if not rev_date or rev_date in ["", "None"]: rev_date = datetime.today() rev = Revision(branch=branch, project=p, commitid=data['commitid'], date=rev_date) try: rev.full_clean() except ValidationError as e: return str(e), True if p.repo_type not in ("N", ""): try: saverevisioninfo(rev) except RuntimeError as e: logging.warning("unable to save revision %s info: %s", rev, e, exc_info=True) rev.save() exe, created = Executable.objects.get_or_create( name=data['executable'], project=p ) try: r = Result.objects.get( revision=rev,executable=exe,benchmark=b,environment=env) except Result.DoesNotExist: r = Result(revision=rev,executable=exe,benchmark=b,environment=env) r.value = data["result_value"] if 'result_date' in data: r.date = data["result_date"] elif rev.date: r.date = rev.date else: r.date = datetime.now() r.std_dev = data.get('std_dev') r.val_min = data.get('min') r.val_max = data.get('max') r.full_clean() r.save() return (rev, exe, env), False