import os

from otree import settings
from otree.session import SESSION_CONFIGS_DICT
from .cbv import AdminView


class DemoIndex(AdminView):
    url_pattern = '/demo'

    def vars_for_template(self):
        title = getattr(settings, 'DEMO_PAGE_TITLE', 'Demo')
        intro_html = getattr(settings, 'DEMO_PAGE_INTRO_HTML', '')
        session_info = []
        for session_config in SESSION_CONFIGS_DICT.values():
            session_info.append(
                {
                    'name': session_config['name'],
                    'display_name': session_config['display_name'],
                    'url': self.request.url_for(
                        'CreateDemoSession', config_name=session_config['name']
                    ),
                    'num_demo_participants': session_config['num_demo_participants'],
                }
            )

        if os.environ.get('OTREEHUB_PUB'):
            otreehub_app_name = os.environ.get('OTREEHUB_APP_NAME')
            otreehub_url = f'https://www.otreehub.com/projects/{otreehub_app_name}/'
        else:
            otreehub_url = ''

        return dict(
            session_info=session_info,
            title=title,
            intro_html=intro_html,
            is_debug=settings.DEBUG,
            otreehub_url=otreehub_url,
        )


class CreateDemoSession(AdminView):
    url_pattern = '/demo/{config_name}'

    def vars_for_template(self):
        return dict(config_name=self.request.path_params['config_name'])
