Skip to content

Lineup Creator

Generates VFX lineup/count sheets from Shotgrid Shot metadata and optional linked element records such as Versions or Scans.

This AMI pops up a modal window where users can print the lineup to a PDF.

The Lineup Creator Action Menu Item can be installed on:

  • Shot
  • the configured turnover entity, usually Launch

When triggered from Shots, the selected Shots are used directly. When triggered from the turnover entity, Slingshot reads the configured turnover-to-Shot field and builds one lineup sheet per linked Shot.

API Url:

https://app.slingshotsystems.io/ami/<show id>/lineup

Configuration

sg_ami:
  lineup_creator:
    sg_turnover_entity: Launch # (1)!
    sg_turnover_shots_field: shots # (2)!
    sg_shot_turnovers_field: launches # (3)!
    extra_shot_fields: [] # (4)!
    sg_element_entity: Version # (5)!
    sg_shot_elements_field: sg_versions # (6)!
    include_element_task_names: # (7)!
      - MP
      - RF
      - EL
      - CP
    include_element_statuses: null # (8)!
    extra_element_fields: # (9)!
      - entity.Shot.code
      - sg_task.Task.content
    sg_vendors_field: sg_vendor_groups # (10)!
    sg_turnover_date_field: updated_at # (11)!
    template: # (12)!
      show_name: Play Dirty
      header_center: VFX Lineup - $date
      col1:
        - title: description
          contents: $description
      col2:
        - title: VFX tasks
          contents: $sg_vfx_tasks
        - title: shot counts
          contents:
            head in: $sg_head_in
            tail out: $sg_tail_out
            cut in: $sg_cut_in
            cut out: $sg_cut_out
            rec in: ${sg_rec_in_tc|timecode}
            rec out: ${sg_rec_out_tc|timecode}
      elements:
        name: $code
        detail1:
          cut in: $sg_cut_in
          cut out: $sg_cut_out
          duration: $sg_duration
        detail2:
          task: ${sg_task.Task.content}
          shot: ${entity.Shot.code}
        boxes:
          - title: description
            contents: $description
  1. Shotgrid entity type to use as the turnover/container entity. This is commonly Launch.

  2. Field on the turnover entity that links to the Shots to include in the lineup.

    When the AMI is triggered from the turnover entity, Slingshot uses the first selected turnover record and reads this field to find the Shots.

  3. Field on the Shot entity that links back to turnover records.

    This is used when the AMI is triggered directly from Shots so Slingshot can find the most recently updated turnover for each Shot and display its code/date.

  4. Additional Shot fields to fetch from Shotgrid.

    Slingshot already fetches all Shot schema fields, but deep-linked fields need to be listed explicitly here before they can be used in templates.

  5. Optional entity type to display as lineup elements under each Shot.

    Common values are Version or a custom Scan/Plate entity. Set to null to generate shot-only lineups with no element rows.

  6. Field on the Shot that links to the element records.

    For Version-based lineups this is usually sg_versions.

  7. Optional task-name filter for elements.

    If set, only elements whose sg_task.Task.content is in this list are included.

  8. Optional status filter for elements.

    If set, only elements whose sg_status_list is in this list are included.

  9. Additional fields to fetch on each element.

    All schema fields are fetched automatically, but deep-linked fields such as entity.Shot.code (shot name) or sg_task.Task.content (task name) need to be listed explicitly here.

  10. Shot field containing vendor entities.

    The field may be either a single entity or a list of entities. Multiple vendors are displayed as Vendor A / Vendor B.

  11. Field on the turnover entity used for the displayed turnover date.

    The value is converted to the show's configured timezone and formatted as YYYY-MM-DD.

  12. Display template for the generated lineup. See Template Layout.

Template Layout

The template section controls the visible contents of the generated lineup.

Field Description
show_name Show name displayed in the lineup header and used in the generated filename.
header_center Header subtitle. Global template variables such as $date are available.
col1 List of boxes displayed in the left Shot column (under the thumbnail).
col2 List of boxes displayed in the right Shot column.
elements Layout for records linked through sg_shot_elements_field, e.g. Versions.

Boxes

Each entry in col1, col2, or elements.boxes is a box:

- title: shot counts
  contents:
    head in: $sg_head_in
    cut in: $sg_cut_in
    cut out: $sg_cut_out

contents can be a string, number, list, dictionary, or nested structure. Template variables are resolved recursively, so dictionaries are useful for count tables and grouped metadata.

Note

If a configured template variable is missing from a Shot or element, Slingshot renders that value as blank/null rather than failing the whole lineup.

Elements

Elements are optional records displayed under each Shot. They are commonly Versions, plates, scans, or other per-shot records.

elements:
  name: $code
  detail1:
    cut in: $sg_cut_in
    cut out: $sg_cut_out
  detail2:
    slate: $sg_slate
    tape: $sg_tape
  boxes:
    - title: notes
      contents: $description
Field Description
name Template used for the element display name. Defaults to $code.
detail1 Optional dictionary of compact details shown with the element.
detail2 Optional second dictionary of compact details shown with the element.
boxes Optional list of additional element boxes.

Element entity and multi-entity field values are collapsed for display. Slingshot prefers the linked entity's name, then code, when available.

Template Variables

Lineup templates use the same templating syntax as other show configuration fields.

Shot Templates

In the Shot section, all fetched Shot fields are available as template variables, for example:

Variable Value
$code Shot code
$description Shot description
$sg_head_in Custom Shot field value
$sg_cut_in Custom Shot field value
${sg_rec_in_tc|timecode} Shotgrid millisecond timecode displayed as HH:MM:SS:FF
${linked_entity.EntityType.field} Deep-linked field value

Use extra_shot_fields when you need deep-linked Shot fields that are not returned by default.

Element Templates

In the Elements section, all element fields are available as template variables, for example:

Variable Value
$code Element code
$description Element description
$sg_first_frame Custom element field value
$sg_last_frame Custom element field value
${sg_task.Task.content} Linked Task name
${entity.Shot.code} Linked Shot code

Use extra_element_fields when you need deep-linked element fields that are not returned by default.

Global Variables and Modifiers

Global variables such as $date, $year, $month, and $datetime are available anywhere templates are used.

Modifiers can be used with ${variable|modifier} syntax:

header_center: VFX Lineup - $date
col2:
  - title: editorial timecode
    contents:
      rec in: ${sg_rec_in_tc|timecode}
      src in: ${sg_src_in_tc|timecode-24}

The timecode modifier converts Shotgrid timecode fields stored as milliseconds into HH:MM:SS:FF. It defaults to 23.976 fps. Add a frame rate suffix when needed, e.g. ${sg_src_in_tc|timecode-24} or ${sg_src_in_tc|timecode-29.97}.

See Templating for the full list of variables, modifiers, and eval() support.

Trigger Behavior

Triggered From Shots

When the AMI is launched from selected Shots:

  1. Slingshot uses the selected Shot IDs directly.
  2. If Shotgrid provided a sort column/direction in the AMI payload, that sort order is preserved.
  3. Slingshot looks up the most recently updated turnover entity linked to each Shot using sg_turnover_shots_field.
  4. The generated filename is:
    • <Shot Code> - <Show Name> Lineup when exactly one Shot is selected
    • <Show Name> Lineup when multiple Shots are selected

Triggered From Turnover Entity

When the AMI is launched from the configured turnover entity:

  1. Slingshot uses the first selected turnover record.
  2. It reads sg_turnover_shots_field to find the linked Shots.
  3. Shots are sorted by code.
  4. The generated filename is <Turnover Code> - <Show Name> Lineup.

Warning

If users select multiple turnover records, only the first selected turnover is used.

Filtering Elements

Use include_element_task_names and include_element_statuses to limit which element records appear on the lineup.

sg_ami:
  lineup_creator:
    sg_element_entity: Version
    sg_shot_elements_field: sg_versions
    include_element_task_names:
      - MP
      - RF
    include_element_statuses:
      - rev
      - apr

The filters are combined with the linked element IDs from each Shot. In the example above, a Version must be linked to one of the selected Shots, have sg_task.Task.content of MP or RF, and have sg_status_list of rev or apr.

Common Examples

Shot Counts With Timecode

col2:
  - title: shot counts
    contents:
      head in: $sg_head_in
      cut in: $sg_cut_in
      cut out: $sg_cut_out
      cut duration: $sg_cut_duration
      rec in: ${sg_rec_in_tc|timecode}
      rec out: ${sg_rec_out_tc|timecode}

Version Elements With Deep-Linked Fields

extra_element_fields:
  - entity.Shot.code
  - sg_task.Task.content

template:
  elements:
    name: $code
    detail1:
      task: ${sg_task.Task.content}
      shot: ${entity.Shot.code}
    boxes:
      - title: notes
        contents: $description

Shot-Only Lineup

Set sg_element_entity to null when you only want one sheet per Shot and do not need linked Versions or elements.

sg_ami:
  lineup_creator:
    sg_element_entity: null
    template:
      show_name: Example Show
      header_center: VFX Lineup - $date
      col1:
        - title: description
          contents: $description
      col2:
        - title: notes
          contents: $sg_editorial_shot_notes