Example #1
0
 def testDelete(self):
     data = 'deleteReleases=Fennec-4-build4'
     ret = self.post('/releases.html', data=data, content_type='application/x-www-form-urlencoded')
     self.assertEquals(ret.status_code, 200)
     with app.test_request_context():
         count = FennecRelease.query.filter_by(name='Fennec-4-build4').count()
         self.assertEquals(count, 0)
Example #2
0
    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 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'])
Example #4
0
    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)
Example #5
0
 def testUpdateStatus(self):
     ret = self.post('/releases/Fennec-1.0-build1', data={'status': 'omg!'})
     self.assertEquals(ret.status_code, 200)
     with app.test_request_context():
         got = FennecRelease.query.filter_by(
             name='Fennec-1.0-build1').first().status
         self.assertEquals(got, 'omg!')
Example #6
0
    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)
Example #7
0
 def testMarkAsComplete(self):
     ret = self.post('/releases/Fennec-1.0-build1', data={'complete': True})
     self.assertEquals(ret.status_code, 200, ret.data)
     with app.test_request_context():
         got = FennecRelease.query.filter_by(
             name='Fennec-1.0-build1').first().complete
         self.assertEquals(got, True)
Example #8
0
    def testThunderbirdUpdateWithNoCommRevision(self):
        with app.test_request_context():
            release = ThunderbirdRelease('def',
                                         '',
                                         '1.0build1',
                                         42,
                                         submitter='moz://a',
                                         version='0',
                                         buildNumber=1,
                                         mozillaRelbranch='',
                                         branch='releases/mozilla-beta',
                                         mozillaRevision='abcdef123456',
                                         l10nChangesets='ach 72c548f97e82')
            db.session.add(release)
            db.session.commit()

            data = '&'.join([
                'thunderbird-version=0', 'thunderbird-branch=a',
                'thunderbird-buildNumber=2', 'thunderbird-mozillaRevision=abc',
                'thunderbird-commRevision=', 'thunderbird-partials=1.0build1',
                'thunderbird-l10nChangesets=xxxx',
                'thunderbird-product=thunderbird',
                'thunderbird-mozillaRelbranch=', 'thunderbird-commRelbranch=',
                'thunderbird-description=foo'
            ])

            ret = self.post('/release.html',
                            query_string={'name': 'Thunderbird-0-build1'},
                            data=data,
                            content_type='application/x-www-form-urlencoded')
            self.assertEqual(ret.status_code, 400)
Example #9
0
 def testUpdateStatusTruncate(self):
     longStatus = ''.join(random.choice(string.letters) for i in xrange(270))
     ret = self.post('/releases/Fennec-1-build1', data={'status': longStatus})
     self.assertEquals(ret.status_code, 200)
     with app.test_request_context():
         got = FennecRelease.query.filter_by(name='Fennec-1-build1').first().status
         self.assertEquals(got, longStatus[:250])
Example #10
0
 def testSubmit(self):
     data = [
         'firefox-version=9.0',
         'firefox-buildNumber=1',
         'firefox-branch=z',
         'firefox-mozillaRevision=abc',
         'firefox-partials=1.0build1',
         'firefox-l10nChangesets=af%20def',
         'firefox-product=firefox',
         'firefox-promptWaitTime=',
         'firefox-mozillaRelbranch=',
         'firefox-mh_changeset=',
     ]
     ret = self.post('/submit_release.html', data='&'.join(data), content_type='application/x-www-form-urlencoded')
     self.assertEquals(ret.status_code, 302, ret.data)
     with app.test_request_context():
         got = FirefoxRelease.query.filter_by(name='Firefox-9.0-build1').first()
         self.assertEquals(got.version, '9.0')
         self.assertEquals(got.buildNumber, 1)
         self.assertEquals(got.branch, 'z')
         self.assertEquals(got.mozillaRevision, 'abc')
         self.assertEquals(got.partials, '1.0build1')
         self.assertEquals(got.l10nChangesets, 'af def')
         self.assertEquals(got.ready, False)
         self.assertEquals(got.complete, False)
         self.assertEquals(got.promptWaitTime, None)
         self.assertEquals(got.status, '')
         self.assertEquals(got.mozillaRelbranch, None)
         self.assertEquals(got.mh_changeset, '')
 def testSubmit(self):
     data = [
         'firefox-version=9.0',
         'firefox-buildNumber=1',
         'firefox-branch=z',
         'firefox-mozillaRevision=abc',
         'firefox-partials=1.0build1',
         'firefox-l10nChangesets=af%20def',
         'firefox-product=firefox',
         'firefox-promptWaitTime=',
         'firefox-mozillaRelbranch=',
         'firefox-mh_changeset=',
     ]
     ret = self.post('/submit_release.html',
                     data='&'.join(data),
                     content_type='application/x-www-form-urlencoded')
     self.assertEquals(ret.status_code, 302, ret.data)
     with app.test_request_context():
         got = FirefoxRelease.query.filter_by(
             name='Firefox-9.0-build1').first()
         self.assertEquals(got.version, '9.0')
         self.assertEquals(got.buildNumber, 1)
         self.assertEquals(got.branch, 'z')
         self.assertEquals(got.mozillaRevision, 'abc')
         self.assertEquals(got.partials, '1.0build1')
         self.assertEquals(got.l10nChangesets, 'af def')
         self.assertEquals(got.ready, False)
         self.assertEquals(got.complete, False)
         self.assertEquals(got.promptWaitTime, None)
         self.assertEquals(got.status, '')
         self.assertEquals(got.mozillaRelbranch, None)
         self.assertEquals(got.mh_changeset, '')
Example #12
0
    def testThunderbirdUpdateWithNoCommRevision(self):
        with app.test_request_context():
            release = ThunderbirdRelease('def',
                                         '',
                                         '1.0build1',
                                         42,
                                         submitter='moz://a',
                                         version='0',
                                         buildNumber=1,
                                         mozillaRelbranch='',
                                         branch='releases/mozilla-beta',
                                         mozillaRevision='abcdef123456',
                                         l10nChangesets='ach 72c548f97e82')
            db.session.add(release)
            db.session.commit()

            data = '&'.join(['thunderbird-version=0',
                             'thunderbird-branch=a',
                             'thunderbird-buildNumber=2',
                             'thunderbird-mozillaRevision=abc',
                             'thunderbird-commRevision=',
                             'thunderbird-partials=1.0build1',
                             'thunderbird-l10nChangesets=xxxx',
                             'thunderbird-product=thunderbird',
                             'thunderbird-mozillaRelbranch=',
                             'thunderbird-commRelbranch=',
                             'thunderbird-description=foo'])

            ret = self.post('/release.html', query_string={'name': 'Thunderbird-0-build1'}, data=data, content_type='application/x-www-form-urlencoded')
            self.assertEqual(ret.status_code, 400)
Example #13
0
 def testUpdateStatusTruncate(self):
     longStatus = ''.join(random.choice(string.letters) for i in xrange(270))
     ret = self.post('/releases/Fennec-1.0-build1', data={'status': longStatus})
     self.assertEquals(ret.status_code, 200)
     with app.test_request_context():
         got = FennecRelease.query.filter_by(name='Fennec-1.0-build1').first().status
         self.assertEquals(got, longStatus[:250])
Example #14
0
 def testDelete(self):
     data = 'deleteReleases=Fennec-4.0-build4'
     ret = self.post('/releases.html', data=data, content_type='application/x-www-form-urlencoded')
     self.assertEquals(ret.status_code, 200)
     with app.test_request_context():
         count = FennecRelease.query.filter_by(name='Fennec-4.0-build4').count()
         self.assertEquals(count, 0)
Example #15
0
 def setUp(self):
     self.db_fd, self.db_file = mkstemp()
     self.cef_fd, self.cef_file = mkstemp()
     app.config['DEBUG'] = True
     app.config['CSRF_ENABLED'] = False
     app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///%s' % self.db_file
     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', buildNumber=1,
                           branch='a', mozillaRevision='abc',
                           l10nChangesets='af de', dashboardCheck=True,
                           mozillaRelbranch=None)
         r.ready = True
         db.session.add(r)
         r = FennecRelease(submitter='joe', version='4', buildNumber=4,
                           branch='a', mozillaRevision='abc',
                           l10nChangesets='gh ij', dashboardCheck=True,
                           mozillaRelbranch=None)
         db.session.add(r)
         r = FennecRelease(submitter='joe', version='4', buildNumber=5,
                           branch='a', mozillaRevision='abc',
                           l10nChangesets='lk mn', dashboardCheck=False,
                           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', buildNumber=1,
                            branch='a', mozillaRevision='def',
                            l10nChangesets='ja zu', dashboardCheck=True,
                            mozillaRelbranch='FOO',
                            submittedAt=datetime(2005, 1, 2, 3, 4, 5, 6),
                            comment="yet an other amazying comment",
                            enUSPlatforms=None)
         r.complete = True
         r.ready = True
         db.session.add(r)
         r = ThunderbirdRelease(commRevision='ghi', commRelbranch=None,
                                partials='0', promptWaitTime=None,
                                submitter='bob', version='2', buildNumber=2,
                                branch='b', mozillaRevision='ghi',
                                l10nChangesets='li', dashboardCheck=True,
                                mozillaRelbranch=None,
                                submittedAt=datetime(2005, 1, 1, 1, 1, 1, 1),
                                comment='My great comment!',
                                enUSPlatforms="foo 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', dashboardCheck=True,
                                mozillaRelbranch=None,
                                submittedAt=datetime(2005, 1, 1, 1, 1, 1, 1))
         db.session.add(r)
         db.session.commit()
Example #16
0
 def testResetReady(self):
     data = {'status': 'error!', 'ready': False}
     ret = self.post('/releases/Fennec-1.0-build1', data=data)
     self.assertEquals(ret.status_code, 200)
     with app.test_request_context():
         got = FennecRelease.query.filter_by(name='Fennec-1.0-build1').first()
         self.assertEquals(got.ready, False)
         self.assertEquals(got.status, 'error!')
Example #17
0
 def testGetRecent(self):
     with app.test_request_context():
         got = [
             r.name for r in FennecRelease.getRecent(age=timedelta(days=1))
         ]
         # These two fennec build don't have any date.
         # Ship-it will consider today's date
         self.assertEquals(['Fennec-1-build1', 'Fennec-4-build4'], got)
Example #18
0
 def testResetReady(self):
     data = {'status': 'error!', 'ready': False}
     ret = self.post('/releases/Fennec-1-build1', data=data)
     self.assertEquals(ret.status_code, 200)
     with app.test_request_context():
         got = FennecRelease.query.filter_by(name='Fennec-1-build1').first()
         self.assertEquals(got.ready, False)
         self.assertEquals(got.status, 'error!')
Example #19
0
 def testMakeReady(self):
     data = 'readyReleases=Fennec-4.0-build4&readyReleases=Fennec-4.0-build5'
     ret = self.post('/releases.html', data=data, content_type='application/x-www-form-urlencoded')
     self.assertEquals(ret.status_code, 200)
     with app.test_request_context():
         got = FennecRelease.query.filter_by(name='Fennec-4.0-build4').first().ready
         self.assertEquals(got, True)
         got = FennecRelease.query.filter_by(name='Fennec-4.0-build5').first().ready
         self.assertEquals(got, True)
Example #20
0
    def testChangeDescription(self):
        description = 'New description'
        data = {'description': description, 'isSecurityDriven': False}
        ret = self.post('/releases/Fennec-1.0-build1', data=data)
        self.assertEquals(ret.status_code, 200)

        with app.test_request_context():
            fennec = FennecRelease.query.filter_by(name='Fennec-1.0-build1').first()
            self.assertEquals(description, fennec.description)
Example #21
0
    def testChangeDescription(self):
        description = 'New description'
        data = {'description': description, 'isSecurityDriven': False}
        ret = self.post('/releases/Fennec-1.0-build1', data=data)
        self.assertEquals(ret.status_code, 200)

        with app.test_request_context():
            fennec = FennecRelease.query.filter_by(name='Fennec-1.0-build1').first()
            self.assertEquals(description, fennec.description)
Example #22
0
    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()
Example #23
0
 def testMakeReady(self):
     data = 'readyReleases=Fennec-4-build4&readyReleases=Fennec-4-build5'
     ret = self.post('/releases.html', data=data, content_type='application/x-www-form-urlencoded')
     self.assertEquals(ret.status_code, 200)
     with app.test_request_context():
         got = FennecRelease.query.filter_by(name='Fennec-4-build4').first().ready
         self.assertEquals(got, True)
         got = FennecRelease.query.filter_by(name='Fennec-4-build5').first().ready
         self.assertEquals(got, True)
Example #24
0
 def testGetRecentShipped(self):
     with app.test_request_context():
         with mock.patch('kickoff.model.datetime') as mock_datetime:
             mock_datetime.now.return_value = datetime(2015, 3, 1)
             got = [
                 r.name for r in FennecRelease.getRecentShipped(
                     age=timedelta(days=2))
             ]
             self.assertEquals(
                 ['Fennec-23.0b2-build4', 'Fennec-24.0-build4'], got)
Example #25
0
    def testEditReleaseNotShipped(self):
        release = {'isSecurityDriven': True, 'description': 'Edited Release!'}

        ret = self.post('/release/Firefox-2.0-build1/edit_release.html',
                        data=release)

        with app.test_request_context():
            dbRelease = FirefoxRelease.query.filter_by(
                name='Firefox-2.0-build1').first()
            self.assertEquals(dbRelease.description, 'Edited Release!')
            self.assertTrue(dbRelease.isSecurityDriven)
Example #26
0
 def testThunberbird(self):
     with app.test_request_context():
         with mock.patch('kickoff.model.datetime') as mock_datetime:
             mock_datetime.now.return_value = datetime(2015, 2, 1)
             release = ThunderbirdReleaseForm()
             expected = json.dumps({
                 "releases/mozilla-beta": [
                     "49.0b3build1", "49.0b2build1", "49.0b1build1",
                     "48.0b9build1", "48.0b8build1", "48.0b7build1"
                 ],
                 "releases/mozilla-release": ["48.0.1build1", "48.0build1"]
             })
             self.assertEqual(expected, release.partials.suggestions)
Example #27
0
    def testGetEditableFennecRelease(self):
        with app.test_request_context():
            release = FennecRelease(submitter='moz://a',
                                    version='0',
                                    buildNumber=1,
                                    mozillaRelbranch='',
                                    branch='releases/mozilla-beta',
                                    mozillaRevision='abcdef123456',
                                    l10nChangesets='ach 72c548f97e82')
            db.session.add(release)
            db.session.commit()

            ret = self.get('/release.html', query_string={'name': 'Fennec-0-build1'})
            self.assertEqual(ret.status_code, 200)
Example #28
0
    def testGetEditableFennecRelease(self):
        with app.test_request_context():
            release = FennecRelease(submitter='moz://a',
                                    version='0',
                                    buildNumber=1,
                                    mozillaRelbranch='',
                                    branch='releases/mozilla-beta',
                                    mozillaRevision='abcdef123456',
                                    l10nChangesets='ach 72c548f97e82')
            db.session.add(release)
            db.session.commit()

            ret = self.get('/release.html', query_string={'name': 'Fennec-0-build1'})
            self.assertEqual(ret.status_code, 200)
Example #29
0
    def testEditReleaseNotShipped(self):
        release = {
            'isSecurityDriven': True,
            'description': 'Edited Release!'
        }

        ret = self.post('/release/Firefox-2.0-build1/edit_release.html',
                        data=release)

        with app.test_request_context():
            dbRelease = FirefoxRelease.query.filter_by(
                name='Firefox-2.0-build1').first()
            self.assertEquals(dbRelease.description, 'Edited Release!')
            self.assertTrue(dbRelease.isSecurityDriven)
    def testSubmitTooManyPartials(self):
        with app.test_request_context():
            data = [
                'firefox-version=9.0', 'firefox-buildNumber=1',
                'firefox-branch=z', 'firefox-mozillaRevision=abc',
                'firefox-partials=1.0build1,2.0build1,3.0build1,4.0build1,5.0build1,6.0build1,7.0build1',
                'firefox-l10nChangesets=af%20def', 'firefox-product=firefox',
                'firefox-promptWaitTime=', 'firefox-mozillaRelbranch=',
                'firefox-mh_changeset='
            ]

            ret = self.post('/submit_release.html',
                            data='&'.join(data),
                            content_type='application/x-www-form-urlencoded')
            self.assertEqual(ret.status_code, 400)
Example #31
0
    def testSubmitTooManyPartials(self):
        with app.test_request_context():
            data = [
                'firefox-version=9.0',
                'firefox-buildNumber=1',
                'firefox-branch=z',
                'firefox-mozillaRevision=abc',
                'firefox-partials=1.0build1,2.0build1,3.0build1,4.0build1,5.0build1,6.0build1,7.0build1',
                'firefox-l10nChangesets=af%20def',
                'firefox-product=firefox',
                'firefox-promptWaitTime=',
                'firefox-mozillaRelbranch=',
                'firefox-mh_changeset=']

            ret = self.post('/submit_release.html', data='&'.join(data), content_type='application/x-www-form-urlencoded')
            self.assertEqual(ret.status_code, 400)
Example #32
0
 def testGetEditableThunderbirdRelease(self):
     with app.test_request_context():
         release = ThunderbirdRelease('def',
                                      '48.0b7build1',
                                      '',
                                      1,
                                      submitter='moz://a',
                                      version='0',
                                      buildNumber=1,
                                      mozillaRelbranch='',
                                      branch='releases/mozilla-beta',
                                      mozillaRevision='abcdef123456',
                                      l10nChangesets='ach 72c548f97e82')
         db.session.add(release)
         db.session.commit()
         token = self.get('/csrf_token')
         ret = self.get('/release.html', query_string={'name': 'Thunderbird-0-build1'}, headers=token.headers)
         self.assertEqual(ret.status_code, 200, token.headers)
Example #33
0
 def testEditRelease(self):
     data = '&'.join([
         'fennec-version=1.0',
         'fennec-buildNumber=4',
         'fennec-branch=a',
         'fennec-mozillaRevision=abc',
         'fennec-l10nChangesets={"af":"de"}',
         'fennec-product=fennec',
         'fennec-mozillaRelbranch=',
     ])
     ret = self.post('/release.html', query_string={'name': 'Fennec-4.0-build4'}, data=data, content_type='application/x-www-form-urlencoded')
     self.assertEquals(ret.status_code, 302, ret.data)
     with app.test_request_context():
         got = FennecRelease.query.filter_by(name='Fennec-1.0-build4').first()
         self.assertEquals(got.version, '1.0')
         self.assertEquals(got.l10nChangesets, '{"af":"de"}')
         count = FennecRelease.query.filter_by(name='Fennec-4.0-build4').count()
         self.assertEquals(count, 0)
Example #34
0
 def testEditRelease(self):
     data = '&'.join([
         'fennec-version=1.0',
         'fennec-buildNumber=4',
         'fennec-branch=a',
         'fennec-mozillaRevision=abc',
         'fennec-l10nChangesets={"af":"de"}',
         'fennec-product=fennec',
         'fennec-mozillaRelbranch=',
     ])
     ret = self.post('/release.html', query_string={'name': 'Fennec-4.0-build4'}, data=data, content_type='application/x-www-form-urlencoded')
     self.assertEquals(ret.status_code, 302, ret.data)
     with app.test_request_context():
         got = FennecRelease.query.filter_by(name='Fennec-1.0-build4').first()
         self.assertEquals(got.version, '1.0')
         self.assertEquals(got.l10nChangesets, '{"af":"de"}')
         count = FennecRelease.query.filter_by(name='Fennec-4.0-build4').count()
         self.assertEquals(count, 0)
Example #35
0
 def testGetEditableThunderbirdRelease(self):
     with app.test_request_context():
         release = ThunderbirdRelease('def',
                                      '48.0b7build1',
                                      '',
                                      1,
                                      submitter='moz://a',
                                      version='0',
                                      buildNumber=1,
                                      mozillaRelbranch='',
                                      branch='releases/mozilla-beta',
                                      mozillaRevision='abcdef123456',
                                      l10nChangesets='ach 72c548f97e82')
         db.session.add(release)
         db.session.commit()
         token = self.get('/csrf_token')
         ret = self.get('/release.html', query_string={'name': 'Thunderbird-0-build1'}, headers=token.headers)
         self.assertEqual(ret.status_code, 200, token.headers)
Example #36
0
    def testGetEditableFirefoxReleaseWithReleaseEta(self):
        with app.test_request_context():
            release = FirefoxRelease('48.0b7build1',
                                     42,
                                     submitter='moz://a',
                                     version='50.0b6',
                                     buildNumber=2,
                                     mozillaRelbranch='',
                                     branch='releases/mozilla-beta',
                                     mozillaRevision='abcdef123456',
                                     l10nChangesets='ach 72c548f97e82',
                                     release_eta=datetime.datetime(2005, 1, 2, 3, 4))
            db.session.add(release)
            db.session.commit()

            ret = self.get('/release.html', query_string={'name': 'Firefox-50.0b6-build2'})
            self.assertEqual(ret.status_code, 200)
            self.assertTrue('2005-01-02' in ret.data)
            self.assertTrue('03:04' in ret.data)
Example #37
0
    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)
Example #38
0
 def testEditReleaseAddRelbranch(self):
     data = '&'.join([
         'thunderbird-version=4.0',
         'thunderbird-buildNumber=1',
         'thunderbird-branch=b',
         'thunderbird-mozillaRevision=yyy',
         'thunderbird-l10nChangesets=yy zz',
         'thunderbird-mozillaRelbranch=',
         'thunderbird-commRelbranch=BAR',
         'thunderbird-partials=1.0build1',
         'thunderbird-promptWaitTime=',
         'thunderbird-product=thunderbird',
     ])
     ret = self.post('/release.html', query_string={'name': 'Thunderbird-4.0-build1'}, data=data, content_type='application/x-www-form-urlencoded')
     self.assertEquals(ret.status_code, 302, ret.data)
     with app.test_request_context():
         got = ThunderbirdRelease.query.filter_by(name='Thunderbird-4.0-build1').first()
         self.assertEquals(got.commRelbranch, 'BAR')
         self.assertEquals(got.commRevision, 'BAR')
Example #39
0
    def testGetEditableFirefoxReleaseWithReleaseEta(self):
        with app.test_request_context():
            release = FirefoxRelease('48.0b7build1',
                                     42,
                                     submitter='moz://a',
                                     version='50.0b6',
                                     buildNumber=2,
                                     mozillaRelbranch='',
                                     branch='releases/mozilla-beta',
                                     mozillaRevision='abcdef123456',
                                     l10nChangesets='ach 72c548f97e82',
                                     release_eta=datetime.datetime(2005, 1, 2, 3, 4))
            db.session.add(release)
            db.session.commit()

            ret = self.get('/release.html', query_string={'name': 'Firefox-50.0b6-build2'})
            self.assertEqual(ret.status_code, 200)
            self.assertTrue('2005-01-02' in ret.data)
            self.assertTrue('03:04' in ret.data)
Example #40
0
    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)
Example #41
0
 def testEditReleaseAddRelbranch(self):
     data = '&'.join([
         'thunderbird-version=4.0',
         'thunderbird-buildNumber=1',
         'thunderbird-branch=b',
         'thunderbird-mozillaRevision=yyy',
         'thunderbird-l10nChangesets=yy zz',
         'thunderbird-mozillaRelbranch=',
         'thunderbird-commRelbranch=BAR',
         'thunderbird-partials=1.0build1',
         'thunderbird-promptWaitTime=',
         'thunderbird-product=thunderbird',
     ])
     ret = self.post('/release.html', query_string={'name': 'Thunderbird-4.0-build1'}, data=data, content_type='application/x-www-form-urlencoded')
     self.assertEquals(ret.status_code, 302, ret.data)
     with app.test_request_context():
         got = ThunderbirdRelease.query.filter_by(name='Thunderbird-4.0-build1').first()
         self.assertEquals(got.commRelbranch, 'BAR')
         self.assertEquals(got.commRevision, 'BAR')
Example #42
0
    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)
Example #43
0
    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)
Example #44
0
    def testEditRelease(self):
        release = {
            'shippedAtDate': '2013/03/03',
            'shippedAtTime': '14:44:00',
            'isSecurityDriven': True,
            'description': 'Edited Release!',
            'isShipped': 'y'
        }

        ret = self.post('/release/Firefox-2.0-build1/edit_release.html',
                        data=release)

        with app.test_request_context():
            dbRelease = FirefoxRelease.query.filter_by(
                name='Firefox-2.0-build1').first()
            self.assertEquals(dbRelease.description, 'Edited Release!')
            self.assertTrue(dbRelease.isSecurityDriven)

            tm = datetime.strptime('14:44:00', '%H:%M:%S').time()
            dt = datetime(2013, 03, 03)

            dateAndTime = datetime.combine(dt, tm)
            self.assertEquals(dbRelease._shippedAt, dateAndTime)
Example #45
0
    def testEditRelease(self):
        release = {
            'shippedAtDate': '2013/03/03',
            'shippedAtTime': '14:44:00',
            'isSecurityDriven': True,
            'description': 'Edited Release!',
            'isShipped': 'y'
        }

        ret = self.post('/release/Firefox-2.0-build1/edit_release.html',
                        data=release)

        with app.test_request_context():
            dbRelease = FirefoxRelease.query.filter_by(
                name='Firefox-2.0-build1').first()
            self.assertEquals(dbRelease.description, 'Edited Release!')
            self.assertTrue(dbRelease.isSecurityDriven)

            tm = datetime.strptime('14:44:00', '%H:%M:%S').time()
            dt = datetime(2013, 03, 03)

            dateAndTime = datetime.combine(dt, tm)
            self.assertEquals(dbRelease._shippedAt, dateAndTime)
Example #46
0
 def testGetRecent(self):
     with app.test_request_context():
         got = [r.name for r in FennecRelease.getRecent(age=timedelta(days=1))]
         self.assertEquals(['Fennec-1-build1', 'Fennec-4-build4'], got)
Example #47
0
 def testGetRecentShipped(self):
     with app.test_request_context():
         with mock.patch('kickoff.model.datetime') as mock_datetime:
             mock_datetime.now.return_value = datetime(2015, 3, 1)
             got = [r.name for r in FennecRelease.getRecentShipped(age=timedelta(days=2))]
             self.assertEquals(['Fennec-23.0b2-build4', 'Fennec-24.0-build4'], got)
Example #48
0
    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', buildNumber=1,
                              branch='a', mozillaRevision='abc',
                              l10nChangesets='af de', dashboardCheck=True,
                              mozillaRelbranch=None)
            r.ready = True
            db.session.add(r)

            r = FennecRelease(submitter='joe', version='4', buildNumber=4,
                              branch='a', mozillaRevision='abc',
                              l10nChangesets='gh ij', dashboardCheck=True,
                              mozillaRelbranch=None)
            db.session.add(r)

            r = FennecRelease(submitter='joe', version='4', buildNumber=5,
                              branch='a', mozillaRevision='abc',
                              l10nChangesets='lk mn', dashboardCheck=False,
                              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', dashboardCheck=True,
                               mozillaRelbranch='FOO',
                               submittedAt=datetime(2005, 1, 2, 3, 4, 5, 6),
                               shippedAt=datetime(2005, 1, 4, 3, 4, 5, 6),
                               comment="yet an other amazying comment",
                               enUSPlatforms=None)
            r.complete = True
            r.ready = True
            # Shipped
            r.status = "postrelease"
            db.session.add(r)


            r = FirefoxRelease(partials='0,1', promptWaitTime=5,
                               submitter='joe', version='2.0.2esr', buildNumber=1,
                               branch='a', mozillaRevision='def',
                               l10nChangesets='ja zu', dashboardCheck=True,
                               mozillaRelbranch='FOO',
                               submittedAt=datetime(2005, 1, 2, 3, 4, 5, 6),
                               shippedAt=datetime(2005, 1, 4, 3, 4, 5, 6),
                               comment="yet an other amazying comment",
                               enUSPlatforms=None)
            r.complete = True
            r.ready = True
            # Shipped
            r.status = "postrelease"
            db.session.add(r)

            r = FirefoxRelease(partials='0,1', promptWaitTime=5,
                               submitter='joe', version='38.1.0esr', buildNumber=1,
                               branch='a', mozillaRevision='def',
                               l10nChangesets='ja zu', dashboardCheck=True,
                               mozillaRelbranch='FOO',
                               submittedAt=datetime(2005, 1, 2, 3, 4, 5, 6),
                               shippedAt=datetime(2015, 1, 4, 3, 4, 5, 6),
                               comment="yet an other amazying comment",
                               enUSPlatforms=None)
            r.complete = True
            r.ready = True
            # Shipped
            r.status = "postrelease"
            db.session.add(r)

            r = FennecRelease(submitter='joe', version='24.0', buildNumber=4,
                              branch='a', mozillaRevision='abc',
                              l10nChangesets='gh ij', dashboardCheck=True,
                              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
            # Shipped
            r.status = "postrelease"
            db.session.add(r)

            r = FennecRelease(submitter='joe', version='24.0.1', buildNumber=4,
                              branch='a', mozillaRevision='abc',
                              l10nChangesets='gh ij', dashboardCheck=True,
                              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
            # Shipped
            r.status = "postrelease"
            db.session.add(r)

            r = FennecRelease(submitter='joe', version='23.0b2', buildNumber=4,
                              branch='a', mozillaRevision='abc',
                              l10nChangesets='gh ij', dashboardCheck=True,
                              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
            # Shipped
            r.status = "postrelease"
            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', dashboardCheck=True,
                               mozillaRelbranch='FOO',
                               submittedAt=datetime(2005, 1, 2, 3, 4, 5, 6),
                               shippedAt=datetime(2005, 1, 2, 3, 4, 5, 6),
                               comment="yet an other amazying comment",
                               isSecurityDriven=True,
                               description="We did this because of an issue in NSS",
                               enUSPlatforms=None)
            r.complete = True
            r.ready = True
            # Shipped
            r.status = "postrelease"
            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', dashboardCheck=True,
                               mozillaRelbranch='FOO',
                               submittedAt=datetime(2005, 1, 2, 3, 4, 5, 6),
                               shippedAt=datetime(2005, 3, 2, 3, 4, 5, 6),
                               comment="yet an other amazying comment",
                               enUSPlatforms=None)
            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', dashboardCheck=True,
                               mozillaRelbranch='FOO',
                               submittedAt=datetime(2005, 1, 2, 3, 4, 5, 6),
                               shippedAt=datetime(2005, 1, 2, 3, 4, 5, 6),
                               comment="yet an other amazying comment",
                               enUSPlatforms=None,
                               description="we did this release because of foo")
            r.complete = True
            r.ready = True
            # Shipped
            r.status = "postrelease"
            db.session.add(r)

            # Thunderbird data
            r = ThunderbirdRelease(commRevision='ghi', commRelbranch=None,
                                   partials='0', promptWaitTime=None,
                                   submitter='bob', version='2', buildNumber=2,
                                   branch='b', mozillaRevision='ghi',
                                   l10nChangesets='li', dashboardCheck=True,
                                   mozillaRelbranch=None,
                                   submittedAt=datetime(2005, 1, 1, 1, 1, 1, 1),
                                   shippedAt=datetime(2005, 1, 3, 1, 1, 1, 1),
                                   comment='My great comment!',
                                   enUSPlatforms="foo bar",
                                   isSecurityDriven=True,
                                   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', dashboardCheck=True,
                                   mozillaRelbranch=None,
                                   submittedAt=datetime(2005, 1, 1, 1, 1, 1, 1),
                                   description="foo reason")
            db.session.add(r)
            db.session.commit()

            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', dashboardCheck=True,
                                   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
            # Shipped
            r.status = "postrelease"
            db.session.add(r)
            db.session.commit()

            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', dashboardCheck=True,
                                   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
            # Shipped
            r.status = "postrelease"
            db.session.add(r)
            db.session.commit()

            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', dashboardCheck=True,
                                   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
            # Shipped
            r.status = "postrelease"
            db.session.add(r)
            db.session.commit()
Example #49
0
 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',
                           buildNumber=1,
                           branch='a',
                           mozillaRevision='abc',
                           l10nChangesets='af de',
                           dashboardCheck=True,
                           mozillaRelbranch=None)
         r.ready = True
         db.session.add(r)
         r = FennecRelease(submitter='joe',
                           version='4',
                           buildNumber=4,
                           branch='a',
                           mozillaRevision='abc',
                           l10nChangesets='gh ij',
                           dashboardCheck=True,
                           mozillaRelbranch=None)
         db.session.add(r)
         r = FennecRelease(submitter='joe',
                           version='4',
                           buildNumber=5,
                           branch='a',
                           mozillaRevision='abc',
                           l10nChangesets='lk mn',
                           dashboardCheck=False,
                           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',
                            buildNumber=1,
                            branch='a',
                            mozillaRevision='def',
                            l10nChangesets='ja zu',
                            dashboardCheck=True,
                            mozillaRelbranch='FOO',
                            submittedAt=datetime(2005, 1, 2, 3, 4, 5, 6),
                            comment="yet an other amazying comment",
                            enUSPlatforms=None)
         r.complete = True
         r.ready = True
         db.session.add(r)
         r = ThunderbirdRelease(commRevision='ghi',
                                commRelbranch=None,
                                partials='0',
                                promptWaitTime=None,
                                submitter='bob',
                                version='2',
                                buildNumber=2,
                                branch='b',
                                mozillaRevision='ghi',
                                l10nChangesets='li',
                                dashboardCheck=True,
                                mozillaRelbranch=None,
                                submittedAt=datetime(
                                    2005, 1, 1, 1, 1, 1, 1),
                                comment='My great comment!',
                                enUSPlatforms="foo 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',
                                dashboardCheck=True,
                                mozillaRelbranch=None,
                                submittedAt=datetime(
                                    2005, 1, 1, 1, 1, 1, 1))
         db.session.add(r)
         db.session.commit()
Example #50
0
 def testGetRecent(self):
     with app.test_request_context():
         got = [r.name for r in FennecRelease.getRecent(age=timedelta(days=1))]
         # These two fennec build don't have any date.
         # Ship-it will consider today's date
         self.assertEquals(['Fennec-1-build1', 'Fennec-4-build4'], got)
Example #51
0
    parser = OptionParser()
    parser.add_option("-d", "--db", dest="db")
    parser.add_option("--host", dest="host")
    parser.add_option("--port", dest="port", type="int")
    parser.add_option("-l", "--logfile", dest="logfile")
    parser.add_option("-u", "--username", dest="username")
    parser.add_option("-p", "--password", dest="password")
    parser.add_option("-v", "--verbose", dest="verbose", action="store_true")
    parser.add_option("--cef-log", dest="cef_log", default="cef.log")
    options, args = parser.parse_args()

    log_level = logging.INFO
    if options.verbose:
        log_level = logging.DEBUG
    logging.basicConfig(filename=options.logfile, level=log_level)

    app.config['SQLALCHEMY_DATABASE_URI'] = options.db
    app.config['DEBUG'] = True
    app.config['SECRET_KEY'] = 'NOT A SECRET'
    app.config.update(cef_config(options.cef_log))

    with app.test_request_context():
        db.init_app(app)
        db.create_all()

    def auth(environ, username, password):
        return options.username == username and options.password == password
    app.wsgi_app = AuthBasicHandler(app.wsgi_app, "Release kick-off", auth)
    app.run(port=options.port, host=options.host)
Example #52
0
 def testMarkAsComplete(self):
     ret = self.post('/releases/Fennec-1.0-build1', data={'complete': True})
     self.assertEquals(ret.status_code, 200, ret.data)
     with app.test_request_context():
         got = FennecRelease.query.filter_by(name='Fennec-1.0-build1').first().complete
         self.assertEquals(got, True)
Example #53
0
 def testUpdateStatus(self):
     ret = self.post('/releases/Fennec-1.0-build1', data={'status': 'omg!'})
     self.assertEquals(ret.status_code, 200)
     with app.test_request_context():
         got = FennecRelease.query.filter_by(name='Fennec-1.0-build1').first().status
         self.assertEquals(got, 'omg!')
Example #54
0
    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',
                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',
                buildNumber=4,
                branch='a',
                mozillaRevision='abc',
                l10nChangesets='{"fr": { "revision": "fe436c75f71d" }}',
                mozillaRelbranch=None)
            db.session.add(r)

            r = FennecRelease(
                submitter='joe',
                version='4',
                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)

            r = 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")
            r.complete = True
            r.ready = True
            r.status = "shipped"
            db.session.add(r)

            r = FirefoxRelease(partials='0,1',
                               promptWaitTime=5,
                               submitter='joe',
                               version='38.1.0esr',
                               buildNumber=1,
                               branch='a',
                               mozillaRevision='def',
                               l10nChangesets='ja zu',
                               mozillaRelbranch='FOO',
                               submittedAt=datetime(2005, 1, 2, 3, 4, 5, 6),
                               shippedAt=datetime(2015, 1, 4, 3, 4, 5, 6),
                               comment="yet an other amazing comment")
            r.complete = True
            r.ready = True
            r.status = "shipped"
            db.session.add(r)

            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.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")
            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)

            # Thunderbird data
            r = ThunderbirdRelease(
                commRevision='ghi',
                commRelbranch=None,
                partials='0',
                promptWaitTime=None,
                submitter='bob',
                version='2',
                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()
Example #55
0
    parser.add_option("-p", "--password", dest="password")
    parser.add_option("-v", "--verbose", dest="verbose", action="store_true")
    parser.add_option("--cef-log", dest="cef_log", default="cef.log")
    options, args = parser.parse_args()

    log_level = logging.INFO
    if options.verbose:
        log_level = logging.DEBUG
    logging.basicConfig(filename=options.logfile, level=log_level)

    app.config['SQLALCHEMY_DATABASE_URI'] = options.db
    app.config['DEBUG'] = True
    app.config['SECRET_KEY'] = 'NOT A SECRET'
    app.config.update(cef_config(options.cef_log))

    with app.test_request_context():
        db.init_app(app)
        db.create_all()

    def auth(environ, username, password):
        return options.username == username and options.password == password

    if app.config['DEBUG']:
        # Setting up the cron/ directory with some testing data
        # In production, this is managed by Apache and the json file is going to be override
        # by the cron (see bug 1155935)
        from werkzeug import SharedDataMiddleware
        app.wsgi_app = SharedDataMiddleware(
            app.wsgi_app,
            {'/cron/': path.join(path.dirname(__file__), 'cron/')})
Example #56
0
    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()