wbintegrator_office365 2.2.1__py2.py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. wbintegrator_office365/__init__.py +1 -0
  2. wbintegrator_office365/admin.py +209 -0
  3. wbintegrator_office365/apps.py +5 -0
  4. wbintegrator_office365/configurations/__init__.py +0 -0
  5. wbintegrator_office365/configurations/configurations/__init__.py +23 -0
  6. wbintegrator_office365/dynamic_preferences_registry.py +15 -0
  7. wbintegrator_office365/factories.py +102 -0
  8. wbintegrator_office365/filters.py +237 -0
  9. wbintegrator_office365/importer/__init__.py +3 -0
  10. wbintegrator_office365/importer/api.py +403 -0
  11. wbintegrator_office365/importer/disable_signals.py +43 -0
  12. wbintegrator_office365/importer/parser.py +135 -0
  13. wbintegrator_office365/kpi_handlers/__init__.py +1 -0
  14. wbintegrator_office365/kpi_handlers/calls.py +114 -0
  15. wbintegrator_office365/migrations/0001_initial_squashed_squashed_0003_alter_calendar_owner_alter_calendarevent_organizer_and_more.py +677 -0
  16. wbintegrator_office365/migrations/0002_remove_calendar_owner_remove_calendarevent_activity_and_more.py +85 -0
  17. wbintegrator_office365/migrations/0003_alter_event_options.py +20 -0
  18. wbintegrator_office365/migrations/__init__.py +0 -0
  19. wbintegrator_office365/models/__init__.py +3 -0
  20. wbintegrator_office365/models/event.py +623 -0
  21. wbintegrator_office365/models/subscription.py +144 -0
  22. wbintegrator_office365/models/tenant.py +62 -0
  23. wbintegrator_office365/serializers.py +266 -0
  24. wbintegrator_office365/tasks.py +108 -0
  25. wbintegrator_office365/tests/__init__.py +0 -0
  26. wbintegrator_office365/tests/conftest.py +28 -0
  27. wbintegrator_office365/tests/test_admin.py +86 -0
  28. wbintegrator_office365/tests/test_models.py +65 -0
  29. wbintegrator_office365/tests/test_tasks.py +318 -0
  30. wbintegrator_office365/tests/test_views.py +128 -0
  31. wbintegrator_office365/tests/tests.py +12 -0
  32. wbintegrator_office365/urls.py +46 -0
  33. wbintegrator_office365/viewsets/__init__.py +31 -0
  34. wbintegrator_office365/viewsets/display.py +306 -0
  35. wbintegrator_office365/viewsets/endpoints.py +52 -0
  36. wbintegrator_office365/viewsets/menu.py +65 -0
  37. wbintegrator_office365/viewsets/titles.py +49 -0
  38. wbintegrator_office365/viewsets/viewsets.py +745 -0
  39. wbintegrator_office365-2.2.1.dist-info/METADATA +10 -0
  40. wbintegrator_office365-2.2.1.dist-info/RECORD +41 -0
  41. wbintegrator_office365-2.2.1.dist-info/WHEEL +5 -0
@@ -0,0 +1,677 @@
1
+ # Generated by Django 4.1.7 on 2023-04-19 05:32
2
+
3
+ import django.contrib.postgres.fields
4
+ import django.core.validators
5
+ import django.db.models.deletion
6
+ from django.db import migrations, models
7
+
8
+
9
+ class Migration(migrations.Migration):
10
+ initial = True
11
+
12
+ dependencies = [
13
+ ("directory", "0001_initial"),
14
+ ("wbcrm", "0001_initial_squashed_squashed_0032_productcompanyrelationship_alter_product_prospects_and_more"),
15
+ ]
16
+
17
+ operations = [
18
+ migrations.CreateModel(
19
+ name="Address",
20
+ fields=[
21
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
22
+ ("type", models.CharField(blank=True, default="", max_length=255, null=True)),
23
+ ("street", models.CharField(blank=True, default="", max_length=255, null=True)),
24
+ ("city", models.CharField(blank=True, default="", max_length=255, null=True)),
25
+ ("state", models.CharField(blank=True, default="", max_length=255, null=True)),
26
+ (
27
+ "country_or_region",
28
+ models.CharField(blank=True, default="", max_length=255, null=True, verbose_name="Country/Region"),
29
+ ),
30
+ ("postal_code", models.CharField(blank=True, default="", max_length=255, null=True)),
31
+ ],
32
+ options={
33
+ "verbose_name": "Address",
34
+ "verbose_name_plural": "Addresses",
35
+ },
36
+ ),
37
+ migrations.CreateModel(
38
+ name="RecurrencePattern",
39
+ fields=[
40
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
41
+ (
42
+ "type",
43
+ models.CharField(blank=True, default="", max_length=255, null=True, verbose_name="Pattern type"),
44
+ ),
45
+ ("interval", models.IntegerField(blank=True, default=0, null=True)),
46
+ (
47
+ "month",
48
+ models.IntegerField(
49
+ blank=True,
50
+ null=True,
51
+ validators=[
52
+ django.core.validators.MinValueValidator(1),
53
+ django.core.validators.MaxValueValidator(12),
54
+ ],
55
+ ),
56
+ ),
57
+ (
58
+ "day_of_month",
59
+ models.IntegerField(
60
+ blank=True,
61
+ null=True,
62
+ validators=[
63
+ django.core.validators.MinValueValidator(1),
64
+ django.core.validators.MaxValueValidator(30),
65
+ ],
66
+ ),
67
+ ),
68
+ (
69
+ "days_of_week",
70
+ django.contrib.postgres.fields.ArrayField(
71
+ base_field=models.CharField(default="", max_length=256), blank=True, null=True, size=None
72
+ ),
73
+ ),
74
+ ("first_day_of_week", models.CharField(blank=True, default="", max_length=255, null=True)),
75
+ (
76
+ "index",
77
+ models.CharField(blank=True, default="", max_length=255, null=True, verbose_name="Pattern index"),
78
+ ),
79
+ ("range_type", models.CharField(blank=True, default="", max_length=255, null=True)),
80
+ ("start_date", models.DateField(blank=True, null=True)),
81
+ ("end_date", models.DateField(blank=True, null=True)),
82
+ ("recurrence_time_zone", models.CharField(blank=True, default="", max_length=255, null=True)),
83
+ ("number_of_occurrences", models.IntegerField(blank=True, default=0, null=True)),
84
+ ],
85
+ options={
86
+ "verbose_name_plural": "Recurrence Patterns",
87
+ "verbose_name": "Recurrence Pattern",
88
+ },
89
+ ),
90
+ migrations.CreateModel(
91
+ name="TenantUser",
92
+ fields=[
93
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
94
+ (
95
+ "tenant_id",
96
+ models.CharField(blank=True, default="", max_length=255, null=True, verbose_name="User tenant ID"),
97
+ ),
98
+ (
99
+ "display_name",
100
+ models.CharField(blank=True, default="", max_length=255, null=True, verbose_name="Display Name"),
101
+ ),
102
+ ("mail", models.CharField(blank=True, default="", max_length=255, null=True)),
103
+ ("phone", models.CharField(blank=True, default="", max_length=255, null=True)),
104
+ (
105
+ "tenant_organization_id",
106
+ models.CharField(blank=True, max_length=255, null=True, verbose_name="Organization tenant ID"),
107
+ ),
108
+ ("enable_synchronization_activity", models.BooleanField(default=False)),
109
+ ("is_internal_organization", models.BooleanField(blank=True, null=True)),
110
+ (
111
+ "profile",
112
+ models.ForeignKey(
113
+ blank=True,
114
+ null=True,
115
+ on_delete=django.db.models.deletion.SET_NULL,
116
+ related_name="tenant_user",
117
+ to="directory.person",
118
+ verbose_name="User",
119
+ ),
120
+ ),
121
+ ],
122
+ options={
123
+ "verbose_name": "Tenant User",
124
+ "verbose_name_plural": "Tenant Users",
125
+ },
126
+ ),
127
+ migrations.CreateModel(
128
+ name="Location",
129
+ fields=[
130
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
131
+ ("unique_id", models.CharField(blank=True, default="", max_length=255, null=True)),
132
+ ("unique_id_type", models.CharField(blank=True, default="", max_length=255, null=True)),
133
+ (
134
+ "display_name",
135
+ models.CharField(blank=True, default="", max_length=255, null=True, verbose_name="Name"),
136
+ ),
137
+ (
138
+ "location_uri",
139
+ models.CharField(blank=True, default="", max_length=255, null=True, verbose_name="Reply URL"),
140
+ ),
141
+ ("type", models.CharField(blank=True, default="", max_length=255, null=True)),
142
+ (
143
+ "address",
144
+ models.ForeignKey(
145
+ blank=True,
146
+ null=True,
147
+ on_delete=django.db.models.deletion.SET_NULL,
148
+ to="wbintegrator_office365.address",
149
+ verbose_name="Address",
150
+ ),
151
+ ),
152
+ ],
153
+ options={
154
+ "verbose_name": "Location Meeting",
155
+ "verbose_name_plural": "Location Meetings",
156
+ },
157
+ ),
158
+ migrations.CreateModel(
159
+ name="CallUser",
160
+ fields=[
161
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
162
+ ("acs_user", models.CharField(blank=True, default="", max_length=256, null=True)),
163
+ ("splool_user", models.CharField(blank=True, default="", max_length=256, null=True)),
164
+ ("encrypted", models.CharField(blank=True, default="", max_length=256, null=True)),
165
+ ("on_premises", models.CharField(blank=True, default="", max_length=256, null=True)),
166
+ ("acs_application_instance", models.CharField(blank=True, default="", max_length=256, null=True)),
167
+ ("spool_application_instance", models.CharField(blank=True, default="", max_length=256, null=True)),
168
+ ("application_instance", models.CharField(blank=True, default="", max_length=256, null=True)),
169
+ ("application", models.CharField(blank=True, default="", max_length=256, null=True)),
170
+ ("device", models.CharField(blank=True, default="", max_length=256, null=True)),
171
+ ("is_guest", models.BooleanField(default=False)),
172
+ ("is_phone", models.BooleanField(default=False)),
173
+ (
174
+ "tenant_user",
175
+ models.ForeignKey(
176
+ blank=True,
177
+ null=True,
178
+ on_delete=django.db.models.deletion.SET_NULL,
179
+ related_name="call_users",
180
+ to="wbintegrator_office365.tenantuser",
181
+ ),
182
+ ),
183
+ ],
184
+ ),
185
+ migrations.CreateModel(
186
+ name="Calendar",
187
+ fields=[
188
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
189
+ ("created", models.DateTimeField(auto_now_add=True, verbose_name="Created")),
190
+ ("last_modified", models.DateTimeField(auto_now=True, verbose_name="Last modified")),
191
+ ("is_removable", models.BooleanField(default=False)),
192
+ ("is_default_calendar", models.BooleanField(default=False)),
193
+ (
194
+ "allowed_online_meeting_providers",
195
+ django.contrib.postgres.fields.ArrayField(
196
+ base_field=models.CharField(max_length=256), blank=True, null=True, size=None
197
+ ),
198
+ ),
199
+ ("calendar_id", models.CharField(max_length=1000, unique=True, verbose_name="Calendar Id")),
200
+ ("can_share", models.BooleanField(default=True)),
201
+ ("can_edit", models.BooleanField(default=True)),
202
+ ("can_view_private_items", models.BooleanField(default=True)),
203
+ ("change_key", models.CharField(blank=True, max_length=255, null=True)),
204
+ ("color", models.CharField(blank=True, max_length=255, null=True)),
205
+ ("default_online_meeting_provider", models.CharField(blank=True, max_length=255, null=True)),
206
+ ("hex_color", models.CharField(blank=True, max_length=255, null=True)),
207
+ ("is_tallying_responses", models.BooleanField(default=True)),
208
+ ("name", models.CharField(blank=True, max_length=255, null=True)),
209
+ (
210
+ "odata_context",
211
+ models.CharField(blank=True, max_length=255, null=True, verbose_name="Odata Context"),
212
+ ),
213
+ ("data", models.JSONField(blank=True, default=dict, null=True)),
214
+ ("is_shared", models.BooleanField(default=True)),
215
+ ("is_shared_with_me", models.BooleanField(default=False)),
216
+ ("is_enable", models.BooleanField(default=True)),
217
+ ("outlook_verification", models.BooleanField(default=False)),
218
+ (
219
+ "owner",
220
+ models.ForeignKey(
221
+ blank=True,
222
+ null=True,
223
+ on_delete=django.db.models.deletion.SET_NULL,
224
+ related_name="office_calendars",
225
+ to="directory.person",
226
+ verbose_name="Owner",
227
+ ),
228
+ ),
229
+ ],
230
+ options={
231
+ "verbose_name": "Calendar",
232
+ "verbose_name_plural": "Calendars",
233
+ },
234
+ ),
235
+ migrations.CreateModel(
236
+ name="Subscription",
237
+ fields=[
238
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
239
+ ("is_enable", models.BooleanField(default=True)),
240
+ ("subscription_id", models.CharField(blank=True, max_length=255, null=True)),
241
+ ("change_type", models.CharField(blank=True, max_length=255, null=True)),
242
+ ("notification_url", models.CharField(blank=True, max_length=255, null=True)),
243
+ ("resource", models.CharField(blank=True, max_length=255, null=True)),
244
+ ("expiration_date", models.DateTimeField(blank=True, null=True, verbose_name="Expiration Date")),
245
+ ("application_id", models.CharField(blank=True, max_length=255, null=True)),
246
+ ("creator_id", models.CharField(blank=True, max_length=255, null=True)),
247
+ ("client_state", models.CharField(blank=True, max_length=255, null=True)),
248
+ ("latest_supported_tls_version", models.CharField(blank=True, max_length=255, null=True)),
249
+ ("notification_content_type", models.CharField(blank=True, max_length=255, null=True)),
250
+ ("odata_context", models.CharField(blank=True, max_length=255, null=True)),
251
+ ("encryption_certificate_id", models.CharField(blank=True, max_length=255, null=True)),
252
+ ("encryption_certificate", models.CharField(blank=True, max_length=255, null=True)),
253
+ ("include_resource_data", models.CharField(blank=True, max_length=255, null=True)),
254
+ ("notification_query_options", models.CharField(blank=True, max_length=255, null=True)),
255
+ (
256
+ "type_resource",
257
+ models.CharField(
258
+ choices=[("CALLRECORD", "Call Record"), ("CALENDAR", "Calendar")],
259
+ default="CALLRECORD",
260
+ max_length=32,
261
+ verbose_name="Type of the resource",
262
+ ),
263
+ ),
264
+ (
265
+ "tenant_user",
266
+ models.ForeignKey(
267
+ blank=True,
268
+ null=True,
269
+ on_delete=django.db.models.deletion.SET_NULL,
270
+ related_name="subscriptions",
271
+ to="wbintegrator_office365.tenantuser",
272
+ verbose_name="Tenant User",
273
+ ),
274
+ ),
275
+ ("created", models.DateTimeField(auto_now_add=True, verbose_name="Created")),
276
+ ],
277
+ options={
278
+ "verbose_name": "Subscription",
279
+ "verbose_name_plural": "Subscriptions",
280
+ },
281
+ ),
282
+ migrations.CreateModel(
283
+ name="Event",
284
+ fields=[
285
+ ("auto_inc_id", models.IntegerField(default=0)),
286
+ ("nb_received", models.IntegerField(default=0)),
287
+ (
288
+ "uuid_event",
289
+ models.CharField(
290
+ blank=True,
291
+ help_text="UUID obtained from Microsoft",
292
+ max_length=1000,
293
+ null=True,
294
+ unique=True,
295
+ verbose_name="Event UID",
296
+ ),
297
+ ),
298
+ (
299
+ "type",
300
+ models.CharField(
301
+ blank=True,
302
+ choices=[("CALLRECORD", "Call Record"), ("CALENDAR", "Calendar")],
303
+ default="",
304
+ max_length=32,
305
+ null=True,
306
+ verbose_name="Type",
307
+ ),
308
+ ),
309
+ (
310
+ "subscription_id",
311
+ models.CharField(
312
+ blank=True, default="", max_length=255, null=True, verbose_name="Subscription ID"
313
+ ),
314
+ ),
315
+ (
316
+ "change_type",
317
+ models.CharField(blank=True, default="", max_length=255, null=True, verbose_name="Change Type"),
318
+ ),
319
+ (
320
+ "resource",
321
+ models.CharField(blank=True, default="", max_length=1000, null=True, verbose_name="Resource"),
322
+ ),
323
+ ("created", models.DateTimeField(auto_now_add=True, verbose_name="Created")),
324
+ ("data", models.JSONField(blank=True, default=dict, null=True)),
325
+ ("changed", models.DateTimeField(auto_now=True, verbose_name="Changed")),
326
+ (
327
+ "tenant_user",
328
+ models.ForeignKey(
329
+ blank=True,
330
+ null=True,
331
+ on_delete=django.db.models.deletion.SET_NULL,
332
+ related_name="tenant_events",
333
+ to="wbintegrator_office365.tenantuser",
334
+ verbose_name="Tenant User",
335
+ ),
336
+ ),
337
+ (
338
+ "id_event",
339
+ models.CharField(
340
+ blank=True,
341
+ help_text="Event ID obtained from Microsoft",
342
+ max_length=1000,
343
+ null=True,
344
+ unique=True,
345
+ verbose_name="Event ID",
346
+ ),
347
+ ),
348
+ ("is_handled", models.BooleanField(default=True)),
349
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
350
+ ],
351
+ options={
352
+ "verbose_name": "Event",
353
+ "verbose_name_plural": "Events",
354
+ "permissions": [("admin_event", "Can administer call and calendar events")],
355
+ },
356
+ ),
357
+ migrations.CreateModel(
358
+ name="CalendarEvent",
359
+ fields=[
360
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
361
+ (
362
+ "odata_context",
363
+ models.CharField(blank=True, max_length=255, null=True, verbose_name="Odata Context"),
364
+ ),
365
+ ("odata_etag", models.CharField(blank=True, max_length=255, null=True, verbose_name="Odata Context")),
366
+ (
367
+ "created_calendar",
368
+ models.DateTimeField(blank=True, null=True, verbose_name="Created in the Calendar"),
369
+ ),
370
+ (
371
+ "last_modified_calendar",
372
+ models.DateTimeField(blank=True, null=True, verbose_name="Last modified in the Calendar"),
373
+ ),
374
+ ("created", models.DateTimeField(auto_now_add=True, verbose_name="Created")),
375
+ ("last_modified", models.DateTimeField(auto_now=True, verbose_name="Last modified")),
376
+ (
377
+ "categories",
378
+ django.contrib.postgres.fields.ArrayField(
379
+ base_field=models.CharField(max_length=256), blank=True, null=True, size=None
380
+ ),
381
+ ),
382
+ ("change_key", models.CharField(blank=True, max_length=255, null=True)),
383
+ ("transaction_id", models.CharField(blank=True, max_length=255, null=True)),
384
+ ("original_start_time_zone", models.CharField(blank=True, max_length=255, null=True)),
385
+ ("original_end_time_zone", models.CharField(blank=True, max_length=255, null=True)),
386
+ ("reminder_minutes_before_start", models.IntegerField(default=15)),
387
+ ("is_reminder_on", models.BooleanField(default=False)),
388
+ ("has_attachments", models.BooleanField(default=False)),
389
+ ("subject", models.CharField(default="(No subject)", max_length=255)),
390
+ ("body_preview", models.TextField(blank=True, default="", null=True)),
391
+ ("importance", models.CharField(blank=True, max_length=255, null=True)),
392
+ ("sensitivity", models.CharField(blank=True, max_length=255, null=True)),
393
+ ("is_all_day", models.BooleanField(default=False)),
394
+ ("is_cancelled", models.BooleanField(default=False)),
395
+ ("is_organizer", models.BooleanField(blank=True, null=True)),
396
+ ("response_requested", models.BooleanField(blank=True, null=True)),
397
+ ("series_master_id", models.CharField(blank=True, max_length=255, null=True)),
398
+ ("show_as", models.CharField(blank=True, max_length=255, null=True)),
399
+ ("type", models.CharField(blank=True, max_length=255, null=True)),
400
+ ("web_link", models.CharField(blank=True, max_length=255, null=True)),
401
+ ("online_meeting_url", models.CharField(blank=True, max_length=255, null=True)),
402
+ ("is_online_meeting", models.BooleanField(blank=True, null=True)),
403
+ ("online_meeting_provider", models.CharField(blank=True, max_length=255, null=True)),
404
+ ("allow_new_time_proposals", models.BooleanField(blank=True, null=True)),
405
+ ("occurrence_id", models.CharField(blank=True, max_length=255, null=True)),
406
+ ("is_draft", models.BooleanField(blank=True, null=True)),
407
+ ("hide_attendees", models.BooleanField(blank=True, null=True)),
408
+ ("response_status", models.CharField(blank=True, max_length=255, null=True)),
409
+ ("body", models.TextField(blank=True, default="", null=True)),
410
+ ("start", models.DateTimeField(blank=True, null=True, verbose_name="Start")),
411
+ ("end", models.DateTimeField(blank=True, null=True, verbose_name="End")),
412
+ (
413
+ "locations",
414
+ django.contrib.postgres.fields.ArrayField(
415
+ base_field=models.CharField(default="", max_length=256), blank=True, null=True, size=None
416
+ ),
417
+ ),
418
+ ("on_line_meeting", models.CharField(blank=True, max_length=255, null=True)),
419
+ ("data", models.JSONField(blank=True, default=dict, null=True)),
420
+ (
421
+ "activity",
422
+ models.OneToOneField(
423
+ blank=True,
424
+ null=True,
425
+ on_delete=django.db.models.deletion.SET_NULL,
426
+ related_name="calendar",
427
+ to="wbcrm.activity",
428
+ verbose_name="Activity",
429
+ ),
430
+ ),
431
+ (
432
+ "calendar",
433
+ models.ForeignKey(
434
+ blank=True,
435
+ null=True,
436
+ on_delete=django.db.models.deletion.CASCADE,
437
+ related_name="calendars",
438
+ to="wbintegrator_office365.calendar",
439
+ verbose_name="Calendar",
440
+ ),
441
+ ),
442
+ (
443
+ "recurrence",
444
+ models.ForeignKey(
445
+ blank=True,
446
+ null=True,
447
+ on_delete=django.db.models.deletion.SET_NULL,
448
+ to="wbintegrator_office365.recurrencepattern",
449
+ verbose_name="Recurrence Pattern",
450
+ ),
451
+ ),
452
+ ("is_enable", models.BooleanField(default=True)),
453
+ ("location", models.CharField(blank=True, max_length=255, null=True)),
454
+ ("outlook_verification", models.BooleanField(default=False)),
455
+ (
456
+ "invitation_event_ids",
457
+ django.contrib.postgres.fields.ArrayField(
458
+ base_field=models.CharField(max_length=1000),
459
+ blank=True,
460
+ default=list,
461
+ help_text="list of invitation IDs received by participants",
462
+ size=None,
463
+ verbose_name="Invitation Event Ids",
464
+ ),
465
+ ),
466
+ (
467
+ "event",
468
+ models.OneToOneField(
469
+ on_delete=django.db.models.deletion.CASCADE,
470
+ related_name="calendars_events",
471
+ to="wbintegrator_office365.event",
472
+ verbose_name="Event",
473
+ ),
474
+ ),
475
+ (
476
+ "organizer",
477
+ models.ForeignKey(
478
+ blank=True,
479
+ null=True,
480
+ on_delete=django.db.models.deletion.SET_NULL,
481
+ related_name="organizer_office_calendar_events",
482
+ to="directory.person",
483
+ verbose_name="Organizer",
484
+ ),
485
+ ),
486
+ (
487
+ "participants",
488
+ models.ManyToManyField(
489
+ blank=True,
490
+ related_name="calendar_events_attendees",
491
+ to="directory.person",
492
+ verbose_name="Participants",
493
+ ),
494
+ ),
495
+ ],
496
+ options={
497
+ "verbose_name": "Calendar Event",
498
+ "verbose_name_plural": "Calendar Events",
499
+ },
500
+ ),
501
+ migrations.CreateModel(
502
+ name="CallEvent",
503
+ fields=[
504
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
505
+ (
506
+ "version",
507
+ models.CharField(blank=True, default="", max_length=256, null=True, verbose_name="Version"),
508
+ ),
509
+ ("type", models.CharField(blank=True, default="", max_length=256, null=True, verbose_name="Type")),
510
+ (
511
+ "modalities",
512
+ django.contrib.postgres.fields.ArrayField(
513
+ base_field=models.CharField(max_length=256),
514
+ blank=True,
515
+ default=list,
516
+ null=True,
517
+ size=None,
518
+ verbose_name="Modalities",
519
+ ),
520
+ ),
521
+ ("last_modified", models.DateTimeField(blank=True, null=True, verbose_name="Last Modified")),
522
+ ("start", models.DateTimeField(blank=True, null=True, verbose_name="Start")),
523
+ ("end", models.DateTimeField(blank=True, null=True, verbose_name="End")),
524
+ (
525
+ "join_web_url",
526
+ models.CharField(blank=True, default="", max_length=256, null=True, verbose_name="Join Web Url"),
527
+ ),
528
+ ("created", models.DateTimeField(auto_now_add=True, verbose_name="Created")),
529
+ (
530
+ "activity",
531
+ models.OneToOneField(
532
+ blank=True,
533
+ null=True,
534
+ on_delete=django.db.models.deletion.SET_NULL,
535
+ related_name="call_event",
536
+ to="wbcrm.activity",
537
+ verbose_name="Activity",
538
+ ),
539
+ ),
540
+ (
541
+ "organizer",
542
+ models.ForeignKey(
543
+ blank=True,
544
+ null=True,
545
+ on_delete=django.db.models.deletion.SET_NULL,
546
+ to="wbintegrator_office365.calluser",
547
+ verbose_name="Organizer",
548
+ ),
549
+ ),
550
+ (
551
+ "participants",
552
+ models.ManyToManyField(
553
+ blank=True,
554
+ related_name="participates",
555
+ to="wbintegrator_office365.calluser",
556
+ verbose_name="Call participants",
557
+ ),
558
+ ),
559
+ ("is_internal_call", models.BooleanField(blank=True, null=True, verbose_name="Is internal call")),
560
+ ("data", models.JSONField(blank=True, default=dict, null=True)),
561
+ (
562
+ "event",
563
+ models.OneToOneField(
564
+ on_delete=django.db.models.deletion.CASCADE,
565
+ related_name="calls",
566
+ to="wbintegrator_office365.event",
567
+ ),
568
+ ),
569
+ ],
570
+ options={
571
+ "verbose_name": "Call Event",
572
+ "verbose_name_plural": "Calls Events",
573
+ },
574
+ ),
575
+ migrations.CreateModel(
576
+ name="EventLog",
577
+ fields=[
578
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
579
+ ("order_received", models.IntegerField(default=0)),
580
+ (
581
+ "change_type",
582
+ models.CharField(blank=True, default="", max_length=255, null=True, verbose_name="Change Type"),
583
+ ),
584
+ ("created", models.DateTimeField(auto_now_add=True, verbose_name="Created")),
585
+ ("changed", models.DateTimeField(auto_now=True, verbose_name="Changed")),
586
+ ("data", models.JSONField(blank=True, default=dict, null=True)),
587
+ ("id_event", models.CharField(blank=True, max_length=1000, null=True, verbose_name="Event ID")),
588
+ (
589
+ "resource",
590
+ models.CharField(blank=True, default="", max_length=1000, null=True, verbose_name="Resource"),
591
+ ),
592
+ ("is_handled", models.BooleanField(default=True)),
593
+ (
594
+ "last_event",
595
+ models.ForeignKey(
596
+ on_delete=django.db.models.deletion.CASCADE,
597
+ related_name="event_logs",
598
+ to="wbintegrator_office365.event",
599
+ verbose_name="Last Event",
600
+ ),
601
+ ),
602
+ ],
603
+ options={
604
+ "verbose_name": "Event Log",
605
+ "verbose_name_plural": "Event Logs",
606
+ },
607
+ ),
608
+ migrations.CreateModel(
609
+ name="CalendarEventInstance",
610
+ fields=[
611
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
612
+ ("instance_id", models.CharField(max_length=1000, unique=True, verbose_name="Calendar Event Id")),
613
+ ("start", models.DateTimeField(blank=True, null=True, verbose_name="Start")),
614
+ ("end", models.DateTimeField(blank=True, null=True, verbose_name="End")),
615
+ ("subject", models.CharField(default="(No subject)", max_length=255)),
616
+ ("body", models.TextField(blank=True, default="", null=True)),
617
+ ("body_preview", models.TextField(blank=True, default="", null=True)),
618
+ ("created", models.DateTimeField(auto_now_add=True, verbose_name="Created")),
619
+ ("last_modified", models.DateTimeField(auto_now=True, verbose_name="Last modified")),
620
+ (
621
+ "activity",
622
+ models.OneToOneField(
623
+ blank=True,
624
+ null=True,
625
+ on_delete=django.db.models.deletion.SET_NULL,
626
+ related_name="calendar_event_instance",
627
+ to="wbcrm.activity",
628
+ verbose_name="Activity",
629
+ ),
630
+ ),
631
+ (
632
+ "calendar_event",
633
+ models.ForeignKey(
634
+ blank=True,
635
+ null=True,
636
+ on_delete=django.db.models.deletion.SET_NULL,
637
+ related_name="instances",
638
+ to="wbintegrator_office365.calendarevent",
639
+ verbose_name="Calendar Event",
640
+ ),
641
+ ),
642
+ (
643
+ "created_calendar",
644
+ models.DateTimeField(blank=True, null=True, verbose_name="Created in the Calendar"),
645
+ ),
646
+ ("is_enable", models.BooleanField(default=True)),
647
+ (
648
+ "last_modified_calendar",
649
+ models.DateTimeField(blank=True, null=True, verbose_name="Last modified in the Calendar"),
650
+ ),
651
+ (
652
+ "organizer",
653
+ models.ForeignKey(
654
+ blank=True,
655
+ null=True,
656
+ on_delete=django.db.models.deletion.SET_NULL,
657
+ related_name="organizer_office_calendar_event_instances",
658
+ to="directory.person",
659
+ verbose_name="Organizer",
660
+ ),
661
+ ),
662
+ (
663
+ "participants",
664
+ models.ManyToManyField(
665
+ blank=True,
666
+ related_name="calendar_events_instance_attendees",
667
+ to="directory.person",
668
+ verbose_name="Participants",
669
+ ),
670
+ ),
671
+ ],
672
+ options={
673
+ "verbose_name": "Calendar Event Instance",
674
+ "verbose_name_plural": "Calendar Event Instances",
675
+ },
676
+ ),
677
+ ]