пятница, 5 марта 2010 г.

DocsVision 4.0: попытка открыть пользователем карточку заблокированную им же

Есть такая проблема: DocsVision версии 4.0 не всегда стабилен и любит порой убивать Internet Explorer, оставляя пользователю проблему с блокировками карточек и файлов. Точно также проблемы могут возникнуть, если пользователь не закрыв старую сессию, откроет новую. А вот проблемы могут посыпаться самые разные.
Так вот, если надо обработать эту ситуацию, а именно, что пользователь пытается открыть карточку, которую он сам же и блокирует (напомню, что система в таком случае позволяет пользователю "переписать" блокировку в текущую сессию), то достаточно проверить в QueryActivate на наличие блокировки карточки данным пользователем. Но не проверять ILockable.LockStatus на вполне резонное, как кажется, LockStatusEnum.STATUS_OWNER_LOCKED, а проверять на наличие блокировки вообще и то, что владелец блокировки - текущий пользователь:

IsCardHasCorruptedLockByCurrentUser =
lockedObject.LockStatus == LockStatusEnum.STATUS_LOCKED &&
lockedObject.OwnerName == Session.Properties["AccountName"].Value.ToString();


Далее, если QueryActivate вернул всё необходимое для открытия карточки, то в промежутке между ним и Activate, пользователю будет выдан запрос на то, хочет ли он открыть её на редактирование или нет. Результат мы можем узнать непосредственно в Activate по установленному флагу ActivateFlagEnum.ACTIVATE_EDIT в ActivateMode.
Теперь мы знаем практически всё о ситуации и можем её обработать :)

понедельник, 8 февраля 2010 г.

Zope и code-completion в eclipse

Так уж исторически сложилось, что на моей новой бесплатной и кошерной операционке, появился зоопарк самых разных интересных зверей: так изначально стоял python 2.6, с ним был поставлен eclipse с pydev'ом. Несколько позже были установлены ещё куча версий питончиков и zope3 c python 2.4. Но вот беда PyDev ну никак не хотел предлагать автоматическое заполнение и прочие полезные фичи для зоповских пространств имён. Верней zope.interface видит, а вот уже zope.schema - нет.
Ясное дело - проблема в настройках. И вот сегодня наконец, в мою светлую голову пришло решение:
1. идем в настройки pydev'а (Window/Preferences/ и далее в дереве PyDev/Interpreter - Python)
2. в спиcок интерпретеров добавляем python 2.4
3. поднимаем свежедобавленный интерпретатор вверх

Есно, шаг 2 надо делать, если у вас его в списке обнаружено не было, если он был там изначально - то этот пост не для вас.
По поводу шага третьего - он тоже спорный. Лично когда я только выполнил 2-й шаг и увидел, что pydev начал активно изучать содержимое его библиотек, так сильно порадовался, что тут же побежал сюда публиковать новость :) а когда вернулся - то желаемого результата не увидел, но не расстроился, а перезапустил эклипс и сделал шаг №3. После чего могу наслаждаться падевом в полной мере :) Почти... из zope.schema он отказывается видеть классы, вот с zope.app - всё в порядке, а со схемой не очень.