Coverage for portality / view / tours.py: 35%
31 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-05-05 00:09 +0100
« prev ^ index » next coverage.py v7.13.5, created at 2026-05-05 00:09 +0100
1import json
2import yaml
3import os
5from flask import Blueprint, make_response, request, abort
6from portality.core import app
7from portality.bll import DOAJ
9blueprint = Blueprint('tours', __name__)
11@blueprint.route('/<content_id>', methods=['GET'])
12def tour(content_id=None):
13 tourdir = os.path.join(app.config["BASE_FILE_PATH"], "..", "cms", "tours")
14 tourpath = os.path.join(tourdir, content_id + ".yml")
15 with open(tourpath) as f:
16 data = yaml.load(f, Loader=yaml.FullLoader)
18 idx = 0
19 for d in data.get("steps"):
20 idx += 1
21 d["step"] = idx
23 resp = make_response(json.dumps(data.get("steps", [])))
24 resp.mimetype = "application/json"
25 return resp
27@blueprint.route("/<content_id>/seen", methods=["GET"])
28def tour_seen(content_id=None):
29 tourSvc = DOAJ.tourService()
30 if not tourSvc.validateContentId(content_id):
31 abort(404)
33 resp = make_response()
34 cookie_key = app.config.get("TOUR_COOKIE_PREFIX") + content_id
35 cookie_value = content_id
36 max_age = app.config.get("TOUR_COOKIE_MAX_AGE")
37 resp.set_cookie(cookie_key, cookie_value, max_age=max_age, samesite=None, secure=True)
38 return resp