AMY uses Django templating system and Django templating engine.
Templates in AMY are kept in
amy/templates/ directory, conveniently grouped by
application in subdirectories (
comments - from
forms - from
requests - from
workshops). There are also directories
not related to internal AMY applications:
account- contains templates related to login/logout/password reset pages,
bootstrap4- contains templates and/or includes for widgets used by Django Crispy Forms,
includes- contains a bunch of reusable "components" - Django HTML templates,
mailing- contains templates used to generate emails automatically sent when users submit external forms,
markdownx- contains some overridden templates for django-markdown package.
Usually, unsless the template is an includable, one template corresponds to one view, that's why they are grouped in per-application directories.
The rest of the files stored directly in
amy/templates/ directory are base templates.
Here's a description of them, which almost all the other templates inherit from.
There are multiple types of views in AMY:
- wide (e.g. 'Dashboard') --
- wide with sidebar (e.g. 'All Events') --
- wide with two content columns (e.g.
WorkshopRequestaccept view) --
These templates all inherit from
base.html, which holds the HTML structure,
includes CSS styles and JS code, displays messages, footer, etc.
base_nav.html is nothing more but
base.html extended with a navigation.
Navigation changes depending on user - one navigation bar
navigation.html) exists for admin users, a different one
navigation_instructor_dashboard.html) exists for instructors/trainees.
A correct navigation bar is being included in
base_nav.html and every
instructor-enabled template (e.g. Auto Update Profile form, Upcoming Teaching
Opportunities page, etc.).
There are also these templates available at the top-level template directory:
base_forms.html- base template for external forms (workshop request, workshop inquiry request, self-organised submission and training request),
generic_form.html- a default form used by
AMYUpdateView(base views for creating and updating entities),
generic_form_with_comments.html- the same as
generic_form.html, but additionally contains a section with comments provided by extcomments application,
pagination.html- displays a neat button groups split with "..." to not show too much pages at once.
Blocks available in base template
Django template blocks used in
<head>, when you need to load some additional CSS files or embed styles right into the page,
extrajson bottom of
navbarused in templates that include a navigation bar,
mainwith all the main content in case someone really needs to change it,
leftcolumnfor adding a sidebar or a column (used in
maincolumnfor changing main content column grid,
logoused in views that display AMY logo (login page, log out page, password reset, etc.) - see
<h1>tag with page title,
contentfor displaying page content.
There are multiple reusable components available in
assigned_to.html- displays whom has the entity (event, workshop request, workshop inquiry request, self-organised submission) been assigned to; displays a form to change the assignee,
assignment_modal.html- displays a modal "window" on the page; this window is used to select person assigned to specified entity (event, workshop request, workshop inquiry request, self-organised submission),
assignment.html- displays a dropdown to change filtering events assigned to specific person (user, unassigned, or no filtering),
attendance_email_href.html- renders a
mailto:link with provided list of emails as recipients and predefined text in email body; used in event details view and in workshop issues report,
comments.html- displays comments and form for adding comments for a given entity,
country_flag.html- renders county name with this country's flag,
curriculum.html- displays curriculum as a Boostrap badge,
event_details_table.html- displays a table with event details,
event_import_update_from_url.html- modal for importing event details from a given URL address,
instructor_profile_snapshot.html- as name suggests, this is a snapshot of person's instructor profile used in Instructor Selection project, on instructor dashboard,
instructor_role_badge.html- small component displaying information about active or inactive instructor badge on for a person,
instructor_selection_summary.html- a summary of instructor selection for a given event; this is displayed in event's jumbo header,
instructorrecruitment.html- a representation of single
last_modified.html- used by
last_modifiedtemplate tag to display audit log information (when entity was created, when it was last modified),
logo.html- AMY logo, used by user-facing external forms,
merge_radio.html- used to display HTML
radioelement in Person/Event merge views,
request_host_person.html- used to display person from the database matching the person requesting a workshop,
request_institution.html- used to display organisation from the database matching the institution of person requesting a workshop,
requests_bottom_action_btns.html- displays a group of buttons for accepting, discarding, etc. workshop requests, workshop inquiry requests, and self-organised submissions,
selforganisedsubmission_details.html- displays a table with self-organised submission details,
tag.html- displays a Boostrap badge of a tag,
teaching_opportunity.html- displays details of instructor recruitment instance used in Instructor Selection project, on instructor dashboard,
template_response.html- provides a dropdown with templates used for automatic reply to a workshop request,
training_progresses_inline.html- displays person's progress in training with various training requirements,
trainingrequest_details.html- displays a table with training request details,
workshopinquiry_details.html- displays a table with workshop inquiry request details,
workshoprequest_details.html- displays a table with workshop request details.