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:
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
-
Shotgrid entity type to use as the turnover/container entity. This is commonly
Launch. -
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.
-
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.
-
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.
-
Optional entity type to display as lineup elements under each Shot.
Common values are
Versionor a custom Scan/Plate entity. Set tonullto generate shot-only lineups with no element rows. -
Field on the Shot that links to the element records.
For Version-based lineups this is usually
sg_versions. -
Optional task-name filter for elements.
If set, only elements whose
sg_task.Task.contentis in this list are included. -
Optional status filter for elements.
If set, only elements whose
sg_status_listis in this list are included. -
Additional fields to fetch on each element.
All schema fields are fetched automatically, but deep-linked fields such as
entity.Shot.code(shot name) orsg_task.Task.content(task name) need to be listed explicitly here. -
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. -
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. -
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:
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:
- Slingshot uses the selected Shot IDs directly.
- If Shotgrid provided a sort column/direction in the AMI payload, that sort order is preserved.
- Slingshot looks up the most recently updated turnover entity linked to each Shot using
sg_turnover_shots_field. - The generated filename is:
<Shot Code> - <Show Name> Lineupwhen exactly one Shot is selected<Show Name> Lineupwhen multiple Shots are selected
Triggered From Turnover Entity¶
When the AMI is launched from the configured turnover entity:
- Slingshot uses the first selected turnover record.
- It reads
sg_turnover_shots_fieldto find the linked Shots. - Shots are sorted by
code. - 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.