from jinja2 import Template
from markupsafe import escape


class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def get_name(self):
        return self.name
    
    def get_age(self):
        return self.age


def test_1():
    name = "Федор"
    age = 28

    per = Person("Федор", 22)

    tm = Template("Мне {{ p.get_age() }} лет и зовут {{ p.get_name() }}.")
    msg = tm.render(p = per)
    print(msg)

'''
Экранирование и блоки raw, for, if
'''

data = '''{% raw %}Модуль Jinja вместо
определения {{ name }}
подставляет соответствующее значение{% endraw %}'''

link = '''В HTML-документе ссылки определяются как:
<a href="#">Ссылка</a>'''

def test_2():
    tm = Template(data)
    msg = tm.render()
    print(msg)

def test_3():
    tm = Template("{{ link | e}}")
    msg = tm.render(link=link)
    print(msg)

def test_4():
    msg = escape(link)
    print(msg)


'''Блок for, if'''

cities = [{'id':1, 'city': 'Москва'},
          {'id':5, 'city': 'Тверь'},
          {'id':7, 'city': 'Минск'},
          {'id':8, 'city': 'Смоленск'},
          {'id':11, 'city': 'Калуга'}]

link = '''<select name="cities">
{% for c in cities -%}
{% if c.id > 6 -%}
    <option value="{{c['id']}}">{{c['city']}}</option>
{% elif c.city == "Москва" -%}  
    <option>{{c['city']}}</option>
{% else -%}
    {{c['city']}}
{% endif -%}
{% endfor -%}
</select>'''

def test_5():
    tm = Template(link)
    msg = tm.render(cities=cities)
    print(msg)


def main():
    test_5()

if __name__ == '__main__':
    main()