- Allow and improve viewing of different content types. First type implemented: changelog
This commit is contained in:
@@ -9,9 +9,17 @@ from common.models.user import Tenant
|
||||
from common.utils.database import Database
|
||||
from common.utils.nginx_utils import prefixed_url_for
|
||||
from .basic_forms import SessionDefaultsForm
|
||||
from common.extensions import content_manager
|
||||
|
||||
import markdown
|
||||
|
||||
basic_bp = Blueprint('basic_bp', __name__)
|
||||
|
||||
# Markdown filter toevoegen aan Jinja2
|
||||
@basic_bp.app_template_filter('markdown')
|
||||
def render_markdown(text):
|
||||
return markdown.markdown(text, extensions=['tables', 'fenced_code'])
|
||||
|
||||
|
||||
@basic_bp.before_request
|
||||
def log_before_request():
|
||||
@@ -104,28 +112,57 @@ def check_csrf():
|
||||
})
|
||||
|
||||
|
||||
@basic_bp.route('/release_notes', methods=['GET'])
|
||||
@basic_bp.route('/content/<content_type>', methods=['GET'])
|
||||
@roles_accepted('Super User', 'Partner Admin', 'Tenant Admin')
|
||||
def release_notes():
|
||||
"""Display the CHANGELOG.md file."""
|
||||
def view_content(content_type):
|
||||
"""
|
||||
Show content like release notes, terms of use, etc.
|
||||
|
||||
Args:
|
||||
content_type (str): Type content (eg. 'changelog', 'terms', 'privacy')
|
||||
"""
|
||||
try:
|
||||
# Construct the URL to the CHANGELOG.md file in the static directory
|
||||
static_url = url_for('static', filename='docs/CHANGELOG.md', _external=True)
|
||||
current_app.logger.debug(f"Showing content {content_type}")
|
||||
major_minor = request.args.get('version')
|
||||
patch = request.args.get('patch')
|
||||
|
||||
# Make a request to get the content of the CHANGELOG.md file
|
||||
response = requests.get(static_url)
|
||||
response.raise_for_status() # Raise an exception for HTTP errors
|
||||
# Gebruik de ContentManager om de content op te halen
|
||||
content_data = content_manager.read_content(content_type, major_minor, patch)
|
||||
|
||||
# Get the content of the response
|
||||
markdown_content = response.text
|
||||
if not content_data:
|
||||
flash(f'Content van type {content_type} werd niet gevonden.', 'danger')
|
||||
return redirect(prefixed_url_for('basic_bp.index'))
|
||||
|
||||
# Titels en beschrijvingen per contenttype
|
||||
titles = {
|
||||
'changelog': 'Release Notes',
|
||||
'terms': 'Terms & Conditions',
|
||||
'privacy': 'Privacy Statement',
|
||||
# Voeg andere types toe indien nodig
|
||||
}
|
||||
|
||||
descriptions = {
|
||||
'changelog': 'EveAI Release Notes',
|
||||
'terms': "Terms & Conditions for using AskEveAI's Evie",
|
||||
'privacy': "Privacy Statement for AskEveAI's Evie",
|
||||
# Voeg andere types toe indien nodig
|
||||
}
|
||||
|
||||
return render_template(
|
||||
'basic/view_markdown.html',
|
||||
title='Release Notes',
|
||||
description='EveAI Release Notes and Change History',
|
||||
markdown_content=markdown_content
|
||||
title=titles.get(content_type, content_type.capitalize()),
|
||||
description=descriptions.get(content_type, ''),
|
||||
markdown_content=content_data['content'],
|
||||
version=content_data['version']
|
||||
)
|
||||
except Exception as e:
|
||||
current_app.logger.error(f"Error displaying release notes: {str(e)}")
|
||||
flash(f'Error displaying release notes: {str(e)}', 'danger')
|
||||
current_app.logger.error(f"Error displaying content {content_type}: {str(e)}")
|
||||
flash(f'Error displaying content: {str(e)}', 'danger')
|
||||
return redirect(prefixed_url_for('basic_bp.index'))
|
||||
|
||||
@basic_bp.route('/release_notes', methods=['GET'])
|
||||
@roles_accepted('Super User', 'Partner Admin', 'Tenant Admin')
|
||||
def release_notes():
|
||||
"""Doorverwijzen naar de nieuwe content view voor changelog"""
|
||||
current_app.logger.debug(f"Redirecting to content viewer")
|
||||
return redirect(prefixed_url_for('basic_bp.view_content', content_type='changelog'))
|
||||
|
||||
Reference in New Issue
Block a user