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

1import json 

2import yaml 

3import os 

4 

5from flask import Blueprint, make_response, request, abort 

6from portality.core import app 

7from portality.bll import DOAJ 

8 

9blueprint = Blueprint('tours', __name__) 

10 

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) 

17 

18 idx = 0 

19 for d in data.get("steps"): 

20 idx += 1 

21 d["step"] = idx 

22 

23 resp = make_response(json.dumps(data.get("steps", []))) 

24 resp.mimetype = "application/json" 

25 return resp 

26 

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) 

32 

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