#4008 Add an date_updated field to both commit and PR flags (and show it in the UI)
Merged 5 years ago by pingou. Opened 5 years ago by pingou.

@@ -0,0 +1,39 @@ 

+ """Add date_updated to commit flags

+ 

+ Revision ID: 9cb4580e269a

+ Revises: e3cc5aedb8bb

+ Create Date: 2018-11-14 11:48:47.436459

+ 

+ """

+ 

+ import datetime

+ 

+ from alembic import op

+ import sqlalchemy as sa

+ 

+ 

+ # revision identifiers, used by Alembic.

+ revision = '9cb4580e269a'

+ down_revision = 'e3cc5aedb8bb'

+ 

+ 

+ def upgrade():

+     """ Add date_updated column to commit_flags table """

+     op.add_column(

+         'commit_flags',

+         sa.Column(

+             'date_updated',

+             sa.DateTime,

+             nullable=True,

+             default=datetime.datetime.utcnow,

+         )

+     )

+     op.execute('UPDATE commit_flags SET date_updated=date_created')

+     op.alter_column(

+         'commit_flags', 'date_updated',

+         nullable=False, existing_nullable=True)

+ 

+ 

+ def downgrade():

+     """ Drop the date_updated column from the commit_flags table """

+     op.drop_column('commit_flags', 'date_updated')

@@ -0,0 +1,38 @@ 

+ """Add date_updated to PR flags

+ 

+ Revision ID: e3cc5aedb8bb

+ Revises: f16ab75e4d32

+ Create Date: 2018-11-14 11:45:48.519035

+ 

+ """

+ 

+ import datetime

+ 

+ from alembic import op

+ import sqlalchemy as sa

+ 

+ # revision identifiers, used by Alembic.

+ revision = 'e3cc5aedb8bb'

+ down_revision = 'f16ab75e4d32'

+ 

+ 

+ def upgrade():

+     """ Add date_updated column to pull_request_flags table """

+     op.add_column(

+         'pull_request_flags',

+         sa.Column(

+             'date_updated',

+             sa.DateTime,

+             nullable=True,

+             default=datetime.datetime.utcnow,

+         )

+     )

+     op.execute('UPDATE pull_request_flags SET date_updated=date_created')

+     op.alter_column(

+         'pull_request_flags', 'date_updated',

+         nullable=False, existing_nullable=True)

+ 

+ 

+ def downgrade():

+     """ Drop the date_updated column from the pull_request_flags table """

+     op.drop_column('pull_request_flags', 'date_updated')

file modified
+14
@@ -2262,6 +2262,12 @@ 

      date_created = sa.Column(

          sa.DateTime, nullable=False, default=datetime.datetime.utcnow

      )

+     date_updated = sa.Column(

+         sa.DateTime,

+         nullable=False,

+         default=datetime.datetime.utcnow,

+         onupdate=datetime.datetime.utcnow,

+     )

  

      __table_args__ = (sa.UniqueConstraint("uid", "pull_request_uid"),)

  
@@ -2308,6 +2314,7 @@ 

              "status": self.status,

              "url": self.url,

              "date_created": arrow_ts(self.date_created),

+             "date_updated": arrow_ts(self.date_updated),

              "user": self.user.to_json(public=public),

          }

  
@@ -2349,6 +2356,12 @@ 

      date_created = sa.Column(

          sa.DateTime, nullable=False, default=datetime.datetime.utcnow

      )

+     date_updated = sa.Column(

+         sa.DateTime,

+         nullable=False,

+         default=datetime.datetime.utcnow,

+         onupdate=datetime.datetime.utcnow,

+     )

  

      __table_args__ = (sa.UniqueConstraint("commit_hash", "uid"),)

  
@@ -2397,6 +2410,7 @@ 

              "status": self.status,

              "url": self.url,

              "date_created": arrow_ts(self.date_created),

+             "date_updated": arrow_ts(self.date_updated),

              "user": self.user.to_json(public=public),

          }

  

file modified
+5 -2
@@ -238,8 +238,11 @@ 

                  </div>

                  <small><div class="clearfix">

                      <span>{{ flag.comment }}</span>

-                     <div title="{{ flag.date_created }}" class="pull-xs-right">

-                     {{ flag.date_created | humanize }}</div>

+                     <div title="{% if

+                         flag.date_created == flag.date_updated -%}

+                           Created at {% else -%} Updated at {% endif -%}

+                       {{ flag.date_updated }}" class="pull-xs-right">

+                       {{ flag.date_updated | humanize }}</div>

                  </div>

                  </small>

                </li>

@@ -574,8 +574,11 @@ 

              </div>

              <small><div class="clearfix">

                  <span>{{ flag.comment }}</span>

-                 <div title="{{ flag.date_created }}" class="float-right">

-                 {{ flag.date_created | humanize }}</div>

+                 <div title="{% if

+                   flag.date_created == flag.date_updated -%}

+                     Created at {% else -%} Updated at {% endif -%}

+                 {{ flag.date_updated }}" class="float-right">

+                 {{ flag.date_updated | humanize }}</div>

              </div>

              </small>

            </a>

@@ -237,6 +237,7 @@ 

          self.assertEqual(output.status_code, 200)

          data = json.loads(output.get_data(as_text=True))

          data['flag']['date_created'] = '1510742565'

+         data['flag']['date_updated'] = '1510742565'

          pr_uid = data['flag']['pull_request_uid']

          data['flag']['pull_request_uid'] = '62b49f00d489452994de5010565fab81'

          data["avatar_url"] = "https://seccdn.libravatar.org/avatar/..."
@@ -246,6 +247,7 @@ 

                  'flag': {

                      'comment': 'Tests running',

                      'date_created': '1510742565',

+                     'date_updated': '1510742565',

                      'percent': None,

                      'pull_request_uid': '62b49f00d489452994de5010565fab81',

                      'status': 'pending',
@@ -304,6 +306,7 @@ 

          self.assertEqual(output.status_code, 200)

          data = json.loads(output.get_data(as_text=True))

          data['flag']['date_created'] = '1510742565'

+         data['flag']['date_updated'] = '1510742565'

          data['flag']['pull_request_uid'] = '62b49f00d489452994de5010565fab81'

          data["avatar_url"] = "https://seccdn.libravatar.org/avatar/..."

          self.assertDictEqual(
@@ -312,6 +315,7 @@ 

                  'flag': {

                      'comment': 'Tests running',

                      'date_created': '1510742565',

+                     'date_updated': '1510742565',

                      'percent': None,

                      'pull_request_uid': '62b49f00d489452994de5010565fab81',

                      'status': 'pending',
@@ -352,6 +356,7 @@ 

          self.assertEqual(output.status_code, 200)

          data = json.loads(output.get_data(as_text=True))

          data['flag']['date_created'] = '1510742565'

+         data['flag']['date_updated'] = '1510742565'

          data['flag']['pull_request_uid'] = '62b49f00d489452994de5010565fab81'

          data["avatar_url"] = "https://seccdn.libravatar.org/avatar/..."

          self.assertDictEqual(
@@ -360,6 +365,7 @@ 

                  'flag': {

                      'comment': 'Tests passed',

                      'date_created': '1510742565',

+                     'date_updated': '1510742565',

                      'percent': 100,

                      'pull_request_uid': '62b49f00d489452994de5010565fab81',

                      'status': 'success',
@@ -405,6 +411,7 @@ 

          self.assertEqual(output.status_code, 200)

          data = json.loads(output.get_data(as_text=True))

          data['flag']['date_created'] = '1510742565'

+         data['flag']['date_updated'] = '1510742565'

          data['flag']['pull_request_uid'] = '62b49f00d489452994de5010565fab81'

          data["avatar_url"] = "https://seccdn.libravatar.org/avatar/..."

          self.assertDictEqual(
@@ -413,6 +420,7 @@ 

                  'flag': {

                      'comment': 'Tests passed',

                      'date_created': '1510742565',

+                     'date_updated': '1510742565',

                      'percent': 100,

                      'pull_request_uid': '62b49f00d489452994de5010565fab81',

                      'status': 'success',
@@ -451,6 +459,7 @@ 

          self.assertEqual(output.status_code, 200)

          data = json.loads(output.get_data(as_text=True))

          data['flag']['date_created'] = '1510742565'

+         data['flag']['date_updated'] = '1510742565'

          data['flag']['pull_request_uid'] = '62b49f00d489452994de5010565fab81'

          self.assertNotEqual(

              data['uid'], 'jenkins_build_pagure_100+seed')
@@ -462,6 +471,7 @@ 

                  'flag': {

                      'comment': 'Tests running again',

                      'date_created': '1510742565',

+                     'date_updated': '1510742565',

                      'percent': None,

                      'pull_request_uid': '62b49f00d489452994de5010565fab81',

                      'status': 'pending',
@@ -743,6 +753,7 @@ 

          self.assertEqual(output.status_code, 200)

          data = json.loads(output.get_data(as_text=True))

          data['flag']['date_created'] = '1510742565'

+         data['flag']['date_updated'] = '1510742565'

          data['flag']['pull_request_uid'] = '62b49f00d489452994de5010565fab81'

          data["avatar_url"] = "https://seccdn.libravatar.org/avatar/..."

          self.assertDictEqual(
@@ -751,6 +762,7 @@ 

                  'flag': {

                      'comment': 'Tests failed',

                      'date_created': '1510742565',

+                     'date_updated': '1510742565',

                      'percent': 0,

                      'pull_request_uid': '62b49f00d489452994de5010565fab81',

                      'status': 'failure',
@@ -799,6 +811,7 @@ 

          self.assertEqual(output.status_code, 200)

          data = json.loads(output.get_data(as_text=True))

          data['flag']['date_created'] = '1510742565'

+         data['flag']['date_updated'] = '1510742565'

          data['flag']['pull_request_uid'] = '62b49f00d489452994de5010565fab81'

          data["avatar_url"] = "https://seccdn.libravatar.org/avatar/..."

          self.assertDictEqual(
@@ -807,6 +820,7 @@ 

                  'flag': {

                      'comment': 'Tests failed',

                      'date_created': '1510742565',

+                     'date_updated': '1510742565',

                      'percent': None,

                      'pull_request_uid': '62b49f00d489452994de5010565fab81',

                      'status': 'failure',
@@ -848,6 +862,7 @@ 

          self.assertEqual(output.status_code, 200)

          data = json.loads(output.get_data(as_text=True))

          data['flag']['date_created'] = '1510742565'

+         data['flag']['date_updated'] = '1510742565'

          data['flag']['pull_request_uid'] = '62b49f00d489452994de5010565fab81'

          data["avatar_url"] = "https://seccdn.libravatar.org/avatar/..."

          self.assertDictEqual(
@@ -856,6 +871,7 @@ 

                  'flag': {

                      'comment': 'Tests passed',

                      'date_created': '1510742565',

+                     'date_updated': '1510742565',

                      'percent': 100,

                      'pull_request_uid': '62b49f00d489452994de5010565fab81',

                      'status': 'success',
@@ -1016,6 +1032,7 @@ 

          self.assertEqual(output.status_code, 200)

          data = json.loads(output.get_data(as_text=True))

          data['flags'][0]['date_created'] = '1541413645'

+         data['flags'][0]['date_updated'] = '1541413645'

          data['flags'][0]['pull_request_uid'] = '72a61033c2fc464aa9ef514c057aa62c'

          self.assertDictEqual(

              data,
@@ -1024,6 +1041,7 @@ 

                  {

                    'comment': 'Build passes',

                    'date_created': '1541413645',

+                   'date_updated': '1541413645',

                    'percent': None,

                    'pull_request_uid': '72a61033c2fc464aa9ef514c057aa62c',

                    'status': 'success',
@@ -1080,8 +1098,10 @@ 

          self.assertEqual(output.status_code, 200)

          data = json.loads(output.get_data(as_text=True))

          data['flags'][0]['date_created'] = '1541413645'

+         data['flags'][0]['date_updated'] = '1541413645'

          data['flags'][0]['pull_request_uid'] = '72a61033c2fc464aa9ef514c057aa62c'

          data['flags'][1]['date_created'] = '1541413645'

+         data['flags'][1]['date_updated'] = '1541413645'

          data['flags'][1]['pull_request_uid'] = '72a61033c2fc464aa9ef514c057aa62c'

          self.assertDictEqual(

              data,
@@ -1090,6 +1110,7 @@ 

                  {

                    'comment': 'Build pending',

                    'date_created': '1541413645',

+                   'date_updated': '1541413645',

                    'percent': None,

                    'pull_request_uid': '72a61033c2fc464aa9ef514c057aa62c',

                    'status': 'pending',
@@ -1100,6 +1121,7 @@ 

                  {

                    'comment': 'Build passes',

                    'date_created': '1541413645',

+                   'date_updated': '1541413645',

                    'percent': None,

                    'pull_request_uid': '72a61033c2fc464aa9ef514c057aa62c',

                    'status': 'success',

@@ -3024,12 +3024,14 @@ 

          self.assertEqual(output.status_code, 200)

          data = json.loads(output.get_data(as_text=True))

          data['flag']['date_created'] = '1510742565'

+         data['flag']['date_updated'] = '1510742565'

          data['flag']['commit_hash'] = '62b49f00d489452994de5010565fab81'

          expected_output = {

              'flag': {

                  'comment': 'Tests passed',

                  'commit_hash': '62b49f00d489452994de5010565fab81',

                  'date_created': '1510742565',

+                 'date_updated': '1510742565',

                  'percent': 100,

                  'status': 'success',

                  'url': 'http://jenkins.cloud.fedoraproject.org/',
@@ -3073,12 +3075,14 @@ 

              'jenkins_build_pagure_100+seed'

          )

          data['flag']['date_created'] = '1510742565'

+         data['flag']['date_updated'] = '1510742565'

          data['uid'] = 'b1de8f80defd4a81afe2e09f39678087'

          expected_output = {

              'flag': {

                  'comment': 'Tests passed',

                  'commit_hash': commit.oid.hex,

                  'date_created': '1510742565',

+                 'date_updated': '1510742565',

                  'percent': 100,

                  'status': 'success',

                  'url': 'http://jenkins.cloud.fedoraproject.org/',
@@ -3129,12 +3133,14 @@ 

              'jenkins_build_pagure_100+seed'

          )

          data['flag']['date_created'] = '1510742565'

+         data['flag']['date_updated'] = '1510742565'

          data['uid'] = 'b1de8f80defd4a81afe2e09f39678087'

          expected_output = {

              'flag': {

                  'comment': 'Tests passed',

                  'commit_hash': commit.oid.hex,

                  'date_created': '1510742565',

+                 'date_updated': '1510742565',

                  'percent': 100,

                  'status': 'success',

                  'url': 'http://jenkins.cloud.fedoraproject.org/',
@@ -3259,6 +3265,7 @@ 

  

          for f in data['flags']:

              f['date_created'] = '1510742565'

+             f['date_updated'] = '1510742565'

              f['commit_hash'] = '62b49f00d489452994de5010565fab81'

          expected_output = {

              "flags": [
@@ -3266,6 +3273,7 @@ 

                  "comment": "Build is running",

                  "commit_hash": "62b49f00d489452994de5010565fab81",

                  "date_created": "1510742565",

+                 'date_updated': '1510742565',

                  "percent": None,

                  "status": "pending",

                  "url": "https://koji.fp.o/koji...",
@@ -3279,6 +3287,7 @@ 

                  "comment": "Build succeeded",

                  "commit_hash": "62b49f00d489452994de5010565fab81",

                  "date_created": "1510742565",

+                 'date_updated': '1510742565',

                  "percent": None,

                  "status": "success",

                  "url": "https://koji.fp.o/koji...",

@@ -1969,6 +1969,7 @@ 

          self.assertEqual(output.status_code, 200)

          data = json.loads(output.get_data(as_text=True))

          data['flag']['date_created'] = '1510742565'

+         data['flag']['date_updated'] = '1510742565'

          data['flag']['pull_request_uid'] = '62b49f00d489452994de5010565fab81'

          data["avatar_url"] = "https://seccdn.libravatar.org/avatar/..."

          self.assertDictEqual(
@@ -1977,6 +1978,7 @@ 

                  'flag': {

                      'comment': 'Tests failed',

                      'date_created': '1510742565',

+                     'date_updated': '1510742565',

                      'percent': 0,

                      'pull_request_uid': '62b49f00d489452994de5010565fab81',

                      'status': 'failure',
@@ -2016,6 +2018,7 @@ 

          self.assertEqual(output.status_code, 200)

          data = json.loads(output.get_data(as_text=True))

          data['flag']['date_created'] = '1510742565'

+         data['flag']['date_updated'] = '1510742565'

          data['flag']['pull_request_uid'] = '62b49f00d489452994de5010565fab81'

          data["avatar_url"] = "https://seccdn.libravatar.org/avatar/..."

          self.assertDictEqual(
@@ -2024,6 +2027,7 @@ 

                  'flag': {

                      'comment': 'Tests passed',

                      'date_created': '1510742565',

+                     'date_updated': '1510742565',

                      'percent': 100,

                      'pull_request_uid': '62b49f00d489452994de5010565fab81',

                      'status': 'success',