Contents
- Подключение библиотеки
- Перечень методов
-
Перечень классов
- Информация о проекте (ProjectInfo)
- Сессия пользователя (UserSession)
- Окружение пользователя (Env)
- Подключение к базе данных (DBConnection)
- Курсор базы данных (DBCursor)
- Базовый класс объектов системы (ObjectWithPK)
- Контекст вызова (TableContext)
- Итератор по таблице объектов (TableIterator)
- Контейнер обеспечивающий перенос данных между клиентом и сервером (RContainer)
- Работа с датой и временем
- Файл настроек (Settings)
- Интерфейс передачи сообщений (Sender)
- XSLT преобразования (XSLTransformation)
- module backup
- module url
- Работа с исключениями
Подключение библиотеки
1 import api
Перечень методов
str escapeSQLString(str)
Преобразует строку к строке SQL для использования в SQL-запросе
Перечень классов
Информация о проекте (ProjectInfo)
Конструктор ProjectInfo()
project_name - Имя проекта
db_name - Названи базы данных
library - Данамическая библиотека
brokerURI - URI JMS брокера
initialize()
Инициализация
finalize()
Деинициализация
loadLibrary()
Загрузка библиотеки
str login(username, password)
Авторизация пользователя username(str) Имя пользователя password(str) Пароль Возвращает хэш по которому осуществляется дальнейшая авторизация
UserSession getUserSession(authorizationKey)
Получение сессии пользователя authorizationKey(str) Хэш-строка авторизации
dropUserSession(authorizationKey)
Завершить сессию пользователя authorizationKey(str) Хэш-строка авторизации
ObjectWithPK createDomainClass(name)
Создание класса предметной области name(str) Имя класса
1 # Пример создания объекта класса Town
2 town = env.getProjectInfo().createDomainClass('Town')
Sender getSender()
Получает интерфейс передачи сообщений
Settings getSettings()
Получает интерфейс доступа к файлу настроек
Сессия пользователя (UserSession)
Конструктора нет
env getEnv()
Получение окружения пользователя
int getUserID()
Получить ID пользователя
release()
Освободить сессию
Окружение пользователя (Env)
Конструктор Env(ProjectInfo)
Конструктор Env(ProjectInfo, dbName)
dbName (str) - Имя источника данных
int nextKey(table)
Получение идентификатора для таблицы table(str) Имя таблицы
ProjectInfo getProjectInfo()
Получение информации о проекте
int getUserID()
получение ID пользователя
DBConnection conn Подключение к БД
setFilterForTable(table, filter)
Установка фильтра на таблицу table(str) Имя таблицы filter(str) SQL-фильтр
1 # Пример установки фильтров на таблицу
2 prefix = args.get('prefix')
3 regionID = args.get('region' +prefix + 'ID')
4 if regionID and int(regionID):
5 env.setFilterForTable(self.getClassName(env), 'actuality = 0 AND regionID = ' + str(regionID))
Подключение к базе данных (DBConnection)
Конструктора нет
commit()
commit транзакции
rollback()
rollback транзакции
DBCursor cursor()
создание нового курсора
Курсор базы данных (DBCursor)
Конструктора нет
commit()
commit транзакции
rollback()
rollback транзакции
execute(query)
выполнение запроса query(str) - Запрос
int fetch()
fetch запроса
cancel()
закрытие курсора
int getColumnsCount()
получение количетсва колонок
int columnNameToColumnNum(name)
получение номера колонки по названию name(str) Имя колонки
bool isNull(colNum)
определяет равно ли значение колонки NULL colNum(int) Номер колонки
int getInt(colNum)
получение целого значения колонки colNum(int) Номер колонки
double getDouble(colNum)
получение дробного значения колонки colNum(int) Номер колонки
str getString(colNum)
получение символьного значения колонки colNum(int) Номер колонки
str getLikeString(colNum)
получение значения колонки с последующим преобразованием к строке colNum(int) Номер колонки
Базовый класс объектов системы (ObjectWithPK)
Конструктора нет
setSingular(value)
value (True, False) Устанавливает является ли класс сингулярным (без таблицы в БД)
getSingular()
Получает признак сингулярности
attributes()
Возвращает все аттрибуты объекта
int selectByID(env, fromDB = False)
Зачитать запись по ID env - окружение пользователя fromDB (bool) - Форсировать загрузку (загрузить напрямую из БД
str value(env)
Получает интерфейсное представление объекта в системе env - окружение пользователя
onCreate(env)
Подготовка к созданию нового объекта (инициализация объекта) env - окружение пользователя
onInsert(env)
Добавить запись в БД. Обновляет поля, для которых указан флаг restored env - окружение пользователя
onUpdate(env)
Обновить запись по ID. Обновляет поля, для которых указан флаг restored env - окружение пользователя
onDelete(env)
Удалить запись по ID env - окружение пользователя
addToTable(env)
Добавляет запись в таблицу Данный метод используется для формирования таблицы с данными. env - окружение пользователя
setParentKey(env, aKey, refFieldName)
Установка родительского ключа env - окружение пользователя aKey(int) - значение родительского ключа refFieldName(str) - поле, внешняя ссылка на родителя
setTableFilter(filter)
Установка фильтра на таблицу. Может использоваться в методе __parentkey__ filter (str) - SQL фильтр
updateSelectivelyByID(env)
Обновление в БД измененных полей объекта (полей, для которых установлен флаг updated) env - окружение пользователя
autoInsert(env)
Добавление объекта в БД с присвоением идентификатора env - окружение пользователя
autoSave(env)
Сохранение объекта в БД (с добавлением объекта в базу, если его там нет) env - окружение пользователя
bool exists(env)
Проверяет существование объекта с указанным ID env - окружение пользователя
clear()
Устанавливает поля объекта в значение по умолчанию
setClassName(name)
Установить для объекта название класса name(str) Название класса
setClassTable(name)
Установить для класса название таблицы БД из которой зачитывать объекты name(str) Название таблицы
str getClassName(env)
Определяет название класса env - окружение пользователя
str getClassTable(env)
Определяет SQL-таблицу класса env - окружение пользователя
RContainer processMessage(env, args)
Выполняет интерфейсные метод базового (С++) класса env - окружение пользователя args(RContainer) - Перечень аргументов и информация о методе
createAttribute(name, type, description)
Создает поле name с типом type в объекте. description - описание поля возможные типы:
IntegerField - создает поле IntegerField
BooleanField - создает поле BoolField
StringField - создает поле StringField
DocumentField - создает поле DocumentField
PictureField - создает поле PictureField
DateTimeField - создает поле DateTimeField
ReferenceField - создает поле ReferenceField
DoubleField - создает поле DoubleField
PathField - создает путь для отображения аттрибутов объектов по ссылкам
Данное поле предназначено для отображения аттрибутов объектов, на который ссылается объект в диалогах и таблицах. Например, есть класс Town (город), который ссылается на Region (регион) по полю regionID и необходимо отображать поля name (имя) и type (тип региона) в таблице и/или диаге города. Для этого достаточно создать два поля с типом PathField
1 self.createAttribute('regionID.name', 'PathField', 'Название региона')
2 self.createAttribute('regionID.type', 'PathField', 'Тип региона')
alter_cache(env)
Обновляет объект в кэше
Типы аттрибутов объектов
Общий интерфейс аттрибутов объектов
pureVirtual (аттрибут)
Флаг, указывающий, что поле виртуальное (не содержится в базе данных)
updated (аттрибут)
Флаг, указывающий, что поле изменено (было присвоено какое-либо значение)
restored (аттрибут)
Флаг, указывающий, что поле восстановлено из интерфейса (пришло в запросе от клиента)
readonly (аттрибут)
Флаг, указывающий, что поле не может быть изменено
invisible (аттрибут)
Флаг, указывающий, что данное поле не будет отображаться у пользователя
description (аттрибут)
Описание поля
notNull (аттрибут)
Флаг, указывающий на то, что поле не может принимать пустые значения
maxLength (аттрибут)
Максимальная длина для строкового поля
clear()
Отчистить значение (установить пустое значение)
restore(dbc)
DBCursor dbc Восстанавливает значение поля из DBCursor-а
unpackValue(str)
Восстанавливает значение поля из строки
str packValue()
Помещает текущее значение поля в строку
makeInterface()
Делает данную колонку интерфейсной (отображаемой в названии объекта)
allowNull(value)
Запрещает/разрешает использование null в качестве значения value (bool) - True (разрешнить использование null), False (запретить использование null)
isNull()
Определяет равно ли значение поля null
setToNull()
Устанавливает значение поля в null. Эквивалентом данной функции является присваивание полю объекта None
1 self.employees = None
int isReference()
Определяет является ли поле ссылочным
str getRefName()
Определяет название класса на который ссылается поле (в случае, если поле является ссылочним)
str name(),
Возвращает имя поля (имя, используемое в базе данных)
str fullName()
Возвращает полное (с названием таблицы) имя поля
str __str__()
Возвращает текущее значение поля в виде строки
IntegerField
Поле для хранения целых чисел
Реализует интерфейс Общий интерфейс аттрибутов объектов
operator (bool)
Возвращает True, в случае, если значение поля отлично от 0
int value()
Возвращает значение поля
StringField
Поле для хранения строк
Реализует интерфейс Общий интерфейс аттрибутов объектов
str value()
Возвращает значение поля
EnumField
Поле для хранения строковых констант
Реализует интерфейс Общий интерфейс аттрибутов объектов
str value()
Возвращает значение поля
addItem(item)
item (str) Добавляет возможное значение для списка
ReferenceField
Поле для хранения ссылок
Реализует интерфейс IntegerField
setRefName(class_name)
Устанавливаем имя класса, на который ссылается данное поле
- bool deleteCascade (аттрибут)
Флаг, указывающий что для данного ссылочного поля применяется каскадное удаление
void extendAttributes(env)
Расширяет объект, в котором находится данное поле, полями объекта, на который ссылается поле
ObjectWithPK getRefObject(env)
Возвращает объект, соответствующий текущему значению поля
1 # Пример получения объекта из ссылочного поля
2 town = env.getProjectInfo().createDomainClass('Town')
3 ...
4 # Получаем название региона, соответствющего данному городу
5 regionName = town.regionID.getRefObject(env).name.value()
setRefName(name)
Устанавливает название класса объектов, на которые ссылается поле
DoubleField
Поле для хранения чисел с плавающей точкой
Реализует интерфейс Общий интерфейс аттрибутов объектов
operator (bool)
Возвращает True, в случае, если значение поля отлично от 0
float value()
Возвращает значение поля
BoolField
Поле для хранения чисел с плавающей точкой
Реализует интерфейс Общий интерфейс аттрибутов объектов
operator (bool)
Возвращает значение поля
bool value()
Возвращает значение поля
DateField
Поле для хранения даты
Реализует интерфейс Общий интерфейс аттрибутов объектов
Date value()
DateTimeField
Поле для хранения даты и времени
Реализует интерфейс Общий интерфейс аттрибутов объектов
DateTime value()
DocumentField
Поле для хранения документов
Реализует интерфейс StringField
- upload()
Сохраняет данные по текущему URL-у
- getURL()
Получает действительный URL по которому хранится документ. Данный URL формируется динамически. Для получения базового URLа, который можно использовать для копирования в другие объекты следует использовать метод getBaseURL() и setBaseURL()
- getBaseURL()
Получает базовый URL (хранящийся в БД) по которому строится основной URL документа
- setBaseURL()
Устанавливает базовый URL документа, полученный через функцию getBaseURL()
PictureField
Поле для хранения картинок
Реализует интерфейс DocumentField
Значение, для установки поля объекта с типом документа/картинки (ValueExtension)
конструктор URLDocument(type, data, length)
type(str) - тип(расширение) документа data(str) - массив байт (данные) length(int) - объем
События
__create__
Подготовка объекта при создании новой записи из интерфейса может возвращать варианты диалогов через RContainer
1 # Пример отображения вариантов открытия диалога при создании новой записи
2 import api
3 result = api.RContainer('Варианты открытия диалога')
4 result.openVariants.add(api.OpenVariant('Town', 'Город'))
5 result.openVariants.add(api.OpenVariant('Region', 'Регион'))
6 return result
__sequrity__
Установка дополнительных прав на поля объекта
1 # Пример установки прав
2 if self.productTransferID.getRefObject(env).state.value() != STATE_NEW:
3 for attr in set(self.attributes()).difference(set([self.comment.name()])):
4 a = getattr(self, attr)
5 a.readonly = True
__save__
Сохранение объекта
__delete__
Удаление объекта
__select__
Зачитывание записи из базы данных
__load__
Зачитывание таблицы объектов для добавления записи в таблицу результат используется метод addToTable
__type__
Определяет класс объекта в иерархии классов
1 # пример определения имени класса
2 return self.getClassTable(env)
__event__
Вызывается при получении JMS сообщения, адресованного классу
__setfilter__
Вызывается у родительского объекта при установке родительского ключа (ParentKey)
__parentkey__
Вызывается у объекта при установке родительского ключа (ParentKey)
1 def __parentkey__(self, env, args):
2 """Установка родительского ключа"""
3 fieldName = args.get("field")
4 parentID = args.get("parentID")
5 if fieldName == "groupid":
6 if parentID != ALL_GROUP_ID:
7 self.parentID = parentID
Контекст вызова (TableContext)
Конструктора нет
TableContext addParentKey(key)
Добавление родительского ключа key - родительский ключ возвращает self
TableContext addSQLFilter(filter)
Добавление фильтра filter - фильтр возвращает self
TableContext addSort(sort)
Добавляет колонку для сотрировки sort - колонка для сортировки возвращает self
TableContext addColumnFilter(filter)
Добавляет фильтр по колонке filter - фильтр по колонке возвращает self
Родительский ключ (ParentKey)
Конструктор ParentKey(field, parentID, parentClassName)
field(str) - поле по которому строится фильтр parentID(int) - ID родительской записи parentClassName, optional - имя класса родителя
SQL фильтр (SQLFilter)
Конструктор SQLFilter(filter)
filter(str) - фильтр
Колонка для сортировки (ColumnSort)
Конструктор ColumnSort(column, direction)
column(str) - колонка direction - направление сортировки
SortDirection Enum
INC
DESC
Фильтр по колонке (ColumnFilter)
Констркутор ColumnFilter(column, regexp)
column(str) - колонка regexp(str) - регулярное выражение, описывающее фильтр
Итератор по таблице объектов (TableIterator)
конструктор TableIterator(object)
ObjectWithPK объект, в который будет происходить зачитывание строчек таблицы
TableContext getContext()
Получает контекст таблицы для последующего изменения
int execute(env)
Выполняет запрос на получение таблицы. Возвращает количество зачитанных записей env - окружение пользователя
int fetch()
Читает строчку таблицы и помещает результат в объект возвращает - количество зачитанных строчек (int)
ObjectWithPK next(env)
В случае, если чтение успешно возвращает объект. Тип объекта определяется автоматически с помощью функции __type__. В случае, если данных нет возвращает None
Контейнер обеспечивающий перенос данных между клиентом и сервером (RContainer)
Конструктор RContainer(name)
name(str) Имя контейнера
int getNumFields()
Получить количество полей
setMethodName(name)
Установить название вызываемого метода name(str) - имя вызова
str getMethodName()
Получить имя класса
str getMethodName()
Получить имя вызываемого метода
put(key, value)
Добавить параметр key(str) - имя параметра value(int, double, str, RefVal) - значение
str get(key)
Получить строковый параметр key(str) - имя параметра
str get_int(key)
Получить целый параметр key(str) - имя параметра
str get_double(key)
Получить десятичный параметр key(str) - имя параметра
OpenVariantList openVariants
Варианты открытия диалога
Значение ссылочного поля (RefVal)
Конструктор RefVal()
id Идентификатор
comment Текстовое представление
Варианты открытия диалога (OpenVariantList)
Конструктор OpenVariantList()
add(variant)
Добавить вариант открытия variant(OpenVariant) - вариант открытия
Вариант открытия диалога класса (OpenVariant)
конструктор OpenVariant(name, label)
name(str) - название диалога label(str) - отображаемое имя для пользователя
Работа с датой и временем
Дата (Date)
Конструктор Date()
Инициализация текущей датой
Конструктор Date(year, month, day)
year(int) - год month(int) - месяц(1..12) day(int) - день(1..31)
Конструктор Date(isoFormat)
isoFormat(str) - дата в ISO формате
str humanPrint()
Печать в строку в формате ДД месяц ГГГГ
str isoFormat()
Печать в строку (ISO)
str toString(str format)
Печать в строку по формату
int year()
Получить год
int month()
Получить месяц
int day()
Получить день
int day_of_week()
Получить день недели
int day_of_year()
Получить день года
Date operator + (int days)
Возвращает дату, увеличенную на days дней
Date operator - (int days)
Возвращает дату, уменьшенную на days дней
ДатаВремя (DateTime)
Конструктор DateTime()
Инициализация текущей датойвеременем
Конструктор DateTime(year, month, day, hours, min, sec)
year(int) - год month(int) - месяц(1..12) day(int) - день(1..31) hours(int) - час (0..23) min(int) - минуты (0..59) sec(int) - секунды (0..59)
Конструктор DateTime(isoFormat)
isoFormat(str) - датавремя в ISO формате
str isoFormat()
Печать в строку (ISO)
str toString(str format)
Печать в строку по формату
int year()
Получить год
int month()
Получить месяц
int day()
Получить день
int hour()
Получить часы
int minutes()
Получить минуты
int sec()
Получить секунды
DateTime operator + (int days)
Возвращает дату-время, увеличенную на days дней
DateTime operator - (int days)
Возвращает дату-время, уменьшенную на days дней
DateTime operator + (TimeInterval)
Возвращает дату-время, увеличенную на интервал времени
DateTime operator - (TimeInterval)
Возвращает дату-время, уменьшенную на интервал времени
Интервал времени (TimeInterval)
Конструктор TimeInterval(hour, min, sec)
Создает интервал времени
Файл настроек (Settings)
str getStringValue(key)
Получает значение параметра key в виде строки
bool getBoolValue(key)
Получает значение параметра key и приводит его к типу bool
Интерфейс передачи сообщений (Sender)
Отправлет пользователю системы объект бизнес логики, который будет открыт в отдельном диалоге env - окружение пользователя userID (int) - Идентификатор пользователя object - Объект бизнес логики useTopic (bool) - Использовать топик
Отправлет пользователю системы информацию о изменении объекта бизнес логики env - окружение пользователя userID (int) - Идентификатор пользователя object - Объект бизнес логики useTopic (bool) - Использовать топик
void sendMessage(userID, title, text, useTopic)
Отпрвляет пользователю информационное сообщение userID (int) - Идентификатор пользователя title (str) - Тема сообщения text (str) - Текст сообщения useTopic (bool) - Использовать топик
void sendMessageToURI(uri, message, useTopic)
Отпрвляет текстовое сообщение по определенному URI uri (str) - Идентификатор пользователя message (str) - сообщение useTopic (bool) - Использовать топик
1 env.getProjectInfo().getSender().sendObject(env, env.getUserID(), deal, False)
XSLT преобразования (XSLTransformation)
boost::python::class_<xslt::XSLTransformation>("XSLTransformation", boost::python::init<std::string, std::string, xslt::DocumentType>())
.def_readwrite("xmlURL", &xslt::XSLTransformation::xmlURL, "XML URL")
.def_readwrite("xsl", &xslt::XSLTransformation::xsl, "Файл xsl преобразования")
.def_readwrite("resultURL", &xslt::XSLTransformation::resultURL, "URL результата xsl преобразования")
.def_readwrite("type", &xslt::XSLTransformation::type, "Тип преобразования")
.def_readwrite("xslParams", &xslt::XSLTransformation::xslParams, "Перечень параметров")
;
module backup
Подключение
1 import backup
Выгрузка объектов
Настройки выгрузки данных (BackupSettings)
Конструктор BackupSettings()
Добавление ссылки, по которой нужно пройти при построении дерева объектов env(Env) - Окружение пользователя ref(ReferenceField) - ссылочное поле объекта
Рекурсивная выгрузка данных (RecursiveBackup)
Данная выгрузка используется для выгрузки объекта вместе с объектами, на который ссылается данный и объектами, ссылающимися на данный (перечень объектов задается параметором BackupSettings при выгрузке.
Конструктор RecursiveBackup()
Выгружает объект obj env(Env) - Окружение пользователя obj(ObjectWithPK) - Выгружаемый объект settings(BackupSettings) - Настройки выгрузки
str toString()
Возвращает выгруженные данные в виде строки
Пример использования
1 # Выгрузка определенного региона
2 # с перечнем входящих в его состав
3 # городов
4 import backup
5 # Создаем настройки выгрузки
6 settings = backup.BackupSettings()
7 town = env.getProjectInfo().createDomainClass('Town')
8 # Указываем, что города должны быть подгружены по ссылке regionID
9 settings.addReference(env, town.regionID)
10 region = env.getProjectInfo().createDomainClass('Region')
11 region.id = 8241
12 region.selectByID(env)
13 # Создаем выгрузку
14 backup = backup.RecursiveBackup()
15 # Выгружаем регион
16 backup.init(env, region, settings)
17 # Пишем результат в файл
18 res = open('result.dat', 'w+')
19 res.write(backup.toString())
20 res.close()
Загрузка объектов
Пример использования
1 # Загрузка региона с вложенным справочником городов
2 # Поиск города осуществляется по трем полям
3 # (регион, название, тип)
4 import backup
5 # Загрузка данных из файла
6 data = backup.RecursiveBackup()
7 data.loadFromFile('./result.dat')
8
9 # Создаем загрузчик данных
10 provider = backup.RestoreProvider()
11 # Устанавливаем стандартный обработчик событий
12 provider.setHandler(backup.DefaultSearcherHandler())
13 # Создаем интерфейс поиска городов в системе
14 # по трем полям (регион, название, тип)
15 townSearcher = backup.ObjectSearcherByFields()
16 townSearcher.addField('regionID')
17 townSearcher.addField('name')
18 townSearcher.addField('shortType')
19 # Указываем загрузчику какой интерфейс
20 # использовать для поиска городов
21 provider.addSearcher('Town', townSearcher)
22 # Загружаем данные в систему
23 provider.load(env, data)
module url
Подключение
1 import url
Методы
- generateUnique()
Создает уникальное имя файла
- generateUniqueXml()
Создает уникальное имя для XML файла в папке с XML-файлами
- generateUniquePdf()
Создает уникальное имя для PDF файла в папке с PDF-файлами
- generateUniqueHtml()
Создает уникальное имя для HTML файла в папке с HTML-файлами
- getPathHtm()
Определяет директорию в которой хранятся HTML файлы
- getPathXml()
Определяет директорию в которой хранятся XML файлы
- getPathXsl()
Определяет директорию в которой хранятся XSL файлы
- getPathStored()
Определяет директорию в которой хранятся документы, удаление которых не производится
- getPathPictures()
Определяет директорию в которой хранятся картинки
- getPathDocuments()
Определяет директорию в которой хранятся документы
- getUrlBase()
Определят url web-сервера
Сохранение объекта по URL
1 import url
2 resultURL = url.getUrlBase() + url.generateUniqueXml()
3 putter = url.putter()
4 putter.put(resultURL, url.getBinaryData('Hello world!', 12))
5 # or
6 putter.put(resultURL, 'Hello world!')
Получение данных по URL
1 getter = url.getter()
2 response = getter.get('http://softlogic.ru/logo.png')
3 data = getter.getData()
Передача URL клиенту
1 import url
2 resultURL = url.getUrlBase() + url.generateUniqueXml()
3 return url.url(resultURL)
Работа с исключениями
Как передать исключение клиенту
Для того, чтобы пробросить исключение клиенту можно воспользоваться двумя способами:
- Вызывать метод, бросающий исключение
1 import api
2 api.throwBusinessLogicException("Редактировать подписанный документ запрещено!", "Документ был подписан %s" % self.signerID.getRefObject(env).fio.value())
Бросить исключение с помощью raise
1 import api
2 raise Exception(api.BusinessLogicException("Редактировать подписанный документ запрещено!", "Документ был подписан %s" % self.signerID.getRefObject(env).fio.value()))
Настраеваемое исключение
Платформой предусмотрен механизм создания исключений, контролировать которые можно с помощью настроек системы. При создании данного исключения сервер платформы сначала определяет настройки исключения:
- Нужно ли бросать данное исключение или его можно игнорировать
- Детальное описание возникшей ошибки
и бросает исключение, в случае если оно помечено как активное.
Для создания данного исключения используется метод throwConfigurableException(env, object, method, error, detail) env (Env) - окружение пользователя object (ObjectWithPK) - объект, в который будет происходить зачитывание строчек таблицы (используется для идентификации настроек исключения) method (str) - название метода (используется для идентификации настроек исключения) error (str) - сообщение об ошибке (используется для идентификации настроек исключения) detail (str) - детальное описание ошибки
Пример использования:
1 import api
2 api.throwConfigurableException(env, self, 'sign', 'Документ уже подписан', 'Документ уже подписан пользователем %s' % signer.fio)
Типы исключений
AppException
AppException является базовым классом исключений клиента. Данное исключение используется в случае возникновения критической ошибки.
AppException(str, str)
Создает экземпляр исключения. Первый параметр - текст, выводимый клиенту в окошке ошибки, второй параметр - детальное описание ошибки
AppException(str)
Создает экземпляр исключения. Параметр - текст, выводимый клиенту в окошке ошибки.
str what()
Возвращает текст ошибки
str detail()
Возвращает детальное описание ошибки
__str__()
Преобразование к строке. Возвращает строку, в которой содержится текст ошибки и детальное описание ошибки
1 import api
2 api.throwAppException("Не удается сохранить файл!", "Не достаточно места на жестком диске")
SecurityException
Данное исключение используется для информирования пользователя о том, что ему недостаточно прав для выполнения операции
SecurityException(str, str)
Создает экземпляр исключения. Первый параметр - текст, выводимый клиенту в окошке ошибки, второй параметр - детальное описание ошибки
SecurityException(str)
1 import api
2 api.throwSecurityException("Не достаточно прав для подписи распоряжения!")
BusinessLogicException
Данное исключение используется для информирования пользователя о возникновении не критической ошибки бизнес-логики
BusinessLogicException(str, str)
Создает экземпляр исключения. Первый параметр - текст, выводимый клиенту в окошке ошибки, второй параметр - детальное описание ошибки
1 import api
2 api.throwBusinessLogicException("Не указан адрес студента %s!" % student.fio.value())
DatabaseException
Данное исключение используется для информирования пользователя о возникновении ошибки базы данных
Как поймать исключение
Для того, чтобы поймать указанные выше исключения можно воспользоваться следующим способом
1 import api
2 try:
3 self.sign(env)
4 except Exception, e:
5 # Получаем исключение сервера
6 servException = e.message
7 print str(servException)
