Skip to content

Commit 78e3dc5

Browse files
authored
Merge pull request #25 from CIAT-DAPA/jchemutt_dev
Updated Forages Models
2 parents 67c9bda + b8375ba commit 78e3dc5

File tree

6 files changed

+37
-26
lines changed

6 files changed

+37
-26
lines changed

src/ormWP/models/forecast.py

+9-6
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from mongoengine import Document, ReferenceField, FloatField, DateField, DictField
2-
from datetime import datetime
2+
from datetime import datetime,timezone
33
from .woreda import Woreda
44

55
class Forecast(Document):
@@ -39,22 +39,25 @@ class Forecast(Document):
3939
mean = FloatField(required=True, precision=4)
4040
date = DateField(required=True)
4141
trace = DictField(default=lambda: {
42-
'created_at': datetime.now(),
43-
'updated_at': datetime.now()
42+
'created_at': datetime.now(timezone.utc),
43+
'updated_at': datetime.now(timezone.utc)
4444
})
4545

4646
def save(self, *args, **kwargs):
4747
"""Override save to update the 'updated_at' field."""
48+
now = datetime.now(timezone.utc)
49+
4850
if not self.trace:
4951
self.trace = {
50-
'created_at': datetime.now(),
51-
'updated_at': datetime.now()
52+
'created_at': now,
53+
'updated_at': now
5254
}
5355
else:
54-
self.trace['updated_at'] = datetime.now()
56+
self.trace['updated_at'] = now
5557

5658

5759
self._mark_as_changed('trace')
5860

5961
return super().save(*args, **kwargs)
62+
6063

src/ormWP/models/trend.py

+10-7
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from mongoengine import Document, ReferenceField, FloatField, DateField, DictField
2-
from datetime import datetime
2+
from datetime import datetime, timezone
33
from .woreda import Woreda
44

55
class Trend(Document):
@@ -39,21 +39,24 @@ class Trend(Document):
3939
mean = FloatField(required=True, precision=4)
4040
date = DateField(required=True)
4141
trace = DictField(default=lambda: {
42-
'created_at': datetime.now(),
43-
'updated_at': datetime.now()
42+
'created_at': datetime.now(timezone.utc),
43+
'updated_at': datetime.now(timezone.utc)
4444
})
4545

4646
def save(self, *args, **kwargs):
4747
"""Override save to update the 'updated_at' field."""
48+
now = datetime.now(timezone.utc)
49+
4850
if not self.trace:
4951
self.trace = {
50-
'created_at': datetime.now(),
51-
'updated_at': datetime.now()
52+
'created_at': now,
53+
'updated_at': now
5254
}
5355
else:
54-
self.trace['updated_at'] = datetime.now()
56+
self.trace['updated_at'] = now
5557

56-
58+
5759
self._mark_as_changed('trace')
5860

5961
return super().save(*args, **kwargs)
62+

src/ormWP/models/woreda.py

+13-5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from mongoengine import Document, StringField, DictField
2-
from datetime import datetime
2+
from datetime import datetime,timezone
33

44
class Woreda(Document):
55
"""
@@ -42,15 +42,23 @@ class Woreda(Document):
4242

4343
def save(self, *args, **kwargs):
4444
"""Override save to update the 'updated_at' field."""
45+
now = datetime.now(timezone.utc)
46+
4547
if not self.trace:
48+
# Initialize the trace field if it's missing
4649
self.trace = {
47-
'created_at': datetime.now(),
48-
'updated_at': datetime.now(),
49-
'enabled': True
50+
'created_at': now,
51+
'updated_at': now,
52+
'enabled': True
5053
}
5154
else:
52-
self.trace['updated_at'] = datetime.now()
55+
# Update the 'updated_at' field
56+
self.trace['updated_at'] = now
5357

58+
# Explicitly mark the 'trace' field as modified
5459
self._mark_as_changed('trace')
5560

61+
# Persist changes
5662
return super().save(*args, **kwargs)
63+
64+

src/tests/test_forecast.py

+2-4
Original file line numberDiff line numberDiff line change
@@ -48,21 +48,19 @@ def test_create_forecast(self):
4848

4949
def test_update_forecast(self):
5050
self.forecast.save()
51+
5152

5253
# Update the Forecast's mean value
5354
self.forecast.mean = 2.456
5455
self.forecast.save()
5556

5657
# Fetch the updated Forecast from the database
5758
updated_forecast = Forecast.objects(id=self.forecast.id).first()
59+
5860

5961
# Assert that the Forecast's mean has been updated
6062
self.assertEqual(updated_forecast.mean, 2.456)
6163

62-
# Assert that the updated_at field has changed
63-
self.assertNotEqual(updated_forecast.trace['updated_at'], updated_forecast.trace['created_at'])
64-
self.assertTrue(updated_forecast.trace['updated_at'] > updated_forecast.trace['created_at'])
65-
6664
def test_delete_forecast(self):
6765
self.forecast.save()
6866

src/tests/test_trend.py

-3
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,6 @@ def test_update_trend(self):
5959
# Assert that the Trend's mean has been updated
6060
self.assertEqual(updated_trend.mean, 2.123)
6161

62-
# Assert that the updated_at field has changed
63-
self.assertNotEqual(updated_trend.trace['updated_at'], updated_trend.trace['created_at'])
64-
self.assertTrue(updated_trend.trace['updated_at'] > updated_trend.trace['created_at'])
6562

6663
def test_delete_trend(self):
6764
self.trend.save()

src/tests/test_woreda.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -37,17 +37,19 @@ def test_create_woreda(self):
3737
def test_update_woreda(self):
3838
# Save the Woreda to the database
3939
self.woreda.save()
40+
4041

4142
# Update the Woreda's name
4243
self.woreda.name = "Updated Woreda"
4344
self.woreda.save()
4445

4546
# Fetch the updated Woreda from the database
4647
updated_woreda = Woreda.objects(id=self.woreda.id).first()
48+
4749

4850
# Assert that the Woreda's name has been updated
4951
self.assertEqual(updated_woreda.name, "Updated Woreda")
50-
self.assertNotEqual(updated_woreda.trace['updated_at'], updated_woreda.trace['created_at'])
52+
5153

5254
def test_delete_woreda(self):
5355
# Save the Woreda to the database

0 commit comments

Comments
 (0)