/usr/lib/python2.7/dist-packages/maasserver/models/timestampedmodel.py is in python-django-maas 1.5+bzr2252-0ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | # Copyright 2012 Canonical Ltd. This software is licensed under the
# GNU Affero General Public License version 3 (see the file LICENSE).
"""Model base class with creation/update timestamps."""
from __future__ import (
absolute_import,
print_function,
unicode_literals,
)
str = None
__metaclass__ = type
__all__ = [
'TimestampedModel',
]
from django.db import connection
from django.db.models import (
DateTimeField,
Model,
)
from maasserver import DefaultMeta
def now():
"""Current database time (as per start of current transaction)."""
cursor = connection.cursor()
cursor.execute("select now()")
return cursor.fetchone()[0]
class TimestampedModel(Model):
"""Abstract base model with creation/update timestamps.
Timestamps are taken from the database transaction clock.
:ivar created: Object's creation time.
:ivar updated: Time of object's latest update.
"""
class Meta(DefaultMeta):
abstract = True
created = DateTimeField(editable=False)
updated = DateTimeField(editable=False)
def save(self, *args, **kwargs):
current_time = now()
if self.id is None:
self.created = current_time
self.updated = current_time
return super(TimestampedModel, self).save(*args, **kwargs)
|