Skip to content
This repository has been archived by the owner on May 15, 2020. It is now read-only.

Commit

Permalink
Merge pull request #46 from JeroennC/master
Browse files Browse the repository at this point in the history
OPT: Change datetime field names to include '_at'
  • Loading branch information
JeroennC authored Nov 5, 2019
2 parents 28fb04f + 657ecea commit 595139f
Show file tree
Hide file tree
Showing 11 changed files with 199 additions and 56 deletions.
6 changes: 3 additions & 3 deletions katka/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,8 @@ class SCMPipelineRunAdmin(WithUsernameAdminModel):

@admin.register(SCMStepRun)
class SCMStepRunAdmin(WithUsernameAdminModel):
fields = ('slug', 'name', 'stage', 'status', 'output', 'started', 'ended', 'scm_pipeline_run')
list_display = ('pk', 'scm_pipeline_run', 'name', 'stage', 'status', 'started', 'ended')
fields = ('slug', 'name', 'stage', 'status', 'output', 'started_at', 'ended_at', 'scm_pipeline_run')
list_display = ('pk', 'scm_pipeline_run', 'name', 'stage', 'status', 'started_at', 'ended_at')
list_filter = ('scm_pipeline_run__application__name',)


Expand All @@ -71,5 +71,5 @@ class ApplicationMetadataAdmin(WithUsernameAdminModel):

@admin.register(SCMRelease)
class SCMReleaseAdmin(WithUsernameAdminModel):
fields = ('name', 'status', 'started', 'ended', 'scm_pipeline_runs')
fields = ('name', 'status', 'started_at', 'ended_at', 'scm_pipeline_runs')
list_display = ('pk', 'name')
4 changes: 2 additions & 2 deletions katka/auditedmodel.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ class AuditedModel(models.Model):
class Meta:
abstract = True

created = models.DateTimeField(auto_now_add=True, editable=False)
created_at = models.DateTimeField(auto_now_add=True, editable=False)
created_username = AutoUsernameField(only_on_create=True)
modified = models.DateTimeField(auto_now=True, editable=False)
modified_at = models.DateTimeField(auto_now=True, editable=False)
modified_username = AutoUsernameField()
deleted = models.BooleanField(default=False)
143 changes: 143 additions & 0 deletions katka/migrations/0025_datetime_field_names.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,143 @@
# Generated by Django 2.2.7 on 2019-11-05 10:24

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('katka', '0024_scmsteprun_started_ended'),
]

operations = [
migrations.RenameField(
model_name='application',
old_name='created',
new_name='created_at',
),
migrations.RenameField(
model_name='application',
old_name='modified',
new_name='modified_at',
),
migrations.RenameField(
model_name='applicationmetadata',
old_name='created',
new_name='created_at',
),
migrations.RenameField(
model_name='applicationmetadata',
old_name='modified',
new_name='modified_at',
),
migrations.RenameField(
model_name='credential',
old_name='created',
new_name='created_at',
),
migrations.RenameField(
model_name='credential',
old_name='modified',
new_name='modified_at',
),
migrations.RenameField(
model_name='credentialsecret',
old_name='created',
new_name='created_at',
),
migrations.RenameField(
model_name='credentialsecret',
old_name='modified',
new_name='modified_at',
),
migrations.RenameField(
model_name='project',
old_name='created',
new_name='created_at',
),
migrations.RenameField(
model_name='project',
old_name='modified',
new_name='modified_at',
),
migrations.RenameField(
model_name='scmpipelinerun',
old_name='created',
new_name='created_at',
),
migrations.RenameField(
model_name='scmpipelinerun',
old_name='modified',
new_name='modified_at',
),
migrations.RenameField(
model_name='scmrelease',
old_name='created',
new_name='created_at',
),
migrations.RenameField(
model_name='scmrelease',
old_name='ended',
new_name='ended_at',
),
migrations.RenameField(
model_name='scmrelease',
old_name='modified',
new_name='modified_at',
),
migrations.RenameField(
model_name='scmrelease',
old_name='started',
new_name='started_at',
),
migrations.RenameField(
model_name='scmrepository',
old_name='created',
new_name='created_at',
),
migrations.RenameField(
model_name='scmrepository',
old_name='modified',
new_name='modified_at',
),
migrations.RenameField(
model_name='scmservice',
old_name='created',
new_name='created_at',
),
migrations.RenameField(
model_name='scmservice',
old_name='modified',
new_name='modified_at',
),
migrations.RenameField(
model_name='scmsteprun',
old_name='created',
new_name='created_at',
),
migrations.RenameField(
model_name='scmsteprun',
old_name='ended',
new_name='ended_at',
),
migrations.RenameField(
model_name='scmsteprun',
old_name='modified',
new_name='modified_at',
),
migrations.RenameField(
model_name='team',
old_name='created',
new_name='created_at',
),
migrations.RenameField(
model_name='team',
old_name='modified',
new_name='modified_at',
),
migrations.RenameField(
model_name='scmsteprun',
old_name='started',
new_name='started_at',
),
]
8 changes: 4 additions & 4 deletions katka/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -139,8 +139,8 @@ class Meta:
# This allows easy sorting for e.g. frontends.
scm_pipeline_run = models.ForeignKey(SCMPipelineRun, on_delete=models.PROTECT)
tags = models.TextField(blank=True)
started = models.DateTimeField(blank=True, null=True)
ended = models.DateTimeField(blank=True, null=True)
started_at = models.DateTimeField(blank=True, null=True)
ended_at = models.DateTimeField(blank=True, null=True)


# SCM Releases, comprises a range of commits that are released
Expand All @@ -152,8 +152,8 @@ class Meta:
public_identifier = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
name = models.CharField(max_length=255)
status = models.CharField(max_length=30, choices=RELEASE_STATUS_CHOICES, default=RELEASE_STATUS_IN_PROGRESS)
started = models.DateTimeField(null=True)
ended = models.DateTimeField(null=True)
started_at = models.DateTimeField(null=True)
ended_at = models.DateTimeField(null=True)
scm_pipeline_runs = models.ManyToManyField(SCMPipelineRun)


Expand Down
10 changes: 5 additions & 5 deletions katka/releases.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,8 @@ def close_release_if_pipeline_finished(pipeline: SCMPipelineRun):
with username_on_model(SCMRelease, pipeline.modified_username):
if release:
release.name = pre_conditions.version_number
release.started = pre_conditions.prod_change_start_date
release.ended = pre_conditions.prod_change_end_date
release.started_at = pre_conditions.prod_change_start_date
release.ended_at = pre_conditions.prod_change_end_date
release.save()

return release.status if release else None
Expand All @@ -80,13 +80,13 @@ def _gather_steps_pre_conditions(pipeline):
continue
_add_output(pipeline_output=pipeline_output, step_output=step.output)
if constants.TAG_PRODUCTION_CHANGE_STARTED in step.tags.split(" "):
prod_start_date = step.started
prod_start_date = step.started_at

if prod_start_date is not None:
success_status_between_start_end.append(step.status == constants.STEP_STATUS_SUCCESS)

if constants.TAG_PRODUCTION_CHANGE_ENDED in step.tags.split(" "):
prod_end_date = step.ended
prod_end_date = step.ended_at
break

return StepsPreConditions(pipeline_output.get("release.version"),
Expand All @@ -113,7 +113,7 @@ def _get_current_release(pipeline):
log.error(f'No open releases found for application {pipeline.application.pk}')
elif len(releases) > 1:
log.error(f'Multiple open releases found for application {pipeline.application.pk}, picking newest')
release = releases.order_by('-created').first()
release = releases.order_by('-created_at').first()
else:
release = releases[0]
return release
6 changes: 3 additions & 3 deletions katka/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ class Meta:
model = SCMStepRun
fields = (
'public_identifier', 'slug', 'name', 'stage', 'status', 'output', 'sequence_id', 'scm_pipeline_run',
'tags', 'started', 'ended'
'tags', 'started_at', 'ended_at'
)


Expand All @@ -132,8 +132,8 @@ class SCMReleaseSerializer(KatkaSerializer):

class Meta:
model = SCMRelease
fields = ('public_identifier', 'name', 'started', 'ended', 'scm_pipeline_runs', 'status')
read_only_fields = ('started', 'ended', 'scm_pipeline_runs')
fields = ('public_identifier', 'name', 'started_at', 'ended_at', 'scm_pipeline_runs', 'status')
read_only_fields = ('started_at', 'ended_at', 'scm_pipeline_runs')


class SCMReleaseCreateSerializer(KatkaSerializer):
Expand Down
18 changes: 9 additions & 9 deletions tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -349,7 +349,7 @@ def deactivated_scm_pipeline_run(scm_pipeline_run):
def scm_step_run(scm_pipeline_run):
scm_step_run = models.SCMStepRun(slug='release', name='Release Katka', stage='Production',
scm_pipeline_run=scm_pipeline_run, sequence_id='1.1-1',
started='2018-11-11 08:25:30+0000', ended='2018-11-11 09:01:40+0000')
started_at='2018-11-11 08:25:30+0000', ended_at='2018-11-11 09:01:40+0000')

with username_on_model(models.SCMStepRun, 'initial'):
scm_step_run.save()
Expand Down Expand Up @@ -451,19 +451,19 @@ def step_data(scm_pipeline_run):
version = '{"release.version": "1.0.0"}'
steps = [
{"name": "step0", "stage": "prepare", "seq": "1.1-1", "status": "success", "tags": "", "output": version,
"started": "2018-11-11 08:25:30+0000", "ended": "2018-11-11 08:25:41+0000"},
"started_at": "2018-11-11 08:25:30+0000", "ended_at": "2018-11-11 08:25:41+0000"},
{"name": "step1", "stage": "prepare", "seq": "1.2-1", "status": "success", "tags": "", "output": "",
"started": "2018-11-11 08:35:30+0000", "ended": "2018-11-11 08:35:41+0000"},
"started_at": "2018-11-11 08:35:30+0000", "ended_at": "2018-11-11 08:35:41+0000"},
{"name": "step2", "stage": "deploy", "seq": "2.1-1", "status": "success", "tags": "", "output": "",
"started": "2018-11-11 08:45:30+0000", "ended": "2018-11-11 08:45:41+0000"},
"started_at": "2018-11-11 08:45:30+0000", "ended_at": "2018-11-11 08:45:41+0000"},
{"name": "step3", "stage": "deploy", "seq": "2.2-1", "status": "success", "tags": "", "output": "",
"started": "2018-11-11 08:55:30+0000", "ended": "2018-11-11 08:55:41+0000"},
"started_at": "2018-11-11 08:55:30+0000", "ended_at": "2018-11-11 08:55:41+0000"},
{"name": "step4", "stage": "deploy", "seq": "2.3-1", "status": "success", "tags": "", "output": "",
"started": "2018-11-11 09:05:30+0000", "ended": "2018-11-11 09:05:41+0000"},
"started_at": "2018-11-11 09:05:30+0000", "ended_at": "2018-11-11 09:05:41+0000"},
{"name": "step5", "stage": "deploy", "seq": "2.4-1", "status": "success", "tags": "", "output": "",
"started": "2018-11-11 09:15:30+0000", "ended": "2018-11-11 09:15:41+0000"},
"started_at": "2018-11-11 09:15:30+0000", "ended_at": "2018-11-11 09:15:41+0000"},
{"name": "step6", "stage": "deploy", "seq": "2.5-1", "status": "success", "tags": "", "output": "",
"started": "2018-11-11 09:25:30+0000", "ended": "2018-11-11 09:25:41+0000"},
"started_at": "2018-11-11 09:25:30+0000", "ended_at": "2018-11-11 09:25:41+0000"},
]
return steps

Expand All @@ -474,7 +474,7 @@ def _create_steps_from_dict(scm_pipeline_run, step_data):
scm_step_run = models.SCMStepRun(slug=step["name"], name=step["name"], stage=step["stage"],
scm_pipeline_run=scm_pipeline_run, sequence_id=step["seq"],
status=step["status"], tags=step["tags"], output=step["output"],
started=step["started"], ended=step["ended"])
started_at=step["started_at"], ended_at=step["ended_at"])

with username_on_model(models.SCMStepRun, 'initial'):
scm_step_run.save()
Expand Down
12 changes: 6 additions & 6 deletions tests/integration/test_scmrelease_view.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,8 @@ def test_list(self, client, logged_in_user, scm_pipeline_run, scm_release):
parsed = response.json()
assert len(parsed) == 1
assert parsed[0]['name'] == 'Version 0.13.1'
assert parsed[0]['started'] is None
assert parsed[0]['ended'] is None
assert parsed[0]['started_at'] is None
assert parsed[0]['ended_at'] is None
assert parsed[0]['status'] == 'in progress'
assert len(parsed[0]['scm_pipeline_runs']) == 1
assert UUID(parsed[0]['scm_pipeline_runs'][0]) == scm_pipeline_run.public_identifier
Expand All @@ -73,8 +73,8 @@ def test_filtered_list(self, client, logged_in_user, scm_pipeline_run, scm_relea
parsed = response.json()
assert len(parsed) == 1
assert parsed[0]['name'] == 'Version 15.0'
assert parsed[0]['started'] is None
assert parsed[0]['ended'] is None
assert parsed[0]['started_at'] is None
assert parsed[0]['ended_at'] is None
assert parsed[0]['status'] == 'in progress'
assert len(parsed[0]['scm_pipeline_runs']) == 1
assert UUID(parsed[0]['scm_pipeline_runs'][0]) == another_scm_pipeline_run.public_identifier
Expand All @@ -98,8 +98,8 @@ def test_get(self, client, logged_in_user, scm_pipeline_run, scm_release):
assert response.status_code == 200
parsed = response.json()
assert parsed['name'] == 'Version 0.13.1'
assert parsed['started'] is None
assert parsed['ended'] is None
assert parsed['started_at'] is None
assert parsed['ended_at'] is None
assert parsed['status'] == 'in progress'
assert len(parsed['scm_pipeline_runs']) == 1
assert UUID(parsed['scm_pipeline_runs'][0]) == scm_pipeline_run.public_identifier
Expand Down
28 changes: 14 additions & 14 deletions tests/integration/test_scmsteprun_view.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,8 +70,8 @@ def test_list(self, client, logged_in_user, scm_pipeline_run, scm_step_run):
assert parsed[0]['stage'] == 'Production'
assert parsed[0]['status'] == 'not started'
assert parsed[0]['output'] == ''
assert parsed[0]['started'] == '2018-11-11T08:25:30Z'
assert parsed[0]['ended'] == '2018-11-11T09:01:40Z'
assert parsed[0]['started_at'] == '2018-11-11T08:25:30Z'
assert parsed[0]['ended_at'] == '2018-11-11T09:01:40Z'
assert UUID(parsed[0]['scm_pipeline_run']) == scm_pipeline_run.public_identifier
UUID(parsed[0]['public_identifier']) # should not raise

Expand All @@ -87,8 +87,8 @@ def test_filtered_list(self, client, logged_in_user, scm_pipeline_run, scm_step_
assert parsed[0]['stage'] == 'Production'
assert parsed[0]['status'] == 'not started'
assert parsed[0]['output'] == ''
assert parsed[0]['started'] is None
assert parsed[0]['ended'] is None
assert parsed[0]['started_at'] is None
assert parsed[0]['ended_at'] is None
assert UUID(parsed[0]['scm_pipeline_run']) == another_scm_pipeline_run.public_identifier
UUID(parsed[0]['public_identifier']) # should not raise

Expand Down Expand Up @@ -117,8 +117,8 @@ def test_get(self, client, logged_in_user, scm_pipeline_run, scm_step_run):
assert parsed['output'] == ''
assert parsed['sequence_id'] == '1.1-1'
assert parsed['tags'] == ''
assert parsed['started'] == '2018-11-11T08:25:30Z'
assert parsed['ended'] == '2018-11-11T09:01:40Z'
assert parsed['started_at'] == '2018-11-11T08:25:30Z'
assert parsed['ended_at'] == '2018-11-11T09:01:40Z'
assert UUID(parsed['scm_pipeline_run']) == scm_pipeline_run.public_identifier
UUID(parsed['public_identifier']) # should not raise

Expand All @@ -141,29 +141,29 @@ def test_update(self, client, logged_in_user, scm_pipeline_run, scm_step_run):
'output': 'Command completed',
'sequence_id': '01.02-03',
'tags': 'tag1 tag2',
'started': '2019-01-25 01:02:03+0100',
'ended': '2019-02-13 02:03:04Z',
'started_at': '2019-01-25 01:02:03+0100',
'ended_at': '2019-02-13 02:03:04Z',
'scm_pipeline_run': scm_pipeline_run.public_identifier}
response = client.put(url, data, content_type='application/json')
assert response.status_code == 200
p = models.SCMStepRun.objects.get(pk=scm_step_run.public_identifier)
assert p.name == 'Release product'
assert p.sequence_id == '01.02-03'
assert p.tags == 'tag1 tag2'
assert p.started == parse_datetime('2019-01-25T01:02:03+0100')
assert p.ended == parse_datetime('2019-02-13T02:03:04Z')
assert p.started_at == parse_datetime('2019-01-25T01:02:03+0100')
assert p.ended_at == parse_datetime('2019-02-13T02:03:04Z')

def test_partial_update(self, client, logged_in_user, scm_step_run):
url = f'/scm-step-runs/{scm_step_run.public_identifier}/'
data = {'output': 'Step executed.',
'started': '2019-01-25 01:02:03+0200',
'ended': '2019-02-13 02:03:04Z'}
'started_at': '2019-01-25 01:02:03+0200',
'ended_at': '2019-02-13 02:03:04Z'}
response = client.patch(url, data, content_type='application/json')
assert response.status_code == 200
p = models.SCMStepRun.objects.get(pk=scm_step_run.public_identifier)
assert p.output == 'Step executed.'
assert p.started == parse_datetime('2019-01-25T02:02:03+0300')
assert p.ended == parse_datetime('2019-02-13T02:03:04Z')
assert p.started_at == parse_datetime('2019-01-25T02:02:03+0300')
assert p.ended_at == parse_datetime('2019-02-13T02:03:04Z')

def test_create(self, client, logged_in_user, scm_pipeline_run, scm_step_run):
initial_count = models.SCMStepRun.objects.count()
Expand Down
Loading

0 comments on commit 595139f

Please sign in to comment.