0003-django4-replaced-force_text-with-equivalent-force_st.patch
chrono/agendas/models.py | ||
---|---|---|
43 | 43 |
from django.urls import reverse |
44 | 44 |
from django.utils import functional |
45 | 45 |
from django.utils.dates import WEEKDAYS |
46 |
from django.utils.encoding import force_text
|
|
46 |
from django.utils.encoding import force_str
|
|
47 | 47 |
from django.utils.formats import date_format |
48 | 48 |
from django.utils.functional import cached_property |
49 | 49 |
from django.utils.html import escape |
... | ... | |
1088 | 1088 | |
1089 | 1089 |
def __repr__(self): |
1090 | 1090 |
return '%s / %s' % ( |
1091 |
force_text(WEEKDAYS[self.weekday]),
|
|
1091 |
force_str(WEEKDAYS[self.weekday]),
|
|
1092 | 1092 |
date_format(self.time, 'TIME_FORMAT'), |
1093 | 1093 |
) |
1094 | 1094 | |
... | ... | |
1121 | 1121 |
ordering = ['weekday', 'start_time'] |
1122 | 1122 | |
1123 | 1123 |
def __str__(self): |
1124 |
label = force_text(WEEKDAYS[self.weekday])
|
|
1124 |
label = force_str(WEEKDAYS[self.weekday])
|
|
1125 | 1125 |
if self.weekday_indexes: |
1126 | 1126 |
label = _('%(weekday)s (%(ordinals)s of the month)') % { |
1127 | 1127 |
'weekday': label, |
... | ... | |
1218 | 1218 | |
1219 | 1219 |
def __str__(self): |
1220 | 1220 |
return '%s / %s → %s' % ( |
1221 |
force_text(WEEKDAYS[self.weekday]),
|
|
1221 |
force_str(WEEKDAYS[self.weekday]),
|
|
1222 | 1222 |
date_format(self.start_time, 'TIME_FORMAT'), |
1223 | 1223 |
date_format(self.end_time, 'TIME_FORMAT'), |
1224 | 1224 |
) |
... | ... | |
2480 | 2480 |
pass |
2481 | 2481 |
data = response.text |
2482 | 2482 |
else: |
2483 |
data = force_text(self.ics_file.read())
|
|
2483 |
data = force_str(self.ics_file.read())
|
|
2484 | 2484 | |
2485 | 2485 |
try: |
2486 | 2486 |
parsed = vobject.readOne(data) |
... | ... | |
2501 | 2501 | |
2502 | 2502 |
def _get_summary_from_vevent(self, vevent): |
2503 | 2503 |
if 'summary' in vevent.contents: |
2504 |
return force_text(vevent.contents['summary'][0].value)
|
|
2504 |
return force_str(vevent.contents['summary'][0].value)
|
|
2505 | 2505 |
return _('Exception') |
2506 | 2506 | |
2507 | 2507 |
def refresh_timeperiod_exceptions(self, data=None): |
chrono/api/views.py | ||
---|---|---|
30 | 30 |
from django.template import Context, Template, TemplateSyntaxError, VariableDoesNotExist |
31 | 31 |
from django.urls import reverse |
32 | 32 |
from django.utils.dates import WEEKDAYS |
33 |
from django.utils.encoding import force_text
|
|
33 |
from django.utils.encoding import force_str
|
|
34 | 34 |
from django.utils.formats import date_format |
35 | 35 |
from django.utils.timezone import localtime, make_aware, now |
36 | 36 |
from django.utils.translation import gettext |
... | ... | |
450 | 450 | |
451 | 451 | |
452 | 452 |
def get_event_text(event, agenda, day=None): |
453 |
event_text = force_text(event)
|
|
453 |
event_text = force_str(event)
|
|
454 | 454 |
if agenda.event_display_template: |
455 | 455 |
try: |
456 | 456 |
event_text = Template(agenda.event_display_template).render( |
chrono/manager/forms.py | ||
---|---|---|
33 | 33 |
from django.db.models import DurationField, ExpressionWrapper, F |
34 | 34 |
from django.forms import ValidationError, formset_factory |
35 | 35 |
from django.template import Context, Template, TemplateSyntaxError, VariableDoesNotExist |
36 |
from django.utils.encoding import force_text
|
|
36 |
from django.utils.encoding import force_str
|
|
37 | 37 |
from django.utils.formats import date_format |
38 | 38 |
from django.utils.timezone import localtime, make_aware, now |
39 | 39 |
from django.utils.translation import gettext_lazy as _ |
... | ... | |
1099 | 1099 |
# label needed to generate a slug |
1100 | 1100 |
label = None |
1101 | 1101 |
if len(csvline) >= 5: |
1102 |
label = force_text(csvline[4])
|
|
1102 |
label = force_str(csvline[4])
|
|
1103 | 1103 | |
1104 | 1104 |
# get or create event |
1105 | 1105 |
event = None |
1106 | 1106 |
slug = None |
1107 | 1107 |
if len(csvline) >= 6: |
1108 |
slug = force_text(csvline[5]) if csvline[5] else None
|
|
1108 |
slug = force_str(csvline[5]) if csvline[5] else None
|
|
1109 | 1109 |
# get existing event if relevant |
1110 | 1110 |
if slug and slug in seen_slugs: |
1111 | 1111 |
event = events_by_slug[slug] |
chrono/manager/views.py | ||
---|---|---|
39 | 39 |
from django.urls import reverse, reverse_lazy |
40 | 40 |
from django.utils import lorem_ipsum |
41 | 41 |
from django.utils.dates import MONTHS |
42 |
from django.utils.encoding import force_text
|
|
42 |
from django.utils.encoding import force_str
|
|
43 | 43 |
from django.utils.formats import date_format |
44 | 44 |
from django.utils.html import format_html |
45 | 45 |
from django.utils.timezone import localtime, make_aware, make_naive, now |
... | ... | |
794 | 794 | |
795 | 795 |
def form_valid(self, form): |
796 | 796 |
try: |
797 |
agendas_json = json.loads(force_text(self.request.FILES['agendas_json'].read()))
|
|
797 |
agendas_json = json.loads(force_str(self.request.FILES['agendas_json'].read()))
|
|
798 | 798 |
except ValueError: |
799 | 799 |
form.add_error('agendas_json', _('File is not in the expected JSON format.')) |
800 | 800 |
return self.form_invalid(form) |
... | ... | |
3026 | 3026 |
else: |
3027 | 3027 |
sources.append(self.import_file(desk, form)) |
3028 | 3028 |
except ICSError as e: |
3029 |
form.add_error(None, force_text(e))
|
|
3029 |
form.add_error(None, force_str(e))
|
|
3030 | 3030 |
return self.form_invalid(form) |
3031 | 3031 | |
3032 | 3032 |
try: |
3033 | 3033 |
for source in sources: |
3034 | 3034 |
source.refresh_timeperiod_exceptions(data=source._parsed) |
3035 | 3035 |
except ICSError as e: |
3036 |
form.add_error(None, force_text(e))
|
|
3036 |
form.add_error(None, force_str(e))
|
|
3037 | 3037 |
return self.form_invalid(form) |
3038 | 3038 | |
3039 | 3039 |
messages.info(self.request, _('Exceptions will be imported in a few minutes.')) |
... | ... | |
3093 | 3093 |
else: |
3094 | 3094 |
self.import_file(self.desk or self.unavailability_calendar, form) |
3095 | 3095 |
except ICSError as e: |
3096 |
form.add_error(None, force_text(e))
|
|
3096 |
form.add_error(None, force_str(e))
|
|
3097 | 3097 |
return self.form_invalid(form) |
3098 | 3098 | |
3099 | 3099 |
messages.info(self.request, _('Exceptions will be synchronized in a few minutes.')) |
... | ... | |
3124 | 3124 |
else: |
3125 | 3125 |
self.import_file(self.desk or self.unavailability_calendar) |
3126 | 3126 |
except ICSError as e: |
3127 |
messages.error(self.request, force_text(e))
|
|
3127 |
messages.error(self.request, force_str(e))
|
|
3128 | 3128 | |
3129 | 3129 |
messages.info(self.request, _('Exceptions will be synchronized in a few minutes.')) |
3130 | 3130 |
# redirect to settings |
... | ... | |
3601 | 3601 |
with transaction.atomic(): |
3602 | 3602 |
source = self.import_file(form) |
3603 | 3603 |
except ICSError as e: |
3604 |
form.add_error(None, force_text(e))
|
|
3604 |
form.add_error(None, force_str(e))
|
|
3605 | 3605 |
return self.form_invalid(form) |
3606 | 3606 | |
3607 | 3607 |
try: |
3608 | 3608 |
source.refresh_timeperiod_exceptions(data=source._parsed) |
3609 | 3609 |
except ICSError as e: |
3610 |
form.add_error(None, force_text(e))
|
|
3610 |
form.add_error(None, force_str(e))
|
|
3611 | 3611 |
return self.form_invalid(form) |
3612 | 3612 | |
3613 | 3613 |
messages.info(self.request, _('Exceptions will be imported in a few minutes.')) |
... | ... | |
3868 | 3868 |
json_str = json.dumps( |
3869 | 3869 |
[ |
3870 | 3870 |
{ |
3871 |
'label': force_text(label),
|
|
3871 |
'label': force_str(label),
|
|
3872 | 3872 |
'slug': 'calendar', |
3873 | 3873 |
'url': request.build_absolute_uri(reverse('chrono-manager-homepage')), |
3874 | 3874 |
} |
tests/manager/test_import_export.py | ||
---|---|---|
3 | 3 | |
4 | 4 |
import freezegun |
5 | 5 |
import pytest |
6 |
from django.utils.encoding import force_text
|
|
6 |
from django.utils.encoding import force_str
|
|
7 | 7 |
from django.utils.timezone import now |
8 | 8 |
from webtest import Upload |
9 | 9 | |
... | ... | |
154 | 154 |
assert Agenda.objects.count() == 3 |
155 | 155 | |
156 | 156 |
# reference to unknown group |
157 |
agenda_export_dict = json.loads(force_text(agenda_export))
|
|
157 |
agenda_export_dict = json.loads(force_str(agenda_export))
|
|
158 | 158 |
agenda_export_dict['agendas'][0]['permissions']['view'] = 'gé1' |
159 | 159 |
agenda_export = json.dumps(agenda_export_dict).encode('utf-8') |
160 | 160 |
Agenda.objects.all().delete() |
... | ... | |
276 | 276 |
assert UnavailabilityCalendar.objects.count() == 3 |
277 | 277 | |
278 | 278 |
# reference to unknown group |
279 |
calendar_export_dict = json.loads(force_text(calendar_export))
|
|
279 |
calendar_export_dict = json.loads(force_str(calendar_export))
|
|
280 | 280 |
calendar_export_dict['unavailability_calendars'][0]['permissions']['view'] = 'gé1' |
281 | 281 |
calendar_export = json.dumps(calendar_export_dict).encode('utf-8') |
282 | 282 |
UnavailabilityCalendar.objects.all().delete() |
tests/test_time_periods.py | ||
---|---|---|
3 | 3 |
import pytest |
4 | 4 |
from django.db.models import Q |
5 | 5 |
from django.test import override_settings |
6 |
from django.utils.encoding import force_text
|
|
6 |
from django.utils.encoding import force_str
|
|
7 | 7 |
from django.utils.timezone import localtime, make_aware |
8 | 8 | |
9 | 9 |
from chrono.agendas.models import Agenda, Desk, MeetingType, TimePeriod, TimePeriodException |
... | ... | |
118 | 118 |
def test_time_period_exception_as_string(): |
119 | 119 |
# single day |
120 | 120 |
assert ( |
121 |
force_text(
|
|
121 |
force_str(
|
|
122 | 122 |
TimePeriodException( |
123 | 123 |
start_datetime=make_aware(datetime.datetime(2018, 1, 18)), |
124 | 124 |
end_datetime=make_aware(datetime.datetime(2018, 1, 19)), |
... | ... | |
129 | 129 | |
130 | 130 |
# multiple full days |
131 | 131 |
assert ( |
132 |
force_text(
|
|
132 |
force_str(
|
|
133 | 133 |
TimePeriodException( |
134 | 134 |
start_datetime=make_aware(datetime.datetime(2018, 1, 18)), |
135 | 135 |
end_datetime=make_aware(datetime.datetime(2018, 1, 20)), |
... | ... | |
140 | 140 | |
141 | 141 |
# a few hours in a day |
142 | 142 |
assert ( |
143 |
force_text(
|
|
143 |
force_str(
|
|
144 | 144 |
TimePeriodException( |
145 | 145 |
start_datetime=make_aware(datetime.datetime(2018, 1, 18, 10, 0)), |
146 | 146 |
end_datetime=make_aware(datetime.datetime(2018, 1, 18, 12, 0)), |
... | ... | |
151 | 151 | |
152 | 152 |
# multiple days and different times |
153 | 153 |
assert ( |
154 |
force_text(
|
|
154 |
force_str(
|
|
155 | 155 |
TimePeriodException( |
156 | 156 |
start_datetime=make_aware(datetime.datetime(2018, 1, 18, 10, 0)), |
157 | 157 |
end_datetime=make_aware(datetime.datetime(2018, 1, 20, 12, 0)), |
158 |
- |