#773 [frontend] fix deprecation warnings
Merged 4 years ago by praiskup. Opened 4 years ago by dturecek.
copr/ dturecek/copr fix-deprecations  into  master

@@ -387,7 +387,7 @@ 

  

  

  class CoprDeleteForm(FlaskForm):

-     verify = wtforms.TextField(

+     verify = wtforms.StringField(

          "Confirm deleting by typing 'yes'",

          validators=[

              wtforms.validators.DataRequired(),
@@ -948,7 +948,7 @@ 

      (adding packages to minimal chroot)

      """

  

-     buildroot_pkgs = wtforms.TextField("Packages")

+     buildroot_pkgs = wtforms.StringField("Packages")

  

      repos = wtforms.TextAreaField('Repos',

                                    validators=[UrlRepoListValidator(),
@@ -957,8 +957,8 @@ 

  

      comps = FileField("comps_xml")

  

-     with_opts = wtforms.TextField("With options")

-     without_opts = wtforms.TextField("Without options")

+     with_opts = wtforms.StringField("With options")

+     without_opts = wtforms.StringField("Without options")

  

  

  class CoprChrootExtend(FlaskForm):
@@ -1089,7 +1089,7 @@ 

  

  

  class ModifyChrootForm(ChrootForm):

-     buildroot_pkgs = wtforms.TextField('Additional packages to be always present in minimal buildroot')

+     buildroot_pkgs = wtforms.StringField('Additional packages to be always present in minimal buildroot')

      repos = wtforms.TextAreaField('Additional repos to be used for builds in chroot',

                                    validators=[UrlRepoListValidator(),

                                                wtforms.validators.Optional()],
@@ -1103,7 +1103,7 @@ 

  

  

  class AdminPlaygroundSearchForm(FlaskForm):

-     project = wtforms.TextField("Project")

+     project = wtforms.StringField("Project")

  

  

  class GroupUniqueNameValidator(object):

@@ -4,7 +4,7 @@ 

  

  from sqlalchemy import and_

  from sqlalchemy.sql import func

- from sqlalchemy import asc

+ from sqlalchemy import asc, desc

  from sqlalchemy.event import listen

  from sqlalchemy.orm.attributes import NEVER_SET

  from sqlalchemy.orm.exc import NoResultFound
@@ -187,7 +187,8 @@ 

  

      @classmethod

      def get_multiple_fulltext(cls, search_string):

-         query = (models.Copr.query.join(models.User)

+         query = (models.Copr.query.order_by(desc(models.Copr.created_on))

+                  .join(models.User)

                   .filter(models.Copr.deleted == False))

          if "/" in search_string: # copr search by its full name

              if search_string[0] == '@': # searching for @group/project
@@ -303,6 +304,7 @@ 

      @classmethod

      def exists_for_user(cls, user, coprname, incl_deleted=False):

          existing = (models.Copr.query

+                     .order_by(desc(models.Copr.created_on))

                      .filter(models.Copr.name == coprname)

                      .filter(models.Copr.user_id == user.id))

  
@@ -314,6 +316,7 @@ 

      @classmethod

      def exists_for_group(cls, group, coprname, incl_deleted=False):

          existing = (models.Copr.query

+                     .order_by(desc(models.Copr.created_on))

                      .filter(models.Copr.name == coprname)

                      .filter(models.Copr.group_id == group.id))

  

@@ -119,7 +119,7 @@ 

              for pkgname, rpm in group.items():

                  clone_url = self.get_clone_url(pkgname, rpm)

                  build = builds_logic.BuildsLogic.create_new_from_scm(self.user, self.copr, scm_type="git",

-                                                                      clone_url=clone_url, committish=rpm.get_ref())

+                                                                      clone_url=clone_url, committish=rpm.peek_ref())

                  build.batch = batch

                  build.batch_id = batch.id

                  build.module_id = module.id
@@ -129,8 +129,8 @@ 

              blocked_by_id = batch.id

  

      def get_clone_url(self, pkgname, rpm):

-         if rpm.get_repository():

-             return rpm.get_repository()

+         if rpm.peek_repository():

+             return rpm.peek_repository()

          return self.default_distgit.format(pkgname=pkgname)

  

      @property

@@ -259,10 +259,6 @@ 

      # temporary project if non-null

      delete_after = db.Column(db.DateTime, index=True, nullable=True)

  

-     __mapper_args__ = {

-         "order_by": created_on.desc()

-     }

- 

Shouldn't this change mean that we need to be more explicit elsewhere (where this class is used), and order there manually instead?

  

  class _CoprPrivate(db.Model, helpers.Serializer):

      """

@@ -52,10 +52,6 @@ 

  @coprs_ns.route("/g/<group_name>/<coprname>/builds/")

  @req_with_copr

  def copr_builds(copr):

-     return render_copr_builds(copr)

- 

- 

- def render_copr_builds(copr):

      flashes = flask.session.pop('_flashes', [])

      dirname = flask.request.args.get('dirname', '')

      builds_query = builds_logic.BuildsLogic.get_copr_builds_list(copr, dirname)
@@ -66,7 +62,6 @@ 

                                flashes=flashes)))

  

      flask.session.pop('_flashes', [])

-     app.save_session(flask.session, response)

      return response

  

  ################################ Url builds ################################

@@ -29,7 +29,6 @@ 

                                   )))

  

      flask.session.pop('_flashes', [])

-     app.save_session(flask.session, response)

      return response

  

  @coprs_ns.route("/<username>/<coprname>/package/<package_name>/")

@@ -3,6 +3,8 @@ 

  

  from flask_whooshee import Whooshee

  

+ from sqlalchemy import desc

+ 

  from copr_common.enums import ActionTypeEnum

  from coprs import app

  from coprs.logic.actions_logic import ActionsLogic
@@ -54,7 +56,8 @@ 

          writer.commit(optimize=True)

  

          query = CoprsLogic.get_multiple_fulltext("prefix")

-         pre_query = models.Copr.query.join(models.User).filter(models.Copr.deleted == False)

+         pre_query = models.Copr.query.order_by(desc(models.Copr.created_on))\

+             .join(models.User).filter(models.Copr.deleted == False)

  

          query = pre_query.whooshee_search(self.prefix, whoosheer=CoprWhoosheer) # needs flask-whooshee-0.2.0

  

@@ -101,8 +101,8 @@ 

          generator = ModulemdGenerator()

          generator.add_profiles(profiles)

          assert set(generator.mmd.get_profiles().keys()) == set(profile_names)

-         assert set(generator.mmd.get_profiles()["default"].get_rpms().get()) == {"pkg1", "pkg2"}

-         assert set(generator.mmd.get_profiles()["debug"].get_rpms().get()) == {"pkg3"}

+         assert set(generator.mmd.get_profiles()["default"].peek_rpms().get()) == {"pkg1", "pkg2"}

+         assert set(generator.mmd.get_profiles()["debug"].peek_rpms().get()) == {"pkg3"}

          assert len(generator.mmd.get_profiles()) == 2

  

      def test_add_component(self, f_users, f_coprs, f_mock_chroots, f_builds, f_db):
@@ -114,14 +114,14 @@ 

  

          component = generator.mmd.get_rpm_components()[self.b1.package_name]

          assert component.get_buildorder() == 1

-         assert component.get_name() == self.b1.package_name

-         assert component.get_rationale() == "A reason why package is in the module"

+         assert component.peek_name() == self.b1.package_name

+         assert component.peek_rationale() == "A reason why package is in the module"

  

          with mock.patch("coprs.app.config", self.config):

-             assert component.get_repository().startswith("http://distgiturl.org")

-             assert component.get_repository().endswith(".git")

-             assert chroot.dist_git_url.startswith(component.get_repository())

-         assert component.get_ref() == chroot.git_hash

+             assert component.peek_repository().startswith("http://distgiturl.org")

+             assert component.peek_repository().endswith(".git")

+             assert chroot.dist_git_url.startswith(component.peek_repository())

+         assert component.peek_ref() == chroot.git_hash

  

      def test_components(self, f_users, f_coprs, f_mock_chroots, f_builds, f_db):

          packages = [self.p1.name, self.p2.name, self.p3.name]

@@ -3,6 +3,7 @@ 

  

  import pytest

  import sqlalchemy

+ from sqlalchemy import desc

  

  from coprs.logic.coprs_logic import CoprsLogic

  from tests.coprs_test_case import CoprsTestCase, TransactionDecorator
@@ -53,7 +54,8 @@ 

          response = json.loads(r.data.decode("utf-8"))

          assert "New project was successfully created" in response["message"]

  

-         copr = self.models.Copr.query.filter(self.models.Copr.name == self.copr_name).one()

+         copr = self.models.Copr.query.order_by(desc(self.models.Copr.created_on))\

+             .filter(self.models.Copr.name == self.copr_name).one()

          assert copr.name == self.copr_name

          assert [self.mc1.name] == [c.name for c in copr.active_chroots]

          assert copr.repos == ''
@@ -85,7 +87,8 @@ 

          response = json.loads(r.data.decode("utf-8"))

          assert "New project was successfully created" in response["message"]

  

-         copr = self.models.Copr.query.filter(self.models.Copr.name == self.copr_name).one()

+         copr = self.models.Copr.query.order_by(desc(self.models.Copr.created_on))\

+             .filter(self.models.Copr.name == self.copr_name).one()

          assert copr.name == self.copr_name

          assert [self.mc1.name] == [c.name for c in copr.active_chroots]

          assert copr.repos == self.repos

@@ -4,6 +4,8 @@ 

  

  from unittest import mock

  

+ from sqlalchemy import desc

+ 

  from copr_common.enums import ActionTypeEnum

  from coprs import app, models

  
@@ -81,8 +83,9 @@ 

                    "arches": ["i386"]},

              follow_redirects=True)

  

-         assert self.models.Copr.query.filter(

-             self.models.Copr.name == "foo").first()

+         assert self.models.Copr.query\

+             .order_by(desc(models.Copr.created_on))\

+             .filter(self.models.Copr.name == "foo").first()

          assert self.success_string.encode("utf-8") in r.data

  

          # make sure no initial build was submitted
@@ -93,8 +96,9 @@ 

                                                f_mock_chroots, f_db):

  

          self.db.session.add(self.c1)

-         foocoprs = len(self.models.Copr.query.filter(

-             self.models.Copr.name == self.c1.name).all())

+         foocoprs = len(self.models.Copr.query

+                        .order_by(desc(models.Copr.created_on))

+                        .filter(self.models.Copr.name == self.c1.name).all())

          assert foocoprs > 0

  

          r = self.test_client.post(
@@ -105,16 +109,18 @@ 

  

          self.db.session.add(self.c1)

  

-         assert len(self.models.Copr.query.filter(

-             self.models.Copr.name == self.c1.name).all()) == foocoprs + 1

+         assert len(self.models.Copr.query

+                    .order_by(desc(models.Copr.created_on))

+                    .filter(self.models.Copr.name == self.c1.name).all()) == foocoprs + 1

          assert self.success_string.encode("utf-8") in r.data

  

      @TransactionDecorator("u1")

      def test_copr_new_exists_for_this_user(self, f_users, f_coprs,

                                             f_mock_chroots, f_db):

          self.db.session.add(self.c1)

-         foocoprs = len(self.models.Copr.query.filter(

-             self.models.Copr.name == self.c1.name).all())

+         foocoprs = len(self.models.Copr.query

+                        .order_by(desc(models.Copr.created_on))

+                        .filter(self.models.Copr.name == self.c1.name).all())

          assert foocoprs > 0

  

          r = self.test_client.post(
@@ -124,8 +130,9 @@ 

              follow_redirects=True)

  

          self.db.session.add(self.c1)

-         assert len(self.models.Copr.query.filter(

-             self.models.Copr.name == self.c1.name).all()) == foocoprs

+         assert len(self.models.Copr.query

+                    .order_by(desc(models.Copr.created_on))

+                    .filter(self.models.Copr.name == self.c1.name).all()) == foocoprs

          assert b"You already have project named" in r.data

  

      @TransactionDecorator("u1")
@@ -139,8 +146,9 @@ 

                                          },

                                    follow_redirects=True)

  

-         copr = self.models.Copr.query.filter(

-             self.models.Copr.name == "foo").first()

+         copr = self.models.Copr.query\

+             .order_by(desc(models.Copr.created_on))\

+             .filter(self.models.Copr.name == "foo").first()

          assert copr

          assert self.success_string.encode("utf-8") in r.data

  
@@ -161,8 +169,9 @@ 

                                          },

                                    follow_redirects=True)

  

-         copr = self.models.Copr.query.filter(

-             self.models.Copr.name == "foo").first()

+         copr = self.models.Copr.query\

+             .order_by(desc(models.Copr.created_on))\

+             .filter(self.models.Copr.name == "foo").first()

          assert copr

          assert self.success_string.encode("utf-8") in r.data

  
@@ -191,8 +200,9 @@ 

  

          self.c1 = self.db.session.merge(self.c1)

          self.u1 = self.db.session.merge(self.u1)

-         assert len(self.models.Copr.query.filter(self.models.Copr.name ==

-                                                  self.c1.name)

+         assert len(self.models.Copr.query

+                    .order_by(desc(models.Copr.created_on))

+                    .filter(self.models.Copr.name == self.c1.name)

                     .filter(self.models.Copr.user == self.u1)

                     .all()) == 2

          assert self.success_string.encode("utf-8") in r.data
@@ -581,8 +591,9 @@ 

          assert b"Project has been deleted successfully" in r.data

          self.db.session.add(self.c1)

          assert self.models.Action.query.first().id == self.c1.id

-         assert self.models.Copr.query.filter(

-             self.models.Copr.id == self.c1.id).first().deleted

+         assert self.models.Copr.query\

+             .order_by(desc(models.Copr.created_on))\

+             .filter(self.models.Copr.id == self.c1.id).first().deleted

  

      @TransactionDecorator("u1")

      def test_copr_delete_does_not_delete_if_verify_filled_wrongly(
@@ -596,8 +607,9 @@ 

  

          assert b"Project has been deleted successfully" not in r.data

          assert not self.models.Action.query.first()

-         assert self.models.Copr.query.filter(

-             self.models.Copr.id == self.c1.id).first()

+         assert self.models.Copr.query\

+             .order_by(desc(models.Copr.created_on))\

+             .filter(self.models.Copr.id == self.c1.id).first()

  

      @TransactionDecorator("u2")

      def test_non_user_cant_delete(self, f_users, f_coprs, f_db):
@@ -609,8 +621,9 @@ 

          self.c1 = self.db.session.merge(self.c1)

          assert b"Project has been deleted successfully" not in r.data

          assert not self.models.Action.query.first()

-         assert self.models.Copr.query.filter(

-             self.models.Copr.id == self.c1.id).first()

+         assert self.models.Copr.query\

+             .order_by(desc(models.Copr.created_on))\

+             .filter(self.models.Copr.id == self.c1.id).first()

  

  

  class TestCoprRepoGeneration(CoprsTestCase):

Fixes deprecation warnings when building on Fedora 30.

Shouldn't this change mean that we need to be more explicit elsewhere (where this class is used), and order there manually instead?

is there actually a reason to explicitly save_session? Per docs, it should be done automatically at the end of the request

I suppose you'll remove this; but while we are on it, can you please merge copr_builds and render_copr_builds? (the separation is just disturbing).

4 new commits added

  • [frontend] fix flask deprecation warning
  • [frontend] fix sqlalchemy deprecation warning
  • [frontend] fix Modulemd deprecation warnings
  • [frontend] fix WTForms deprecation warning
4 years ago

+1, it's unfortunate that we are not able to specify the default ordering per-table.

rebased onto 8ff37f3

4 years ago

Pull-Request has been merged by praiskup

4 years ago