Context data available in Production Sheets
Part production sheet
The outermost structure looks like that:
{
"theme_font": "Open Sans",
"theme_date_format": "d.m.Y",
"logo_url": <url to the service logo picture>
"issue_date": <date + time when the sheet was created>,
"parts": (explained below),
}parts attribute is a list containing all of the selected MesParts.
That’s why you would usually iterate over the parts in the template.
Example:
{% for part in parts %}
...
{% endfor %}
Following attributes are available for every item in parts:
issue_date
Date + time when the prod sheet was created
Example:{{ part.issue_date }}picture_url
URL to get the part thumbnail
Example:<img src="{{ part.picture_url }}" alt="part_image" class="line-image" >part_url
URL to the part detail page of a part
It is used to create a qr code, that’s why?qris added at the end of the URL
Example:{% qr_from_text part.part_url size="2" image_format="png" error_correction="L" %}batch_url
URL to the mobile-optimised batch workflow detail page.
This variable holds the URL only if the part is associated with exactly one batch.If the part has one batch, the URL is used to create a QR code for quick access to the batch workflow.
If the part has multiple batches, the value is
None.
(The template can handle this case by displaying a message instead of generating a QR code.)
Example:
{% if part.batch_url %} {% qr_from_text part.batch_url size="2" image_format="png" error_correction="L" %} {% else %} <div>Multiple batches detected. Cannot generate QR code.</div> {% endif %}part_urlandbatch_urlqr codes can be used together on the same template.
project_name
Name of the part’s project
Example:{{ part.project_name }}order_date
Date + time when the part’s order was created
Example:{{ part.order_date }}order_number
Number of the part’s order
Example:{{ part.order_number }}order_reference
Customer reference provided while creating the part’s order
Example:{{ part.order_reference }}shipping_method
Shipping method specified in the part’s order
Example:{{ part.shipping_method }}payment_method
Payment method specified in the part’s order
Example:{{ part.payment_method }}customer_name
Full name of the person who ordered the part
Example:{{ part.customer_name }}customer_phone
Mobile phone number of the person who ordered the part
Example:{{ part.customer_phone }}customer_email
Email address of the person who ordered the part
Example:{{ part.customer_email }}production_steps
This will be only populated if part has exactly one sequence.
List of the workflow step objects - ordered steps from the parts’s workflow.
Each object have multiple attributes. This is the structure of the step object:{ "name": <name of the step> "description": <step description> "possible_workstations": <list of the workstation objects. Those objects have fields that are available in `b3_mes_workstation` table> following attributes are only populated if there is a job created for this step "workstation": <name of the job's workstation> "job_id": <job's id> "assignees": <list of full names of users who are assigned to the job> "duration": { "days": <job duration in days> "hours": <job duration in hours> "minutes": <job duration in minutes> "date": <job's start date> } }
Example:{% for step in part.production_steps %} <tr> <td>{{ forloop.counter }}</td> <td>{{ step.name }}</td> <td>{{ step.workstation }}</td> <td>{% if step.assignees %}{{ step.assignees|join:', ' }}{% endif %}</td> <td>{% if step.duration %} {% if step.duration.days %}{{ step.duration.days }}d{% endif %} {{ step.duration.hours }}h {{ step.duration.minutes }}m {{ step.duration.date|date:"d.m.Y" }} {% endif %} </td> </tr> {% endfor %}production_steps_raw
List of the workflow step objects - ordered steps from the parts’s workflow.
Each object has all the attributes you can find inb3_mes_workflowstatustable.
Example:{% for step in part.production_steps_raw %} {{ step.name }} {% endfor %}name
Part’s name
Example:{{ part.name }}number
Part’s id
Example:{{ part.number }}quantity
Number of part’s copies to be printed
Example:{{ part.quantity }}material
Name of the part’s configured material
Example:{{ part.material }}technology
Name of the technology, used to print with a given material
Example:{{ part.technology }}dimensions
Part’s dimensions specified in the STL file
Example:{{ part.dimensions.h }} {{ part.dimensions.w }} {{ part.dimensions.d }}measure_unit
Unit used to specify dimensions in the STL file
Example:{{ part.measure_unit }}priority
Priority of this part{{ part.priority}}post_processings
List of the part’s post processings objects.
Each object have two attributes:titleandcolorTitle.
Example:{% if part.post_processings %} {% for pp in part.post_processings %} {{ pp.title }}{% if pp.colorTitle %}: {{ pp.colorTitle }}{% endif %}{% if not forloop.last %} | {% endif %} {% endfor %} {% else %}inserts: an array of objects, containing info about selected post-processing of type “inserts”.
{% for pp in part.inserts %} {{ pp.title }} {% for insert_detail in pp.details %} {{ insert_detail.thread_size }}: {{ insert_detail.quantity }} {% endfor %} {% endfor %}the following sub-variables are available:
pp.titlename of the post-processingpp.details- an array of objects, each describing insert type and quantity of itdetail.thread_sizedetail.quantity
instructions
Instructions related to processing the part
Example:{{ part.instructions }}attachments
List of attachment objects added in the part detail view.
Each object has all the attributes you can find inb3_mes_partattachmenttable.
Example:{% for attachment in part.attachments %} {{ attachment.filename }} {% endfor %}assignees
List of user objects, that are attached to the part as assignees.
Each object has all the attributes you can find inauth_usertable +b3_organization_userprofile.
Example:{% for assignee in part.assignees %} <div>{{ assignee.userprofile.full_name }}</div> {% endfor %}target_date
Part’s target date
Example:{{ part.target_date }}part_requirements
List of field objects, that are attached to the part as part requirements.
Each object has multiple attributes:label,type,value.
Example:{% for field in part.part_requirements %} <span><b>{{ field.label }}:</b></span> <span>{{ field.value }}</span> {% endfor %}
Job production sheet
The outermost structure looks like that:
{
"theme_font": "Open Sans",
"theme_date_format": "d.m.Y",
"logo_url": <url to the service logo picture>
"issue_date": <date + time when the sheet was created>,
"parts": (explained below),
....
job attirbutes (explained below)
...
}parts attribute is a list containing all of the sequences of a job.
You would usually iterate over the parts in the template.
Example:
{% for part in parts %}
...
{% endfor %}Every object in parts contain the same attributes as objects in the sequence prod sheet. Please reference Sequence prod sheet from this doc below.
Available job attributes:
job
Job object.
It has all the attributes you can find inb3_mes_jobtable.
Example:{{ job.workstation.name }}group_quantity
A sum of all sequence quantities.
Example:{{ group_quantity }}job_documentation
List of field objects, that are attached to the job as job requirements.
Each object has multiple attributes:label,type,value.
Example:{% if job_documentation %} {% for field in job_documentation %} <div class="small-marg-top"> <span><b>{{ field.label }}:</b></span> <span>{{ field.value }}</span> </div> {% endfor %} {% endif %}job_url
Url to the job detail page of the job
It is used to create a qr code, that’s why?qris added at the end of the URL
Example:{% qr_from_text job_url size="2" image_format="png" error_correction="L" %}job_assignees
A string containing the full names of users who are assigned to the job.
Example:{{ job_assignees }}job_duration
Job’s duration in the formatHH:MM:SS
Example:{{ job_duration }}job_material_lots
A string containing internal_lot_numbers of lots assigned to the job.
Example:{{ job_material_lots }}job_material
Name of the material which is used in the job.
Example:{{ job_material }}job_technology
Name of the technology that is used to print with the configured material.
Example:{{ job_technology }}job_attachments
List of attachment objects added in the job detail view.
Each object has all the attributes you can find inb3_mes_jobattachmenttable.
Example:{% if job_attachments %} {% for attachment in job_attachments %} <div>{{ attachment.filename }}</div> {% endfor %} {% endif %}Use Case: Displaying images from job attachments:
{% for attachment in job_attachments %} {% if attachment.filename == "printed_part.png" %} <img src="{{ attachment.file.url }}"> {% endif %} {% endfor %}
Sequence production sheet
The outermost structure looks like that:
{
"theme_font": "Open Sans",
"theme_date_format": "d.m.Y",
"logo_url": <url to the service logo picture>
"issue_date": <date + time when the sheet was created>,
"parts": (explained below),
}parts attribute is a list containing all of the selected sequences.
You would usually iterate over the parts in the template.
Example:
{% for part in parts %}
...
{% endfor %}Every object in parts contain the same data as objects in Part prod sheet + few extra attributes.
Extra parts attributes:
sequence_amount
Quantity of items in a given sequence.
Example:{{ part.sequence_amount }}sequence_id
ID of the sequence.
Example:{{ part.sequence_id }}sequence_url
Url to the hidden detail view of the sequence.
It is used to create a qr code, that’s why?qris added at the end of the URL
Example:{% qr_from_text part.sequence_url size="2" image_format="png" error_correction="L" %}sequence_steps
This is the same object as `production_steps` in Part prod sheet.
It is always populated.