def _do_create_result( workflow_id: int, wf_module: WfModule, result: FetchResult, now: timezone.datetime ) -> None: """ Do database manipulations for create_result(). Modify `wf_module` in-place. Do *not* do the logic in ChangeDataVersionCommand. We're creating a new version, not doing something undoable. Raise WfModule.DoesNotExist or Workflow.DoesNotExist in case of a race. """ error = "" if result.errors: if result.errors[0].message.id != "TODO_i18n": raise RuntimeError("TODO handle i18n-ready fetch-result errors") elif result.errors[0].quick_fixes: raise RuntimeError("TODO handle quick fixes from fetches") else: error = result.errors[0].message.args["text"] with _locked_wf_module(workflow_id, wf_module): storedobjects.create_stored_object( workflow_id, wf_module.id, result.path, stored_at=now ) storedobjects.enforce_storage_limits(wf_module) wf_module.fetch_error = error wf_module.is_busy = False wf_module.last_update_check = now wf_module.save(update_fields=["fetch_error", "is_busy", "last_update_check"])
def _do_mark_result_unchanged(workflow_id: int, wf_module: WfModule, now: timezone.datetime) -> None: """ Do database manipulations for mark_result_unchanged(). Modify `wf_module` in-place. Raise WfModule.DoesNotExist or Workflow.DoesNotExist in case of a race. """ with _locked_wf_module(workflow_id, wf_module): wf_module.is_busy = False wf_module.last_update_check = now wf_module.save(update_fields=["is_busy", "last_update_check"])
def _do_create_result(workflow_id: int, wf_module: WfModule, result: FetchResult, now: timezone.datetime) -> None: """ Do database manipulations for create_result(). Modify `wf_module` in-place. Do *not* do the logic in ChangeDataVersionCommand. We're creating a new version, not doing something undoable. Raise WfModule.DoesNotExist or Workflow.DoesNotExist in case of a race. """ with _locked_wf_module(workflow_id, wf_module): storedobjects.create_stored_object(workflow_id, wf_module.id, result.path, stored_at=now) storedobjects.enforce_storage_limits(wf_module) wf_module.fetch_errors = result.errors wf_module.is_busy = False wf_module.last_update_check = now wf_module.save( update_fields=["fetch_errors", "is_busy", "last_update_check"])