From e2e14e12c8cbf5094f43e29a98b4ac8d14dca68f Mon Sep 17 00:00:00 2001 From: jiang Date: Mon, 20 Jul 2020 17:53:02 +0800 Subject: [PATCH 1/5] Changes in database structure, adjustment of query statements and comments in code --- .../apps/package/function/packages.py | 252 ++++++++++++----- .../application/apps/package/view.py | 266 ++++++++---------- 2 files changed, 307 insertions(+), 211 deletions(-) diff --git a/packageship/packageship/application/apps/package/function/packages.py b/packageship/packageship/application/apps/package/function/packages.py index 7d3ca455..68bba697 100644 --- a/packageship/packageship/application/apps/package/function/packages.py +++ b/packageship/packageship/application/apps/package/function/packages.py @@ -4,20 +4,25 @@ Description: Get package information and modify package information functions: get_packages, buildep_packages, sub_packages, get_single_package, update_single_package, update_maintaniner_info """ -from flask import current_app +from flask import current_app, jsonify +from sqlalchemy.exc import SQLAlchemyError + +from packageship.application.apps.package.function.constants import ResponseCode +from packageship.application.apps.package.function.searchdb import db_priority from packageship.libs.dbutils import DBHelper -from packageship.application.models.package import src_pack -from packageship.application.models.package import pack_provides -from packageship.application.models.package import maintenance_info -from packageship.application.models.package import pack_requires +from packageship.application.models.package import src_pack, src_requires from packageship.application.models.package import bin_pack +from packageship.application.models.package import maintenance_info +from packageship.application.models.package import bin_requires +from packageship.application.models.package import bin_provides from packageship.libs.exception import Error def get_packages(dbname): """ - Description: Get all packages info + Get all packages info in search databases + Args: dbname: Database name Returns: @@ -28,89 +33,144 @@ def get_packages(dbname): """ with DBHelper(db_name=dbname) as db_name: src_pack_queryset = db_name.session.query(src_pack).all() - resp_list = [] + if src_pack_queryset is None: + return None + resp_list = list() for src_pack_obj in src_pack_queryset: - package = {} + package = dict() package["sourceName"] = src_pack_obj.name package["version"] = src_pack_obj.version - package["license"] = src_pack_obj.license - package["maintainer"] = src_pack_obj.Maintaniner - package["maintainlevel"] = src_pack_obj.MaintainLevel - package["sourceURL"] = src_pack_obj.sourceURL - package["maintainlevel"] = src_pack_obj.MaintainLevel - package["downloadURL"] = src_pack_obj.downloadURL + package["license"] = src_pack_obj.rpm_license + package["sourceURL"] = src_pack_obj.url + package["rpm_packager"] = src_pack_obj.rpm_packager + package["maintaniner"] = src_pack_obj.maintaniner + package["maintainlevel"] = src_pack_obj.maintainlevel package["dbname"] = dbname resp_list.append(package) return resp_list -def buildep_packages(dbname, src_pack_id): +def get_all_packages(db_name): + """ + all packages info + + Args: + db_name: database name + Returns: + response code: response status code + """ + dbpreority = db_priority() + if dbpreority is None: + return jsonify( + ResponseCode.response_json(ResponseCode.FILE_NOT_FOUND) + ) + if not db_name: + response = [] + for dbname in dbpreority: + query_result = get_packages(dbname) + for item in query_result: + if item is None: + query_result.remove(item) + response.append(item) + return jsonify( + ResponseCode.response_json(ResponseCode.SUCCESS, response) + ) + if db_name not in dbpreority: + return jsonify( + ResponseCode.response_json(ResponseCode.DB_NAME_ERROR) + ) + response = get_packages(db_name) + if not response: + return jsonify( + ResponseCode.response_json(ResponseCode.PACK_NAME_NOT_FOUND) + ) + return jsonify( + ResponseCode.response_json(ResponseCode.SUCCESS, response) + ) + + +def buildep_packages(dbname, src_pack_pkgkey): """ - Description: Query package layer 1 compilation dependency + Query package layer 1 compilation dependency + Args: dbname: databases name - src_pack_id: The ID of the source package + src_pack_pkgkey: The ID of the source package Returns: buildDep Compile dependencies of source packages Raises: AttributeError: Object does not have this property """ with DBHelper(db_name=dbname) as db_name: - b_pack_requires_set = db_name.session.query( - pack_requires).filter_by(srcIDkey=src_pack_id).all() - b_dep_proid_keys = [ - dep_proid_obj.depProIDkey for dep_proid_obj in b_pack_requires_set] - b_pack_pro_set = db_name.session.query(pack_provides).filter( - pack_provides.id.in_(b_dep_proid_keys)).all() - b_bin_pack_ids = [ - bin_pack_obj.binIDkey for bin_pack_obj in b_pack_pro_set] + # srcpack's pkgkey to src_requires find pkgkey + s_pack_requires_set = db_name.session.query( + src_requires).filter_by(pkgKey=src_pack_pkgkey).all() + # src_requires pkykey to find the name of the dependent component + s_pack_requires_names = [ + s_pack_requires_obj.name for s_pack_requires_obj in s_pack_requires_set] + + # Find pkgkey in bin_provides by the name of the dependent component + b_pack_provides_set = db_name.session.query(bin_provides).filter( + bin_provides.name.in_(s_pack_requires_names)).all() + b_pack_provides_pkg_list = [ + b_pack_provides_obj.pkgKey for b_pack_provides_obj in b_pack_provides_set] + + # Go to bin_pack to find the name by pkgkey of bin_provides b_bin_pack_set = db_name.session.query(bin_pack).filter( - bin_pack.id.in_(b_bin_pack_ids)).all() - builddep = [bin_pack_obj.name for bin_pack_obj in b_bin_pack_set] + bin_pack.pkgKey.in_(b_pack_provides_pkg_list)).all() + builddep = [b_bin_pack_obj.name for b_bin_pack_obj in b_bin_pack_set] return builddep -def sub_packages(dbname, src_pack_id): +def sub_packages(dbname, sourcename): """ - Description: Query package layer 1 installation dependency + Query package layer 1 installation dependency + Args: dbname: databases name - src_pack_id: srcpackage id + src_pack_pkgkey: srcpackage id Returns: subpack Source package to binary package, then find the installation dependencies - of the binary package + of the binary package Raises: AttributeError: Object does not have this property """ with DBHelper(db_name=dbname) as db_name: - subpack = {} + subpack = dict() + # The name of src_pack finds the sub-package bin_pack query set i_bin_pack_set = db_name.session.query( - bin_pack).filter_by(srcIDkey=src_pack_id).all() - i_bin_pack_ids = [ - bin_pack_obj.id for bin_pack_obj in i_bin_pack_set] - for i_bin_pack_id in i_bin_pack_ids: - i_bin_pack_name = db_name.session.query( - bin_pack).filter_by(id=i_bin_pack_id).first().name - i_pack_req_set = db_name.session.query( - pack_requires).filter_by(binIDkey=i_bin_pack_id).all() - i_dep_proid_keys = [ - dep_proid_obj.depProIDkey for dep_proid_obj in i_pack_req_set] - i_dep_proid_keys = list(set(i_dep_proid_keys)) - i_pack_provides_set = db_name.session.query(pack_provides).filter( - pack_provides.id.in_(i_dep_proid_keys)).all() - i_bin_pack_ids = [ - bin_pack_obj.binIDkey for bin_pack_obj in i_pack_provides_set] + bin_pack).filter_by(src_name=sourcename).all() + if i_bin_pack_set is None: + return subpack + # Find the objects of each sub-package + for b_bin_pack_obj in i_bin_pack_set: + i_bin_pack_name = b_bin_pack_obj.name + i_bin_pack_pkgkey = b_bin_pack_obj.pkgKey + # Find the names of the components required to install bin_requires + # dependencies + i_bin_requires_set = db_name.session.query( + bin_requires).filter_by(pkgKey=i_bin_pack_pkgkey).all() + i_bin_requires_names = [ + b_bin_requires_obj.name for b_bin_requires_obj in i_bin_requires_set] + # Find pkykey in bin_provides by the name of the dependent + # component + i_bin_provides_set = db_name.session.query(bin_provides).filter( + bin_provides.name.in_(i_bin_requires_names)) + i_bin_provides_pkg_list = [ + i_bin_provides_obj.pkgKey for i_bin_provides_obj in i_bin_provides_set] + # Find the name in bin_pack by pkgkey i_bin_pack_set = db_name.session.query(bin_pack).filter( - bin_pack.id.in_(i_bin_pack_ids)).all() + bin_pack.pkgKey.in_(i_bin_provides_pkg_list)) i_bin_pack_names = [ - bin_pack_obj.name for bin_pack_obj in i_bin_pack_set] + in_bin_pack_obj.name for in_bin_pack_obj in i_bin_pack_set] subpack[i_bin_pack_name] = i_bin_pack_names return subpack def get_single_package(dbname, sourcename): """ - Description: Get all packages info + Get single packages info + Args: dbname: Database name sourcename: Source package name @@ -120,32 +180,81 @@ def get_single_package(dbname, sourcename): AttributeError: Object does not have this property """ with DBHelper(db_name=dbname) as db_name: - package = {} + package = dict() src_pack_obj = db_name.session.query(src_pack).filter_by( name=sourcename).first() + if src_pack_obj is None: + return None package["sourceName"] = src_pack_obj.name package["version"] = src_pack_obj.version - package["license"] = src_pack_obj.license - package["maintainer"] = src_pack_obj.Maintaniner - package["maintainlevel"] = src_pack_obj.MaintainLevel - package["sourceURL"] = src_pack_obj.sourceURL - package["downloadURL"] = src_pack_obj.downloadURL + package["license"] = src_pack_obj.rpm_license + package["sourceURL"] = src_pack_obj.url + package["rpm_packager"] = src_pack_obj.rpm_packager + package["maintaniner"] = src_pack_obj.maintaniner + package["maintainlevel"] = src_pack_obj.maintainlevel package["dbname"] = dbname - src_pack_id = src_pack_obj.id - builddep = buildep_packages(dbname, src_pack_id) - subpack = sub_packages(dbname, src_pack_id) + src_pack_pkgkey = src_pack_obj.pkgKey + builddep = buildep_packages(dbname, src_pack_pkgkey) + subpack = sub_packages(dbname, sourcename) package['buildDep'] = builddep package['subpack'] = subpack return package +def get_single(dbnames, sourcename): + """ + get single package + + Args: + dbname: database name + sourcename: source name + """ + response_data = None + dbpreority = db_priority() + if db_priority is None: + response_data = ResponseCode.FILE_NOT_FOUND + + if not dbnames: + response = [] + for db_names in dbpreority: + query_result = get_single_package(db_names, sourcename) + response.append(query_result) + for key in response: + if key is None: + response.remove(key) + if not response: + return jsonify( + ResponseCode.response_json(ResponseCode.PACK_NAME_NOT_FOUND) + ) + return jsonify( + ResponseCode.response_json(ResponseCode.SUCCESS, response) + ) + + # Database queries data and catches exceptions + if dbnames not in dbpreority: + return jsonify( + ResponseCode.response_json(ResponseCode.DB_NAME_ERROR) + ) + response = get_single_package(dbnames, sourcename) + if response is None: + response_data = ResponseCode.PACK_NAME_NOT_FOUND + if response_data is not None: + return jsonify(ResponseCode.response_json(response_data)) + return jsonify( + ResponseCode.response_json(ResponseCode.SUCCESS, [response]) + ) + + # Database queries data and catches exceptions + + def update_single_package( package_name, dbname, maintainer, maintain_level): """ - Description: change single package management + change single package management + Args: package_name: package name dbname: Database name @@ -157,12 +266,16 @@ def update_single_package( AttributeError: Object does not have this property TypeError: Abnormal error """ - with DBHelper(db_name=dbname) as db_name: - update_obj = db_name.session.query( - src_pack).filter_by(name=package_name).first() - update_obj.Maintaniner = maintainer - update_obj.MaintainLevel = maintain_level - db_name.session.commit() + try: + with DBHelper(db_name=dbname) as data_name: + update_obj = data_name.session.query( + src_pack).filter_by(name=package_name).first() + update_obj.maintaniner = maintainer + update_obj.maintainlevel = maintain_level + data_name.session.commit() + except (AttributeError, SQLAlchemyError, Error) as attri_error: + current_app.logger.error(attri_error) + raise attri_error def update_maintaniner_info(package_name, @@ -170,7 +283,8 @@ def update_maintaniner_info(package_name, maintaniner, maintainlevel): """ - Description: update separately maintaniner info + update separately maintaniner info + Args: package_name: package name dbname: Database name @@ -203,6 +317,6 @@ def update_maintaniner_info(package_name, information_obj.maintaniner = maintaniner information_obj.maintainlevel = maintainlevel dbs_name.session.commit() - except (AttributeError, Error) as attri_error: + except (AttributeError, SQLAlchemyError, Error) as attri_error: current_app.logger.error(attri_error) - return + raise attri_error diff --git a/packageship/packageship/application/apps/package/view.py b/packageship/packageship/application/apps/package/view.py index 2058738f..7b2fbf12 100644 --- a/packageship/packageship/application/apps/package/view.py +++ b/packageship/packageship/application/apps/package/view.py @@ -19,10 +19,10 @@ from packageship.libs.exception import DataMergeException from packageship.libs.log import Log from packageship.system_config import DATABASE_FILE_INFO from .function.constants import ResponseCode -from .function.packages import get_packages +from .function.packages import get_all_packages from .function.packages import update_single_package from .function.packages import update_maintaniner_info -from .function.packages import get_single_package +from .function.packages import get_single from .function.searchdb import db_priority from .serialize import PackagesSchema from .serialize import GetpackSchema @@ -52,25 +52,27 @@ class Packages(Resource): def get(self): """ - Description: Get all package info from a database + Get all package info from a database + Args: dbName: Data path name, not required parameter Returns: - { - "code": "", - "data": [ - { + for + example:: + { + "code": "", + "data": [{ "dbname": "", - "downloadURL": "", "license": "", - "maintainer": , - "maintainlevel": , + "maintainlevel":, + "maintaniner": , + "rpm_packager": "", "sourceName": "", "sourceURL": "", "version": "" - }, - "msg": "" - } + }], + "msg": "" + } Raises: DisconnectionError: Unable to connect to database exception AttributeError: Object does not have this property @@ -86,34 +88,19 @@ class Packages(Resource): dbname = data.get("dbName", None) # Call method to query try: - dbpreority = db_priority() - if dbpreority is None: - return jsonify( - ResponseCode.response_json(ResponseCode.FILE_NOT_FOUND) - ) - if not dbname: - response = [] - for dbname in dbpreority: - query_result = get_packages(dbname) - for item in query_result: - response.append(item) - return jsonify( - ResponseCode.response_json(ResponseCode.SUCCESS, response) - ) - if dbname not in dbpreority: - return jsonify( - ResponseCode.response_json(ResponseCode.DB_NAME_ERROR) - ) - response = get_packages(dbname) - return jsonify( - ResponseCode.response_json(ResponseCode.SUCCESS, response) - ) + response = get_all_packages(dbname) + return response # Database queries data and catches exceptions except DisconnectionError as dis_connection_error: current_app.logger.error(dis_connection_error) return jsonify( ResponseCode.response_json( ResponseCode.DIS_CONNECTION_DB)) + except (AttributeError, TypeError, Error) as attribute_error: + current_app.logger.error(attribute_error) + return jsonify( + ResponseCode.response_json( + ResponseCode.PACK_NAME_NOT_FOUND)) class SinglePack(Resource): @@ -125,29 +112,29 @@ class SinglePack(Resource): def get(self): """ - description: Searching a package info + Searching a package info + Args: dbName: Database name, not required parameter sourceName: Source code package name, must pass Returns: - { - "code": "", - "data": [ + for + examples:: { - "buildDep": [], - "dbname": "", - "downloadURL": "", - "license": "", - "maintainer": "", - "maintainlevel": "", - "sourceName": "", - "sourceURL": "", - "subpack": {}, - "version": "" - } - ], - "msg": "" - } + "code": "", + "data": [{ + "buildDep": [], + "dbname": "", + "license": "", + "maintainlevel": "", + "maintaniner": "", + "rpm_packager": "", + "sourceName": "", + "sourceURL": "", + "subpack": { }, + "version": ""}], + "msg": "" + } Raises: DisconnectionError: Unable to connect to database exception AttributeError: Object does not have this property @@ -166,29 +153,8 @@ class SinglePack(Resource): # Call method to query try: - dbpreority = db_priority() - if db_priority is None: - return jsonify( - ResponseCode.response_json(ResponseCode.FILE_NOT_FOUND) - ) - if not dbname: - response = [] - for dbname in dbpreority: - query_result = get_single_package(dbname, sourcename) - response.append(query_result) - return jsonify( - ResponseCode.response_json(ResponseCode.SUCCESS, response) - ) - - # Database queries data and catches exceptions - if dbname not in dbpreority: - return jsonify( - ResponseCode.response_json(ResponseCode.DB_NAME_ERROR) - ) - response = get_single_package(dbname, sourcename) - return jsonify( - ResponseCode.response_json(ResponseCode.SUCCESS, [response]) - ) + response = get_single(dbname, sourcename) + return response except DisconnectionError as dis_connection_error: current_app.logger.error(dis_connection_error) abnormal = ResponseCode.DIS_CONNECTION_DB @@ -201,18 +167,21 @@ class SinglePack(Resource): def put(self): """ - Description: update a package info, + update a package info, + Args: dbName: Database name,Parameters are required sourceName: The name of the source code package. Parameters are required maintainer: Maintainer, parameter not required maintainlevel: Maintenance level, parameter not required Returns: - { - "code": "", - "data": "", - "msg": "" - } + for + example:: + { + "code": "", + "data": "", + "msg": "" + } Raises: DisconnectionError: Unable to connect to database exception AttributeError: Object does not have this property @@ -271,12 +240,13 @@ class InstallDepend(Resource): def post(self): """ - Description: Query a package's install depend(support - querying in one or more databases) - input: + Query a package's install depend(support + querying in one or more databases) + + Args: binaryName dbPreority: the array for database preority - return: + Returns: resultDict{ binary_name: //binary package name [ @@ -347,18 +317,21 @@ class BuildDepend(Resource): def post(self): """ - Description: Query a package's build depend and - build depend package's install depend - (support querying in one or more databases) + Query a package's build depend and + build depend package's install depend + (support querying in one or more databases) + Args: sourceName :name of the source package dbPreority:the array for database preority Returns: - { - "code": "", - "data": "", - "msg": "" - } + for + example:: + { + "code": "", + "data": "", + "msg": "" + } Raises: """ schema = BuildDependSchema() @@ -409,8 +382,9 @@ class SelfDepend(Resource): def post(self): """ - Description: Query a package's all dependencies including install and build depend - (support quering a binary or source package in one or more databases) + Query a package's all dependencies including install and build depend + (support quering a binary or source package in one or more databases) + Args: packageName:package name packageType: source/binary @@ -418,12 +392,13 @@ class SelfDepend(Resource): withSubpack: 0/1 dbPreority:the array for database preority Returns: - { - "code": "", - "data": "", - "msg": "" - } - Raises: + for + example:: + { + "code": "", + "data": "", + "msg": "" + } """ schema = SelfDependSchema() @@ -482,25 +457,26 @@ class BeDepend(Resource): def post(self): """ - description: Query a package's all dependencies including - be installed and built depend + Query a package's all dependencies including + be installed and built depend + Args: packageName:package name withSubpack: 0/1 dbname:database name Returns: - resultList[ - restult[ - binaryName: - srcName: - dbName: - type: beinstall or bebuild, which depend on the function - childNode: the binary package name which is the be built/installed - depend for binaryName + for + example:: + resultList[ + restult[ + binaryName: + srcName: + dbName: + type: beinstall or bebuild, which depend on the function + childNode: the binary package name which is the be built/installed + depend for binaryName + ] ] - ] - exception: - changeLog: """ schema = BeDependSchema() data = request.get_json() @@ -542,20 +518,22 @@ class Repodatas(Resource): def get(self): """ - description: get all database - Args: + get all database + Returns: - { - "code": "", - "data": [ - { - "database_name": "", - "priority": "", - "status": "" - } - ], - "msg": "" - } + for + example:: + { + "code": "", + "data": [ + { + "database_name": "", + "priority": "", + "status": "" + } + ], + "msg": "" + } Raises: FileNotFoundError: File not found exception TypeError: Exception of wrong type @@ -583,14 +561,16 @@ class Repodatas(Resource): def delete(self): """ - description: get all database - Args: + get all database + Returns: - { - "code": "", - "data": "", - "msg": "" - } + for + example:: + { + "code": "", + "data": "", + "msg": "" + } Raises: FileNotFoundError: File not found exception, TypeError: Exception of wrong type @@ -634,14 +614,16 @@ class InitSystem(Resource): def post(self): """ - description: InitSystem - Args: + InitSystem + Returns: - { - "code": "", - "data": "", - "msg": "" - } + for + example:: + { + "code": "", + "data": "", + "msg": "" + } Raises: ContentNoneException: Unable to connect to the exception of the database DisconnectionError:Exception connecting to database -- Gitee From bb871fee33622931871274e3e915845f9a38e4d0 Mon Sep 17 00:00:00 2001 From: jiang Date: Tue, 21 Jul 2020 18:41:56 +0800 Subject: [PATCH 2/5] Modify the name of the route and the files involved, and combine the two functions for updating package information into one --- .../apps/package/function/packages.py | 71 +++++++------------ .../application/apps/package/url.py | 2 +- .../application/apps/package/view.py | 29 ++++---- packageship/packageship/pkgship.py | 4 +- 4 files changed, 42 insertions(+), 64 deletions(-) diff --git a/packageship/packageship/application/apps/package/function/packages.py b/packageship/packageship/application/apps/package/function/packages.py index 68bba697..89f75e62 100644 --- a/packageship/packageship/application/apps/package/function/packages.py +++ b/packageship/packageship/application/apps/package/function/packages.py @@ -4,14 +4,16 @@ Description: Get package information and modify package information functions: get_packages, buildep_packages, sub_packages, get_single_package, update_single_package, update_maintaniner_info """ -from flask import current_app, jsonify +from flask import current_app +from flask import jsonify from sqlalchemy.exc import SQLAlchemyError from packageship.application.apps.package.function.constants import ResponseCode from packageship.application.apps.package.function.searchdb import db_priority from packageship.libs.dbutils import DBHelper -from packageship.application.models.package import src_pack, src_requires +from packageship.application.models.package import src_pack +from packageship.application.models.package import src_requires from packageship.application.models.package import bin_pack from packageship.application.models.package import maintenance_info from packageship.application.models.package import bin_requires @@ -68,6 +70,8 @@ def get_all_packages(db_name): response = [] for dbname in dbpreority: query_result = get_packages(dbname) + if query_result is None: + return None for item in query_result: if item is None: query_result.remove(item) @@ -244,10 +248,8 @@ def get_single(dbnames, sourcename): ResponseCode.response_json(ResponseCode.SUCCESS, [response]) ) - # Database queries data and catches exceptions - -def update_single_package( +def _update_package_info( package_name, dbname, maintainer, @@ -255,68 +257,43 @@ def update_single_package( """ change single package management - Args: + Args: package_name: package name dbname: Database name maintainer: maintainer info maintain_level: maintain_level info - Returns: + + Returns: message success or failed - Raises: - AttributeError: Object does not have this property - TypeError: Abnormal error """ try: + result_data = True with DBHelper(db_name=dbname) as data_name: update_obj = data_name.session.query( src_pack).filter_by(name=package_name).first() + if update_obj is None: + return False update_obj.maintaniner = maintainer update_obj.maintainlevel = maintain_level data_name.session.commit() - except (AttributeError, SQLAlchemyError, Error) as attri_error: - current_app.logger.error(attri_error) - raise attri_error - - -def update_maintaniner_info(package_name, - dbname, - maintaniner, - maintainlevel): - """ - update separately maintaniner info - - Args: - package_name: package name - dbname: Database name - maintainer: maintainer info - maintain_level: maintain_level info - Returns: - message success or failed - Raises: - AttributeError: Object does not have this property - Error: Abnormal error - """ - with DBHelper(db_name=dbname) as db_name: - src_pack_obj = db_name.session.query(src_pack).filter_by( - name=package_name).first() - name = src_pack_obj.name - version = src_pack_obj.version - with DBHelper(db_name='maintenance.information') as dbs_name: - try: + name = update_obj.name + version = update_obj.version + with DBHelper(db_name='maintenance.information') as dbs_name: information_obj = dbs_name.session.query(maintenance_info).filter_by( name=package_name, version=version).first() if information_obj is None: information = maintenance_info( name=name, version=version, - maintaniner=maintaniner, - maintainlevel=maintainlevel) + maintaniner=maintainer, + maintainlevel=maintain_level) dbs_name.session.add(information) dbs_name.session.commit() else: - information_obj.maintaniner = maintaniner - information_obj.maintainlevel = maintainlevel + information_obj.maintaniner = maintainer + information_obj.maintainlevel = maintain_level dbs_name.session.commit() - except (AttributeError, SQLAlchemyError, Error) as attri_error: - current_app.logger.error(attri_error) - raise attri_error + return result_data + except (AttributeError, SQLAlchemyError, Error) as attri_error: + current_app.logger.error(attri_error) + raise attri_error diff --git a/packageship/packageship/application/apps/package/url.py b/packageship/packageship/application/apps/package/url.py index 5a082134..873cd793 100644 --- a/packageship/packageship/application/apps/package/url.py +++ b/packageship/packageship/application/apps/package/url.py @@ -10,7 +10,7 @@ urls = [ # Query and update a package info - (view.SinglePack, '/packages/findByPackName', + (view.SinglePack, '/packages/packageInfo', {'query': ('GET'), 'write': ('PUT')}), # Query a package's install depend(support querying in one or more databases) diff --git a/packageship/packageship/application/apps/package/view.py b/packageship/packageship/application/apps/package/view.py index 7b2fbf12..0e8bcaa9 100644 --- a/packageship/packageship/application/apps/package/view.py +++ b/packageship/packageship/application/apps/package/view.py @@ -20,8 +20,7 @@ from packageship.libs.log import Log from packageship.system_config import DATABASE_FILE_INFO from .function.constants import ResponseCode from .function.packages import get_all_packages -from .function.packages import update_single_package -from .function.packages import update_maintaniner_info +from .function.packages import _update_package_info from .function.packages import get_single from .function.searchdb import db_priority from .serialize import PackagesSchema @@ -211,24 +210,23 @@ class SinglePack(Resource): ResponseCode.response_json(ResponseCode.DB_NAME_ERROR) ) # Database queries data and catches exceptions + try: - update_single_package( - sourcename, dbname, maintainer, maintain_level) - update_maintaniner_info( + result_data = _update_package_info( sourcename, dbname, maintainer, maintain_level) + if result_data is False: + return jsonify( + ResponseCode.response_json(ResponseCode.PACK_NAME_NOT_FOUND)) return jsonify( - ResponseCode.response_json(ResponseCode.SUCCESS) - ) + ResponseCode.response_json(ResponseCode.SUCCESS)) except DisconnectionError as dis_connection_error: current_app.logger.error(dis_connection_error) - return jsonify( - ResponseCode.response_json( - ResponseCode.DIS_CONNECTION_DB)) + abnormal = ResponseCode.DIS_CONNECTION_DB except (AttributeError, TypeError, Error) as attri_error: current_app.logger.error(attri_error) - return jsonify( - ResponseCode.response_json(ResponseCode.PACK_NAME_NOT_FOUND) - ) + abnormal = ResponseCode.CONNECT_DB_ERROR + if abnormal is not None: + return jsonify(ResponseCode.response_json(abnormal)) class InstallDepend(Resource): @@ -594,7 +592,10 @@ class Repodatas(Resource): ) try: drop_db = InitDataBase() - drop_db.delete_db(db_name) + del_result = drop_db.delete_db(db_name) + if del_result is False: + return jsonify( + ResponseCode.response_json(ResponseCode.DELETE_DB_ERROR)) return jsonify( ResponseCode.response_json(ResponseCode.SUCCESS) ) diff --git a/packageship/packageship/pkgship.py b/packageship/packageship/pkgship.py index 95b16486..290ac3cb 100644 --- a/packageship/packageship/pkgship.py +++ b/packageship/packageship/pkgship.py @@ -621,7 +621,7 @@ class UpdatePackageCommand(PkgshipCommand): Raises: ConnectionError: Request connection error """ - _url = self.write_host + '/packages/findByPackName' + _url = self.write_host + '/packages/packageInfo' try: response = requests.put( _url, data=json.dumps({'sourceName': params.packagename, @@ -1196,7 +1196,7 @@ class SingleCommand(PkgshipCommand): ConnectionError: requests connection error """ _url = self.read_host + \ - '/packages/findByPackName?dbName={db_name}&sourceName={packagename}' \ + '/packages/packageInfo?dbName={db_name}&sourceName={packagename}' \ .format(db_name=params.db, packagename=params.packagename) try: response = requests.get(_url) -- Gitee From 2c59971787bb9d5f6991c81c6a69f4c021dd09b4 Mon Sep 17 00:00:00 2001 From: jiang Date: Tue, 21 Jul 2020 18:45:51 +0800 Subject: [PATCH 3/5] Modify the name of the route and the files involved, and combine the two functions for updating package information into one --- .../application/apps/package/function/packages.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packageship/packageship/application/apps/package/function/packages.py b/packageship/packageship/application/apps/package/function/packages.py index 89f75e62..7098ec4b 100644 --- a/packageship/packageship/application/apps/package/function/packages.py +++ b/packageship/packageship/application/apps/package/function/packages.py @@ -262,9 +262,12 @@ def _update_package_info( dbname: Database name maintainer: maintainer info maintain_level: maintain_level info - Returns: message success or failed + Raises: + AttributeError: Object does not have this property + SQLAlchemyError: Exception of type + Error: Abnormal error """ try: result_data = True -- Gitee From 8f4df37eb1500ab66721d0c27446376d11586074 Mon Sep 17 00:00:00 2001 From: jiang Date: Tue, 28 Jul 2020 14:34:56 +0800 Subject: [PATCH 4/5] Increase the judgment of initialization success --- packageship/packageship/application/apps/package/view.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packageship/packageship/application/apps/package/view.py b/packageship/packageship/application/apps/package/view.py index 0e8bcaa9..bf88567f 100644 --- a/packageship/packageship/application/apps/package/view.py +++ b/packageship/packageship/application/apps/package/view.py @@ -669,4 +669,8 @@ class InitSystem(Resource): abnormal = ResponseCode.FAILED_CREATE_DATABASE_TABLE if abnormal is not None: return jsonify(ResponseCode.response_json(abnormal)) + db_list = db_priority() + if db_list is None: + return jsonify(ResponseCode.response_json + (ResponseCode.FAILED_CREATE_DATABASE_TABLE)) return jsonify(ResponseCode.response_json(ResponseCode.SUCCESS)) -- Gitee From 182a09614c24b20266043a7df11be9d746a4954d Mon Sep 17 00:00:00 2001 From: jiang Date: Tue, 28 Jul 2020 14:46:50 +0800 Subject: [PATCH 5/5] Specification modification --- packageship/packageship/application/apps/package/view.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/packageship/packageship/application/apps/package/view.py b/packageship/packageship/application/apps/package/view.py index bf88567f..cdf32e4d 100644 --- a/packageship/packageship/application/apps/package/view.py +++ b/packageship/packageship/application/apps/package/view.py @@ -216,7 +216,8 @@ class SinglePack(Resource): sourcename, dbname, maintainer, maintain_level) if result_data is False: return jsonify( - ResponseCode.response_json(ResponseCode.PACK_NAME_NOT_FOUND)) + ResponseCode.response_json( + ResponseCode.PACK_NAME_NOT_FOUND)) return jsonify( ResponseCode.response_json(ResponseCode.SUCCESS)) except DisconnectionError as dis_connection_error: @@ -671,6 +672,7 @@ class InitSystem(Resource): return jsonify(ResponseCode.response_json(abnormal)) db_list = db_priority() if db_list is None: - return jsonify(ResponseCode.response_json - (ResponseCode.FAILED_CREATE_DATABASE_TABLE)) + return jsonify( + ResponseCode.response_json( + ResponseCode.FAILED_CREATE_DATABASE_TABLE)) return jsonify(ResponseCode.response_json(ResponseCode.SUCCESS)) -- Gitee