### Apache Airflow version

2.6.3

### What happened

get_current_context() fail in a user_defined_macros

give
```
{abstractoperator.py:594} ERROR - Exception rendering Jinja template for task 'toot', field 'op_kwargs'. Template: {'arg': '{{ macro_run_id() }}'}
Traceback (most recent call last):
  File "/home/airflow/.local/lib/python3.8/site-packages/airflow/models/abstractoperator.py", line 586, in _do_render_template_fields
    rendered_content = self.render_template(
  File "/home/airflow/.local/lib/python3.8/site-packages/airflow/template/templater.py", line 168, in render_template
    return {k: self.render_template(v, context, jinja_env, oids) for k, v in value.items()}
  File "/home/airflow/.local/lib/python3.8/site-packages/airflow/template/templater.py", line 168, in <dictcomp>
    return {k: self.render_template(v, context, jinja_env, oids) for k, v in value.items()}
  File "/home/airflow/.local/lib/python3.8/site-packages/airflow/template/templater.py", line 156, in render_template
    return self._render(template, context)
  File "/home/airflow/.local/lib/python3.8/site-packages/airflow/models/abstractoperator.py", line 540, in _render
    return super()._render(template, context, dag=dag)
  File "/home/airflow/.local/lib/python3.8/site-packages/airflow/template/templater.py", line 113, in _render
    return render_template_to_string(template, context)
  File "/home/airflow/.local/lib/python3.8/site-packages/airflow/utils/helpers.py", line 288, in render_template_to_string
    return render_template(template, cast(MutableMapping[str, Any], context), native=False)
  File "/home/airflow/.local/lib/python3.8/site-packages/airflow/utils/helpers.py", line 283, in render_template
    return "".join(nodes)
  File "<template>", line 12, in root
  File "/home/airflow/.local/lib/python3.8/site-packages/jinja2/sandbox.py", line 393, in call
    return __context.call(__obj, *args, **kwargs)
  File "/home/airflow/.local/lib/python3.8/site-packages/jinja2/runtime.py", line 298, in call
    return __obj(*args, **kwargs)
  File "/opt/airflow/dags/dags/exporter/finance_closing.py", line 7, in macro_run_id
    schedule_interval = get_current_context()["dag"].schedule_interval.replace("@", "")
  File "/home/airflow/.local/lib/python3.8/site-packages/airflow/operators/python.py", line 784, in get_current_context
    raise AirflowException(
airflow.exceptions.AirflowException: Current context was requested but no context was found! Are you running within an airflow task?
```

### What you think should happen instead

User macros should be able to access to the current context 

```
airflow.exceptions.AirflowException: Current context was requested but no context was found! Are you running within an airflow task?
```

### How to reproduce

```python
from airflow.models import DAG
from airflow.operators.python import PythonOperator
from airflow.utils.dates import days_ago

def macro_run_id():
    from airflow.operators.python import get_current_context
    a = get_current_context()["dag"].schedule_interval.replace("@", "")
    if a == "None":
        a = "manual"
    return a


with DAG(dag_id="example2",
         start_date=days_ago(61),
         user_defined_macros={"macro_run_id": macro_run_id},
         schedule_interval="@monthly"):
    def toto(arg):
        print(arg)


    PythonOperator(task_id="toot", python_callable=toto,
                   op_kwargs={"arg": "{{ macro_run_id() }}"})

```


### Operating System

ubuntu 22.04

### Versions of Apache Airflow Providers

_No response_

### Deployment

Other

### Deployment details

_No response_

### Anything else

_No response_

### Are you willing to submit PR?

- [ ] Yes I am willing to submit a PR!

### Code of Conduct

- [X] I agree to follow this project's [Code of Conduct](https://github.com/apache/airflow/blob/main/CODE_OF_CONDUCT.md)

tables = [TaskFail, RenderedTaskInstanceFields, XCom]
        ti = create_task_instance()
        ti.note = "sample note"
        session.merge(ti)
        session.commit()
        for table in [TaskFail, RenderedTaskInstanceFields]:
            session.add(table(ti))
        XCom.set(key="key", value="value", task_id=ti.task_id, dag_id=ti.dag_id, run_id=ti.run_id)
        session.commit()
        for table in tables:
            assert session.query(table).count() == 1
        filter_kwargs = dict(dag_id=ti.dag_id, task_id=ti.task_id, run_id=ti.run_id, map_index=ti.map_index)
        ti_note = session.query(TaskInstanceNote).filter_by(**filter_kwargs).one()
        assert ti_note.content == "sample note"
        ti.clear_db_references(session)
        for table in tables:
            assert session.query(table).count() == 0
        assert session.query(TaskInstanceNote).filter_by(**filter_kwargs).one_or_none() is None
@pytest.mark.parametrize("pool_override", [None, "test_pool2"])
def test_refresh_from_task(pool_override):