Спасибо @ 2ps, это была проблема. Мой DbObject не получал последние данные из БД, во-первых, добавление db.session.commit () помогло решить проблему.
def petchme(self):
db.session.commit()
self.dbObject = Patch.find_by_status('READY')
if self.dbObject:
print('Patch this')
else:
print('No patchgroup(s) in pipeline')
Хм мне нравится Интерфейсная идея, предложенная digiguru, но я использовал бы интерфейс на контейнерном Control1 вместо средств управления sub, поскольку на более логическое место для кода походит жить. Вот мое взятие на нем:
public interface IValidatableControl
{
bool IsValidControl();
}
затем реализуйте это на своем Control1
public class Control1 : IValidatableControl
{
... Other methods
public bool IsValidControl()
{
foreach(object c in this.Controls)
{
if(c.GetType() == "Control2")
return true;
}
return false;
}
}
Существуют, вероятно, лучшие способы записать это, но это должно дать Вам действительно идею начать.
Если Вы добавляете пользовательские элементы управления на лету, Вы могли бы заставить каждое управление реализовать тот же интерфейс с Проверить функцией. Тем путем можно загрузить средства управления в заполнителя в каждом родительском управлении на странице. Когда страница отправлена, просто цикл посредством средств управления в заполнителе, бросила их к интерфейсному классу и затем вызывает проверить функцию. Я не использую нестандартные элементы верификации, но можно создать список ошибок проверки с помощью объекта, возвращенного из проверить функции, можно представить этот набор ошибок проверки, какой бы ни путь Вам нравится.
Я думаю, что Вы могли сделать это путем присвоения общественной собственности в Control1, который ссылается на существование идентификатора Control2, и затем украсьте класс Control1 ValidationProperty. Я думаю что-то вдоль этих строк:
[ValidationProperty("Control2Ref")]
public partial class Control1 : UserControl
{
public string Control2Ref
{
get { return FindControl("Control2"); }
}
// rest of control 1 class
}
И затем необходимо смочь указать на RequiredFieldValidator на экземпляр Control1.
Один метод, который Вы могли попробовать, создает и поддерживает простую структуру XML, которая представляет Вашу иерархию пользовательского элемента управления. Вставьте или удалите из этой структуры любое время, Вы создаете или уничтожаете пользовательский пользовательский элемент управления. На сохранение проверьте это, иерархия управления, представленная в структуре XML, корректна. Вы могли сохранить xml в объекте Сессии сохранить его через обратные передачи.