From 0e99dbd0536d556f56cdc49ec5d0188a27edb02e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Tue, 14 Feb 2017 21:23:58 +0100 Subject: [PATCH] misc: add method to get last update time of a page and its cells (#15001) --- combo/data/models.py | 4 ++++ tests/test_pages.py | 17 +++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/combo/data/models.py b/combo/data/models.py index d03335a0..6d6600e3 100644 --- a/combo/data/models.py +++ b/combo/data/models.py @@ -264,6 +264,10 @@ class Page(models.Model): def get_redirect_url(self): return utils.get_templated_url(self.redirect_url) + def get_last_update_time(self): + cells = CellBase.get_cells(page_id=self.id) + return max([self.last_update_timestamp] + [x.last_update_timestamp for x in cells]) + class CellMeta(MediaDefiningClass, ModelBase): pass diff --git a/tests/test_pages.py b/tests/test_pages.py index 7c71acd2..9b6c4ada 100644 --- a/tests/test_pages.py +++ b/tests/test_pages.py @@ -1,10 +1,12 @@ from StringIO import StringIO +import datetime import os import pytest import sys from django.conf import settings from django.contrib.auth.models import User, Group +from django.utils.timezone import now from combo.data.models import Page, CellBase, TextCell, LinkCell from combo.data.management.commands.import_site import Command as ImportSiteCommand from combo.data.management.commands.export_site import Command as ExportSiteCommand @@ -245,3 +247,18 @@ def test_import_export_management_commands(): assert len(CellBase.get_cells(page_id=new_page_1.id)) == 1 assert isinstance(CellBase.get_cells(page_id=new_page_1.id)[0], TextCell) assert CellBase.get_cells(page_id=new_page_1.id)[0].text == 'foo' + +def test_last_update_time(): + page = Page(title=u'foo', slug='foo', order=0) + page.save() + + cell = TextCell(page=page, text='foo', order=0) + cell.save() + + cell = TextCell(page=page, text='bar', order=0) + cell.save() + + future_time = now() + datetime.timedelta(days=2) + TextCell.objects.filter(pk=cell.id).update(last_update_timestamp=future_time) + + assert page.get_last_update_time() == future_time