Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Upgrade bootstrap to 5.3.0 and enable dark mode #5509

Merged
merged 143 commits into from
Jun 13, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
143 commits
Select commit Hold shift + click to select a range
e1b783e
chore: Update requirements.txt for Django 3.0
jennifer-richards May 8, 2023
9fda268
fix: Replace `available_attrs` helper (dropped by Django 3.0)
jennifer-richards May 8, 2023
6d4d095
fix: Replace obsolete `curry()` with `functools.partialmethod()`
jennifer-richards May 9, 2023
9fde845
chore: Revert psycopg2 dependency
jennifer-richards May 9, 2023
2cf2a3d
chore: Remove django-cookie-delete-with-all-settings.patch
jennifer-richards May 9, 2023
dcb211f
Merge remote-tracking branch 'origin/main' into django4
jennifer-richards May 9, 2023
07e26dd
refactor: Replace deprecated force_text with force_str
jennifer-richards May 9, 2023
da16839
refactor: Replace deprecated smart_text with smart_str
jennifer-richards May 9, 2023
31fd431
chore: Tweak add-django-http-cookie-value-none.patch for Django 3.0
jennifer-richards May 9, 2023
ed571ae
chore: Rename DB engine to drop the deprecated "_psycopg2" suffix
jennifer-richards May 10, 2023
69eb634
test: Do not misuse django.conf.settings for HTML validation params
jennifer-richards May 10, 2023
57026bb
Revert "chore: Remove django-cookie-delete-with-all-settings.patch"
jennifer-richards May 10, 2023
21ac8c0
chore: Fix cookie-delete patch to work with Django 3.0
jennifer-richards May 10, 2023
a75dbd4
chore: Remove accidentally reverted removal of form_utils app
jennifer-richards May 10, 2023
85d0934
refactor: Refactor LiaisonForm without BetterModelForm
jennifer-richards May 10, 2023
163479b
refactor: Replace obsolete `staticfiles` template lib with `static`
jennifer-richards May 10, 2023
4f443cc
refactor: Explicitly allow name=None for a couple of views
jennifer-richards May 10, 2023
1015cf8
fix: Finish refactoring LiaisonModelForm subclasses without BetterMod…
jennifer-richards May 10, 2023
e6259a5
chore: Remove filter on staticfiles DeprecationWarning
jennifer-richards May 10, 2023
406ba7b
style: Apply Black style to active_group_types() view
jennifer-richards May 10, 2023
eee145e
fix: Explicitly order GroupTypeNames in active_group_types
jennifer-richards May 10, 2023
0d07059
style: Double backslashes in strings
jennifer-richards May 10, 2023
477a2de
chore: Merge main into feat/django4
jennifer-richards May 10, 2023
264ff60
Merge pull request #5601 from jennifer-richards/django4
jennifer-richards May 11, 2023
f8a9efc
ci: run tests on feat/django4 PRs (#5604)
jennifer-richards May 11, 2023
96396b8
Merge pull request #5611 from ietf-tools/main
jennifer-richards May 12, 2023
1419a0e
test: Remove ScheduleEditTests.testUnschedule (#5607)
jennifer-richards May 12, 2023
b2534fd
chore: Update requirements.txt for Django 3.1
jennifer-richards May 11, 2023
c4f99d0
chore: Update django-stubs and mypy requirements for Django 3.1
jennifer-richards May 12, 2023
ccb7d66
chore: Remove add-django-http-cookie-value-none.patch
jennifer-richards May 12, 2023
addc967
chore: Update django-cookie-delete-with-all-settings.patch
jennifer-richards May 12, 2023
d0cb46d
fix: Use TruncDate instead of QuerySet.extra()
jennifer-richards May 12, 2023
2f6da9e
Merge pull request #5612 from jennifer-richards/django31
jennifer-richards May 12, 2023
00118f7
chore: Update requirements.txt for Django 3.2
jennifer-richards May 12, 2023
aa4c041
chore: Use re_path() instead of url(), its deprecated synonym,
jennifer-richards May 12, 2023
87fdfaa
chore: Update django-tastypie requirement
jennifer-richards May 12, 2023
828071a
chore: Unpin oidc-provider, update its patch
jennifer-richards May 12, 2023
ebd28cd
chore: Update fix-oidc-access-token-post.patch
jennifer-richards May 12, 2023
0927615
chore: Update tastypie-django22-fielderror-response.patch
jennifer-richards May 12, 2023
4cfe1c1
chore: Update django-cookie-delete-with-all-settings.patch
jennifer-richards May 12, 2023
9d21196
chore: Add DEFAULT_AUTO_FIELD to settings.py
jennifer-richards May 12, 2023
075aed7
refactor: Replace deprecated request.is_ajax()
jennifer-richards May 12, 2023
b5d9e9b
refactor: Replace deprecated django.utils.http.urlquote
jennifer-richards May 12, 2023
bee7e11
chore: Remove accidental import from settings.py
jennifer-richards May 12, 2023
32ed1b7
refactor: Replace deprecated {% ifequal %} with {% if %}
jennifer-richards May 12, 2023
2100486
refactor: Replace deprecated is_safe_url with new name
jennifer-richards May 12, 2023
79b749f
style: Restyle method using Black
jennifer-richards May 12, 2023
872bdef
refactor: Use gettext instead of deprecated ugettext
jennifer-richards May 12, 2023
00f3f01
fix: {% endif %}, not {% end %}
jennifer-richards May 12, 2023
587bc4d
test: Remove outdated mypy test exceptions
jennifer-richards May 12, 2023
7ad74c9
refactor: import from django.urls instead of django.conf.urls
jennifer-richards May 12, 2023
68eb685
test: Use django_stubs_ext.QuerySetAny for isinstance() checks
jennifer-richards May 13, 2023
c840d53
test: Suppress mypy error on import of _lazy_re_compile()
jennifer-richards May 15, 2023
cbb9464
test: Remove unused assignment that caused a mypy error
jennifer-richards May 15, 2023
22bf508
test: Suppress notices from mypy involving factory types
jennifer-richards May 15, 2023
0319f35
test: Use Django 3.2 HttpResponse.headers API
jennifer-richards May 15, 2023
329fa26
chore: Remove abandoned django-password-strength package
jennifer-richards May 15, 2023
b714bfb
chore: Put widgets from django-password-strength into ietfauth
jennifer-richards May 15, 2023
0d5ecea
Merge pull request #5629 from jennifer-richards/django32
jennifer-richards May 16, 2023
7475aa0
Merge pull request #5634 from ietf-tools/main
jennifer-richards May 16, 2023
869562e
chore: Update requirements.txt to Django 4.0
jennifer-richards May 16, 2023
374c1a4
chore: Use new format for CSRF_TRUSTED_ORIGINS setting
jennifer-richards May 16, 2023
76fa01b
chore: Suppress deprecation warning for oidc_provider AppConfig
jennifer-richards May 16, 2023
e7ae72b
chore: Update django-cookie-delete-with-all-settings.patch
jennifer-richards May 16, 2023
88452a2
chore: Add USE_DEPRECATED_PYTZ to settings.py
jennifer-richards May 16, 2023
223c679
chore: Add no-op migration to satisfy Django bookkeeping changes
jennifer-richards May 16, 2023
8cf609b
refactor: Implement require_api_key with functools.wraps
jennifer-richards May 17, 2023
f85978f
chore: Disable L10N localization
jennifer-richards May 17, 2023
d519bca
test: Fix ignore_pattern so Redirect/TemplateViews are ignored again
jennifer-richards May 17, 2023
cbabb86
test: Use issubclass, not isinstance, to ID view_class
jennifer-richards May 17, 2023
cb259e9
Merge pull request #5649 from jennifer-richards/django40
jennifer-richards May 18, 2023
cdec6cc
Merge pull request #5655 from ietf-tools/main
jennifer-richards May 18, 2023
e7cc287
chore: Update requirements.txt for Django 4.1
jennifer-richards May 17, 2023
c26c9c7
chore: Switch to PyMemcacheCache backend
jennifer-richards May 17, 2023
3c2def3
chore: Update django-cookie-delete-with-all-settings.patch
jennifer-richards May 17, 2023
47e2b0b
fix: Prevent use of FK relation before review request is saved
jennifer-richards May 17, 2023
55fb502
test: Iterate over template.nodelist in apply_template_test
jennifer-richards May 18, 2023
fbdcff3
Merge pull request #5659 from jennifer-richards/django41
jennifer-richards May 18, 2023
d81a092
chore: Update requirements.txt for Django 4.2
jennifer-richards May 18, 2023
171a5be
chore: Update setuptools version and suppress warnings
jennifer-richards May 18, 2023
65ea426
fix: Add changed fields to update_fields in Model.save() methods
jennifer-richards May 18, 2023
f56dfd6
chore: Update django-cookie-delete-with-all-settings.patch
jennifer-richards May 18, 2023
6df5d4c
chore: Suppress CICharField deprecation warning
jennifer-richards May 18, 2023
c71f44f
chore: Suppress deprecation warning for oidc_provider
jennifer-richards May 18, 2023
39a854f
fix: Use arbitrary date in the past instead of datetime.min
jennifer-richards May 18, 2023
25b9976
chore: Switch to JSONSerializer
jennifer-richards May 18, 2023
19abdfe
refactor: Inject tests without using deprecated extra_tests
jennifer-richards May 19, 2023
b06fc7a
chore: Suppress warning about CryptPasswordHasher
jennifer-richards May 19, 2023
2d6681d
refactor: logout via GET is deprecated, use POST
jennifer-richards May 19, 2023
b6a7915
chore: Use DjangoDivFormRenderer to opt in to new default
jennifer-richards May 19, 2023
7ae0576
style: Apply Black style to methods in review.utils
jennifer-richards May 19, 2023
da8717f
chore: Set chunk_size on QuerySet.iterator()
jennifer-richards May 19, 2023
fdc074b
test: Use new signature for assertFormError
jennifer-richards May 19, 2023
1eafdca
chore: Replace django.utils.timezone.utc with dateutil.timezone.utc
jennifer-richards May 19, 2023
37a6521
test: Form is r.context["form"], not r["form"]
jennifer-richards May 19, 2023
102a612
test: POST instead of GET for logout tests
jennifer-richards May 19, 2023
be25fb9
test: Ignore menu bar when counting "submit" buttons
jennifer-richards May 19, 2023
93e9f8e
fix: Do not set update_fields when saving new instance
jennifer-richards May 19, 2023
36fe6a0
fix: Store nomcom private key in session as str
jennifer-richards May 19, 2023
bc3dcb6
test: Fix another test broken by changing "Sign out" to a form
jennifer-richards May 19, 2023
579d187
chore: Suppress deprecation warning in oidc_provider
jennifer-richards May 19, 2023
2eaea55
chore: Move log out suppression to settings,py
jennifer-richards May 19, 2023
2a29be5
test: Remove unused import
jennifer-richards May 19, 2023
58182fd
test: Fix selectors in selenium tests
jennifer-richards May 19, 2023
5f0e1a5
chore: Display errors if nomcom private key encoding fails
jennifer-richards May 23, 2023
ceb41e6
test: Check that error is displayed on decode failure
jennifer-richards May 23, 2023
22e80ce
Merge pull request #5665 from jennifer-richards/django42
jennifer-richards May 23, 2023
e973672
Merge branch 'feat/django4' into dev/merge-main-5679
jennifer-richards May 23, 2023
d95269a
Merge pull request #5679 from ietf-tools/dev/merge-main-5679
jennifer-richards May 23, 2023
4012a21
feat!: Version 11 based on Django 4
rjsparks May 23, 2023
cc8964d
Merge pull request #5680 from rjsparks/version11
jennifer-richards May 23, 2023
a0c5fab
Merge pull request #5698 from ietf-tools/main
rjsparks May 26, 2023
1922a60
Merge pull request #5700 from ietf-tools/main
jennifer-richards May 31, 2023
3015359
test: Use QuerySetAny alias for QuerySet type checks
jennifer-richards May 31, 2023
e121b5d
fix: Return NomComs, not Groups, from active_nomcoms filter
jennifer-richards May 31, 2023
8cd09ab
Revert "fix: Return NomComs, not Groups, from active_nomcoms filter"
jennifer-richards May 31, 2023
3cf5550
Merge pull request #5722 from jennifer-richards/queryset-type-check
jennifer-richards May 31, 2023
c12f810
test: ignore acceptable order change (#5727)
rjsparks May 31, 2023
3391166
fix: Return NomComs, not Groups, from active_nomcoms filter (#5726)
jennifer-richards May 31, 2023
36b847b
fix: explain what is not counted in the meeting request summary (#5728)
rjsparks Jun 1, 2023
8d4780d
fix: Ignore failure to extract text draft title unless it is needed (…
jennifer-richards Jun 1, 2023
5a27082
feat: Extract document creation date from XML draft (#5733)
jennifer-richards Jun 1, 2023
a9833d5
fix: use @fullcalendar/luxon3 plugin (#5729)
NGPixel Jun 1, 2023
c5b75d3
Merge pull request #5736 from ietf-tools/release
rjsparks Jun 1, 2023
e3d16bc
feat: Use distinct event desc for drafts received via api_submit (#5735)
jennifer-richards Jun 1, 2023
2d661a1
chore: Use permissive cross-origin-opener-policy setting
jennifer-richards Jun 1, 2023
c8f9739
Merge pull request #5738 from ietf-tools/main
jennifer-richards Jun 1, 2023
5d467d9
Merge pull request #5739 from jennifer-richards/coop_setting
jennifer-richards Jun 1, 2023
f711c83
Merge pull request #5740 from ietf-tools/feat/django4
rjsparks Jun 1, 2023
b3c7094
feat: Upgrade bootstrap to 5.3.0 and enable dark mode
larseggert Apr 19, 2023
df1a4bf
Enable dark mode in other views
larseggert Apr 19, 2023
54c7951
Fix some colors
larseggert Apr 19, 2023
e6f351b
Fix more colors
larseggert Apr 19, 2023
93d50f9
feat: Upgrade bootstrap to 5.3.0 and enable dark mode
larseggert Apr 19, 2023
112d3b9
Enable dark mode in other views
larseggert Apr 19, 2023
342e6f5
Color mode fixes
larseggert May 26, 2023
f850061
Fix switching in HTMLized view
larseggert May 26, 2023
e5163b6
Load theme.js in header, to avoid flickering
larseggert May 29, 2023
8caf3a7
Fix some badges
larseggert May 29, 2023
6f8a798
[email protected]
larseggert May 31, 2023
27f9e6a
Address review comments
larseggert Jun 1, 2023
e6f47a0
Fix title
larseggert Jun 1, 2023
7497143
Better select2 fix
larseggert Jun 2, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -91,10 +91,10 @@ jobs:
echo "pkg_version=$NEXT_VERSION" >> $GITHUB_OUTPUT
echo "::notice::Release $NEXT_VERSION created using branch $GITHUB_REF_NAME"
else
echo "Using TEST mode: 10.0.0-dev.$GITHUB_RUN_NUMBER"
echo "Using TEST mode: 11.0.0-dev.$GITHUB_RUN_NUMBER"
echo "should_deploy=false" >> $GITHUB_OUTPUT
echo "pkg_version=10.0.0-dev.$GITHUB_RUN_NUMBER" >> $GITHUB_OUTPUT
echo "::notice::Non-production build 10.0.0-dev.$GITHUB_RUN_NUMBER created using branch $GITHUB_REF_NAME"
echo "pkg_version=11.0.0-dev.$GITHUB_RUN_NUMBER" >> $GITHUB_OUTPUT
echo "::notice::Non-production build 11.0.0-dev.$GITHUB_RUN_NUMBER created using branch $GITHUB_REF_NAME"
fi

# -----------------------------------------------------------------
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/ci-run-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ on:
pull_request:
branches:
- 'main'
- 'feat/django4'
paths:
- 'client/**'
- 'ietf/**'
Expand Down
194 changes: 87 additions & 107 deletions .pnp.cjs

Large diffs are not rendered by default.

Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
2 changes: 1 addition & 1 deletion client/agenda/AgendaScheduleCalendar.vue
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ import {
import FullCalendar from '@fullcalendar/vue3'
import timeGridPlugin from '@fullcalendar/timegrid'
import interactionPlugin from '@fullcalendar/interaction'
import luxonPlugin from '@fullcalendar/luxon2'
import luxonPlugin from '@fullcalendar/luxon3'
import bootstrap5Plugin from '@fullcalendar/bootstrap5'

import AgendaDetailsModal from './AgendaDetailsModal.vue'
Expand Down
2 changes: 1 addition & 1 deletion dev/deploy-to-container/settings_local.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
'HOST': '__DBHOST__',
'PORT': 5432,
'NAME': 'datatracker',
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'ENGINE': 'django.db.backends.postgresql',
'USER': 'django',
'PASSWORD': 'RkTkDPFnKpko',
},
Expand Down
2 changes: 1 addition & 1 deletion dev/diff/settings_local.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
'HOST': '__DBHOST__',
'PORT': 5432,
'NAME': 'datatracker',
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'ENGINE': 'django.db.backends.postgresql',
'USER': 'django',
'PASSWORD': 'RkTkDPFnKpko',
},
Expand Down
2 changes: 1 addition & 1 deletion dev/tests/settings_local.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
'HOST': 'db',
'PORT': 5432,
'NAME': 'datatracker',
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'ENGINE': 'django.db.backends.postgresql',
'USER': 'django',
'PASSWORD': 'RkTkDPFnKpko',
},
Expand Down
2 changes: 1 addition & 1 deletion docker/configs/settings_postgresqldb.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
'HOST': 'db',
'PORT': 5432,
'NAME': 'datatracker',
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'ENGINE': 'django.db.backends.postgresql',
'USER': 'django',
'PASSWORD': 'RkTkDPFnKpko',
},
Expand Down
2 changes: 1 addition & 1 deletion ietf/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

# Version must stay in single quotes for automatic CI replace
# Don't add patch number here:
__version__ = '10.0.0-dev'
__version__ = '11.0.0-dev'

# Release hash must stay in single quotes for automatic CI replace
__release_hash__ = ''
Expand Down
19 changes: 10 additions & 9 deletions ietf/api/serializer.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,12 @@
from django.core.exceptions import ObjectDoesNotExist, FieldError
from django.core.serializers.json import Serializer
from django.http import HttpResponse
from django.utils.encoding import smart_text
from django.utils.encoding import smart_str
from django.db.models import Field
from django.db.models.query import QuerySet
from django.db.models.signals import post_save, post_delete, m2m_changed

from django_stubs_ext import QuerySetAny

import debug # pyflakes:ignore


Expand Down Expand Up @@ -121,7 +122,7 @@ def end_object(self, obj):
for name in expansions:
try:
field = getattr(obj, name)
#self._current["_"+name] = smart_text(field)
#self._current["_"+name] = smart_str(field)
if not isinstance(field, Field):
options = self.options.copy()
options["expand"] = [ v[len(name)+2:] for v in options["expand"] if v.startswith(name+"__") ]
Expand All @@ -145,7 +146,7 @@ def end_object(self, obj):
field_value = None
else:
field_value = field
if isinstance(field_value, QuerySet) or isinstance(field_value, list):
if isinstance(field_value, QuerySetAny) or isinstance(field_value, list):
self._current[name] = dict([ (rel.pk, self.expand_related(rel, name)) for rel in field_value ])
else:
if hasattr(field_value, "_meta"):
Expand Down Expand Up @@ -188,10 +189,10 @@ def handle_fk_field(self, obj, field):
related = related.natural_key()
elif field.remote_field.field_name == related._meta.pk.name:
# Related to remote object via primary key
related = smart_text(related._get_pk_val(), strings_only=True)
related = smart_str(related._get_pk_val(), strings_only=True)
else:
# Related to remote object via other field
related = smart_text(getattr(related, field.remote_field.field_name), strings_only=True)
related = smart_str(getattr(related, field.remote_field.field_name), strings_only=True)
self._current[field.name] = related

def handle_m2m_field(self, obj, field):
Expand All @@ -201,7 +202,7 @@ def handle_m2m_field(self, obj, field):
elif self.use_natural_keys and hasattr(field.remote_field.to, 'natural_key'):
m2m_value = lambda value: value.natural_key()
else:
m2m_value = lambda value: smart_text(value._get_pk_val(), strings_only=True)
m2m_value = lambda value: smart_str(value._get_pk_val(), strings_only=True)
self._current[field.name] = [m2m_value(related)
for related in getattr(obj, field.name).iterator()]

Expand All @@ -221,7 +222,7 @@ class JsonExportMixin(object):
# obj = None
#
# if obj is None:
# raise Http404(_('%(name)s object with primary key %(key)r does not exist.') % {'name': force_text(self.model._meta.verbose_name), 'key': escape(object_id)})
# raise Http404(_('%(name)s object with primary key %(key)r does not exist.') % {'name': force_str(self.model._meta.verbose_name), 'key': escape(object_id)})
#
# content_type = 'application/json'
# return HttpResponse(serialize([ obj ], sort_keys=True, indent=3)[2:-2], content_type=content_type)
Expand Down Expand Up @@ -264,6 +265,6 @@ def json_view(self, request, filter=None, expand=None):
qd = dict( ( k, json.loads(v)[0] ) for k,v in items )
except (FieldError, ValueError) as e:
return HttpResponse(json.dumps({"error": str(e)}, sort_keys=True, indent=3), content_type=content_type)
text = json.dumps({smart_text(self.model._meta): qd}, sort_keys=True, indent=3)
text = json.dumps({smart_str(self.model._meta): qd}, sort_keys=True, indent=3)
return HttpResponse(text, content_type=content_type)

2 changes: 1 addition & 1 deletion ietf/api/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -691,7 +691,7 @@ def test_api_new_meeting_registration(self):
self.assertEqual(set(missing_fields), set(drop_fields))

def test_api_version(self):
DumpInfo.objects.create(date=timezone.datetime(2022,8,31,7,10,1,tzinfo=timezone.utc), host='testapi.example.com',tz='UTC')
DumpInfo.objects.create(date=timezone.datetime(2022,8,31,7,10,1,tzinfo=datetime.timezone.utc), host='testapi.example.com',tz='UTC')
url = urlreverse('ietf.api.views.version')
r = self.client.get(url)
data = r.json()
Expand Down
2 changes: 1 addition & 1 deletion ietf/api/urls.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Copyright The IETF Trust 2017, All Rights Reserved

from django.conf import settings
from django.conf.urls import include
from django.urls import include
from django.views.generic import TemplateView

from ietf import api
Expand Down
5 changes: 3 additions & 2 deletions ietf/community/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
from ietf.community.utils import states_of_significant_change, reset_name_contains_index_for_rule
from ietf.doc.models import DocEvent, Document
from ietf.doc.utils_search import prepare_document_table
from ietf.utils.http import is_ajax
from ietf.utils.response import permission_denied

def view_list(request, username=None):
Expand Down Expand Up @@ -142,7 +143,7 @@ def track_document(request, name, username=None, acronym=None):
if not doc in clist.added_docs.all():
clist.added_docs.add(doc)

if request.is_ajax():
if is_ajax(request):
return HttpResponse(json.dumps({ 'success': True }), content_type='application/json')
else:
return HttpResponseRedirect(clist.get_absolute_url())
Expand All @@ -162,7 +163,7 @@ def untrack_document(request, name, username=None, acronym=None):
if clist.pk is not None:
clist.added_docs.remove(doc)

if request.is_ajax():
if is_ajax(request):
return HttpResponse(json.dumps({ 'success': True }), content_type='application/json')
else:
return HttpResponseRedirect(clist.get_absolute_url())
Expand Down
10 changes: 5 additions & 5 deletions ietf/doc/mails.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
from django.conf import settings
from django.urls import reverse as urlreverse
from django.utils import timezone
from django.utils.encoding import force_text
from django.utils.encoding import force_str

import debug # pyflakes:ignore
from ietf.doc.templatetags.mail_filters import std_level_prompt
Expand Down Expand Up @@ -175,7 +175,7 @@ def generate_ballot_writeup(request, doc):
e.doc = doc
e.rev = doc.rev
e.desc = "Ballot writeup was generated"
e.text = force_text(render_to_string("doc/mail/ballot_writeup.txt", {'iana': iana, 'doc': doc }))
e.text = force_str(render_to_string("doc/mail/ballot_writeup.txt", {'iana': iana, 'doc': doc }))

# caller is responsible for saving, if necessary
return e
Expand All @@ -187,7 +187,7 @@ def generate_ballot_rfceditornote(request, doc):
e.doc = doc
e.rev = doc.rev
e.desc = "RFC Editor Note for ballot was generated"
e.text = force_text(render_to_string("doc/mail/ballot_rfceditornote.txt"))
e.text = force_str(render_to_string("doc/mail/ballot_rfceditornote.txt"))
e.save()

return e
Expand Down Expand Up @@ -232,7 +232,7 @@ def generate_last_call_announcement(request, doc):
e.doc = doc
e.rev = doc.rev
e.desc = "Last call announcement was generated"
e.text = force_text(mail)
e.text = force_str(mail)

# caller is responsible for saving, if necessary
return e
Expand All @@ -252,7 +252,7 @@ def generate_approval_mail(request, doc):
e.doc = doc
e.rev = doc.rev
e.desc = "Ballot approval text was generated"
e.text = force_text(mail)
e.text = force_str(mail)

# caller is responsible for saving, if necessary
return e
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# Generated by Django 4.0.10 on 2023-05-16 20:36

from django.db import migrations
import django.db.models.deletion
import ietf.utils.models


class Migration(migrations.Migration):

dependencies = [
('person', '0001_initial'),
('doc', '0003_remove_document_info_order'),
]

operations = [
migrations.AlterField(
model_name='dochistory',
name='ad',
field=ietf.utils.models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ad_%(class)s_set', to='person.person', verbose_name='area director'),
),
migrations.AlterField(
model_name='dochistory',
name='shepherd',
field=ietf.utils.models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='shepherd_%(class)s_set', to='person.email'),
),
migrations.AlterField(
model_name='document',
name='ad',
field=ietf.utils.models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ad_%(class)s_set', to='person.person', verbose_name='area director'),
),
migrations.AlterField(
model_name='document',
name='shepherd',
field=ietf.utils.models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='shepherd_%(class)s_set', to='person.email'),
),
]
6 changes: 3 additions & 3 deletions ietf/doc/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
from django.contrib.contenttypes.models import ContentType
from django.conf import settings
from django.utils import timezone
from django.utils.encoding import force_text
from django.utils.encoding import force_str
from django.utils.html import mark_safe # type:ignore
from django.contrib.staticfiles import finders

Expand Down Expand Up @@ -1134,7 +1134,7 @@ class DocHistory(DocumentInfo):
name = models.CharField(max_length=255)

def __str__(self):
return force_text(self.doc.name)
return force_str(self.doc.name)

def get_related_session(self):
return self.doc.get_related_session()
Expand Down Expand Up @@ -1196,7 +1196,7 @@ def document(self):
return self.docs.first()

def __str__(self):
return u"%s-->%s" % (self.name, ','.join([force_text(d.name) for d in self.docs.all() if isinstance(d, Document) ]))
return u"%s-->%s" % (self.name, ','.join([force_str(d.name) for d in self.docs.all() if isinstance(d, Document) ]))
document_link = admin_link("document")
class Meta:
verbose_name = "document alias"
Expand Down
5 changes: 2 additions & 3 deletions ietf/doc/templatetags/ietf_filters.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,7 @@
from django.template.defaultfilters import truncatewords_html, linebreaksbr, stringfilter, striptags
from django.utils.safestring import mark_safe, SafeData
from django.utils.html import strip_tags
from django.utils.encoding import force_text
from django.utils.encoding import force_str # pyflakes:ignore force_str is used in the doctests
from django.utils.encoding import force_str
from django.urls import reverse as urlreverse
from django.core.cache import cache
from django.core.exceptions import ValidationError
Expand Down Expand Up @@ -132,7 +131,7 @@ def bracketpos(pos,posslug):
@register.filter
def prettystdname(string, space=" "):
from ietf.doc.utils import prettify_std_name
return prettify_std_name(force_text(string or ""), space)
return prettify_std_name(force_str(string or ""), space)

@register.filter
def rfceditor_info_url(rfcnum : str):
Expand Down
2 changes: 1 addition & 1 deletion ietf/doc/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -1779,7 +1779,7 @@ def test_document_ballot_needed_positions(self):
self.client.login(username='ad', password='ad+password')
r = self.client.post(urlreverse('ietf.doc.views_status_change.change_state',kwargs=dict(name=doc.name)),dict(new_state=iesgeval_pk))
self.assertEqual(r.status_code, 302)
r = self.client.get(r._headers["location"][1])
r = self.client.get(r.headers["location"])
self.assertContains(r, ">IESG Evaluation<")
self.assertEqual(len(outbox), 2)
self.assertIn('iesg-secretary',outbox[0]['To'])
Expand Down
4 changes: 2 additions & 2 deletions ietf/doc/tests_draft.py
Original file line number Diff line number Diff line change
Expand Up @@ -573,7 +573,7 @@ def test_request_resurrect(self):
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
q = PyQuery(r.content)
self.assertEqual(len(q('form [type=submit]')), 1)
self.assertEqual(len(q('#content form [type=submit]')), 1)


# request resurrect
Expand Down Expand Up @@ -609,7 +609,7 @@ def test_resurrect(self):
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
q = PyQuery(r.content)
self.assertEqual(len(q('form [type=submit]')), 1)
self.assertEqual(len(q('#content form [type=submit]')), 1)

# complete resurrect
events_before = draft.docevent_set.count()
Expand Down
4 changes: 2 additions & 2 deletions ietf/doc/tests_js.py
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ def _read_author_form(form_elt):
# Must provide a "basis" (change reason)
self.driver.find_element(By.ID, 'id_basis').send_keys('change testing')
# Now click the 'submit' button and check that the update was accepted.
submit_button = self.driver.find_element(By.CSS_SELECTOR, 'button[type="submit"]')
submit_button = self.driver.find_element(By.CSS_SELECTOR, '#content button[type="submit"]')
self.driver.execute_script("arguments[0].click();", submit_button) # FIXME: no idea why this fails:
# self.scroll_to_element(submit_button)
# submit_button.click()
Expand All @@ -132,4 +132,4 @@ def _read_author_form(form_elt):
self.assertEqual(
list(draft.documentauthor_set.values_list('person', flat=True)),
[first_auth.person.pk] + [auth.pk for auth in authors]
)
)
4 changes: 2 additions & 2 deletions ietf/doc/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,9 @@
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


from django.conf.urls import include
from django.views.generic import RedirectView
from django.conf import settings
from django.urls import include
from django.views.generic import RedirectView

from ietf.doc import views_search, views_draft, views_ballot, views_status_change, views_doc, views_downref, views_stats, views_help, views_bofreq
from ietf.utils.urls import url
Expand Down
Loading