Add keyboard view.
[redakcja.git] / src / toolbar / templatetags / toolbar_tags.py
1 # This file is part of FNP-Redakcja, licensed under GNU Affero GPLv3 or later.
2 # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
3 #
4 from django import template
5 from toolbar import models
6
7 register = template.Library()
8
9
10 @register.inclusion_tag('toolbar/toolbar.html')
11 def toolbar():
12     return {'toolbar_groups': models.ButtonGroup.objects.all().select_related()}
13
14
15 @register.inclusion_tag('toolbar/button.html')
16 def toolbar_button(b):
17     return {'button': b}
18
19
20 @register.inclusion_tag('toolbar/keyboard.html')
21 def keyboard(groups):
22     keys = {}
23     for g in groups:
24         for b in g.button_set.all():
25             if b.accesskey:
26                 keys[b.accesskey] = b
27     rows = [
28         [
29             {
30                 'symbol': symbol,
31                 'lower': keys.get(symbol.lower()),
32                 'upper': keys.get(symbol),
33             }
34             for symbol in row
35         ]
36         for row in ['QWERTYUIOP', 'ASDFGHJKL', 'ZXCVBNM']
37     ]
38
39     return {'rows': rows}