We're happy to announce Kiwi TCMS version 4.0.0 and the corresponding tcms-api version 4.0.0! This is a very big release which introduces tons of backwards incompatible changes to the RPC layer as well as several bug-fixes and enhancements!
With this release Kiwi TCMS meets one of our milestones for 2018! All XML-RPC namespaces now match DB model names and the API client class names. Lots of similar and duplicate methods were removed and existing ones were simplified. We've also reduced code duplication and technical debth by 1 month according to stats by CodeClimate.
IMPORTANT: this is also the first release to officially publish the
pub.kiwitcms.eu/kiwitcms/kiwi container image!
WARNING: upgrading to Kiwi TCMS 4.0.0 means you will have to upgrade the tcms-api client as well. None of the 4.x releases is compatible with older releases due to the massive ammount of changes in the RPC layer.
Changes since Kiwi TCMS 3.50
Enhancements and bug fixes
- Upgrade to Django 2.0.2 which patches a security issue
- Pin JIRA client version to 1.0.10. Fixes Issue #195
- Generate api-docs for model classes
- Updated documentation for all RPC methods
- Use Grappelli jQuery initialization, fixes popup windows
- Unify RPC namespaces, API client class names and server-side model names. Fixes Issue #153
Settings
- Remove
ADMIN_PREFIXsetting
RPC methods refactoring
- Remove
Build.check_build, useBuild.filter - Remove
Build.get, useBuild.filter - Remove
Build.get_caseruns, useTestCaseRun.filter -
Remove
Build.get_runs, useTestRun.filter -
Rename
Env.filter_groups, useEnv.Group.filter - Rename
Env.filter_properties, useEnv.Property.filter -
Rename
Env.filter_values, useEnv.Value.filter -
Remove
Product.add_component, useComponent.create - Remove
Product.add_version, useVersion.create - Remove
Product.check_category, useCategory.filter - Remove
Product.check_component, useComponent.filter - Remove
Product.check_product, useProduct.filter - Remove
Product.filter_categories, useCategory.filter - Remove
Product.filter_components, useComponent.filter - Remove
Product.filter_versions, useVersion.filter - Remove
Product.get, useProduct.filter - Remove
Product.get_builds, useBuild.filter - Remove
Product.get_cases, useTestCase.filter - Remove
Product.get_categories, useCategory.filter - Remove
Product.get_category, useCategory.filter - Remove
Product.get_component, useComponent.filter -
Remove
Product.update_component, useComponent.update -
Rename
Tag.get_tagstoTag.filter -
Remove
TestCase.add_comment - Update signature for
TestCase.add_component - Update signature for
TestCase.add_tag - Remove
TestCase.add_to_run, useTestRun.add_case - Remove
TestCase.attach_bug, useBug.create - Remove
TestCase.calculate_average_estimated_time - Remove
TestCase.calculate_total_estimated_time - Remove
TestCase.check_case_status, useTestCaseStatus.filter - Remove
TestCase.check_priority, usePriority.filter - Update signature for
TestCase.create, no longer acceptsplan,componentandbugdict attributes. Instead useTestPlan.add_case,TestCase.add_componentandBug.create - Remove
TestCase.detach_bug, useBug.remove - Remove
TestCase.filter_count - Remove
TestCase.get, useTestCase.filter - Remove
TestCase.get_bugs, useBug.filter({'case': ?}) - Remove
TestCase.get_bug_systems - Remove
TestCase.get_case_status, useTestCaseStatus.filter - Update signature for
TestCase.get_components - Remove
TestCase.get_plans, useTestPlan.filter({'case': ?}) - Remove
TestCase.get_priority, usePriority.filter - Remove
TestCase.get_tags, useTag.filter({'case': ?}) - Remove
TestCase.get_text, useTestCase.filter - Remove
TestCase.link_plan, useTestPlan.add_case - Rename
TestCase.notification_add_cctoTestCase.add_notification_ccand update signature - Rename
TestCase.notification_get_cc_listtoTestCase.get_notification_ccand update signature - Rename
TestCase.notification_remove_cctoTestCase.remove_notification_ccand update signature - Update signature for
TestCase.remove_component - Update signature for
TestCase.remove_tag - Remove
TestCase.store_text, useTestCase.updatewithsetup,breakdown,actionandeffectattributes in the parameter dict -
Remove
TestCase.unlink_plan, useTestPlan.remove_case -
Remove
TestCasePlan.get -
Remove
TestCasePlan.update -
Update
TestCaseRun.add_commentto accept a single ID as first parameter - Remove
TestCaseRun.attach_bug, useBug.create - Rename
TestCaseRun.attach_logtoTestCaseRun.add_log - Remove
TestCaseRun.detach_bug, useBug.remove - Rename
TestCaseRun.detach_logtoTestCaseRun.remove_log - Remove
TestCaseRun.get, useTestCaseRun.filter - Remove
TestCaseRun.get_bugs, useBug.filter({'case_run': ?}) - Remove
TestCaseRun.get_case_run_status_by_name -
Update signature for
TestCaseRun.update -
Remove
TestPlan.add_component - Update signature for
TestPlan.add_tag - Remove
TestPlan.check_plan_type, usePlanType.filter - Remove
TestPlan.filter_count - Remove
TestPlan.get, useTestPlan.filter - Remove
TestPlan.get_all_cases_tags - Remove
TestPlan.get_components - Remove
TestPlan.get_env_groups, useEnv.Group.filter({'testplan': ?}) - Remove
TestPlan.get_plan_type, usePlanType.filter - Remove
TestPlan.get_product, useProduct.filter({'plan': ?}) - Remove
TestPlan.get_tags, useTag.filter({'plan': ?}) - Remove
TestPlan.get_test_cases, useTestCase.filter({'plan': ?}) - Remove
TestPlan.get_test_runs, useTestRun.filter({'plan': ?}) - Remove
TestPlan.get_text, useTestPlan.filter - Rename
TestPlan.link_env_valuetoTestPlan.add_env_valueand update signature - Remove
TestPlan.remove_component - Update signature for
TestPlan.remove_tag - Remove
TestPlan.store_text, useTestPlan.updatewith atextattribute in the parameter values -
Rename
TestPlan.unlink_env_valuetoTestPlan.remove_env_valueand update signature -
Rename
TestRun.add_casestoTestRun.add_caseand update signature - Update signature for
TestRun.add_tag - Update signature for
TestRun.create, no longer acceptscasedict attribute. Instead useTestRun.add_case - Remove
TestRun.filter_count - Remove
TestRun.get, useTestRun.filter - Remove
TestRun.get_bugs - Remove
TestRun.get_env_values, useEnv.Value.filter({'testrun': ?}) - Remove
TestRun.get_tags, useTag.filter({'run': ?}) - Rename
TestRun.get_test_casestoTestRun.get_cases - Remove
TestRun.get_test_case_runs, useTestCaseRun.filter({'run': ?}) - Remove
TestRun.get_test_plan, useTestPlan.filter({'run': ?})[0] - Rename
TestRun.remove_casestoTestRun.remove_caseand update signature - Update signature for
TestRun.remove_tag -
Update signature for
TestRun.update -
Rename
User.gettoUser.filter - Rename
User.jointoUser.join_group - Update signature for
User.update
Models and database migrations
- Remove model
TestEnvironment - Remove model
TestEnvironmentCategory - Remove model
TestEnvironmentElement - Remove model
TestEnvironmentMap - Remove model
TestEnvironmentProperty - Remove model
TestPlanComponent - Remove
TestPlan.get_text_with_version() - Remove
TestRun.get_previous_or_next()
IMPORTANT: this release introduces new database migrations!
tcms-api changes since 1.5.1
- Make the code compatible with Kiwi TCMS XML-RPC v4.0.0
- Rename
StatustoTestCaseRunStatus - Rename
CaseRuntoTestCaseRun - Remove
PlanStatus, useTestPlan.is_active - Remove
RunStatus, useTestRun.finished - Remove
TestPlan.componentscontainer - Update signature for
TestPlan. Now accepttextkwarg in constructor instead ofdocument.
How to upgrade
If you are using Kiwi TCMS as a Docker container then
cd Kiwi/
docker-compose down
docker pull pub.kiwitcms.eu/kiwitcms/kiwi
docker-compose up -d
docker exec -it kiwi_web /Kiwi/manage.py migrate
Happy testing!