import npyscreen class membership_data_model(): status_values = { 'V': 'Vollzahler', 'E': 'Ermäßigt', 'F': 'Fördermitglied' } schliessberechtigung_values = [ 'SSH', 'BLE', 'Telefon', 'Metallschluessel' ] def __init__(self, membership_data_dict): self.membership_data_dict = membership_data_dict self.forms = {} def add_edit_fields(self, parent_form): mem = self.membership_data_dict schliessberechtigung_value = [] if 'schliessberechtigung' in mem.keys() and set(mem['schliessberechtigung']).issubset(set(self.schliessberechtigung_values)): for entry in mem['schliessberechtigung']: schliessberechtigung_value.append(self.schliessberechtigung_values.index(entry)) status_value = 0 if 'status' in mem.keys() and mem['status'] in self.status_values.keys(): status_value = list(self.status_values.keys()).index(mem['status']) self.forms['status'] = parent_form.add(npyscreen.TitleSelectOne, name="Status: ", values=list(self.status_values.values()), value=status_value, max_height=3, scroll_exit=True) self.forms['von'] = parent_form.add(npyscreen.TitleText, name="Von: ", value=mem['von']) self.forms['bis'] = parent_form.add(npyscreen.TitleText, name="Bis: ", value=mem['bis']) self.forms['mitgliedsbeitrag'] = parent_form.add(npyscreen.TitleText, begin_entry_at=20, use_two_lines=False, name="Mitgliedsbeitrag: ", value=mem['mitgliedsbeitrag']) self.forms['spendenbeitrag'] = parent_form.add(npyscreen.TitleText, begin_entry_at=20, use_two_lines=False, name="Spendenbeitrag: ", value=mem['spendenbeitrag']) self.forms['schliessberechtigung'] = parent_form.add(npyscreen.TitleMultiSelect, name="Schliessberechtigung: ", values = self.schliessberechtigung_values, value = schliessberechtigung_value, max_height = len(self.schliessberechtigung_values) + 1, scroll_exit = True) self.forms['scan-antrag'] = parent_form.add(npyscreen.TitleText, begin_entry_at=18, use_two_lines=False, name="URI Scan Antrag: ", value=mem['scan-antrag']) def get_form_values_dict(self): membership_data_model = dict(zip(self.forms.keys(), map(lambda f: f.value, self.forms.values()))) membership_data_model['status'] = list(self.status_values.keys())[self.forms['status'].value[0]] if self.forms['schliessberechtigung'].get_selected_objects() is not None: membership_data_model['schliessberechtigung'] = list(self.forms['schliessberechtigung'].get_selected_objects()) else: membership_data_model['schliessberechtigung'] = [] return membership_data_model def has_changed(self): return self.membership_data_dict != self.get_form_values_dict()