<commit_before>{% load url from future %}
{% load i18n %}
{% load staticfiles %}
{% load speech_utils %}

{% if not noli %}
<li id="s{{ speech.id }}" class="speech {% if result.object %}speech--search-result{% endif %} {% if speech.speaker and not nospeaker and not standalone %}speech--with-portrait{% endif %} {% if not speech.speaker  %}speech--narrative{% endif %} speech--border"
{% if speech.speaker.colour %} style="border-left-color: #{{ speech.speaker.colour }};"{% endif %}>
{% endif %}

  {% if not nospeaker and not standalone %}
    {% if speech.speaker %}
    <div class="speaker-portrait-wrapper">
    <img src="{% if speech.speaker.person.image %}
        {{ speech.speaker.person.image }} {% else %} {% static "speeches/i/a.png" %} {% endif %}"
        style="border-color: #{{ speech.speaker.colour }}; background-color: #{{ speech.speaker.colour }};" alt=""  class="speaker-portrait speaker-portrait--left round-image speaker-portrait--medium">
    </div>
    {% endif %}
  {% endif %}

  <div class="speech-wrapper">
    {% if not speech.is_public %}
      <span class="label secondary radius right">{% trans "Invisible" %}</span>
    {% endif %}
    <div class="speech__breadcrumb">
      {% if not nosection and speech.section_id %}
      <ul class="breadcrumbs">
        {% for n in speech.section.get_ancestors %}
            <li><a href="{{ n.get_absolute_url }}">{{ n.title }}</a></li>
        {% endfor %}
        {% if not result.object %}
        <li class="no-content-after">
          <span  class="breadcrumbs__date">
            {{ speech.start_time|default:"" }}{% if speech.start_time and speech.start_date and speech.start_date != speech.end_date %},{% endif %}
            {% if speech.start_date and speech.start_date != speech.end_date %}
              {{ speech.start_date }}
            {% endif %}
            {% if speech.end_time or speech.end_date %}
              {% if speech.start_time or speech.start_date and speech.start_date != speech.end_date %} &ndash; {% endif %}
              {{ speech.end_time|default:"" }}{% if speech.end_time and speech.end_date %},{% endif %}
              {{ speech.end_date }}
            {% endif %}
          </span>
        </li>
        {% endif %}
      </ul>
      {% endif %}
    </div>
    <div class="speech__meta-data">
      {% if speech.speaker and not nospeaker %}
        <span class="speech__meta-data__speaker-name">
          <a href="{% url 'speeches:speaker-view' speech.speaker.slug %}">
              {% filter force_escape %}
              {% firstof speech.speaker_display speech.speaker %}
              {% endfilter %}
          </a><commit_msg>speech.html: fix extra space above speeches without a section<commit_after>{% load url from future %}
{% load i18n %}
{% load staticfiles %}
{% load speech_utils %}

{% if not noli %}
<li id="s{{ speech.id }}" class="speech {% if result.object %}speech--search-result{% endif %} {% if speech.speaker and not nospeaker and not standalone %}speech--with-portrait{% endif %} {% if not speech.speaker  %}speech--narrative{% endif %} speech--border"
{% if speech.speaker.colour %} style="border-left-color: #{{ speech.speaker.colour }};"{% endif %}>
{% endif %}

  {% if not nospeaker and not standalone %}
    {% if speech.speaker %}
    <div class="speaker-portrait-wrapper">
    <img src="{% if speech.speaker.person.image %}
        {{ speech.speaker.person.image }} {% else %} {% static "speeches/i/a.png" %} {% endif %}"
        style="border-color: #{{ speech.speaker.colour }}; background-color: #{{ speech.speaker.colour }};" alt=""  class="speaker-portrait speaker-portrait--left round-image speaker-portrait--medium">
    </div>
    {% endif %}
  {% endif %}

  <div class="speech-wrapper">
    {% if not speech.is_public %}
      <span class="label secondary radius right">{% trans "Invisible" %}</span>
    {% endif %}
    {% if not nosection and speech.section_id %}
    <div class="speech__breadcrumb">
      <ul class="breadcrumbs">
        {% for n in speech.section.get_ancestors %}
            <li><a href="{{ n.get_absolute_url }}">{{ n.title }}</a></li>
        {% endfor %}
        {% if not result.object %}
        <li class="no-content-after">
          <span  class="breadcrumbs__date">
            {{ speech.start_time|default:"" }}{% if speech.start_time and speech.start_date and speech.start_date != speech.end_date %},{% endif %}
            {% if speech.start_date and speech.start_date != speech.end_date %}
              {{ speech.start_date }}
            {% endif %}
            {% if speech.end_time or speech.end_date %}
              {% if speech.start_time or speech.start_date and speech.start_date != speech.end_date %} &ndash; {% endif %}
              {{ speech.end_time|default:"" }}{% if speech.end_time and speech.end_date %},{% endif %}
              {{ speech.end_date }}
            {% endif %}
          </span>
        </li>
        {% endif %}
      </ul>
    </div>
    {% endif %}
    <div class="speech__meta-data">
      {% if speech.speaker and not nospeaker %}
        <span class="speech__meta-data__speaker-name">
          <a href="{% url 'speeches:speaker-view' speech.speaker.slug %}">
              {% filter force_escape %}
              {% firstof speech.speaker_display speech.speaker %}
              {% endfilter %}
          </a>
{'fraction_non_alphanumeric': 0.1717171717171717, 'fraction_numerical': 0.0007482229704451926, 'mean_word_length': 2.6079622132253713, 'pattern_counts': {'":': 0, '<': 49, '<?xml version=': 0, '>': 49, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '397850', 'n_tokens_mistral': 1822, 'n_tokens_neox': 1588, 'n_words': 365}