Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 12 additions & 1 deletion src/solrizer/web.py
Original file line number Diff line number Diff line change
Expand Up @@ -130,11 +130,12 @@

from solrizer import __version__
from solrizer.errors import (
ConfigurationError,
NoResourceRequested,
ProblemDetailError,
ResourceNotAvailable,
UnknownCommand,
problem_detail_response, ConfigurationError,
problem_detail_response,
)
from solrizer.indexers import IndexerContext, IndexerError
from solrizer.solr import create_atomic_update
Expand Down Expand Up @@ -260,6 +261,16 @@ def create_app():
if '__default__' not in app.config['INDEXERS']:
app.config['INDEXERS']['__default__'] = ['content_model']

@app.before_request
def before_request():
plastron_cache_enabled = request.args.get('plastron-cache-enabled')
if plastron_cache_enabled == 'no' or plastron_cache_enabled == '0':
app.config['PLASTRON_CACHE_ENABLED'] = False
client.session = get_session(app.config)
else:
app.config['PLASTRON_CACHE_ENABLED'] = True
client.session = get_session(app.config)

# Source: https://gist.github.com/alexaleluia12/e40f1dfa4ce598c2e958611f67d28966
@app.after_request
def after_request(response):
Expand Down
18 changes: 15 additions & 3 deletions tests/test_web.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
from typing import Any
from unittest.mock import patch, MagicMock
from unittest.mock import MagicMock, patch

import pytest
from requests import Session
from requests_cache import CachedSession, BaseCache
from requests_cache import BaseCache, CachedSession

from solrizer.web import load_config_from_files, get_session
from solrizer.web import get_session, load_config_from_files


def test_load_config_from_files(datadir):
Expand Down Expand Up @@ -88,3 +88,15 @@ def test_health_check(client):
assert 'total' in memory
assert 'used' in memory
assert 'used_percent' in memory


def test_session_before_request(client, app):
app.config['PLASTRON_CACHE_ENABLED'] = True

response = client.get('/', query_string={'plastron-cache-enabled': 'no'})
assert response.status_code == 200
assert isinstance(app.config['repo'].client.session, Session)

response = client.get('/')
assert response.status_code == 200
assert isinstance(app.config['repo'].client.session, CachedSession)