Exemple #1
0
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"])
Exemple #2
0
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"])
Exemple #3
0
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"])