Your career: hide the order number, keep it as an accessibility preference under Appearance, and make the arrows actually move an entry past its neighbour #203

Closed
opened 2026-09-13 08:36:08 +00:00 by tiagoagueda · 0 comments
Owner

The change

On Your career, every entry's form carries an order number. The arrows on the
overview already move an entry up and down, so the number is a second control for the
same thing and a strange one — a person editing a job is asked for an integer that means
"lower first". Hide it. Offer it back as a preference under Settings → Appearance, for
somebody who cannot use the arrows or would rather type a number, which is an
accessibility choice and belongs beside the others there.

What is there today

ResumeItem.order (resume/models.py:34) is on every kind of entry — experience,
education, project, skill group, skill, certification, language, link — with the help
text Lower numbers appear first, and all seven forms in resume/forms.py list it in
fields (:37, :66, :78, :90, :96, :105, :112, :118). resume/item_form.html:21 draws
every field of the form in a loop, so it appears on every entry's page as a plain number
box.

The arrows: resume:item_move (resume/views.py:264) does

item.order = max(0, item.order + (-1 if direction == "up" else 1))

— it nudges the number by one and swaps with nothing. Two consequences worth knowing
before the number is hidden, because they are what the number has been covering for:

  • Every entry starts at 0. Pressing up on an entry at 0 leaves it at 0; pressing down
    once puts it at 1, behind every other entry at 0, wherever it was. Two entries at 3 and
    5 with nothing between them need two presses to pass each other, and the second press
    is invisible. The arrows nudge a number; they do not move an entry past its
    neighbour
    , which is what an arrow says it does.
  • Experience, education and certifications sort by date first (Meta.ordering = ("-start_date", "order"), :80; ("-end_date", "order"), :107;
    ("-issued_on", "order"), :176), and the wiki says so (Your career record →
    Ordering
    : "Order breaks ties"). In those three sections the arrows change nothing a
    person can see unless two entries share a date. Only skills, skill groups, projects,
    languages and links (("order", "pk"), :49) are ordered by the number alone.

So today the number box is the only control that reliably does anything, and hiding it
without fixing the arrows would take the working control away and leave the broken one.

What a fix has to settle

  • The arrows move an entry past its neighbour. Up swaps with the entry drawn above
    it in that section, down with the one below, renumbering the section so the numbers
    are dense and the order is exactly what the page shows — the model the dashboard's
    widgets already follow (accounts/settings_views.py, #124). The move view's redirect
    and message stay as they are.
  • The dated sections. Either the arrows are not offered where the date decides — an
    arrow that does nothing is worse than none — or those sections drop the date from
    ordering and take the number, seeded from the dates once, so the person owns the
    order everywhere. The second matches "we can already define its order using the
    arrows"; the first matches the wiki as written. One of them, said in the wiki.
  • The preference. A boolean on Profile beside theme and hidden_nav_items
    (accounts/models.py:289-293) — show the order number on career entries — set from
    AppearanceForm (accounts/forms.py:388), off by default. The seven forms drop
    order from fields unless the preference is on; item_form.html's loop then needs
    nothing. A model field, so it travels with the export as the other preferences do
    (PROFILE_FIELDS, format 16 if #202 has not already moved it).
  • Where the arrows live. They are on the overview only; the entry's own page has
    the number and nothing else. With the number gone, somebody editing an entry and
    wanting it higher goes back to the overview — fine, and the page can say so in a
    sentence where the box was.
  • Tests. Nothing today asserts what a move does beyond the redirect
    (tests/test_page_coverage.py is the only file naming item_move), which is how the
    nudge went unnoticed; the swap gets a test per ordering rule, and the preference one
    for each side of the switch.
  • The wiki. Your career record → Ordering (:223-229) describes the number and the
    nudge; it describes the arrows and the preference.
## The change On *Your career*, every entry's form carries an **order** number. The arrows on the overview already move an entry up and down, so the number is a second control for the same thing and a strange one — a person editing a job is asked for an integer that means "lower first". Hide it. Offer it back as a preference under *Settings → Appearance*, for somebody who cannot use the arrows or would rather type a number, which is an accessibility choice and belongs beside the others there. ## What is there today `ResumeItem.order` (`resume/models.py:34`) is on every kind of entry — experience, education, project, skill group, skill, certification, language, link — with the help text *Lower numbers appear first*, and all seven forms in `resume/forms.py` list it in `fields` (`:37, :66, :78, :90, :96, :105, :112, :118`). `resume/item_form.html:21` draws every field of the form in a loop, so it appears on every entry's page as a plain number box. The arrows: `resume:item_move` (`resume/views.py:264`) does item.order = max(0, item.order + (-1 if direction == "up" else 1)) — it **nudges the number by one and swaps with nothing**. Two consequences worth knowing before the number is hidden, because they are what the number has been covering for: - Every entry starts at 0. Pressing *up* on an entry at 0 leaves it at 0; pressing *down* once puts it at 1, behind every other entry at 0, wherever it was. Two entries at 3 and 5 with nothing between them need two presses to pass each other, and the second press is invisible. The arrows *nudge a number*; they do not *move an entry past its neighbour*, which is what an arrow says it does. - Experience, education and certifications sort by **date first** (`Meta.ordering = ("-start_date", "order")`, `:80`; `("-end_date", "order")`, `:107`; `("-issued_on", "order")`, `:176`), and the wiki says so (*Your career record → Ordering*: "Order breaks ties"). In those three sections the arrows change nothing a person can see unless two entries share a date. Only skills, skill groups, projects, languages and links (`("order", "pk")`, `:49`) are ordered by the number alone. So today the number box is the only control that reliably does anything, and hiding it without fixing the arrows would take the working control away and leave the broken one. ## What a fix has to settle - **The arrows move an entry past its neighbour.** *Up* swaps with the entry drawn above it in that section, *down* with the one below, renumbering the section so the numbers are dense and the order is exactly what the page shows — the model the dashboard's widgets already follow (`accounts/settings_views.py`, #124). The move view's redirect and message stay as they are. - **The dated sections.** Either the arrows are not offered where the date decides — an arrow that does nothing is worse than none — or those sections drop the date from `ordering` and take the number, seeded from the dates once, so the person owns the order everywhere. The second matches "we can already define its order using the arrows"; the first matches the wiki as written. One of them, said in the wiki. - **The preference.** A boolean on `Profile` beside `theme` and `hidden_nav_items` (`accounts/models.py:289-293`) — *show the order number on career entries* — set from `AppearanceForm` (`accounts/forms.py:388`), off by default. The seven forms drop `order` from `fields` unless the preference is on; `item_form.html`'s loop then needs nothing. A model field, so it travels with the export as the other preferences do (`PROFILE_FIELDS`, format 16 if #202 has not already moved it). - **Where the arrows live.** They are on the overview only; the entry's own page has the number and nothing else. With the number gone, somebody editing an entry and wanting it higher goes back to the overview — fine, and the page can say so in a sentence where the box was. - **Tests.** Nothing today asserts what a move does beyond the redirect (`tests/test_page_coverage.py` is the only file naming `item_move`), which is how the nudge went unnoticed; the swap gets a test per ordering rule, and the preference one for each side of the switch. - **The wiki.** *Your career record → Ordering* (`:223-229`) describes the number and the nudge; it describes the arrows and the preference.
tiagoagueda added this to the 0.3.0 milestone 2026-09-13 08:36:08 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Postulo/postulo#203
No description provided.