def run(self, request, context): base = self.parent is_get_data = context.isGetData # Получаем объект по id try: obj = base.get_row(context.id) except base._nofound_exception: return OperationResult.by_message(MSG_DOESNOTEXISTS % context.id) # Разница между новым и созданным объектов в том, # что у нового нет id или он пустой create_new = True if isinstance(obj, dict) and obj.get('id') is not None: create_new = False elif hasattr(obj, 'id') and getattr(obj, 'id') is not None: create_new = False if create_new and base.add_window: win = utils.bind_object_from_request_to_form( request, base.get_row, base.add_window) else: win = utils.bind_object_from_request_to_form( request, base.get_row, base.edit_window) if not win.title: win.title = base.title win.form.url = base.save_action.get_absolute_url() # укажем адрес для чтения данных win.data_url = base.edit_window_action.get_absolute_url() # проверим право редактирования if not self.parent.has_sub_permission(request.user, self.parent.PERM_EDIT, request): exclude_list = ['close_btn', 'cancel_btn'] win.make_read_only(True, exclude_list) # У окна может быть процедура доп. конфигурации # под конкретный справочник if (hasattr(win, 'configure_for_dictpack') and callable(win.configure_for_dictpack)): win.configure_for_dictpack(action=self, pack=self.parent, request=request, context=context) if not is_get_data: # если запрашивали не данные - вернем окно return ExtUIScriptResult(base.get_edit_window(win)) else: # если просили данные, то выжмем их из окна обратно в объект, # т.к. в окне могли быть и другие данных (не из этого объекта) data_object = {} # т.к. мы не знаем какие поля должны быть у объекта - создадим # все, которые есть на форме all_fields = win.form._get_all_fields(win) for field in all_fields: data_object[field.name] = None win.form.to_object(data_object) return PreJsonResult({'success': True, 'data': data_object})
def run(self, request, context): base = self.parent is_get_data = context.isGetData # Получаем объект по id try: obj = base.get_row(context.id) except base._nofound_exception: return OperationResult.by_message(MSG_DOESNOTEXISTS % context.id) # Разница между новым и созданным объектов в том, # что у нового нет id или он пустой create_new = True if isinstance(obj, dict) and obj.get('id') is not None: create_new = False elif hasattr(obj, 'id') and getattr(obj, 'id') is not None: create_new = False if create_new and base.add_window: win = utils.bind_object_from_request_to_form( request, base.get_row, base.add_window) else: win = utils.bind_object_from_request_to_form( request, base.get_row, base.edit_window) if not win.title: win.title = base.title win.form.url = base.save_action.get_absolute_url() # укажем адрес для чтения данных win.data_url = base.edit_window_action.get_absolute_url() # проверим право редактирования if not self.parent.has_sub_permission( request.user, self.parent.PERM_EDIT, request): exclude_list = ['close_btn', 'cancel_btn'] win.make_read_only(True, exclude_list) # У окна может быть процедура доп. конфигурации # под конкретный справочник if (hasattr(win, 'configure_for_dictpack') and callable(win.configure_for_dictpack)): win.configure_for_dictpack(action=self, pack=self.parent, request=request, context=context) if not is_get_data: # если запрашивали не данные - вернем окно return ExtUIScriptResult(base.get_edit_window(win)) else: # если просили данные, то выжмем их из окна обратно в объект, # т.к. в окне могли быть и другие данных (не из этого объекта) data_object = {} # т.к. мы не знаем какие поля должны быть у объекта - создадим # все, которые есть на форме all_fields = win.form._get_all_fields(win) for field in all_fields: data_object[field.name] = None win.form.to_object(data_object) return PreJsonResult({'success': True, 'data': data_object})
def run(self, request, context): base = self.parent win = utils.bind_object_from_request_to_form(request, base.get_node, base.edit_node_window, base.contextTreeIdName) win.orig_request = request win.orig_context = context if not win.title: win.title = base.title win.form.url = base.save_node_action.get_absolute_url() # проверим право редактирования if not self.parent.has_perm(request, self.parent.PERM_EDIT): win.make_read_only(access_off=True, exclude_list=['close_btn', 'cancel_btn']) # У окна может быть процедура доп. конфигурации под конкретный справочник if hasattr(win, 'configure_for_dictpack') and callable( win.configure_for_dictpack): win.configure_for_dictpack(action=self, pack=self.parent, request=request, context=context) return ExtUIScriptResult(base.get_node_edit_window(win))
def run(self, request, context): """ """ base = self.parent win = utils.bind_object_from_request_to_form(request, base.get_row, base.edit_window, exclusion=['id']) if not win.title: win.title = base.title win.form.url = base.save_action.get_absolute_url() # укажем адрес для чтения данных win.data_url = base.edit_window_action.get_absolute_url() win.orig_request = request win.orig_context = context # У окна может быть процедура доп. конфигурации # под конкретный справочник if (hasattr(win, 'configure_for_dictpack') and callable(win.configure_for_dictpack)): win.configure_for_dictpack(action=self, pack=self.parent, request=request, context=context) return ExtUIScriptResult(base.get_edit_window(win))
def run(self, request, context): """ """ base = self.parent win = utils.bind_object_from_request_to_form( request, base.get_row, base.edit_window, exclusion=['id']) if not win.title: win.title = base.title win.form.url = base.save_action.get_absolute_url() # укажем адрес для чтения данных win.data_url = base.edit_window_action.get_absolute_url() win.orig_request = request win.orig_context = context # У окна может быть процедура доп. конфигурации # под конкретный справочник if (hasattr(win, 'configure_for_dictpack') and callable(win.configure_for_dictpack)): win.configure_for_dictpack( action=self, pack=self.parent, request=request, context=context) return ExtUIScriptResult(base.get_edit_window(win))
def run(self, request, context): base = self.parent win = utils.bind_object_from_request_to_form(request, base.get_row, base.edit_window) win.orig_request = request win.orig_context = context if not win.title: win.title = base.title win.form.url = base.save_row_action.get_absolute_url() # проверим право редактирования if not self.parent.has_perm(request, self.parent.PERM_EDIT): win.make_read_only(access_off=True, exclude_list=['cancel_btn', 'close_btn']) return ExtUIScriptResult(base.get_edit_window(win))
def run(self, request, context): base = self.parent win = utils.bind_object_from_request_to_form( request, base.get_row, base.edit_window) win.orig_request = request win.orig_context = context if not win.title: win.title = base.title win.form.url = base.save_row_action.get_absolute_url() # проверим право редактирования if not self.parent.has_perm(request, self.parent.PERM_EDIT): win.make_read_only( access_off=True, exclude_list=['cancel_btn', 'close_btn']) return ExtUIScriptResult(base.get_edit_window(win))
def run(self, request, context): base = self.parent try: win = utils.bind_object_from_request_to_form(request, base.get_row, base.edit_window) except self.parent._nofound_exception: return OperationResult.by_message(MSG_DOESNOTEXISTS % context.id) if not win.title: win.title = base.title win.form.url = base.save_row_action.get_absolute_url() # проверим право редактирования if not self.parent.has_perm(request, self.parent.PERM_EDIT): win.make_read_only( access_off=True, exclude_list=['cancel_btn', 'close_btn']) # У окна может быть процедура доп. конфигурации под конкретный справочник if hasattr(win, 'configure_for_dictpack') and callable(win.configure_for_dictpack): win.configure_for_dictpack(action=self, pack=self.parent, request=request, context=context) return ExtUIScriptResult(base.get_edit_window(win))
def run(self, request, context): base = self.parent win = utils.bind_object_from_request_to_form( request, base.get_node, base.edit_node_window, base.contextTreeIdName) win.orig_request = request win.orig_context = context if not win.title: win.title = base.title win.form.url = base.save_node_action.get_absolute_url() # проверим право редактирования if not self.parent.has_perm(request, self.parent.PERM_EDIT): win.make_read_only( access_off=True, exclude_list=['close_btn', 'cancel_btn']) # У окна может быть процедура доп. конфигурации под конкретный справочник if hasattr(win, 'configure_for_dictpack') and callable( win.configure_for_dictpack): win.configure_for_dictpack( action=self, pack=self.parent, request=request, context=context) return ExtUIScriptResult(base.get_node_edit_window(win))
def object_to_form(self, request, context, get_obj, win_cls): """ Заполнение элементов формы данными из объекта. (вынесено для удобства переопределения) """ return utils.bind_object_from_request_to_form(request, get_obj, win_cls)