Skip to content

Commit deebb73

Browse files
feature/dep272: Fixed unit tests, removed usage of utcnow(), fixed Sonar Cube issues.
1 parent 9a1dd3d commit deebb73

23 files changed

Lines changed: 185 additions & 157 deletions

api/migrations/versions/37176ea4708d_data_until_feb_09_2024.py

Lines changed: 49 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,10 @@
99
import sqlalchemy as sa
1010
from sqlalchemy.sql import table, column
1111
from sqlalchemy import String, Integer, DateTime, Boolean, Text
12-
from datetime import datetime
1312
from flask import current_app
1413

14+
from api.utils.datetime import utc_now
15+
1516
# revision identifiers, used by Alembic.
1617
revision = '37176ea4708d'
1718
down_revision = 'ec0128056a33'
@@ -49,7 +50,7 @@ def upgrade():
4950
'description': current_app.config.get(
5051
'DEFAULT_TENANT_DESCRIPTION'
5152
),
52-
'created_date': datetime.utcnow(),
53+
'created_date': utc_now(),
5354
}
5455
]
5556

@@ -74,15 +75,15 @@ def upgrade():
7475
'id': 1,
7576
'status_name': 'ACTIVE',
7677
'description': 'Active User',
77-
'created_date': datetime.utcnow(),
78-
'updated_date': datetime.utcnow(),
78+
'created_date': utc_now(),
79+
'updated_date': utc_now(),
7980
},
8081
{
8182
'id': 2,
8283
'status_name': 'INACTIVE',
8384
'description': 'Inactive User',
84-
'created_date': datetime.utcnow(),
85-
'updated_date': datetime.utcnow(),
85+
'created_date': utc_now(),
86+
'updated_date': utc_now(),
8687
},
8788
]
8889

@@ -117,8 +118,8 @@ def upgrade():
117118
'status_id': 1,
118119
'contact_number': '1',
119120
'tenant_id': tenant_id,
120-
'created_date': datetime.utcnow(),
121-
'updated_date': datetime.utcnow(),
121+
'created_date': utc_now(),
122+
'updated_date': utc_now(),
122123
}
123124

124125
# Perform insert with sample data
@@ -191,8 +192,8 @@ def upgrade():
191192
]
192193

193194
for widget in widget_data:
194-
widget['created_date'] = datetime.utcnow()
195-
widget['updated_date'] = datetime.utcnow()
195+
widget['created_date'] = utc_now()
196+
widget['updated_date'] = utc_now()
196197

197198
# Perform bulk insert in a single operation
198199
op.bulk_insert(widget_type_table, widget_data)
@@ -296,8 +297,8 @@ def upgrade():
296297
]
297298

298299
for taxa in taxa_data:
299-
taxa['created_date'] = datetime.utcnow()
300-
taxa['updated_date'] = datetime.utcnow()
300+
taxa['created_date'] = utc_now()
301+
taxa['updated_date'] = utc_now()
301302

302303
# Perform bulk insert
303304
op.bulk_insert(engagement_metadata_taxa_table, taxa_data)
@@ -320,22 +321,22 @@ def upgrade():
320321
'id': 1,
321322
'name': 'comment_sheet',
322323
'description': 'Comments export for staff',
323-
'created_date': datetime.utcnow(),
324-
'updated_date': datetime.utcnow(),
324+
'created_date': utc_now(),
325+
'updated_date': utc_now(),
325326
},
326327
{
327328
'id': 2,
328329
'name': 'cac_form_sheet',
329330
'description': 'cac form submission export for staff',
330-
'created_date': datetime.utcnow(),
331-
'updated_date': datetime.utcnow(),
331+
'created_date': utc_now(),
332+
'updated_date': utc_now(),
332333
},
333334
{
334335
'id': 3,
335336
'name': 'proponent_comments_sheet',
336337
'description': 'Comments export for proponent',
337-
'created_date': datetime.utcnow(),
338-
'updated_date': datetime.utcnow(),
338+
'created_date': utc_now(),
339+
'updated_date': utc_now(),
339340
},
340341
]
341342

@@ -362,24 +363,24 @@ def upgrade():
362363
'type_id': 1,
363364
'hash_code': None,
364365
'extension': 'xlsx',
365-
'created_date': datetime.utcnow(),
366-
'updated_date': datetime.utcnow(),
366+
'created_date': utc_now(),
367+
'updated_date': utc_now(),
367368
},
368369
{
369370
'id': 2,
370371
'type_id': 2,
371372
'hash_code': None,
372373
'extension': 'xlsx',
373-
'created_date': datetime.utcnow(),
374-
'updated_date': datetime.utcnow(),
374+
'created_date': utc_now(),
375+
'updated_date': utc_now(),
375376
},
376377
{
377378
'id': 3,
378379
'type_id': 3,
379380
'hash_code': None,
380381
'extension': 'xlsx',
381-
'created_date': datetime.utcnow(),
382-
'updated_date': datetime.utcnow(),
382+
'created_date': utc_now(),
383+
'updated_date': utc_now(),
383384
},
384385
]
385386

@@ -404,36 +405,36 @@ def upgrade():
404405
'id': 1,
405406
'status_name': 'Draft',
406407
'description': 'Not ready to the public',
407-
'created_date': datetime.utcnow(),
408-
'updated_date': datetime.utcnow(),
408+
'created_date': utc_now(),
409+
'updated_date': utc_now(),
409410
},
410411
{
411412
'id': 2,
412413
'status_name': 'Published',
413414
'description': 'Visible to the public',
414-
'created_date': datetime.utcnow(),
415-
'updated_date': datetime.utcnow(),
415+
'created_date': utc_now(),
416+
'updated_date': utc_now(),
416417
},
417418
{
418419
'id': 3,
419420
'status_name': 'Closed',
420421
'description': 'The engagement period is over',
421-
'created_date': datetime.utcnow(),
422-
'updated_date': datetime.utcnow(),
422+
'created_date': utc_now(),
423+
'updated_date': utc_now(),
423424
},
424425
{
425426
'id': 4,
426427
'status_name': 'Scheduled',
427428
'description': 'Scheduled to be published',
428-
'created_date': datetime.utcnow(),
429-
'updated_date': datetime.utcnow(),
429+
'created_date': utc_now(),
430+
'updated_date': utc_now(),
430431
},
431432
{
432433
'id': 5,
433434
'status_name': 'Unpublished',
434435
'description': 'Unpublished and hidden',
435-
'created_date': datetime.utcnow(),
436-
'updated_date': datetime.utcnow(),
436+
'created_date': utc_now(),
437+
'updated_date': utc_now(),
437438
},
438439
]
439440

@@ -458,29 +459,29 @@ def upgrade():
458459
'id': 1,
459460
'status_name': 'Pending',
460461
'description': 'Comment is pending review',
461-
'created_date': datetime.utcnow(),
462-
'updated_date': datetime.utcnow(),
462+
'created_date': utc_now(),
463+
'updated_date': utc_now(),
463464
},
464465
{
465466
'id': 2,
466467
'status_name': 'Approved',
467468
'description': 'Comment is accepted for public view',
468-
'created_date': datetime.utcnow(),
469-
'updated_date': datetime.utcnow(),
469+
'created_date': utc_now(),
470+
'updated_date': utc_now(),
470471
},
471472
{
472473
'id': 3,
473474
'status_name': 'Rejected',
474475
'description': 'Comment is rejected and not shown',
475-
'created_date': datetime.utcnow(),
476-
'updated_date': datetime.utcnow(),
476+
'created_date': utc_now(),
477+
'updated_date': utc_now(),
477478
},
478479
{
479480
'id': 4,
480481
'status_name': 'Needs further review',
481482
'description': 'Comment needs further review',
482-
'created_date': datetime.utcnow(),
483-
'updated_date': datetime.utcnow(),
483+
'created_date': utc_now(),
484+
'updated_date': utc_now(),
484485
},
485486
]
486487

@@ -505,22 +506,22 @@ def upgrade():
505506
'id': 1,
506507
'status_name': 'ACTIVE',
507508
'description': 'Active Membership',
508-
'created_date': datetime.utcnow(),
509-
'updated_date': datetime.utcnow(),
509+
'created_date': utc_now(),
510+
'updated_date': utc_now(),
510511
},
511512
{
512513
'id': 2,
513514
'status_name': 'INACTIVE',
514515
'description': 'Inactive Membership',
515-
'created_date': datetime.utcnow(),
516-
'updated_date': datetime.utcnow(),
516+
'created_date': utc_now(),
517+
'updated_date': utc_now(),
517518
},
518519
{
519520
'id': 3,
520521
'status_name': 'REVOKED',
521522
'description': 'Revoked Membership',
522-
'created_date': datetime.utcnow(),
523-
'updated_date': datetime.utcnow(),
523+
'created_date': utc_now(),
524+
'updated_date': utc_now(),
524525
},
525526
]
526527

api/migrations/versions/614b5376f19c_add_tables_for_role_management.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
from sqlalchemy import String, Integer, DateTime
1212
from datetime import datetime
1313

14+
from api.utils.datetime import utc_now
15+
1416

1517
# revision identifiers, used by Alembic.
1618
revision = '614b5376f19c'
@@ -86,8 +88,8 @@ def upgrade():
8688
{'id': 4, 'name': 'VIEWER'},
8789
]
8890
for group in group_data:
89-
group['created_date'] = datetime.utcnow()
90-
group['updated_date'] = datetime.utcnow()
91+
group['created_date'] = utc_now()
92+
group['updated_date'] = utc_now()
9193
# Perform bulk insert in a single operation
9294
op.bulk_insert(group_table, group_data)
9395

@@ -291,8 +293,8 @@ def upgrade():
291293
},
292294
]
293295
for role in role_data:
294-
role['created_date'] = datetime.utcnow()
295-
role['updated_date'] = datetime.utcnow()
296+
role['created_date'] = utc_now()
297+
role['updated_date'] = utc_now()
296298
# Perform bulk insert in a single operation
297299
op.bulk_insert(role_table, role_data)
298300

@@ -370,8 +372,8 @@ def upgrade():
370372
{'id': 59, 'role_id': 37, 'group_id': 4},
371373
]
372374
for group_role_mapping in group_role_mapping_data:
373-
group_role_mapping['created_date'] = datetime.utcnow()
374-
group_role_mapping['updated_date'] = datetime.utcnow()
375+
group_role_mapping['created_date'] = utc_now()
376+
group_role_mapping['updated_date'] = utc_now()
375377
# Perform bulk insert in a single operation
376378
op.bulk_insert(group_role_mapping_table, group_role_mapping_data)
377379

api/src/api/models/base_model.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,15 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414
"""Super class to handle all operations related to base model."""
15-
from datetime import datetime
1615

1716
from flask import g
1817
from sqlalchemy import Column
1918
from sqlalchemy.ext.declarative import declared_attr
2019

20+
from api.utils.datetime import utc_datetime
21+
2122
from .db import db
23+
2224
TENANT_ID = 'tenant_id'
2325

2426

@@ -27,8 +29,8 @@ class BaseModel(db.Model):
2729

2830
__abstract__ = True
2931

30-
created_date = db.Column(db.DateTime, default=datetime.utcnow, nullable=False)
31-
updated_date = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow, nullable=True)
32+
created_date = db.Column(db.DateTime, default=utc_datetime, nullable=False)
33+
updated_date = db.Column(db.DateTime, default=utc_datetime, onupdate=utc_datetime, nullable=True)
3234

3335
@declared_attr
3436
def created_by(cls): # pylint:disable=no-self-argument, # noqa: N805

api/src/api/models/comment.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
Manages the comment
44
"""
55
from __future__ import annotations
6-
from datetime import datetime
76
from operator import or_
87

98
from sqlalchemy import and_, asc, desc
@@ -12,6 +11,7 @@
1211
from sqlalchemy.sql.schema import ForeignKey
1312
from sqlalchemy.ext.hybrid import hybrid_property
1413

14+
from api.utils.datetime import utc_now
1515
from api.constants.comment_status import Status as CommentStatus
1616
from api.constants.engagement_status import Status as EngagementStatus
1717
from api.models.pagination_options import PaginationOptions
@@ -163,8 +163,8 @@ def __create_new_comment_entity(comment: CommentSchema):
163163
"""Create new comment entity."""
164164
return Comment(
165165
text=comment.get('text', None),
166-
submission_date=datetime.utcnow(),
167-
created_date=datetime.utcnow(),
166+
submission_date=utc_now(),
167+
created_date=utc_now(),
168168
created_by=comment.get('participant_id', None),
169169
survey_id=comment.get('survey_id', None),
170170
participant_id=comment.get('participant_id', None),
@@ -211,7 +211,7 @@ def update(cls, submission_id, comment: CommentSchema, session=None) -> Comment:
211211
update_fields = {
212212
'text': comment.get('text', None),
213213
'updated_by': comment.get('participant_id', None),
214-
'updated_date': datetime.utcnow(),
214+
'updated_date': utc_now(),
215215
}
216216

217217
query.update(update_fields)

api/src/api/models/contact.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
Manages the contact
44
"""
55
from __future__ import annotations
6-
7-
from datetime import datetime
86
from typing import Optional
97

8+
from api.utils.datetime import utc_now
9+
1010
from .base_model import BaseModel
1111
from .db import db
1212

@@ -43,8 +43,8 @@ def create_contact(cls, contact) -> Contact:
4343
phone_number=contact.get('phone_number', None),
4444
address=contact.get('address', None),
4545
bio=contact.get('bio', None),
46-
created_date=datetime.utcnow(),
47-
updated_date=datetime.utcnow(),
46+
created_date=utc_now(),
47+
updated_date=utc_now(),
4848
created_by=contact.get('created_by', None),
4949
updated_by=contact.get('updated_by', None),
5050
avatar_filename=contact.get('avatar_filename', None),
@@ -61,7 +61,7 @@ def update_contact(cls, contact_data: dict) -> Optional[Contact or None]:
6161
contact: Contact = query.first()
6262
if not contact:
6363
return None
64-
contact_data['updated_date'] = datetime.utcnow()
64+
contact_data['updated_date'] = utc_now()
6565
query.update(contact_data)
6666
db.session.commit()
6767
return contact

api/src/api/models/email_queue.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
from api.models.engagement import Engagement
1212
from api.utils.datetime import local_datetime
1313
from api.utils.enums import SourceAction, SourceType
14+
1415
from .base_model import BaseModel
1516
from .db import db
1617

0 commit comments

Comments
 (0)