0003-misc-apply-isort-52856.patch
chrono/agendas/management/commands/cancel_events.py | ||
---|---|---|
16 | 16 | |
17 | 17 |
from datetime import timedelta |
18 | 18 | |
19 |
from requests import RequestException |
|
20 | ||
21 | 19 |
from django.core.management.base import BaseCommand |
22 | 20 |
from django.db import transaction |
23 | 21 |
from django.utils import timezone |
22 |
from requests import RequestException |
|
24 | 23 | |
25 | 24 |
from chrono.agendas.models import Event, EventCancellationReport |
26 | 25 |
chrono/agendas/management/commands/send_booking_reminders.py | ||
---|---|---|
15 | 15 |
# along with this program. If not, see <http://www.gnu.org/licenses/>. |
16 | 16 | |
17 | 17 |
from datetime import datetime, timedelta |
18 |
from urllib.parse import urljoin |
|
19 |
from requests import RequestException |
|
20 | 18 |
from smtplib import SMTPException |
19 |
from urllib.parse import urljoin |
|
21 | 20 | |
22 | 21 |
import pytz |
23 | ||
24 | 22 |
from django.conf import settings |
25 | 23 |
from django.core.mail import send_mail |
26 | 24 |
from django.core.management.base import BaseCommand |
... | ... | |
29 | 27 |
from django.template.loader import render_to_string |
30 | 28 |
from django.utils import timezone, translation |
31 | 29 |
from django.utils.translation import ugettext_lazy as _ |
30 |
from requests import RequestException |
|
32 | 31 | |
33 | 32 |
from chrono.agendas.models import Agenda, Booking |
34 | 33 |
from chrono.utils.requests_wrapper import requests |
chrono/agendas/migrations/0001_initial.py | ||
---|---|---|
1 | 1 |
# -*- coding: utf-8 -*- |
2 | 2 |
from __future__ import unicode_literals |
3 | 3 | |
4 |
from django.db import models, migrations
|
|
4 |
from django.db import migrations, models
|
|
5 | 5 | |
6 | 6 | |
7 | 7 |
class Migration(migrations.Migration): |
chrono/agendas/migrations/0002_event.py | ||
---|---|---|
1 | 1 |
# -*- coding: utf-8 -*- |
2 | 2 |
from __future__ import unicode_literals |
3 | 3 | |
4 |
from django.db import models, migrations
|
|
4 |
from django.db import migrations, models
|
|
5 | 5 | |
6 | 6 | |
7 | 7 |
class Migration(migrations.Migration): |
chrono/agendas/migrations/0003_booking.py | ||
---|---|---|
1 | 1 |
# -*- coding: utf-8 -*- |
2 | 2 |
from __future__ import unicode_literals |
3 | 3 | |
4 |
from django.db import models, migrations |
|
5 | 4 |
import jsonfield.fields |
5 |
from django.db import migrations, models |
|
6 | 6 | |
7 | 7 | |
8 | 8 |
class Migration(migrations.Migration): |
chrono/agendas/migrations/0004_booking_cancellation_datetime.py | ||
---|---|---|
1 | 1 |
# -*- coding: utf-8 -*- |
2 | 2 |
from __future__ import unicode_literals |
3 | 3 | |
4 |
from django.db import models, migrations
|
|
4 |
from django.db import migrations, models
|
|
5 | 5 | |
6 | 6 | |
7 | 7 |
class Migration(migrations.Migration): |
chrono/agendas/migrations/0006_auto_20160707_1357.py | ||
---|---|---|
1 | 1 |
# -*- coding: utf-8 -*- |
2 | 2 |
from __future__ import unicode_literals |
3 | 3 | |
4 |
from django.db import migrations, models |
|
5 | 4 |
import datetime |
5 | ||
6 |
from django.db import migrations, models |
|
6 | 7 |
from django.utils.timezone import utc |
7 | 8 | |
8 | 9 |
chrono/agendas/migrations/0020_auto_20171102_1021.py | ||
---|---|---|
1 | 1 |
# -*- coding: utf-8 -*- |
2 | 2 |
from __future__ import unicode_literals |
3 | 3 | |
4 |
from django.db import migrations, models |
|
5 | 4 |
import datetime |
5 | ||
6 |
from django.db import migrations, models |
|
6 | 7 |
from django.utils.timezone import utc |
7 | 8 | |
8 | 9 |
chrono/agendas/migrations/0025_auto_20181206_1252.py | ||
---|---|---|
2 | 2 |
# Generated by Django 1.11.12 on 2018-12-06 12:52 |
3 | 3 |
from __future__ import unicode_literals |
4 | 4 | |
5 |
from django.db import migrations, models |
|
6 | 5 |
import django.db.models.deletion |
6 |
from django.db import migrations, models |
|
7 | 7 | |
8 | 8 | |
9 | 9 |
class Migration(migrations.Migration): |
chrono/agendas/migrations/0037_timeperiodexceptionsource_ics_file.py | ||
---|---|---|
1 | 1 |
# -*- coding: utf-8 -*- |
2 | 2 |
from __future__ import unicode_literals |
3 | 3 | |
4 |
import chrono.agendas.models |
|
5 | 4 |
from django.db import migrations, models |
6 | 5 | |
6 |
import chrono.agendas.models |
|
7 | ||
7 | 8 | |
8 | 9 |
class Migration(migrations.Migration): |
9 | 10 |
chrono/agendas/migrations/0038_start_virtual_agendas.py | ||
---|---|---|
2 | 2 |
# Generated by Django 1.11.18 on 2020-02-20 12:15 |
3 | 3 |
from __future__ import unicode_literals |
4 | 4 | |
5 |
from django.db import migrations, models |
|
6 | 5 |
import django.db.models.deletion |
6 |
from django.db import migrations, models |
|
7 | 7 | |
8 | 8 | |
9 | 9 |
class Migration(migrations.Migration): |
chrono/agendas/migrations/0040_timeperiod_agenda.py | ||
---|---|---|
2 | 2 |
# Generated by Django 1.11.18 on 2020-02-26 13:27 |
3 | 3 |
from __future__ import unicode_literals |
4 | 4 | |
5 |
from django.db import migrations, models |
|
6 | 5 |
import django.db.models.deletion |
6 |
from django.db import migrations, models |
|
7 | 7 | |
8 | 8 | |
9 | 9 |
class Migration(migrations.Migration): |
chrono/agendas/migrations/0047_auto_20200617_1521.py | ||
---|---|---|
2 | 2 |
# Generated by Django 1.11.18 on 2020-06-17 13:21 |
3 | 3 |
from __future__ import unicode_literals |
4 | 4 | |
5 |
import chrono.agendas.models |
|
6 | 5 |
from django.db import migrations, models |
7 | 6 | |
7 |
import chrono.agendas.models |
|
8 | ||
8 | 9 | |
9 | 10 |
class Migration(migrations.Migration): |
10 | 11 |
chrono/agendas/migrations/0050_event_slug.py | ||
---|---|---|
1 | 1 |
# -*- coding: utf-8 -*- |
2 | 2 |
from __future__ import unicode_literals |
3 | 3 | |
4 |
import chrono.agendas.models |
|
5 | 4 |
from django.db import migrations, models |
6 | 5 | |
6 |
import chrono.agendas.models |
|
7 | ||
7 | 8 | |
8 | 9 |
class Migration(migrations.Migration): |
9 | 10 |
chrono/agendas/migrations/0053_event_date_range_constraint.py | ||
---|---|---|
4 | 4 |
from django.db import migrations, transaction |
5 | 5 |
from django.db.utils import InternalError, OperationalError, ProgrammingError |
6 | 6 | |
7 | ||
8 | 7 |
sql_forwards = """ |
9 | 8 |
ALTER TABLE agendas_event |
10 | 9 |
ADD CONSTRAINT tstzrange_constraint |
chrono/agendas/migrations/0054_agenda_categories.py | ||
---|---|---|
1 | 1 |
# -*- coding: utf-8 -*- |
2 | 2 |
from __future__ import unicode_literals |
3 | 3 | |
4 |
from django.db import migrations, models |
|
5 | 4 |
import django.db.models.deletion |
5 |
from django.db import migrations, models |
|
6 | 6 | |
7 | 7 | |
8 | 8 |
class Migration(migrations.Migration): |
chrono/agendas/migrations/0056_auto_20200811_1611.py | ||
---|---|---|
2 | 2 |
# Generated by Django 1.11.18 on 2020-08-11 14:11 |
3 | 3 |
from __future__ import unicode_literals |
4 | 4 | |
5 |
from django.db import migrations, models |
|
6 | 5 |
import django.db.models.deletion |
7 | 6 |
import jsonfield.fields |
7 |
from django.db import migrations, models |
|
8 | 8 | |
9 | 9 | |
10 | 10 |
class Migration(migrations.Migration): |
chrono/agendas/migrations/0060_auto_20200903_1041.py | ||
---|---|---|
3 | 3 |
from __future__ import unicode_literals |
4 | 4 | |
5 | 5 |
import django.contrib.postgres.fields |
6 |
from django.db import migrations, models |
|
7 | 6 |
import django.db.models.deletion |
7 |
from django.db import migrations, models |
|
8 | 8 | |
9 | 9 | |
10 | 10 |
class Migration(migrations.Migration): |
chrono/agendas/migrations/0062_auto_20200915_1401.py | ||
---|---|---|
2 | 2 |
# Generated by Django 1.11.18 on 2020-09-15 12:01 |
3 | 3 |
from __future__ import unicode_literals |
4 | 4 | |
5 |
from django.db import migrations, models |
|
6 | 5 |
import django.db.models.deletion |
6 |
from django.db import migrations, models |
|
7 | 7 | |
8 | 8 | |
9 | 9 |
class Migration(migrations.Migration): |
chrono/agendas/migrations/0064_booking_form_url.py | ||
---|---|---|
1 | 1 |
# -*- coding: utf-8 -*- |
2 | 2 |
from __future__ import unicode_literals |
3 | 3 | |
4 |
import chrono.agendas.models |
|
5 | 4 |
from django.db import migrations, models |
6 | 5 | |
6 |
import chrono.agendas.models |
|
7 | ||
7 | 8 | |
8 | 9 |
class Migration(migrations.Migration): |
9 | 10 |
chrono/agendas/migrations/0065_unavailability_calendar.py | ||
---|---|---|
2 | 2 |
# Generated by Django 1.11.18 on 2020-10-05 12:37 |
3 | 3 |
from __future__ import unicode_literals |
4 | 4 | |
5 |
from django.db import migrations, models |
|
6 | 5 |
import django.db.models.deletion |
6 |
from django.db import migrations, models |
|
7 | 7 | |
8 | 8 | |
9 | 9 |
class Migration(migrations.Migration): |
chrono/agendas/migrations/0070_auto_20201202_1834.py | ||
---|---|---|
2 | 2 |
# Generated by Django 1.11.29 on 2020-12-02 17:34 |
3 | 3 |
from __future__ import unicode_literals |
4 | 4 | |
5 |
from django.db import migrations, models |
|
6 | 5 |
import django.db.models.deletion |
6 |
from django.db import migrations, models |
|
7 | 7 | |
8 | 8 | |
9 | 9 |
class Migration(migrations.Migration): |
chrono/agendas/migrations/0075_auto_20210216_1553.py | ||
---|---|---|
2 | 2 |
# Generated by Django 1.11.18 on 2021-02-16 14:53 |
3 | 3 |
from __future__ import unicode_literals |
4 | 4 | |
5 |
from django.db import migrations, models |
|
6 | 5 |
import django.db.models.deletion |
7 | 6 |
import jsonfield.fields |
7 |
from django.db import migrations, models |
|
8 | 8 | |
9 | 9 | |
10 | 10 |
class Migration(migrations.Migration): |
chrono/agendas/migrations/0078_absence_reasons.py | ||
---|---|---|
1 | 1 |
# -*- coding: utf-8 -*- |
2 | 2 |
from __future__ import unicode_literals |
3 | 3 | |
4 |
from django.db import migrations, models |
|
5 | 4 |
import django.db.models.deletion |
5 |
from django.db import migrations, models |
|
6 | 6 | |
7 | 7 | |
8 | 8 |
class Migration(migrations.Migration): |
chrono/agendas/models.py | ||
---|---|---|
15 | 15 |
# You should have received a copy of the GNU Affero General Public License |
16 | 16 |
# along with this program. If not, see <http://www.gnu.org/licenses/>. |
17 | 17 | |
18 |
import copy |
|
19 | 18 |
import collections |
19 |
import copy |
|
20 | 20 |
import datetime |
21 | 21 |
import functools |
22 | 22 |
import itertools |
... | ... | |
24 | 24 |
import sys |
25 | 25 |
import uuid |
26 | 26 | |
27 |
import django |
|
27 | 28 |
import requests |
28 | 29 |
import vobject |
29 |
from dateutil.rrule import rrule, rruleset, DAILY, WEEKLY |
|
30 | ||
31 |
import django |
|
30 |
from dateutil.rrule import DAILY, WEEKLY, rrule, rruleset |
|
32 | 31 |
from django.conf import settings |
33 | 32 |
from django.contrib.auth.models import Group |
34 | 33 |
from django.contrib.postgres.fields import ArrayField |
35 |
from django.core.exceptions import FieldDoesNotExist |
|
36 |
from django.core.exceptions import ValidationError |
|
34 |
from django.core.exceptions import FieldDoesNotExist, ValidationError |
|
37 | 35 |
from django.core.validators import MaxValueValidator, MinValueValidator |
38 |
from django.db import models, transaction, connection
|
|
39 |
from django.db.models import Count, Q, Case, When
|
|
40 |
from django.template import engines, Context, Template, TemplateSyntaxError, VariableDoesNotExist
|
|
36 |
from django.db import connection, models, transaction
|
|
37 |
from django.db.models import Case, Count, Q, When
|
|
38 |
from django.template import Context, Template, TemplateSyntaxError, VariableDoesNotExist, engines
|
|
41 | 39 |
from django.urls import reverse |
42 | 40 |
from django.utils import functional |
43 | 41 |
from django.utils.dates import WEEKDAYS |
... | ... | |
45 | 43 |
from django.utils.formats import date_format |
46 | 44 |
from django.utils.module_loading import import_string |
47 | 45 |
from django.utils.text import slugify |
48 |
from django.utils.timezone import localtime, now, make_aware, make_naive, is_aware, utc |
|
49 |
from django.utils.translation import ugettext_lazy as _, ugettext, ungettext |
|
50 | ||
46 |
from django.utils.timezone import is_aware, localtime, make_aware, make_naive, now, utc |
|
47 |
from django.utils.translation import ugettext |
|
48 |
from django.utils.translation import ugettext_lazy as _ |
|
49 |
from django.utils.translation import ungettext |
|
51 | 50 |
from jsonfield import JSONField |
52 | 51 | |
53 | 52 |
from chrono.interval import Interval, IntervalSet |
54 | 53 |
from chrono.utils.requests_wrapper import requests as requests_wrapper |
55 | 54 | |
56 | ||
57 | 55 |
AGENDA_KINDS = ( |
58 | 56 |
('events', _('Events')), |
59 | 57 |
('meetings', _('Meetings')), |
chrono/api/utils.py | ||
---|---|---|
17 | 17 | |
18 | 18 | |
19 | 19 |
from django.utils.encoding import force_text |
20 | ||
21 | 20 |
from rest_framework.response import Response as DRFResponse |
22 | 21 |
from rest_framework.views import exception_handler as DRF_exception_handler |
23 | 22 |
chrono/api/views.py | ||
---|---|---|
27 | 27 |
from django.utils.dateparse import parse_date, parse_datetime |
28 | 28 |
from django.utils.encoding import force_text |
29 | 29 |
from django.utils.formats import date_format |
30 |
from django.utils.timezone import now, is_naive, make_aware, localtime
|
|
30 |
from django.utils.timezone import is_naive, localtime, make_aware, now
|
|
31 | 31 |
from django.utils.translation import gettext_noop |
32 | 32 |
from django.utils.translation import ugettext_lazy as _ |
33 | ||
34 | 33 |
from django_filters import rest_framework as filters |
35 | 34 |
from rest_framework import permissions, serializers, status |
36 | 35 |
from rest_framework.exceptions import ValidationError |
37 | 36 |
from rest_framework.generics import ListAPIView |
38 | 37 |
from rest_framework.views import APIView |
39 | 38 | |
40 |
from chrono.api.utils import Response, APIError |
|
41 |
from ..agendas.models import Agenda, Event, Booking, MeetingType, TimePeriodException, Desk, BookingColor |
|
39 |
from chrono.api.utils import APIError, Response |
|
40 | ||
41 |
from ..agendas.models import Agenda, Booking, BookingColor, Desk, Event, MeetingType, TimePeriodException |
|
42 | 42 |
from ..interval import IntervalSet |
43 | 43 | |
44 | 44 |
chrono/interval.py | ||
---|---|---|
14 | 14 |
# You should have received a copy of the GNU Affero General Public License |
15 | 15 |
# along with this program. If not, see <http://www.gnu.org/licenses/>. |
16 | 16 | |
17 |
import collections |
|
18 | 17 |
import bisect |
18 |
import collections |
|
19 | 19 | |
20 | 20 |
Interval = collections.namedtuple('Interval', ['begin', 'end']) |
21 | 21 |
chrono/manager/forms.py | ||
---|---|---|
27 | 27 |
from django.forms import ValidationError |
28 | 28 |
from django.utils.encoding import force_text |
29 | 29 |
from django.utils.six import StringIO |
30 |
from django.utils.timezone import now, make_aware, make_naive
|
|
30 |
from django.utils.timezone import make_aware, make_naive, now
|
|
31 | 31 |
from django.utils.translation import ugettext_lazy as _ |
32 | 32 | |
33 | 33 |
from chrono.agendas.models import ( |
34 |
WEEKDAYS_LIST, |
|
34 | 35 |
AbsenceReason, |
35 | 36 |
Agenda, |
37 |
AgendaNotificationsSettings, |
|
38 |
AgendaReminderSettings, |
|
36 | 39 |
Booking, |
40 |
Desk, |
|
37 | 41 |
Event, |
38 | 42 |
MeetingType, |
43 |
Resource, |
|
39 | 44 |
TimePeriod, |
40 |
Desk, |
|
41 | 45 |
TimePeriodException, |
42 | 46 |
TimePeriodExceptionSource, |
43 |
VirtualMember, |
|
44 |
Resource, |
|
45 |
AgendaNotificationsSettings, |
|
46 |
AgendaReminderSettings, |
|
47 |
WEEKDAYS_LIST, |
|
48 | 47 |
UnavailabilityCalendar, |
48 |
VirtualMember, |
|
49 | 49 |
generate_slug, |
50 | 50 |
) |
51 | 51 |
chrono/manager/views.py | ||
---|---|---|
19 | 19 |
import itertools |
20 | 20 |
import json |
21 | 21 |
import math |
22 |
import requests |
|
23 | 22 |
import uuid |
24 | 23 | |
24 |
import requests |
|
25 | 25 |
from django.contrib import messages |
26 | 26 |
from django.core.exceptions import PermissionDenied |
27 | 27 |
from django.db import transaction |
28 |
from django.db.models import Q, Value, BooleanField |
|
29 |
from django.db.models import Min, Max |
|
28 |
from django.db.models import BooleanField, Max, Min, Q, Value |
|
30 | 29 |
from django.http import Http404, HttpResponse, HttpResponseRedirect |
31 |
from django.shortcuts import get_object_or_404 |
|
32 |
from django.shortcuts import redirect |
|
33 |
from django.shortcuts import render |
|
30 |
from django.shortcuts import get_object_or_404, redirect, render |
|
34 | 31 |
from django.template.defaultfilters import title |
35 | 32 |
from django.template.loader import render_to_string |
36 | 33 |
from django.urls import reverse, reverse_lazy |
37 | 34 |
from django.utils import lorem_ipsum |
38 | 35 |
from django.utils.dates import MONTHS |
36 |
from django.utils.encoding import force_text |
|
39 | 37 |
from django.utils.html import format_html |
40 |
from django.utils.timezone import now, make_aware, make_naive, localtime
|
|
38 |
from django.utils.timezone import localtime, make_aware, make_naive, now
|
|
41 | 39 |
from django.utils.translation import ugettext_lazy as _ |
42 | 40 |
from django.utils.translation import ungettext |
43 |
from django.utils.encoding import force_text |
|
44 | 41 |
from django.views.generic import ( |
45 |
DetailView, |
|
46 | 42 |
CreateView, |
47 |
UpdateView, |
|
48 |
ListView, |
|
43 |
DayArchiveView, |
|
49 | 44 |
DeleteView, |
45 |
DetailView, |
|
50 | 46 |
FormView, |
51 |
TemplateView, |
|
52 |
DayArchiveView, |
|
47 |
ListView, |
|
53 | 48 |
MonthArchiveView, |
54 | 49 |
RedirectView, |
50 |
TemplateView, |
|
51 |
UpdateView, |
|
55 | 52 |
View, |
56 | 53 |
) |
57 | 54 | |
58 | 55 |
from chrono.agendas.models import ( |
56 |
AbsenceReason, |
|
57 |
AbsenceReasonGroup, |
|
59 | 58 |
Agenda, |
59 |
AgendaImportError, |
|
60 |
AgendaNotificationsSettings, |
|
61 |
AgendaReminderSettings, |
|
62 |
Booking, |
|
63 |
BookingColor, |
|
64 |
Category, |
|
65 |
Desk, |
|
60 | 66 |
Event, |
67 |
EventCancellationReport, |
|
68 |
ICSError, |
|
61 | 69 |
MeetingType, |
70 |
Resource, |
|
62 | 71 |
TimePeriod, |
63 |
Booking, |
|
64 |
Desk, |
|
65 | 72 |
TimePeriodException, |
66 |
ICSError, |
|
67 |
AgendaImportError, |
|
68 | 73 |
TimePeriodExceptionSource, |
69 |
VirtualMember, |
|
70 |
Resource, |
|
71 |
Category, |
|
72 |
EventCancellationReport, |
|
73 |
AgendaNotificationsSettings, |
|
74 |
AgendaReminderSettings, |
|
75 | 74 |
UnavailabilityCalendar, |
76 |
BookingColor, |
|
77 |
AbsenceReason, |
|
78 |
AbsenceReasonGroup, |
|
75 |
VirtualMember, |
|
79 | 76 |
) |
80 | 77 | |
81 | 78 |
from .forms import ( |
82 | 79 |
AgendaAddForm, |
83 |
AgendaEditForm, |
|
84 | 80 |
AgendaBookingDelaysForm, |
81 |
AgendaDuplicateForm, |
|
82 |
AgendaEditForm, |
|
83 |
AgendaNotificationsForm, |
|
84 |
AgendaReminderForm, |
|
85 |
AgendaResourceForm, |
|
85 | 86 |
AgendaRolesForm, |
86 |
NewEventForm, |
|
87 |
AgendasExportForm, |
|
88 |
AgendasImportForm, |
|
89 |
BookingAbsenceReasonForm, |
|
90 |
BookingCancelForm, |
|
91 |
DeskForm, |
|
92 |
EventCancelForm, |
|
87 | 93 |
EventForm, |
88 |
NewMeetingTypeForm, |
|
89 |
MeetingTypeForm, |
|
90 |
TimePeriodForm, |
|
94 |
ExceptionsImportForm, |
|
91 | 95 |
ImportEventsForm, |
96 |
MeetingTypeForm, |
|
92 | 97 |
NewDeskForm, |
93 |
DeskForm, |
|
98 |
NewEventForm, |
|
99 |
NewMeetingTypeForm, |
|
94 | 100 |
NewTimePeriodExceptionForm, |
95 |
TimePeriodExceptionForm, |
|
96 |
ExceptionsImportForm, |
|
97 |
AgendasImportForm, |
|
98 | 101 |
TimePeriodAddForm, |
102 |
TimePeriodExceptionForm, |
|
99 | 103 |
TimePeriodExceptionSourceReplaceForm, |
100 |
VirtualMemberForm, |
|
101 |
AgendaResourceForm, |
|
102 |
AgendaDuplicateForm, |
|
103 |
BookingCancelForm, |
|
104 |
EventCancelForm, |
|
105 |
AgendaNotificationsForm, |
|
106 |
AgendaReminderForm, |
|
104 |
TimePeriodForm, |
|
107 | 105 |
UnavailabilityCalendarAddForm, |
108 | 106 |
UnavailabilityCalendarEditForm, |
109 |
AgendasExportForm, |
|
110 |
BookingAbsenceReasonForm, |
|
107 |
VirtualMemberForm, |
|
111 | 108 |
) |
112 |
from .utils import import_site, export_site
|
|
109 |
from .utils import export_site, import_site
|
|
113 | 110 | |
114 | 111 |
FUTURE_BOOKING_ERROR_MSG = _('This cannot be removed as there are bookings for a future date.') |
115 | 112 |
chrono/manager/widgets.py | ||
---|---|---|
16 | 16 | |
17 | 17 | |
18 | 18 |
from django.forms.fields import SplitDateTimeField |
19 |
from django.forms.widgets import TimeInput, SelectMultiple, SplitDateTimeWidget
|
|
19 |
from django.forms.widgets import SelectMultiple, SplitDateTimeWidget, TimeInput
|
|
20 | 20 |
from django.utils.safestring import mark_safe |
21 | 21 | |
22 | 22 |
chrono/settings.py | ||
---|---|---|
24 | 24 |
""" |
25 | 25 | |
26 | 26 |
import os |
27 | ||
27 | 28 |
from django.conf.global_settings import STATICFILES_FINDERS |
28 | 29 | |
29 | 30 |
_ = lambda s: s |
chrono/urls.py | ||
---|---|---|
15 | 15 |
# along with this program. If not, see <http://www.gnu.org/licenses/>. |
16 | 16 | |
17 | 17 |
from django.conf import settings |
18 |
from django.contrib.auth.decorators import login_required |
|
19 | 18 |
from django.conf.urls import include, url |
20 | 19 |
from django.conf.urls.static import static |
20 |
from django.contrib.auth.decorators import login_required |
|
21 | 21 |
from django.contrib.staticfiles.urls import staticfiles_urlpatterns |
22 | 22 | |
23 |
from .urls_utils import decorated_includes |
|
24 | ||
25 |
from .views import homepage, LoginView, LogoutView |
|
26 | 23 |
from .api.urls import urlpatterns as chrono_api_urls |
27 | 24 |
from .manager.urls import urlpatterns as chrono_manager_urls |
28 | ||
25 |
from .urls_utils import decorated_includes |
|
26 |
from .views import LoginView, LogoutView, homepage |
|
29 | 27 | |
30 | 28 |
urlpatterns = [ |
31 | 29 |
url(r'^$', homepage, name='home'), |
chrono/urls_utils.py | ||
---|---|---|
17 | 17 |
# Decorating URL includes, <https://djangosnippets.org/snippets/2532/> |
18 | 18 | |
19 | 19 |
import django |
20 | ||
21 | 20 |
from django.contrib.auth.decorators import user_passes_test |
22 | 21 |
from django.core.exceptions import PermissionDenied |
23 | 22 |
from django.db.models import Q |
chrono/utils/requests_wrapper.py | ||
---|---|---|
17 | 17 |
import hashlib |
18 | 18 |
import logging |
19 | 19 | |
20 |
from requests import Response, Session as RequestsSession |
|
21 |
from requests.auth import AuthBase |
|
22 | ||
23 | 20 |
from django.conf import settings |
24 | 21 |
from django.core.cache import cache |
25 | 22 |
from django.utils.encoding import smart_bytes |
26 | 23 |
from django.utils.http import urlencode |
27 |
from django.utils.six.moves.urllib import parse as urlparse |
|
28 | 24 |
from django.utils.six import BytesIO |
25 |
from django.utils.six.moves.urllib import parse as urlparse |
|
26 |
from requests import Response |
|
27 |
from requests import Session as RequestsSession |
|
28 |
from requests.auth import AuthBase |
|
29 | 29 | |
30 | 30 |
from .signature import sign_url |
31 | 31 |
chrono/utils/signature.py | ||
---|---|---|
16 | 16 | |
17 | 17 |
import base64 |
18 | 18 |
import datetime |
19 |
import hmac |
|
20 | 19 |
import hashlib |
20 |
import hmac |
|
21 | 21 |
import random |
22 | 22 | |
23 | 23 |
from django.conf import settings |
24 |
from django.utils import six |
|
24 | 25 |
from django.utils.encoding import smart_bytes |
25 | 26 |
from django.utils.http import quote, urlencode |
26 |
from django.utils import six |
|
27 | 27 |
from django.utils.six.moves.urllib import parse as urlparse |
28 | 28 | |
29 | ||
30 | 29 |
# Simple signature scheme for query strings |
31 | 30 | |
32 | 31 |
chrono/utils/spooler.py | ||
---|---|---|
16 | 16 |
# along with this program. If not, see <http://www.gnu.org/licenses/>. |
17 | 17 | |
18 | 18 |
from django.db import connection |
19 | ||
20 | 19 |
from uwsgidecorators import spool |
21 | 20 | |
22 | 21 |
from chrono.agendas.models import ICSError, TimePeriodExceptionSource |
chrono/views.py | ||
---|---|---|
23 | 23 |
from django.utils.decorators import method_decorator |
24 | 24 |
from django.views.decorators.cache import never_cache |
25 | 25 | |
26 | ||
27 | 26 |
if 'mellon' in settings.INSTALLED_APPS: |
28 | 27 |
from mellon.utils import get_idps |
29 | 28 |
else: |
setup.py | ||
---|---|---|
6 | 6 |
import re |
7 | 7 |
import subprocess |
8 | 8 |
import sys |
9 | ||
10 |
from setuptools.command.install_lib import install_lib as _install_lib |
|
9 |
from distutils.cmd import Command |
|
11 | 10 |
from distutils.command.build import build as _build |
12 | 11 |
from distutils.command.sdist import sdist |
13 |
from distutils.cmd import Command |
|
14 | 12 |
from distutils.errors import CompileError |
15 | 13 |
from distutils.spawn import find_executable |
16 |
from setuptools import setup, find_packages |
|
14 | ||
15 |
from setuptools import find_packages, setup |
|
16 |
from setuptools.command.install_lib import install_lib as _install_lib |
|
17 | 17 | |
18 | 18 | |
19 | 19 |
class eo_sdist(sdist): |
tests/conftest.py | ||
---|---|---|
1 |
import pytest |
|
2 | ||
3 | 1 |
import django_webtest |
2 |
import pytest |
|
4 | 3 | |
5 | 4 | |
6 | 5 |
@pytest.fixture |
tests/manager/test_absence_reason.py | ||
---|---|---|
5 | 5 |
import pytest |
6 | 6 |
from django.contrib.auth.models import Group, User |
7 | 7 | |
8 |
from chrono.agendas.models import Agenda, AbsenceReason, AbsenceReasonGroup
|
|
8 |
from chrono.agendas.models import AbsenceReason, AbsenceReasonGroup, Agenda
|
|
9 | 9 | |
10 | 10 |
from .test_all import login |
11 | 11 |
tests/manager/test_all.py | ||
---|---|---|
1 | 1 |
# -*- coding: utf-8 -*- |
2 | 2 | |
3 | 3 |
from __future__ import unicode_literals |
4 | ||
4 | 5 |
import copy |
5 | 6 |
import datetime |
6 | 7 |
import json |
7 |
import mock |
|
8 | 8 |
import os |
9 | 9 | |
10 |
from django.contrib.auth.models import User, Group |
|
10 |
import freezegun |
|
11 |
import mock |
|
12 |
import pytest |
|
13 |
import requests |
|
14 |
from django.contrib.auth.models import Group, User |
|
11 | 15 |
from django.core.files.base import ContentFile |
12 | 16 |
from django.core.management import call_command |
13 | 17 |
from django.db import connection |
... | ... | |
15 | 19 |
from django.test.utils import CaptureQueriesContext |
16 | 20 |
from django.urls import reverse |
17 | 21 |
from django.utils.encoding import force_text |
18 |
from django.utils.timezone import make_aware, now, localtime |
|
19 | ||
20 |
import freezegun |
|
21 |
import pytest |
|
22 |
import requests |
|
22 |
from django.utils.timezone import localtime, make_aware, now |
|
23 | 23 |
from webtest import Upload |
24 | 24 | |
25 | 25 |
from chrono.agendas.models import ( |
26 | 26 |
Agenda, |
27 |
AgendaReminderSettings, |
|
27 | 28 |
Booking, |
28 | 29 |
Desk, |
29 | 30 |
Event, |
... | ... | |
32 | 33 |
TimePeriod, |
33 | 34 |
TimePeriodException, |
34 | 35 |
TimePeriodExceptionSource, |
35 |
VirtualMember, |
|
36 |
AgendaReminderSettings, |
|
37 | 36 |
UnavailabilityCalendar, |
37 |
VirtualMember, |
|
38 | 38 |
) |
39 | 39 |
from chrono.manager.forms import TimePeriodExceptionForm |
40 | 40 |
from chrono.utils.signature import check_query |
tests/manager/test_event.py | ||
---|---|---|
15 | 15 |
from django.utils.timezone import localtime, make_aware, now |
16 | 16 |
from webtest import Upload |
17 | 17 | |
18 |
from chrono.agendas.models import Agenda, Booking, Event, AbsenceReasonGroup, AbsenceReason
|
|
18 |
from chrono.agendas.models import AbsenceReason, AbsenceReasonGroup, Agenda, Booking, Event
|
|
19 | 19 | |
20 | 20 |
from .test_all import login |
21 | 21 |
tests/test_agendas.py | ||
---|---|---|
1 |
import pytest |
|
2 | 1 |
import datetime |
3 | 2 |
import json |
4 |
import mock |
|
5 |
import requests |
|
6 | 3 |
import smtplib |
7 | 4 | |
8 | ||
9 |
from django.db.models import Q |
|
5 |
import mock |
|
6 |
import pytest |
|
7 |
import requests |
|
10 | 8 |
from django.contrib.auth.models import Group, User |
11 | 9 |
from django.core.files.base import ContentFile |
12 | 10 |
from django.core.management import call_command |
11 |
from django.db.models import Q |
|
13 | 12 |
from django.test import override_settings |
14 | 13 |
from django.utils.timezone import localtime, make_aware, now |
15 | 14 | |
16 | 15 |
from chrono.agendas.models import ( |
17 | 16 |
Agenda, |
17 |
AgendaNotificationsSettings, |
|
18 |
AgendaReminderSettings, |
|
18 | 19 |
Booking, |
19 | 20 |
Category, |
20 | 21 |
Desk, |
21 | 22 |
Event, |
23 |
EventCancellationReport, |
|
22 | 24 |
ICSError, |
23 | 25 |
MeetingType, |
24 | 26 |
Resource, |
25 | 27 |
TimePeriod, |
26 | 28 |
TimePeriodException, |
27 | 29 |
TimePeriodExceptionSource, |
28 |
VirtualMember, |
|
29 |
EventCancellationReport, |
|
30 |
AgendaNotificationsSettings, |
|
31 |
AgendaReminderSettings, |
|
32 | 30 |
UnavailabilityCalendar, |
31 |
VirtualMember, |
|
33 | 32 |
) |
34 | 33 | |
35 | 34 |
pytestmark = pytest.mark.django_db |
tests/test_api.py | ||
---|---|---|
1 | 1 |
# -*- coding: utf-8 -*- |
2 | 2 | |
3 | 3 |
import datetime |
4 |
import mock |
|
5 | 4 |
import urllib.parse as urlparse |
6 |
import pytest |
|
7 | 5 | |
6 |
import mock |
|
7 |
import pytest |
|
8 | 8 |
from django.contrib.auth import get_user_model |
9 | 9 |
from django.db import connection |
10 | 10 |
from django.test import override_settings |
11 | 11 |
from django.test.utils import CaptureQueriesContext |
12 |
from django.utils.timezone import now, make_aware, localtime
|
|
12 |
from django.utils.timezone import localtime, make_aware, now
|
|
13 | 13 | |
14 | 14 |
from chrono.agendas.models import ( |
15 | 15 |
Agenda, |
16 | 16 |
Booking, |
17 |
BookingColor, |
|
17 | 18 |
Category, |
18 | 19 |
Desk, |
19 | 20 |
Event, |
... | ... | |
23 | 24 |
TimePeriodException, |
24 | 25 |
UnavailabilityCalendar, |
25 | 26 |
VirtualMember, |
26 |
BookingColor, |
|
27 | 27 |
) |
28 | 28 | |
29 | ||
30 | 29 |
pytestmark = pytest.mark.django_db |
31 | 30 | |
32 | 31 |
tests/test_import_export.py | ||
---|---|---|
4 | 4 | |
5 | 5 |
import copy |
6 | 6 |
import datetime |
7 |
from io import StringIO |
|
8 | 7 |
import json |
9 |
import mock |
|
10 | 8 |
import os |
11 | 9 |
import shutil |
12 | 10 |
import sys |
13 | 11 |
import tempfile |
12 |
from io import StringIO |
|
14 | 13 | |
14 |
import mock |
|
15 | 15 |
import pytest |
16 | 16 |
from dateutil.rrule import DAILY |
17 | ||
18 | 17 |
from django.contrib.auth.models import Group |
19 |
from django.core.management import call_command, CommandError
|
|
18 |
from django.core.management import CommandError, call_command
|
|
20 | 19 |
from django.test import override_settings |
21 | 20 |
from django.utils.encoding import force_bytes |
22 | 21 |
from django.utils.timezone import make_aware, now |
23 | 22 | |
24 | 23 |
from chrono.agendas.models import ( |
24 |
AbsenceReasonGroup, |
|
25 | 25 |
Agenda, |
26 |
AgendaImportError, |
|
27 |
AgendaNotificationsSettings, |
|
28 |
AgendaReminderSettings, |
|
26 | 29 |
Category, |
27 | 30 |
Desk, |
28 | 31 |
Event, |
32 |
MeetingType, |
|
29 | 33 |
Resource, |
30 | 34 |
TimePeriod, |
31 | 35 |
TimePeriodException, |
32 | 36 |
TimePeriodExceptionSource, |
33 |
AgendaImportError, |
|
34 |
MeetingType, |
|
35 |
VirtualMember, |
|
36 |
AgendaNotificationsSettings, |
|
37 |
AgendaReminderSettings, |
|
38 | 37 |
UnavailabilityCalendar, |
39 |
AbsenceReasonGroup,
|
|
38 |
VirtualMember,
|
|
40 | 39 |
) |
41 | 40 |
from chrono.manager.utils import import_site |
42 | 41 |
tests/test_metz.py | ||
---|---|---|
1 | 1 |
import pytest |
2 | ||
3 | 2 |
from django.core.management import call_command |
4 | 3 | |
5 | 4 |
tests/test_misc.py | ||
---|---|---|
1 | 1 |
import datetime |
2 | 2 | |
3 |
from django.db import IntegrityError |
|
4 |
from django.db import ProgrammingError |
|
5 |
from django.db import connection |
|
6 |
from django.db import transaction |
|
3 |
import pytest |
|
4 |
from django.db import IntegrityError, ProgrammingError, connection, transaction |
|
7 | 5 |
from django.db.migrations.executor import MigrationExecutor |
8 | 6 |
from django.test import override_settings |
9 | 7 |
from django.utils.timezone import now |
10 | 8 | |
11 | ||
12 |
import pytest |
|
13 | ||
14 |
from chrono.agendas.models import Agenda |
|
15 |
from chrono.agendas.models import Booking |
|
16 |
from chrono.agendas.models import Desk |
|
17 |
from chrono.agendas.models import Event |
|
18 |
from chrono.agendas.models import MeetingType |
|
9 |
from chrono.agendas.models import Agenda, Booking, Desk, Event, MeetingType |
|
19 | 10 | |
20 | 11 |
pytestmark = pytest.mark.django_db |
21 | 12 |
tests/test_requests.py | ||
---|---|---|
2 | 2 | |
3 | 3 |
import mock |
4 | 4 |
import pytest |
5 | ||
6 | 5 |
from django.contrib.auth.models import AnonymousUser |
7 | 6 |
from django.utils.six.moves.urllib import parse as urlparse |
8 | 7 | |
9 |
from chrono.utils.requests_wrapper import requests, NothingInCacheException
|
|
8 |
from chrono.utils.requests_wrapper import NothingInCacheException, requests
|
|
10 | 9 |
from chrono.utils.signature import check_query |
11 | 10 | |
12 | 11 |
tests/test_sso.py | ||
---|---|---|
1 | 1 |
import pytest |
2 | ||
3 | 2 |
from django.test import override_settings |
4 | 3 | |
5 | 4 |
from chrono.wsgi import application |
tests/test_time_periods.py | ||
---|---|---|
1 | 1 |
# -*- coding: utf-8 -*- |
2 | 2 | |
3 | 3 |
import datetime |
4 |
import pytest |
|
5 | 4 | |
5 |
import pytest |
|
6 | 6 |
from django.db.models import Q |
7 | 7 |
from django.test import override_settings |
8 | 8 |
from django.utils.encoding import force_text |
9 | 9 |
from django.utils.timezone import localtime, make_aware |
10 | 10 | |
11 |
from chrono.agendas.models import Agenda, TimePeriod, TimePeriodException, MeetingType, Desk
|
|
11 |
from chrono.agendas.models import Agenda, Desk, MeetingType, TimePeriod, TimePeriodException
|
|
12 | 12 | |
13 | 13 |
pytestmark = pytest.mark.django_db |
14 | 14 | |
15 |
- |