Skip to content

Commit

Permalink
Merge pull request #26 from CIAT-DAPA/develop
Browse files Browse the repository at this point in the history
Develop
  • Loading branch information
jchemutt authored Nov 8, 2024
2 parents d7a9439 + 78e3dc5 commit f8491b6
Show file tree
Hide file tree
Showing 6 changed files with 37 additions and 26 deletions.
15 changes: 9 additions & 6 deletions src/ormWP/models/forecast.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from mongoengine import Document, ReferenceField, FloatField, DateField, DictField
from datetime import datetime
from datetime import datetime,timezone
from .woreda import Woreda

class Forecast(Document):
Expand Down Expand Up @@ -39,22 +39,25 @@ class Forecast(Document):
mean = FloatField(required=True, precision=4)
date = DateField(required=True)
trace = DictField(default=lambda: {
'created_at': datetime.now(),
'updated_at': datetime.now()
'created_at': datetime.now(timezone.utc),
'updated_at': datetime.now(timezone.utc)
})

def save(self, *args, **kwargs):
"""Override save to update the 'updated_at' field."""
now = datetime.now(timezone.utc)

if not self.trace:
self.trace = {
'created_at': datetime.now(),
'updated_at': datetime.now()
'created_at': now,
'updated_at': now
}
else:
self.trace['updated_at'] = datetime.now()
self.trace['updated_at'] = now


self._mark_as_changed('trace')

return super().save(*args, **kwargs)


17 changes: 10 additions & 7 deletions src/ormWP/models/trend.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from mongoengine import Document, ReferenceField, FloatField, DateField, DictField
from datetime import datetime
from datetime import datetime, timezone
from .woreda import Woreda

class Trend(Document):
Expand Down Expand Up @@ -39,21 +39,24 @@ class Trend(Document):
mean = FloatField(required=True, precision=4)
date = DateField(required=True)
trace = DictField(default=lambda: {
'created_at': datetime.now(),
'updated_at': datetime.now()
'created_at': datetime.now(timezone.utc),
'updated_at': datetime.now(timezone.utc)
})

def save(self, *args, **kwargs):
"""Override save to update the 'updated_at' field."""
now = datetime.now(timezone.utc)

if not self.trace:
self.trace = {
'created_at': datetime.now(),
'updated_at': datetime.now()
'created_at': now,
'updated_at': now
}
else:
self.trace['updated_at'] = datetime.now()
self.trace['updated_at'] = now


self._mark_as_changed('trace')

return super().save(*args, **kwargs)

18 changes: 13 additions & 5 deletions src/ormWP/models/woreda.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from mongoengine import Document, StringField, DictField
from datetime import datetime
from datetime import datetime,timezone

class Woreda(Document):
"""
Expand Down Expand Up @@ -42,15 +42,23 @@ class Woreda(Document):

def save(self, *args, **kwargs):
"""Override save to update the 'updated_at' field."""
now = datetime.now(timezone.utc)

if not self.trace:
# Initialize the trace field if it's missing
self.trace = {
'created_at': datetime.now(),
'updated_at': datetime.now(),
'enabled': True
'created_at': now,
'updated_at': now,
'enabled': True
}
else:
self.trace['updated_at'] = datetime.now()
# Update the 'updated_at' field
self.trace['updated_at'] = now

# Explicitly mark the 'trace' field as modified
self._mark_as_changed('trace')

# Persist changes
return super().save(*args, **kwargs)


6 changes: 2 additions & 4 deletions src/tests/test_forecast.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,21 +48,19 @@ def test_create_forecast(self):

def test_update_forecast(self):
self.forecast.save()


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

# Fetch the updated Forecast from the database
updated_forecast = Forecast.objects(id=self.forecast.id).first()


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

# Assert that the updated_at field has changed
self.assertNotEqual(updated_forecast.trace['updated_at'], updated_forecast.trace['created_at'])
self.assertTrue(updated_forecast.trace['updated_at'] > updated_forecast.trace['created_at'])

def test_delete_forecast(self):
self.forecast.save()

Expand Down
3 changes: 0 additions & 3 deletions src/tests/test_trend.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,9 +59,6 @@ def test_update_trend(self):
# Assert that the Trend's mean has been updated
self.assertEqual(updated_trend.mean, 2.123)

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

def test_delete_trend(self):
self.trend.save()
Expand Down
4 changes: 3 additions & 1 deletion src/tests/test_woreda.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,17 +37,19 @@ def test_create_woreda(self):
def test_update_woreda(self):
# Save the Woreda to the database
self.woreda.save()


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

# Fetch the updated Woreda from the database
updated_woreda = Woreda.objects(id=self.woreda.id).first()


# Assert that the Woreda's name has been updated
self.assertEqual(updated_woreda.name, "Updated Woreda")
self.assertNotEqual(updated_woreda.trace['updated_at'], updated_woreda.trace['created_at'])


def test_delete_woreda(self):
# Save the Woreda to the database
Expand Down

0 comments on commit f8491b6

Please sign in to comment.