diff --git a/.github/workflows/dev-db-nightly.yml b/.github/workflows/dev-db-nightly.yml index 9a2284d4d..838eb48de 100644 --- a/.github/workflows/dev-db-nightly.yml +++ b/.github/workflows/dev-db-nightly.yml @@ -23,12 +23,23 @@ on: # Allows you to run this workflow manually from the Actions tab workflow_dispatch: + inputs: + skipMariaDBBuild: + description: 'Skip MariaDB Build' + default: false + required: true + type: boolean + exportDumpAsSQL: + description: 'Save PostgreSQL Debug Dump' + default: false + required: true + type: boolean jobs: build-mariadb: name: Build MariaDB Docker Images runs-on: ubuntu-latest - if: ${{ github.ref == 'refs/heads/main' }} + if: ${{ github.ref == 'refs/heads/main' && github.event.inputs.skipMariaDBBuild == 'false' }} permissions: contents: read packages: write @@ -96,6 +107,7 @@ jobs: name: Migrate MySQL to PostgreSQL DB runs-on: ubuntu-latest container: ghcr.io/ietf-tools/datatracker-app-base:latest + if: ${{ always() && !failure() }} needs: [combine-mariadb] permissions: contents: read @@ -141,10 +153,22 @@ jobs: with: name: dump path: ietf.dump + + - name: Export as SQL (Debug) + if: ${{ github.event.inputs.exportDumpAsSQL == 'true' }} + run: pg_dump -h pgdb -U django ietf > ietf.sql + + - name: Upload SQL DB Dump (Debug) + if: ${{ github.event.inputs.exportDumpAsSQL == 'true' }} + uses: actions/upload-artifact@v3 + with: + name: dumpsql + path: ietf.sql build: name: Build PostgreSQL Docker Images runs-on: ubuntu-latest + if: ${{ always() && !failure() }} needs: [migrate] permissions: contents: read diff --git a/ietf/group/factories.py b/ietf/group/factories.py index 0a3f7b6db..d56fcf721 100644 --- a/ietf/group/factories.py +++ b/ietf/group/factories.py @@ -10,6 +10,8 @@ from django.utils import timezone from ietf.group.models import Group, Role, GroupEvent, GroupMilestone, \ GroupHistory, RoleHistory from ietf.review.factories import ReviewTeamSettingsFactory +from ietf.utils.timezone import date_today + class GroupFactory(factory.django.DjangoModelFactory): class Meta: @@ -68,7 +70,7 @@ class BaseGroupMilestoneFactory(factory.django.DjangoModelFactory): class DatedGroupMilestoneFactory(BaseGroupMilestoneFactory): group = factory.SubFactory(GroupFactory, uses_milestone_dates=True) - due = timezone.now()+datetime.timedelta(days=180) + due = date_today() + datetime.timedelta(days=180) class DatelessGroupMilestoneFactory(BaseGroupMilestoneFactory): group = factory.SubFactory(GroupFactory, uses_milestone_dates=False) diff --git a/ietf/meeting/views.py b/ietf/meeting/views.py index 8a028d435..6e96fa82a 100644 --- a/ietf/meeting/views.py +++ b/ietf/meeting/views.py @@ -3621,7 +3621,8 @@ def organize_proceedings_sessions(sessions): """ material_times = {} # key is material, value is first timestamp it appeared for s, mats in items: - timestamp = s.official_timeslotassignment().timeslot.time + tsa = s.official_timeslotassignment() + timestamp = tsa.timeslot.time if tsa else None if not isinstance(mats, list): mats = [mats] for mat in mats: @@ -3640,7 +3641,7 @@ def organize_proceedings_sessions(sessions): 'group': group, 'name': sess_name, 'canceled': all_canceled, - # pass sessions instead of the materials here so session data (like time) is easily available + 'has_materials': s.sessionpresentation_set.exists(), 'agendas': _format_materials((s, s.agenda()) for s in ss), 'minutes': _format_materials((s, s.minutes()) for s in ss), 'bluesheets': _format_materials((s, s.bluesheets()) for s in ss), @@ -3687,9 +3688,13 @@ def proceedings(request, num=None): sessions.filter(name__icontains='plenary') .exclude(current_status='notmeet') ) - irtf, _ = organize_proceedings_sessions( + irtf_meeting, irtf_not_meeting = organize_proceedings_sessions( sessions.filter(group__parent__acronym = 'irtf').order_by('group__acronym') ) + # per Colin (datatracker #5010) - don't report not meeting rags + irtf_not_meeting = [item for item in irtf_not_meeting if item["group"].type_id != "rag"] + irtf = {"meeting_groups":irtf_meeting, "not_meeting_groups":irtf_not_meeting} + training, _ = organize_proceedings_sessions( sessions.filter(group__acronym__in=['edu','iaoc'], type_id__in=['regular', 'other',]) .exclude(current_status='notmeet') diff --git a/ietf/static/css/document_html_txt.scss b/ietf/static/css/document_html_txt.scss index f79734e1a..84e677908 100644 --- a/ietf/static/css/document_html_txt.scss +++ b/ietf/static/css/document_html_txt.scss @@ -43,11 +43,13 @@ margin-bottom: var(--line); margin-left: 3ch; + section > p, section > dl.references > dd { /* Really long lines can wrap when all else fails. * This won't affect
or
+ | + |
{{ doc.name }}-{{ doc.rev }}
-
+
{% if doc.rev and content != None %}
{% if content_is_html %}
{{ content|sanitize|safe }}
diff --git a/ietf/templates/group/meetings-row.html b/ietf/templates/group/meetings-row.html
index 38266e5ce..6dc65ab7f 100644
--- a/ietf/templates/group/meetings-row.html
+++ b/ietf/templates/group/meetings-row.html
@@ -30,7 +30,7 @@
{% if s.current_status == "sched" %}{{ s.time|date:"D" }}{% endif %}
|
- {% if show_ical %} + {% if show_ical and s.current_status == "sched" %} {% if s.meeting.type_id == 'ietf' %} {{ s.time|date:"H:i" }} {% if session.agenda and show_agenda %} - {% include "meeting/session_agenda_include.html" with slug=item.slug session=session timeslot=item.timeslot only %} - {# Note: if called with show_agenda=True, calling template must load agenda_materials.js, needed by session_agenda_include.html #} {# agenda pop-up button #} - {% for entry in not_meeting_groups %}{% if entry.sessions_with_materials %} + {% for entry in not_meeting_groups %}{% if entry.has_materials %} {% include "meeting/group_proceedings.html" with entry=entry meeting=meeting show_agenda=True only %} {% endif %}{% endfor %} @@ -148,7 +148,7 @@ |
---|
+ IRTF groups not meeting: + {% for entry in irtf.not_meeting_groups %} + {% if entry.name == "" %}{# do not show named sessions in this list #} + + {{ entry.group.acronym }} + {% if not forloop.last %},{% endif %} + {% endif %} + {% endfor %} +
++ | + | + | + | + |
---|