{% macro diff_inline(diff, fallback="") %} {% if diff %} {% if diff.old != "" %}
{{ diff.old }}
{% endif %} {% if diff.new != "" %}
+{{ diff.new }}
{% endif %} {% else %} {{ fallback }} {% endif %} {% endmacro %} {% macro diff_cell(diff, proposed_value) %} {% if diff %} {% if diff.old != "" %}
{{ diff.old }}
{% endif %} {% if diff.new != "" %}
+{{ diff.new }}
{% endif %} {% else %} {{ proposed_value }} {% endif %} {% endmacro %} {% macro render_list(course_diff, proposed_course, field_name, ordered=false) %} {% set diff = course_diff[field_name] %} {% if diff %} {% if ordered %}
    {% else %}
{% else %}{% endif %} {% else %} {% if ordered %}
    {% else %}
{% else %}{% endif %} {% endif %} {% endmacro %} {% macro render_units(course_diff, proposed_course) %} {% set units_diff = course_diff.units %} {% if units_diff %} {% for unit_entry in units_diff.units %} {% if unit_entry.kind == "removed" %}
− {{ unit_entry.unit.title }} ({{ unit_entry.unit.hours }} Hours)

{{ unit_entry.unit.content }}

{% elif unit_entry.kind == "added" %}
+ {{ unit_entry.unit.title }} ({{ unit_entry.unit.hours }} Hours)

{{ unit_entry.unit.content }}

{% elif unit_entry.kind == "changed" %}
~ {{ unit_entry.unit.title }} ({{ unit_entry.unit.hours }} Hours)

{{ unit_entry.unit.content }}

{% for field, change in unit_entry.changes.items() %}
− {{ field }}: {{ change.old }}
+ {{ field }}: {{ change.new }}
{% endfor %}
{% else %}
{{ unit_entry.unit.title }}

{{ unit_entry.unit.content }}

{{ unit_entry.unit.hours }} Hours

{% endif %} {% endfor %} {% else %} {% for unit in proposed_course.units %}

{{ unit.title }}

{{ unit.content }}

{{ unit.hours }} Hours

{% endfor %} {% endif %} {% endmacro %} {% macro render_course(course_diff, proposed_course) %}
PES University logo Computer Science and Engineering
{{ diff_cell(course_diff.course_code, proposed_course.course_code | course_code_for_year(proposed_course.semester, curriculum_year)) }} {{ diff_cell(course_diff.tools_languages, proposed_course.tools_languages) }}
Course CodeCourse Title {{ diff_inline(course_diff.course_title, proposed_course.course_title) }}
Program {{ proposed_course.program }} Hours per week / Credit Assigned LTPSC
{{ proposed_course.lecture_hours }} {{ proposed_course.tutorial_hours }} {{ proposed_course.practical_hours }} {{ proposed_course.self_study }} {{ proposed_course.credits }}
Semester {{ proposed_course.semester }} Type of Course {{ proposed_course.course_type }}
AI Tools / Tools / LanguagesDesirable Knowledge {{ diff_inline(course_diff.desirable_knowledge, proposed_course.desirable_knowledge) }}
{% if proposed_course.lab_experiments %} {% endif %} {% if proposed_course.reference_books %} {% endif %} {% if proposed_course.course_outcomes %} {% endif %}
Prelude {{ diff_inline(course_diff.prelude, proposed_course.prelude) }}
Course Objectives: {{ render_list(course_diff, proposed_course, "objectives") }}
Course Contents {{ render_units(course_diff, proposed_course) }}
Laboratory {{ render_list(course_diff, proposed_course, "lab_experiments", ordered=true) }}
Text Book(s): {{ render_list(course_diff, proposed_course, "text_books", ordered=true) }}
Reference Book(s): {{ render_list(course_diff, proposed_course, "reference_books", ordered=true) }}
Course Outcome {{ render_list(course_diff, proposed_course, "course_outcomes") }}
{% endmacro %} {% if course_diff is defined and course_diff %} {{ render_course(course_diff, proposed) }} {% elif course_diffs is defined and course_diffs %} {% for cd in course_diffs %} {{ render_course(cd.course_diff, cd.proposed) }} {% endfor %} {% else %}
No diff data available
{% endif %}