hockey-blast-common-lib 0.1.7__py3-none-any.whl → 0.1.8__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.
@@ -1,5 +1,6 @@
1
- from .models import db
1
+ from models import db
2
2
  from sqlalchemy.ext.declarative import declared_attr
3
+ from sqlalchemy.orm import synonym
3
4
 
4
5
  class BaseStatsHuman(db.Model):
5
6
  __abstract__ = True
@@ -172,6 +173,7 @@ class BaseStatsScorekeeper(db.Model):
172
173
  class OrgStatsHuman(BaseStatsHuman):
173
174
  __tablename__ = 'org_stats_human'
174
175
  org_id = db.Column(db.Integer, db.ForeignKey('organizations.id'), nullable=False)
176
+ aggregation_id = synonym('org_id')
175
177
 
176
178
  @declared_attr
177
179
  def aggregation_type(cls):
@@ -184,6 +186,7 @@ class OrgStatsHuman(BaseStatsHuman):
184
186
  class DivisionStatsHuman(BaseStatsHuman):
185
187
  __tablename__ = 'division_stats_human'
186
188
  division_id = db.Column(db.Integer, db.ForeignKey('divisions.id'), nullable=False)
189
+ aggregation_id = synonym('division_id')
187
190
 
188
191
  @declared_attr
189
192
  def aggregation_type(cls):
@@ -196,6 +199,7 @@ class DivisionStatsHuman(BaseStatsHuman):
196
199
  class OrgStatsSkater(BaseStatsSkater):
197
200
  __tablename__ = 'org_stats_skater'
198
201
  org_id = db.Column(db.Integer, db.ForeignKey('organizations.id'), nullable=False)
202
+ aggregation_id = synonym('org_id')
199
203
 
200
204
  @declared_attr
201
205
  def aggregation_type(cls):
@@ -208,6 +212,7 @@ class OrgStatsSkater(BaseStatsSkater):
208
212
  class DivisionStatsSkater(BaseStatsSkater):
209
213
  __tablename__ = 'division_stats_skater'
210
214
  division_id = db.Column(db.Integer, db.ForeignKey('divisions.id'), nullable=False)
215
+ aggregation_id = synonym('division_id')
211
216
 
212
217
  @declared_attr
213
218
  def aggregation_type(cls):
@@ -220,6 +225,7 @@ class DivisionStatsSkater(BaseStatsSkater):
220
225
  class OrgStatsGoalie(BaseStatsGoalie):
221
226
  __tablename__ = 'org_stats_goalie'
222
227
  org_id = db.Column(db.Integer, db.ForeignKey('organizations.id'), nullable=False)
228
+ aggregation_id = synonym('org_id')
223
229
 
224
230
  @declared_attr
225
231
  def aggregation_type(cls):
@@ -232,6 +238,7 @@ class OrgStatsGoalie(BaseStatsGoalie):
232
238
  class DivisionStatsGoalie(BaseStatsGoalie):
233
239
  __tablename__ = 'division_stats_goalie'
234
240
  division_id = db.Column(db.Integer, db.ForeignKey('divisions.id'), nullable=False)
241
+ aggregation_id = synonym('division_id')
235
242
 
236
243
  @declared_attr
237
244
  def aggregation_type(cls):
@@ -245,6 +252,7 @@ class DivisionStatsGoalie(BaseStatsGoalie):
245
252
  class OrgStatsReferee(BaseStatsReferee):
246
253
  __tablename__ = 'org_stats_referee'
247
254
  org_id = db.Column(db.Integer, db.ForeignKey('organizations.id'), nullable=False)
255
+ aggregation_id = synonym('org_id')
248
256
 
249
257
  @declared_attr
250
258
  def aggregation_type(cls):
@@ -257,6 +265,7 @@ class OrgStatsReferee(BaseStatsReferee):
257
265
  class DivisionStatsReferee(BaseStatsReferee):
258
266
  __tablename__ = 'division_stats_referee'
259
267
  division_id = db.Column(db.Integer, db.ForeignKey('divisions.id'), nullable=False)
268
+ aggregation_id = synonym('division_id')
260
269
 
261
270
  @declared_attr
262
271
  def aggregation_type(cls):
@@ -270,6 +279,7 @@ class DivisionStatsReferee(BaseStatsReferee):
270
279
  class OrgStatsScorekeeper(BaseStatsScorekeeper):
271
280
  __tablename__ = 'org_stats_scorekeeper'
272
281
  org_id = db.Column(db.Integer, db.ForeignKey('organizations.id'), nullable=False)
282
+ aggregation_id = synonym('org_id')
273
283
 
274
284
  @declared_attr
275
285
  def aggregation_type(cls):
@@ -282,6 +292,7 @@ class OrgStatsScorekeeper(BaseStatsScorekeeper):
282
292
  class DivisionStatsScorekeeper(BaseStatsScorekeeper):
283
293
  __tablename__ = 'division_stats_scorekeeper'
284
294
  division_id = db.Column(db.Integer, db.ForeignKey('divisions.id'), nullable=False)
295
+ aggregation_id = synonym('division_id')
285
296
 
286
297
  @declared_attr
287
298
  def aggregation_type(cls):
@@ -294,6 +305,7 @@ class DivisionStatsScorekeeper(BaseStatsScorekeeper):
294
305
  class OrgStatsDailyHuman(BaseStatsHuman):
295
306
  __tablename__ = 'org_stats_daily_human'
296
307
  org_id = db.Column(db.Integer, db.ForeignKey('organizations.id'), nullable=False)
308
+ aggregation_id = synonym('org_id')
297
309
 
298
310
  @classmethod
299
311
  def get_aggregation_column(cls):
@@ -306,6 +318,7 @@ class OrgStatsDailyHuman(BaseStatsHuman):
306
318
  class OrgStatsWeeklyHuman(BaseStatsHuman):
307
319
  __tablename__ = 'org_stats_weekly_human'
308
320
  org_id = db.Column(db.Integer, db.ForeignKey('organizations.id'), nullable=False)
321
+ aggregation_id = synonym('org_id')
309
322
 
310
323
  @classmethod
311
324
  def get_aggregation_column(cls):
@@ -318,6 +331,7 @@ class OrgStatsWeeklyHuman(BaseStatsHuman):
318
331
  class DivisionStatsDailyHuman(BaseStatsHuman):
319
332
  __tablename__ = 'division_stats_daily_human'
320
333
  division_id = db.Column(db.Integer, db.ForeignKey('divisions.id'), nullable=False)
334
+ aggregation_id = synonym('division_id')
321
335
 
322
336
  @classmethod
323
337
  def get_aggregation_column(cls):
@@ -330,6 +344,7 @@ class DivisionStatsDailyHuman(BaseStatsHuman):
330
344
  class DivisionStatsWeeklyHuman(BaseStatsHuman):
331
345
  __tablename__ = 'division_stats_weekly_human'
332
346
  division_id = db.Column(db.Integer, db.ForeignKey('divisions.id'), nullable=False)
347
+ aggregation_id = synonym('division_id')
333
348
 
334
349
  @classmethod
335
350
  def get_aggregation_column(cls):
@@ -342,6 +357,7 @@ class DivisionStatsWeeklyHuman(BaseStatsHuman):
342
357
  class OrgStatsDailySkater(BaseStatsSkater):
343
358
  __tablename__ = 'org_stats_daily_skater'
344
359
  org_id = db.Column(db.Integer, db.ForeignKey('organizations.id'), nullable=False)
360
+ aggregation_id = synonym('org_id')
345
361
 
346
362
  @declared_attr
347
363
  def aggregation_type(cls):
@@ -354,6 +370,7 @@ class OrgStatsDailySkater(BaseStatsSkater):
354
370
  class OrgStatsWeeklySkater(BaseStatsSkater):
355
371
  __tablename__ = 'org_stats_weekly_skater'
356
372
  org_id = db.Column(db.Integer, db.ForeignKey('organizations.id'), nullable=False)
373
+ aggregation_id = synonym('org_id')
357
374
 
358
375
  @declared_attr
359
376
  def aggregation_type(cls):
@@ -366,6 +383,7 @@ class OrgStatsWeeklySkater(BaseStatsSkater):
366
383
  class DivisionStatsDailySkater(BaseStatsSkater):
367
384
  __tablename__ = 'division_stats_daily_skater'
368
385
  division_id = db.Column(db.Integer, db.ForeignKey('divisions.id'), nullable=False)
386
+ aggregation_id = synonym('division_id')
369
387
 
370
388
  @declared_attr
371
389
  def aggregation_type(cls):
@@ -378,6 +396,7 @@ class DivisionStatsDailySkater(BaseStatsSkater):
378
396
  class DivisionStatsWeeklySkater(BaseStatsSkater):
379
397
  __tablename__ = 'division_stats_weekly_skater'
380
398
  division_id = db.Column(db.Integer, db.ForeignKey('divisions.id'), nullable=False)
399
+ aggregation_id = synonym('division_id')
381
400
 
382
401
  @declared_attr
383
402
  def aggregation_type(cls):
@@ -390,6 +409,7 @@ class DivisionStatsWeeklySkater(BaseStatsSkater):
390
409
  class OrgStatsDailyGoalie(BaseStatsGoalie):
391
410
  __tablename__ = 'org_stats_daily_goalie'
392
411
  org_id = db.Column(db.Integer, db.ForeignKey('organizations.id'), nullable=False)
412
+ aggregation_id = synonym('org_id')
393
413
 
394
414
  @declared_attr
395
415
  def aggregation_type(cls):
@@ -402,6 +422,7 @@ class OrgStatsDailyGoalie(BaseStatsGoalie):
402
422
  class OrgStatsWeeklyGoalie(BaseStatsGoalie):
403
423
  __tablename__ = 'org_stats_weekly_goalie'
404
424
  org_id = db.Column(db.Integer, db.ForeignKey('organizations.id'), nullable=False)
425
+ aggregation_id = synonym('org_id')
405
426
 
406
427
  @declared_attr
407
428
  def aggregation_type(cls):
@@ -414,6 +435,7 @@ class OrgStatsWeeklyGoalie(BaseStatsGoalie):
414
435
  class DivisionStatsDailyGoalie(BaseStatsGoalie):
415
436
  __tablename__ = 'division_stats_daily_goalie'
416
437
  division_id = db.Column(db.Integer, db.ForeignKey('divisions.id'), nullable=False)
438
+ aggregation_id = synonym('division_id')
417
439
 
418
440
  @declared_attr
419
441
  def aggregation_type(cls):
@@ -426,6 +448,7 @@ class DivisionStatsDailyGoalie(BaseStatsGoalie):
426
448
  class DivisionStatsWeeklyGoalie(BaseStatsGoalie):
427
449
  __tablename__ = 'division_stats_weekly_goalie'
428
450
  division_id = db.Column(db.Integer, db.ForeignKey('divisions.id'), nullable=False)
451
+ aggregation_id = synonym('division_id')
429
452
 
430
453
  @declared_attr
431
454
  def aggregation_type(cls):
@@ -438,6 +461,7 @@ class DivisionStatsWeeklyGoalie(BaseStatsGoalie):
438
461
  class OrgStatsDailyReferee(BaseStatsReferee):
439
462
  __tablename__ = 'org_stats_daily_referee'
440
463
  org_id = db.Column(db.Integer, db.ForeignKey('organizations.id'), nullable=False)
464
+ aggregation_id = synonym('org_id')
441
465
 
442
466
  @declared_attr
443
467
  def aggregation_type(cls):
@@ -450,6 +474,7 @@ class OrgStatsDailyReferee(BaseStatsReferee):
450
474
  class OrgStatsWeeklyReferee(BaseStatsReferee):
451
475
  __tablename__ = 'org_stats_weekly_referee'
452
476
  org_id = db.Column(db.Integer, db.ForeignKey('organizations.id'), nullable=False)
477
+ aggregation_id = synonym('org_id')
453
478
 
454
479
  @declared_attr
455
480
  def aggregation_type(cls):
@@ -462,6 +487,7 @@ class OrgStatsWeeklyReferee(BaseStatsReferee):
462
487
  class DivisionStatsDailyReferee(BaseStatsReferee):
463
488
  __tablename__ = 'division_stats_daily_referee'
464
489
  division_id = db.Column(db.Integer, db.ForeignKey('divisions.id'), nullable=False)
490
+ aggregation_id = synonym('division_id')
465
491
 
466
492
  @declared_attr
467
493
  def aggregation_type(cls):
@@ -474,6 +500,7 @@ class DivisionStatsDailyReferee(BaseStatsReferee):
474
500
  class DivisionStatsWeeklyReferee(BaseStatsReferee):
475
501
  __tablename__ = 'division_stats_weekly_referee'
476
502
  division_id = db.Column(db.Integer, db.ForeignKey('divisions.id'), nullable=False)
503
+ aggregation_id = synonym('division_id')
477
504
 
478
505
  @declared_attr
479
506
  def aggregation_type(cls):
@@ -486,6 +513,7 @@ class DivisionStatsWeeklyReferee(BaseStatsReferee):
486
513
  class OrgStatsDailyScorekeeper(BaseStatsScorekeeper):
487
514
  __tablename__ = 'org_stats_daily_scorekeeper'
488
515
  org_id = db.Column(db.Integer, db.ForeignKey('organizations.id'), nullable=False)
516
+ aggregation_id = synonym('org_id')
489
517
 
490
518
  @declared_attr
491
519
  def aggregation_type(cls):
@@ -498,6 +526,7 @@ class OrgStatsDailyScorekeeper(BaseStatsScorekeeper):
498
526
  class OrgStatsWeeklyScorekeeper(BaseStatsScorekeeper):
499
527
  __tablename__ = 'org_stats_weekly_scorekeeper'
500
528
  org_id = db.Column(db.Integer, db.ForeignKey('organizations.id'), nullable=False)
529
+ aggregation_id = synonym('org_id')
501
530
 
502
531
  @declared_attr
503
532
  def aggregation_type(cls):
@@ -510,6 +539,7 @@ class OrgStatsWeeklyScorekeeper(BaseStatsScorekeeper):
510
539
  class DivisionStatsDailyScorekeeper(BaseStatsScorekeeper):
511
540
  __tablename__ = 'division_stats_daily_scorekeeper'
512
541
  division_id = db.Column(db.Integer, db.ForeignKey('divisions.id'), nullable=False)
542
+ aggregation_id = synonym('division_id')
513
543
 
514
544
  @declared_attr
515
545
  def aggregation_type(cls):
@@ -522,6 +552,7 @@ class DivisionStatsDailyScorekeeper(BaseStatsScorekeeper):
522
552
  class DivisionStatsWeeklyScorekeeper(BaseStatsScorekeeper):
523
553
  __tablename__ = 'division_stats_weekly_scorekeeper'
524
554
  division_id = db.Column(db.Integer, db.ForeignKey('divisions.id'), nullable=False)
555
+ aggregation_id = synonym('division_id')
525
556
 
526
557
  @declared_attr
527
558
  def aggregation_type(cls):
@@ -0,0 +1,65 @@
1
+ import sys
2
+ import os
3
+ from datetime import datetime, timedelta
4
+
5
+
6
+ from models import Organization, Human, Division
7
+ from sqlalchemy.sql import func
8
+
9
+
10
+ def get_org_id_from_alias(session, org_alias):
11
+ # Predefined organizations
12
+ predefined_organizations = [
13
+ {"id": 1, "organization_name": "Sharks Ice", "alias": "sharksice"},
14
+ {"id": 2, "organization_name": "TriValley Ice", "alias": "tvice"},
15
+ {"id": 3, "organization_name": "CAHA", "alias": "caha"}
16
+ ]
17
+
18
+ # Check if the organization exists
19
+ organization = session.query(Organization).filter_by(alias=org_alias).first()
20
+ if organization:
21
+ return organization.id
22
+ else:
23
+ # Insert predefined organizations if they do not exist
24
+ for org in predefined_organizations:
25
+ existing_org = session.query(Organization).filter_by(id=org["id"]).first()
26
+ if not existing_org:
27
+ new_org = Organization(id=org["id"], organization_name=org["organization_name"], alias=org["alias"])
28
+ session.add(new_org)
29
+ session.commit()
30
+
31
+ # Retry to get the organization after inserting predefined organizations
32
+ organization = session.query(Organization).filter_by(alias=org_alias).first()
33
+ if organization:
34
+ return organization.id
35
+ else:
36
+ raise ValueError(f"Organization with alias '{org_alias}' not found.")
37
+
38
+ def get_human_ids_by_names(session, names):
39
+ human_ids = set()
40
+ for first_name, middle_name, last_name in names:
41
+ query = session.query(Human.id)
42
+ if first_name:
43
+ query = query.filter(Human.first_name == first_name)
44
+ if middle_name:
45
+ query = query.filter(Human.middle_name == middle_name)
46
+ if last_name:
47
+ query = query.filter(Human.last_name == last_name)
48
+ results = query.all()
49
+ human_ids.update([result.id for result in results])
50
+ return human_ids
51
+
52
+ def get_division_ids_for_last_season_in_all_leagues(session, org_id):
53
+ # # TODO = remove tmp hack
54
+ # return get_all_division_ids_for_org(session, org_id)
55
+ league_numbers = session.query(Division.league_number).filter(Division.org_id == org_id).distinct().all()
56
+ division_ids = []
57
+ for league_number, in league_numbers:
58
+ max_season_number = session.query(func.max(Division.season_number)).filter_by(league_number=league_number, org_id=org_id).scalar()
59
+ division_ids_for_league = session.query(Division.id).filter_by(league_number=league_number, season_number=max_season_number, org_id=org_id).all()
60
+ division_ids.extend([division_id.id for division_id in division_ids_for_league])
61
+ return division_ids
62
+
63
+ def get_all_division_ids_for_org(session, org_id):
64
+ division_ids_for_org = session.query(Division.id).filter_by(org_id=org_id).all()
65
+ return [division_id.id for division_id in division_ids_for_org]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: hockey-blast-common-lib
3
- Version: 0.1.7
3
+ Version: 0.1.8
4
4
  Summary: Common library for shared functionality and DB models
5
5
  Author: Pavel Kletskov
6
6
  Author-email: kletskov@gmail.com
@@ -0,0 +1,16 @@
1
+ hockey_blast_common_lib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
+ hockey_blast_common_lib/aggregate_goalie_stats.py,sha256=jfPmlb7dHLacPb2dNA3S4BuQpoNJFvcOoX7SijnHRFg,8515
3
+ hockey_blast_common_lib/aggregate_human_stats.py,sha256=rY18_lfHaEYHhqpCYT5MEuhZLfB8kYSmw42VB3xGkHY,14002
4
+ hockey_blast_common_lib/aggregate_referee_stats.py,sha256=RVgzhh0IajmG7YrxX5wOeFMUhGpIMHk7SUQUDx542d8,10789
5
+ hockey_blast_common_lib/aggregate_skater_stats.py,sha256=1No-9saK8L30EQYrS7nEP6CbBR96tdA2aXQrtTMU6z0,15336
6
+ hockey_blast_common_lib/db_connection.py,sha256=JJcYbBuGlstMfui7UwP5GxPRwzrh4PxtsZDpWsQPnqA,998
7
+ hockey_blast_common_lib/db_utils.py,sha256=GjtcQsSilR55GlLuFAzIGhEVYG3cve7KBkUggW03tDo,767
8
+ hockey_blast_common_lib/models.py,sha256=GqQIGpanmFub97BoYCuaqDov2MxM4LMesUTxZ2edpvw,15393
9
+ hockey_blast_common_lib/options.py,sha256=-LtEX8duw5Pl3CSpjFlLM5FPvrZuTAxTfSlDPa7H6mQ,761
10
+ hockey_blast_common_lib/stats_models.py,sha256=AsHnllpSRWU3-obf01ZFFycnqoRrC9jomwvsC5VPhtI,21023
11
+ hockey_blast_common_lib/utils.py,sha256=_Lbovw3ygkSBk3vRsSvkunoFem9J_d46C0hzT_uXr-w,2875
12
+ hockey_blast_common_lib/wsgi.py,sha256=Qpux4NpQQnZ2U3gOAsqualn-bv9cLjFaXQtFQinC0j4,513
13
+ hockey_blast_common_lib-0.1.8.dist-info/METADATA,sha256=f2nMZVsDXbtoDN2DU0rrxGQVjT0jZqbFLhLM2kAhZFc,317
14
+ hockey_blast_common_lib-0.1.8.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
15
+ hockey_blast_common_lib-0.1.8.dist-info/top_level.txt,sha256=wIR4LIkE40npoA2QlOdfCYlgFeGbsHR8Z6r0h46Vtgc,24
16
+ hockey_blast_common_lib-0.1.8.dist-info/RECORD,,
@@ -1,10 +0,0 @@
1
- hockey_blast_common_lib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- hockey_blast_common_lib/db_connection.py,sha256=GPVaJRsZu38W9tDW1csoDX-cHuZA96GO2TGkpEy32JM,830
3
- hockey_blast_common_lib/db_utils.py,sha256=GjtcQsSilR55GlLuFAzIGhEVYG3cve7KBkUggW03tDo,767
4
- hockey_blast_common_lib/models.py,sha256=GqQIGpanmFub97BoYCuaqDov2MxM4LMesUTxZ2edpvw,15393
5
- hockey_blast_common_lib/stats_models.py,sha256=PmFE6bqLvHo9LC1tyXliM-VG8mFalh0X8uDPd14zaIE,19744
6
- hockey_blast_common_lib/wsgi.py,sha256=Qpux4NpQQnZ2U3gOAsqualn-bv9cLjFaXQtFQinC0j4,513
7
- hockey_blast_common_lib-0.1.7.dist-info/METADATA,sha256=opn0hy1AmdbXJed8CTa5eb1oiHC84PGhk6I-8-d4TSk,317
8
- hockey_blast_common_lib-0.1.7.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
9
- hockey_blast_common_lib-0.1.7.dist-info/top_level.txt,sha256=wIR4LIkE40npoA2QlOdfCYlgFeGbsHR8Z6r0h46Vtgc,24
10
- hockey_blast_common_lib-0.1.7.dist-info/RECORD,,