Skip to content

Commit 0c81025

Browse files
author
Matthew Fisher
committed
fix(controller): standardize API datetime field format
This brings the datetime field's formatting more in line with the rest of the platform.
1 parent 9efda33 commit 0c81025

3 files changed

Lines changed: 25 additions & 9 deletions

File tree

controller/api/models.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,8 @@ def log(self, message):
128128
existing logging configurations.
129129
"""
130130
with open(os.path.join(settings.DEIS_LOG_DIR, self.id + '.log'), 'a') as f:
131-
msg = "{} deis[api]: {}\n".format(time.strftime('%Y-%m-%d %H:%M:%S'), message)
131+
msg = "{} deis[api]: {}\n".format(time.strftime(settings.DEIS_DATETIME_FORMAT),
132+
message)
132133
f.write(msg.encode('utf-8'))
133134

134135
def create(self, *args, **kwargs):

controller/api/serializers.py

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -80,11 +80,12 @@ class AppSerializer(serializers.ModelSerializer):
8080
id = serializers.SlugField(default=utils.generate_app_name)
8181
url = serializers.Field(source='url')
8282
structure = JSONFieldSerializer(source='structure', required=False)
83+
created = serializers.DateTimeField(format=settings.DEIS_DATETIME_FORMAT, read_only=True)
84+
updated = serializers.DateTimeField(format=settings.DEIS_DATETIME_FORMAT, read_only=True)
8385

8486
class Meta:
8587
"""Metadata options for a :class:`AppSerializer`."""
8688
model = models.App
87-
read_only_fields = ('created', 'updated')
8889

8990
def validate_id(self, attrs, source):
9091
"""
@@ -105,11 +106,13 @@ class BuildSerializer(serializers.ModelSerializer):
105106
owner = serializers.Field(source='owner.username')
106107
app = serializers.SlugRelatedField(slug_field='id')
107108
procfile = JSONFieldSerializer(source='procfile', required=False)
109+
created = serializers.DateTimeField(format=settings.DEIS_DATETIME_FORMAT, read_only=True)
110+
updated = serializers.DateTimeField(format=settings.DEIS_DATETIME_FORMAT, read_only=True)
108111

109112
class Meta:
110113
"""Metadata options for a :class:`BuildSerializer`."""
111114
model = models.Build
112-
read_only_fields = ('uuid', 'created', 'updated')
115+
read_only_fields = ('uuid',)
113116

114117

115118
class ConfigSerializer(serializers.ModelSerializer):
@@ -121,11 +124,13 @@ class ConfigSerializer(serializers.ModelSerializer):
121124
memory = JSONFieldSerializer(source='memory', required=False)
122125
cpu = JSONFieldSerializer(source='cpu', required=False)
123126
tags = JSONFieldSerializer(source='tags', required=False)
127+
created = serializers.DateTimeField(format=settings.DEIS_DATETIME_FORMAT, read_only=True)
128+
updated = serializers.DateTimeField(format=settings.DEIS_DATETIME_FORMAT, read_only=True)
124129

125130
class Meta:
126131
"""Metadata options for a :class:`ConfigSerializer`."""
127132
model = models.Config
128-
read_only_fields = ('uuid', 'created', 'updated')
133+
read_only_fields = ('uuid',)
129134

130135
def validate_memory(self, attrs, source):
131136
for k, v in attrs.get(source, {}).items():
@@ -174,11 +179,13 @@ class ReleaseSerializer(serializers.ModelSerializer):
174179
app = serializers.SlugRelatedField(slug_field='id')
175180
config = serializers.SlugRelatedField(slug_field='uuid')
176181
build = serializers.SlugRelatedField(slug_field='uuid')
182+
created = serializers.DateTimeField(format=settings.DEIS_DATETIME_FORMAT, read_only=True)
183+
updated = serializers.DateTimeField(format=settings.DEIS_DATETIME_FORMAT, read_only=True)
177184

178185
class Meta:
179186
"""Metadata options for a :class:`ReleaseSerializer`."""
180187
model = models.Release
181-
read_only_fields = ('uuid', 'created', 'updated')
188+
read_only_fields = ('uuid',)
182189

183190

184191
class ContainerSerializer(serializers.ModelSerializer):
@@ -187,11 +194,12 @@ class ContainerSerializer(serializers.ModelSerializer):
187194
owner = serializers.Field(source='owner.username')
188195
app = OwnerSlugRelatedField(slug_field='id')
189196
release = serializers.SlugRelatedField(slug_field='uuid')
197+
created = serializers.DateTimeField(format=settings.DEIS_DATETIME_FORMAT, read_only=True)
198+
updated = serializers.DateTimeField(format=settings.DEIS_DATETIME_FORMAT, read_only=True)
190199

191200
class Meta:
192201
"""Metadata options for a :class:`ContainerSerializer`."""
193202
model = models.Container
194-
read_only_fields = ('created', 'updated')
195203

196204
def transform_release(self, obj, value):
197205
return "v{}".format(obj.release.version)
@@ -201,24 +209,26 @@ class KeySerializer(serializers.ModelSerializer):
201209
"""Serialize a :class:`~api.models.Key` model."""
202210

203211
owner = serializers.Field(source='owner.username')
212+
created = serializers.DateTimeField(format=settings.DEIS_DATETIME_FORMAT, read_only=True)
213+
updated = serializers.DateTimeField(format=settings.DEIS_DATETIME_FORMAT, read_only=True)
204214

205215
class Meta:
206216
"""Metadata options for a KeySerializer."""
207217
model = models.Key
208-
read_only_fields = ('created', 'updated')
209218

210219

211220
class DomainSerializer(serializers.ModelSerializer):
212221
"""Serialize a :class:`~api.models.Domain` model."""
213222

214223
owner = serializers.Field(source='owner.username')
215224
app = serializers.SlugRelatedField(slug_field='id')
225+
created = serializers.DateTimeField(format=settings.DEIS_DATETIME_FORMAT, read_only=True)
226+
updated = serializers.DateTimeField(format=settings.DEIS_DATETIME_FORMAT, read_only=True)
216227

217228
class Meta:
218229
"""Metadata options for a :class:`DomainSerializer`."""
219230
model = models.Domain
220231
fields = ('domain', 'owner', 'created', 'updated', 'app')
221-
read_only_fields = ('created', 'updated')
222232

223233
def validate_domain(self, attrs, source):
224234
"""
@@ -250,8 +260,10 @@ class PushSerializer(serializers.ModelSerializer):
250260

251261
owner = serializers.Field(source='owner.username')
252262
app = serializers.SlugRelatedField(slug_field='id')
263+
created = serializers.DateTimeField(format=settings.DEIS_DATETIME_FORMAT, read_only=True)
264+
updated = serializers.DateTimeField(format=settings.DEIS_DATETIME_FORMAT, read_only=True)
253265

254266
class Meta:
255267
"""Metadata options for a :class:`PushSerializer`."""
256268
model = models.Push
257-
read_only_fields = ('uuid', 'created', 'updated')
269+
read_only_fields = ('uuid',)

controller/deis/settings.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,9 @@
256256
DEFAULT_BUILD = 'deis/helloworld'
257257
DEIS_DOMAIN = 'deisapp.local'
258258

259+
# standard datetime format used for logging, model timestamps, etc.
260+
DEIS_DATETIME_FORMAT = '%Y-%m-%d %H:%M:%S'
261+
259262
# default scheduler settings
260263
SCHEDULER_MODULE = 'mock'
261264
SCHEDULER_TARGET = '' # path to scheduler endpoint (e.g. /var/run/fleet.sock)

0 commit comments

Comments
 (0)