2022-05-22 14:09:46 -04:00
|
|
|
from zope import component
|
|
|
|
|
|
|
|
import urwid
|
|
|
|
|
|
|
|
from .ColumnView import ColumnView
|
|
|
|
from .position_names import position_names
|
|
|
|
from ceo_common.interfaces import IConfig
|
|
|
|
|
|
|
|
|
|
|
|
class SetPositionsView(ColumnView):
|
|
|
|
def __init__(self, model, controller, app):
|
|
|
|
super().__init__(model, controller, app)
|
|
|
|
self.position_fields = {}
|
|
|
|
cfg = component.getUtility(IConfig)
|
|
|
|
avail = cfg.get('positions_available')
|
|
|
|
required = cfg.get('positions_required')
|
|
|
|
rows = []
|
|
|
|
for pos in avail:
|
2024-02-10 15:37:06 -05:00
|
|
|
name = position_names[pos]
|
2022-05-22 14:09:46 -04:00
|
|
|
if pos in required:
|
|
|
|
name += ' (*)'
|
|
|
|
else:
|
|
|
|
name += ' '
|
|
|
|
field = urwid.Edit()
|
|
|
|
self.position_fields[pos] = field
|
|
|
|
self.model.positions[pos] = ''
|
|
|
|
rows.append((urwid.Text(name, align='right'), field))
|
|
|
|
extra_widgets = [
|
|
|
|
urwid.Divider(),
|
|
|
|
# Note that this appears all the way on the left
|
|
|
|
urwid.Text('(*) Required')
|
|
|
|
]
|
|
|
|
self.set_rows(rows, extra_widgets=extra_widgets)
|
|
|
|
|
|
|
|
def activate(self):
|
|
|
|
self.controller.lookup_positions_async()
|
|
|
|
super().activate()
|
|
|
|
|
|
|
|
def update_fields(self):
|
|
|
|
for pos, field in self.position_fields.items():
|
2024-02-10 15:37:06 -05:00
|
|
|
field.edit_text = self.model.positions[pos]
|