Изменения

BugzillaORM

168 байтов убрано, 13:52, 2 августа 2010
м
Нет описания правки
В Bugzilla(например, 3.6) половина кода в шаблонах, половина на основе полу-ORM’а, а большая часть не пойми как. А ORM бы туда, было бы классно, что-то в духе:
Есть сущности:
У сущностей есть:
* ID - ID — первичный ключ
* атрибуты
* ссылка на контролирующую сущность (тип + ID) <br /> т.е. то есть если другая сущность ссылается на эту, другим полем она должна ссылаться и на контролирующую
* способ преобразования в строку
* Single-Select &rarr; ссылка на сущность
* Multi-Select &rarr; ссылка на несколько сущностей одного типа
** Атрибут атрибута - атрибута — в каком виде показывать список.
У всех атрибутов тоже есть ссылка на контролирующую сущность, означающая, что атрибут показывается, только если его сущность ссылается на его контролирующую сущность (или одну из них).
Поля багов:
<tab sep=bar class=simpletable head=left>
short_desc | строкаclassification | single-selectproduct | single-select, контролируется classification (или никем), у поля есть привязка к правам пользователяversion | single-select, контролируется productcomponent | single-select, контролируется rep_platform | single-select, специальная функция "угадывания" «угадывания» дефолтного значенияbug_file_loc | строкаop_sys | single-select, специальная функция "угадывания" «угадывания» дефолтного значенияbug_status | single-select, есть функция валидации (Bug Status Workflow)resolution | single-select, у атрибута есть контролирующая сущность (показывается только при bug_status.closed=1)status_whiteboard | строкаkeywords | multi-select, показ в виде спискаbug_severity | single-selectpriority | single-select, есть желание сделать decimalassigned_to | single-select, показ в виде select'а select’а или строки, есть функция валидации (угадывания юзера по некорректному имени)reporter | single-select, показ в виде select'а select’а или строки, есть функция валидации (угадывания юзера по некорректному имени)qa_contact | single-select, показ в виде select'а select’а или строки, есть функция валидации (угадывания юзера по некорректному имени)votes | decimal(,0)cc | multi-select, показ в виде combo-box'аbox’а, есть функция валидации (угадывания юзера по некорректному имени)dependson | multi-select, показ в виде спискаblocked | multi-select, показ в виде спискаtarget_milestone | строкаsee_also | multi-select, показ в виде списка (багов)alias | строка
reporter_accessible | boolean
cclist_accessible | boolean
estimated_time | времяremaining_time | времяdeadline | датаcreation_ts | дата+времяdelta_ts | дата+времяlastdiffed | дата+время, скрыто в интерфейсе
</tab>
Вычисляемые поля багов:
<tab sep=bar class=simpletable head=left>
work_time | Сумма work_time от связанных longdescs
percentage_complete | (Сумма work_time связанных багов)/(Сумма estimated_time связанных багов)
owner_idle_time | Текущая дата минус MAX(дата последнего коммента от Assignee, дата последней активности от Assignee)
days_elapsed | Текущая дата минус delta_tseverconfirmed | Менялся ли статус хоть раз на != UNCONFIRMED
</tab>
Поля вложений:
<tab sep=bar class=simpletable head=top>
bug_id | single-select, показ в виде строкиsubmitter | single-select, показ в виде select'а select’а или строки, есть функция валидации (угадывания юзера по некорректному имени)description | single-select, показ в виде select'а select’а или строки, есть функция валидации (угадывания юзера по некорректному имени)filename | строкаmimetype | строкаispatch | booleanisobsolete | booleanisprivate | booleanisurl | booleanthedata | потенциально строка, а вообще-то обычно NULL, т.к. так как данные хранятся в локальных файлах
</tab>
[[Категория:Разработка]]