def setUp(self): self.cef_fd, self.cef_file = mkstemp() app.config['DEBUG'] = True app.config['CSRF_ENABLED'] = False app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///:memory:' app.config.update(cef_config(self.cef_file)) with app.test_request_context(): db.init_app(app) db.create_all() for i, version in enumerate( ('48.0b7', '48.0b8', '48.0b9', '48.0', '48.0.1', '49.0b1', '49.0b2', '49.0b3')): branch = 'releases/mozilla-beta' if 'b' not in version: branch = 'releases/mozilla-release' r = FirefoxRelease( partials='0,1', promptWaitTime=5, submitter='joe', version=version, buildNumber=1, branch=branch, mozillaRevision='def', l10nChangesets='ja zu', mozillaRelbranch='FOO', submittedAt=datetime(2015, 1, i + 1, 3, 4, 5, 6), shippedAt=datetime(2015, 1, i + 1, 7, 8, 9, 0), comment="yet an other amazing comment", description="we did this release because of foo") r.complete = True r.ready = True r.status = "shipped" db.session.add(r) r = ThunderbirdRelease( commRevision='zzz', commRelbranch=None, partials='0,1', promptWaitTime=5, submitter='joe', version=version, buildNumber=1, branch=branch, mozillaRevision='def', l10nChangesets='ja zu', mozillaRelbranch='FOO', submittedAt=datetime(2015, 1, i + 1, 3, 4, 5, 6), shippedAt=datetime(2015, 1, i + 1, 7, 8, 9, 0), comment="yet an other amazing comment", description="we did this release because of foo") r.complete = True r.ready = True r.status = "shipped" db.session.add(r) db.session.commit()
def testGetReleasesWithFilter(self): with app.test_request_context(): release = FirefoxRelease('48.0b7build1', 42, submitter='moz://a', version='50.0b6', buildNumber=1, mozillaRelbranch='', branch='releases/mozilla-beta', mozillaRevision='abcdef123456', l10nChangesets='ach 72c548f97e82', shippedAt=datetime.datetime(2005, 1, 2, 3, 4, 5, 6)) release.ready = True release.complete = True db.session.add(release) db.session.commit() params = { 'iDisplayStart': 0, 'iDisplayLength': 10, 'datatableVersion': '1.0.0', 'complete': 'true', 'ready': 'true', 'iSortCol_0': 1, 'bSearchable_1': 'true', 'mDataProp_1': 'name', 'sSortDir_0': 'desc', 'iColumns': 17, 'sSearch': 'iref' } ret = self.get(self.uri, query_string=params) self.assertEquals(ret.status_code, 200, ret.data)
def testPrimaryBuildsDegenerateDevedAndBeta(self): # add a beta 3.0b5 to match deved with app.test_request_context(): r = FirefoxRelease(partials='0,1', promptWaitTime=5, submitter='joe', version='3.0b5', buildNumber=1, branch='a', mozillaRevision='defau', l10nChangesets='ja zu', mozillaRelbranch='FOO', submittedAt=datetime(2005, 2, 3, 4, 5, 6, 7), shippedAt=datetime(2005, 2, 3, 4, 5, 6, 7), comment="yet an other amazing comment", isSecurityDriven=True, description="Another beta release for Firefox 3") r.complete = True r.ready = True r.status = "shipped" db.session.add(r) db.session.commit() ret = self.get(BASE_JSON_PATH + '/firefox_primary_builds.json') self.assertEquals(ret.status_code, 200) primary = json.loads(ret.data) self.assertFalse(any(['3.0b3' in primary[l] for l in primary])) # older beta not present self.assertTrue('3.0b5' in primary['en-US'])
def testGetReleasesWithFilter(self): with app.test_request_context(): release = FirefoxRelease('48.0b7build1', 42, submitter='moz://a', version='50.0b6', buildNumber=1, mozillaRelbranch='', branch='releases/mozilla-beta', mozillaRevision='abcdef123456', l10nChangesets='ach 72c548f97e82', shippedAt=datetime.datetime( 2005, 1, 2, 3, 4, 5, 6)) release.ready = True release.complete = True db.session.add(release) db.session.commit() params = { 'iDisplayStart': 0, 'iDisplayLength': 10, 'datatableVersion': '1.0.0', 'complete': 'true', 'ready': 'true', 'iSortCol_0': 1, 'bSearchable_1': 'true', 'mDataProp_1': 'name', 'sSortDir_0': 'desc', 'iColumns': 17, 'sSearch': 'iref' } ret = self.get(self.uri, query_string=params) self.assertEquals(ret.status_code, 200, ret.data)
def testCantMarkReleaseAsIncomplete(self): with app.test_request_context(): release = FirefoxRelease('48.0b7build1', 42, submitter='moz://a', version='50.0b6', buildNumber=1, mozillaRelbranch='', branch='releases/mozilla-beta', mozillaRevision='abcdef123456', l10nChangesets='ach 72c548f97e82') release.complete = True db.session.add(release) db.session.commit() data = {'complete': False, 'ready': False} ret = self.post('/releases/Firefox-50.0b6-build1', data=data) self.assertEquals(ret.status_code, 400)
def testChangeStatusSimilarShipped(self): with app.test_request_context(): release = FirefoxRelease('48.0b7build1', 42, submitter='moz://a', version='50.0b6', buildNumber=1, mozillaRelbranch='', branch='releases/mozilla-beta', mozillaRevision='abcdef123456', l10nChangesets='ach 72c548f97e82', shippedAt=datetime.datetime(2005, 1, 2, 3, 4, 5, 6)) release.ready = True release.complete = True db.session.add(release) db.session.commit() data = {'status': 'shipped'} ret = self.post('/releases/Firefox-50.0b6-build1', data=data) self.assertEquals(ret.status_code, 400)
def setUp(self): self.cef_fd, self.cef_file = mkstemp() app.config['DEBUG'] = True app.config['CSRF_ENABLED'] = False app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///:memory:' app.config.update(cef_config(self.cef_file)) with app.test_request_context(): db.init_app(app) db.create_all() r = FennecRelease(submitter='joe', version='1.0', buildNumber=1, branch='a', mozillaRevision='abc', l10nChangesets='{"hi": { "revision": "fe436c75f71d" }}', mozillaRelbranch=None) r.ready = True db.session.add(r) r = FennecRelease(submitter='joe', version='4.0', buildNumber=4, branch='a', mozillaRevision='abc', l10nChangesets='{"fr": { "revision": "fe436c75f71d" }}', mozillaRelbranch=None) db.session.add(r) r = FennecRelease(submitter='joe', version='4.0', buildNumber=5, branch='a', mozillaRevision='abc', l10nChangesets='{"de": { "revision": "fe436c75f71d", "platforms": ["android", "android-multilocale"] }}', mozillaRelbranch='BAR', submittedAt=datetime(2005, 1, 2, 2, 3, 3, 5)) db.session.add(r) r = FirefoxRelease(partials='0,1', promptWaitTime=5, submitter='joe', version='2.0', buildNumber=1, branch='a', mozillaRevision='def', l10nChangesets='ja zu', mozillaRelbranch='FOO', submittedAt=datetime(2005, 1, 2, 3, 4, 5, 6), shippedAt=datetime(2005, 1, 4, 3, 4, 5, 6), comment="yet an other amazing comment", mh_changeset='xyz') r.complete = True r.ready = True r.status = "shipped" db.session.add(r) three_digit_esr_release = FirefoxRelease( partials='0,1', promptWaitTime=5, submitter='joe', version='2.0.2esr', buildNumber=1, branch='a', mozillaRevision='def', l10nChangesets='ja zu', mozillaRelbranch='FOO', submittedAt=datetime(2005, 1, 2, 3, 4, 5, 6), shippedAt=datetime(2005, 1, 4, 3, 4, 5, 6), comment="yet an other amazing comment" ) three_digit_esr_release.complete = True three_digit_esr_release.ready = True three_digit_esr_release.status = "shipped" db.session.add(three_digit_esr_release) two_digit_esr_release = FirefoxRelease( partials='0,1', promptWaitTime=5, submitter='joe', version='38.0esr', buildNumber=1, branch='a', mozillaRevision='def', l10nChangesets='ja zu', mozillaRelbranch='FOO', submittedAt=datetime(2015, 1, 2, 3, 4, 5, 6), shippedAt=datetime(2015, 1, 4, 3, 4, 5, 6), comment="yet an other amazing comment" ) two_digit_esr_release.complete = True two_digit_esr_release.ready = True two_digit_esr_release.status = "shipped" db.session.add(two_digit_esr_release) r = FennecRelease(submitter='joe', version='24.0', buildNumber=4, branch='a', mozillaRevision='abc', l10nChangesets='{"an": { "revision": "fe436c75f71d" }}', submittedAt=datetime(2015, 2, 26, 3, 4, 5, 6), shippedAt=datetime(2015, 3, 1, 3, 4, 5, 6), mozillaRelbranch=None) r.complete = True r.ready = True r.status = "shipped" db.session.add(r) r = FennecRelease(submitter='joe', version='24.0.1', buildNumber=4, branch='a', mozillaRevision='abc', l10nChangesets='{"an": { "revision": "fe436c75f71d" }}', submittedAt=datetime(2015, 2, 26, 3, 4, 5, 6), shippedAt=datetime(2015, 2, 26, 3, 4, 5, 6), mozillaRelbranch=None) r.complete = True r.ready = True r.status = "shipped" db.session.add(r) r = FennecRelease(submitter='joe', version='23.0b2', buildNumber=4, branch='a', mozillaRevision='abc', l10nChangesets='{"an": { "revision": "fe436c75f71d" }}', submittedAt=datetime(2015, 2, 26, 3, 4, 5, 6), shippedAt=datetime(2015, 2, 27, 3, 4, 5, 6), mozillaRelbranch=None) r.complete = True r.ready = True r.status = "shipped" db.session.add(r) r = FirefoxRelease(partials='0,1', promptWaitTime=5, submitter='joe', version='1.0.9', buildNumber=1, branch='a', mozillaRevision='def', l10nChangesets='legacy', mozillaRelbranch='FOO', submittedAt=datetime(2005, 1, 2, 3, 4, 5, 6), shippedAt=datetime(2005, 1, 2, 3, 4, 5, 6), comment="yet an other amazing comment", description="we did this release because of foo") r.complete = True r.ready = True r.status = "shipped" db.session.add(r) r = FirefoxRelease(partials='0,1', promptWaitTime=5, submitter='joe', version='3.0b1', buildNumber=1, branch='a', mozillaRevision='def', l10nChangesets='ja zu', mozillaRelbranch='FOO', submittedAt=datetime(2005, 1, 2, 3, 4, 5, 6), shippedAt=datetime(2005, 1, 2, 3, 4, 5, 6), comment="Rule with release_eta", description="Rule with release_eta", release_eta=datetime(2005, 1, 2, 3, 4, 5, 7)) r.complete = True r.ready = True r.status = "shipped" db.session.add(r) r = FirefoxRelease(partials='0,1', promptWaitTime=5, submitter='joe', version='3.0b2', buildNumber=1, branch='a', mozillaRevision='def', l10nChangesets='ja zu', mozillaRelbranch='FOO', submittedAt=datetime(2005, 1, 2, 3, 4, 5, 6), shippedAt=datetime(2005, 1, 2, 3, 4, 5, 6), comment="yet an other amazing comment", isSecurityDriven=True, description="We did this because of an issue in NSS") r.complete = True r.ready = True r.status = "shipped" db.session.add(r) r = FirefoxRelease(partials='0,1', promptWaitTime=5, submitter='joe', version='3.0b2', buildNumber=2, branch='a', mozillaRevision='defa', l10nChangesets='ja zu', mozillaRelbranch='FOO', submittedAt=datetime(2005, 1, 2, 3, 4, 5, 6), comment="yet an other amazing comment", release_eta=datetime(2005, 1, 2, 3, 4, 5, 7)) db.session.add(r) r = FirefoxRelease(partials='0,1', promptWaitTime=5, submitter='joe', version='3.0b3', buildNumber=1, branch='a', mozillaRevision='defau', l10nChangesets='ja zu', mozillaRelbranch='FOO', submittedAt=datetime(2005, 2, 3, 4, 5, 6, 7), shippedAt=datetime(2005, 2, 3, 4, 5, 6, 7), comment="yet an other amazing comment", isSecurityDriven=True, description="Another beta release for Firefox 3") r.complete = True r.ready = True r.status = "shipped" db.session.add(r) r = FirefoxRelease(partials='0,1', promptWaitTime=5, submitter='joe', version='3.0.1', buildNumber=1, branch='a', mozillaRevision='def', l10nChangesets='ja zu', mozillaRelbranch='FOO', submittedAt=datetime(2005, 1, 2, 3, 4, 5, 6), shippedAt=datetime(2005, 1, 2, 3, 4, 5, 6), comment="yet an other amazing comment", description="we did this release because of foo") r.complete = True r.ready = True r.status = "shipped" db.session.add(r) r = DeveditionRelease( partials='0,1', promptWaitTime=5, submitter='joe', version='3.0b5', buildNumber=1, branch='a', mozillaRevision='def', l10nChangesets='ja zu', mozillaRelbranch='FOO', submittedAt=datetime(2005, 1, 2, 3, 4, 5, 6), shippedAt=datetime(2005, 1, 2, 3, 4, 5, 6), comment="yet an other amazing comment", description="we did this release because of foo") r.complete = True r.ready = True r.status = "shipped" db.session.add(r) # Thunderbird data r = ThunderbirdRelease(commRevision='ghi', commRelbranch=None, partials='0', promptWaitTime=None, submitter='bob', version='2.0', buildNumber=2, branch='b', mozillaRevision='ghi', l10nChangesets='li', mozillaRelbranch=None, submittedAt=datetime(2005, 1, 1, 1, 1, 1, 1), shippedAt=datetime(2005, 1, 3, 1, 1, 1, 1), comment='My great comment!', isSecurityDriven=True, mh_changeset='xyz', description="we did this release because of bar") r.complete = True r.ready = True db.session.add(r) r = ThunderbirdRelease(commRevision='zzz', commRelbranch=None, partials='1.0build1', promptWaitTime=None, submitter='bob', version='4.0', buildNumber=1, branch='b', mozillaRevision='yyy', l10nChangesets='yy zz', mozillaRelbranch=None, submittedAt=datetime(2005, 1, 1, 1, 1, 1, 1), description="foo reason") db.session.add(r) r = ThunderbirdRelease(commRevision='zzz', commRelbranch=None, partials='1.0build1', promptWaitTime=None, submitter='bob', version='23.0', buildNumber=1, branch='b', mozillaRevision='yyy', l10nChangesets='yy zz', mozillaRelbranch=None, submittedAt=datetime(2005, 1, 1, 1, 1, 1, 1), shippedAt=datetime(2005, 1, 3, 1, 1, 1, 1), description="bar reason") r.complete = True r.ready = True r.status = "shipped" db.session.add(r) r = ThunderbirdRelease(commRevision='zzz', commRelbranch=None, partials='1.0build1', promptWaitTime=None, submitter='bob', version='23.0.1', buildNumber=1, branch='b', mozillaRevision='yyy', l10nChangesets='yy zz', mozillaRelbranch=None, submittedAt=datetime(2014, 1, 1, 1, 1, 1, 1), shippedAt=datetime(2014, 2, 3, 1, 1, 1, 1), description="bar2 reason") r.complete = True r.ready = True r.status = "shipped" db.session.add(r) r = ThunderbirdRelease(commRevision='zzz', commRelbranch=None, partials='1.0build1', promptWaitTime=None, submitter='bob', version='24.0b2', buildNumber=2, branch='b', mozillaRevision='yyy', l10nChangesets='yy zz', mozillaRelbranch=None, submittedAt=datetime(2005, 1, 1, 1, 1, 1, 1), shippedAt=datetime(2005, 2, 1, 1, 1, 1, 1), description="bar2 reason") r.complete = True r.ready = True r.status = "shipped" db.session.add(r) db.session.commit()
def setUp(self): self.cef_fd, self.cef_file = mkstemp() app.config['DEBUG'] = True app.config['CSRF_ENABLED'] = False app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///:memory:' app.config.update(cef_config(self.cef_file)) with app.test_request_context(): db.init_app(app) db.create_all() r = FennecRelease( submitter='joe', version='1.0', buildNumber=1, branch='a', mozillaRevision='abc', l10nChangesets='{"hi": { "revision": "fe436c75f71d" }}', mozillaRelbranch=None) r.ready = True db.session.add(r) r = FennecRelease( submitter='joe', version='4.0', buildNumber=4, branch='a', mozillaRevision='abc', l10nChangesets='{"fr": { "revision": "fe436c75f71d" }}', mozillaRelbranch=None) db.session.add(r) r = FennecRelease( submitter='joe', version='4.0', buildNumber=5, branch='a', mozillaRevision='abc', l10nChangesets= '{"de": { "revision": "fe436c75f71d", "platforms": ["android", "android-multilocale"] }}', mozillaRelbranch='BAR', submittedAt=datetime(2005, 1, 2, 2, 3, 3, 5)) db.session.add(r) r = FirefoxRelease(partials='0,1', promptWaitTime=5, submitter='joe', version='2.0', buildNumber=1, branch='a', mozillaRevision='def', l10nChangesets='ja zu', mozillaRelbranch='FOO', submittedAt=datetime(2005, 1, 2, 3, 4, 5, 6), shippedAt=datetime(2005, 1, 4, 3, 4, 5, 6), comment="yet an other amazing comment", mh_changeset='xyz') r.complete = True r.ready = True r.status = "shipped" db.session.add(r) three_digit_esr_release = FirefoxRelease( partials='0,1', promptWaitTime=5, submitter='joe', version='2.0.2esr', buildNumber=1, branch='a', mozillaRevision='def', l10nChangesets='ja zu', mozillaRelbranch='FOO', submittedAt=datetime(2005, 1, 2, 3, 4, 5, 6), shippedAt=datetime(2005, 1, 4, 3, 4, 5, 6), comment="yet an other amazing comment") three_digit_esr_release.complete = True three_digit_esr_release.ready = True three_digit_esr_release.status = "shipped" db.session.add(three_digit_esr_release) two_digit_esr_release = FirefoxRelease( partials='0,1', promptWaitTime=5, submitter='joe', version='38.0esr', buildNumber=1, branch='a', mozillaRevision='def', l10nChangesets='ja zu', mozillaRelbranch='FOO', submittedAt=datetime(2015, 1, 2, 3, 4, 5, 6), shippedAt=datetime(2015, 1, 4, 3, 4, 5, 6), comment="yet an other amazing comment") two_digit_esr_release.complete = True two_digit_esr_release.ready = True two_digit_esr_release.status = "shipped" db.session.add(two_digit_esr_release) r = FennecRelease( submitter='joe', version='24.0', buildNumber=4, branch='a', mozillaRevision='abc', l10nChangesets='{"an": { "revision": "fe436c75f71d" }}', submittedAt=datetime(2015, 2, 26, 3, 4, 5, 6), shippedAt=datetime(2015, 3, 1, 3, 4, 5, 6), mozillaRelbranch=None) r.complete = True r.ready = True r.status = "shipped" db.session.add(r) r = FennecRelease( submitter='joe', version='24.0.1', buildNumber=4, branch='a', mozillaRevision='abc', l10nChangesets='{"an": { "revision": "fe436c75f71d" }}', submittedAt=datetime(2015, 2, 26, 3, 4, 5, 6), shippedAt=datetime(2015, 2, 26, 3, 4, 5, 6), mozillaRelbranch=None) r.complete = True r.ready = True r.status = "shipped" db.session.add(r) r = FennecRelease( submitter='joe', version='23.0b2', buildNumber=4, branch='a', mozillaRevision='abc', l10nChangesets='{"an": { "revision": "fe436c75f71d" }}', submittedAt=datetime(2015, 2, 26, 3, 4, 5, 6), shippedAt=datetime(2015, 2, 27, 3, 4, 5, 6), mozillaRelbranch=None) r.complete = True r.ready = True r.status = "shipped" db.session.add(r) r = FirefoxRelease(partials='0,1', promptWaitTime=5, submitter='joe', version='3.0b1', buildNumber=1, branch='a', mozillaRevision='def', l10nChangesets='ja zu', mozillaRelbranch='FOO', submittedAt=datetime(2005, 1, 2, 3, 4, 5, 6), shippedAt=datetime(2005, 1, 2, 3, 4, 5, 6), comment="Rule with release_eta", description="Rule with release_eta", release_eta=datetime(2005, 1, 2, 3, 4, 5, 7)) r.complete = True r.ready = True r.status = "shipped" db.session.add(r) r = FirefoxRelease( partials='0,1', promptWaitTime=5, submitter='joe', version='3.0b2', buildNumber=1, branch='a', mozillaRevision='def', l10nChangesets='ja zu', mozillaRelbranch='FOO', submittedAt=datetime(2005, 1, 2, 3, 4, 5, 6), shippedAt=datetime(2005, 1, 2, 3, 4, 5, 6), comment="yet an other amazing comment", isSecurityDriven=True, description="We did this because of an issue in NSS") r.complete = True r.ready = True r.status = "shipped" db.session.add(r) r = FirefoxRelease(partials='0,1', promptWaitTime=5, submitter='joe', version='3.0b2', buildNumber=2, branch='a', mozillaRevision='defa', l10nChangesets='ja zu', mozillaRelbranch='FOO', submittedAt=datetime(2005, 1, 2, 3, 4, 5, 6), comment="yet an other amazing comment", release_eta=datetime(2005, 1, 2, 3, 4, 5, 7)) db.session.add(r) r = FirefoxRelease( partials='0,1', promptWaitTime=5, submitter='joe', version='3.0b3', buildNumber=1, branch='a', mozillaRevision='defau', l10nChangesets='ja zu', mozillaRelbranch='FOO', submittedAt=datetime(2005, 2, 3, 4, 5, 6, 7), shippedAt=datetime(2005, 2, 3, 4, 5, 6, 7), comment="yet an other amazing comment", isSecurityDriven=True, description="Another beta release for Firefox 3") r.complete = True r.ready = True r.status = "shipped" db.session.add(r) r = FirefoxRelease( partials='0,1', promptWaitTime=5, submitter='joe', version='3.0.1', buildNumber=1, branch='a', mozillaRevision='def', l10nChangesets='ja zu', mozillaRelbranch='FOO', submittedAt=datetime(2005, 1, 2, 3, 4, 5, 6), shippedAt=datetime(2005, 1, 2, 3, 4, 5, 6), comment="yet an other amazing comment", description="we did this release because of foo") r.complete = True r.ready = True r.status = "shipped" db.session.add(r) r = DeveditionRelease( partials='0,1', promptWaitTime=5, submitter='joe', version='3.0b5', buildNumber=1, branch='a', mozillaRevision='def', l10nChangesets='ja zu', mozillaRelbranch='FOO', submittedAt=datetime(2005, 1, 2, 3, 4, 5, 6), shippedAt=datetime(2005, 1, 2, 3, 4, 5, 6), comment="yet an other amazing comment", description="we did this release because of foo") r.complete = True r.ready = True r.status = "shipped" db.session.add(r) # Thunderbird data r = ThunderbirdRelease( commRevision='ghi', commRelbranch=None, partials='0', promptWaitTime=None, submitter='bob', version='2.0', buildNumber=2, branch='b', mozillaRevision='ghi', l10nChangesets='li', mozillaRelbranch=None, submittedAt=datetime(2005, 1, 1, 1, 1, 1, 1), shippedAt=datetime(2005, 1, 3, 1, 1, 1, 1), comment='My great comment!', isSecurityDriven=True, mh_changeset='xyz', description="we did this release because of bar") r.complete = True r.ready = True db.session.add(r) r = ThunderbirdRelease(commRevision='zzz', commRelbranch=None, partials='1.0build1', promptWaitTime=None, submitter='bob', version='4.0', buildNumber=1, branch='b', mozillaRevision='yyy', l10nChangesets='yy zz', mozillaRelbranch=None, submittedAt=datetime( 2005, 1, 1, 1, 1, 1, 1), description="foo reason") db.session.add(r) r = ThunderbirdRelease(commRevision='zzz', commRelbranch=None, partials='1.0build1', promptWaitTime=None, submitter='bob', version='23.0', buildNumber=1, branch='b', mozillaRevision='yyy', l10nChangesets='yy zz', mozillaRelbranch=None, submittedAt=datetime( 2005, 1, 1, 1, 1, 1, 1), shippedAt=datetime(2005, 1, 3, 1, 1, 1, 1), description="bar reason") r.complete = True r.ready = True r.status = "shipped" db.session.add(r) r = ThunderbirdRelease(commRevision='zzz', commRelbranch=None, partials='1.0build1', promptWaitTime=None, submitter='bob', version='23.0.1', buildNumber=1, branch='b', mozillaRevision='yyy', l10nChangesets='yy zz', mozillaRelbranch=None, submittedAt=datetime( 2014, 1, 1, 1, 1, 1, 1), shippedAt=datetime(2014, 2, 3, 1, 1, 1, 1), description="bar2 reason") r.complete = True r.ready = True r.status = "shipped" db.session.add(r) r = ThunderbirdRelease(commRevision='zzz', commRelbranch=None, partials='1.0build1', promptWaitTime=None, submitter='bob', version='24.0b2', buildNumber=2, branch='b', mozillaRevision='yyy', l10nChangesets='yy zz', mozillaRelbranch=None, submittedAt=datetime( 2005, 1, 1, 1, 1, 1, 1), shippedAt=datetime(2005, 2, 1, 1, 1, 1, 1), description="bar2 reason") r.complete = True r.ready = True r.status = "shipped" db.session.add(r) db.session.commit()