misc: apply pyupgrade (#55867)

This commit is contained in:
Lauréline Guérin 2021-07-27 15:19:00 +02:00
parent c0e2726e67
commit 1ec4ad9376
No known key found for this signature in database
GPG Key ID: 1FAB9B9B4F93D473
107 changed files with 277 additions and 524 deletions

View File

@ -14,7 +14,6 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from __future__ import print_function
import sys
@ -39,5 +38,5 @@ class Command(BaseCommand):
source.refresh_timeperiod_exceptions_from_ics()
except ICSError as e:
print(
u'unable to create timeperiod exceptions for "%s": %s' % (source.desk, e), file=sys.stderr
'unable to create timeperiod exceptions for "%s": %s' % (source.desk, e), file=sys.stderr
)

View File

@ -1,6 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models

View File

@ -1,6 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models

View File

@ -1,6 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.contrib.postgres.fields import JSONField
from django.db import migrations, models

View File

@ -1,6 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models

View File

@ -1,6 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models

View File

@ -1,6 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import datetime
from django.db import migrations, models

View File

@ -1,6 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models

View File

@ -1,6 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import django
from django.db import migrations, models

View File

@ -1,6 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models

View File

@ -1,6 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models

View File

@ -1,6 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models

View File

@ -1,6 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations
from django.utils.text import slugify

View File

@ -1,6 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models

View File

@ -1,6 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models

View File

@ -1,6 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models

View File

@ -1,6 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models

View File

@ -1,6 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models

View File

@ -1,6 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models

View File

@ -1,6 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models

View File

@ -1,6 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import datetime
from django.db import migrations, models

View File

@ -1,6 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models

View File

@ -1,6 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models

View File

@ -1,6 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models

View File

@ -1,6 +1,4 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.12 on 2018-04-26 11:27
from __future__ import unicode_literals
from django.db import migrations, models

View File

@ -1,6 +1,4 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.12 on 2018-12-06 12:52
from __future__ import unicode_literals
import django.db.models.deletion
from django.db import migrations, models

View File

@ -1,6 +1,4 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.20 on 2019-03-14 15:06
from __future__ import unicode_literals
from django.db import migrations, models

View File

@ -1,6 +1,4 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.12 on 2019-09-17 06:36
from __future__ import unicode_literals
from django.db import migrations, models

View File

@ -1,6 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models

View File

@ -1,6 +1,4 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.18 on 2019-11-06 12:20
from __future__ import unicode_literals
from django.db import migrations, models

View File

@ -1,6 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations
from django.utils.text import slugify

View File

@ -1,6 +1,4 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.18 on 2019-11-07 11:25
from __future__ import unicode_literals
from django.db import migrations, models
@ -19,10 +17,10 @@ class Migration(migrations.Migration):
),
migrations.AlterUniqueTogether(
name='desk',
unique_together=set([('agenda', 'slug')]),
unique_together={('agenda', 'slug')},
),
migrations.AlterUniqueTogether(
name='meetingtype',
unique_together=set([('agenda', 'slug')]),
unique_together={('agenda', 'slug')},
),
]

View File

@ -1,6 +1,4 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.17 on 2019-11-27 08:19
from __future__ import unicode_literals
from django.db import migrations, models
@ -21,6 +19,6 @@ class Migration(migrations.Migration):
),
migrations.AlterUniqueTogether(
name='event',
unique_together=set([('agenda', 'slug')]),
unique_together={('agenda', 'slug')},
),
]

View File

@ -1,6 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import django.db.models.deletion
from django.db import migrations, models

View File

@ -1,6 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations

View File

@ -1,6 +1,4 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.18 on 2019-12-09 14:24
from __future__ import unicode_literals
from django.db import migrations

View File

@ -1,6 +1,4 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.17 on 2019-12-23 17:58
from __future__ import unicode_literals
from django.db import migrations, models

View File

@ -1,6 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models
import chrono.agendas.models

View File

@ -1,6 +1,4 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.18 on 2020-02-20 12:15
from __future__ import unicode_literals
import django.db.models.deletion
from django.db import migrations, models

View File

@ -1,6 +1,4 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.18 on 2020-02-25 07:33
from __future__ import unicode_literals
import django.core.validators
from django.db import migrations, models

View File

@ -1,6 +1,4 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.18 on 2020-02-26 13:27
from __future__ import unicode_literals
import django.db.models.deletion
from django.db import migrations, models

View File

@ -1,6 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import django
from django.db import migrations

View File

@ -1,6 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models

View File

@ -1,6 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models

View File

@ -1,6 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models

View File

@ -1,6 +1,4 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.18 on 2020-05-30 13:13
from __future__ import unicode_literals
from django.db import migrations, models

View File

@ -1,6 +1,4 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.18 on 2020-06-17 13:21
from __future__ import unicode_literals
from django.db import migrations, models

View File

@ -1,6 +1,4 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.18 on 2020-06-17 13:23
from __future__ import unicode_literals
from django.db import migrations, models

View File

@ -1,6 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import uuid
from django.db import migrations

View File

@ -1,6 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models
import chrono.agendas.models

View File

@ -1,6 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models

View File

@ -1,6 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, transaction
from django.db.utils import InternalError, OperationalError, ProgrammingError

View File

@ -1,6 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, transaction
from django.db.utils import InternalError, OperationalError, ProgrammingError

View File

@ -1,6 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import django.db.models.deletion
from django.db import migrations, models

View File

@ -1,6 +1,4 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.18 on 2020-07-29 09:42
from __future__ import unicode_literals
from django.db import migrations, models

View File

@ -1,6 +1,4 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.18 on 2020-08-11 14:11
from __future__ import unicode_literals
import django.db.models.deletion
from django.contrib.postgres.fields import JSONField

View File

@ -1,6 +1,4 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.18 on 2020-08-31 14:34
from __future__ import unicode_literals
from django.db import migrations, models

View File

@ -1,6 +1,4 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.18 on 2020-08-31 14:36
from __future__ import unicode_literals
from django.db import migrations, models

View File

@ -1,6 +1,4 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.18 on 2020-09-03 08:40
from __future__ import unicode_literals
from django.db import migrations, models

View File

@ -1,6 +1,4 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.18 on 2020-09-03 08:41
from __future__ import unicode_literals
import django.contrib.postgres.fields
import django.db.models.deletion

View File

@ -1,6 +1,4 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.18 on 2020-09-09 15:52
from __future__ import unicode_literals
from django.db import migrations, models

View File

@ -1,6 +1,4 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.18 on 2020-09-15 12:01
from __future__ import unicode_literals
import django.db.models.deletion
from django.db import migrations, models

View File

@ -1,6 +1,4 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.18 on 2020-09-28 12:45
from __future__ import unicode_literals
import django.core.validators
from django.db import migrations, models

View File

@ -1,6 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models
import chrono.agendas.models

View File

@ -1,6 +1,4 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.18 on 2020-10-05 12:37
from __future__ import unicode_literals
import django.db.models.deletion
from django.db import migrations, models

View File

@ -1,6 +1,4 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.18 on 2020-10-21 11:56
from __future__ import unicode_literals
from django.db import migrations
from django.db.models import Count, F

View File

@ -1,6 +1,4 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.18 on 2020-10-21 15:46
from __future__ import unicode_literals
from django.db import migrations
@ -14,6 +12,6 @@ class Migration(migrations.Migration):
operations = [
migrations.AlterUniqueTogether(
name='timeperiodexceptionsource',
unique_together=set([('desk', 'settings_slug')]),
unique_together={('desk', 'settings_slug')},
),
]

View File

@ -1,6 +1,4 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.18 on 2020-10-27 09:32
from __future__ import unicode_literals
from django.db import migrations

View File

@ -1,6 +1,4 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.18 on 2020-10-29 15:39
from __future__ import unicode_literals
from django.conf import settings
from django.db import migrations

View File

@ -1,6 +1,4 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.29 on 2020-12-02 17:34
from __future__ import unicode_literals
import django.db.models.deletion
from django.db import migrations, models
@ -47,6 +45,6 @@ class Migration(migrations.Migration):
),
migrations.AlterUniqueTogether(
name='bookingcolor',
unique_together=set([('agenda', 'label')]),
unique_together={('agenda', 'label')},
),
]

View File

@ -1,6 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models

View File

@ -1,6 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models

View File

@ -1,6 +1,4 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.18 on 2021-01-25 17:00
from __future__ import unicode_literals
from django.db import migrations
@ -23,7 +21,7 @@ class Migration(migrations.Migration):
migrations.RunPython(booking_color_unique_label, migrations.RunPython.noop),
migrations.AlterUniqueTogether(
name='bookingcolor',
unique_together=set([('label',)]),
unique_together={('label',)},
),
migrations.RemoveField(
model_name='bookingcolor',

View File

@ -1,6 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models

View File

@ -1,6 +1,4 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.18 on 2021-02-16 14:53
from __future__ import unicode_literals
import django.db.models.deletion
from django.contrib.postgres.fields import JSONField

View File

@ -1,6 +1,4 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.18 on 2021-02-16 15:10
from __future__ import unicode_literals
from django.db import migrations, models

View File

@ -1,6 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations

View File

@ -1,6 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import django.db.models.deletion
from django.db import migrations, models

View File

@ -1,7 +1,5 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.18 on 2021-01-27 16:46
from __future__ import unicode_literals
from django.db import migrations

View File

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
# chrono - agendas system
# Copyright (C) 2016 Entr'ouvert
#
@ -991,9 +990,9 @@ class VirtualMember(models.Model):
virtual_meetingtypes = self.virtual_agenda.iter_meetingtypes(excluded_agenda=self.real_agenda)
if not virtual_meetingtypes:
return
virtual_meetingtypes = set([(mt.label, mt.slug, mt.duration) for mt in virtual_meetingtypes])
virtual_meetingtypes = {(mt.label, mt.slug, mt.duration) for mt in virtual_meetingtypes}
real_meetingtypes = self.real_agenda.iter_meetingtypes()
real_meetingtypes = set([(mt.label, mt.slug, mt.duration) for mt in real_meetingtypes])
real_meetingtypes = {(mt.label, mt.slug, mt.duration) for mt in real_meetingtypes}
if virtual_meetingtypes - real_meetingtypes:
# missing meeting type in real agenda
for mt in virtual_meetingtypes - real_meetingtypes:
@ -1038,7 +1037,7 @@ class TimePeriod(models.Model):
ordering = ['weekday', 'start_time']
def __str__(self):
return u'%s / %s%s' % (
return '%s / %s%s' % (
force_text(WEEKDAYS[self.weekday]),
date_format(self.start_time, 'TIME_FORMAT'),
date_format(self.end_time, 'TIME_FORMAT'),
@ -1123,7 +1122,7 @@ class SharedTimePeriod:
self.desks = set(desks)
def __str__(self):
return u'%s / %s%s' % (
return '%s / %s%s' % (
force_text(WEEKDAYS[self.weekday]),
date_format(self.start_time, 'TIME_FORMAT'),
date_format(self.end_time, 'TIME_FORMAT'),
@ -2118,7 +2117,7 @@ class Category(models.Model):
def ics_directory_path(instance, filename):
return 'ics/{0}/{1}'.format(str(uuid.uuid4()), filename)
return f'ics/{str(uuid.uuid4())}/{filename}'
class TimePeriodExceptionSource(models.Model):
@ -2462,27 +2461,27 @@ class TimePeriodException(models.Model):
# if both dates are at midnight don't include the time part
if self.end_datetime == self.start_datetime + datetime.timedelta(days=1):
# a single day
exc_repr = u'%s' % date_format(localtime(self.start_datetime), 'SHORT_DATE_FORMAT')
exc_repr = '%s' % date_format(localtime(self.start_datetime), 'SHORT_DATE_FORMAT')
else:
exc_repr = u'%s%s' % (
exc_repr = '%s%s' % (
date_format(localtime(self.start_datetime), 'SHORT_DATE_FORMAT'),
date_format(localtime(self.end_datetime), 'SHORT_DATE_FORMAT'),
)
else:
if localtime(self.start_datetime).date() == localtime(self.end_datetime).date():
# same day
exc_repr = u'%s%s' % (
exc_repr = '%s%s' % (
date_format(localtime(self.start_datetime), 'SHORT_DATETIME_FORMAT'),
date_format(localtime(self.end_datetime), 'TIME_FORMAT'),
)
else:
exc_repr = u'%s%s' % (
exc_repr = '%s%s' % (
date_format(localtime(self.start_datetime), 'SHORT_DATETIME_FORMAT'),
date_format(localtime(self.end_datetime), 'SHORT_DATETIME_FORMAT'),
)
if self.label:
exc_repr = u'%s (%s)' % (self.label, exc_repr)
exc_repr = '%s (%s)' % (self.label, exc_repr)
return exc_repr

View File

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
# chrono - agendas system
# Copyright (C) 2019 Entr'ouvert
#

View File

@ -256,8 +256,8 @@ def get_all_slots(
user_bookings = IntervalSet()
if user_external_id:
used_min_datetime, used_max_datetime = (
min([v[0] for v in agenda_id_min_max_datetime.values()]),
max([v[1] for v in agenda_id_min_max_datetime.values()]),
min(v[0] for v in agenda_id_min_max_datetime.values()),
max(v[1] for v in agenda_id_min_max_datetime.values()),
)
booked_events = (
Event.objects.filter(
@ -558,7 +558,7 @@ def get_resources_from_request(request, agenda):
resources_slugs = [s for s in request.GET['resources'].split(',') if s]
resources = list(agenda.resources.filter(slug__in=resources_slugs))
if len(resources) != len(resources_slugs):
unknown_slugs = set(resources_slugs) - set([r.slug for r in resources])
unknown_slugs = set(resources_slugs) - {r.slug for r in resources}
unknown_slugs = sorted(list(unknown_slugs))
raise APIError(
_('invalid resource: %s') % ', '.join(unknown_slugs),
@ -2027,8 +2027,8 @@ class ResizeBooking(APIView):
'err_desc': _('secondary booking'),
}
return Response(response)
event_ids = set([event.pk])
in_waiting_list = set([booking.in_waiting_list])
event_ids = {event.pk}
in_waiting_list = {booking.in_waiting_list}
secondary_bookings = booking.secondary_booking_set.all().order_by('-creation_datetime')
for secondary in secondary_bookings:
event_ids.add(secondary.event_id)

View File

@ -14,7 +14,6 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from __future__ import unicode_literals
import collections
import csv

View File

@ -44,7 +44,7 @@ class Command(BaseCommand):
overwrite=options['overwrite'],
)
except AgendaImportError as exc:
raise CommandError(u'%s' % exc)
raise CommandError('%s' % exc)
if filename == '-':
fd = sys.stdin

View File

@ -296,8 +296,8 @@ class ResourceDayView(DateMixin, DayArchiveView):
x for x in self.object_list if any([y.cancellation_datetime is None for y in x.booking_set.all()])
]
if active_events:
min_event = min([localtime(x.start_datetime).time() for x in active_events])
max_event = max([localtime(x.start_datetime + interval).time() for x in active_events])
min_event = min(localtime(x.start_datetime).time() for x in active_events)
max_event = max(localtime(x.start_datetime + interval).time() for x in active_events)
if min_timeperiod is None and min_event is None:
return
min_display = min(min_timeperiod or datetime.time(23), min_event or datetime.time(23))
@ -396,8 +396,8 @@ class ResourceMonthView(DateMixin, MonthArchiveView):
x for x in self.object_list if any([y.cancellation_datetime is None for y in x.booking_set.all()])
]
if active_events:
min_event = min([localtime(x.start_datetime).time() for x in active_events])
max_event = max([localtime(x.start_datetime + interval).time() for x in active_events])
min_event = min(localtime(x.start_datetime).time() for x in active_events)
max_event = max(localtime(x.start_datetime + interval).time() for x in active_events)
hide_sunday_event = not any([x.start_datetime.weekday() == 6 for x in active_events])
hide_weekend_event = hide_sunday_event and not any(
[x.start_datetime.weekday() == 5 for x in active_events]
@ -807,7 +807,7 @@ class AgendasImportView(FormView):
try:
results = import_site(agendas_json, overwrite=False)
except AgendaImportError as exc:
form.add_error('agendas_json', u'%s' % exc)
form.add_error('agendas_json', '%s' % exc)
return self.form_invalid(form)
except KeyError as exc:
form.add_error('agendas_json', _('Key "%s" is missing.') % exc.args[0])
@ -885,7 +885,7 @@ class AgendasImportView(FormView):
else:
message2 = message_update
messages.info(self.request, u'%s %s' % (message1, message2))
messages.info(self.request, '%s %s' % (message1, message2))
if global_noop:
messages.info(self.request, _('No data found.'))
@ -1165,7 +1165,7 @@ class AgendaDayView(AgendaDateView, DayArchiveView):
)
def get_timetable_infos(self):
timeperiods = itertools.chain(*[d.timeperiod_set.all() for d in self.agenda.prefetched_desks])
timeperiods = itertools.chain(*(d.timeperiod_set.all() for d in self.agenda.prefetched_desks))
timeperiods = [t for t in timeperiods if t.weekday == self.date.weekday()]
timeperiods = sorted(timeperiods, key=lambda t: t.start_time)
@ -1173,14 +1173,14 @@ class AgendaDayView(AgendaDateView, DayArchiveView):
min_timeperiod = max_timeperiod = min_event = max_event = None
if timeperiods:
min_timeperiod = min([x.start_time for x in timeperiods])
max_timeperiod = max([x.end_time for x in timeperiods])
min_timeperiod = min(x.start_time for x in timeperiods)
max_timeperiod = max(x.end_time for x in timeperiods)
active_events = [
x for x in self.object_list if any([y.cancellation_datetime is None for y in x.booking_set.all()])
]
if active_events:
min_event = min([localtime(x.start_datetime).time() for x in active_events])
max_event = max([localtime(x.start_datetime + interval).time() for x in active_events])
min_event = min(localtime(x.start_datetime).time() for x in active_events)
max_event = max(localtime(x.start_datetime + interval).time() for x in active_events)
if min_timeperiod is None and min_event is None:
return
min_display = min(min_timeperiod or datetime.time(23), min_event or datetime.time(23))
@ -1305,7 +1305,7 @@ class AgendaMonthView(AgendaDateView, MonthArchiveView):
return '1'
def get_timetable_infos(self):
timeperiods = itertools.chain(*[d.timeperiod_set.all() for d in self.agenda.prefetched_desks])
timeperiods = itertools.chain(*(d.timeperiod_set.all() for d in self.agenda.prefetched_desks))
timeperiods = sorted(timeperiods, key=lambda t: (t.weekday, t.start_time))
interval = datetime.timedelta(minutes=60)
@ -1313,8 +1313,8 @@ class AgendaMonthView(AgendaDateView, MonthArchiveView):
min_timeperiod = max_timeperiod = min_event = max_event = None
hide_sunday_timeperiod = hide_weekend_timeperiod = hide_sunday_event = hide_weekend_event = True
if timeperiods:
min_timeperiod = min([x.start_time for x in timeperiods])
max_timeperiod = max([x.end_time for x in timeperiods])
min_timeperiod = min(x.start_time for x in timeperiods)
max_timeperiod = max(x.end_time for x in timeperiods)
hide_sunday_timeperiod = not any([e.weekday == 6 for e in timeperiods])
hide_weekend_timeperiod = hide_sunday_timeperiod and not any(
[e.weekday == 5 for e in timeperiods]
@ -1323,8 +1323,8 @@ class AgendaMonthView(AgendaDateView, MonthArchiveView):
x for x in self.object_list if any([y.cancellation_datetime is None for y in x.booking_set.all()])
]
if active_events:
min_event = min([localtime(x.start_datetime).time() for x in active_events])
max_event = max([localtime(x.start_datetime + interval).time() for x in active_events])
min_event = min(localtime(x.start_datetime).time() for x in active_events)
max_event = max(localtime(x.start_datetime + interval).time() for x in active_events)
hide_sunday_event = not any([x.start_datetime.weekday() == 6 for x in active_events])
hide_weekend_event = hide_sunday_event and not any(
[x.start_datetime.weekday() == 5 for x in active_events]
@ -2554,7 +2554,7 @@ class TimePeriodExceptionDeleteView(ManagedTimePeriodExceptionMixin, DeleteView)
success_url = super().get_success_url()
if self.desk and 'from_popup' in self.request.GET:
success_url = '{}?display_exceptions={}'.format(success_url, self.desk.pk)
success_url = f'{success_url}?display_exceptions={self.desk.pk}'
return success_url
def get_queryset(self):

View File

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
# chrono - agendas system
# Copyright (C) 2021 Entr'ouvert
#

View File

@ -1,5 +1,4 @@
#! /usr/bin/env python
# -*- coding: utf-8 -*-
import glob
import os
@ -34,7 +33,7 @@ def get_version():
tag exists, take 0.0- and add the length of the commit log.
"""
if os.path.exists('VERSION'):
with open('VERSION', 'r') as v:
with open('VERSION') as v:
return v.read()
if os.path.exists('.git'):
p = subprocess.Popen(

View File

@ -1,5 +1,3 @@
# -*- coding: utf-8 -*-
import datetime
import pytest
@ -13,7 +11,7 @@ from chrono.agendas.models import Agenda, Desk, Event, MeetingType, TimePeriod,
def user():
User = get_user_model()
user = User.objects.create(
username='john.doe', first_name=u'John', last_name=u'Doe', email='john.doe@example.net'
username='john.doe', first_name='John', last_name='Doe', email='john.doe@example.net'
)
user.set_password('password')
user.save()
@ -41,7 +39,7 @@ def mock_now(request, freezer, time_zone):
@pytest.fixture
def some_data(mock_now):
agenda = Agenda(label=u'Foo bar')
agenda = Agenda(label='Foo bar')
agenda.save()
first_date = localtime(now()).replace(hour=17, minute=0, second=0, microsecond=0)
first_date += datetime.timedelta(days=1)
@ -49,7 +47,7 @@ def some_data(mock_now):
event = Event(start_datetime=first_date + datetime.timedelta(days=i), places=20, agenda=agenda)
event.save()
agenda2 = Agenda(label=u'Foo bar 2')
agenda2 = Agenda(label='Foo bar 2')
agenda2.save()
first_date = localtime(now()).replace(hour=20, minute=0, second=0, microsecond=0)
first_date += datetime.timedelta(days=1)
@ -65,7 +63,7 @@ def some_data(mock_now):
@pytest.fixture
def meetings_agenda(mock_now):
agenda = Agenda(
label=u'Foo bar Meeting', kind='meetings', minimal_booking_delay=1, maximal_booking_delay=56
label='Foo bar Meeting', kind='meetings', minimal_booking_delay=1, maximal_booking_delay=56
)
agenda.save()
meeting_type = MeetingType(agenda=agenda, label='Blah', duration=30)

View File

@ -1,5 +1,3 @@
# -*- coding: utf-8 -*-
import datetime
import pytest
@ -271,7 +269,7 @@ def test_agendas_meetingtypes_api(app, some_data, meetings_agenda):
assert resp.json == expected_resp
# wrong kind
agenda1 = Agenda.objects.filter(label=u'Foo bar')[0]
agenda1 = Agenda.objects.filter(label='Foo bar')[0]
resp = app.get('/api/agenda/%s/meetings/' % agenda1.slug, status=404)
# unknown
@ -434,7 +432,7 @@ def test_agenda_detail_routing(app, meetings_agenda):
# check it doesn't get confused with an agenda with "agenda" in its slug
agenda = Agenda(
label=u'Foo bar Agenda', kind='meetings', minimal_booking_delay=1, maximal_booking_delay=56
label='Foo bar Agenda', kind='meetings', minimal_booking_delay=1, maximal_booking_delay=56
)
agenda.save()
api_url = '/api/agenda/%s/' % agenda.slug
@ -462,14 +460,14 @@ def test_virtual_agenda_detail(app, virtual_meetings_agenda):
def test_virtual_agendas_meetingtypes_api(app):
virt_agenda = Agenda.objects.create(label=u'Virtual agenda', kind='virtual')
virt_agenda = Agenda.objects.create(label='Virtual agenda', kind='virtual')
# No meetings because no real agenda
resp = app.get('/api/agenda/%s/meetings/' % virt_agenda.slug)
assert resp.json == {'data': []}
# One real agenda : every meetings exposed
foo_agenda = Agenda.objects.create(label=u'Foo', kind='meetings')
foo_agenda = Agenda.objects.create(label='Foo', kind='meetings')
MeetingType.objects.create(agenda=foo_agenda, label='Meeting1', duration=30)
MeetingType.objects.create(agenda=foo_agenda, label='Meeting2', duration=15)
VirtualMember.objects.create(virtual_agenda=virt_agenda, real_agenda=foo_agenda)
@ -497,7 +495,7 @@ def test_virtual_agendas_meetingtypes_api(app):
# Several real agendas
bar_agenda = Agenda.objects.create(label=u'Bar', kind='meetings')
bar_agenda = Agenda.objects.create(label='Bar', kind='meetings')
MeetingType.objects.create(agenda=bar_agenda, label='Meeting Bar', duration=30)
VirtualMember.objects.create(virtual_agenda=virt_agenda, real_agenda=bar_agenda)

View File

@ -1,9 +1,7 @@
# -*- coding: utf-8 -*-
import datetime
import urllib.parse as urlparse
from unittest import mock
import mock
import pytest
from django.utils.timezone import make_aware, now
@ -21,7 +19,7 @@ pytestmark = pytest.mark.django_db
def test_booking_ics(app, some_data, meetings_agenda, user):
agenda = Agenda.objects.filter(label=u'Foo bar')[0]
agenda = Agenda.objects.filter(label='Foo bar')[0]
event = [x for x in Event.objects.filter(agenda=agenda) if x.in_bookable_period()][0]
app.authorization = ('Basic', ('john.doe', 'password'))
resp = app.post('/api/agenda/%s/fillslot/%s/' % (agenda.slug, event.id))
@ -114,7 +112,7 @@ def test_booking_ics(app, some_data, meetings_agenda, user):
assert 'COMMENT:custom comment\r\n' in resp.text
assert 'URL:http://example.com/custom\r\n' in resp.text
meetings_agenda_id = Agenda.objects.filter(label=u'Foo bar Meeting')[0].id
meetings_agenda_id = Agenda.objects.filter(label='Foo bar Meeting')[0].id
meeting_type = MeetingType.objects.get(agenda=meetings_agenda)
resp = app.get('/api/agenda/meetings/%s/datetimes/' % meeting_type.id)
event = resp.json['data'][2]
@ -606,7 +604,7 @@ def test_booking_patch_api_extra_data(app, user):
def test_booking_cancellation_api(app, some_data, user):
agenda = Agenda.objects.filter(label=u'Foo bar')[0]
agenda = Agenda.objects.filter(label='Foo bar')[0]
event = [x for x in Event.objects.filter(agenda=agenda) if x.in_bookable_period()][0]
resp = app.post('/api/agenda/%s/fillslot/%s/' % (agenda.id, event.id), status=401)
@ -619,7 +617,7 @@ def test_booking_cancellation_api(app, some_data, user):
def test_booking_cancellation_post_api(app, some_data, user):
agenda = Agenda.objects.filter(label=u'Foo bar')[0]
agenda = Agenda.objects.filter(label='Foo bar')[0]
event = [x for x in Event.objects.filter(agenda=agenda) if x.in_bookable_period()][0]
resp = app.post('/api/agenda/%s/fillslot/%s/' % (agenda.id, event.id), status=401)
@ -647,7 +645,7 @@ def test_booking_cancellation_post_api(app, some_data, user):
def test_booking_cancellation_post_meeting_api(app, meetings_agenda, user):
agenda_id = Agenda.objects.filter(label=u'Foo bar Meeting')[0].id
agenda_id = Agenda.objects.filter(label='Foo bar Meeting')[0].id
meeting_type = MeetingType.objects.get(agenda=meetings_agenda)
resp = app.get('/api/agenda/meetings/%s/datetimes/' % meeting_type.id)
nb_events = len(resp.json['data'])
@ -760,7 +758,7 @@ def test_bookings(app, user):
def test_cancel_booking(app, some_data, user):
agenda_id = Agenda.objects.filter(label=u'Foo bar')[0].pk
agenda_id = Agenda.objects.filter(label='Foo bar')[0].pk
event = Event.objects.filter(agenda_id=agenda_id).exclude(start_datetime__lt=now())[0]
primary = Booking.objects.create(event=event)
secondary = Booking.objects.create(event=event, primary_booking=primary)

View File

@ -1,5 +1,3 @@
# -*- coding: utf-8 -*-
import datetime
import urllib.parse as urlparse
@ -13,7 +11,7 @@ pytestmark = pytest.mark.django_db
def test_datetimes_api(app, some_data):
agenda = Agenda.objects.filter(label=u'Foo bar')[0]
agenda = Agenda.objects.filter(label='Foo bar')[0]
def check_bookability(data):
for event in data:
@ -79,7 +77,7 @@ def test_datetime_api_fr(app):
agenda = Agenda.objects.create(label='Foo bar', kind='events', minimal_booking_delay=0)
Event.objects.create(
slug='event-slug',
start_datetime=localtime((now() + datetime.timedelta(days=5))).replace(hour=17, minute=0),
start_datetime=localtime(now() + datetime.timedelta(days=5)).replace(hour=17, minute=0),
places=5,
agenda=agenda,
)
@ -339,7 +337,7 @@ def test_datetimes_api_hide_disabled(app):
def test_waiting_list_datetimes(app, some_data, user):
agenda_id = Agenda.objects.filter(label=u'Foo bar')[0].id
agenda_id = Agenda.objects.filter(label='Foo bar')[0].id
event = Event.objects.filter(agenda_id=agenda_id).exclude(start_datetime__lt=now())[0]
event.waiting_list_places = 5
event.save()
@ -489,7 +487,7 @@ def test_datetimes_api_meta(app, freezer):
# 2017-05-20 -> saturday
freezer.move_to(make_aware(datetime.datetime(year=2017, month=5, day=20, hour=1, minute=12)))
agenda = Agenda.objects.create(label=u'Foo bar')
agenda = Agenda.objects.create(label='Foo bar')
first_date = localtime(now()).replace(hour=17, minute=0, second=0, microsecond=0)
first_date += datetime.timedelta(days=1)
for i in range(3):

View File

@ -1,5 +1,3 @@
# -*- coding: utf-8 -*-
import datetime
import pytest

View File

@ -1,9 +1,7 @@
# -*- coding: utf-8 -*-
import datetime
import urllib.parse as urlparse
from unittest import mock
import mock
import pytest
from django.db import connection
from django.test.utils import CaptureQueriesContext
@ -25,7 +23,7 @@ pytestmark = pytest.mark.django_db
def test_booking_api(app, some_data, user):
agenda = Agenda.objects.filter(label=u'Foo bar')[0]
agenda = Agenda.objects.filter(label='Foo bar')[0]
event = [x for x in Event.objects.filter(agenda=agenda) if x.in_bookable_period()][0]
# unauthenticated
@ -269,7 +267,7 @@ def test_booking_api_meetings_agenda_exclude_slots(app, user):
def test_booking_api_fillslots(app, some_data, user):
agenda = Agenda.objects.filter(label=u'Foo bar')[0]
agenda = Agenda.objects.filter(label='Foo bar')[0]
events_ids = [x.id for x in Event.objects.filter(agenda=agenda) if x.in_bookable_period()]
events_slugs = [x.slug for x in Event.objects.filter(agenda=agenda) if x.in_bookable_period()]
assert len(events_ids) == 3
@ -411,7 +409,7 @@ def test_booking_api_fillslots(app, some_data, user):
def test_booking_api_fillslots_slots_string_param(app, some_data, user):
agenda = Agenda.objects.filter(label=u'Foo bar')[0]
agenda = Agenda.objects.filter(label='Foo bar')[0]
events_ids = [x.id for x in Event.objects.filter(agenda=agenda) if x.in_bookable_period()]
assert len(events_ids) == 3
app.authorization = ('Basic', ('john.doe', 'password'))
@ -761,7 +759,7 @@ def test_booking_api_meeting_across_daylight_saving_time(app, meetings_agenda, u
def test_booking_api_with_data(app, some_data, user):
agenda = Agenda.objects.filter(label=u'Foo bar')[0]
agenda = Agenda.objects.filter(label='Foo bar')[0]
event = [x for x in Event.objects.filter(agenda=agenda) if x.in_bookable_period()][0]
app.authorization = ('Basic', ('john.doe', 'password'))
@ -855,7 +853,7 @@ def test_booking_api_available(app, user):
def test_booking_api_force_waiting_list(app, some_data, user):
agenda = Agenda.objects.filter(label=u'Foo bar')[0]
agenda = Agenda.objects.filter(label='Foo bar')[0]
event = [x for x in Event.objects.filter(agenda=agenda) if x.in_bookable_period()][0]
app.authorization = ('Basic', ('john.doe', 'password'))
@ -935,7 +933,7 @@ def test_booking_api_force_waiting_list(app, some_data, user):
def test_booking_api_with_cancel_booking(app, some_data, user):
agenda = Agenda.objects.filter(label=u'Foo bar')[0]
agenda = Agenda.objects.filter(label='Foo bar')[0]
event_0, event_1, event_2 = [x for x in Event.objects.filter(agenda=agenda) if x.in_bookable_period()][
0:4
]
@ -1017,7 +1015,7 @@ def test_booking_api_with_cancel_booking(app, some_data, user):
def test_soldout(app, some_data, user):
agenda_id = Agenda.objects.filter(label=u'Foo bar')[0].id
agenda_id = Agenda.objects.filter(label='Foo bar')[0].id
event = Event.objects.filter(agenda_id=agenda_id).exclude(start_datetime__lt=now())[0]
resp = app.get('/api/agenda/%s/datetimes/' % agenda_id)
@ -1041,7 +1039,7 @@ def test_soldout(app, some_data, user):
def test_waiting_list_booking(app, some_data, user):
agenda_id = Agenda.objects.filter(label=u'Foo bar')[0].id
agenda_id = Agenda.objects.filter(label='Foo bar')[0].id
event = Event.objects.filter(agenda_id=agenda_id).exclude(start_datetime__lt=now())[0]
event.waiting_list_places = 5
event.save()
@ -1084,7 +1082,7 @@ def test_waiting_list_booking(app, some_data, user):
def test_multiple_booking_api(app, some_data, user):
agenda = Agenda.objects.filter(label=u'Foo bar')[0]
agenda = Agenda.objects.filter(label='Foo bar')[0]
event = [x for x in Event.objects.filter(agenda=agenda) if x.in_bookable_period()][0]
app.authorization = ('Basic', ('john.doe', 'password'))
@ -1174,7 +1172,7 @@ def test_multiple_booking_api(app, some_data, user):
def test_multiple_booking_api_fillslots(app, some_data, user):
agenda = Agenda.objects.filter(label=u'Foo bar')[0]
agenda = Agenda.objects.filter(label='Foo bar')[0]
# get slots of first 2 events
events = [
x for x in Event.objects.filter(agenda=agenda).order_by('start_datetime') if x.in_bookable_period()
@ -1287,7 +1285,7 @@ def test_multiple_booking_api_fillslots(app, some_data, user):
def test_multiple_booking_move_booking(app, user):
agenda = Agenda(label=u'Foo bar')
agenda = Agenda(label='Foo bar')
agenda.save()
first_date = localtime(now()).replace(hour=17, minute=0, second=0, microsecond=0)
first_date += datetime.timedelta(days=1)
@ -1623,7 +1621,7 @@ def test_virtual_agendas_meetings_booking(app, mock_now, user):
== resp.json['data'][0]['datetime']
)
second_booking_agenda = resp_booking.json['agenda']['slug']
assert set([first_booking_agenda, second_booking_agenda]) == {'foo-meeting', 'bar-meeting'}
assert {first_booking_agenda, second_booking_agenda} == {'foo-meeting', 'bar-meeting'}
# try booking the same timeslot a third time: full
resp_booking = app.post(fillslot_url)
@ -1794,7 +1792,7 @@ def test_virtual_agendas_meetings_booking_default_policy(app, mock_now, user):
@pytest.mark.freeze_time('2017-04-01')
def test_duration_on_booking_api_fillslot_response(app, user):
agenda = Agenda(label=u'Foo bar')
agenda = Agenda(label='Foo bar')
agenda.save()
first_date = datetime.datetime(2017, 5, 20, 1, 12)
durations = [None, 0, 45]
@ -1842,7 +1840,7 @@ def test_duration_on_booking_api_fillslot_response(app, user):
@pytest.mark.freeze_time('2017-04-01')
def test_duration_on_booking_api_fillslots_response(app, user):
agenda = Agenda(label=u'Foo bar')
agenda = Agenda(label='Foo bar')
agenda.save()
first_date = datetime.datetime(2017, 5, 20, 1, 12)
durations = [None, 0, 45]

View File

@ -1,5 +1,3 @@
# -*- coding: utf-8 -*-
import datetime
import pytest
@ -884,7 +882,7 @@ def test_agenda_meeting_api_desk_info(app, meetings_agenda, user):
@pytest.mark.freeze_time('2017-05-20')
def test_agenda_meeting_gcd_durations(app, user):
meetings_agenda = Agenda.objects.create(
label=u'Foo bar Meeting', kind='meetings', minimal_booking_delay=1, maximal_booking_delay=8
label='Foo bar Meeting', kind='meetings', minimal_booking_delay=1, maximal_booking_delay=8
)
meeting_type_30 = MeetingType.objects.create(agenda=meetings_agenda, label='Blah', duration=30)
desk = Desk.objects.create(agenda=meetings_agenda, label='Desk 1')
@ -955,7 +953,7 @@ def test_agenda_meeting_gcd_durations(app, user):
@pytest.mark.freeze_time('2017-05-20')
def test_agenda_meeting_gcd_durations_and_exceptions(app, user):
meetings_agenda = Agenda.objects.create(
label=u'Foo bar Meeting', kind='meetings', minimal_booking_delay=1, maximal_booking_delay=3
label='Foo bar Meeting', kind='meetings', minimal_booking_delay=1, maximal_booking_delay=3
)
desk = Desk.objects.create(agenda=meetings_agenda, label='Desk 1')
TimePeriod.objects.create(
@ -1131,7 +1129,7 @@ def test_virtual_agendas_meetings_datetimes_api(app, virtual_meetings_agenda):
def test_virtual_agendas_meetings_datetimes_api_with_similar_desk(app):
agenda_foo = Agenda.objects.create(
label=u'Agenda Foo', kind='meetings', minimal_booking_delay=1, maximal_booking_delay=4
label='Agenda Foo', kind='meetings', minimal_booking_delay=1, maximal_booking_delay=4
)
MeetingType.objects.create(agenda=agenda_foo, label='Meeting Type', duration=30)
test_1st_weekday = (localtime(now()).weekday() + 1) % 7
@ -1159,7 +1157,7 @@ def test_virtual_agendas_meetings_datetimes_api_with_similar_desk(app):
)
agenda_bar = Agenda.objects.create(
label=u'Agenda Bar', kind='meetings', minimal_booking_delay=1, maximal_booking_delay=4
label='Agenda Bar', kind='meetings', minimal_booking_delay=1, maximal_booking_delay=4
)
meeting_type_bar = MeetingType.objects.create(agenda=agenda_bar, label='Meeting Type', duration=30)
desk_bar = Desk.objects.create(agenda=agenda_bar, label='Desk 1')
@ -1183,7 +1181,7 @@ def test_virtual_agendas_meetings_datetimes_api_with_similar_desk(app):
)
virtual_agenda = Agenda.objects.create(
label=u'Agenda Virtual', kind='virtual', minimal_booking_delay=1, maximal_booking_delay=4
label='Agenda Virtual', kind='virtual', minimal_booking_delay=1, maximal_booking_delay=4
)
VirtualMember.objects.create(virtual_agenda=virtual_agenda, real_agenda=agenda_foo)
VirtualMember.objects.create(virtual_agenda=virtual_agenda, real_agenda=agenda_bar)
@ -1884,7 +1882,7 @@ def test_datetimes_maximal_booking_delay(app, user, freezer, test_datetime):
def test_meetings_and_virtual_datetimes_date_filter(app):
agenda_foo = Agenda.objects.create(
label=u'Agenda Foo', kind='meetings', minimal_booking_delay=1, maximal_booking_delay=7
label='Agenda Foo', kind='meetings', minimal_booking_delay=1, maximal_booking_delay=7
)
meeting_type = MeetingType.objects.create(agenda=agenda_foo, label='Meeting Type', duration=30)
desk_foo = Desk.objects.create(agenda=agenda_foo, label='Desk 1')
@ -1903,7 +1901,7 @@ def test_meetings_and_virtual_datetimes_date_filter(app):
)
virtual_agenda = Agenda.objects.create(
label=u'Agenda Virtual', kind='virtual', minimal_booking_delay=1, maximal_booking_delay=7
label='Agenda Virtual', kind='virtual', minimal_booking_delay=1, maximal_booking_delay=7
)
VirtualMember.objects.create(virtual_agenda=virtual_agenda, real_agenda=agenda_foo)
@ -2034,9 +2032,7 @@ def test_meetings_and_virtual_datetimes_date_filter(app):
def test_datetimes_api_meetings_agenda_meta(app, freezer):
# 2017-05-20 -> saturday
freezer.move_to(make_aware(datetime.datetime(year=2017, month=5, day=20, hour=1, minute=12)))
meetings_agenda = Agenda.objects.create(
label=u'Foo bar Meeting', kind='meetings', maximal_booking_delay=3
)
meetings_agenda = Agenda.objects.create(label='Foo bar Meeting', kind='meetings', maximal_booking_delay=3)
meeting_type = MeetingType(agenda=meetings_agenda, label='Blah', duration=30)
meeting_type.save()
@ -2124,9 +2120,9 @@ def test_datetimes_api_meetings_agenda_meta(app, freezer):
def test_datetimes_api_virtual_meetings_agenda_meta(app, freezer):
# 2017-05-20 -> saturday
freezer.move_to(make_aware(datetime.datetime(year=2017, month=5, day=20, hour=1, minute=12)))
meetings_agenda1 = Agenda.objects.create(label=u'Foo Meeting', kind='meetings', maximal_booking_delay=3)
meetings_agenda2 = Agenda.objects.create(label=u'Bar Meeting', kind='meetings', maximal_booking_delay=3)
virtual_agenda = Agenda.objects.create(label=u'Agenda Virtual', kind='virtual', maximal_booking_delay=3)
meetings_agenda1 = Agenda.objects.create(label='Foo Meeting', kind='meetings', maximal_booking_delay=3)
meetings_agenda2 = Agenda.objects.create(label='Bar Meeting', kind='meetings', maximal_booking_delay=3)
virtual_agenda = Agenda.objects.create(label='Agenda Virtual', kind='virtual', maximal_booking_delay=3)
VirtualMember.objects.create(virtual_agenda=virtual_agenda, real_agenda=meetings_agenda1)
VirtualMember.objects.create(virtual_agenda=virtual_agenda, real_agenda=meetings_agenda2)
desk1 = Desk.objects.create(agenda=meetings_agenda1, label='Desk 1')

View File

@ -1,5 +1,3 @@
# -*- coding: utf-8 -*-
import pytest
from django.utils.timezone import now

View File

@ -42,7 +42,7 @@ def api_user():
user = User.objects.get(username='api-user')
except User.DoesNotExist:
user = User.objects.create(
username='john.doe', first_name=u'John', last_name=u'Doe', email='john.doe@example.net'
username='john.doe', first_name='John', last_name='Doe', email='john.doe@example.net'
)
user.set_password('password')
user.save()

View File

@ -1,5 +1,3 @@
# -*- coding: utf-8 -*-
import copy
import json
@ -15,7 +13,7 @@ pytestmark = pytest.mark.django_db
@pytest.fixture
def agenda_with_restrictions(manager_user):
agenda = Agenda(label=u'Foo Bar')
agenda = Agenda(label='Foo Bar')
agenda.view_role = manager_user.groups.all()[0]
agenda.save()
return agenda
@ -238,7 +236,7 @@ def test_delete_reason_as_manager(app, manager_user, agenda_with_restrictions):
def test_meetings_agenda_group(app, admin_user):
agenda = Agenda.objects.create(label=u'Foo bar', kind='meetings')
agenda = Agenda.objects.create(label='Foo bar', kind='meetings')
AbsenceReasonGroup.objects.create(label='Foo bar')
app = login(app)
@ -250,7 +248,7 @@ def test_meetings_agenda_group(app, admin_user):
def test_agenda_group(app, admin_user):
agenda = Agenda.objects.create(label=u'Foo bar', kind='events')
agenda = Agenda.objects.create(label='Foo bar', kind='events')
Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
app = login(app)

View File

@ -1,12 +1,10 @@
# -*- coding: utf-8 -*-
import copy
import datetime
import json
import os
from unittest import mock
import freezegun
import mock
import pytest
import requests
from django.contrib.auth.models import Group
@ -68,7 +66,7 @@ def test_manager_user_access(app, manager_user):
app = login(app, username='manager', password='manager')
assert app.get('/manage/', status=403)
agenda = Agenda(label=u'Foo bar')
agenda = Agenda(label='Foo bar')
agenda.save()
assert app.get('/manage/', status=403)
@ -112,7 +110,7 @@ def test_menu_json(app, admin_user):
def test_events_agenda_redirect(app, admin_user):
agenda = Agenda.objects.create(label=u'Foo Bar', kind='events')
agenda = Agenda.objects.create(label='Foo Bar', kind='events')
app = login(app)
resp = app.get('/manage/agendas/%s/' % agenda.pk, status=302)
@ -131,7 +129,7 @@ def test_events_agenda_redirect(app, admin_user):
@freezegun.freeze_time('2020-07-12')
def test_events_agenda_month_redirect(app, admin_user):
agenda = Agenda.objects.create(label=u'Foo Bar', kind='events')
agenda = Agenda.objects.create(label='Foo Bar', kind='events')
app = login(app)
# no event, redirect to current month
@ -183,7 +181,7 @@ def test_events_agenda_month_redirect(app, admin_user):
@freezegun.freeze_time('2020-07-12')
def test_events_agenda_day_redirect(app, admin_user):
agenda = Agenda.objects.create(label=u'Foo Bar', kind='events')
agenda = Agenda.objects.create(label='Foo Bar', kind='events')
app = login(app)
# no event, redirect to current day
@ -234,7 +232,7 @@ def test_events_agenda_day_redirect(app, admin_user):
def test_meetings_agenda_redirect(app, admin_user):
agenda = Agenda.objects.create(label=u'Foo Bar', kind='meetings')
agenda = Agenda.objects.create(label='Foo Bar', kind='meetings')
app = login(app)
resp = app.get('/manage/agendas/%s/' % agenda.pk, status=302)
@ -247,7 +245,7 @@ def test_meetings_agenda_redirect(app, admin_user):
def test_virtual_agenda_redirect(app, admin_user):
agenda = Agenda.objects.create(label=u'Foo Bar', kind='virtual')
agenda = Agenda.objects.create(label='Foo Bar', kind='virtual')
app = login(app)
resp = app.get('/manage/agendas/%s/' % agenda.pk, status=302)
@ -260,7 +258,7 @@ def test_virtual_agenda_redirect(app, admin_user):
def test_view_agendas_as_admin(app, admin_user):
Agenda.objects.create(label=u'Bar Foo')
Agenda.objects.create(label='Bar Foo')
app = login(app)
resp = app.get('/manage/', status=200)
@ -268,11 +266,11 @@ def test_view_agendas_as_admin(app, admin_user):
def test_view_agendas_as_manager(app, manager_user):
agenda = Agenda(label=u'Foo Bar')
agenda = Agenda(label='Foo Bar')
agenda.view_role = manager_user.groups.all()[0]
agenda.save()
agenda2 = Agenda(label=u'Bar Foo')
agenda2 = Agenda(label='Bar Foo')
agenda2.save()
app = login(app, username='manager', password='manager')
@ -406,10 +404,10 @@ def test_add_agenda_and_set_role(app, admin_user, manager_user):
def test_options_agenda(app, admin_user):
agenda_events = Agenda.objects.create(label=u'Foo bar', kind='events')
agenda_events = Agenda.objects.create(label='Foo bar', kind='events')
Desk.objects.create(agenda=agenda_events, slug='_exceptions_holder')
agenda_meetings = Agenda.objects.create(label=u'Foo bar', kind='meetings')
Agenda.objects.create(label=u'Foo bar', kind='virtual')
agenda_meetings = Agenda.objects.create(label='Foo bar', kind='meetings')
Agenda.objects.create(label='Foo bar', kind='virtual')
app = login(app)
resp = app.get('/manage/agendas/%s/edit' % agenda_events.pk)
@ -451,7 +449,7 @@ def test_options_agenda(app, admin_user):
def test_options_events_agenda_delays(settings, app, admin_user):
settings.WORKING_DAY_CALENDAR = None
agenda = Agenda.objects.create(label=u'Foo bar')
agenda = Agenda.objects.create(label='Foo bar')
assert agenda.minimal_booking_delay == 1
app = login(app)
url = '/manage/agendas/%s/booking-delays' % agenda.pk
@ -471,7 +469,7 @@ def test_options_events_agenda_delays(settings, app, admin_user):
def test_options_meetings_agenda_delays(app, admin_user):
agenda = Agenda.objects.create(label=u'Foo bar', kind='meetings', maximal_booking_delay=2)
agenda = Agenda.objects.create(label='Foo bar', kind='meetings', maximal_booking_delay=2)
assert agenda.maximal_booking_delay == 2
app = login(app)
url = '/manage/agendas/%s/booking-delays' % agenda.pk
@ -484,7 +482,7 @@ def test_options_meetings_agenda_delays(app, admin_user):
def test_options_virtual_agenda_delays(app, admin_user):
agenda = Agenda.objects.create(label=u'Foo bar', kind='virtual', maximal_booking_delay=2)
agenda = Agenda.objects.create(label='Foo bar', kind='virtual', maximal_booking_delay=2)
assert agenda.maximal_booking_delay == 2
app = login(app)
url = '/manage/agendas/%s/booking-delays' % agenda.pk
@ -586,7 +584,7 @@ def test_options_agenda_event_display_template(app, admin_user):
def test_options_agenda_as_manager(app, manager_user):
agenda = Agenda(label=u'Foo bar')
agenda = Agenda(label='Foo bar')
agenda.view_role = manager_user.groups.all()[0]
agenda.save()
Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
@ -696,7 +694,7 @@ def test_options_meetings_agenda_num_queries(app, admin_user, managers_group):
@mock.patch('chrono.agendas.models.Agenda.is_available_for_simple_management')
def test_agenda_options_desk_simple_management(available_mock, app, admin_user):
agenda = Agenda.objects.create(label=u'Foo bar', kind='meetings')
agenda = Agenda.objects.create(label='Foo bar', kind='meetings')
app = login(app)
available_mock.return_value = True
@ -752,7 +750,7 @@ def test_agenda_options_desk_simple_management(available_mock, app, admin_user):
def test_delete_agenda(app, admin_user):
agenda = Agenda(label=u'Foo bar')
agenda = Agenda(label='Foo bar')
agenda.save()
Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
app = login(app)
@ -766,7 +764,7 @@ def test_delete_agenda(app, admin_user):
def test_delete_busy_agenda(app, admin_user):
agenda = Agenda(label=u'Foo bar')
agenda = Agenda(label='Foo bar')
agenda.save()
Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
event = Event(start_datetime=now() + datetime.timedelta(days=10), places=10, agenda=agenda)
@ -797,7 +795,7 @@ def test_delete_busy_agenda(app, admin_user):
def test_delete_agenda_as_manager(app, manager_user):
agenda = Agenda(label=u'Foo bar')
agenda = Agenda(label='Foo bar')
agenda.edit_role = manager_user.groups.all()[0]
agenda.save()
Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
@ -809,7 +807,7 @@ def test_delete_agenda_as_manager(app, manager_user):
def test_delete_busy_desk(app, admin_user):
agenda = Agenda(label=u'Foo bar', kind='meetings')
agenda = Agenda(label='Foo bar', kind='meetings')
agenda.save()
desk_a = Desk.objects.create(agenda=agenda, label='Desk A')
Desk.objects.create(agenda=agenda, label='Desk B')
@ -854,7 +852,7 @@ def test_add_meetings_agenda(app, admin_user):
def test_meetings_agenda_add_meeting_type(app, admin_user):
agenda = Agenda.objects.create(label=u'Foo bar', kind='meetings')
agenda = Agenda.objects.create(label='Foo bar', kind='meetings')
app = login(app)
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
assert "This agenda doesn't have any meeting type yet." in resp.text
@ -878,10 +876,10 @@ def test_meetings_agenda_add_meeting_type(app, admin_user):
def test_meetings_agenda_edit_meeting_type(app, admin_user):
agenda = Agenda.objects.create(label=u'Foo bar', kind='meetings')
agenda = Agenda.objects.create(label='Foo bar', kind='meetings')
meeting_type = MeetingType.objects.create(agenda=agenda, label='Blah')
meeting_type2 = MeetingType.objects.create(agenda=agenda, label='Other')
other_agenda = Agenda.objects.create(label=u'Foo bar', kind='meetings')
other_agenda = Agenda.objects.create(label='Foo bar', kind='meetings')
other_meeting_type = MeetingType.objects.create(agenda=other_agenda, label='Blah')
assert meeting_type.slug == other_meeting_type.slug
@ -905,7 +903,7 @@ def test_meetings_agenda_edit_meeting_type(app, admin_user):
def test_meetings_agenda_delete_meeting_type(app, admin_user):
agenda = Agenda(label=u'Foo bar', kind='meetings')
agenda = Agenda(label='Foo bar', kind='meetings')
agenda.save()
meeting_type = MeetingType(agenda=agenda, label='Blah')
@ -933,7 +931,7 @@ def test_meetings_agenda_delete_meeting_type(app, admin_user):
def test_meetings_agenda_add_time_period(app, admin_user):
agenda = Agenda.objects.create(label=u'Foo bar', kind='meetings')
agenda = Agenda.objects.create(label='Foo bar', kind='meetings')
desk = Desk.objects.create(agenda=agenda, label='Desk A')
desk2 = Desk.objects.create(agenda=agenda, label='Desk B')
MeetingType.objects.create(agenda=agenda, label='Blah')
@ -959,8 +957,8 @@ def test_meetings_agenda_add_time_period(app, admin_user):
resp.form['end_time'] = '13:00'
resp = resp.form.submit()
resp = resp.follow()
assert u'Monday / 10 a.m. → 1 p.m.' in resp.text
assert u'Wednesday / 10 a.m. → 5 p.m.' in resp.text
assert 'Monday / 10 a.m. → 1 p.m.' in resp.text
assert 'Wednesday / 10 a.m. → 5 p.m.' in resp.text
assert resp.text.index('Monday') < resp.text.index('Wednesday')
# invert start and end
@ -982,7 +980,7 @@ def test_meetings_agenda_add_time_period(app, admin_user):
def test_meetings_agenda_add_time_period_desk_simple_management(app, admin_user):
agenda = Agenda.objects.create(label=u'Foo bar', kind='meetings', desk_simple_management=True)
agenda = Agenda.objects.create(label='Foo bar', kind='meetings', desk_simple_management=True)
desk = Desk.objects.create(agenda=agenda, label='Desk A')
desk2 = Desk.objects.create(agenda=agenda, label='Desk B')
assert agenda.is_available_for_simple_management() is True
@ -1001,7 +999,7 @@ def test_meetings_agenda_add_time_period_desk_simple_management(app, admin_user)
def test_meetings_agenda_add_time_period_on_missing_desk(app, admin_user):
app = login(app)
agenda = Agenda.objects.create(label=u'Foo bar', kind='meetings')
agenda = Agenda.objects.create(label='Foo bar', kind='meetings')
app.get('/manage/agendas/%s/desk/0/add-time-period' % agenda.pk, status=404)
@ -1037,7 +1035,7 @@ def test_meetings_agenda_add_time_period_as_manager(app, manager_user):
def test_meetings_agenda_edit_time_period(app, admin_user):
agenda = Agenda.objects.create(label=u'Foo bar', kind='meetings')
agenda = Agenda.objects.create(label='Foo bar', kind='meetings')
desk = Desk.objects.create(agenda=agenda, label='Desk A')
time_period = TimePeriod.objects.create(
desk=desk, weekday=0, start_time=datetime.time(9, 0), end_time=datetime.time(12, 0)
@ -1066,7 +1064,7 @@ def test_meetings_agenda_edit_time_period(app, admin_user):
def test_meetings_agenda_edit_time_period_desk_simple_management(app, admin_user):
agenda = Agenda.objects.create(label=u'Foo bar', kind='meetings', desk_simple_management=True)
agenda = Agenda.objects.create(label='Foo bar', kind='meetings', desk_simple_management=True)
desk = Desk.objects.create(agenda=agenda, label='Desk A')
time_period = TimePeriod.objects.create(
desk=desk, weekday=0, start_time=datetime.time(9, 0), end_time=datetime.time(12, 0)
@ -1106,7 +1104,7 @@ def test_meetings_agenda_edit_time_period_desk_simple_management(app, admin_user
def test_meetings_agenda_delete_time_period(app, admin_user):
agenda = Agenda.objects.create(label=u'Foo bar', kind='meetings')
agenda = Agenda.objects.create(label='Foo bar', kind='meetings')
desk = Desk.objects.create(agenda=agenda, label='Desk A')
TimePeriod.objects.create(
desk=desk, weekday=2, start_time=datetime.time(10, 0), end_time=datetime.time(18, 0)
@ -1124,7 +1122,7 @@ def test_meetings_agenda_delete_time_period(app, admin_user):
def test_meetings_agenda_delete_time_period_desk_simple_management(app, admin_user):
agenda = Agenda.objects.create(label=u'Foo bar', kind='meetings', desk_simple_management=True)
agenda = Agenda.objects.create(label='Foo bar', kind='meetings', desk_simple_management=True)
desk = Desk.objects.create(agenda=agenda, label='Desk A')
time_period = TimePeriod.objects.create(
desk=desk, weekday=0, start_time=datetime.time(9, 0), end_time=datetime.time(12, 0)
@ -1197,7 +1195,7 @@ def test_meetings_agenda_add_desk(app, admin_user):
}
)
def test_meetings_agenda_add_desk_from_another(app, admin_user):
agenda = Agenda.objects.create(label=u'Foo bar', kind='meetings')
agenda = Agenda.objects.create(label='Foo bar', kind='meetings')
desk = Desk.objects.create(agenda=agenda, label='Desk A')
TimePeriod.objects.create(
weekday=1, desk=desk, start_time=datetime.time(10, 0), end_time=datetime.time(12, 0)
@ -1226,7 +1224,7 @@ def test_meetings_agenda_add_desk_from_another(app, admin_user):
}
)
def test_meetings_agenda_add_desk_simple_management(app, admin_user):
agenda = Agenda.objects.create(label=u'Foo bar', kind='meetings', desk_simple_management=True)
agenda = Agenda.objects.create(label='Foo bar', kind='meetings', desk_simple_management=True)
desk = Desk.objects.create(agenda=agenda, label='Desk A')
TimePeriod.objects.create(
weekday=1, desk=desk, start_time=datetime.time(10, 0), end_time=datetime.time(12, 0)
@ -1259,10 +1257,10 @@ def test_meetings_agenda_add_desk_simple_management(app, admin_user):
def test_meetings_agenda_edit_desk(app, admin_user):
agenda = Agenda.objects.create(label=u'Foo bar', kind='meetings')
agenda = Agenda.objects.create(label='Foo bar', kind='meetings')
desk = Desk.objects.create(agenda=agenda, label='Desk A')
desk2 = Desk.objects.create(agenda=agenda, label='Desk B')
other_agenda = Agenda.objects.create(label=u'Foo bar', kind='meetings')
other_agenda = Agenda.objects.create(label='Foo bar', kind='meetings')
other_desk = Desk.objects.create(agenda=other_agenda, label='Desk A')
assert other_desk.slug == desk.slug
@ -1297,7 +1295,7 @@ def test_meetings_agenda_edit_desk(app, admin_user):
def test_meetings_agenda_delete_desk(app, admin_user):
agenda = Agenda.objects.create(label=u'Foo bar', kind='meetings')
agenda = Agenda.objects.create(label='Foo bar', kind='meetings')
Desk.objects.create(agenda=agenda, label='Desk A')
desk_b = Desk.objects.create(agenda=agenda, label='Desk B')
@ -1328,7 +1326,7 @@ def test_meetings_agenda_delete_desk(app, admin_user):
def test_meetings_agenda_add_time_period_exception(app, admin_user):
agenda = Agenda.objects.create(label=u'Foo bar', kind='meetings')
agenda = Agenda.objects.create(label='Foo bar', kind='meetings')
desk = Desk.objects.create(agenda=agenda, label='Desk A')
desk2 = Desk.objects.create(agenda=agenda, label='Desk B')
@ -1371,7 +1369,7 @@ def test_meetings_agenda_add_time_period_exception(app, admin_user):
def test_meetings_agenda_add_time_period_exception_booking_overlaps(app, admin_user):
agenda = Agenda.objects.create(label=u'Foo bar', kind='meetings')
agenda = Agenda.objects.create(label='Foo bar', kind='meetings')
desk = Desk.objects.create(agenda=agenda, label='Desk A')
meeting_type = MeetingType.objects.create(agenda=agenda, label='Blah')
@ -1399,7 +1397,7 @@ def test_meetings_agenda_add_time_period_exception_booking_overlaps(app, admin_u
def test_meetings_agenda_add_time_period_exception_all_desks(app, admin_user):
agenda = Agenda.objects.create(label=u'Foo bar', kind='meetings')
agenda = Agenda.objects.create(label='Foo bar', kind='meetings')
desk = Desk.objects.create(agenda=agenda, label='Desk A')
# add global time exception
@ -3303,7 +3301,7 @@ def test_agenda_month_view_event_outside_timeperiod(app, admin_user, kind):
def test_agenda_view_event(app, manager_user):
agenda = Agenda(label=u'Foo bar')
agenda = Agenda(label='Foo bar')
agenda.view_role = manager_user.groups.all()[0]
agenda.save()
event = Event.objects.create(
@ -3411,7 +3409,7 @@ def test_import_agenda_as_manager(app, manager_user):
def test_import_agenda(app, admin_user):
agenda = Agenda(label=u'Foo bar')
agenda = Agenda(label='Foo bar')
agenda.save()
Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
@ -3479,14 +3477,14 @@ def test_import_agenda(app, admin_user):
# reference to unknown group
agenda_export_dict = json.loads(force_text(agenda_export))
agenda_export_dict['agendas'][0]['permissions']['view'] = u'gé1'
agenda_export_dict['agendas'][0]['permissions']['view'] = 'gé1'
agenda_export = json.dumps(agenda_export_dict).encode('utf-8')
Agenda.objects.all().delete()
resp = app.get('/manage/', status=200)
resp = resp.click('Import')
resp.form['agendas_json'] = Upload('export.json', agenda_export, 'application/json')
resp = resp.form.submit()
assert u'Missing roles: &quot;gé1&quot;' in resp.text
assert 'Missing roles: &quot;gé1&quot;' in resp.text
del agenda_export_dict['agendas'][0]['permissions']['view']
# missing field
@ -3832,7 +3830,7 @@ def test_virtual_agenda_settings_add_excluded_period(app, admin_user):
assert tp.end_time.minute == 0
resp = resp.follow()
assert u'Monday / 10 a.m. → 5 p.m.' in resp.text
assert 'Monday / 10 a.m. → 5 p.m.' in resp.text
def test_virtual_agenda_settings_edit_excluded_period(app, admin_user):
@ -4033,7 +4031,7 @@ def test_cant_add_meetingtype_if_virtual_agenda(app, admin_user):
def test_duplicate_agenda(app, admin_user):
agenda = Agenda.objects.create(label=u'Foo Bar', slug='foo-bar', kind='meetings')
agenda = Agenda.objects.create(label='Foo Bar', slug='foo-bar', kind='meetings')
assert Agenda.objects.count() == 1
app = login(app)
@ -4338,7 +4336,7 @@ def test_export_site(app, admin_user):
site_json = json.loads(resp.text)
assert site_json == {'unavailability_calendars': [], 'agendas': [], 'absence_reason_groups': []}
agenda = Agenda.objects.create(label=u'Foo Bar', kind='events')
agenda = Agenda.objects.create(label='Foo Bar', kind='events')
Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
UnavailabilityCalendar.objects.create(label='Calendar 1')
resp = app.get('/manage/agendas/export/')

View File

@ -1,5 +1,3 @@
# -*- coding: utf-8 -*-
import pytest
from chrono.agendas.models import Agenda, Category
@ -10,7 +8,7 @@ pytestmark = pytest.mark.django_db
def test_list_categories_as_manager(app, manager_user):
agenda = Agenda(label=u'Foo Bar')
agenda = Agenda(label='Foo Bar')
agenda.view_role = manager_user.groups.all()[0]
agenda.save()
app = login(app, username='manager', password='manager')
@ -34,7 +32,7 @@ def test_add_category(app, admin_user):
def test_add_category_as_manager(app, manager_user):
agenda = Agenda(label=u'Foo Bar')
agenda = Agenda(label='Foo Bar')
agenda.view_role = manager_user.groups.all()[0]
agenda.save()
app = login(app, username='manager', password='manager')
@ -57,7 +55,7 @@ def test_edit_category(app, admin_user):
def test_edit_category_as_manager(app, manager_user):
agenda = Agenda(label=u'Foo Bar')
agenda = Agenda(label='Foo Bar')
agenda.view_role = manager_user.groups.all()[0]
agenda.save()
category = Category.objects.create(label='Foo bar')
@ -77,7 +75,7 @@ def test_delete_category(app, admin_user):
def test_delete_category_as_manager(app, manager_user):
agenda = Agenda(label=u'Foo Bar')
agenda = Agenda(label='Foo Bar')
agenda.view_role = manager_user.groups.all()[0]
agenda.save()
category = Category.objects.create(label='Foo bar')

View File

@ -1,9 +1,7 @@
# -*- coding: utf-8 -*-
import codecs
import datetime
from unittest import mock
import mock
import pytest
import requests
from django.core.management import call_command
@ -20,7 +18,7 @@ pytestmark = pytest.mark.django_db
def test_add_event(app, admin_user):
agenda = Agenda(label=u'Foo bar')
agenda = Agenda(label='Foo bar')
agenda.maximal_booking_delay = 0
agenda.save()
Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
@ -71,7 +69,7 @@ def test_add_event_on_missing_agenda(app, admin_user):
def test_add_event_as_manager(app, manager_user):
agenda = Agenda(label=u'Foo bar')
agenda = Agenda(label='Foo bar')
agenda.view_role = manager_user.groups.all()[0]
agenda.save()
Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
@ -111,7 +109,7 @@ def test_add_event_as_manager(app, manager_user):
def test_edit_event(settings, app, admin_user):
settings.LANGUAGE_CODE = 'fr-fr' # check date initial value format
agenda = Agenda(label=u'Foo bar')
agenda = Agenda(label='Foo bar')
agenda.save()
event = Event(start_datetime=make_aware(datetime.datetime(2016, 2, 15, 17, 0)), places=20, agenda=agenda)
event.save()
@ -144,7 +142,7 @@ def test_edit_event(settings, app, admin_user):
def test_event_digit_slug(app, admin_user):
agenda = Agenda(label=u'Foo bar')
agenda = Agenda(label='Foo bar')
agenda.maximal_booking_delay = 0
agenda.save()
event = Event.objects.create(agenda=agenda, start_datetime=now(), places=10)
@ -162,7 +160,7 @@ def test_edit_missing_event(app, admin_user):
def test_edit_event_as_manager(app, manager_user):
agenda = Agenda(label=u'Foo bar')
agenda = Agenda(label='Foo bar')
agenda.view_role = manager_user.groups.all()[0]
agenda.save()
Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
@ -340,7 +338,7 @@ def test_edit_recurring_event_with_end_date(settings, app, admin_user, freezer):
def test_booked_places(app, admin_user):
agenda = Agenda(label=u'Foo bar')
agenda = Agenda(label='Foo bar')
agenda.save()
event = Event(start_datetime=make_aware(datetime.datetime(2016, 2, 15, 17, 0)), places=10, agenda=agenda)
event.save()
@ -355,7 +353,7 @@ def test_booked_places(app, admin_user):
def test_event_classes(app, admin_user):
agenda = Agenda(label=u'Foo bar')
agenda = Agenda(label='Foo bar')
agenda.save()
Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
event = Event(start_datetime=make_aware(datetime.datetime(2016, 2, 15, 17, 0)), places=10, agenda=agenda)
@ -390,7 +388,7 @@ def test_event_classes(app, admin_user):
def test_delete_event(app, admin_user):
agenda = Agenda(label=u'Foo bar')
agenda = Agenda(label='Foo bar')
agenda.save()
Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
event = Event(start_datetime=make_aware(datetime.datetime(2016, 2, 15, 17, 0)), places=10, agenda=agenda)
@ -406,7 +404,7 @@ def test_delete_event(app, admin_user):
def test_delete_busy_event(app, admin_user):
agenda = Agenda(label=u'Foo bar')
agenda = Agenda(label='Foo bar')
agenda.save()
Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
event = Event(start_datetime=now() + datetime.timedelta(days=10), places=10, agenda=agenda)
@ -477,7 +475,7 @@ def test_delete_recurring_event(app, admin_user, freezer):
def test_delete_event_as_manager(app, manager_user):
agenda = Agenda(label=u'Foo bar')
agenda = Agenda(label='Foo bar')
agenda.edit_role = manager_user.groups.all()[0]
agenda.save()
Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
@ -494,7 +492,7 @@ def test_delete_event_as_manager(app, manager_user):
def test_export_events(app, admin_user):
agenda = Agenda.objects.create(label=u'Foo bar')
agenda = Agenda.objects.create(label='Foo bar')
app = login(app)
resp = app.get('/manage/agendas/%s/export-events' % agenda.id)
@ -534,7 +532,7 @@ def test_export_events(app, admin_user):
def test_export_events_wrong_kind(app, admin_user):
agenda = Agenda.objects.create(label=u'Foo bar', kind='meetings')
agenda = Agenda.objects.create(label='Foo bar', kind='meetings')
app = login(app)
app.get('/manage/agendas/%s/export-events' % agenda.id, status=404)
@ -544,7 +542,7 @@ def test_export_events_wrong_kind(app, admin_user):
def test_import_events(app, admin_user):
agenda = Agenda(label=u'Foo bar')
agenda = Agenda(label='Foo bar')
agenda.save()
Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
@ -607,52 +605,50 @@ def test_import_events(app, admin_user):
Event.objects.all().delete()
resp = app.get('/manage/agendas/%s/import-events' % agenda.id, status=200)
resp.form['events_csv_file'] = Upload(
't.csv', u'2016-09-16,18:00,10,5,éléphant'.encode('utf-8'), 'text/csv'
)
resp.form['events_csv_file'] = Upload('t.csv', '2016-09-16,18:00,10,5,éléphant'.encode(), 'text/csv')
resp = resp.form.submit(status=302)
assert Event.objects.count() == 1
assert Event.objects.all()[0].start_datetime == make_aware(datetime.datetime(2016, 9, 16, 18, 0))
assert Event.objects.all()[0].places == 10
assert Event.objects.all()[0].waiting_list_places == 5
assert Event.objects.all()[0].label == u'éléphant'
assert Event.objects.all()[0].label == 'éléphant'
Event.objects.all().delete()
# BOM
resp = app.get('/manage/agendas/%s/import-events' % agenda.id, status=200)
resp.form['events_csv_file'] = Upload(
't.csv', codecs.BOM_UTF8 + u'2016-09-16,18:00,10,5,éléphant'.encode('utf-8'), 'text/csv'
't.csv', codecs.BOM_UTF8 + '2016-09-16,18:00,10,5,éléphant'.encode(), 'text/csv'
)
resp = resp.form.submit(status=302)
assert Event.objects.count() == 1
assert Event.objects.all()[0].start_datetime == make_aware(datetime.datetime(2016, 9, 16, 18, 0))
assert Event.objects.all()[0].places == 10
assert Event.objects.all()[0].waiting_list_places == 5
assert Event.objects.all()[0].label == u'éléphant'
assert Event.objects.all()[0].label == 'éléphant'
Event.objects.all().delete()
resp = app.get('/manage/agendas/%s/import-events' % agenda.id, status=200)
resp.form['events_csv_file'] = Upload(
't.csv', u'2016-09-16,18:00,10,5,éléphant'.encode('iso-8859-15'), 'text/csv'
't.csv', '2016-09-16,18:00,10,5,éléphant'.encode('iso-8859-15'), 'text/csv'
)
resp = resp.form.submit(status=302)
assert Event.objects.count() == 1
assert Event.objects.all()[0].start_datetime == make_aware(datetime.datetime(2016, 9, 16, 18, 0))
assert Event.objects.all()[0].places == 10
assert Event.objects.all()[0].waiting_list_places == 5
assert Event.objects.all()[0].label == u'éléphant'
assert Event.objects.all()[0].label == 'éléphant'
Event.objects.all().delete()
resp = app.get('/manage/agendas/%s/import-events' % agenda.id, status=200)
resp.form['events_csv_file'] = Upload(
't.csv', u'2016-09-16,18:00,10,5,éléphant'.encode('eucjp'), 'text/csv'
't.csv', '2016-09-16,18:00,10,5,éléphant'.encode('eucjp'), 'text/csv'
)
resp = resp.form.submit(status=302)
assert Event.objects.count() == 1
assert Event.objects.all()[0].start_datetime == make_aware(datetime.datetime(2016, 9, 16, 18, 0))
assert Event.objects.all()[0].places == 10
assert Event.objects.all()[0].waiting_list_places == 5
assert Event.objects.all()[0].label == u'\x8f«±l\x8f«±phant' # eucjp interpreted as iso-8859-15
assert Event.objects.all()[0].label == '\x8f«±l\x8f«±phant' # eucjp interpreted as iso-8859-15
Event.objects.all().delete()
resp = app.get('/manage/agendas/%s/import-events' % agenda.id, status=200)
@ -754,9 +750,13 @@ def test_import_events(app, admin_user):
resp = resp.form.submit(status=302)
assert len(ctx.captured_queries) == 22
assert Event.objects.count() == 5
assert set(Event.objects.values_list('slug', flat=True)) == set(
['labelb', 'labelb-1', 'labelb-2', 'labelb-3', 'labelb-4']
)
assert set(Event.objects.values_list('slug', flat=True)) == {
'labelb',
'labelb-1',
'labelb-2',
'labelb-3',
'labelb-4',
}
# forbidden numerical slug
Event.objects.all().delete()
@ -768,7 +768,7 @@ def test_import_events(app, admin_user):
def test_import_events_existing_event(app, admin_user, freezer):
agenda = Agenda.objects.create(label=u'Foo bar')
agenda = Agenda.objects.create(label='Foo bar')
Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
app = login(app)
@ -803,7 +803,7 @@ def test_import_events_existing_event(app, admin_user, freezer):
not in resp.text
)
assert event.start_datetime == make_aware(
datetime.datetime(*[int(v) for v in date.split('-')], *[int(v) for v in time.split(':')])
datetime.datetime(*(int(v) for v in date.split('-')), *(int(v) for v in time.split(':')))
)
# change date or time
@ -867,7 +867,7 @@ def test_import_events_existing_event(app, admin_user, freezer):
def test_import_events_wrong_kind(app, admin_user):
agenda = Agenda.objects.create(label=u'Foo bar', kind='meetings')
agenda = Agenda.objects.create(label='Foo bar', kind='meetings')
app = login(app)
app.get('/manage/agendas/%s/import-events' % agenda.id, status=404)

Some files were not shown because too many files have changed in this diff Show More