When adding a dependent or parent ticket, the choice field in the
ticket selection form excludes:
- All existing dependencies of the current ticket.
- All existing parent tickets of the current ticket.
- The current ticket itself.
The first two prevent immediate circular references: A dependency
cannot be a parent and vice versa. Deeper circular references are
not covered by this: a ticket can still be its own grandchild.
They also prevent current behavior of throwing an `IntegrityException`
when selecting a dependency or parent.
The third one prevents also a quirky behavior: until now, specifying the
ticket itself as parent or dependency just does not save the
dependency and does not issue a warning either.
'parent' tickets are all tickets on which the current ticket depends.
The parent tickets can only be resolved if the current tickets is closed.
This patch splits the current |Dependencies|Total time spent| table row
in two rows. The table layout is now
|Status |Total time spent|
|Depends|Resolves |
Status and Total time only have one line. Status was chosen as filler
field, because I believe it should be moved out of the title to reduce
visual distraction.
Depends and Resolve will have a variable number of lines and are closely
related.
Depends was chosen instead of "Dependencies", to indicate directly what
the listed tickets do and because it is shorter.
The commit also simplifies the wording of the tooltips and harmonizes with
the other tooltips in the same table: It indicates directly what happens
when the button is clicked (or touched!).
Notes:
- The complete row could be omitted if now Depends or Resolves exists for
a ticket. This would reduce visual distraction but was not implemented
because it could lead to misled expectations.
- No button for removing/adding parent tickets was added. If considered
important this can be added any time. Currently a user has to go to
the parent ticket and delete the dependency (easy) or remember the ticket
id/title, search for the parent and add the ticket as dependency (difficult)
The My Tickets view generated ticket urls with a '/view' string prefix. This
is replaced by proper Django URL resolution.
The public and staff ticket view used a '../../' string prefix which brakes in
the public ticket view. They are both replaced with proper Django URL resolution.