zou 0.19.69__py3-none-any.whl → 0.19.71__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. zou/__init__.py +1 -1
  2. zou/app/__init__.py +1 -1
  3. zou/app/blueprints/auth/resources.py +19 -15
  4. zou/app/blueprints/breakdown/resources.py +4 -4
  5. zou/app/blueprints/crud/base.py +4 -1
  6. zou/app/blueprints/crud/comments.py +0 -13
  7. zou/app/blueprints/crud/event.py +1 -1
  8. zou/app/blueprints/crud/metadata_descriptor.py +9 -9
  9. zou/app/blueprints/crud/organisation.py +16 -1
  10. zou/app/blueprints/events/resources.py +8 -8
  11. zou/app/blueprints/export/csv/assets.py +15 -6
  12. zou/app/blueprints/export/csv/edits.py +15 -5
  13. zou/app/blueprints/export/csv/shots.py +15 -5
  14. zou/app/blueprints/index/resources.py +2 -0
  15. zou/app/blueprints/news/resources.py +6 -6
  16. zou/app/blueprints/source/csv/assets.py +10 -3
  17. zou/app/blueprints/source/csv/base.py +1 -1
  18. zou/app/blueprints/source/csv/edits.py +10 -3
  19. zou/app/blueprints/source/csv/shots.py +10 -3
  20. zou/app/blueprints/tasks/resources.py +7 -1
  21. zou/app/models/organisation.py +11 -19
  22. zou/app/models/serializer.py +17 -17
  23. zou/app/services/events_service.py +4 -4
  24. zou/app/services/news_service.py +8 -8
  25. zou/app/services/persons_service.py +5 -4
  26. zou/app/services/projects_service.py +1 -1
  27. zou/app/services/shots_service.py +1 -1
  28. zou/app/services/sync_service.py +4 -4
  29. zou/app/services/tasks_service.py +4 -2
  30. zou/app/services/user_service.py +21 -36
  31. zou/app/utils/commands.py +4 -4
  32. zou/app/utils/csv_utils.py +1 -4
  33. zou/cli.py +4 -4
  34. zou/remote/config_payload.py +2 -1
  35. {zou-0.19.69.dist-info → zou-0.19.71.dist-info}/METADATA +6 -6
  36. {zou-0.19.69.dist-info → zou-0.19.71.dist-info}/RECORD +40 -40
  37. {zou-0.19.69.dist-info → zou-0.19.71.dist-info}/LICENSE +0 -0
  38. {zou-0.19.69.dist-info → zou-0.19.71.dist-info}/WHEEL +0 -0
  39. {zou-0.19.69.dist-info → zou-0.19.71.dist-info}/entry_points.txt +0 -0
  40. {zou-0.19.69.dist-info → zou-0.19.71.dist-info}/top_level.txt +0 -0
@@ -7,7 +7,7 @@ from sqlalchemy import func
7
7
  def get_last_events(
8
8
  after=None,
9
9
  before=None,
10
- page_size=100,
10
+ limit=100,
11
11
  only_files=False,
12
12
  project_id=None,
13
13
  name=None,
@@ -46,7 +46,7 @@ def get_last_events(
46
46
  if name is not None:
47
47
  query = query.filter(ApiEvent.name == name)
48
48
 
49
- events = query.limit(page_size).all()
49
+ events = query.limit(limit).all()
50
50
  return [
51
51
  fields.serialize_dict(
52
52
  {
@@ -71,7 +71,7 @@ def create_login_log(person_id, ip_address, origin):
71
71
  return login_log.serialize()
72
72
 
73
73
 
74
- def get_last_login_logs(before=None, page_size=100):
74
+ def get_last_login_logs(before=None, limit=100):
75
75
  """
76
76
  Return last 100 login logs published. If before parameter is set, it returns
77
77
  last 100 login logs before this date.
@@ -85,7 +85,7 @@ def get_last_login_logs(before=None, page_size=100):
85
85
  LoginLog.created_at < func.cast(before, LoginLog.created_at.type)
86
86
  )
87
87
 
88
- login_logs = query.limit(page_size).all()
88
+ login_logs = query.limit(limit).all()
89
89
  return [
90
90
  {
91
91
  "created_at": fields.serialize_value(created_at),
@@ -92,7 +92,7 @@ def get_last_news_for_project(
92
92
  task_status_id=None,
93
93
  author_id=None,
94
94
  page=1,
95
- page_size=50,
95
+ limit=50,
96
96
  before=None,
97
97
  after=None,
98
98
  episode_id=None,
@@ -102,7 +102,7 @@ def get_last_news_for_project(
102
102
  Return last 50 news for given project. Add related information to make it
103
103
  displayable.
104
104
  """
105
- offset = (page - 1) * page_size
105
+ offset = (page - 1) * limit
106
106
 
107
107
  query = (
108
108
  News.query.order_by(News.created_at.desc())
@@ -158,7 +158,7 @@ def get_last_news_for_project(
158
158
  News.created_at < func.cast(before, News.created_at.type)
159
159
  )
160
160
 
161
- (total, nb_pages) = _get_news_total(query, page_size)
161
+ (total, nb_pages) = _get_news_total(query, limit)
162
162
 
163
163
  query = query.add_columns(
164
164
  Project.id,
@@ -172,7 +172,7 @@ def get_last_news_for_project(
172
172
  Entity.preview_file_id,
173
173
  )
174
174
 
175
- query = query.limit(page_size)
175
+ query = query.limit(limit)
176
176
  query = query.offset(offset)
177
177
  news_list = query.all()
178
178
  result = []
@@ -221,15 +221,15 @@ def get_last_news_for_project(
221
221
  "data": result,
222
222
  "total": total,
223
223
  "nb_pages": nb_pages,
224
- "limit": page_size,
224
+ "limit": limit,
225
225
  "offset": offset,
226
226
  "page": page,
227
227
  }
228
228
 
229
229
 
230
- def _get_news_total(query, page_size):
230
+ def _get_news_total(query, limit):
231
231
  total = query.count()
232
- nb_pages = int(math.ceil(total / float(page_size)))
232
+ nb_pages = int(math.ceil(total / float(limit)))
233
233
  return total, nb_pages
234
234
 
235
235
 
@@ -314,4 +314,4 @@ def get_news_for_entity(entity_id):
314
314
  """
315
315
  Get all news related to a given entity.
316
316
  """
317
- return get_last_news_for_project(entity_id=entity_id, page_size=2000)
317
+ return get_last_news_for_project(entity_id=entity_id, limit=2000)
@@ -36,8 +36,9 @@ def clear_person_cache():
36
36
  cache.cache.delete_memoized(get_persons)
37
37
 
38
38
 
39
- def clear_oranisation_cache():
39
+ def clear_organisation_cache():
40
40
  cache.cache.delete_memoized(get_organisation)
41
+ cache.cache.delete_memoized(get_organisation, True)
41
42
 
42
43
 
43
44
  @cache.memoize_function(120)
@@ -484,14 +485,14 @@ Thank you and see you soon on Kitsu,
484
485
 
485
486
 
486
487
  @cache.memoize_function(120)
487
- def get_organisation():
488
+ def get_organisation(sensitive=False):
488
489
  """
489
490
  Return organisation set up on this instance. It creates it if none exists.
490
491
  """
491
492
  organisation = Organisation.query.first()
492
493
  if organisation is None:
493
494
  organisation = Organisation.create(name="Kitsu")
494
- return organisation.present()
495
+ return organisation.present(sensitive=sensitive)
495
496
 
496
497
 
497
498
  def update_organisation(organisation_id, data):
@@ -501,7 +502,7 @@ def update_organisation(organisation_id, data):
501
502
  organisation = Organisation.get(organisation_id)
502
503
  organisation.update(data)
503
504
  events.emit("organisation:update", {"organisation_id": organisation_id})
504
- clear_oranisation_cache()
505
+ clear_organisation_cache()
505
506
  return organisation.present()
506
507
 
507
508
 
@@ -678,7 +678,7 @@ def get_project_fps(project_id):
678
678
  Return fps set at project level or default fps if it not set.
679
679
  """
680
680
  project = get_project(project_id)
681
- return float(project["fps"] or "24.00")
681
+ return float(project["fps"] or "25.00")
682
682
 
683
683
 
684
684
  def get_task_type_priority_map(project_id, for_entity="Asset"):
@@ -1663,7 +1663,7 @@ def set_frames_from_task_type_preview_files(
1663
1663
  project = projects_service.get_project(project_id)
1664
1664
  updates = []
1665
1665
  for shot, preview_duration in results:
1666
- nb_frames = round(preview_duration * int(project["fps"]))
1666
+ nb_frames = round(preview_duration * float(project["fps"]))
1667
1667
  updates.append(
1668
1668
  {
1669
1669
  "id": shot.id,
@@ -323,12 +323,12 @@ def run_other_sync(project=None, with_events=False):
323
323
  sync_entries("events", ApiEvent, project=project)
324
324
 
325
325
 
326
- def run_last_events_sync(minutes=0, page_size=300):
326
+ def run_last_events_sync(minutes=0, limit=300):
327
327
  """
328
328
  Retrieve last events from source instance and import related data and
329
329
  action.
330
330
  """
331
- path = "events/last?page_size=%s" % page_size
331
+ path = "events/last?limit=%s" % limit
332
332
  if minutes > 0:
333
333
  now = date_helpers.get_utc_now_datetime()
334
334
  min_before = now - datetime.timedelta(minutes=minutes)
@@ -346,12 +346,12 @@ def run_last_events_sync(minutes=0, page_size=300):
346
346
  pass
347
347
 
348
348
 
349
- def run_last_events_files(minutes=0, page_size=50):
349
+ def run_last_events_files(minutes=0, limit=50):
350
350
  """
351
351
  Retrieve last events from source instance and import related data and
352
352
  action.
353
353
  """
354
- path = "events/last?only_files=true&page_size=%s" % page_size
354
+ path = "events/last?only_files=true&limit=%s" % limit
355
355
  if minutes > 0:
356
356
  now = date_helpers.get_utc_now_datetime()
357
357
  min_before = now - datetime.timedelta(minutes=minutes)
@@ -1659,7 +1659,7 @@ def update_preview_file_info(preview_file):
1659
1659
  return entity
1660
1660
 
1661
1661
 
1662
- def get_comments_for_project(project_id, page=0):
1662
+ def get_comments_for_project(project_id, page=0, limit=None):
1663
1663
  """
1664
1664
  Return all comments for given project.
1665
1665
  """
@@ -1668,7 +1668,9 @@ def get_comments_for_project(project_id, page=0):
1668
1668
  .filter(Task.project_id == project_id)
1669
1669
  .order_by(Comment.updated_at.desc())
1670
1670
  )
1671
- return query_utils.get_paginated_results(query, page, relations=True)
1671
+ return query_utils.get_paginated_results(
1672
+ query, page, limit, relations=True
1673
+ )
1672
1674
 
1673
1675
 
1674
1676
  def get_time_spents_for_project(project_id, page=0):
@@ -1559,40 +1559,25 @@ def get_timezone():
1559
1559
 
1560
1560
 
1561
1561
  def get_context():
1562
- if permissions.has_admin_permissions():
1563
- projects = projects_service.open_projects()
1564
- else:
1565
- projects = get_open_projects()
1566
-
1567
- asset_types = assets_service.get_asset_types()
1568
- custom_actions = custom_actions_service.get_custom_actions()
1569
- status_automations = status_automations_service.get_status_automations()
1570
- persons = persons_service.get_persons(
1571
- minimal=not permissions.has_manager_permissions()
1572
- )
1573
- notification_count = get_unread_notifications_count()
1574
- project_status_list = projects_service.get_project_statuses()
1575
- departments = tasks_service.get_departments()
1576
- studios = tasks_service.get_studios()
1577
- task_types = tasks_service.get_task_types()
1578
- task_status_list = tasks_service.get_task_statuses()
1579
- search_filters = get_filters()
1580
- search_filter_groups = get_filter_groups()
1581
- preview_background_files = files_service.get_preview_background_files()
1582
-
1583
- return {
1584
- "asset_types": asset_types,
1585
- "custom_actions": custom_actions,
1586
- "status_automations": status_automations,
1587
- "departments": departments,
1588
- "studios": studios,
1589
- "notification_count": notification_count,
1590
- "persons": persons,
1591
- "project_status": project_status_list,
1592
- "projects": projects,
1593
- "task_types": task_types,
1594
- "task_status": task_status_list,
1595
- "search_filters": search_filters,
1596
- "search_filter_groups": search_filter_groups,
1597
- "preview_background_files": preview_background_files,
1562
+ context = {
1563
+ "asset_types": assets_service.get_asset_types(),
1564
+ "custom_actions": custom_actions_service.get_custom_actions(),
1565
+ "status_automations": status_automations_service.get_status_automations(),
1566
+ "departments": tasks_service.get_departments(),
1567
+ "studios": tasks_service.get_studios(),
1568
+ "notification_count": get_unread_notifications_count(),
1569
+ "persons": persons_service.get_persons(
1570
+ minimal=not permissions.has_manager_permissions()
1571
+ ),
1572
+ "project_status": projects_service.get_project_statuses(),
1573
+ "projects": get_open_projects(),
1574
+ "task_types": tasks_service.get_task_types(),
1575
+ "task_status": tasks_service.get_task_statuses(),
1576
+ "search_filters": get_filters(),
1577
+ "search_filter_groups": get_filter_groups(),
1578
+ "preview_background_files": files_service.get_preview_background_files(),
1598
1579
  }
1580
+
1581
+ if permissions.has_admin_permissions():
1582
+ context["user_limit"] = config.USER_LIMIT
1583
+ return context
zou/app/utils/commands.py CHANGED
@@ -538,7 +538,7 @@ def run_sync_file_change_daemon(
538
538
 
539
539
 
540
540
  def import_last_changes_from_another_instance(
541
- source, login, password, minutes=0, page_size=300
541
+ source, login, password, minutes=0, limit=300
542
542
  ):
543
543
  """
544
544
  Retrieve and save all the data related to most recent events from another
@@ -547,12 +547,12 @@ def import_last_changes_from_another_instance(
547
547
  with app.app_context():
548
548
  sync_service.init(source, login, password)
549
549
  print("Last events syncing started.")
550
- sync_service.run_last_events_sync(minutes=minutes, page_size=300)
550
+ sync_service.run_last_events_sync(minutes=minutes, limit=300)
551
551
  print("Last events syncing ended.")
552
552
 
553
553
 
554
554
  def import_last_file_changes_from_another_instance(
555
- source, login, password, minutes=20, page_size=50, force=False
555
+ source, login, password, minutes=20, limit=50, force=False
556
556
  ):
557
557
  """
558
558
  Retrieve and save all the data related most to recent file events
@@ -562,7 +562,7 @@ def import_last_file_changes_from_another_instance(
562
562
  with app.app_context():
563
563
  sync_service.init(source, login, password)
564
564
  print("Last files syncing started.")
565
- sync_service.run_last_events_files(minutes=minutes, page_size=50)
565
+ sync_service.run_last_events_files(minutes=minutes, limit=50)
566
566
  print("Last files syncing ended.")
567
567
 
568
568
 
@@ -1,9 +1,6 @@
1
- try:
2
- from StringIO import StringIO
3
- except ImportError:
4
- from io import StringIO
5
1
  import csv
6
2
 
3
+ from io import StringIO
7
4
  from flask import make_response
8
5
  from slugify import slugify
9
6
 
zou/cli.py CHANGED
@@ -421,7 +421,7 @@ def sync_file_changes(event_source, source, logs_directory):
421
421
  @click.option("--source", default="http://localhost:8080/api")
422
422
  @click.option("--minutes", default=0)
423
423
  @click.option("--page-size", default=300)
424
- def sync_last_events(source, minutes, page_size):
424
+ def sync_last_events(source, minutes, limit):
425
425
  """
426
426
  Retrieve last events that occured on source instance and import data related
427
427
  to them. It expects that credentials to connect to source instance are
@@ -430,7 +430,7 @@ def sync_last_events(source, minutes, page_size):
430
430
  login = os.getenv("SYNC_LOGIN")
431
431
  password = os.getenv("SYNC_PASSWORD")
432
432
  commands.import_last_changes_from_another_instance(
433
- source, login, password, minutes=minutes, page_size=page_size
433
+ source, login, password, minutes=minutes, limit=limit
434
434
  )
435
435
 
436
436
 
@@ -438,7 +438,7 @@ def sync_last_events(source, minutes, page_size):
438
438
  @click.option("--source", default="http://localhost:8080/api")
439
439
  @click.option("--minutes", default=20)
440
440
  @click.option("--page-size", default=50)
441
- def sync_last_files(source, minutes, page_size):
441
+ def sync_last_files(source, minutes, limit):
442
442
  """
443
443
  Retrieve last preview files and thumbnails uploaded on source instance.
444
444
  It expects that credentials to connect to source instance are
@@ -447,7 +447,7 @@ def sync_last_files(source, minutes, page_size):
447
447
  login = os.getenv("SYNC_LOGIN")
448
448
  password = os.getenv("SYNC_PASSWORD")
449
449
  commands.import_last_file_changes_from_another_instance(
450
- source, login, password, minutes=minutes, page_size=page_size
450
+ source, login, password, minutes=minutes, limit=limit
451
451
  )
452
452
 
453
453
 
@@ -67,7 +67,8 @@ def get_file_from_storage(storage, output_file_path, filename):
67
67
  or os.path.getsize(output_file_path) == 0
68
68
  ):
69
69
  with open(output_file_path, "wb") as output_file:
70
- output_file.write(storage.read(filename))
70
+ for chunk in storage.read_chunks(filename):
71
+ output_file.write(chunk)
71
72
  return output_file_path
72
73
 
73
74
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: zou
3
- Version: 0.19.69
3
+ Version: 0.19.71
4
4
  Summary: API to store and manage the data of your animation production
5
5
  Home-page: https://zou.cg-wire.com
6
6
  Author: CG Wire
@@ -50,9 +50,9 @@ Requires-Dist: itsdangerous==2.2.0
50
50
  Requires-Dist: Jinja2==3.1.4
51
51
  Requires-Dist: ldap3==2.9.1
52
52
  Requires-Dist: matterhook==0.2
53
- Requires-Dist: meilisearch==0.32.0
53
+ Requires-Dist: meilisearch==0.33.0
54
54
  Requires-Dist: numpy==2.0.1; python_version == "3.9"
55
- Requires-Dist: numpy==2.1.3; python_version >= "3.10"
55
+ Requires-Dist: numpy==2.2.0; python_version >= "3.10"
56
56
  Requires-Dist: opencv-python==4.10.0.84
57
57
  Requires-Dist: OpenTimelineIO==0.17.0
58
58
  Requires-Dist: OpenTimelineIO-Plugins==0.17.0
@@ -66,7 +66,7 @@ Requires-Dist: python-nomad==2.0.1
66
66
  Requires-Dist: python-slugify==8.0.4
67
67
  Requires-Dist: python-socketio==5.11.4
68
68
  Requires-Dist: pytz==2024.2
69
- Requires-Dist: redis==5.2.0
69
+ Requires-Dist: redis==5.2.1
70
70
  Requires-Dist: requests==2.32.3
71
71
  Requires-Dist: rq==2.0.0
72
72
  Requires-Dist: slackclient==2.9.4
@@ -83,11 +83,11 @@ Provides-Extra: test
83
83
  Requires-Dist: fakeredis==2.26.1; extra == "test"
84
84
  Requires-Dist: mixer==7.2.2; extra == "test"
85
85
  Requires-Dist: pytest-cov==6.0.0; extra == "test"
86
- Requires-Dist: pytest==8.3.3; extra == "test"
86
+ Requires-Dist: pytest==8.3.4; extra == "test"
87
87
  Provides-Extra: monitoring
88
88
  Requires-Dist: prometheus-flask-exporter==0.23.1; extra == "monitoring"
89
89
  Requires-Dist: pygelf==0.4.2; extra == "monitoring"
90
- Requires-Dist: sentry-sdk==2.19.0; extra == "monitoring"
90
+ Requires-Dist: sentry-sdk==2.19.2; extra == "monitoring"
91
91
  Provides-Extra: lint
92
92
  Requires-Dist: autoflake==2.3.1; extra == "lint"
93
93
  Requires-Dist: black==24.10.0; extra == "lint"
@@ -1,9 +1,9 @@
1
- zou/__init__.py,sha256=8Ij1WPLJLGDYnhtjZjijvveSxezbT7WPButvFUQzE2k,24
2
- zou/cli.py,sha256=E7rinikQMEAoSzyV4VH2IrTR4HRDBgqHAcYswEfyFnU,18893
1
+ zou/__init__.py,sha256=R3OHsUBb5C2Pkd3yOg6OtKCQ_3ExctPeL6uO4lnJyfw,24
2
+ zou/cli.py,sha256=H18Wg-wqQOsv4F5_bZRDlxskjO-TRwaV1NmQMTH9mdg,18869
3
3
  zou/debug.py,sha256=1fawPbkD4wn0Y9Gk0BiBFSa-CQe5agFi8R9uJYl2Uyk,520
4
4
  zou/event_stream.py,sha256=_tue9Ry3aqCniZpKGhWJaY1Eo_fd6zOAfnzPvh_mJzU,8489
5
5
  zou/job_settings.py,sha256=_aqBhujt2Q8sXRWIbgbDf-LUdXRdBimdtTc-fZbiXoY,202
6
- zou/app/__init__.py,sha256=AJEGrLTirr5zZmA8DVSjZedtTuDg6eg9rG4kXMimPnQ,6966
6
+ zou/app/__init__.py,sha256=7pRqdA79X-UI_kYt8Sz6lIdleNStBxHnXISr-tePVe8,6962
7
7
  zou/app/api.py,sha256=JTB_IMVO8EOoyqx9KdRkiIix0chOLi0yGDY-verUJXA,5127
8
8
  zou/app/config.py,sha256=kYbcTVFgcl2sGtf-cpOOVu3_fVh2P1fLcceLjCvsIfc,6700
9
9
  zou/app/mixin.py,sha256=eYwfS_CUFvNmldaQXrjsN5mK_gX0wYrBFykfx60uUM8,4897
@@ -12,9 +12,9 @@ zou/app/blueprints/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuF
12
12
  zou/app/blueprints/assets/__init__.py,sha256=T2zhDagHjXF6jRwOQ8vqokZTkBHyY7XtTI0Rlooamjs,2931
13
13
  zou/app/blueprints/assets/resources.py,sha256=ff7g8_FzZC6dLvMxcYYffsIOy0CqKqdkZibGm2-qgko,25599
14
14
  zou/app/blueprints/auth/__init__.py,sha256=xP874bMWUnLIirOPSEbpe-Q2fBBQrxZGKd0tLZmNJXk,1128
15
- zou/app/blueprints/auth/resources.py,sha256=sTngRcDn_FAROjlZKMq03YjQpbT82QE3cByX8r8vlK4,45553
15
+ zou/app/blueprints/auth/resources.py,sha256=YIhdEVK9WQ7fCYtknwh3dR3TdSdURRm7rBpDxpNSGK0,45608
16
16
  zou/app/blueprints/breakdown/__init__.py,sha256=Dp6GWSGxxWIedpyzTTEKpCRUYEo8oVNVyQhwNvTMmQM,1888
17
- zou/app/blueprints/breakdown/resources.py,sha256=JY3j17kv7xPKV9S-XoOxNYivpGHlfZkXI5WuGtx3_Yk,13591
17
+ zou/app/blueprints/breakdown/resources.py,sha256=pmGlHLiXFsPRbxf403SiVgGiaBbtK8G_tfYbXSkJtAU,13593
18
18
  zou/app/blueprints/chats/__init__.py,sha256=YGmwGvddg3MgSYVIh-hmkX8t2em9_LblxBeJzFqFJD4,558
19
19
  zou/app/blueprints/chats/resources.py,sha256=4yLFermdwOsnBLs9nx8yxuHWLar24uQWQy0XgsUNDD0,5950
20
20
  zou/app/blueprints/comments/__init__.py,sha256=WqpJ7-_dK1cInGTFJAxQ7syZtPCotwq2oO20UEnk1h4,1532
@@ -24,23 +24,23 @@ zou/app/blueprints/concepts/resources.py,sha256=maJNrBAWX0bKbDKtOZc3YFp4nTVtIdkk
24
24
  zou/app/blueprints/crud/__init__.py,sha256=qn7xkEh2EG0mPS_RBmm0GgYr0O1jnmI8ymXZnFWZCz8,8361
25
25
  zou/app/blueprints/crud/asset_instance.py,sha256=va3mw79aPKry2m9PYAmjVePTScigewDjwD1c672f0y0,1335
26
26
  zou/app/blueprints/crud/attachment_file.py,sha256=FJA5nKli-9l4p-Mka-tNRNRFil6dNC7QMN3N2MBBN_w,1346
27
- zou/app/blueprints/crud/base.py,sha256=zg15pERttH7H_tHTq_eMonlaIFwe4vu9H0oFhyoJLpg,15785
27
+ zou/app/blueprints/crud/base.py,sha256=HJcZKeNe3RVe_qEC9bSlpz4FRKhqavzrsfFLSZ8OmoY,15907
28
28
  zou/app/blueprints/crud/chat.py,sha256=Sq1r0y9ANjS113PUpwgAhnjYsxxLKMCM-a7DJ_icF00,344
29
29
  zou/app/blueprints/crud/chat_message.py,sha256=bEEUoV0sNzu5sntNS6fpLh5NC6wWiycWCXtTE-t4yG4,387
30
- zou/app/blueprints/crud/comments.py,sha256=jEu2x_n6anSplONyOCTRxqPHrw6cJG7FN4Emj7ZB65k,8228
30
+ zou/app/blueprints/crud/comments.py,sha256=Ky9RQCscVCARcuUNuuiCtEqpnKSGrn4CYEiQ7Mr3k14,7711
31
31
  zou/app/blueprints/crud/custom_action.py,sha256=zz8E1IgtaV44BGC7m9t7YSQ9t_fYTtoxl_qRn20XijI,992
32
32
  zou/app/blueprints/crud/day_off.py,sha256=hr_cSBG-r7i_an2AkRmgTPtzbwojaI6el_JDUHgBBx4,2571
33
33
  zou/app/blueprints/crud/department.py,sha256=6UVd4OhloboQAHd6vtDjwdTNgx3tf9XyBAcb4IXnmt0,987
34
34
  zou/app/blueprints/crud/entity.py,sha256=3ny1BJv0NHkV6hE8IiKoYGcVaRVKjY__uEwBVKOdvAw,9745
35
35
  zou/app/blueprints/crud/entity_link.py,sha256=PlHGy3RPDUVdwWtOpQegz-wZCcxe9FZw_80nUVBy1Ac,819
36
36
  zou/app/blueprints/crud/entity_type.py,sha256=fYMtAY6nZjyPy7EUBFgNPhPNJ9a_PN4e8cIURBzeNa8,2346
37
- zou/app/blueprints/crud/event.py,sha256=bay2ggg5Oa69lOxNYGkHVQdSKuMxGhk2wqWP7QApKUg,589
37
+ zou/app/blueprints/crud/event.py,sha256=pKEZPDYGE8HLMrwrIazSpS4SROyw7-382R7RNoLaj5w,583
38
38
  zou/app/blueprints/crud/file_status.py,sha256=vw9NR5HiArorW2pZwxYb701f5ubUIxrNhdhVFnVoDTw,523
39
- zou/app/blueprints/crud/metadata_descriptor.py,sha256=lerwRK8MZiP8WKNHsUTdn1KBk7A_cTnfAy0BaMKMPgA,2119
39
+ zou/app/blueprints/crud/metadata_descriptor.py,sha256=G_KVO5wGWT2y9md914UwziI60Q8d-CJjZuw9O1vfXs8,2119
40
40
  zou/app/blueprints/crud/milestone.py,sha256=UIMsyCNS7ZRePjo08yyzubLEo6fcK-RAsVvrfjXoclA,839
41
41
  zou/app/blueprints/crud/news.py,sha256=0baKn4OLEVY7ljWgpJEypo2Pgzhlp8GJxjim78oqLtg,344
42
42
  zou/app/blueprints/crud/notification.py,sha256=A-KNH0IDNCXlE4AddNxvmsD_7a9HqHGo_rI-Z_pdzus,530
43
- zou/app/blueprints/crud/organisation.py,sha256=DLK0BabSZU2Y4CAoEg5Zkzutb87rCMiyguEC9WdxmoU,873
43
+ zou/app/blueprints/crud/organisation.py,sha256=P1yzIwVB1AE0-ZfiZAVZkUl7hshIwV8OL0NF3DZS7gQ,1340
44
44
  zou/app/blueprints/crud/output_file.py,sha256=tz0NOoEUobNa8RMjl195S6uNP7PsPM-ajMOYWdHUhhE,3968
45
45
  zou/app/blueprints/crud/output_type.py,sha256=Uu7Q5iv-4SZDnxHkLk0vUE1N4k0bBUivXQUTsc58BU8,2012
46
46
  zou/app/blueprints/crud/person.py,sha256=k1EcYxD5C5p7tquAvJUpD2873-ITeF2ogMNIYRxWuDo,9427
@@ -66,26 +66,26 @@ zou/app/blueprints/edits/resources.py,sha256=IvgqEhIvjF6OO7VNK6i5w6NKEoFQyKfuZJ7
66
66
  zou/app/blueprints/entities/__init__.py,sha256=v-qt2dl3s3tmK_ur-cpDHNPmcL0A6xCybczyuidjUCo,713
67
67
  zou/app/blueprints/entities/resources.py,sha256=vyEs5ODyRqP9ICf_2KPVnwrGRCJQxZTgO5qFld0F3lg,3166
68
68
  zou/app/blueprints/events/__init__.py,sha256=Vb0gO7Bpj_2Dpx9hhKd2SZW2qqnJrFVoDpJjFOmoMZw,394
69
- zou/app/blueprints/events/resources.py,sha256=SSrfq5TioZj217Qzv8wxFTUzs3_3DP8yGDYUrkttMIs,3238
69
+ zou/app/blueprints/events/resources.py,sha256=y8OtwrvpLBmr6IcUSZroOXqx8ThaSfBWe53LllZOd3U,3194
70
70
  zou/app/blueprints/export/__init__.py,sha256=W3U93VD-dHlozFVSt_RDvP7h7K_FqgHPLA__W5H1DkE,1574
71
71
  zou/app/blueprints/export/csv/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
72
- zou/app/blueprints/export/csv/assets.py,sha256=QafmkM1BphI6wzbcqK6Hc1XBtisjgGTGYejOwJWwWW4,5561
72
+ zou/app/blueprints/export/csv/assets.py,sha256=8KblL_TjQ4_FuVe7poOSnuLJhdkdWzSWEYjLgl5ajiU,5880
73
73
  zou/app/blueprints/export/csv/base.py,sha256=AlNvzpozHAqs76tWGju0PGhX4CthDRDkwI8OyNb_MSc,1114
74
74
  zou/app/blueprints/export/csv/casting.py,sha256=0e4Z9TzpGfAuWx84qbMAJo74CacsRFofpWChZQ8UNC0,14153
75
- zou/app/blueprints/export/csv/edits.py,sha256=mEtIoHQ8iD9mWWgvtspFau_JjPGI6PwAWq6n1Q9W9OM,5408
75
+ zou/app/blueprints/export/csv/edits.py,sha256=Hgb05MOFqfz-OVpc8RAKXTzHroZSlKWZv-zI9hp9RB4,5728
76
76
  zou/app/blueprints/export/csv/persons.py,sha256=z8B6wlGqTYP5gKKpXSh36ez03wWNY129wNVzwvt6AGY,964
77
77
  zou/app/blueprints/export/csv/playlists.py,sha256=AIrMrGMjbdFaPiRw02KZPznaYc6Zp56KUDaIj9RafwY,4830
78
78
  zou/app/blueprints/export/csv/projects.py,sha256=n_266BxGfYHz-3RbgZ-OuFnJellbP4lXuElRAPFzlHc,740
79
- zou/app/blueprints/export/csv/shots.py,sha256=JSJjqyCJPoIXpAmmPnappUQbYau0AA03c_wh8pmQCls,6005
79
+ zou/app/blueprints/export/csv/shots.py,sha256=VPogiIAxjkmSaj9_M2xrbrCwjwkASx4C0cnboXMIT5A,6376
80
80
  zou/app/blueprints/export/csv/task_types.py,sha256=PCEEhOQcdOJv_38i-KNxbkGeNzmQ8Qe01k8YnhRybzo,765
81
81
  zou/app/blueprints/export/csv/tasks.py,sha256=CHFcs9S3eLIz6psE6Q6mZ-OSur_GrpBeLn98Nh9NNcA,4121
82
82
  zou/app/blueprints/export/csv/time_spents.py,sha256=yYPtilOxfQD5mBwyh9h-PbTQBpab-vMrec35tYUw4fQ,2984
83
83
  zou/app/blueprints/files/__init__.py,sha256=7Wty30JW2OXIn-tBFXOWWmPuHnsnxPpH3jNtHvvr9tY,3987
84
84
  zou/app/blueprints/files/resources.py,sha256=8SIV8kaqv3dxyL8nyqG3QiZmk5ZYIvUxw6k1ic-jhBs,69786
85
85
  zou/app/blueprints/index/__init__.py,sha256=Dh3oQiirpg8RCkfVOuk3irIjSvUvuRf0jPxE6oGubz0,828
86
- zou/app/blueprints/index/resources.py,sha256=_JiNodmq3-XCIz4vF0MYkkkg1Wdzh7Fl19KU0TTia1M,8742
86
+ zou/app/blueprints/index/resources.py,sha256=M_wsZDEAqSGPlUrO4dyKAA4USgwfNyU7jBBfKOJzYFo,8852
87
87
  zou/app/blueprints/news/__init__.py,sha256=HxBXjC15dVbotNAZ0CLf02iwUjxJr20kgf8_kT_9nwM,505
88
- zou/app/blueprints/news/resources.py,sha256=5sN4iHTD3W2SEi1MhVHpeR1OjeTdW-XarkD8tyINLzU,7362
88
+ zou/app/blueprints/news/resources.py,sha256=HdLq2NgfKyN2d3hIATBhH3dlk4c50I4dhhvEhhB_NY4,7334
89
89
  zou/app/blueprints/persons/__init__.py,sha256=0cnHHw3K_8OEMm0qOi3wKVomSAg9IJSnVjAXabMeHks,3893
90
90
  zou/app/blueprints/persons/resources.py,sha256=PfK6epzRn_kbqN6g9qYiH9XWStFlccTVCYyKxs72Hu8,42764
91
91
  zou/app/blueprints/playlists/__init__.py,sha256=vuEk1F3hFHsmuKWhdepMoLyOzmNKDn1YrjjfcaIz0lQ,1596
@@ -102,12 +102,12 @@ zou/app/blueprints/source/__init__.py,sha256=H7K-4TDs4pc5EJvcYTYMJBHesxyqsE5-xq7
102
102
  zou/app/blueprints/source/kitsu.py,sha256=4lWdqxaKDzwx-5POAIHIgZ6ODbDMOOVRxaSb_FOLcCk,5012
103
103
  zou/app/blueprints/source/otio.py,sha256=nTXQEauFinPv2QBXziJW83rSrB_qzIbkFQ_qgxbJynA,13419
104
104
  zou/app/blueprints/source/csv/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
105
- zou/app/blueprints/source/csv/assets.py,sha256=yXoiRaEtW-GXYbmVQJn5Nghx0CR3WTQ-D4farDeG8JI,10471
106
- zou/app/blueprints/source/csv/base.py,sha256=rzFBJhqBTUEmAH2eCzjFxJoAXaMW6VDafmWakoBdL-I,4387
105
+ zou/app/blueprints/source/csv/assets.py,sha256=I-HSz3VK6hbMizBGVSdjxzsPUPjeTpxpks-LEg1Tlqo,10794
106
+ zou/app/blueprints/source/csv/base.py,sha256=1WcvpQv5FrJvE5nyRbJ1Nqrye4OgoTEBItYbHga-Uj4,4373
107
107
  zou/app/blueprints/source/csv/casting.py,sha256=zUlwEnSheoCMTIgvRlKJgNv3hYPDjfSry4fiy9dUhwQ,5616
108
- zou/app/blueprints/source/csv/edits.py,sha256=HsgswzYdl9uXjuSbCOgiQnncD0hpnZYlpwrEs1RPpkQ,8064
108
+ zou/app/blueprints/source/csv/edits.py,sha256=yL1RcClBxPNakLt326M2aJk6pVv0H7CrNXALuKHkDZ8,8386
109
109
  zou/app/blueprints/source/csv/persons.py,sha256=QciJ47B3rAPyUQTAeToCUAhEai16J4s37oOErjdC_Vw,2582
110
- zou/app/blueprints/source/csv/shots.py,sha256=Ux7Huvc3d3oqoVb4SDGAr1kOGM5OVUtai5MRUEdgKVY,9426
110
+ zou/app/blueprints/source/csv/shots.py,sha256=5OI0IBY8C72aBbDFrIkvN-ZkWWCHsvOGUQ0Z9rWsnDs,9748
111
111
  zou/app/blueprints/source/csv/task_type_estimations.py,sha256=YppVqTGfEBwXJH9UG09TrC47exErXUykKSriwpVNQxk,5617
112
112
  zou/app/blueprints/source/shotgun/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
113
113
  zou/app/blueprints/source/shotgun/assets.py,sha256=vuRvy0oUszImYRawrbWC2h7CHYSBvGXDJPoa6ZqpG_U,4980
@@ -127,7 +127,7 @@ zou/app/blueprints/source/shotgun/tasks.py,sha256=XXBRe9QhhS-kuZeV3HitOnpf7mmWVx
127
127
  zou/app/blueprints/source/shotgun/team.py,sha256=GF7y2BwDeFJCiidtG68icfCi-uV1-b96YKiH8KR54iE,1819
128
128
  zou/app/blueprints/source/shotgun/versions.py,sha256=8Mb35e5p3FLbbiu6AZb9tJErDKz2pPRBdIYu80Ayj7w,2292
129
129
  zou/app/blueprints/tasks/__init__.py,sha256=pNUqVEVX1KVu1IzRRJNsziPkhWKXqgyvQsNp7LbmIxo,4342
130
- zou/app/blueprints/tasks/resources.py,sha256=VjEZPdd80MJ2gPgBVZx7la5EsCGDBLaOHRMgGJgVb4o,56215
130
+ zou/app/blueprints/tasks/resources.py,sha256=gPxhfjk43gUVPbbLiaUlAMUXqr-M0R4SPVHmW7VIhj4,56379
131
131
  zou/app/blueprints/user/__init__.py,sha256=H9zCHcVobC6jq6dTToXKAjnZmDA0a9gChHiIP3BcZsc,4586
132
132
  zou/app/blueprints/user/resources.py,sha256=loCigQvPCoRw6nVu_9TIY7pjUByJgk6vutFPSo0MwzI,39891
133
133
  zou/app/file_trees/default.json,sha256=ryUrEmQYE8B_WkzCoQLgmem3N9yNwMIWx9G8p3HfG9o,2310
@@ -156,7 +156,7 @@ zou/app/models/metadata_descriptor.py,sha256=LRCJ7NKsy771kMSLeZDrCON7jRk76J-JTFW
156
156
  zou/app/models/milestone.py,sha256=ZwJ7_PbXT_LeUZKv3l5DLPM7ByFQEccpEeWFq4-IM-Q,927
157
157
  zou/app/models/news.py,sha256=UPX0ojWF-leAGZNKqlo7KL0s0lp2tbKMJl4N5lGbouo,1583
158
158
  zou/app/models/notification.py,sha256=1ODOymGPeB4oxgX_3WhOgIL_Lsz-JR7miDkBS6W8t_s,2563
159
- zou/app/models/organisation.py,sha256=jVDsS3C3ani0NYeKKMnsnkGzeeQor9jMU1qkHxkSa9c,1938
159
+ zou/app/models/organisation.py,sha256=R69AR1JDZSs6YeXDalmz3ewmrSMDv9Mr8AZAHn09Iu0,1365
160
160
  zou/app/models/output_file.py,sha256=hyLGrpsgrk0aisDXppRQrB7ItCwyuyw-X0ZwVAHabsA,2569
161
161
  zou/app/models/output_type.py,sha256=us_lCUCEvuP4vi_XmmOcEl1J2MtZhMX5ZheBqEFCgWA,381
162
162
  zou/app/models/person.py,sha256=E6aTbN6HigVTh9_myMfYK6iqrdUfMRB6XBtowdA-qYQ,7511
@@ -168,7 +168,7 @@ zou/app/models/project_status.py,sha256=pExaHH7x4Eu8xOqD3_mRRbMzjT2jJZ8rm-9jo7yU
168
168
  zou/app/models/schedule_item.py,sha256=coY5uDDuBoctaMICnfCzx4zT5om2E1uu4iq5MDWAPlY,1444
169
169
  zou/app/models/search_filter.py,sha256=Q699mJa3GGwFEva93Y_nHiIcx3BDht9VsAe2zeQL0FA,1242
170
170
  zou/app/models/search_filter_group.py,sha256=LGT2zn1lk3dCC-Fu7NU7VFD6MWprmBz7saQhS2ST2gA,980
171
- zou/app/models/serializer.py,sha256=VKN5hHJ6M_jsvrbKe5SonnTeg5dxXSYqb_4JDVWIQwA,1477
171
+ zou/app/models/serializer.py,sha256=slL3F6JxvhJQMCd8br_2NVSeNLxtFX04ivoOrYUTiX4,1373
172
172
  zou/app/models/software.py,sha256=3y9xEOS8BBxqgTaRrCaSYHaB6uOdJ88uU5i-cACoCSk,517
173
173
  zou/app/models/status_automation.py,sha256=95c0lmOetujyGWViLd_qsR4GWPhrmlvi9ZfkC0x1NuM,1391
174
174
  zou/app/models/studio.py,sha256=cXnYFh-8m5Kw05QawYcCr59eeLp25NDI0VIb77oqUOs,384
@@ -192,28 +192,28 @@ zou/app/services/deletion_service.py,sha256=GdPWmw60_EmWxJohvqQ9KRcION7_PIdQgbl7
192
192
  zou/app/services/edits_service.py,sha256=lQck7U9JYRWRqukwTT6ZBWCP0BpoF3XlPPwmEgtUvSM,11965
193
193
  zou/app/services/emails_service.py,sha256=HaSdDzNLU-s_fxoH-YQi-3VFX1YwdYm64kMhJFGa3AM,11923
194
194
  zou/app/services/entities_service.py,sha256=HDl_KqS5aZEUyAkrgsQ11qqYiaFFy0VcD2BrSaOrxJg,16436
195
- zou/app/services/events_service.py,sha256=_gU19herxiAo47WRxVNhvl7v-RKhp-8wZ3gAiHKpOzI,2716
195
+ zou/app/services/events_service.py,sha256=Ew-bY5hqrWLmpbVj1_xd3E2S3JtyAGzdgw2XjudTZjc,2700
196
196
  zou/app/services/exception.py,sha256=mcDVjWGICMIlOi4nsN2EQ7nc3V70rAC-iCmXt6kOXbA,4240
197
197
  zou/app/services/file_tree_service.py,sha256=8JNBDgnXtV-AmSJ3gnUGB4oSwLjPgi1WYyL0Kc98JRE,33875
198
198
  zou/app/services/files_service.py,sha256=df1_9v-vwE5HVi9XjtilTPWHuiWunvrwPyQh_IXupNM,28517
199
199
  zou/app/services/index_service.py,sha256=1w8rGJ7ArYC13B43hD4JOPtVhaRsbseJVVY-GnU_3tA,9874
200
200
  zou/app/services/names_service.py,sha256=TOSrintROmxcAlcFQE0i2E3PBLnw81GAztNselpTn18,2947
201
- zou/app/services/news_service.py,sha256=Wq262gOPP4EThXXcpT9o0QW8Z3lDQuPV6It-7IEzA5U,9116
201
+ zou/app/services/news_service.py,sha256=eOXkvLhOcgncI2NrgiJEccV28oxZX5CsZVqaE-l4kWQ,9084
202
202
  zou/app/services/notifications_service.py,sha256=7GDRio_mGaRYV5BHOAdpxBZjA_LLYUfVpbwZqy1n9pI,15685
203
- zou/app/services/persons_service.py,sha256=pdyEyIGojuk_gl67sxX7SXoTwPZQbLqHHmj53iourPg,16472
203
+ zou/app/services/persons_service.py,sha256=ccPP1_anu2J4zH54LKeP7dt1VyVpiYvzfgOS1xXhLrQ,16564
204
204
  zou/app/services/playlists_service.py,sha256=pAlPHET4jNdST5jsmJrFUkf1SVhfSoML9zdNpZ_88l4,32439
205
205
  zou/app/services/preview_files_service.py,sha256=LEBZbLBJOLDLB7syKql5B8a_p1HFHToMi7nKaUxOCb8,35881
206
- zou/app/services/projects_service.py,sha256=2m-w_HaWR06gy8jL8gO-sToHhGdeCakG4hTKKYsLJKk,21249
206
+ zou/app/services/projects_service.py,sha256=aIbYaFomy7OX2Pxvkf9w5qauDvkjuc9ummSGNYIpQMY,21249
207
207
  zou/app/services/scenes_service.py,sha256=iXN19HU4njPF5VtZXuUrVJ-W23ZQuQNPC3ADXltbWtU,992
208
208
  zou/app/services/schedule_service.py,sha256=E99HKYsXgnK2sw58fw-NNHXWBgVJiA60upztjkNSCaM,6989
209
- zou/app/services/shots_service.py,sha256=lJViWy9IbB1YOZB9HyyGAyMc1HW9y5qPEA1EefANTek,52040
209
+ zou/app/services/shots_service.py,sha256=4H81Tf6twY4s9Ac9_MCX_4bdW75m30TaKrR0tLiQf9s,52042
210
210
  zou/app/services/stats_service.py,sha256=cAlc92i9d6eYtsuwe3hYHYwdytg8KEMi1-TADfysJwM,11733
211
211
  zou/app/services/status_automations_service.py,sha256=tVio7Sj7inhvKS4UOyRhcdpwr_KNP96hT1o0X7XcGF4,715
212
- zou/app/services/sync_service.py,sha256=EunfXlma_IIb7011A_xLQLVQGAi-MteKgm2Y2NAxvMs,41586
213
- zou/app/services/tasks_service.py,sha256=bhm13XcROOnEhlDa3xhFyIzf6bQmrLrOepUW2av7BDU,68844
212
+ zou/app/services/sync_service.py,sha256=kJ1LGMNfPh9_BDwGTfoYWHrLZ8OlT0hWk-R8wNt0t3w,41562
213
+ zou/app/services/tasks_service.py,sha256=IK0vJx9upHOwbHGmDogDU1X9nDuC30tf2xJES0UOpnQ,68877
214
214
  zou/app/services/telemetry_services.py,sha256=xQm1h1t_JxSFW59zQGf4NuNdUi1UfMa_6pQ-ytRbmGA,1029
215
215
  zou/app/services/time_spents_service.py,sha256=H9X-60s6oqtY9rtU-K2jKwUSljfkdGlf_9wMr3iVfIA,15158
216
- zou/app/services/user_service.py,sha256=yRWztH9ub-_wTOekKm1By3RBTVI5QiBFZq0DKSze8sQ,50529
216
+ zou/app/services/user_service.py,sha256=csEwaX2VW-CTY4mexD0yTaNb2i0cN2LECeBnzjSyDUs,50036
217
217
  zou/app/stores/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
218
218
  zou/app/stores/auth_tokens_store.py,sha256=-qOJPybLHvnMOq3PWk073OW9HJwOHGhFLZeOIlX1UVw,1290
219
219
  zou/app/stores/file_store.py,sha256=yLQDM6mNbj9oe0vsWdBqun7D8Dw-eSjD1yHCCftX0OI,4045
@@ -225,8 +225,8 @@ zou/app/utils/auth.py,sha256=DZfZSr1Ulge0UK3hfvOWsMo3_d7RVP_llV118u9BtUI,870
225
225
  zou/app/utils/cache.py,sha256=MRluTvGG67ybOkyzgD70B6PGKMdRyFdTc0AYy3dEQe8,1210
226
226
  zou/app/utils/chats.py,sha256=ORngxQ3IQQF0QcVFJLxJ-RaU4ksQ9-0M8cmPa0pc0Ho,4302
227
227
  zou/app/utils/colors.py,sha256=LaGV17NL_8xY0XSp8snGWz5UMwGnm0KPWXyE5BTMG6w,200
228
- zou/app/utils/commands.py,sha256=z1tpCRY6wOH_uSrjPTS5kRkhYwW8SEA-pKhreaXLu0I,27472
229
- zou/app/utils/csv_utils.py,sha256=difqBp9xp3nHvaOjW6B64A4X3Uyfe_vKGw10i6SJ5_E,1291
228
+ zou/app/utils/commands.py,sha256=_ev6tS1bQVDkjIOWGsCTh0zUcJCCoBBcUQKuzOeSJFE,27456
229
+ zou/app/utils/csv_utils.py,sha256=GiI8SeUqmIh9o1JwhZGkQXU_0K0EcPrRHYIZ8bMoYzk,1228
230
230
  zou/app/utils/date_helpers.py,sha256=jFxDPCbAasg0I1gsC72AKEbGcx5c4pLqXZkSfZ4wLdQ,4724
231
231
  zou/app/utils/dbhelpers.py,sha256=RSJuoxLexGJyME16GQCs-euFLBR0u-XAFdJ1KMSv5M8,1143
232
232
  zou/app/utils/emails.py,sha256=hc4HWvVYsG1xoP3sR0Zig0sB0k0y7bNxuNxxBreN5Yg,1436
@@ -408,14 +408,14 @@ zou/migrations/versions/fee7c696166e_.py,sha256=jVvkr0uY5JPtC_I9h18DELo_eRu99RdO
408
408
  zou/migrations/versions/feffd3c5b806_introduce_concepts.py,sha256=wFNAtTTDHa01AdoXhRDayCVdB33stUFn6whc3opg2vQ,4774
409
409
  zou/migrations/versions/ffeed4956ab1_add_more_details_to_projects.py,sha256=cgRcg4IRW9kJ-A9-fVb5y5IXwRd74czomSVqMz3fVJo,1164
410
410
  zou/remote/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
411
- zou/remote/config_payload.py,sha256=7b1xTZ0AHP1Y1KVWozQ4sNMS34s7fg3WO6nNbdDZBDc,1864
411
+ zou/remote/config_payload.py,sha256=pcKy6bJak41lc8Btq0gYMpHRJuG8y2Ae7lbZDOdchNQ,1907
412
412
  zou/remote/normalize_movie.py,sha256=zNfEY3N1UbAHZfddGONTg2Sff3ieLVWd4dfZa1dpnes,2164
413
413
  zou/remote/playlist.py,sha256=AsDo0bgYhDcd6DfNRV6r6Jj3URWwavE2ZN3VkKRPbLU,3293
414
414
  zou/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
415
415
  zou/utils/movie.py,sha256=d67fIL9dVBKt-E_qCGXRbNNdbJaJR5sHvZeX3hf8ldE,16559
416
- zou-0.19.69.dist-info/LICENSE,sha256=dql8h4yceoMhuzlcK0TT_i-NgTFNIZsgE47Q4t3dUYI,34520
417
- zou-0.19.69.dist-info/METADATA,sha256=GU1IQpKI98mO9vSrRvgdssUlE51lW7xK-GfmB95Ux68,6709
418
- zou-0.19.69.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
419
- zou-0.19.69.dist-info/entry_points.txt,sha256=PelQoIx3qhQ_Tmne7wrLY-1m2izuzgpwokoURwSohy4,130
420
- zou-0.19.69.dist-info/top_level.txt,sha256=4S7G_jk4MzpToeDItHGjPhHx_fRdX52zJZWTD4SL54g,4
421
- zou-0.19.69.dist-info/RECORD,,
416
+ zou-0.19.71.dist-info/LICENSE,sha256=dql8h4yceoMhuzlcK0TT_i-NgTFNIZsgE47Q4t3dUYI,34520
417
+ zou-0.19.71.dist-info/METADATA,sha256=r2tMJTmD-Go_saWrpGq-ttuaJCiWWVzOGdURWRWRM-Y,6709
418
+ zou-0.19.71.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
419
+ zou-0.19.71.dist-info/entry_points.txt,sha256=PelQoIx3qhQ_Tmne7wrLY-1m2izuzgpwokoURwSohy4,130
420
+ zou-0.19.71.dist-info/top_level.txt,sha256=4S7G_jk4MzpToeDItHGjPhHx_fRdX52zJZWTD4SL54g,4
421
+ zou-0.19.71.dist-info/RECORD,,
File without changes
File without changes