#402 Start using a code from copr_common
Merged 5 years ago by msuchy. Opened 5 years ago by msuchy.
copr/ msuchy/copr common  into  master

@@ -66,6 +66,7 @@ 

              "pypi": 5, # package_name, version, python_versions

              "rubygems": 6, # gem_name

              "scm": 8, # type, clone_url, committish, subdirectory, spec, srpm_build_method

+             "custom": 9, # user-provided script to build sources

             }

  

  

@@ -21,10 +21,12 @@ 

  BuildRequires: python3-rpkg

  BuildRequires: python3-pytest

  BuildRequires: python3-pytest-cov

+ BuildRequires: python3-copr-common

  

  Requires: systemd

  Requires: httpd

  Requires: dist-git

+ Requires: python3-copr-common

  Requires: python3-requests

  Requires: python3-rpkg

  Requires: python3-munch

file modified
+1 -19
@@ -5,6 +5,7 @@ 

  

  from .exceptions import FileDownloadException, RunCommandException, SrpmQueryException

  

+ from copr_common.enums import EnumType

Ideally we'd use something clearly saying that this is internal thing - so if anyone else used this (mistakenly?) we'd give them clear sign that it's not rock solid api (e.g. copr_common.internal.* or copr_common._enums.

  from configparser import ConfigParser

  from munch import Munch

  from requests import get
@@ -32,25 +33,6 @@ 

      return upper_wrapper

  

  

- class EnumType(type):

-     def __call__(self, attr):

-         if isinstance(attr, int):

-             for k, v in self.vals.items():

-                 if v == attr:

-                     return k

-             raise KeyError("num {0} is not mapped".format(attr))

-         else:

-             return self.vals[attr]

- 

- 

- class FailTypeEnum(object):

-     __metaclass__ = EnumType

-     vals = {

-         "unset": 0,

-         "srpm_import_failed": 3,

-     }

- 

- 

  def _get_conf(cp, section, option, default, mode=None):

      """

      To make returning items from config parser less irritating

@@ -66,6 +66,7 @@ 

  BuildRequires: python3-devel

  

  %if %{with check}

+ BuildRequires: python3-copr-common

  BuildRequires: python3-six

  BuildRequires: python3-flask

  BuildRequires: python3-flask-script
@@ -141,6 +142,7 @@ 

  Requires: xstatic-datatables-common

  Requires: js-html5shiv

  Requires: js-respond

+ Requires: python3-copr-common

  

  Provides: bundled(bootstrap-combobox) = 1.1.6

  Provides: bundled(bootstrap-select) = 1.5.4

@@ -15,6 +15,7 @@ 

  

  from flask import Markup, url_for

  

+ from copr_common.enums import ModuleStatusEnum, StatusEnum

  from coprs import app

  from coprs import helpers

  
@@ -75,14 +76,14 @@ 

  def state_from_num(num):

      if num is None:

          return "unknown"

-     return helpers.StatusEnum(num)

+     return StatusEnum(num)

  

  

  @app.template_filter("module_state_from_num")

  def module_state_from_num(num):

      if num is None:

          return "unknown"

-     return helpers.ModuleStatusEnum(num)

+     return ModuleStatusEnum(num)

  

  

  @app.template_filter("os_name_short")

@@ -16,6 +16,7 @@ 

  from sqlalchemy.types import TypeDecorator, VARCHAR

  import json

  

+ from copr_common.enums import EnumType

  from coprs import constants

  from coprs import app

  
@@ -41,18 +42,6 @@ 

      REPO_DL = "repo_dl"

  

  

- class EnumType(type):

- 

-     def __call__(self, attr):

-         if isinstance(attr, int):

-             for k, v in self.vals.items():

-                 if v == attr:

-                     return k

-             raise KeyError("num {0} is not mapped".format(attr))

-         else:

-             return self.vals[attr]

- 

- 

  class PermissionEnum(with_metaclass(EnumType, object)):

      vals = {"nothing": 0, "request": 1, "approved": 2}

  
@@ -61,49 +50,6 @@ 

          return [(n, k) for k, n in cls.vals.items() if n != without]

  

  

- class ActionTypeEnum(with_metaclass(EnumType, object)):

-     vals = {

-         "delete": 0,

-         "legal-flag": 2,

-         "createrepo": 3,

-         "update_comps": 4,

-         "gen_gpg_key": 5,

-         "rawhide_to_release": 6,

-         "fork": 7,

-         "update_module_md": 8,

-         "build_module": 9,

-         "cancel_build": 10,

-     }

- 

- 

- class BackendResultEnum(with_metaclass(EnumType, object)):

-     vals = {"waiting": 0, "success": 1, "failure": 2}

- 

- 

- class RoleEnum(with_metaclass(EnumType, object)):

-     vals = {"user": 0, "admin": 1}

- 

- 

- class StatusEnum(with_metaclass(EnumType, object)):

-     vals = {

-         "failed": 0,     # build failed

-         "succeeded": 1,  # build succeeded

-         "canceled": 2,   # build was canceled

-         "running": 3,    # SRPM or RPM build is running

-         "pending": 4,    # build(-chroot) is waiting to be picked

-         "skipped": 5,    # if there was this package built already

-         "starting": 6,   # build was picked by worker but no VM initialized yet

-         "importing": 7,  # SRPM is being imported into dist-git

-         "forked": 8,     # build(-chroot) was forked

-         "waiting": 9,    # build(-chroot) is waiting for something else to finish

-         "unknown": 1000, # undefined

-     }

- 

- 

- class ModuleStatusEnum(with_metaclass(EnumType, object)):

-     vals = {"pending": 0, "succeeded": 1, "failed": 2}

- 

- 

  class BuildSourceEnum(with_metaclass(EnumType, object)):

      vals = {"unset": 0,

              "link": 1,  # url
@@ -114,22 +60,6 @@ 

              "custom": 9, # user-provided script to build sources

             }

  

- # The same enum is also in distgit's helpers.py

- class FailTypeEnum(with_metaclass(EnumType, object)):

-     vals = {"unset": 0,

-             # General errors mixed with errors for SRPM URL/upload:

-             "unknown_error": 1,

-             "build_error": 2,

-             "srpm_import_failed": 3,

-             "srpm_download_failed": 4,

-             "srpm_query_failed": 5,

-             "import_timeout_exceeded": 6,

-             "git_clone_failed": 31,

-             "git_wrong_directory": 32,

-             "git_checkout_error": 33,

-             "srpm_build_error": 34,

-            }

- 

  

  class JSONEncodedDict(TypeDecorator):

      """Represents an immutable structure as a json-encoded string.

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

  import base64

  import os

  

+ from copr_common.enums import ActionTypeEnum, BackendResultEnum

  from coprs import db

  from coprs import models

  from coprs import helpers
@@ -41,9 +42,9 @@ 

  

          query = (models.Action.query

                   .filter(models.Action.result ==

-                          helpers.BackendResultEnum("waiting"))

+                          BackendResultEnum("waiting"))

                   .filter(models.Action.action_type !=

-                          helpers.ActionTypeEnum("legal-flag"))

+                          ActionTypeEnum("legal-flag"))

                   .order_by(models.Action.created_on.asc()))

  

          return query
@@ -80,7 +81,7 @@ 

              "chroots": [chroot.name for chroot in copr.active_chroots],

          }

          action = models.Action(

-             action_type=helpers.ActionTypeEnum("createrepo"),

+             action_type=ActionTypeEnum("createrepo"),

              object_type="repository",

              object_id=0,

              data=json.dumps(data_dict),
@@ -94,7 +95,7 @@ 

              "ownername": copr.owner_name,

              "project_dirnames": [copr_dir.name for copr_dir in copr.dirs],

          }

-         action = models.Action(action_type=helpers.ActionTypeEnum("delete"),

+         action = models.Action(action_type=ActionTypeEnum("delete"),

                                 object_type="copr",

                                 object_id=copr.id,

                                 data=json.dumps(data_dict),
@@ -120,7 +121,7 @@ 

          }

  

          action = models.Action(

-             action_type=helpers.ActionTypeEnum("delete"),

+             action_type=ActionTypeEnum("delete"),

              object_type="build",

              object_id=build.id,

              data=json.dumps(data_dict),
@@ -142,7 +143,7 @@ 

              }

  

              action = models.Action(

-                 action_type=helpers.ActionTypeEnum("cancel_build"),

+                 action_type=ActionTypeEnum("cancel_build"),

                  data=json.dumps(data_dict),

                  created_on=int(time.time())

              )
@@ -165,7 +166,7 @@ 

          }

  

          action = models.Action(

-             action_type=helpers.ActionTypeEnum("update_comps"),

+             action_type=ActionTypeEnum("update_comps"),

              object_type="copr_chroot",

              data=json.dumps(data_dict),

              created_on=int(time.time())
@@ -188,7 +189,7 @@ 

          }

  

          action = models.Action(

-             action_type=helpers.ActionTypeEnum("update_module_md"),

+             action_type=ActionTypeEnum("update_module_md"),

              object_type="copr_chroot",

              data=json.dumps(data_dict),

              created_on=int(time.time())
@@ -207,7 +208,7 @@ 

          }

  

          action = models.Action(

-             action_type=helpers.ActionTypeEnum("gen_gpg_key"),

+             action_type=ActionTypeEnum("gen_gpg_key"),

              object_type="copr",

              data=json.dumps(data_dict),

              created_on=int(time.time()),
@@ -217,7 +218,7 @@ 

      @classmethod

      def send_rawhide_to_release(cls, data):

          action = models.Action(

-             action_type=helpers.ActionTypeEnum("rawhide_to_release"),

+             action_type=ActionTypeEnum("rawhide_to_release"),

              object_type="None",

              data=json.dumps(data),

              created_on=int(time.time()),
@@ -233,7 +234,7 @@ 

          """

  

          action = models.Action(

-             action_type=helpers.ActionTypeEnum("fork"),

+             action_type=ActionTypeEnum("fork"),

              object_type="copr",

              old_value="{0}".format(src.full_name),

              new_value="{0}".format(dst.full_name),
@@ -255,7 +256,7 @@ 

          }

  

          action = models.Action(

-             action_type=helpers.ActionTypeEnum("build_module"),

+             action_type=ActionTypeEnum("build_module"),

              object_type="module",

              object_id=module.id,

              old_value="",

@@ -5,7 +5,7 @@ 

      to [de]serialize model instances for API views.

  """

  

- from coprs.helpers import StatusEnum

+ from copr_common.enums import StatusEnum

  

  class BuildWrapper(object):

      def __init__(self, build):

@@ -20,6 +20,7 @@ 

  from sqlalchemy import desc, asc, bindparam, Integer, String

  from collections import defaultdict

  

+ from copr_common.enums import FailTypeEnum, StatusEnum

  from coprs import app

  from coprs import db

  from coprs import exceptions
@@ -27,7 +28,6 @@ 

  from coprs import helpers

  from coprs.constants import DEFAULT_BUILD_TIMEOUT, MAX_BUILD_TIMEOUT

  from coprs.exceptions import MalformedArgumentException, ActionInProgressException, InsufficientRightsException, UnrepeatableBuildException

- from coprs.helpers import StatusEnum

  

  from coprs.logic import coprs_logic

  from coprs.logic import users_logic
@@ -182,9 +182,9 @@ 

              """)

  

              res_pending = db.engine.execute(query_pending, start=step_start, end=step_end,

-                                             status=helpers.StatusEnum('pending'))

+                                             status=StatusEnum('pending'))

              res_running = db.engine.execute(query_running, start=step_start, end=step_end,

-                                             status=helpers.StatusEnum('running'))

+                                             status=StatusEnum('running'))

  

              pending = res_pending.first().pending

              running = res_running.first().running
@@ -218,7 +218,7 @@ 

          """

          query = (models.Build.query

                   .filter(models.Build.canceled == false())

-                  .filter(models.Build.source_status == helpers.StatusEnum("importing"))

+                  .filter(models.Build.source_status == StatusEnum("importing"))

                   .order_by(models.Build.id.asc()))

          if background is not None:

              query = query.filter(models.Build.is_background == (true() if background else false()))
@@ -228,7 +228,7 @@ 

      def get_pending_srpm_build_tasks(cls, background=None):

          query = (models.Build.query

                  .filter(models.Build.canceled == false())

-                 .filter(models.Build.source_status == helpers.StatusEnum("pending"))

+                 .filter(models.Build.source_status == StatusEnum("pending"))

                  .order_by(models.Build.is_background.asc(), models.Build.id.asc()))

          if background is not None:

              query = query.filter(models.Build.is_background == (true() if background else false()))
@@ -239,9 +239,9 @@ 

          query = (models.BuildChroot.query.join(models.Build)

                  .filter(models.Build.canceled == false())

                  .filter(or_(

-                     models.BuildChroot.status == helpers.StatusEnum("pending"),

+                     models.BuildChroot.status == StatusEnum("pending"),

                      and_(

-                         models.BuildChroot.status == helpers.StatusEnum("running"),

+                         models.BuildChroot.status == StatusEnum("running"),

                          models.BuildChroot.started_on < int(time.time() - 1.1 * MAX_BUILD_TIMEOUT),

                          models.BuildChroot.ended_on.is_(None)

                      )
@@ -730,7 +730,7 @@ 

              package=package,

              copr=package.copr,

              repos=package.copr.repos,

-             source_status=helpers.StatusEnum("pending"),

+             source_status=StatusEnum("pending"),

              source_type=package.source_type,

              source_json=source_json,

              submitted_on=int(time.time()),
@@ -745,7 +745,7 @@ 

          db.session.add(build)

  

          chroots = package.copr.active_chroots

-         status = helpers.StatusEnum("waiting")

+         status = StatusEnum("waiting")

          for chroot in chroots:

              buildchroot = models.BuildChroot(

                  build=build,
@@ -841,7 +841,7 @@ 

                      db.session.add(ch)

  

              if new_status == StatusEnum("failed"):

-                 build.fail_type = helpers.FailTypeEnum("srpm_build_error")

+                 build.fail_type = FailTypeEnum("srpm_build_error")

  

              cls.process_update_callback(build)

              db.session.add(build)
@@ -987,9 +987,9 @@ 

          Marks build as failed on all its non-finished chroots

          """

          build = cls.get(build_id).one()

-         chroots = filter(lambda x: x.status != helpers.StatusEnum("succeeded"), build.build_chroots)

+         chroots = filter(lambda x: x.status != StatusEnum("succeeded"), build.build_chroots)

          for chroot in chroots:

-             chroot.status = helpers.StatusEnum("failed")

+             chroot.status = StatusEnum("failed")

          cls.process_update_callback(build)

          return build

  
@@ -1003,8 +1003,8 @@ 

  

          last_build = (

              builds.join(models.BuildChroot)

-             .filter((models.BuildChroot.status == helpers.StatusEnum("succeeded"))

-                     | (models.BuildChroot.status == helpers.StatusEnum("skipped")))

+             .filter((models.BuildChroot.status == StatusEnum("succeeded"))

+                     | (models.BuildChroot.status == StatusEnum("skipped")))

              .filter(models.BuildChroot.ended_on.isnot(None))

              .order_by(models.BuildChroot.ended_on.desc())

          ).first()

@@ -8,10 +8,10 @@ 

  

  from .. import db

  from .builds_logic import BuildsLogic

+ from copr_common.enums import StatusEnum

  from coprs import models

  from coprs import exceptions

  from coprs.exceptions import ObjectNotFound

- from coprs.helpers import StatusEnum

  from coprs.logic.packages_logic import PackagesLogic

  from coprs.logic.actions_logic import ActionsLogic

  

@@ -9,6 +9,7 @@ 

  from sqlalchemy.orm.exc import NoResultFound

  from sqlalchemy.orm.attributes import get_history

  

+ from copr_common.enums import ActionTypeEnum, BackendResultEnum

  from coprs import db

  from coprs import exceptions

  from coprs import helpers
@@ -322,13 +323,13 @@ 

  

      @classmethod

      def unfinished_blocking_actions_for(cls, copr):

-         blocking_actions = [helpers.ActionTypeEnum("delete")]

+         blocking_actions = [ActionTypeEnum("delete")]

  

          actions = (models.Action.query

                     .filter(models.Action.object_type == "copr")

                     .filter(models.Action.object_id == copr.id)

                     .filter(models.Action.result ==

-                            helpers.BackendResultEnum("waiting"))

+                            BackendResultEnum("waiting"))

                     .filter(models.Action.action_type.in_(blocking_actions)))

  

          return actions

@@ -11,6 +11,7 @@ 

  from libravatar import libravatar_url

  import zlib

  

+ from copr_common.enums import ActionTypeEnum, BackendResultEnum, FailTypeEnum, ModuleStatusEnum, StatusEnum

  from coprs import constants

  from coprs import db

  from coprs import helpers
@@ -18,7 +19,7 @@ 

  

  import itertools

  import operator

- from coprs.helpers import BuildSourceEnum, StatusEnum, ActionTypeEnum, JSONEncodedDict

+ from coprs.helpers import BuildSourceEnum, JSONEncodedDict

  

  import gi

  gi.require_version('Modulemd', '1.0')
@@ -394,8 +395,8 @@ 

  

      @property

      def still_forking(self):

-         return bool(Action.query.filter(Action.result == helpers.BackendResultEnum("waiting"))

-                     .filter(Action.action_type == helpers.ActionTypeEnum("fork"))

+         return bool(Action.query.filter(Action.result == BackendResultEnum("waiting"))

+                     .filter(Action.action_type == ActionTypeEnum("fork"))

                      .filter(Action.new_value == self.full_name).all())

  

      def get_search_related_copr_id(self):
@@ -636,7 +637,7 @@ 

      # Source of the build: description in json, example: git link, srpm url, etc.

      source_json = db.Column(db.Text)

      # Type of failure: type identifier

-     fail_type = db.Column(db.Integer, default=helpers.FailTypeEnum("unset"))

+     fail_type = db.Column(db.Integer, default=FailTypeEnum("unset"))

      # background builds has lesser priority than regular builds.

      is_background = db.Column(db.Boolean, default=False, server_default="0", nullable=False)

  
@@ -692,7 +693,7 @@ 

  

      @property

      def fail_type_text(self):

-         return helpers.FailTypeEnum(self.fail_type)

+         return FailTypeEnum(self.fail_type)

  

      @property

      def repos_list(self):
@@ -1167,9 +1168,9 @@ 

      new_value = db.Column(db.String(255))

      # additional data

      data = db.Column(db.Text)

-     # result of the action, see helpers.BackendResultEnum

+     # result of the action, see BackendResultEnum

      result = db.Column(

-         db.Integer, default=helpers.BackendResultEnum("waiting"))

+         db.Integer, default=BackendResultEnum("waiting"))

      # optional message from the backend/whatever

      message = db.Column(db.Text)

      # time created as returned by int(time.time())
@@ -1313,15 +1314,15 @@ 

          Return numeric representation of status of this build

          """

          if any(b for b in self.builds if b.status == StatusEnum("failed")):

-             return helpers.ModuleStatusEnum("failed")

-         return self.action.result if self.action else helpers.ModuleStatusEnum("pending")

+             return ModuleStatusEnum("failed")

+         return self.action.result if self.action else ModuleStatusEnum("pending")

  

      @property

      def state(self):

          """

          Return text representation of status of this build

          """

-         return helpers.ModuleStatusEnum(self.status)

+         return ModuleStatusEnum(self.status)

  

      @property

      def rpm_filter(self):

@@ -9,7 +9,7 @@ 

  from marshmallow import Schema, fields

  from marshmallow import Schema, fields, validates_schema, ValidationError, validate

  

- from coprs.helpers import StatusEnum

+ from copr_common.enums import StatusEnum

  from coprs.rest_api.common import render_build_task

  from ...exceptions import MalformedArgumentException

  from ...logic.builds_logic import BuildsLogic, BuildChrootsLogic

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

  

  import flask

  

+ from copr_common.enums import RoleEnum

  from coprs import db

  from coprs import helpers

  from coprs import models
@@ -17,13 +18,13 @@ 

  

  

  @admin_ns.route("/")

- @login_required(role=helpers.RoleEnum("admin"))

+ @login_required(role=RoleEnum("admin"))

  def admin_index():

      return flask.redirect(flask.url_for("admin_ns.legal_flag"))

  

  

  @admin_ns.route("/legal-flag/")

- @login_required(role=helpers.RoleEnum("admin"))

+ @login_required(role=RoleEnum("admin"))

  def legal_flag():

      legal_flags = (

          models.LegalFlag.query
@@ -38,7 +39,7 @@ 

  

  

  @admin_ns.route("/legal-flag/<int:flag_id>/resolve/", methods=["POST"])

- @login_required(role=helpers.RoleEnum("admin"))

+ @login_required(role=RoleEnum("admin"))

  def legal_flag_resolve(flag_id):

  

      (models.LegalFlag.query
@@ -52,7 +53,7 @@ 

  

  

  @admin_ns.route("/playground/", methods=["POST", "GET"])

- @login_required(role=helpers.RoleEnum("admin"))

+ @login_required(role=RoleEnum("admin"))

  def playground():

      form = forms.AdminPlaygroundSearchForm()

  
@@ -78,7 +79,7 @@ 

  

  

  @admin_ns.route("/playground/<username>/<coprname>/")

- @login_required(role=helpers.RoleEnum("admin"))

+ @login_required(role=RoleEnum("admin"))

  def playground_project(username, coprname):

      copr = coprs_logic.CoprsLogic.get(username, coprname).first()

      if not copr:
@@ -91,7 +92,7 @@ 

  

  

  @admin_ns.route("/playground/<username>/<coprname>/set/", methods=["POST"])

- @login_required(role=helpers.RoleEnum("admin"))

+ @login_required(role=RoleEnum("admin"))

  def playground_set(username, coprname):

      copr = coprs_logic.CoprsLogic.get(username, coprname).first()

      if copr:

@@ -11,6 +11,7 @@ 

  

  from werkzeug import secure_filename

  

+ from copr_common.enums import StatusEnum

  from coprs import db

  from coprs import exceptions

  from coprs import forms
@@ -105,9 +106,9 @@ 

      Receive information about queue

      """

      output = {

-         "importing": builds_logic.BuildsLogic.get_build_tasks(helpers.StatusEnum("importing")).count(),

-         "waiting": builds_logic.BuildsLogic.get_build_tasks(helpers.StatusEnum("pending")).count(), # change to "pending""

-         "running": builds_logic.BuildsLogic.get_build_tasks(helpers.StatusEnum("running")).count(),

+         "importing": builds_logic.BuildsLogic.get_build_tasks(StatusEnum("importing")).count(),

+         "waiting": builds_logic.BuildsLogic.get_build_tasks(StatusEnum("pending")).count(), # change to "pending""

+         "running": builds_logic.BuildsLogic.get_build_tasks(StatusEnum("running")).count(),

      }

      return flask.jsonify(output)

  

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

  from . import get_copr, file_upload, query_params, pagination, Paginator, json2form, GET, POST, PUT, DELETE

  from .json2form import get_form_compatible_data, without_empty_fields

  from werkzeug import secure_filename

+ from copr_common.enums import StatusEnum

  from coprs import db, forms, models

- from coprs.helpers import StatusEnum

  from coprs.exceptions import (ApiError, InsufficientRightsException, ActionInProgressException,

                                BadRequest, AccessRestricted)

  from coprs.views.misc import api_login_required

@@ -2,11 +2,11 @@ 

  import time

  import sqlalchemy

  

+ from copr_common.enums import StatusEnum

  from coprs import db, app

  from coprs import helpers

  from coprs import models

  from coprs import exceptions

- from coprs.helpers import StatusEnum

  from coprs.logic import actions_logic

  from coprs.logic.builds_logic import BuildsLogic, BuildChrootsLogic

  from coprs.logic.complex_logic import ComplexLogic

@@ -8,6 +8,7 @@ 

  from functools import wraps

  from werkzeug import secure_filename

  

+ from copr_common.enums import StatusEnum

  from coprs import app

  from coprs import db

  from coprs import forms
@@ -427,7 +428,7 @@ 

      else:

          build_chroot_names = set(ch.name for ch in build.chroots)

          build_failed_chroot_names = set(ch.name for ch in build.get_chroots_by_status([

-             helpers.StatusEnum('failed'), helpers.StatusEnum('canceled'),

+             StatusEnum('failed'), StatusEnum('canceled'),

          ]))

          for ch in available_chroots:

              # check checkbox on all the chroots that have not been (successfully) built before

@@ -23,6 +23,7 @@ 

  from pygments.lexers import get_lexer_by_name

  from pygments.formatters import HtmlFormatter

  

+ from copr_common.enums import StatusEnum

  from coprs import app

  from coprs import db

  from coprs import rcp
@@ -787,7 +788,7 @@ 

                                   monitor=monitor,

                                   oses=oses_grouped,

                                   archs=archs,

-                                  status_enum_func=helpers.StatusEnum)))

+                                  status_enum_func=StatusEnum)))

  

  

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

@@ -12,6 +12,7 @@ 

  from urllib.parse import urlparse

  from openid_teams.teams import TeamsRequest

  

+ from copr_common.enums import RoleEnum

  from coprs import app

  from coprs import db

  from coprs import helpers
@@ -292,7 +293,7 @@ 

      return flask.redirect(flask.url_for("coprs_ns.coprs_show"))

  

  

- def login_required(role=helpers.RoleEnum("user")):

+ def login_required(role=RoleEnum("user")):

      def view_wrapper(f):

          @functools.wraps(f)

          def decorated_function(*args, **kwargs):
@@ -300,7 +301,7 @@ 

                  return flask.redirect(flask.url_for("misc.login",

                                                      next=flask.request.url))

  

-             if role == helpers.RoleEnum("admin") and not flask.g.user.admin:

+             if role == RoleEnum("admin") and not flask.g.user.admin:

                  flask.flash("You are not allowed to access admin section.")

                  return flask.redirect(flask.url_for("coprs_ns.coprs_show"))

  

@@ -1,9 +1,9 @@ 

  import flask

  from time import time

  

+ from copr_common.enums import StatusEnum

  from coprs.views.status_ns import status_ns

  from coprs.logic import builds_logic

- from coprs import helpers

  

  

  @status_ns.route("/")
@@ -18,7 +18,7 @@ 

  

  @status_ns.route("/running/")

  def running():

-     tasks = builds_logic.BuildsLogic.get_build_tasks(helpers.StatusEnum("running")).limit(300).all()

+     tasks = builds_logic.BuildsLogic.get_build_tasks(StatusEnum("running")).limit(300).all()

      return flask.render_template("status/running.html",

                                   number=len(tasks),

                                   tasks=tasks)

@@ -11,6 +11,7 @@ 

  from flask_script import Manager, Command, Option, Group

  from flask_whooshee import Whooshee

  

+ from copr_common.enums import StatusEnum

  from coprs import app

  from coprs import db

  from coprs import exceptions
@@ -19,7 +20,7 @@ 

  from coprs.views.misc import create_user_wrapper

  from coprs.whoosheers import CoprWhoosheer

  from sqlalchemy import and_, or_

- from coprs.helpers import chroot_to_branch,StatusEnum

+ from coprs.helpers import chroot_to_branch

  

  

  class TestCommand(Command):

@@ -14,12 +14,11 @@ 

  

  import coprs

  

+ from copr_common.enums import ActionTypeEnum, BackendResultEnum, StatusEnum

  from coprs import helpers

  from coprs import models

  from coprs.logic.coprs_logic import BranchesLogic

  

- from coprs.helpers import StatusEnum

- 

  from unittest import mock

  from unittest.mock import MagicMock

  
@@ -402,16 +401,16 @@ 

      @pytest.fixture

      def f_actions(self):

          self.f_db()

-         self.delete_action = models.Action(action_type=helpers.ActionTypeEnum("delete"),

+         self.delete_action = models.Action(action_type=ActionTypeEnum("delete"),

                                             object_type="copr",

                                             object_id=self.c1.id,

                                             old_value="asd/qwe",

                                             new_value=None,

-                                            result=helpers.BackendResultEnum("waiting"),

+                                            result=BackendResultEnum("waiting"),

                                             created_on=int(time.time()))

-         self.cancel_build_action = models.Action(action_type=helpers.ActionTypeEnum("cancel_build"),

+         self.cancel_build_action = models.Action(action_type=ActionTypeEnum("cancel_build"),

                                                   data=json.dumps({'task_id': 123}),

-                                                  result=helpers.BackendResultEnum("waiting"),

+                                                  result=BackendResultEnum("waiting"),

                                                   created_on=int(time.time()))

          self.db.session.add_all([self.delete_action, self.cancel_build_action])

  

@@ -5,7 +5,8 @@ 

  import random

  from marshmallow import pprint

  

- from coprs.helpers import BuildSourceEnum, StatusEnum

+ from copr_common.enums import StatusEnum

+ from coprs.helpers import BuildSourceEnum

  from coprs.logic.actions_logic import ActionsLogic

  from coprs.logic.coprs_logic import CoprsLogic

  from coprs.logic.builds_logic import BuildsLogic

@@ -7,8 +7,8 @@ 

  

  import pytest

  import sqlalchemy

- from coprs.helpers import StatusEnum

  

+ from copr_common.enums import StatusEnum

  from coprs.logic.users_logic import UsersLogic

  from coprs.logic.coprs_logic import CoprsLogic

  

@@ -9,8 +9,8 @@ 

  from coprs import helpers, models

  from coprs.constants import MAX_BUILD_TIMEOUT

  

+ from copr_common.enums import StatusEnum

  from coprs.exceptions import ActionInProgressException, InsufficientRightsException, MalformedArgumentException

- from coprs.helpers import StatusEnum

  from coprs.logic.actions_logic import ActionsLogic

  from coprs.logic.builds_logic import BuildsLogic

  from coprs.logic.builds_logic import BuildsMonitorLogic
@@ -208,6 +208,6 @@ 

          BuildsLogic.mark_as_failed(self.b1.id)

          BuildsLogic.mark_as_failed(self.b3.id)

  

-         assert self.b1.status == helpers.StatusEnum("succeeded")

-         assert self.b3.status == helpers.StatusEnum("failed")

+         assert self.b1.status == StatusEnum("succeeded")

+         assert self.b3.status == StatusEnum("failed")

          assert type(BuildsLogic.mark_as_failed(self.b3.id)) == models.Build

@@ -1,7 +1,7 @@ 

  import json

  from unittest import mock

  

- from coprs.helpers import ActionTypeEnum

+ from copr_common.enums import ActionTypeEnum

  from coprs.logic.actions_logic import ActionsLogic

  from coprs.logic.complex_logic import ComplexLogic, ProjectForking

  from tests.coprs_test_case import CoprsTestCase

@@ -4,9 +4,9 @@ 

  

  from flask_whooshee import Whooshee

  

+ from copr_common.enums import ActionTypeEnum

  from coprs import app

  from coprs.exceptions import ActionInProgressException

- from coprs.helpers import ActionTypeEnum

  from coprs.logic.actions_logic import ActionsLogic

  from coprs.logic.coprs_logic import CoprsLogic

  

@@ -2,7 +2,6 @@ 

  import pytest

  

  from coprs.exceptions import ActionInProgressException

- from coprs.helpers import ActionTypeEnum

  from coprs.logic.coprs_logic import CoprsLogic

  from coprs.logic.stat_logic import CounterStatLogic

  from coprs.helpers  import CounterStatType

@@ -1,8 +1,8 @@ 

  import json

  

+ from copr_common.enums import BackendResultEnum

  from tests.coprs_test_case import CoprsTestCase

  from coprs.logic.builds_logic import BuildsLogic

- from coprs import helpers

  

  

  class TestWaitingBuilds(CoprsTestCase):
@@ -174,7 +174,7 @@ 

              self, f_users, f_coprs, f_actions, f_db):

  

          for a in [self.delete_action, self.cancel_build_action]:

-             a.result = helpers.BackendResultEnum("success")

+             a.result = BackendResultEnum("success")

  

          self.db.session.commit()

  
@@ -182,7 +182,7 @@ 

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

  

          for a in [self.delete_action]:

-             a.result = helpers.BackendResultEnum("waiting")

+             a.result = BackendResultEnum("waiting")

              self.db.session.add(a)

  

          self.db.session.commit()

@@ -1,8 +1,8 @@ 

  import json

  import os

  

+ from copr_common.enums import StatusEnum

  from coprs import models

- from coprs.helpers import StatusEnum

  from tests.coprs_test_case import CoprsTestCase, TransactionDecorator

  

  

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

  

  from unittest import mock

  

+ from copr_common.enums import ActionTypeEnum

  from coprs import models

- from coprs.helpers import ActionTypeEnum

  

  from coprs.logic.coprs_logic import CoprsLogic, CoprDirsLogic

  from coprs.logic.actions_logic import ActionsLogic

... and delete relevant code from helpers.

Ideally we'd use something clearly saying that this is internal thing - so if anyone else used this (mistakenly?) we'd give them clear sign that it's not rock solid api (e.g. copr_common.internal.* or copr_common._enums.

+1, thanks. Feel free to ignore the wish.

We can put it in description of package. Imho all public stuffs go to python-copr. This is all internal.

Pull-Request has been merged by msuchy

5 years ago
Metadata
Changes Summary 32
+1 -0
file changed
common/copr_common/enums.py
+2 -0
file changed
dist-git/copr-dist-git.spec
+1 -19
file changed
dist-git/dist_git/helpers.py
+2 -0
file changed
frontend/copr-frontend.spec
+3 -2
file changed
frontend/coprs_frontend/coprs/filters.py
+1 -71
file changed
frontend/coprs_frontend/coprs/helpers.py
+13 -12
file changed
frontend/coprs_frontend/coprs/logic/actions_logic.py
+1 -1
file changed
frontend/coprs_frontend/coprs/logic/api_logic.py
+14 -14
file changed
frontend/coprs_frontend/coprs/logic/builds_logic.py
+1 -1
file changed
frontend/coprs_frontend/coprs/logic/complex_logic.py
+3 -2
file changed
frontend/coprs_frontend/coprs/logic/coprs_logic.py
+11 -10
file changed
frontend/coprs_frontend/coprs/models.py
+1 -1
file changed
frontend/coprs_frontend/coprs/rest_api/resources/build_task.py
+7 -6
file changed
frontend/coprs_frontend/coprs/views/admin_ns/admin_general.py
+4 -3
file changed
frontend/coprs_frontend/coprs/views/api_ns/api_general.py
+1 -1
file changed
frontend/coprs_frontend/coprs/views/apiv3_ns/apiv3_builds.py
+1 -1
file changed
frontend/coprs_frontend/coprs/views/backend_ns/backend_general.py
+2 -1
file changed
frontend/coprs_frontend/coprs/views/coprs_ns/coprs_builds.py
+2 -1
file changed
frontend/coprs_frontend/coprs/views/coprs_ns/coprs_general.py
+3 -2
file changed
frontend/coprs_frontend/coprs/views/misc.py
+2 -2
file changed
frontend/coprs_frontend/coprs/views/status_ns/status_general.py
+2 -1
file changed
frontend/coprs_frontend/manage.py
+5 -6
file changed
frontend/coprs_frontend/tests/coprs_test_case.py
+2 -1
file changed
frontend/coprs_frontend/tests/test_api/test_build_r.py
+1 -1
file changed
frontend/coprs_frontend/tests/test_api/test_build_task_r.py
+3 -3
file changed
frontend/coprs_frontend/tests/test_logic/test_builds_logic.py
+1 -1
file changed
frontend/coprs_frontend/tests/test_logic/test_complex_logic.py
+1 -1
file changed
frontend/coprs_frontend/tests/test_logic/test_coprs_logic.py
+0 -1
file changed
frontend/coprs_frontend/tests/test_logic/test_stat_logic.py
+3 -3
file changed
frontend/coprs_frontend/tests/test_views/test_backend_ns/test_backend_general.py
+1 -1
file changed
frontend/coprs_frontend/tests/test_views/test_coprs_ns/test_coprs_builds.py
+1 -1
file changed
frontend/coprs_frontend/tests/test_views/test_coprs_ns/test_coprs_general.py