summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEdan Binshtok <eb578m@intl.att.com>2017-11-19 11:42:55 +0200
committerEdan Binshtok <eb578m@intl.att.com>2017-11-19 11:43:15 +0200
commita9ef6f094a2bcf1fd7a0b7c2aaf814841db558ec (patch)
tree81a3f8436f9e6af07c3070c74f3a0543c2ca5eff
parentc169d08d437ccb62fd79ade759077b874f00b1c3 (diff)
Pep8 more fixes
Update base files to pass pep8 strict standarts. Issue-ID: VVP-25 Change-Id: If9ef80abf7fbc33ea181dfc2eb73c27ddd6ddc3e Signed-off-by: Edan Binshtok <eb578m@intl.att.com>
-rw-r--r--django/engagementmanager/__init__.py4
-rw-r--r--django/engagementmanager/admin.py138
-rw-r--r--django/engagementmanager/apps.py56
-rw-r--r--django/engagementmanager/bus/__init__.py4
-rw-r--r--django/engagementmanager/bus/handlers/__init__.py4
-rw-r--r--django/engagementmanager/bus/handlers/activity_event_handler.py12
-rw-r--r--django/engagementmanager/bus/handlers/check_news_and_announcements_handler.py13
-rw-r--r--django/engagementmanager/bus/handlers/daily_notify_inactive_engagements.py34
-rw-r--r--django/engagementmanager/bus/handlers/daily_notify_inactive_engagements_handler.py34
-rw-r--r--django/engagementmanager/bus/handlers/daily_resend_notifications_handler.py43
-rw-r--r--django/engagementmanager/bus/handlers/digest_email_notification_handler.py42
-rw-r--r--django/engagementmanager/bus/handlers/image_pushed_handler.py76
-rw-r--r--django/engagementmanager/bus/handlers/new_notification_handler.py41
-rw-r--r--django/engagementmanager/bus/handlers/service_bus_base_handler.py11
-rw-r--r--django/engagementmanager/bus/messages/__init__.py4
-rw-r--r--django/engagementmanager/bus/messages/activity_event_message.py10
-rw-r--r--django/engagementmanager/bus/messages/daily_scheduled_message.py7
-rw-r--r--django/engagementmanager/bus/messages/hourly_scheduled_message.py7
-rw-r--r--django/engagementmanager/bus/messages/new_notification_message.py12
-rw-r--r--django/engagementmanager/bus/messages/service_bus_base_message.py4
-rw-r--r--django/engagementmanager/cms_client/__init__.py4
-rw-r--r--django/engagementmanager/cms_client/api.py37
-rw-r--r--django/engagementmanager/decorator/__init__.py4
-rw-r--r--django/engagementmanager/decorator/auth.py47
-rw-r--r--django/engagementmanager/decorator/class_decorator.py9
-rw-r--r--django/engagementmanager/decorator/log_func_entry.py7
-rw-r--r--django/engagementmanager/decorator/retry.py10
-rw-r--r--django/engagementmanager/git/__init__.py4
-rw-r--r--django/engagementmanager/git/git_manager.py7
-rw-r--r--django/engagementmanager/http_client.py4
-rw-r--r--django/engagementmanager/mail.py17
-rw-r--r--django/engagementmanager/management/__init__.py5
-rw-r--r--django/engagementmanager/management/commands/__init__.py4
-rw-r--r--django/engagementmanager/management/commands/clean_gitlab_content.py28
-rw-r--r--django/engagementmanager/management/commands/clean_jenkins_jobs.py13
-rw-r--r--django/engagementmanager/management/commands/clean_vvp_db.py26
-rw-r--r--django/engagementmanager/management/commands/clean_vvp_system.py21
-rw-r--r--django/engagementmanager/management/commands/initial_populate_db.py444
-rw-r--r--django/engagementmanager/management/commands/populate_all_gitlab_repo_and_user_and_jenkins.py19
-rw-r--r--django/engagementmanager/management/commands/render_rgwa_credentials.py7
-rw-r--r--django/engagementmanager/migrations/0001_initial.py235
-rw-r--r--django/engagementmanager/migrations/0001_squashed_initial.py824
-rw-r--r--django/engagementmanager/migrations/0002_auto_20160704_1028.py51
-rw-r--r--django/engagementmanager/migrations/0003_auto_20160713_0929.py53
-rw-r--r--django/engagementmanager/migrations/0004_auto_20160720_2143.py25
-rw-r--r--django/engagementmanager/migrations/0005_auto_20160815_1248.py25
-rw-r--r--django/engagementmanager/migrations/0006_auto_20160825_0644.py243
-rw-r--r--django/engagementmanager/migrations/0007_auto_20160922_0421.py21
-rw-r--r--django/engagementmanager/migrations/0008_auto_20161009_1210.py41
-rw-r--r--django/engagementmanager/migrations/0009_auto_20161018_0740.py41
-rw-r--r--django/engagementmanager/migrations/0010_auto_20161025_0838.py72
-rw-r--r--django/engagementmanager/migrations/0011_auto_20161109_0811.py26
-rw-r--r--django/engagementmanager/migrations/0012_auto_20161109_0822.py37
-rw-r--r--django/engagementmanager/migrations/0013_auto_20161128_1159.py40
-rw-r--r--django/engagementmanager/migrations/0014_auto_20161129_1145.py70
-rw-r--r--django/engagementmanager/migrations/0015_engagementstatus.py37
-rw-r--r--django/engagementmanager/migrations/0016_auto_20161208_0842.py18
-rw-r--r--django/engagementmanager/migrations/0017_auto_20161215_1535.py16
-rw-r--r--django/engagementmanager/migrations/0018_set_old_notif_true.py7
-rw-r--r--django/engagementmanager/migrations/0019_auto_20170104_1715.py20
-rw-r--r--django/engagementmanager/migrations/0020_add_indexes_20170108.py22
-rw-r--r--django/engagementmanager/migrations/0021_generate_excel_overview_sheet_procedure_20170110.py13
-rw-r--r--django/engagementmanager/migrations/0022_auto_20170118_1520.py224
-rw-r--r--django/engagementmanager/migrations/0023_auto_20170123_1445.py18
-rw-r--r--django/engagementmanager/migrations/0024_auto_20170227_1224.py31
-rw-r--r--django/engagementmanager/migrations/0025_change_nextsteps_to_new_state.py12
-rw-r--r--django/engagementmanager/migrations/0026_add_slack_handle_to_ice_user_profile.py7
-rw-r--r--django/engagementmanager/migrations/0027_add_version_to_vf.py4
-rw-r--r--django/engagementmanager/migrations/0028_auto_20170425_1310.py158
-rw-r--r--django/engagementmanager/migrations/0029_auto_20170504_0749.py4
-rw-r--r--django/engagementmanager/migrations/0030_engagement_archived_time.py7
-rw-r--r--django/engagementmanager/migrations/0031_auto_20170620_1312.py35
-rw-r--r--django/engagementmanager/migrations/0032_auto_20170702_1435.py18
-rw-r--r--django/engagementmanager/migrations/0033_auto_20170704_0635.py92
-rw-r--r--django/engagementmanager/migrations/0034_engagement_is_with_files.py4
-rw-r--r--django/engagementmanager/migrations/0035_rgwa_fields.py44
-rw-r--r--django/engagementmanager/migrations/0036_auto_20170906_0935.py4
-rw-r--r--django/engagementmanager/migrations/__init__.py4
-rw-r--r--django/engagementmanager/models.py182
-rw-r--r--django/engagementmanager/nextsteps.py48
-rw-r--r--django/engagementmanager/notifications.py11
-rw-r--r--django/engagementmanager/rest/__init__.py4
-rw-r--r--django/engagementmanager/rest/activation.py41
-rw-r--r--django/engagementmanager/rest/activity.py7
-rw-r--r--django/engagementmanager/rest/checklist.py24
-rw-r--r--django/engagementmanager/rest/checklist_audit_log.py13
-rw-r--r--django/engagementmanager/rest/checklist_decision.py7
-rw-r--r--django/engagementmanager/rest/checklist_set_state.py14
-rw-r--r--django/engagementmanager/rest/cms/__init__.py4
-rw-r--r--django/engagementmanager/rest/cms/pages.py4
-rw-r--r--django/engagementmanager/rest/cms/posts.py9
-rw-r--r--django/engagementmanager/rest/csrf_exempt_session_authentication.py4
-rw-r--r--django/engagementmanager/rest/data_loader.py40
-rw-r--r--django/engagementmanager/rest/deployment_target.py17
-rw-r--r--django/engagementmanager/rest/deployment_target_site.py19
-rw-r--r--django/engagementmanager/rest/ecomp.py13
-rw-r--r--django/engagementmanager/rest/engagement.py301
-rw-r--r--django/engagementmanager/rest/feedback.py10
-rw-r--r--django/engagementmanager/rest/invite.py22
-rw-r--r--django/engagementmanager/rest/login.py13
-rw-r--r--django/engagementmanager/rest/nextsteps.py35
-rw-r--r--django/engagementmanager/rest/notification.py16
-rw-r--r--django/engagementmanager/rest/parsers.py9
-rw-r--r--django/engagementmanager/rest/signup.py85
-rw-r--r--django/engagementmanager/rest/user.py32
-rw-r--r--django/engagementmanager/rest/validation_details.py4
-rw-r--r--django/engagementmanager/rest/vendor.py9
-rw-r--r--django/engagementmanager/rest/vf.py4
-rw-r--r--django/engagementmanager/rest/vfc.py14
-rw-r--r--django/engagementmanager/rest/vvp_api_view.py7
-rw-r--r--django/engagementmanager/scheduled_jobs.py16
-rw-r--r--django/engagementmanager/serializers.py26
-rw-r--r--django/engagementmanager/service/__init__.py4
-rw-r--r--django/engagementmanager/service/activities_service.py171
-rw-r--r--django/engagementmanager/service/authorization_service.py142
-rw-r--r--django/engagementmanager/service/base_service.py7
-rw-r--r--django/engagementmanager/service/bus_service.py11
-rw-r--r--django/engagementmanager/service/checklist_audit_log_service.py39
-rw-r--r--django/engagementmanager/service/checklist_decision_service.py64
-rw-r--r--django/engagementmanager/service/checklist_service.py255
-rw-r--r--django/engagementmanager/service/checklist_state_service.py219
-rw-r--r--django/engagementmanager/service/cms/__init__.py4
-rw-r--r--django/engagementmanager/service/cms/base_cms.py4
-rw-r--r--django/engagementmanager/service/cms/pages_service.py10
-rw-r--r--django/engagementmanager/service/cms/posts_service.py10
-rw-r--r--django/engagementmanager/service/deploment_target_service.py4
-rw-r--r--django/engagementmanager/service/ecomp_service.py4
-rw-r--r--django/engagementmanager/service/engagement_service.py362
-rw-r--r--django/engagementmanager/service/invite_service.py110
-rw-r--r--django/engagementmanager/service/logging_service.py4
-rw-r--r--django/engagementmanager/service/login_service.py34
-rw-r--r--django/engagementmanager/service/nextstep_service.py160
-rw-r--r--django/engagementmanager/service/user_service.py22
-rw-r--r--django/engagementmanager/service/vf_service.py4
-rw-r--r--django/engagementmanager/service/vfc_service.py43
-rw-r--r--django/engagementmanager/slack_client/__init__.py4
-rw-r--r--django/engagementmanager/slack_client/api.py241
-rw-r--r--django/engagementmanager/templatetags/__init__.py4
-rw-r--r--django/engagementmanager/templatetags/vvptags.py4
-rw-r--r--django/engagementmanager/tests/__init__.py4
-rw-r--r--django/engagementmanager/tests/test_access_credentials.py97
-rw-r--r--django/engagementmanager/tests/test_activation.py100
-rw-r--r--django/engagementmanager/tests/test_activities.py86
-rw-r--r--django/engagementmanager/tests/test_add_contact.py73
-rw-r--r--django/engagementmanager/tests/test_add_feedback.py40
-rw-r--r--django/engagementmanager/tests/test_add_next_step_to_checklist.py84
-rw-r--r--django/engagementmanager/tests/test_audit_log_and_decision_api.py189
-rw-r--r--django/engagementmanager/tests/test_auth_service.py146
-rw-r--r--django/engagementmanager/tests/test_base_entity.py145
-rw-r--r--django/engagementmanager/tests/test_base_transaction_entity.py13
-rw-r--r--django/engagementmanager/tests/test_checklist.py73
-rw-r--r--django/engagementmanager/tests/test_checklist_template.py104
-rw-r--r--django/engagementmanager/tests/test_cms_documentation_search.py40
-rw-r--r--django/engagementmanager/tests/test_cms_pages.py139
-rw-r--r--django/engagementmanager/tests/test_cms_posts.py199
-rw-r--r--django/engagementmanager/tests/test_deployment_target_sites.py77
-rw-r--r--django/engagementmanager/tests/test_digest_email_notifications.py83
-rw-r--r--django/engagementmanager/tests/test_eng_progress.py45
-rw-r--r--django/engagementmanager/tests/test_eng_status.py121
-rw-r--r--django/engagementmanager/tests/test_engagement_admin_operations.py178
-rw-r--r--django/engagementmanager/tests/test_engagement_export.py54
-rw-r--r--django/engagementmanager/tests/test_expanded_eng.py133
-rw-r--r--django/engagementmanager/tests/test_import_engagement_xls.py11
-rw-r--r--django/engagementmanager/tests/test_invite_members.py37
-rw-r--r--django/engagementmanager/tests/test_next_steps.py8
-rw-r--r--django/engagementmanager/tests/test_next_steps_api.py254
-rw-r--r--django/engagementmanager/tests/test_notify_inactive_engagements.py138
-rw-r--r--django/engagementmanager/tests/test_pull_notifications.py72
-rw-r--r--django/engagementmanager/tests/test_rados_gateway.py206
-rw-r--r--django/engagementmanager/tests/test_remove_user_from_eng_team.py169
-rw-r--r--django/engagementmanager/tests/test_request_data_manager.py65
-rw-r--r--django/engagementmanager/tests/test_resend_activation_email.py16
-rw-r--r--django/engagementmanager/tests/test_reset_password.py35
-rw-r--r--django/engagementmanager/tests/test_rgwa_client.py91
-rw-r--r--django/engagementmanager/tests/test_set_checklist_state.py241
-rw-r--r--django/engagementmanager/tests/test_set_eng_stage.py306
-rw-r--r--django/engagementmanager/tests/test_update_password.py33
-rw-r--r--django/engagementmanager/tests/test_update_user_account.py23
-rw-r--r--django/engagementmanager/tests/test_vfc.py82
-rw-r--r--django/engagementmanager/tests/vvpEntitiesCreator.py156
-rw-r--r--django/engagementmanager/urls.py37
-rw-r--r--django/engagementmanager/utils/__init__.py4
-rw-r--r--django/engagementmanager/utils/activities_data.py43
-rw-r--r--django/engagementmanager/utils/authentication.py13
-rw-r--r--django/engagementmanager/utils/choice_enum.py14
-rw-r--r--django/engagementmanager/utils/constants.py36
-rw-r--r--django/engagementmanager/utils/cryptography.py4
-rw-r--r--django/engagementmanager/utils/dates.py4
-rw-r--r--django/engagementmanager/utils/exception_handler.py19
-rw-r--r--django/engagementmanager/utils/exception_message_factory.py98
-rw-r--r--django/engagementmanager/utils/request_data_mgr.py7
-rw-r--r--django/engagementmanager/utils/validator.py6
-rw-r--r--django/engagementmanager/utils/vvp_exceptions.py4
-rw-r--r--django/engagementmanager/views_helper.py61
-rw-r--r--django/engagementmanager/vm_integration/__init__.py4
-rw-r--r--django/engagementmanager/vm_integration/em_api.py58
-rw-r--r--django/engagementmanager/vm_integration/vm_client.py55
-rw-r--r--django/manage.py2
-rw-r--r--django/mocks/__init__.py4
-rw-r--r--django/mocks/gitlab_mock/__init__.py4
-rw-r--r--django/mocks/gitlab_mock/rest/__init__.py4
-rw-r--r--django/mocks/gitlab_mock/rest/gitlab_files_respons_rest.py10
-rw-r--r--django/mocks/gitlab_mock/services/__init__.py4
-rw-r--r--django/mocks/gitlab_mock/services/gitlab_files_service.py4
-rw-r--r--django/mocks/jenkins_mock/__init__.py4
-rw-r--r--django/mocks/jenkins_mock/rest/__init__.py4
-rw-r--r--django/mocks/jenkins_mock/rest/jenkins_tests_validation_rest.py12
-rw-r--r--django/mocks/jenkins_mock/services/__init__.py4
-rw-r--r--django/mocks/jenkins_mock/services/jenkins_tests_validation_service.py12
-rw-r--r--django/requirements.txt1
-rw-r--r--django/rgwa_mock/__init__.py4
-rw-r--r--django/rgwa_mock/services/__init__.py4
-rw-r--r--django/rgwa_mock/services/rgwa_keys_service.py4
-rw-r--r--django/tools/__init__.py4
-rw-r--r--django/tox.ini16
-rw-r--r--django/validationmanager/__init__.py4
-rw-r--r--django/validationmanager/admin.py4
-rw-r--r--django/validationmanager/apps.py10
-rw-r--r--django/validationmanager/em_integration/__init__.py4
-rw-r--r--django/validationmanager/em_integration/em_client.py4
-rw-r--r--django/validationmanager/em_integration/vm_api.py130
-rw-r--r--django/validationmanager/git/__init__.py4
-rw-r--r--django/validationmanager/git/gitlab_client.py66
-rw-r--r--django/validationmanager/jenkins/__init__.py4
-rw-r--r--django/validationmanager/jenkins/jenkins_client.py4
-rw-r--r--django/validationmanager/migrations/0001_initial.py26
-rw-r--r--django/validationmanager/migrations/0002_auto_20161019_2056.py4
-rw-r--r--django/validationmanager/migrations/0003_auto_20170423_0531.py8
-rw-r--r--django/validationmanager/migrations/__init__.py4
-rw-r--r--django/validationmanager/models.py7
-rw-r--r--django/validationmanager/rados/__init__.py4
-rw-r--r--django/validationmanager/rados/rgwa_client.py29
-rw-r--r--django/validationmanager/rados/rgwa_client_factory.py4
-rw-r--r--django/validationmanager/rest/__init__.py4
-rw-r--r--django/validationmanager/rest/git_webhook_endpoint.py4
-rw-r--r--django/validationmanager/rest/http_response_custom.py7
-rw-r--r--django/validationmanager/rest/jenkins_webhook_endpoint.py27
-rw-r--r--django/validationmanager/tasks.py49
-rw-r--r--django/validationmanager/templates/imagescanner_job_config.xml54
-rw-r--r--django/validationmanager/tests/__init__.py4
-rw-r--r--django/validationmanager/tests/testFinishedSignal.py64
-rw-r--r--django/validationmanager/tests/test_git_push.py61
-rw-r--r--django/validationmanager/tests/test_rgwa_client_factory.py11
-rw-r--r--django/validationmanager/urls.py13
-rw-r--r--django/validationmanager/utils/__init__.py4
-rw-r--r--django/validationmanager/utils/clients.py4
-rw-r--r--django/validationmanager/utils/constants.py4
-rw-r--r--django/validationmanager/utils/keyawaredefaultdict.py10
-rw-r--r--django/vvp/__init__.py4
-rw-r--r--django/vvp/settings/tox_settings.py40
-rw-r--r--django/vvp/urls.py13
-rw-r--r--django/vvp/wsgi.py4
-rw-r--r--tox.ini26
253 files changed, 8567 insertions, 3774 deletions
diff --git a/django/engagementmanager/__init__.py b/django/engagementmanager/__init__.py
index 1726c13..16f81cb 100644
--- a/django/engagementmanager/__init__.py
+++ b/django/engagementmanager/__init__.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/engagementmanager/admin.py b/django/engagementmanager/admin.py
index 38a63f8..28d1675 100644
--- a/django/engagementmanager/admin.py
+++ b/django/engagementmanager/admin.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -44,8 +44,14 @@ from engagementmanager import models
@admin.register(models.Activity)
class ActivityModelAdmin(admin.ModelAdmin):
- list_display = ["engagement_manual_id", "vf_name", "description",
- "activity_type", "activity_owner", "create_time", "is_notification"]
+ list_display = [
+ "engagement_manual_id",
+ "vf_name",
+ "description",
+ "activity_type",
+ "activity_owner",
+ "create_time",
+ "is_notification"]
list_filter = ["activity_type", "is_notification"]
def engagement_manual_id(self, obj):
@@ -69,8 +75,19 @@ class ActivityModelAdmin(admin.ModelAdmin):
@admin.register(models.Checklist)
class ChecklistModelAdmin(admin.ModelAdmin):
- list_display = ["name", "state", "engagement_manual_id", "vf_name", "validation_cycle",
- "weight", "template", "owner", "creator", "associated_files", "create_time", "update_time"]
+ list_display = [
+ "name",
+ "state",
+ "engagement_manual_id",
+ "vf_name",
+ "validation_cycle",
+ "weight",
+ "template",
+ "owner",
+ "creator",
+ "associated_files",
+ "create_time",
+ "update_time"]
list_filter = ["template", "state"]
search_fields = ["name", "associated_files"]
@@ -84,7 +101,8 @@ class ChecklistModelAdmin(admin.ModelAdmin):
@admin.register(models.ChecklistAuditLog)
class ChecklistAuditLogModelAdmin(admin.ModelAdmin):
- list_display = ["description", "creator", "checklist", "create_time", "update_time"]
+ list_display = ["description", "creator",
+ "checklist", "create_time", "update_time"]
list_filter = ["category"]
search_fields = ["description"]
@@ -92,7 +110,8 @@ class ChecklistAuditLogModelAdmin(admin.ModelAdmin):
@admin.register(models.ChecklistDecision)
class ChecklistDecisionModelAdmin(admin.ModelAdmin):
- list_display = ["checklist", "lineitem", "review_value", "peer_review_value", "create_time", "update_time"]
+ list_display = ["checklist", "lineitem", "review_value",
+ "peer_review_value", "create_time", "update_time"]
list_filter = ["template"]
search_fields = ["name"]
@@ -100,7 +119,8 @@ class ChecklistDecisionModelAdmin(admin.ModelAdmin):
@admin.register(models.ChecklistLineItem)
class ChecklistLineItemModelAdmin(admin.ModelAdmin):
- list_display = ["name", "weight", "template", "section", "create_time", "update_time"]
+ list_display = ["name", "weight", "template",
+ "section", "create_time", "update_time"]
list_filter = ["template", "section"]
search_fields = ["name"]
@@ -108,14 +128,16 @@ class ChecklistLineItemModelAdmin(admin.ModelAdmin):
@admin.register(models.ChecklistSection)
class ChecklistSectionModelAdmin(admin.ModelAdmin):
- list_display = ["name", "weight", "template", "parent_section", "create_time", "update_time"]
+ list_display = ["name", "weight", "template",
+ "parent_section", "create_time", "update_time"]
list_filter = ["template"]
@admin.register(models.ChecklistTemplate)
class ChecklistTemplateModelAdmin(admin.ModelAdmin):
- list_display = ["name", "category", "version", "create_time", "update_time"]
+ list_display = ["name", "category",
+ "version", "create_time", "update_time"]
list_filter = ["category", "version"]
search_fields = ["name"]
search_fields = ["name"]
@@ -137,8 +159,16 @@ class DeploymentTargetSiteModelAdmin(admin.ModelAdmin):
@admin.register(models.Engagement)
class EngagementModelAdmin(admin.ModelAdmin):
- list_display = ["engagement_manual_id", "vf_name", "deployment_target_name", "ecomp_release", "progress", "target_completion_date",
- "target_lab_entry_date", "engagement_stage", "create_time"]
+ list_display = [
+ "engagement_manual_id",
+ "vf_name",
+ "deployment_target_name",
+ "ecomp_release",
+ "progress",
+ "target_completion_date",
+ "target_lab_entry_date",
+ "engagement_stage",
+ "create_time"]
list_editable = ["progress", "target_completion_date", "engagement_stage"]
list_filter = ["engagement_stage"]
search_fields = ["engagement_stage", "engagement_manual_id"]
@@ -165,7 +195,8 @@ class EngagementModelAdmin(admin.ModelAdmin):
@admin.register(models.EngagementStatus)
class EngagementStatusModelAdmin(admin.ModelAdmin):
- list_display = ["engagement_manual_id", "vf_name", "description", "creator_full_name", "create_time", "update_time"]
+ list_display = ["engagement_manual_id", "vf_name", "description",
+ "creator_full_name", "create_time", "update_time"]
list_filter = ["creator"]
search_fields = ["description"]
@@ -189,8 +220,16 @@ class ECOMPReleaseModelAdmin(admin.ModelAdmin):
@admin.register(models.IceUserProfile)
class IceUserProfileModelAdmin(admin.ModelAdmin):
- list_display = ["full_name", "email", "phone_number", "company_name", "role_name", "is_service_provider_contact", "has_ssh_key",
- "create_time", "role"]
+ list_display = [
+ "full_name",
+ "email",
+ "phone_number",
+ "company_name",
+ "role_name",
+ "is_service_provider_contact",
+ "has_ssh_key",
+ "create_time",
+ "role"]
list_editable = ["phone_number", "is_service_provider_contact", "role"]
list_filter = ["is_service_provider_contact", "role", "company"]
search_fields = ["full_name", "email", "phone_number"]
@@ -216,16 +255,24 @@ class IceUserProfileModelAdmin(admin.ModelAdmin):
@admin.register(models.Invitation)
class InvitationModelAdmin(admin.ModelAdmin):
- list_display = ["email", "engagement_manual_id", "vf_name",
- "invited_by_user", "accepted", "create_time", "invitation_token"]
+ list_display = [
+ "email",
+ "engagement_manual_id",
+ "vf_name",
+ "invited_by_user",
+ "accepted",
+ "create_time",
+ "invitation_token"]
list_filter = ["accepted"]
search_fields = ["email", "invitation_token"]
def invited_by_user(self, obj):
- return models.IceUserProfile.objects.get(uuid=obj.invited_by_user_uuid).full_name
+ return models.IceUserProfile.objects.get(
+ uuid=obj.invited_by_user_uuid).full_name
def engagement_manual_id(self, obj):
- return models.Engagement.objects.get(uuid=obj.engagement_uuid).engagement_manual_id
+ return models.Engagement.objects.get(
+ uuid=obj.engagement_uuid).engagement_manual_id
def vf_name(self, obj):
e = models.Engagement.objects.get(uuid=obj.engagement_uuid)
@@ -235,8 +282,20 @@ class InvitationModelAdmin(admin.ModelAdmin):
@admin.register(models.NextStep)
class NextStepModelAdmin(admin.ModelAdmin):
- list_display = ["engagement_manual_id", "vf_name", "description", "files", "due_date", "last_updater_full_name", "last_update_time",
- "last_update_type", "creator_full_name", "create_time", "state", "next_step_type", "owner_full_name"]
+ list_display = [
+ "engagement_manual_id",
+ "vf_name",
+ "description",
+ "files",
+ "due_date",
+ "last_updater_full_name",
+ "last_update_time",
+ "last_update_type",
+ "creator_full_name",
+ "create_time",
+ "state",
+ "next_step_type",
+ "owner_full_name"]
list_filter = ["next_step_type", "state"]
search_fields = ["description", "files"]
@@ -284,8 +343,14 @@ class NextStepModelAdmin(admin.ModelAdmin):
@admin.register(models.Notification)
class NotificationModelAdmin(admin.ModelAdmin):
- list_display = ["activity_description", "activity_type", "engagement_manual_id",
- "vf_name", "is_sent", "is_read", "activity_create_time"]
+ list_display = [
+ "activity_description",
+ "activity_type",
+ "engagement_manual_id",
+ "vf_name",
+ "is_sent",
+ "is_read",
+ "activity_create_time"]
list_filter = ["is_sent", "is_read"]
def activity_description(self, obj):
@@ -305,7 +370,8 @@ class NotificationModelAdmin(admin.ModelAdmin):
def vf_name(self, obj):
if obj.activity.engagement:
- return models.VF.objects.get(engagement=obj.activity.engagement).name
+ return models.VF.objects.get(
+ engagement=obj.activity.engagement).name
else:
return ""
@@ -313,7 +379,8 @@ class NotificationModelAdmin(admin.ModelAdmin):
@admin.register(models.RecentEngagement)
class RecentEngagementModelAdmin(admin.ModelAdmin):
- list_display = ["engagement_manual_id", "vf_name", "ice_user", "action_type", "last_update"]
+ list_display = ["engagement_manual_id", "vf_name",
+ "ice_user", "action_type", "last_update"]
list_filter = ["action_type"]
def vf_name(self, obj):
@@ -343,9 +410,19 @@ class VendorModelAdmin(admin.ModelAdmin):
@admin.register(models.VF)
class VFModelAdmin(admin.ModelAdmin):
- list_display = ["name", "deployment_target", "ecomp_release", "progress", "target_completion_date",
- "target_lab_entry_date", "is_service_provider_internal", "git_repo_url", "engagement_stage", "engagement_manual_id"]
- list_filter = ["deployment_target", "ecomp_release", "is_service_provider_internal", "vendor"]
+ list_display = [
+ "name",
+ "deployment_target",
+ "ecomp_release",
+ "progress",
+ "target_completion_date",
+ "target_lab_entry_date",
+ "is_service_provider_internal",
+ "git_repo_url",
+ "engagement_stage",
+ "engagement_manual_id"]
+ list_filter = ["deployment_target", "ecomp_release",
+ "is_service_provider_internal", "vendor"]
list_editable = ["is_service_provider_internal"]
search_fields = ["name", "git_repo_url"]
@@ -365,7 +442,8 @@ class VFModelAdmin(admin.ModelAdmin):
@admin.register(models.VFC)
class VFCModelAdmin(admin.ModelAdmin):
- list_display = ["name", "external_ref_id", "ice_mandated", "vf_name", "company_name", "engagement_manual_id"]
+ list_display = ["name", "external_ref_id", "ice_mandated",
+ "vf_name", "company_name", "engagement_manual_id"]
list_filter = ["ice_mandated", "company"]
list_editable = ["external_ref_id", "ice_mandated"]
search_fields = ["name", "external_ref_id"]
diff --git a/django/engagementmanager/apps.py b/django/engagementmanager/apps.py
index e4a967d..950fe20 100644
--- a/django/engagementmanager/apps.py
+++ b/django/engagementmanager/apps.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -41,6 +41,8 @@ from django.conf import settings
from engagementmanager.scheduled_jobs import ScheduledJobs
from engagementmanager.service.logging_service import LoggingServiceFactory
+logger = LoggingServiceFactory.get_logger()
+
cms_client = None
bus_service = None
@@ -52,12 +54,13 @@ class EngagementmanagerConfig(AppConfig):
def ready(self):
# This otherwise unused import causes the signal receivers
# to register themselves at the appropriate time. Do not remove.
+ # We use logger.debug to ignore flake8's warning about unused import.
import engagementmanager.vm_integration.em_api
+ logger.debug(engagementmanager.vm_integration.em_api.file_name)
###############################
# Bootstrap Actions #
###############################
from engagementmanager.utils.constants import Constants
- logger = LoggingServiceFactory.get_logger()
if (settings.DOMAIN == Constants.prodDomain):
logger.info("--Production Mode--")
@@ -77,20 +80,39 @@ class EngagementmanagerConfig(AppConfig):
ice_scheduler.setup_hourly_job()
def __register_bus_service_handlers(self):
- from engagementmanager.bus.messages.activity_event_message import ActivityEventMessage
- from engagementmanager.bus.messages.daily_scheduled_message import DailyScheduledMessage
- from engagementmanager.bus.messages.new_notification_message import NewNotificationMessage
- from engagementmanager.bus.handlers.activity_event_handler import ActivityEventHandler
- from engagementmanager.bus.handlers.daily_resend_notifications_handler import DailyResendNotificationsHandler
- from engagementmanager.bus.handlers.digest_email_notification_handler import DigestEmailNotificationHandler
- from engagementmanager.bus.handlers.new_notification_handler import NewNotificationHandler
- from engagementmanager.bus.messages.hourly_scheduled_message import HourlyScheduledMessage
- from engagementmanager.bus.handlers.check_news_and_announcements_handler import CheckNewsAndAnnouncementsHandler
- from engagementmanager.bus.handlers.daily_notify_inactive_engagements_handler import DailyNotifyInactiveEngagementsHandler
+ from engagementmanager.bus.messages.activity_event_message import \
+ ActivityEventMessage
+ from engagementmanager.bus.messages.daily_scheduled_message import \
+ DailyScheduledMessage
+ from engagementmanager.bus.messages.new_notification_message import \
+ NewNotificationMessage
+ from engagementmanager.bus.handlers.activity_event_handler import\
+ ActivityEventHandler
+ from engagementmanager.bus.handlers.daily_resend_notifications_handler\
+ import DailyResendNotificationsHandler
+ from engagementmanager.bus.handlers.digest_email_notification_handler\
+ import DigestEmailNotificationHandler
+ from engagementmanager.bus.handlers.new_notification_handler\
+ import NewNotificationHandler
+ from engagementmanager.bus.messages.hourly_scheduled_message\
+ import HourlyScheduledMessage
+ from engagementmanager.bus.handlers.\
+ check_news_and_announcements_handler import \
+ CheckNewsAndAnnouncementsHandler
+ from engagementmanager.bus.handlers.\
+ daily_notify_inactive_engagements_handler import \
+ DailyNotifyInactiveEngagementsHandler
+ from engagementmanager.bus.handlers.image_pushed_handler import \
+ ImagePushedHandler
bus_service.register(ActivityEventHandler(), ActivityEventMessage)
bus_service.register(NewNotificationHandler(), NewNotificationMessage)
- bus_service.register(DigestEmailNotificationHandler(), DailyScheduledMessage)
- bus_service.register(DailyResendNotificationsHandler(), DailyScheduledMessage)
- bus_service.register(DailyNotifyInactiveEngagementsHandler(), DailyScheduledMessage)
- bus_service.register(CheckNewsAndAnnouncementsHandler(), HourlyScheduledMessage)
+ bus_service.register(
+ DigestEmailNotificationHandler(), DailyScheduledMessage)
+ bus_service.register(
+ DailyResendNotificationsHandler(), DailyScheduledMessage)
+ bus_service.register(
+ DailyNotifyInactiveEngagementsHandler(), DailyScheduledMessage)
+ bus_service.register(
+ CheckNewsAndAnnouncementsHandler(), HourlyScheduledMessage)
+ bus_service.register(ImagePushedHandler(), HourlyScheduledMessage) \ No newline at end of file
diff --git a/django/engagementmanager/bus/__init__.py b/django/engagementmanager/bus/__init__.py
index 1726c13..16f81cb 100644
--- a/django/engagementmanager/bus/__init__.py
+++ b/django/engagementmanager/bus/__init__.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/engagementmanager/bus/handlers/__init__.py b/django/engagementmanager/bus/handlers/__init__.py
index 1726c13..16f81cb 100644
--- a/django/engagementmanager/bus/handlers/__init__.py
+++ b/django/engagementmanager/bus/handlers/__init__.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/engagementmanager/bus/handlers/activity_event_handler.py b/django/engagementmanager/bus/handlers/activity_event_handler.py
index d5ef819..96ce260 100644
--- a/django/engagementmanager/bus/handlers/activity_event_handler.py
+++ b/django/engagementmanager/bus/handlers/activity_event_handler.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -36,7 +36,8 @@
# ============LICENSE_END============================================
#
# ECOMP is a trademark and service mark of AT&T Intellectual Property.
-from engagementmanager.bus.handlers.service_bus_base_handler import ServiceBusBaseHandler
+from engagementmanager.bus.handlers.service_bus_base_handler import \
+ ServiceBusBaseHandler
from engagementmanager.service.activities_service import ActivitiesSvc
from engagementmanager.service.logging_service import LoggingServiceFactory
@@ -47,6 +48,7 @@ class ActivityEventHandler(ServiceBusBaseHandler):
activities_service = ActivitiesSvc()
def handle_message(self, bus_message):
- logger.info("New ICE event from type '%s' arrived, activity will be generated." %
- bus_message.activity_data.activity_type.name)
+ logger.info(
+ "New ICE event from type '%s' arrived, activity will be generated"
+ % bus_message.activity_data.activity_type.name)
self.activities_service.generate_activity(bus_message.activity_data)
diff --git a/django/engagementmanager/bus/handlers/check_news_and_announcements_handler.py b/django/engagementmanager/bus/handlers/check_news_and_announcements_handler.py
index 6ef4fdb..c503346 100644
--- a/django/engagementmanager/bus/handlers/check_news_and_announcements_handler.py
+++ b/django/engagementmanager/bus/handlers/check_news_and_announcements_handler.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -36,7 +36,8 @@
# ============LICENSE_END============================================
#
# ECOMP is a trademark and service mark of AT&T Intellectual Property.
-from engagementmanager.bus.handlers.service_bus_base_handler import ServiceBusBaseHandler
+from engagementmanager.bus.handlers.service_bus_base_handler import \
+ ServiceBusBaseHandler
from engagementmanager.service.logging_service import LoggingServiceFactory
logger = LoggingServiceFactory.get_logger()
@@ -44,6 +45,8 @@ logger = LoggingServiceFactory.get_logger()
class CheckNewsAndAnnouncementsHandler(ServiceBusBaseHandler):
def handle_message(self, bus_message):
- logger.debug("New hourly scheduled message arrived, will check for news and announcements and send notification"
- " if needed.")
+ logger.debug(
+ "New hourly scheduled message arrived, will check " +
+ "for news and announcements and send notification"
+ " if needed.")
pass
diff --git a/django/engagementmanager/bus/handlers/daily_notify_inactive_engagements.py b/django/engagementmanager/bus/handlers/daily_notify_inactive_engagements.py
index 598b977..2ac3581 100644
--- a/django/engagementmanager/bus/handlers/daily_notify_inactive_engagements.py
+++ b/django/engagementmanager/bus/handlers/daily_notify_inactive_engagements.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -39,7 +39,8 @@
from django.db.models.query_utils import Q
from django.utils import timezone
from django.utils.timezone import timedelta
-from engagementmanager.bus.handlers.service_bus_base_handler import ServiceBusBaseHandler
+from engagementmanager.bus.handlers.service_bus_base_handler import \
+ ServiceBusBaseHandler
from engagementmanager.models import Engagement, VF
from engagementmanager.service.activities_service import ActivitiesSvc
from engagementmanager.service.checklist_service import CheckListSvc
@@ -52,10 +53,14 @@ logger = LoggingServiceFactory.get_logger()
class DailyNotifyInactiveEngagements(ServiceBusBaseHandler):
+
def handle_message(self, bus_message):
logger.debug("New digest bus message arrived - email is about to sent")
checklist_service = CheckListSvc()
- engagements_list = Engagement.objects.filter(is_with_files=False, Q(engagement_stage=EngagementStage.Active.name) | Q(engagement_stage=EngagementStage.Intake.name))
+ engagements_list = Engagement.objects.filter(
+ Q(engagement_stage=EngagementStage.Active.name) | Q(
+ engagement_stage=EngagementStage.Intake.name),
+ is_with_files=False)
for engagement in engagements_list:
files_found = checklist_service.getEngagementFiles(engagement.uuid)
@@ -67,7 +72,10 @@ class DailyNotifyInactiveEngagements(ServiceBusBaseHandler):
max_empty_time = self.get_max_empty_date(engagement.create_time)
if max_empty_time < timezone.now():
- archive_engagement(engagement.uuid, "More than 30 days passed and no files added to gitlab yet")
+ archive_engagement(
+ engagement.uuid,
+ "More than 30 days passed and no files \
+ added to gitlab yet")
else:
self.send_emails_logic(engagement)
@@ -81,13 +89,21 @@ class DailyNotifyInactiveEngagements(ServiceBusBaseHandler):
def send_emails_logic(self, engagement):
- delta_days_from_creation = self.get_days_delta(engagement.create_time, timezone.now())
+ delta_days_from_creation = self.get_days_delta(
+ engagement.create_time, timezone.now())
alert_days = [7, 14, 21]
- if (delta_days_from_creation in alert_days) or (delta_days_from_creation >= 23 and delta_days_from_creation < 30):
+ if (delta_days_from_creation in alert_days) or (
+ delta_days_from_creation >= 23 and
+ delta_days_from_creation < 30):
vf = VF.objects.get(engagement=engagement)
vf_name = vf.name
- max_empty_time = self.get_max_empty_date(engagement.create_time).strftime('%b %d, %Y')
+ max_empty_time = self.get_max_empty_date(
+ engagement.create_time).strftime('%b %d, %Y')
git_repo_url = vf.git_repo_url
activity_data = NoticeEmptyEngagementData(
- vf_name, max_empty_time, git_repo_url, str(delta_days_from_creation), engagement)
+ vf_name,
+ max_empty_time,
+ git_repo_url,
+ str(delta_days_from_creation),
+ engagement)
ActivitiesSvc().generate_activity(activity_data)
diff --git a/django/engagementmanager/bus/handlers/daily_notify_inactive_engagements_handler.py b/django/engagementmanager/bus/handlers/daily_notify_inactive_engagements_handler.py
index 12acea1..96f25a2 100644
--- a/django/engagementmanager/bus/handlers/daily_notify_inactive_engagements_handler.py
+++ b/django/engagementmanager/bus/handlers/daily_notify_inactive_engagements_handler.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -38,7 +38,8 @@
# ECOMP is a trademark and service mark of AT&T Intellectual Property.
from django.utils import timezone
from django.utils.timezone import timedelta
-from engagementmanager.bus.handlers.service_bus_base_handler import ServiceBusBaseHandler
+from engagementmanager.bus.handlers.service_bus_base_handler import \
+ ServiceBusBaseHandler
from engagementmanager.models import Engagement, VF
from engagementmanager.service.activities_service import ActivitiesSvc
from engagementmanager.service.checklist_service import CheckListSvc
@@ -52,9 +53,11 @@ logger = LoggingServiceFactory.get_logger()
class DailyNotifyInactiveEngagementsHandler(ServiceBusBaseHandler):
def handle_message(self, bus_message):
- logger.debug("New digest bus message arrived - email is about to sent")
+ logger.debug("New digest bus message arrived -" +
+ "email is about to sent")
checklist_service = CheckListSvc()
- engagements_list = Engagement.objects.filter(is_with_files=False, engagement_stage=EngagementStage.Active.name)
+ engagements_list = Engagement.objects.filter(
+ is_with_files=False, engagement_stage=EngagementStage.Active.name)
for engagement in engagements_list:
files_found = checklist_service.getEngagementFiles(engagement.uuid)
@@ -66,7 +69,10 @@ class DailyNotifyInactiveEngagementsHandler(ServiceBusBaseHandler):
max_empty_time = self.get_max_empty_date(engagement.create_time)
if max_empty_time < timezone.now():
- archive_engagement(engagement.uuid, "More than 30 days passed and no files added to gitlab yet")
+ archive_engagement(
+ engagement.uuid,
+ "More than 30 days passed and no " +
+ "files added to gitlab yet")
else:
self.send_emails_logic(engagement)
@@ -78,13 +84,21 @@ class DailyNotifyInactiveEngagementsHandler(ServiceBusBaseHandler):
def send_emails_logic(self, engagement):
- delta_days_from_creation = self.get_days_delta(engagement.create_time, timezone.now())
+ delta_days_from_creation = self.get_days_delta(
+ engagement.create_time, timezone.now())
alert_days = [7, 14, 21]
- if (delta_days_from_creation in alert_days) or (delta_days_from_creation >= 23 and delta_days_from_creation < 30):
+ if (delta_days_from_creation in alert_days) or (
+ delta_days_from_creation >= 23 and
+ delta_days_from_creation < 30):
vf = VF.objects.get(engagement=engagement)
vf_name = vf.name
- max_empty_time = self.get_max_empty_date(engagement.create_time).strftime('%b %d, %Y')
+ max_empty_time = self.get_max_empty_date(
+ engagement.create_time).strftime('%b %d, %Y')
git_repo_url = vf.git_repo_url
activity_data = NoticeEmptyEngagementData(
- vf_name, max_empty_time, git_repo_url, str(delta_days_from_creation), engagement)
+ vf_name,
+ max_empty_time,
+ git_repo_url,
+ str(delta_days_from_creation),
+ engagement)
ActivitiesSvc().generate_activity(activity_data)
diff --git a/django/engagementmanager/bus/handlers/daily_resend_notifications_handler.py b/django/engagementmanager/bus/handlers/daily_resend_notifications_handler.py
index 9919cad..b7396cc 100644
--- a/django/engagementmanager/bus/handlers/daily_resend_notifications_handler.py
+++ b/django/engagementmanager/bus/handlers/daily_resend_notifications_handler.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -39,7 +39,8 @@
import json
from django.template.loader import get_template
from engagementmanager import mail
-from engagementmanager.bus.handlers.service_bus_base_handler import ServiceBusBaseHandler
+from engagementmanager.bus.handlers.service_bus_base_handler import \
+ ServiceBusBaseHandler
from engagementmanager.mail import sendMail
from engagementmanager.models import Notification
from engagementmanager.utils.constants import Constants
@@ -50,26 +51,42 @@ logger = LoggingServiceFactory.get_logger()
class DailyResendNotificationsHandler(ServiceBusBaseHandler):
def handle_message(self, bus_message):
- logger.debug("New resend notifications message arrived - emails is about to sent to the "
- "all unsent notifications")
+ logger.debug(
+ "New resend notifications message arrived - " +
+ "emails is about to sent to the " +
+ "all unsent notifications")
unsent_notifications = Notification.objects.filter(is_sent=False)
for notification in unsent_notifications:
if notification.user.email_updates_on_every_notification:
try:
- subject_template = get_template("{notification_template_dir}notification_mail_subject.html".format(
- notification_template_dir=Constants.notification_template_dir))
- msg_template = get_template("{notification_template_dir}notification_mail_body.html".format(
- notification_template_dir=Constants.notification_template_dir))
+ subject_template = get_template(
+ "{notification_template_dir}\
+ notification_mail_subject.html".format(
+ notification_template_dir=Constants.
+ notification_template_dir))
+ msg_template = get_template(
+ "{notification_template_dir}\
+ notification_mail_body.html".format(
+ notification_template_dir=Constants.
+ notification_template_dir))
- sendMail(notification.user.email, json.loads(notification.activity.metadata),
- msg_template, subject_template, mail_from=mail.ice_admin_mail_from)
+ sendMail(
+ notification.user.email,
+ json.loads(
+ notification.activity.metadata),
+ msg_template,
+ subject_template,
+ mail_from=mail.ice_admin_mail_from)
notification.is_sent = True
notification.save()
except Exception as e:
- msg = "Something went wrong while trying to resend bulk mail " \
+ msg = "Something went wrong while trying \
+ to resend bulk mail " \
"as part of the notifications daily resend"
logger.error(msg + " " + e)
else:
notification.is_sent = True
notification.save()
- logger.info("User choose not to get email on every notification, set it as sent.")
+ logger.info(
+ "User choose not to get email on every \
+ notification, set it as sent.")
diff --git a/django/engagementmanager/bus/handlers/digest_email_notification_handler.py b/django/engagementmanager/bus/handlers/digest_email_notification_handler.py
index 7f5cb6b..7ab475a 100644
--- a/django/engagementmanager/bus/handlers/digest_email_notification_handler.py
+++ b/django/engagementmanager/bus/handlers/digest_email_notification_handler.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -39,7 +39,8 @@
from datetime import datetime
from django.template.loader import get_template
from engagementmanager import mail
-from engagementmanager.bus.handlers.service_bus_base_handler import ServiceBusBaseHandler
+from engagementmanager.bus.handlers.service_bus_base_handler import \
+ ServiceBusBaseHandler
from engagementmanager.mail import sendMail
from engagementmanager.models import Notification, IceUserProfile
from engagementmanager.utils.constants import Constants
@@ -52,23 +53,34 @@ class DigestEmailNotificationHandler(ServiceBusBaseHandler):
def handle_message(self, bus_message):
logger.debug("New digest bus message arrived - email is about to sent")
today = datetime.now().date()
- users = Notification.objects.filter(activity__create_time__gte=today).values("user").distinct()
+ users = Notification.objects.filter(
+ activity__create_time__gte=today).values("user").distinct()
for user in users:
user = IceUserProfile.objects.get(id=user['user'])
if user.email_updates_daily_digest:
- notifications = Notification.objects.filter(activity__create_time__gte=today, user=user)
+ notifications = Notification.objects.filter(
+ activity__create_time__gte=today, user=user)
try:
- subject_template = get_template("{notification_template_dir}"
- "notification_digest_mail_subject.html".format(
- notification_template_dir=Constants.notification_template_dir))
- msg_template = get_template("{notification_template_dir}"
- "notification_digest_mail_body.html".format(
- notification_template_dir=Constants.notification_template_dir))
+ subject_template = get_template(
+ "{notification_template_dir}"
+ "notification_digest_mail_subject.html".format(
+ notification_template_dir=Constants.
+ notification_template_dir))
+ msg_template = get_template(
+ "{notification_template_dir}"
+ "notification_digest_mail_body.html".format(
+ notification_template_dir=Constants.
+ notification_template_dir))
- sendMail(user.email, notifications.values(),
- msg_template, subject_template, mail_from=mail.ice_admin_mail_from)
- except Exception as e:
- msg = "Something went wrong while trying to send bulk mail as part of the digest notifications"
+ sendMail(
+ user.email,
+ notifications.values(),
+ msg_template,
+ subject_template,
+ mail_from=mail.ice_admin_mail_from)
+ except Exception:
+ msg = "Something went wrong while trying " +\
+ "to send bulk mail as part of the digest notifications"
logger.error(msg)
diff --git a/django/engagementmanager/bus/handlers/image_pushed_handler.py b/django/engagementmanager/bus/handlers/image_pushed_handler.py
new file mode 100644
index 0000000..edfb50e
--- /dev/null
+++ b/django/engagementmanager/bus/handlers/image_pushed_handler.py
@@ -0,0 +1,76 @@
+import logging
+
+from django.core.exceptions import ObjectDoesNotExist
+
+from engagementmanager.bus.handlers.service_bus_base_handler import ServiceBusBaseHandler
+from engagementmanager.slack_client.api import SlackClient
+from engagementmanager.models import VF, Checklist, IceUserProfile
+from engagementmanager.utils.constants import CheckListState
+from validationmanager.rados.rgwa_client_factory import RGWAClientFactory
+from datetime import datetime, timedelta
+from engagementmanager.service.checklist_state_service import set_state
+from engagementmanager.utils.request_data_mgr import request_data_mgr
+
+logger = logging.getLogger('ice.logger')
+
+
+class ImagePushedHandler(ServiceBusBaseHandler):
+ def handle_message(self, bus_message):
+ logger.debug("New hourly scheduled message arrived, Will check if there are new images and trigger the "
+ "checklist scan in accordance.")
+
+ rgwa = RGWAClientFactory.admin()
+ start_date = datetime.today() - timedelta(hours=1)
+ last_hour_uasge = rgwa.get_usage(show_entries=True, start=start_date.strftime('%Y-%m-%d %H:%M:%S'))
+
+ if last_hour_uasge is not None and 'entries' in last_hour_uasge:
+ for entry in last_hour_uasge['entries']:
+ for bucket in entry['buckets']:
+ if "_" not in bucket["bucket"]:
+ # we must skip "cms-media", "cms-static", "em-media",
+ # and "em-static", as well as any bucket not created
+ # for images, for now this is sufficient but FIXME
+ # could be more robust.
+ continue
+ if any(category['category'] == 'put_obj' for category in bucket['categories']):
+ logger.debug("Found image which updated at the last hour -> will run checklist scan"
+ "for validation.")
+ bucket_name_combinations = str(bucket['bucket']).split('_')
+ engagement_manual_id = bucket_name_combinations[0]
+ vf_name = bucket_name_combinations[1]
+
+ vf = VF.objects.get(name=vf_name, engagement__engagement_manual_id=engagement_manual_id)
+ self.validate_vf_exists(vf)
+ self.notify_slack_users(vf, bucket['bucket'])
+ self.set_checklist_states(vf)
+
+ def validate_vf_exists(self, vf):
+ if vf is None:
+ msg = "Couldn't fetch any VF"
+ logger.error(msg)
+ raise ObjectDoesNotExist(msg)
+
+ def notify_slack_users(self, vf, bucket_name):
+ slack_client = SlackClient()
+ slack_client.send_notifications_bucket_image_update(
+ vf.engagement.engagement_manual_id, vf.name, vf.engagement.reviewer,
+ vf.engagement.peer_reviewer, bucket_name)
+
+ def set_checklist_states(self, vf):
+ checklists = (Checklist.objects
+ .filter(engagement=vf.engagement)
+ .exclude(state=CheckListState.archive.name)
+ .exclude(state=CheckListState.closed.name))
+
+ for checklist in checklists:
+ # FIXME Even though there is probably no associated request for
+ # this periodically-triggered task, set_state will crash if the
+ # request_data_mgr.get_user() returns None. So fake it.
+ request_data_mgr.set_user(
+ IceUserProfile.objects.filter(role__name='admin').first())
+ data = set_state(decline=True,
+ checklist_uuid=checklist.uuid,
+ isMoveToAutomation=True,
+ description="This change was triggered by an update to the engagement rgwa bucket.")
+
+ logger.debug("set_state returned (%r)" % data)
diff --git a/django/engagementmanager/bus/handlers/new_notification_handler.py b/django/engagementmanager/bus/handlers/new_notification_handler.py
index 00491fa..8ed4ebf 100644
--- a/django/engagementmanager/bus/handlers/new_notification_handler.py
+++ b/django/engagementmanager/bus/handlers/new_notification_handler.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -38,7 +38,8 @@
# ECOMP is a trademark and service mark of AT&T Intellectual Property.
import json
from engagementmanager import mail
-from engagementmanager.bus.handlers.service_bus_base_handler import ServiceBusBaseHandler
+from engagementmanager.bus.handlers.service_bus_base_handler import \
+ ServiceBusBaseHandler
from django.template.loader import get_template
from engagementmanager.mail import sendMail
from engagementmanager.utils.constants import Constants
@@ -49,26 +50,38 @@ logger = LoggingServiceFactory.get_logger()
class NewNotificationHandler(ServiceBusBaseHandler):
+
def handle_message(self, bus_message):
- logger.info("New notification (%s) arrived - email will sent" %
- bus_message.notification.uuid)
+ logger.info(
+ "New notification " +
+ "(%s) arrived - email will sent" % bus_message.notification.uuid)
user = bus_message.notification.user
if user.email_updates_on_every_notification:
try:
- subject_template = get_template("{notification_template_dir}notification_mail_subject.html".format(
- notification_template_dir=Constants.notification_template_dir))
- msg_template = get_template("{notification_template_dir}notification_mail_body.html".format(
- notification_template_dir=Constants.notification_template_dir))
-
- sendMail(user.email, json.loads(bus_message.notification.activity.metadata),
- msg_template, subject_template, mail_from=mail.ice_admin_mail_from)
+ template_dir = Constants.notification_template_dir
+ subject_template = get_template(
+ """{template_dir}notification_mail_subject.html""".format(
+ template_dir=template_dir))
+ msg_template = get_template(
+ """{template_dir}notification_mail_body.html""".format(
+ template_dir=template_dir))
+ sendMail(
+ user.email,
+ json.loads(
+ bus_message.notification.activity.metadata),
+ msg_template,
+ subject_template,
+ mail_from=mail.ice_admin_mail_from)
bus_message.notification.is_sent = True
bus_message.notification.save()
except Exception as e:
- msg = "Something went wrong while trying to send bulk mail as part of the notification"
+ msg = "Something went wrong while trying to send " +\
+ "bulk mail as part of the notification"
logger.error(msg + " " + str(e))
else:
bus_message.notification.is_sent = True
bus_message.notification.save()
- logger.info("User choose not to get email on every notification, set it as sent.")
+ logger.info(
+ "User choose not to get email on every " +
+ "notification, set it as sent.")
diff --git a/django/engagementmanager/bus/handlers/service_bus_base_handler.py b/django/engagementmanager/bus/handlers/service_bus_base_handler.py
index 7b4a83b..03f33b5 100644
--- a/django/engagementmanager/bus/handlers/service_bus_base_handler.py
+++ b/django/engagementmanager/bus/handlers/service_bus_base_handler.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -38,7 +38,8 @@
# ECOMP is a trademark and service mark of AT&T Intellectual Property.
from abc import ABCMeta, abstractmethod
-from engagementmanager.bus.messages.service_bus_base_message import ServiceBusBaseMessage
+from engagementmanager.bus.messages.service_bus_base_message import \
+ ServiceBusBaseMessage
from engagementmanager.utils.vvp_exceptions import VvpGeneralException
@@ -47,7 +48,9 @@ class ServiceBusBaseHandler:
def validate_message(self, bus_message):
if not issubclass(type(bus_message), ServiceBusBaseMessage):
- raise VvpGeneralException("You can't handle message which is not from type of ServiceBusBaseMessage")
+ raise VvpGeneralException(
+ "You can't handle message which is not " +
+ "from type of ServiceBusBaseMessage")
@abstractmethod
def handle_message(self, bus_message):
diff --git a/django/engagementmanager/bus/messages/__init__.py b/django/engagementmanager/bus/messages/__init__.py
index 1726c13..16f81cb 100644
--- a/django/engagementmanager/bus/messages/__init__.py
+++ b/django/engagementmanager/bus/messages/__init__.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/engagementmanager/bus/messages/activity_event_message.py b/django/engagementmanager/bus/messages/activity_event_message.py
index 67bf319..b5a5f81 100644
--- a/django/engagementmanager/bus/messages/activity_event_message.py
+++ b/django/engagementmanager/bus/messages/activity_event_message.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -36,7 +36,8 @@
# ============LICENSE_END============================================
#
# ECOMP is a trademark and service mark of AT&T Intellectual Property.
-from engagementmanager.bus.messages.service_bus_base_message import ServiceBusBaseMessage
+from engagementmanager.bus.messages.service_bus_base_message import \
+ ServiceBusBaseMessage
from engagementmanager.utils.activities_data import ActivityData
from engagementmanager.utils.vvp_exceptions import VvpGeneralException
@@ -44,6 +45,7 @@ from engagementmanager.utils.vvp_exceptions import VvpGeneralException
class ActivityEventMessage(ServiceBusBaseMessage):
def __init__(self, activity_data):
if not issubclass(type(activity_data), ActivityData):
- raise VvpGeneralException("Activity data can be from type ActivityData only.")
+ raise VvpGeneralException(
+ "Activity data can be from type ActivityData only.")
self.activity_data = activity_data
diff --git a/django/engagementmanager/bus/messages/daily_scheduled_message.py b/django/engagementmanager/bus/messages/daily_scheduled_message.py
index 41941e8..052fc82 100644
--- a/django/engagementmanager/bus/messages/daily_scheduled_message.py
+++ b/django/engagementmanager/bus/messages/daily_scheduled_message.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -36,7 +36,8 @@
# ============LICENSE_END============================================
#
# ECOMP is a trademark and service mark of AT&T Intellectual Property.
-from engagementmanager.bus.messages.service_bus_base_message import ServiceBusBaseMessage
+from engagementmanager.bus.messages.service_bus_base_message import \
+ ServiceBusBaseMessage
class DailyScheduledMessage(ServiceBusBaseMessage):
diff --git a/django/engagementmanager/bus/messages/hourly_scheduled_message.py b/django/engagementmanager/bus/messages/hourly_scheduled_message.py
index 8c733bf..a138840 100644
--- a/django/engagementmanager/bus/messages/hourly_scheduled_message.py
+++ b/django/engagementmanager/bus/messages/hourly_scheduled_message.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -36,7 +36,8 @@
# ============LICENSE_END============================================
#
# ECOMP is a trademark and service mark of AT&T Intellectual Property.
-from engagementmanager.bus.messages.service_bus_base_message import ServiceBusBaseMessage
+from engagementmanager.bus.messages.service_bus_base_message import \
+ ServiceBusBaseMessage
class HourlyScheduledMessage(ServiceBusBaseMessage):
diff --git a/django/engagementmanager/bus/messages/new_notification_message.py b/django/engagementmanager/bus/messages/new_notification_message.py
index ce4ce06..1e33e7d 100644
--- a/django/engagementmanager/bus/messages/new_notification_message.py
+++ b/django/engagementmanager/bus/messages/new_notification_message.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -36,14 +36,16 @@
# ============LICENSE_END============================================
#
# ECOMP is a trademark and service mark of AT&T Intellectual Property.
-from engagementmanager.bus.messages.service_bus_base_message import ServiceBusBaseMessage
+from engagementmanager.bus.messages.service_bus_base_message import \
+ ServiceBusBaseMessage
from engagementmanager.models import Notification
from engagementmanager.utils.vvp_exceptions import VvpGeneralException
class NewNotificationMessage(ServiceBusBaseMessage):
def __init__(self, notification):
- if type(notification) is not Notification:
- raise VvpGeneralException("New notification event can be from type Notification only.")
+ if not isinstance(notification, Notification):
+ raise VvpGeneralException(
+ "New notification event can be from type Notification only.")
self.notification = notification
diff --git a/django/engagementmanager/bus/messages/service_bus_base_message.py b/django/engagementmanager/bus/messages/service_bus_base_message.py
index 3f97a0d..e453e09 100644
--- a/django/engagementmanager/bus/messages/service_bus_base_message.py
+++ b/django/engagementmanager/bus/messages/service_bus_base_message.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/engagementmanager/cms_client/__init__.py b/django/engagementmanager/cms_client/__init__.py
index 1726c13..16f81cb 100644
--- a/django/engagementmanager/cms_client/__init__.py
+++ b/django/engagementmanager/cms_client/__init__.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/engagementmanager/cms_client/api.py b/django/engagementmanager/cms_client/api.py
index a0ca5b1..3babc09 100644
--- a/django/engagementmanager/cms_client/api.py
+++ b/django/engagementmanager/cms_client/api.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -79,8 +79,11 @@ class CMSClient(object):
try:
client = BackendApplicationClient(client_id=client_id)
oatuh = OAuth2Session(client=client)
- token = oatuh.fetch_token(token_url=self.api_url + 'oauth2/token/', client_id=client_id,
- client_secret=client_secret)
+ token = oatuh.fetch_token(
+ token_url=self.api_url +
+ 'oauth2/token/',
+ client_id=client_id,
+ client_secret=client_secret)
except Exception as exception:
logger.error(
'Could not create CMS token, error message: ' + str(exception))
@@ -107,16 +110,22 @@ class CMSClient(object):
"""
response = None
try:
- response = self.session.get(self.api_url + resource, params=params)
+ response = self.session.get(self.api_url + resource,
+ params=params)
if response.status_code == HTTP_401_UNAUTHORIZED:
- logger.error('Token expired (401 status excepted), will renew cms token now')
+ logger.error(
+ 'Token expired (401 status excepted), \
+ will renew cms token now')
self.__init__()
- response = self.session.get(self.api_url + resource, params=params)
+ response = self.session.get(
+ self.api_url + resource, params=params)
except TokenExpiredError as exception:
- logger.error('Token expired (TokenExpiredError exception excepted),'
- ' will renew cms token now: ' + str(exception))
+ logger.error(
+ 'Token expired (TokenExpiredError exception excepted),'
+ ' will renew cms token now: ' + str(exception))
self.__init__()
- response = self.session.get(self.api_url + resource, params=params)
+ response = self.session.get(self.api_url + resource,
+ params=params)
item = self.json_deserialize(response.content.decode('utf-8'))
return item
@@ -130,8 +139,12 @@ class CMSClient(object):
:param limit: date_min of posts to return
:return: list of dicts for most recently published blog posts
"""
- return self.get('posts?offset={}&limit={}&category_name={}&date_min={}'.format(int(offset), int(limit),
- category, date_min))['results']
+ return self.get(
+ 'posts?offset={}&limit={}&category_name={}&date_min={}'.format(
+ int(offset),
+ int(limit),
+ category,
+ date_min))['results']
def get_pages(self, title=""):
"""
diff --git a/django/engagementmanager/decorator/__init__.py b/django/engagementmanager/decorator/__init__.py
index 1726c13..16f81cb 100644
--- a/django/engagementmanager/decorator/__init__.py
+++ b/django/engagementmanager/decorator/__init__.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/engagementmanager/decorator/auth.py b/django/engagementmanager/decorator/auth.py
index 686a8cc..d034b75 100644
--- a/django/engagementmanager/decorator/auth.py
+++ b/django/engagementmanager/decorator/auth.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -42,7 +42,8 @@ from rest_framework import status
from rest_framework.response import Response
from rest_framework.status import HTTP_401_UNAUTHORIZED, \
HTTP_400_BAD_REQUEST, HTTP_500_INTERNAL_SERVER_ERROR
-from engagementmanager.service.authorization_service import AuthorizationService
+from engagementmanager.service.authorization_service import \
+ AuthorizationService
from engagementmanager.utils.request_data_mgr import request_data_mgr
from engagementmanager.service.logging_service import LoggingServiceFactory
@@ -59,10 +60,10 @@ def auth(action, is_internal=False):
# Extract USER - A MUST Have in KWARGS #
user = request_data_mgr.get_user()
- if user == None:
+ if user is None:
msg = "user couldn't be identified in the request"
logger.error(msg)
- if (is_internal == True):
+ if (is_internal):
return msg, HTTP_400_BAD_REQUEST
return Response(msg, status=status.HTTP_400_BAD_REQUEST)
@@ -72,30 +73,42 @@ def auth(action, is_internal=False):
try:
result = None
message = None
- result, message = auth_service.is_user_able_to(user, action, eng_uuid, checklist_uuid)
- logger.debug('Authorization Service : ' + action.name +
- '. Result=' + str(result) + '. message=' + str(message))
- if result == False:
+ result, message = auth_service.is_user_able_to(
+ user, action, eng_uuid, checklist_uuid)
+ logger.debug(
+ 'Authorization Service : ' +
+ action.name +
+ '. Result=' +
+ str(result) +
+ '. message=' +
+ str(message))
+ if not result:
msg = "User not authorized: " + \
- str(user.uuid) + ". eng_uuid=" + str(eng_uuid) + ". checklist_uuid=" + str(checklist_uuid)
- if (is_internal == True):
+ str(user.uuid) + ". eng_uuid=" + str(eng_uuid) + \
+ ". checklist_uuid=" + str(checklist_uuid)
+ if (is_internal):
return msg, HTTP_401_UNAUTHORIZED
msg = bleach.clean(msg, tags=['a', 'b'])
return Response(msg, status=status.HTTP_401_UNAUTHORIZED)
except Exception as e:
- logger.error("=====================Exception=====================")
- msg = "A problem occurred while trying to authorize user.uuid= " + \
+ logger.error(
+ "=====================Exception=====================")
+ msg = "A problem occurred while trying \
+ to authorize user.uuid= " + \
str(user.uuid) + ". eng_uuid=" + str(eng_uuid) + \
- ". checklist_uuid=" + str(checklist_uuid) + "action=" + str(action)
+ ". checklist_uuid=" + \
+ str(checklist_uuid) + "action=" + str(action)
logger.error(str(e) + " Message: " + msg)
logger.error(traceback.format_exc())
- logger.error("===================================================")
+ logger.error(
+ "===================================================")
- if (is_internal == True):
+ if (is_internal):
return msg, HTTP_500_INTERNAL_SERVER_ERROR
msg = "Action was failed to be performed"
- return Response(msg, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
+ return Response(
+ msg, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
return func(*args, **kwargs)
return _new_func
diff --git a/django/engagementmanager/decorator/class_decorator.py b/django/engagementmanager/decorator/class_decorator.py
index 362e473..7d2bdf9 100644
--- a/django/engagementmanager/decorator/class_decorator.py
+++ b/django/engagementmanager/decorator/class_decorator.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -36,12 +36,15 @@
# ============LICENSE_END============================================
#
# ECOMP is a trademark and service mark of AT&T Intellectual Property.
+
+
def classDecorator(decorators):
def decorate(cls):
for attr in cls.__dict__:
if callable(getattr(cls, attr)):
for ice_decorator in decorators:
- if (attr in ["get", "put", "post", "delete", "entity_list", "entity_detail", "set_attr"]):
+ if (attr in ["get", "put", "post", "delete",
+ "entity_list", "entity_detail", "set_attr"]):
setattr(cls, attr, ice_decorator(getattr(cls, attr)))
return cls
return decorate
diff --git a/django/engagementmanager/decorator/log_func_entry.py b/django/engagementmanager/decorator/log_func_entry.py
index 1e7d840..2f8d6cf 100644
--- a/django/engagementmanager/decorator/log_func_entry.py
+++ b/django/engagementmanager/decorator/log_func_entry.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -45,6 +45,7 @@ logger = LoggingServiceFactory.get_logger()
def logFuncEntry(func):
@wraps(func)
def log(*args, **kwargs):
- logger.debug('calling {}'.format(func.__name__) + " | " + str(args) + " | " + str(kwargs))
+ logger.debug('calling {}'.format(func.__name__) +
+ " | " + str(args) + " | " + str(kwargs))
return func(*args, **kwargs)
return log
diff --git a/django/engagementmanager/decorator/retry.py b/django/engagementmanager/decorator/retry.py
index d0c15c1..24bff22 100644
--- a/django/engagementmanager/decorator/retry.py
+++ b/django/engagementmanager/decorator/retry.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -36,7 +36,8 @@
# ============LICENSE_END============================================
#
# ECOMP is a trademark and service mark of AT&T Intellectual Property.
-"""This module provides retry_connection, a simple wrapper around retrying.retry, for our most
+"""This module provides retry_connection,
+a simple wrapper around retrying.retry, for our most
common use case.
"""
@@ -49,4 +50,5 @@ def is_connection_exception(exception):
return isinstance(exception, (ConnectionError, Timeout))
-retry_connection = retry(stop_max_attempt_number=2, retry_on_exception=is_connection_exception)
+retry_connection = retry(stop_max_attempt_number=2,
+ retry_on_exception=is_connection_exception)
diff --git a/django/engagementmanager/git/__init__.py b/django/engagementmanager/git/__init__.py
index 1726c13..16f81cb 100644
--- a/django/engagementmanager/git/__init__.py
+++ b/django/engagementmanager/git/__init__.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/engagementmanager/git/git_manager.py b/django/engagementmanager/git/git_manager.py
index 4bc8de0..d33e840 100644
--- a/django/engagementmanager/git/git_manager.py
+++ b/django/engagementmanager/git/git_manager.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -43,10 +43,11 @@ from engagementmanager.service.logging_service import LoggingServiceFactory
logger = LoggingServiceFactory.get_logger()
+
class GitManager(object):
def getRepoAssociatedFilesForUser(self, eng_uuid):
logger.debug("Fetching the repo associated files for engagement " +
- eng_uuid)
+ eng_uuid)
vf = VF.objects.get(engagement__uuid=eng_uuid)
fileList = send_get_list_of_repo_files_event(vf)
return fileList
diff --git a/django/engagementmanager/http_client.py b/django/engagementmanager/http_client.py
index c4c8afd..1adb1e1 100644
--- a/django/engagementmanager/http_client.py
+++ b/django/engagementmanager/http_client.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/engagementmanager/mail.py b/django/engagementmanager/mail.py
index 10279b9..75e7300 100644
--- a/django/engagementmanager/mail.py
+++ b/django/engagementmanager/mail.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -47,7 +47,8 @@ ice_admin_mail_from = settings.CONTACT_FROM_ADDRESS
logger = LoggingServiceFactory.get_logger()
-def sendMail(email, data, mail_body_template, mail_subject_template, mail_from=ice_admin_mail_from):
+def sendMail(email, data, mail_body_template, mail_subject_template,
+ mail_from=ice_admin_mail_from):
logger.debug("about to send mail to " + email)
if data is None:
data = {}
@@ -55,7 +56,8 @@ def sendMail(email, data, mail_body_template, mail_subject_template, mail_from=i
html_msg = mail_body_template.render(context=data)
mail_subject = mail_subject_template.render(context=data)
# send mail with template
- send_mail(mail_subject, '', "D2 ICE Team <" + mail_from + ">", [email], fail_silently=False, html_message=html_msg)
+ send_mail(mail_subject, '', "D2 ICE Team <" + mail_from + ">",
+ [email], fail_silently=False, html_message=html_msg)
logger.debug("Looks like email delivery to " + email + " has succeeded")
@@ -64,8 +66,11 @@ def sendBulkMail(datatuple):
try:
num_sent = send_mass_mail(datatuple)
- logger.debug("Looks like email delivery has succeeded. Number of sent mails is " + str(num_sent))
+ logger.debug(
+ "Looks like email delivery has succeeded. Number of sent\
+ mails is " + str(num_sent))
return num_sent
- except Exception as e: # Dont remove try-except since it is invoked from Notification Bot
+ # Dont remove try-except since it is invoked from Notification Bot
+ except Exception as e:
logger.error("Email delivery has failed. Error is: " + str(e))
raise e
diff --git a/django/engagementmanager/management/__init__.py b/django/engagementmanager/management/__init__.py
index 36beacd..16f81cb 100644
--- a/django/engagementmanager/management/__init__.py
+++ b/django/engagementmanager/management/__init__.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -36,4 +36,3 @@
# ============LICENSE_END============================================
#
# ECOMP is a trademark and service mark of AT&T Intellectual Property.
-
diff --git a/django/engagementmanager/management/commands/__init__.py b/django/engagementmanager/management/commands/__init__.py
index 1726c13..16f81cb 100644
--- a/django/engagementmanager/management/commands/__init__.py
+++ b/django/engagementmanager/management/commands/__init__.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/engagementmanager/management/commands/clean_gitlab_content.py b/django/engagementmanager/management/commands/clean_gitlab_content.py
index 5299367..f26e337 100644
--- a/django/engagementmanager/management/commands/clean_gitlab_content.py
+++ b/django/engagementmanager/management/commands/clean_gitlab_content.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -43,9 +43,11 @@ Will delete content from gitlab to create initial environment:
3.Users
This command uses gitlab client rest api to remove data.
-This command is part of clean_vvp_system command but can be used separately as well.
+This command is part of clean_vvp_system
+command but can be used separately as well.
-WARNING: It will delete almost everything, if you have necessary data DO NOT USE THIS COMMAND!
+WARNING: It will delete almost everything, if you have
+necessary data DO NOT USE THIS COMMAND!
"""
from django.conf import settings
from django.core.management.base import BaseCommand
@@ -69,7 +71,8 @@ class Command(BaseCommand):
for entity in entities:
entities_deleted = []
gitlab_entity_url = settings.GITLAB_URL + "api/v3/%s/" % entity
- r1 = requests.get(gitlab_entity_url, headers=headers, verify=False)
+ r1 = requests.get(gitlab_entity_url, headers=headers,
+ verify=False)
data = r1.json()
while len(data) > 1:
@@ -77,13 +80,14 @@ class Command(BaseCommand):
try:
if record['id'] not in entities_deleted \
and record['name'] != 'Administrator':
- r2 = requests.delete(gitlab_entity_url +
- str(record['id']),
- headers=headers, verify=False)
- logger.info("Entity '%s' with id %s Will be deleted"
- " in a bit (type: %s)" % (
- record['name'],
- record['id'], entity,))
+ requests.delete(gitlab_entity_url +
+ str(record['id']),
+ headers=headers,
+ verify=False)
+ logger.info(
+ "Entity '%s' with id %s Will be deleted"
+ " in a bit (type: %s)" %
+ (record['name'], record['id'], entity,))
entities_deleted.append(record['id'])
except Exception as e:
diff --git a/django/engagementmanager/management/commands/clean_jenkins_jobs.py b/django/engagementmanager/management/commands/clean_jenkins_jobs.py
index c19f28d..b8f60c2 100644
--- a/django/engagementmanager/management/commands/clean_jenkins_jobs.py
+++ b/django/engagementmanager/management/commands/clean_jenkins_jobs.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -40,9 +40,11 @@
Will delete content(jobs) from jenkins to create initial environment.
This command uses jenkins_client api to remove data.
-This command is part of clean_vvp_system command but can be used separately as well.
+This command is part of clean_vvp_system command
+but can be used separately as well.
-WARNING: It will delete almost everything, if you have necessary data DO NOT USE THIS COMMAND!
+WARNING: It will delete almost everything, if you
+have necessary data DO NOT USE THIS COMMAND!
"""
from validationmanager.utils.clients import get_jenkins_client
from django.core.management.base import BaseCommand
@@ -63,7 +65,8 @@ class Command(BaseCommand):
for job_name in job_names:
jenkins_client.delete_job(job_name)
- logger.info("Jenkins job '%s' deleted successfully." % job_name)
+ logger.info(
+ "Jenkins job '%s' deleted successfully." % job_name)
except Exception as e:
logger.error("Some problem occurred while trying "
"cleaning Jenkins...", e)
diff --git a/django/engagementmanager/management/commands/clean_vvp_db.py b/django/engagementmanager/management/commands/clean_vvp_db.py
index 931f684..d91bf18 100644
--- a/django/engagementmanager/management/commands/clean_vvp_db.py
+++ b/django/engagementmanager/management/commands/clean_vvp_db.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -37,16 +37,20 @@
#
# ECOMP is a trademark and service mark of AT&T Intellectual Property.
""" clean_vvp_db
-Will delete content from database (almost all entities) to create initial environment.
+Will delete content from database (almost all entities)
+to create initial environment.
This command uses django orm to remove data.
-This command is part of clean_vvp_system command but can be used separately as well.
+This command is part of clean_vvp_system command
+but can be used separately as well.
-WARNING: It will delete almost everything, if you have necessary data DO NOT USE THIS COMMAND!
+WARNING: It will delete almost everything, if you
+have necessary data DO NOT USE THIS COMMAND!
"""
from django.core.management.base import BaseCommand
from engagementmanager import models
-from engagementmanager.management.commands.initial_populate_db import admin_dummy_users, admin_ro_dummy_users, \
+from engagementmanager.management.commands.initial_populate_db \
+ import admin_dummy_users, admin_ro_dummy_users, \
dummy_users, el_dummy_users
from engagementmanager.service.logging_service import LoggingServiceFactory
from engagementmanager.utils.constants import Constants
@@ -57,12 +61,14 @@ logger = LoggingServiceFactory.get_logger()
class Command(BaseCommand):
def handle(self, *args, **options):
logger.info("***************************************")
- logger.info(">>%s db is about to be cleaned up!" % Constants.program_name)
+ logger.info(">>%s db is about to be cleaned up!" %
+ Constants.program_name)
logger.info("***************************************")
excluded_emails = [dummy_users[0][1], dummy_users[1][1],
el_dummy_users[0][1], el_dummy_users[1][1],
- admin_dummy_users[0][1], admin_ro_dummy_users[0][1], ]
+ admin_dummy_users[0][1],
+ admin_ro_dummy_users[0][1], ]
try:
models.EngagementStatus.objects.all().delete()
@@ -83,7 +89,9 @@ class Command(BaseCommand):
models.Engagement.objects.all().delete()
models.IceUserProfile.objects.exclude(email__in=excluded_emails)\
.delete()
- models.CustomUser.objects.exclude(user_ptr_id__in=models.IceUserProfile.objects.all().values('id')).delete()
+ models.CustomUser.objects.exclude(
+ user_ptr_id__in=models.IceUserProfile.objects.
+ all().values('id')).delete()
models.DeploymentTarget.objects.all().delete()
models.DeploymentTargetSite.objects.all().delete()
diff --git a/django/engagementmanager/management/commands/clean_vvp_system.py b/django/engagementmanager/management/commands/clean_vvp_system.py
index a86f770..04f9cb1 100644
--- a/django/engagementmanager/management/commands/clean_vvp_system.py
+++ b/django/engagementmanager/management/commands/clean_vvp_system.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -42,10 +42,12 @@ Will clean all program data:
2. Deletes all data stored in database.
3. Deletes all jobs stored in jenkins.
-It's recommended to clean the vvp system if you desire in a fresh copy of the vvp program
+It's recommended to clean the vvp system if
+you desire in a fresh copy of the vvp program
without installing it all over again.
-WARNING: It will delete almost everything, if you have necessary data DO NOT USE THIS COMMAND!
+WARNING: It will delete almost everything,
+if you have necessary data DO NOT USE THIS COMMAND!
"""
from django.core.management.base import BaseCommand
from engagementmanager.management.commands import clean_gitlab_content
@@ -61,7 +63,8 @@ logger = LoggingServiceFactory.get_logger()
class Command(BaseCommand):
def handle(self, *args, **options):
logger.info("***************************************")
- logger.info("%s system is about to be cleaned up!" % Constants.program_name)
+ logger.info("%s system is about to be cleaned up!" %
+ Constants.program_name)
logger.info("***************************************")
try:
@@ -80,14 +83,14 @@ class Command(BaseCommand):
clean_vvp_db_command = clean_vvp_db.Command()
clean_vvp_db_command.handle(args, options)
except Exception as e:
- logger.error("There was a problem cleaning %s db" % Constants.program_name, e)
-
+ logger.error("There was a problem cleaning %s db" %
+ Constants.program_name, e)
try:
initial_populate_db_command = initial_populate_db.Command()
initial_populate_db_command.handle(args, options)
except Exception as e:
- logger.error("There was a problem populate %s db after cleaning" % Constants.program_name, e)
-
+ logger.error("There was a problem populate %s db \
+ after cleaning" % Constants.program_name, e)
logger.info("***************************************")
logger.info("Done!")
logger.info("***************************************")
diff --git a/django/engagementmanager/management/commands/initial_populate_db.py b/django/engagementmanager/management/commands/initial_populate_db.py
index a0ca177..571c7e6 100644
--- a/django/engagementmanager/management/commands/initial_populate_db.py
+++ b/django/engagementmanager/management/commands/initial_populate_db.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -39,7 +39,8 @@
""" intial_populate_db
Will create initial content to use this system.
-This command is creating users, templates, companies, deployment targets, sites and much more.
+This command is creating users, templates, companies,
+deployment targets, sites and much more.
Will run at the state of a clean system so it won't cause data collisions.
WARNING: Do not run while there is data at the system.
@@ -49,7 +50,8 @@ import random
from django.conf import settings
from django.core.management.base import BaseCommand
from django.utils import timezone
-from engagementmanager.models import Role, Vendor, IceUserProfile, DeploymentTarget, \
+from engagementmanager.models import Role, Vendor, \
+ IceUserProfile, DeploymentTarget, \
DeploymentTargetSite, Checklist, ChecklistDecision, ChecklistLineItem, \
ChecklistTemplate, ChecklistSection, ECOMPRelease, Engagement, \
CustomUser
@@ -68,7 +70,8 @@ logger = LoggingServiceFactory.get_logger()
class Command(BaseCommand):
def handle(self, *args, **options):
- if (settings.ENVIRONMENT == "local" or settings.ENVIRONMENT == "development"):
+ if (settings.ENVIRONMENT == "local" or
+ settings.ENVIRONMENT == "development"):
execute_bootstrap_actions()
@@ -92,19 +95,26 @@ companies_not_public = [
'Mitel',
]
-admin_dummy_users = [['admin bogus user', Constants.service_provider_admin_mail, '+1-23-456-78901']]
+admin_dummy_users = [['admin bogus user',
+ Constants.service_provider_admin_mail,
+ '+1-23-456-78901']]
admin_ro_dummy_users = [
- ['ro admin bogus user', Constants.service_provider_admin_ro_mail, '+1-23-456-78901']]
+ ['ro admin bogus user', Constants.service_provider_admin_ro_mail,
+ '+1-23-456-78901']]
dummy_users = [
- ['Bugs Bunny', 'bb@' + Constants.service_provider_mail_domain[0], '+1-404-986-9624'],
- ['CI Standard 1', 'ci_standard_1@' + Constants.service_provider_mail_domain[0], '+1-404-986-9624'],
+ ['Bugs Bunny', 'bb@' + Constants.service_provider_mail_domain[0],
+ '+1-404-986-9624'],
+ ['CI Standard 1', 'ci_standard_1@' +
+ Constants.service_provider_mail_domain[0], '+1-404-986-9624'],
]
el_dummy_users = [
- ['Donald Duck', 'dd1122@' + Constants.service_provider_mail_domain[0], '+1-404-986-9624'],
- ['Homer Simpson', 'hs0007@' + Constants.service_provider_mail_domain[0], '+1-425-281-3547']
+ ['Donald Duck', 'dd1122@' +
+ Constants.service_provider_mail_domain[0], '+1-404-986-9624'],
+ ['Homer Simpson', 'hs0007@' +
+ Constants.service_provider_mail_domain[0], '+1-425-281-3547']
]
checklist_templates = [
@@ -123,14 +133,22 @@ checklist_templates = [
'name': 'Filenames',
'weight': 1,
'description': 'description',
- 'validation_instructions': 'Here are some useful tips for how to validate this item in the most awesome way:<br><br><ul><li>Here is my awesome tip 1</li><li>Here is my awesome tip 2</li><li>Here is my awesome tip 3</li></ul>',
+ 'validation_instructions': 'Here are some \
+ useful tips for how to validate this item in \
+ the most awesome way:<br><br><ul><li>Here is \
+ my awesome tip 1</li><li>Here is my awesome tip \
+ 2</li><li>Here is my awesome tip 3</li></ul>',
'line_type': 'manual',
},
{
'name': 'Valid YAML and HEAT',
'weight': 1,
'description': 'Description',
- 'validation_instructions': 'Here are some useful tips for how to validate this item in the most awesome way:<br><br><ul><li>Here is my awesome tip 1</li><li>Here is my awesome tip 2</li><li>Here is my awesome tip 3</li></ul>',
+ 'validation_instructions': 'Here are some useful \
+ tips for how to validate this item in the most \
+ awesome way:<br><br><ul><li>Here is my awesome \
+ tip 1</li><li>Here is my awesome tip 2</li><li>\
+ Here is my awesome tip 3</li></ul>',
'line_type': 'manual',
}
]
@@ -145,28 +163,44 @@ checklist_templates = [
'name': 'Parameters',
'weight': 1,
'description': 'description',
- 'validation_instructions': 'Here are some useful tips for how to validate this item in the most awesome way:<br><br><ul><li>Here is my awesome tip 1</li><li>Here is my awesome tip 2</li><li>Here is my awesome tip 3</li></ul>',
+ 'validation_instructions': 'Here are some useful \
+ tips for how to validate this item in the most \
+ awesome way:<br><br><ul><li>Here is my awesome \
+ tip 1</li><li>Here is my awesome tip 2</li><li>\
+ Here is my awesome tip 3</li></ul>',
'line_type': 'manual',
},
{
'name': 'Resources',
'weight': 1,
'description': 'Description',
- 'validation_instructions': 'Here are some useful tips for how to validate this item in the most awesome way:<br><br><ul><li>Here is my awesome tip 1</li><li>Here is my awesome tip 2</li><li>Here is my awesome tip 3</li></ul>',
+ 'validation_instructions': 'Here are some useful \
+ tips for how to validate this item in the most \
+ awesome way:<br><br><ul><li>Here is my awesome \
+ tip 1</li><li>Here is my awesome tip 2</li><li>\
+ Here is my awesome tip 3</li></ul>',
'line_type': 'manual',
},
{
'name': 'Unique Names for Resources',
'weight': 1,
'description': 'Description',
- 'validation_instructions': 'Here are some useful tips for how to validate this item in the most awesome way:<br><br><ul><li>Here is my awesome tip 1</li><li>Here is my awesome tip 2</li><li>Here is my awesome tip 3</li></ul>',
+ 'validation_instructions': 'Here are some useful \
+ tips for how to validate this item in the most \
+ awesome way:<br><br><ul><li>Here is my awesome \
+ tip 1</li><li>Here is my awesome tip 2</li><li>\
+ Here is my awesome tip 3</li></ul>',
'line_type': 'manual',
},
{
'name': 'Outputs',
'weight': 1,
'description': 'Description',
- 'validation_instructions': 'Here are some useful tips for how to validate this item in the most awesome way:<br><br><ul><li>Here is my awesome tip 1</li><li>Here is my awesome tip 2</li><li>Here is my awesome tip 3</li></ul>',
+ 'validation_instructions': 'Here are some useful \
+ tips for how to validate this item in the most \
+ awesome way:<br><br><ul><li>Here is my awesome \
+ tip 1</li><li>Here is my awesome tip 2</li><li>\
+ Here is my awesome tip 3</li></ul>',
'line_type': 'manual',
}
]
@@ -182,77 +216,121 @@ checklist_templates = [
'name': 'Name, Flavor, and Image Assignments',
'weight': 1,
'description': 'description',
- 'validation_instructions': 'Here are some useful tips for how to validate this item in the most awesome way:<br><br><ul><li>Here is my awesome tip 1</li><li>Here is my awesome tip 2</li><li>Here is my awesome tip 3</li></ul>',
+ 'validation_instructions': 'Here are some useful \
+ tips for how to validate this item in the most \
+ awesome way:<br><br><ul><li>Here is my awesome \
+ tip 1</li><li>Here is my awesome tip 2</li><li>\
+ Here is my awesome tip 3</li></ul>',
'line_type': 'manual',
},
{
'name': 'Availability Zones',
'weight': 1,
'description': 'Description',
- 'validation_instructions': 'Here are some useful tips for how to validate this item in the most awesome way:<br><br><ul><li>Here is my awesome tip 1</li><li>Here is my awesome tip 2</li><li>Here is my awesome tip 3</li></ul>',
+ 'validation_instructions': 'Here are some useful \
+ tips for how to validate this item in the most \
+ awesome way:<br><br><ul><li>Here is my awesome \
+ tip 1</li><li>Here is my awesome tip 2</li><li>\
+ Here is my awesome tip 3</li></ul>',
'line_type': 'manual',
},
{
'name': 'Required Metadata',
'weight': 1,
'description': 'Description',
- 'validation_instructions': 'Here are some useful tips for how to validate this item in the most awesome way:<br><br><ul><li>Here is my awesome tip 1</li><li>Here is my awesome tip 2</li><li>Here is my awesome tip 3</li></ul>',
+ 'validation_instructions': 'Here are some useful \
+ tips for how to validate this item in the most \
+ awesome way:<br><br><ul><li>Here is my awesome \
+ tip 1</li><li>Here is my awesome tip 2</li><li>\
+ Here is my awesome tip 3</li></ul>',
'line_type': 'manual',
},
{
'name': 'Optional Metadata',
'weight': 1,
'description': 'Description',
- 'validation_instructions': 'Here are some useful tips for how to validate this item in the most awesome way:<br><br><ul><li>Here is my awesome tip 1</li><li>Here is my awesome tip 2</li><li>Here is my awesome tip 3</li></ul>',
+ 'validation_instructions': 'Here are some useful \
+ tips for how to validate this item in the most \
+ awesome way:<br><br><ul><li>Here is my awesome \
+ tip 1</li><li>Here is my awesome tip 2</li><li>\
+ Here is my awesome tip 3</li></ul>',
'line_type': 'manual',
},
{
'name': 'Volumes',
'weight': 1,
'description': 'Description',
- 'validation_instructions': 'Here are some useful tips for how to validate this item in the most awesome way:<br><br><ul><li>Here is my awesome tip 1</li><li>Here is my awesome tip 2</li><li>Here is my awesome tip 3</li></ul>',
+ 'validation_instructions': 'Here are some useful \
+ tips for how to validate this item in the most \
+ awesome way:<br><br><ul><li>Here is my awesome \
+ tip 1</li><li>Here is my awesome tip 2</li><li>\
+ Here is my awesome tip 3</li></ul>',
'line_type': 'manual',
},
{
'name': 'Keys and Keypairs',
'weight': 1,
'description': 'Description',
- 'validation_instructions': 'Here are some useful tips for how to validate this item in the most awesome way:<br><br><ul><li>Here is my awesome tip 1</li><li>Here is my awesome tip 2</li><li>Here is my awesome tip 3</li></ul>',
+ 'validation_instructions': 'Here are some useful \
+ tips for how to validate this item in the most \
+ awesome way:<br><br><ul><li>Here is my awesome \
+ tip 1</li><li>Here is my awesome tip 2</li><li>\
+ Here is my awesome tip 3</li></ul>',
'line_type': 'manual',
},
{
'name': 'Networks',
'weight': 1,
'description': 'Description',
- 'validation_instructions': 'Here are some useful tips for how to validate this item in the most awesome way:<br><br><ul><li>Here is my awesome tip 1</li><li>Here is my awesome tip 2</li><li>Here is my awesome tip 3</li></ul>',
+ 'validation_instructions': 'Here are some useful \
+ tips for how to validate this item in the most \
+ awesome way:<br><br><ul><li>Here is my awesome \
+ tip 1</li><li>Here is my awesome tip 2</li><li>\
+ Here is my awesome tip 3</li></ul>',
'line_type': 'manual',
},
{
'name': 'Subnet',
'weight': 1,
'description': 'Description',
- 'validation_instructions': 'Here are some useful tips for how to validate this item in the most awesome way:<br><br><ul><li>Here is my awesome tip 1</li><li>Here is my awesome tip 2</li><li>Here is my awesome tip 3</li></ul>',
+ 'validation_instructions': 'Here are some useful \
+ tips for how to validate this item in the most \
+ awesome way:<br><br><ul><li>Here is my awesome \
+ tip 1</li><li>Here is my awesome tip 2</li><li>\
+ Here is my awesome tip 3</li></ul>',
'line_type': 'manual',
},
{
'name': 'Fixed IPs',
'weight': 1,
'description': 'Description',
- 'validation_instructions': 'Here are some useful tips for how to validate this item in the most awesome way:<br><br><ul><li>Here is my awesome tip 1</li><li>Here is my awesome tip 2</li><li>Here is my awesome tip 3</li></ul>',
+ 'validation_instructions': 'Here are some useful \
+ tips for how to validate this item in the most \
+ awesome way:<br><br><ul><li>Here is my awesome tip 1\
+ </li><li>Here is my awesome tip 2</li><li>\
+ Here is my awesome tip 3</li></ul>',
'line_type': 'manual',
},
{
'name': 'Allowed Address Pairs',
'weight': 1,
'description': 'Description',
- 'validation_instructions': 'Here are some useful tips for how to validate this item in the most awesome way:<br><br><ul><li>Here is my awesome tip 1</li><li>Here is my awesome tip 2</li><li>Here is my awesome tip 3</li></ul>',
+ 'validation_instructions': 'Here are some useful \
+ tips for how to validate this item in the most \
+ awesome way:<br><br><ul><li>Here is my awesome \
+ tip 1</li><li>Here is my awesome tip 2</li><li>\
+ Here is my awesome tip 3</li></ul>',
'line_type': 'manual',
},
{
'name': 'Ports',
'weight': 1,
'description': 'Description',
- 'validation_instructions': 'Here are some useful tips for how to validate this item in the most awesome way:<br><br><ul><li>Here is my awesome tip 1</li><li>Here is my awesome tip 2</li><li>Here is my awesome tip 3</li></ul>',
+ 'validation_instructions': 'Here are some useful \
+ tips for how to validate this item in the most \
+ awesome way:<br><br><ul><li>Here is my awesome \
+ tip 1</li><li>Here is my awesome tip 2</li><li>\
+ Here is my awesome tip 3</li></ul>',
'line_type': 'manual',
}
]
@@ -268,28 +346,44 @@ checklist_templates = [
'name': 'HEAT Files Support (get_file)',
'weight': 1,
'description': 'description',
- 'validation_instructions': 'Here are some useful tips for how to validate this item in the most awesome way:<br><br><ul><li>Here is my awesome tip 1</li><li>Here is my awesome tip 2</li><li>Here is my awesome tip 3</li></ul>',
+ 'validation_instructions': 'Here are some useful \
+ tips for how to validate this item in the most \
+ awesome way:<br><br><ul><li>Here is my awesome \
+ tip 1</li><li>Here is my awesome tip 2</li><li>\
+ Here is my awesome tip 3</li></ul>',
'line_type': 'manual',
},
{
'name': 'HTTP-based references',
'weight': 1,
'description': 'Description',
- 'validation_instructions': 'Here are some useful tips for how to validate this item in the most awesome way:<br><br><ul><li>Here is my awesome tip 1</li><li>Here is my awesome tip 2</li><li>Here is my awesome tip 3</li></ul>',
+ 'validation_instructions': 'Here are some useful \
+ tips for how to validate this item in the most \
+ awesome way:<br><br><ul><li>Here is my awesome \
+ tip 1</li><li>Here is my awesome tip 2</li><li>\
+ Here is my awesome tip 3</li></ul>',
'line_type': 'manual',
},
{
'name': 'Anti-Affinity and Affinity Rules',
'weight': 1,
'description': 'Description',
- 'validation_instructions': 'Here are some useful tips for how to validate this item in the most awesome way:<br><br><ul><li>Here is my awesome tip 1</li><li>Here is my awesome tip 2</li><li>Here is my awesome tip 3</li></ul>',
+ 'validation_instructions': 'Here are some useful \
+ tips for how to validate this item in the most \
+ awesome way:<br><br><ul><li>Here is my awesome \
+ tip 1</li><li>Here is my awesome tip 2</li><li>\
+ Here is my awesome tip 3</li></ul>',
'line_type': 'manual',
},
{
'name': 'Resource Data Synchronization',
'weight': 1,
'description': 'Description',
- 'validation_instructions': 'Here are some useful tips for how to validate this item in the most awesome way:<br><br><ul><li>Here is my awesome tip 1</li><li>Here is my awesome tip 2</li><li>Here is my awesome tip 3</li></ul>',
+ 'validation_instructions': 'Here are some useful \
+ tips for how to validate this item in the most \
+ awesome way:<br><br><ul><li>Here is my awesome \
+ tip 1</li><li>Here is my awesome tip 2</li><li>\
+ Here is my awesome tip 3</li></ul>',
'line_type': 'manual',
}
]
@@ -312,14 +406,22 @@ checklist_templates = [
'name': 'Image Source',
'weight': 1,
'description': 'description',
- 'validation_instructions': 'Here are some useful tips for how to validate this item in the most awesome way:<br><br><ul><li>Here is my awesome tip 1</li><li>Here is my awesome tip 2</li><li>Here is my awesome tip 3</li></ul>',
+ 'validation_instructions': 'Here are some useful \
+ tips for how to validate this item in the most \
+ awesome way:<br><br><ul><li>Here is my awesome \
+ tip 1</li><li>Here is my awesome tip 2</li><li>\
+ Here is my awesome tip 3</li></ul>',
'line_type': 'manual',
},
{
'name': 'Vendor Provided Image',
'weight': 1,
'description': 'Description',
- 'validation_instructions': 'Here are some useful tips for how to validate this item in the most awesome way:<br><br><ul><li>Here is my awesome tip 1</li><li>Here is my awesome tip 2</li><li>Here is my awesome tip 3</li></ul>',
+ 'validation_instructions': 'Here are some useful \
+ tips for how to validate this item in the most \
+ awesome way:<br><br><ul><li>Here is my awesome \
+ tip 1</li><li>Here is my awesome tip 2</li><li>\
+ Here is my awesome tip 3</li></ul>',
'line_type': 'manual',
}
]
@@ -334,7 +436,11 @@ checklist_templates = [
'name': 'Clam AV Scan',
'weight': 1,
'description': 'description',
- 'validation_instructions': 'Here are some useful tips for how to validate this item in the most awesome way:<br><br><ul><li>Here is my awesome tip 1</li><li>Here is my awesome tip 2</li><li>Here is my awesome tip 3</li></ul>',
+ 'validation_instructions': 'Here are some useful \
+ tips for how to validate this item in the most \
+ awesome way:<br><br><ul><li>Here is my awesome \
+ tip 1</li><li>Here is my awesome tip 2</li><li>\
+ Here is my awesome tip 3</li></ul>',
'line_type': 'manual',
},
]
@@ -356,14 +462,22 @@ checklist_templates = [
'name': 'Validated Heat Template(s)',
'weight': 1,
'description': 'description',
- 'validation_instructions': 'Here are some useful tips for how to validate this item in the most awesome way:<br><br><ul><li>Here is my awesome tip 1</li><li>Here is my awesome tip 2</li><li>Here is my awesome tip 3</li></ul>',
+ 'validation_instructions': 'Here are some useful \
+ tips for how to validate this item in the most \
+ awesome way:<br><br><ul><li>Here is my awesome \
+ tip 1</li><li>Here is my awesome tip 2</li><li>\
+ Here is my awesome tip 3</li></ul>',
'line_type': 'manual',
},
{
'name': 'Validated Glance Image(s)',
'weight': 1,
'description': 'Description',
- 'validation_instructions': 'Here are some useful tips for how to validate this item in the most awesome way:<br><br><ul><li>Here is my awesome tip 1</li><li>Here is my awesome tip 2</li><li>Here is my awesome tip 3</li></ul>',
+ 'validation_instructions': 'Here are some useful \
+ tips for how to validate this item in the most \
+ awesome way:<br><br><ul><li>Here is my awesome \
+ tip 1</li><li>Here is my awesome tip 2</li><li>\
+ Here is my awesome tip 3</li></ul>',
'line_type': 'manual',
}
]
@@ -378,14 +492,22 @@ checklist_templates = [
'name': 'Create the HEAT Stack',
'weight': 1,
'description': 'description',
- 'validation_instructions': 'Here are some useful tips for how to validate this item in the most awesome way:<br><br><ul><li>Here is my awesome tip 1</li><li>Here is my awesome tip 2</li><li>Here is my awesome tip 3</li></ul>',
+ 'validation_instructions': 'Here are some useful \
+ tips for how to validate this item in the most \
+ awesome way:<br><br><ul><li>Here is my awesome \
+ tip 1</li><li>Here is my awesome tip 2</li><li>\
+ Here is my awesome tip 3</li></ul>',
'line_type': 'manual',
},
{
'name': 'Delete the HEAT Stack',
'weight': 1,
'description': 'Description',
- 'validation_instructions': 'Here are some useful tips for how to validate this item in the most awesome way:<br><br><ul><li>Here is my awesome tip 1</li><li>Here is my awesome tip 2</li><li>Here is my awesome tip 3</li></ul>',
+ 'validation_instructions': 'Here are some useful \
+ tips for how to validate this item in the most \
+ awesome way:<br><br><ul><li>Here is my awesome \
+ tip 1</li><li>Here is my awesome tip 2</li><li>\
+ Here is my awesome tip 3</li></ul>',
'line_type': 'manual',
}
]
@@ -407,21 +529,33 @@ checklist_templates = [
'name': 'Validated Heat Template(s)',
'weight': 1,
'description': 'description',
- 'validation_instructions': 'Here are some useful tips for how to validate this item in the most awesome way:<br><br><ul><li>Here is my awesome tip 1</li><li>Here is my awesome tip 2</li><li>Here is my awesome tip 3</li></ul>',
+ 'validation_instructions': 'Here are some useful \
+ tips for how to validate this item in the most \
+ awesome way:<br><br><ul><li>Here is my awesome \
+ tip 1</li><li>Here is my awesome tip 2</li><li>\
+ Here is my awesome tip 3</li></ul>',
'line_type': 'manual',
},
{
'name': 'Validated Glance Image(s)',
'weight': 1,
'description': 'Description',
- 'validation_instructions': 'Here are some useful tips for how to validate this item in the most awesome way:<br><br><ul><li>Here is my awesome tip 1</li><li>Here is my awesome tip 2</li><li>Here is my awesome tip 3</li></ul>',
+ 'validation_instructions': 'Here are some useful \
+ tips for how to validate this item in the most \
+ awesome way:<br><br><ul><li>Here is my awesome tip\
+ 1</li><li>Here is my awesome tip 2</li><li>\
+ Here is my awesome tip 3</li></ul>',
'line_type': 'manual',
},
{
'name': 'Successful Manual Instantiation',
'weight': 1,
'description': 'Description',
- 'validation_instructions': 'Here are some useful tips for how to validate this item in the most awesome way:<br><br><ul><li>Here is my awesome tip 1</li><li>Here is my awesome tip 2</li><li>Here is my awesome tip 3</li></ul>',
+ 'validation_instructions': 'Here are some useful \
+ tips for how to validate this item in the most \
+ awesome way:<br><br><ul><li>Here is my awesome \
+ tip 1</li><li>Here is my awesome tip 2</li><li>\
+ Here is my awesome tip 3</li></ul>',
'line_type': 'manual',
}
]
@@ -436,7 +570,11 @@ checklist_templates = [
'name': 'Create the VNF',
'weight': 1,
'description': 'description',
- 'validation_instructions': 'Here are some useful tips for how to validate this item in the most awesome way:<br><br><ul><li>Here is my awesome tip 1</li><li>Here is my awesome tip 2</li><li>Here is my awesome tip 3</li></ul>',
+ 'validation_instructions': 'Here are some useful \
+ tips for how to validate this item in the most \
+ awesome way:<br><br><ul><li>Here is my awesome \
+ tip 1</li><li>Here is my awesome tip 2</li><li>\
+ Here is my awesome tip 3</li></ul>',
'line_type': 'manual',
},
]
@@ -453,7 +591,7 @@ checklist_templates = [
# for vt in vts:
# for li in vt.line_items.all():
# print("['" + vt.name + "', '" + li.name + "'],")
-validation_tests = [
+heat_validation_tests = [
['test_all_nested_templates_provided', 'Filenames'],
['test_all_referenced_resources_exists', 'Resources'],
['test_allowed_address_pairs_format', 'Allowed Address Pairs'],
@@ -468,9 +606,11 @@ validation_tests = [
['test_default_values', 'Parameters'],
['test_env_and_yaml_same_name', 'Filenames'],
['test_env_files_provided', 'Filenames'],
- ['test_environment_file_contains_required_sections', 'Valid YAML and HEAT'],
+ ['test_environment_file_contains_required_sections',
+ 'Valid YAML and HEAT'],
['test_environment_file_extension', 'Filenames'],
- ['test_environment_file_sections_have_the_right_format', 'Valid YAML and HEAT'],
+ ['test_environment_file_sections_have_the_right_format',
+ 'Valid YAML and HEAT'],
['test_environment_structure', 'Valid YAML and HEAT'],
['test_fixed_ips_format', 'Fixed IPs'],
['test_fixed_ips_format', 'Ports'],
@@ -478,20 +618,25 @@ validation_tests = [
['test_fixed_ips_format_use_get_parm', 'Ports'],
['test_fixed_ips_include_vm_type_network_role', 'Ports'],
['test_fixed_ips_include_vm_type_network_role', 'Ports'],
- ['test_get_file_only_reference_local_files', 'HEAT Files Support (get_file)'],
+ ['test_get_file_only_reference_local_files',
+ 'HEAT Files Support (get_file)'],
['test_heat_pairs_provided', 'Filenames'],
['test_heat_template_file_extension', 'Filenames'],
- ['test_heat_template_parameters_contain_required_fields', 'Valid YAML and HEAT'],
+ ['test_heat_template_parameters_contain_required_fields',
+ 'Valid YAML and HEAT'],
['test_heat_template_structure', 'Valid YAML and HEAT'],
- ['test_heat_template_structure_contains_required_sections', 'Valid YAML and HEAT'],
- ['test_heat_template_structure_sections_have_the_right_format', 'Valid YAML and HEAT'],
+ ['test_heat_template_structure_contains_required_sections',
+ 'Valid YAML and HEAT'],
+ ['test_heat_template_structure_sections_have_the_right_format',
+ 'Valid YAML and HEAT'],
['test_heat_templates_provided', 'Filenames'],
['test_network_format', 'Networks'],
['test_network_format', 'Ports'],
['test_network_format_use_get_param_or_get_resource', 'Networks'],
['test_network_format_use_get_param_or_get_resource', 'Ports'],
['test_no_unused_parameters_between_env_and_templates', 'Parameters'],
- ['test_nova_servers_correct_parameter_types', 'Name, Flavor, and Image Assignments'],
+ ['test_nova_servers_correct_parameter_types',
+ 'Name, Flavor, and Image Assignments'],
['test_nova_servers_valid_resource_ids', 'Resources'],
['test_numeric_parameter', 'Parameters'],
['test_parameter_valid_keys', 'Valid YAML and HEAT'],
@@ -502,8 +647,10 @@ validation_tests = [
['test_referenced_and_defined_parameters_match', 'Parameters'],
['test_required_parameters_no_constraints', 'Required Metadata'],
['test_required_parameters_provided_in_env_file', 'Required Metadata'],
- ['test_required_parameters_provided_in_heat_template', 'Required Metadata'],
- ['test_required_parameters_provided_in_heat_template', 'Required Metadata'],
+ ['test_required_parameters_provided_in_heat_template',
+ 'Required Metadata'],
+ ['test_required_parameters_provided_in_heat_template',
+ 'Required Metadata'],
['test_servers_have_optional_metadata', 'Optional Metadata'],
['test_servers_have_required_metadata', 'Required Metadata'],
['test_servers_metadata_use_get_param', 'Required Metadata'],
@@ -512,14 +659,18 @@ validation_tests = [
['test_subnet_format_use_get_param_or_get_resource', 'Subnet'],
['test_subnet_format_use_get_param_or_get_resource', 'Ports'],
['test_unique_name_resources', 'Unique Names for Resources'],
- ['test_unique_name_str_replace_use_req_params', 'Unique Names for Resources'],
- ['test_unique_name_str_replace_use_req_params_in_tmpl', 'Unique Names for Resources'],
+ ['test_unique_name_str_replace_use_req_params',
+ 'Unique Names for Resources'],
+ ['test_unique_name_str_replace_use_req_params_in_tmpl',
+ 'Unique Names for Resources'],
['test_unique_resources_across_all_yaml_files', 'Resources'],
['test_unique_resources_across_yaml_file', 'Unique Names for Resources'],
['test_unique_resources_across_yaml_file', 'Resources'],
['test_valid_nesting', 'Filenames'],
- ['test_vm_type_assignments_on_nova_servers_only_use_get_param', 'Name, Flavor, and Image Assignments'],
- ['test_vm_type_consistent_on_nova_servers', 'Name, Flavor, and Image Assignments'],
+ ['test_vm_type_assignments_on_nova_servers_only_use_get_param',
+ 'Name, Flavor, and Image Assignments'],
+ ['test_vm_type_consistent_on_nova_servers',
+ 'Name, Flavor, and Image Assignments'],
['test_volume_format_outputs', 'Volumes'],
['test_volume_outputs_consumed', 'Volumes'],
['test_volume_resource_ids', 'Resources'],
@@ -529,6 +680,10 @@ validation_tests = [
['test_volume_templates_outputs_match_resources', 'Volumes'],
]
+glance_validation_tests = [
+ ['test_image_scan_complete', 'Clam AV Scan'],
+]
+
deployment_targets = [
['AIC', '2.5'],
['AIC', '3.0'],
@@ -624,7 +779,8 @@ def populate_checklist_automation_value():
for outerframe in outerframes:
if ('unittest' in str(outerframe)):
logger.error(
- "Avoiding setting checklists in automation to be review since this is a test run: " + logEncoding(outerframe))
+ "Avoiding setting checklists in automation to be \
+ review since this is a test run: " + logEncoding(outerframe))
return
checklists = Checklist.objects.filter(state='automation')
@@ -638,10 +794,10 @@ def populate_checklist_automation_value():
checklist.save()
# first = False
decisions = ChecklistDecision.objects.filter(checklist=checklist)
- first_decision = True
for decision in decisions:
decision = ChecklistDecision.objects.get(uuid=decision.uuid)
- line_item = ChecklistLineItem.objects.get(uuid=decision.line_item_id)
+ line_item = ChecklistLineItem.objects.get(
+ uuid=decision.line_item_id)
if line_item.line_type == 'auto':
rand_decision_value = bool(random.getrandbits(1))
if rand_decision_value:
@@ -654,44 +810,56 @@ def populate_checklist_automation_value():
def create_templates():
logger.info('Creating Checklist templates')
for template in checklist_templates:
- created_template, created = ChecklistTemplate.objects.get_or_create(name=template['name'],
- defaults={
- 'category': template['category'],
- 'version': template['version'],
- 'create_time': timezone.now()
- })
+ created_template, created = ChecklistTemplate.objects.get_or_create(
+ name=template['name'],
+ defaults={
+ 'category': template['category'],
+ 'version': template['version'],
+ 'create_time': timezone.now()
+ })
for section in template['sections']:
- created_section = ChecklistSection.objects.get_or_create(name=section['name'],
- template_id=created_template.uuid,
- defaults={
- 'weight': section['weight'],
- 'description': section['description'],
- 'validation_instructions': section['validation_instructions']
+ created_section = ChecklistSection.objects.get_or_create(
+ name=section['name'],
+ template_id=created_template.uuid,
+ defaults={
+ 'weight': section['weight'],
+ 'description': section['description'],
+ 'validation_instructions':
+ section['validation_instructions']
- })
+ })
created_section = ChecklistSection.objects.get(
name=section['name'], template_id=created_template.uuid)
for line_item in section['line_items']:
- created_line_item = ChecklistLineItem.objects.get_or_create(name=line_item['name'],
- section_id=created_section.uuid,
- template_id=created_template.uuid,
- defaults={
- 'weight': line_item['weight'],
- 'description': line_item['description'],
- 'validation_instructions': line_item['validation_instructions'],
- 'line_type': line_item['line_type'],
- 'section_id': created_section.uuid,
- })
+ ChecklistLineItem.objects.get_or_create(
+ name=line_item['name'],
+ section_id=created_section.uuid,
+ template_id=created_template.uuid,
+ defaults={
+ 'weight': line_item['weight'],
+ 'description': line_item['description'],
+ 'validation_instructions':
+ line_item['validation_instructions'],
+ 'line_type': line_item['line_type'],
+ 'section_id': created_section.uuid,
+ })
def create_validation_tests():
logger.info('Creating Validation Tests')
- template = ChecklistTemplate.objects.get(category='heat')
- for test_name, line_item_name in validation_tests:
- line_item = ChecklistLineItem.objects.get(name=line_item_name, template=template)
- if line_item:
- validation_test, status = ValidationTest.objects.get_or_create(name=test_name)
- validation_test.line_items.add(line_item)
+ validation_tests = {
+ 'heat': heat_validation_tests,
+ 'glance': glance_validation_tests,
+ }
+ for category in validation_tests:
+ template = ChecklistTemplate.objects.get(category=category)
+ for test_name, line_item_name in validation_tests[category]:
+ line_item = ChecklistLineItem.objects.get(
+ name=line_item_name, template=template)
+ if line_item:
+ validation_test, status = ValidationTest.objects.get_or_create(
+ name=test_name)
+ validation_test.line_items.add(line_item)
def create_roles():
@@ -724,11 +892,13 @@ def create_companies():
service_provider_company, created = Vendor.objects.get_or_create(
name=Constants.service_provider_company_name, public=True)
Constants.service_provider_company = service_provider_company
- logger.info('The company was found or created : ' + str(service_provider_company))
+ logger.info('The company was found or created : ' +
+ str(service_provider_company))
except Exception as e:
logger.error("bootstrap_actions - create_companies error:")
logger.error(e)
- logger.error('The company could not be found or created : ' + Constants.service_provider_company_name)
+ logger.error('The company could not be found or created : ' +
+ Constants.service_provider_company_name)
for company in companies_not_public:
try:
@@ -766,22 +936,30 @@ def create_companies():
def create_standard_users():
- service_provider_company = Vendor.objects.get(name=Constants.service_provider_company_name)
+ service_provider_company = Vendor.objects.get(
+ name=Constants.service_provider_company_name)
user_role = Role.objects.get(name="standard_user")
user_list = dummy_users
for user in user_list:
try:
- user_object, created = CustomUser.objects.get_or_create(username=user[1], defaults={
- 'is_active': True, 'email': user[1], 'activation_token': uuid4(), 'activation_token_create_time': timezone.now()})
+ user_object, created = CustomUser.objects.get_or_create(
+ username=user[1], defaults={
+ 'is_active': True, 'email': user[1],
+ 'activation_token': uuid4(),
+ 'activation_token_create_time': timezone.now()})
user_object.set_password('iceusers')
user_object.save()
data = createUserTemplate(
- service_provider_company, user[0], user_role, user[2], True, None, True, user_object)
- standard_user, profile_created = IceUserProfile.objects.update_or_create(
- email=user_object.email, defaults=data)
+ service_provider_company, user[0],
+ user_role, user[2], True, None,
+ True, user_object)
+ standard_user, profile_created = \
+ IceUserProfile.objects.update_or_create(
+ email=user_object.email, defaults=data)
logger.info(
- 'The Standard user was found or created: ' + str(standard_user.full_name))
+ 'The Standard user was found or created: ' +
+ str(standard_user.full_name))
except Exception as e:
logger.error("bootstrap_actions - create_el_users error:")
logger.error(e)
@@ -789,18 +967,23 @@ def create_standard_users():
def create_el_users():
- service_provider_company = Vendor.objects.get(name=Constants.service_provider_company_name)
+ service_provider_company = Vendor.objects.get(
+ name=Constants.service_provider_company_name)
el_role = Role.objects.get(name="el")
el_list = el_dummy_users
for user in el_list:
try:
- user_object, created = CustomUser.objects.get_or_create(username=user[1], defaults={
- 'is_active': True, 'email': user[1], 'activation_token': uuid4(), 'activation_token_create_time': timezone.now()})
+ user_object, created = CustomUser.objects.get_or_create(
+ username=user[1], defaults={
+ 'is_active': True, 'email': user[1],
+ 'activation_token': uuid4(),
+ 'activation_token_create_time': timezone.now()})
user_object.set_password('iceusers')
user_object.save()
data = createUserTemplate(
- service_provider_company, user[0], el_role, user[2], True, None, True, user_object)
+ service_provider_company, user[0], el_role,
+ user[2], True, None, True, user_object)
el_user, profile_created = IceUserProfile.objects.update_or_create(
email=user_object.email, defaults=data)
logger.info(
@@ -812,23 +995,29 @@ def create_el_users():
def create_admin_users():
- service_provider_company = Vendor.objects.get(name=Constants.service_provider_company_name)
+ service_provider_company = Vendor.objects.get(
+ name=Constants.service_provider_company_name)
admin_role = Role.objects.get(name=Roles.admin.name) # @UndefinedVariable
admin_list = admin_dummy_users
for user in admin_list:
try:
- user_object, created = CustomUser.objects.get_or_create(username=user[1], defaults={'is_active': True, 'email': user[
- 1], 'password': "iceusers", 'activation_token': uuid4(), 'activation_token_create_time': timezone.now()})
+ user_object, created = CustomUser.objects.get_or_create(
+ username=user[1], defaults={'is_active': True, 'email': user[
+ 1], 'password': "iceusers", 'activation_token': uuid4(),
+ 'activation_token_create_time': timezone.now()})
user_object.set_password('iceusers')
user_object.save()
data = createUserTemplate(
- service_provider_company, user[0], admin_role, user[2], True, None, True, user_object)
- admin_user, profile_created = IceUserProfile.objects.update_or_create(
- email=user_object.email, defaults=data)
+ service_provider_company, user[0], admin_role, user[2],
+ True, None, True, user_object)
+ admin_user, profile_created = \
+ IceUserProfile.objects.update_or_create(
+ email=user_object.email, defaults=data)
logger.info(
- 'The admin user was found or created: ' + str(admin_user.full_name))
+ 'The admin user was found or created: ' +
+ str(admin_user.full_name))
except Exception as e:
logger.error("bootstrap_actions - create_admin_users error:")
logger.error(e)
@@ -836,7 +1025,8 @@ def create_admin_users():
def create_admin_ro_users():
- service_provider_company = Vendor.objects.get(name=Constants.service_provider_company_name)
+ service_provider_company = Vendor.objects.get(
+ name=Constants.service_provider_company_name)
admin_ro_role = Role.objects.get(
name=Roles.admin_ro.name) # @UndefinedVariable
@@ -844,16 +1034,22 @@ def create_admin_ro_users():
for user in admin_ro_list:
try:
- user_object, created = CustomUser.objects.get_or_create(username=user[1], defaults={'is_active': True, 'email': user[
- 1], 'password': "iceusers", 'activation_token': uuid4(), 'activation_token_create_time': timezone.now()})
+ user_object, created = CustomUser.objects.get_or_create(
+ username=user[1],
+ defaults={'is_active': True, 'email': user[
+ 1], 'password': "iceusers", 'activation_token': uuid4(),
+ 'activation_token_create_time': timezone.now()})
user_object.set_password('iceusers')
user_object.save()
data = createUserTemplate(
- service_provider_company, user[0], admin_ro_role, user[2], True, None, True, user_object)
- admin_ro_user, profile_created = IceUserProfile.objects.update_or_create(
- email=user_object.email, defaults=data)
+ service_provider_company, user[0], admin_ro_role, user[2],
+ True, None, True, user_object)
+ admin_ro_user, profile_created = \
+ IceUserProfile.objects.update_or_create(
+ email=user_object.email, defaults=data)
logger.info(
- 'The admin_ro user was found or created: ' + str(admin_ro_user.full_name))
+ 'The admin_ro user was found or created: ' +
+ str(admin_ro_user.full_name))
except Exception as e:
logger.error("bootstrap_actions - create_admin_ro_users error:")
logger.error(e)
@@ -866,10 +1062,12 @@ def create_admin_ro_users():
def create_deployment_targets():
for dt in deployment_targets:
try:
- deployment_target, created = DeploymentTarget.objects.get_or_create(
- name=dt[0], version=dt[1], defaults={'version': dt[1]})
+ deployment_target, created = \
+ DeploymentTarget.objects.get_or_create(
+ name=dt[0], version=dt[1], defaults={'version': dt[1]})
logger.info(
- 'Deployment Target found or created: ' + str(deployment_target))
+ 'Deployment Target found or created: ' +
+ str(deployment_target))
except Exception as e:
logger.error(
"bootstrap_actions - create_deployment_targets error:")
@@ -900,10 +1098,12 @@ def create_ecomp():
def create_deployment_targets_sites():
for dt in deployment_targets_sites:
try:
- deployment_target_site, created = DeploymentTargetSite.objects.get_or_create(
- name=dt)
+ deployment_target_site, created = \
+ DeploymentTargetSite.objects.get_or_create(
+ name=dt)
logger.info(
- 'Deployment Target found or created: ' + str(deployment_target_site.name))
+ 'Deployment Target found or created: ' +
+ str(deployment_target_site.name))
except Exception as e:
logger.error(
"bootstrap_actions - create_deployment_targets_sites error:")
diff --git a/django/engagementmanager/management/commands/populate_all_gitlab_repo_and_user_and_jenkins.py b/django/engagementmanager/management/commands/populate_all_gitlab_repo_and_user_and_jenkins.py
index 2d6c5be..bde1986 100644
--- a/django/engagementmanager/management/commands/populate_all_gitlab_repo_and_user_and_jenkins.py
+++ b/django/engagementmanager/management/commands/populate_all_gitlab_repo_and_user_and_jenkins.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -39,7 +39,8 @@
""" populate_all_gitlab_repo_and_user_and_jenkins
Will populate gitlab and jenkins with vf data (where it's not exists).
-This command will be used for systems with missing gitlab/jenkins data for some vfs.
+This command will be used for systems
+with missing gitlab/jenkins data for some vfs.
"""
from django.core.management.base import BaseCommand
from rest_framework.status import HTTP_200_OK
@@ -55,14 +56,18 @@ logger = LoggingServiceFactory.get_logger()
class Command(BaseCommand):
def handle(self, *args, **options):
- engStageList = [EngagementStage.Intake.name, EngagementStage.Active.name,
- EngagementStage.Validated.name, EngagementStage.Completed.name]
- vf_list = VF.objects.filter(engagement__engagement_stage__in=engStageList)
+ engStageList = [EngagementStage.Intake.name,
+ EngagementStage.Active.name,
+ EngagementStage.Validated.name,
+ EngagementStage.Completed.name]
+ vf_list = VF.objects.filter(
+ engagement__engagement_stage__in=engStageList)
log_array = []
error_array = []
for vf_found in vf_list:
logger.debug(vf_found.uuid)
- msg, http_status, values = vm_client.send_provision_new_vf_event(vf_found)
+ msg, http_status, values = vm_client.send_provision_new_vf_event(
+ vf_found)
vf_dict = {
'vf_uuid': vf_found.uuid,
'msg': msg,
diff --git a/django/engagementmanager/management/commands/render_rgwa_credentials.py b/django/engagementmanager/management/commands/render_rgwa_credentials.py
index 52a1373..fd9db00 100644
--- a/django/engagementmanager/management/commands/render_rgwa_credentials.py
+++ b/django/engagementmanager/management/commands/render_rgwa_credentials.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -39,7 +39,8 @@
""" render_rgwa_credentials
Will create rados gateway user (S3 API) for each django user.
-This command will create the user if it's not exists so it safe to run it even the user are exists.
+This command will create the user if it's not exists
+so it safe to run it even the user are exists.
This command is part of bucket usage (images) efforts.
"""
from django.db.models import Q
diff --git a/django/engagementmanager/migrations/0001_initial.py b/django/engagementmanager/migrations/0001_initial.py
index ffbb95a..ddbe92f 100644
--- a/django/engagementmanager/migrations/0001_initial.py
+++ b/django/engagementmanager/migrations/0001_initial.py
@@ -1,5 +1,4 @@
-#
-# ============LICENSE_START==========================================
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -59,12 +58,17 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='Activity',
fields=[
- ('uuid', models.CharField(max_length=36, primary_key=True, serialize=False, unique=True)),
- ('create_time', models.DateTimeField(default=django.utils.timezone.now)),
+ ('uuid', models.CharField(max_length=36,
+ primary_key=True, serialize=False,
+ unique=True)),
+ ('create_time', models.DateTimeField(
+ default=django.utils.timezone.now)),
('description', models.CharField(max_length=512)),
('is_notification', models.BooleanField(default=False)),
('activity_type', models.CharField(choices=[
- (b'3', b'eng_validation_request'), (b'4', b'next_steps'), (b'2', b'ssh_key_added'), (b'1', b'user_joined_eng')], max_length=36)),
+ (b'3', b'eng_validation_request'), (b'4', b'next_steps'),
+ (b'2', b'ssh_key_added'), (b'1', b'user_joined_eng')],
+ max_length=36)),
('metadata', models.CharField(max_length=1024)),
],
options={
@@ -75,7 +79,9 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='ApplicationServiceInfrastructure',
fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('id', models.AutoField(auto_created=True,
+ primary_key=True, serialize=False,
+ verbose_name='ID')),
('name', models.CharField(max_length=100, unique=True)),
('uuid', models.CharField(max_length=36, unique=True)),
],
@@ -86,12 +92,17 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='ContactRequest',
fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('create_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='creation time')),
+ ('id', models.AutoField(auto_created=True,
+ primary_key=True, serialize=False,
+ verbose_name='ID')),
+ ('create_time', models.DateTimeField(
+ default=django.utils.timezone.now,
+ verbose_name='creation time')),
('uuid', models.CharField(max_length=36, unique=True)),
('fname', models.CharField(max_length=50)),
('lname', models.CharField(max_length=50)),
- ('email', models.EmailField(max_length=254, verbose_name='email')),
+ ('email', models.EmailField(max_length=254,
+ verbose_name='email')),
('company', models.CharField(max_length=50)),
('phone_number', models.CharField(max_length=30)),
('message', models.TextField()),
@@ -103,7 +114,8 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='DeploymentTarget',
fields=[
- ('uuid', models.CharField(max_length=36, primary_key=True, serialize=False)),
+ ('uuid', models.CharField(max_length=36,
+ primary_key=True, serialize=False)),
('name', models.CharField(max_length=45)),
('version', models.CharField(max_length=100)),
],
@@ -114,12 +126,16 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='Engagement',
fields=[
- ('uuid', models.CharField(max_length=64, primary_key=True, serialize=False)),
- ('engagement_manual_id', models.CharField(blank=True, max_length=36, null=True)),
+ ('uuid', models.CharField(max_length=64,
+ primary_key=True, serialize=False)),
+ ('engagement_manual_id', models.CharField(
+ blank=True, max_length=36, null=True)),
('progress', models.IntegerField(default=0)),
- ('target_completion_date', models.DateField(blank=True, default=datetime.datetime(
- 2016, 6, 29, 14, 7, 41, 103000, tzinfo=utc), null=True)),
- ('engagement_stage', models.CharField(default=b'Intake', max_length=15)),
+ ('target_completion_date',
+ models.DateField(blank=True, default=datetime.datetime(
+ 2016, 6, 29, 14, 7, 41, 103000, tzinfo=utc), null=True)),
+ ('engagement_stage', models.CharField(
+ default=b'Intake', max_length=15)),
],
options={
'db_table': 'ice_engagement',
@@ -128,19 +144,25 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='EngagementRequest',
fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('create_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='creation time')),
+ ('id', models.AutoField(auto_created=True,
+ primary_key=True, serialize=False,
+ verbose_name='ID')),
+ ('create_time', models.DateTimeField(
+ default=django.utils.timezone.now,
+ verbose_name='creation time')),
('uuid', models.CharField(max_length=36, unique=True)),
('fname', models.CharField(max_length=50)),
('lname', models.CharField(max_length=50)),
- ('email', models.EmailField(max_length=254, verbose_name='email')),
+ ('email', models.EmailField(max_length=254,
+ verbose_name='email')),
('company', models.CharField(max_length=50)),
('country_code', models.CharField(max_length=5)),
('phone_number', models.CharField(max_length=30)),
('vf_csv', models.CharField(max_length=80)),
('att_contact_fname', models.CharField(max_length=50)),
('att_contact_lname', models.CharField(max_length=50)),
- ('att_contact_email', models.EmailField(max_length=254, verbose_name='email')),
+ ('att_contact_email', models.EmailField(
+ max_length=254, verbose_name='email')),
('att_contact_phone', models.CharField(max_length=30)),
('request_type', models.CharField(max_length=20)),
('description', models.TextField()),
@@ -153,24 +175,36 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='IceUser',
fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('id', models.AutoField(auto_created=True,
+ primary_key=True, serialize=False,
+ verbose_name='ID')),
('uuid', models.CharField(max_length=36, unique=True)),
('phone_number', models.CharField(max_length=30)),
('full_name', models.CharField(max_length=30)),
- ('email', models.EmailField(max_length=254, unique=True, verbose_name='email')),
+ ('email', models.EmailField(
+ max_length=254,
+ unique=True, verbose_name='email')),
('password', models.CharField(max_length=256)),
- ('create_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='creation time')),
- ('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last_login')),
+ ('create_time', models.DateTimeField(
+ default=django.utils.timezone.now,
+ verbose_name='creation time')),
+ ('last_login', models.DateTimeField(
+ blank=True, null=True, verbose_name='last_login')),
('ssh_public_key', models.CharField(
- blank=True, max_length=1024, null=True, verbose_name='ssh_public_key')),
+ blank=True, max_length=1024, null=True,
+ verbose_name='ssh_public_key')),
('regular_email_updates', models.BooleanField(default=False)),
- ('email_updates_on_every_notification', models.BooleanField(default=True)),
- ('email_updates_daily_digest', models.BooleanField(default=False)),
+ ('email_updates_on_every_notification',
+ models.BooleanField(default=True)),
+ ('email_updates_daily_digest',
+ models.BooleanField(default=False)),
('is_active', models.BooleanField()),
('is_att_contact', models.BooleanField()),
- ('activation_token', models.CharField(max_length=128, unique=True)),
+ ('activation_token', models.CharField(max_length=128,
+ unique=True)),
('activation_token_create_time', models.DateTimeField(
- default=django.utils.timezone.now, verbose_name='activation_token_create_time')),
+ default=django.utils.timezone.now,
+ verbose_name='activation_token_create_time')),
],
options={
'db_table': 'ice_user',
@@ -179,21 +213,31 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='NextStep',
fields=[
- ('uuid', models.CharField(max_length=36, primary_key=True, serialize=False)),
- ('create_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='creation time')),
+ ('uuid', models.CharField(max_length=36,
+ primary_key=True, serialize=False)),
+ ('create_time', models.DateTimeField(
+ default=django.utils.timezone.now,
+ verbose_name='creation time')),
('last_update_time', models.DateTimeField(
- default=django.utils.timezone.now, verbose_name='last update time')),
- ('last_update_type', models.CharField(default='Added', max_length=15)),
+ default=django.utils.timezone.now,
+ verbose_name='last update time')),
+ ('last_update_type', models.CharField(
+ default='Added', max_length=15)),
('position', models.IntegerField()),
('description', models.TextField()),
('state', models.CharField(max_length=15)),
('engagement_stage', models.CharField(max_length=15)),
- ('creator', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT,
- related_name='NextStep_creator', to='engagementmanager.IceUser')),
+ ('creator', models.ForeignKey(
+ on_delete=django.db.models.deletion.PROTECT,
+ related_name='NextStep_creator',
+ to='engagementmanager.IceUser')),
('engagement', models.ForeignKey(
- on_delete=django.db.models.deletion.PROTECT, to='engagementmanager.Engagement')),
- ('last_updater', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT,
- related_name='NextStep_last_updater', to='engagementmanager.IceUser')),
+ on_delete=django.db.models.deletion.PROTECT,
+ to='engagementmanager.Engagement')),
+ ('last_updater', models.ForeignKey(
+ null=True, on_delete=django.db.models.deletion.PROTECT,
+ related_name='NextStep_last_updater',
+ to='engagementmanager.IceUser')),
],
options={
'db_table': 'ice_next_step',
@@ -203,13 +247,17 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='Notification',
fields=[
- ('uuid', models.CharField(max_length=36, primary_key=True, serialize=False, unique=True)),
+ ('uuid', models.CharField(max_length=36,
+ primary_key=True, serialize=False,
+ unique=True)),
('is_sent', models.BooleanField(default=False)),
('is_read', models.BooleanField(default=False)),
('activity', models.ForeignKey(
- null=True, on_delete=django.db.models.deletion.CASCADE, to='engagementmanager.Activity')),
+ null=True, on_delete=django.db.models.deletion.CASCADE,
+ to='engagementmanager.Activity')),
('user', models.ForeignKey(
- on_delete=django.db.models.deletion.CASCADE, to='engagementmanager.IceUser')),
+ on_delete=django.db.models.deletion.CASCADE,
+ to='engagementmanager.IceUser')),
],
options={
'db_table': 'ice_notification',
@@ -218,7 +266,9 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='Role',
fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('id', models.AutoField(auto_created=True,
+ primary_key=True, serialize=False,
+ verbose_name='ID')),
('uuid', models.CharField(max_length=36, unique=True)),
('name', models.CharField(max_length=36, unique=True)),
],
@@ -229,7 +279,9 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='Test',
fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('id', models.AutoField(auto_created=True,
+ primary_key=True, serialize=False,
+ verbose_name='ID')),
('name', models.CharField(max_length=45)),
('uuid', models.CharField(max_length=36, unique=True)),
],
@@ -240,7 +292,9 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='ValidationCycle',
fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('id', models.AutoField(auto_created=True,
+ primary_key=True, serialize=False,
+ verbose_name='ID')),
('uuid', models.CharField(max_length=36, unique=True)),
('start_date', models.DateTimeField()),
('end_date', models.DateTimeField()),
@@ -264,7 +318,9 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='ValidationException',
fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('id', models.AutoField(auto_created=True,
+ primary_key=True, serialize=False,
+ verbose_name='ID')),
('uuid', models.CharField(max_length=36, unique=True)),
('type', models.CharField(max_length=45)),
('external_ref_id', models.CharField(max_length=45)),
@@ -276,16 +332,24 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='ValidationSteps',
fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('id', models.AutoField(auto_created=True,
+ primary_key=True, serialize=False,
+ verbose_name='ID')),
('uuid', models.CharField(max_length=36)),
- ('requirment_id', models.CharField(blank=True, max_length=36, null=True)),
+ ('requirment_id', models.CharField(
+ blank=True, max_length=36, null=True)),
('passed', models.BooleanField()),
('log', models.BinaryField()),
- ('validation_notes', models.CharField(blank=True, max_length=200, null=True)),
- ('test', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='engagementmanager.Test')),
+ ('validation_notes', models.CharField(
+ blank=True, max_length=200, null=True)),
+ ('test', models.ForeignKey(
+ on_delete=django.db.models.deletion.PROTECT,
+ to='engagementmanager.Test')),
('validation_cycle', models.ForeignKey(
- on_delete=django.db.models.deletion.PROTECT, to='engagementmanager.ValidationCycle')),
- ('validation_exceptions', models.ManyToManyField(to='engagementmanager.ValidationException')),
+ on_delete=django.db.models.deletion.PROTECT,
+ to='engagementmanager.ValidationCycle')),
+ ('validation_exceptions', models.ManyToManyField(
+ to='engagementmanager.ValidationException')),
],
options={
'db_table': 'ice_validation_step',
@@ -295,7 +359,9 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='Vendor',
fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('id', models.AutoField(auto_created=True,
+ primary_key=True, serialize=False,
+ verbose_name='ID')),
('uuid', models.CharField(max_length=36, unique=True)),
('name', models.CharField(max_length=100, unique=True)),
],
@@ -307,16 +373,25 @@ class Migration(migrations.Migration):
name='VF',
fields=[
('name', models.CharField(max_length=100)),
- ('uuid', models.CharField(max_length=36, primary_key=True, serialize=False, unique=True)),
+ ('uuid', models.CharField(max_length=36,
+ primary_key=True, serialize=False,
+ unique=True)),
('is_att_internal', models.BooleanField(default=False)),
- ('git_repo_url', models.CharField(blank=True, max_length=512, null=True)),
- ('target_lab_entry_date', models.DateField(verbose_name='target_lab_entry_date')),
- ('deployment_target', models.ForeignKey(blank=True, null=True,
- on_delete=django.db.models.deletion.SET_NULL, to='engagementmanager.DeploymentTarget')),
- ('engagement', models.ForeignKey(blank=True, null=True,
- on_delete=django.db.models.deletion.SET_NULL, to='engagementmanager.Engagement')),
+ ('git_repo_url', models.CharField(
+ blank=True, max_length=512, null=True)),
+ ('target_lab_entry_date', models.DateField(
+ verbose_name='target_lab_entry_date')),
+ ('deployment_target', models.ForeignKey(
+ blank=True, null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ to='engagementmanager.DeploymentTarget')),
+ ('engagement', models.ForeignKey(
+ blank=True, null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ to='engagementmanager.Engagement')),
('vendor', models.ForeignKey(
- on_delete=django.db.models.deletion.PROTECT, to='engagementmanager.Vendor')),
+ on_delete=django.db.models.deletion.PROTECT,
+ to='engagementmanager.Vendor')),
],
options={
'db_table': 'ice_vf',
@@ -325,12 +400,17 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='VFC',
fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('id', models.AutoField(auto_created=True,
+ primary_key=True, serialize=False,
+ verbose_name='ID')),
('name', models.CharField(max_length=45)),
('version', models.CharField(max_length=45)),
('uuid', models.CharField(max_length=36, unique=True)),
- ('vf_acronym', models.CharField(blank=True, max_length=100, null=True)),
- ('vf', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='engagementmanager.VF')),
+ ('vf_acronym', models.CharField(
+ blank=True, max_length=100, null=True)),
+ ('vf', models.ForeignKey(
+ on_delete=django.db.models.deletion.PROTECT,
+ to='engagementmanager.VF')),
],
options={
'db_table': 'ice_vfc',
@@ -343,28 +423,37 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='validationcycle',
name='vfc',
- field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='engagementmanager.VFC'),
+ field=models.ForeignKey(
+ on_delete=django.db.models.deletion.PROTECT,
+ to='engagementmanager.VFC'),
),
migrations.AddField(
model_name='iceuser',
name='company',
- field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='engagementmanager.Vendor'),
+ field=models.ForeignKey(
+ on_delete=django.db.models.deletion.PROTECT,
+ to='engagementmanager.Vendor'),
),
migrations.AddField(
model_name='iceuser',
name='role',
- field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='engagementmanager.Role'),
+ field=models.ForeignKey(
+ on_delete=django.db.models.deletion.PROTECT,
+ to='engagementmanager.Role'),
),
migrations.AddField(
model_name='engagement',
name='contact_user',
- field=models.ForeignKey(blank=True, null=True,
- on_delete=django.db.models.deletion.PROTECT, to='engagementmanager.IceUser'),
+ field=models.ForeignKey(
+ blank=True, null=True,
+ on_delete=django.db.models.deletion.PROTECT,
+ to='engagementmanager.IceUser'),
),
migrations.AddField(
model_name='engagement',
name='engagement_team',
- field=models.ManyToManyField(related_name='members', to='engagementmanager.IceUser'),
+ field=models.ManyToManyField(
+ related_name='members', to='engagementmanager.IceUser'),
),
migrations.AlterUniqueTogether(
name='deploymenttarget',
@@ -377,13 +466,17 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='activity',
name='activity_owner',
- field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE,
- to='engagementmanager.IceUser'),
+ field=models.ForeignKey(
+ null=True,
+ on_delete=django.db.models.deletion.CASCADE,
+ to='engagementmanager.IceUser'),
),
migrations.AddField(
model_name='activity',
name='engagement',
- field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='engagementmanager.Engagement'),
+ field=models.ForeignKey(
+ on_delete=django.db.models.deletion.PROTECT,
+ to='engagementmanager.Engagement'),
),
migrations.AlterUniqueTogether(
name='vfc',
diff --git a/django/engagementmanager/migrations/0001_squashed_initial.py b/django/engagementmanager/migrations/0001_squashed_initial.py
index ae740e2..6ca999e 100644
--- a/django/engagementmanager/migrations/0001_squashed_initial.py
+++ b/django/engagementmanager/migrations/0001_squashed_initial.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -41,13 +41,11 @@ from django.conf import settings
import django.contrib.auth.models
from django.db import models
import django.db.models.deletion
-from django.utils.timezone import utc
import django.utils.timezone
import engagementmanager.models
import uuid
import os
from django.db import migrations, connection
-import engagementmanager
from engagementmanager.service.logging_service import LoggingServiceFactory
logger = LoggingServiceFactory.get_logger()
@@ -55,27 +53,34 @@ logger = LoggingServiceFactory.get_logger()
def forwards(apps, schema_editor):
if not schema_editor.connection.alias == 'default' \
- or settings.DATABASES["default"]["ENGINE"] == "django.db.backends.sqlite3":
+ or settings.DATABASES["default"]["ENGINE"] == \
+ "django.db.backends.sqlite3":
return
cursor = connection.cursor()
- cursor.execute(open(os.path.join(os.path.dirname(engagementmanager.__file__),
- 'sql-scripts/generate_excel_overview_sheet_procedure.sql'), "r").read())
+ cursor.execute(
+ open(
+ os.path.join(
+ os.path.dirname(
+ engagementmanager.__file__),
+ 'sql-scripts/generate_excel_overview_sheet_procedure.sql'),
+ "r").read())
def create_user_for_pre_user_profiles(apps, schema_editor):
CustomUser = apps.get_model("engagementmanager", "CustomUser")
IceUserProfile = apps.get_model("engagementmanager", "IceUserProfile")
users_list = IceUserProfile.objects.filter(user=None)
- count = 0
for profile in users_list:
try:
- custom_user, created = CustomUser.objects.get_or_create(username=profile.email)
+ custom_user, created = CustomUser.objects.get_or_create(
+ username=profile.email)
custom_user.is_active = profile.is_active
custom_user.email = profile.email
custom_user.activation_token = profile.activation_token
custom_user.password = profile.password
- custom_user.activation_token_create_time = profile.activation_token_create_time
+ custom_user.activation_token_create_time = \
+ profile.activation_token_create_time
custom_user.save()
profile.user = custom_user
profile.save()
@@ -86,27 +91,54 @@ def create_user_for_pre_user_profiles(apps, schema_editor):
class Migration(migrations.Migration):
- replaces = [('engagementmanager', '0001_initial'), ('engagementmanager', '0002_auto_20160704_1028'),
- ('engagementmanager', '0003_auto_20160713_0929'), ('engagementmanager', '0004_auto_20160720_2143'),
- ('engagementmanager', '0005_auto_20160815_1248'), ('engagementmanager', '0006_auto_20160825_0644'),
- ('engagementmanager', '0007_auto_20160922_0421'), ('engagementmanager', '0008_auto_20161009_1210'),
- ('engagementmanager', '0009_auto_20161018_0740'), ('engagementmanager', '0010_auto_20161025_0838'),
- ('engagementmanager', '0011_auto_20161109_0811'), ('engagementmanager', '0012_auto_20161109_0822'),
- ('engagementmanager', '0013_auto_20161128_1159'), ('engagementmanager', '0014_auto_20161129_1145'),
- ('engagementmanager', '0015_engagementstatus'), ('engagementmanager', '0016_auto_20161208_0842'),
- ('engagementmanager', '0017_auto_20161215_1535'), ('engagementmanager', '0018_set_old_notif_true'),
- ('engagementmanager', '0019_auto_20170104_1715'), ('engagementmanager', '0020_add_indexes_20170108'),
- ('engagementmanager', '0021_generate_excel_overview_sheet_procedure_20170110'),
- ('engagementmanager', '0022_auto_20170118_1520'), ('engagementmanager', '0023_auto_20170123_1445'),
+ replaces = [('engagementmanager', '0001_initial'),
+ ('engagementmanager', '0002_auto_20160704_1028'),
+ ('engagementmanager', '0003_auto_20160713_0929'),
+ ('engagementmanager', '0004_auto_20160720_2143'),
+ ('engagementmanager', '0005_auto_20160815_1248'),
+ ('engagementmanager',
+ '0006_auto_20160825_0644'),
+ ('engagementmanager', '0007_auto_20160922_0421'),
+ ('engagementmanager',
+ '0008_auto_20161009_1210'),
+ ('engagementmanager', '0009_auto_20161018_0740'),
+ ('engagementmanager',
+ '0010_auto_20161025_0838'),
+ ('engagementmanager', '0011_auto_20161109_0811'),
+ ('engagementmanager',
+ '0012_auto_20161109_0822'),
+ ('engagementmanager', '0013_auto_20161128_1159'),
+ ('engagementmanager',
+ '0014_auto_20161129_1145'),
+ ('engagementmanager', '0015_engagementstatus'),
+ ('engagementmanager',
+ '0016_auto_20161208_0842'),
+ ('engagementmanager', '0017_auto_20161215_1535'),
+ ('engagementmanager',
+ '0018_set_old_notif_true'),
+ ('engagementmanager', '0019_auto_20170104_1715'),
+ ('engagementmanager',
+ '0020_add_indexes_20170108'),
+ ('engagementmanager',
+ '0021_generate_excel_overview_sheet_procedure_20170110'),
+ ('engagementmanager', '0022_auto_20170118_1520'),
+ ('engagementmanager',
+ '0023_auto_20170123_1445'),
('engagementmanager', '0024_auto_20170227_1224'),
('engagementmanager', '0025_change_nextsteps_to_new_state'),
- ('engagementmanager', '0026_add_slack_handle_to_ice_user_profile'),
- ('engagementmanager', '0027_add_version_to_vf'), ('engagementmanager', '0028_auto_20170425_1310'),
+ ('engagementmanager',
+ '0026_add_slack_handle_to_ice_user_profile'),
+ ('engagementmanager', '0027_add_version_to_vf'),
+ ('engagementmanager',
+ '0028_auto_20170425_1310'),
('engagementmanager', '0029_auto_20170504_0749'),
('engagementmanager', '0030_engagement_archived_time'),
- ('engagementmanager', '0031_auto_20170620_1312'), ('engagementmanager', '0032_auto_20170702_1435'),
+ ('engagementmanager', '0031_auto_20170620_1312'),
+ ('engagementmanager',
+ '0032_auto_20170702_1435'),
('engagementmanager', '0033_auto_20170704_0635'),
- ('engagementmanager', '0034_engagement_is_with_files'), ('engagementmanager', '0035_rgwa_fields'),
+ ('engagementmanager', '0034_engagement_is_with_files'),
+ ('engagementmanager', '0035_rgwa_fields'),
('engagementmanager', '0036_auto_20170906_0935')]
initial = True
@@ -119,11 +151,34 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='Activity',
fields=[
- ('uuid', models.CharField(default=uuid.uuid4, max_length=36, primary_key=True, serialize=False, unique=True)),
- ('create_time', models.DateTimeField(default=django.utils.timezone.now)),
+ ('uuid', models.CharField(
+
+ default=uuid.uuid4, max_length=36,
+ primary_key=True, serialize=False,
+ unique=True)),
+ ('create_time', models.DateTimeField(
+ default=django.utils.timezone.now)),
('description', models.CharField(max_length=512)),
('is_notification', models.BooleanField(default=False)),
- ('activity_type', models.CharField(choices=[('user_joined_eng', 'user_joined_eng'), ('ssh_key_added', 'ssh_key_added'), ('eng_validation_request', 'eng_validation_request'), ('update_next_steps', 'update_next_steps'), ('vfc', 'vfc'), ('change_checklist_state', 'change_checklist_state'), ('vf_provisioning_event', 'vf_provisioning_event'), ('test_finished_event', 'test_finished_event'), ('change_engagement_stage', 'change_engagement_stage'), ('add_next_steps', 'add_next_steps'), ('delete_next_steps', 'delete_next_steps'), ('notice_empty_engagement', 'notice_empty_engagement')], max_length=36)),
+ ('activity_type', models.CharField(
+
+ choices=[('user_joined_eng', 'user_joined_eng'),
+ ('ssh_key_added', 'ssh_key_added'),
+ ('eng_validation_request',
+ 'eng_validation_request'),
+ ('update_next_steps', 'update_next_steps'),
+ ('vfc', 'vfc'), ('change_checklist_state',
+ 'change_checklist_state'),
+ ('vf_provisioning_event',
+ 'vf_provisioning_event'),
+ ('test_finished_event', 'test_finished_event'),
+ ('change_engagement_stage',
+ 'change_engagement_stage'),
+ ('add_next_steps', 'add_next_steps'),
+ ('delete_next_steps', 'delete_next_steps'),
+ ('notice_empty_engagement',
+ 'notice_empty_engagement')],
+ max_length=36)),
('metadata', models.CharField(max_length=1024)),
],
options={
@@ -134,9 +189,15 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='ApplicationServiceInfrastructure',
fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('id', models.AutoField(
+ auto_created=True,
+ primary_key=True, serialize=False,
+ verbose_name='ID')),
('name', models.CharField(max_length=100, unique=True)),
- ('uuid', models.CharField(default=uuid.uuid4, max_length=36, unique=True)),
+ ('uuid', models.CharField(
+
+
+ default=uuid.uuid4, max_length=36, unique=True)),
],
options={
'db_table': 'ice_application_service_infrastructure',
@@ -145,14 +206,37 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='Checklist',
fields=[
- ('uuid', models.CharField(default=uuid.uuid4, max_length=36, primary_key=True, serialize=False)),
- ('name', models.CharField(max_length=255, verbose_name='checklist name')),
- ('state', models.CharField(choices=[('automation', 'automation'), ('review', 'review'), ('peer_review', 'peer_review'), ('approval', 'approval'), ('handoff', 'handoff'), ('closed', 'closed'), ('archive', 'archive'), ('pending', 'pending')], default='pending', max_length=36)),
- ('validation_cycle', models.IntegerField(verbose_name='validation cycle')),
- ('weight', models.FloatField(default=0, verbose_name='checklist weight')),
- ('associated_files', models.TextField(verbose_name='list of files from gitlab')),
- ('create_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='creation time')),
- ('update_time', models.DateTimeField(blank=True, null=True, verbose_name='last update time')),
+ ('uuid', models.CharField(
+
+ default=uuid.uuid4,
+ max_length=36, primary_key=True, serialize=False)),
+ ('name', models.CharField(
+ max_length=255,
+ verbose_name='checklist name')),
+ ('state', models.CharField(
+ choices=[('automation', 'automation'),
+ ('review', 'review'),
+ ('peer_review', 'peer_review'),
+ ('approval', 'approval'), (
+ 'handoff', 'handoff'), ('closed', 'closed'),
+ ('archive', 'archive'), ('pending', 'pending')],
+ default='pending', max_length=36)),
+ ('validation_cycle', models.IntegerField(
+
+ verbose_name='validation cycle')),
+ ('weight', models.FloatField(
+ default=0,
+ verbose_name='checklist weight')),
+ ('associated_files', models.TextField(
+
+ verbose_name='list of files from gitlab')),
+ ('create_time', models.DateTimeField(
+ default=django.utils.timezone.now,
+ verbose_name='creation time')),
+ ('update_time', models.DateTimeField(
+ blank=True,
+ null=True,
+ verbose_name='last update time')),
],
options={
'db_table': 'ice_checklist',
@@ -161,12 +245,24 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='ChecklistAuditLog',
fields=[
- ('uuid', models.CharField(default=uuid.uuid4, max_length=36, primary_key=True, serialize=False)),
+ ('uuid', models.CharField(
+
+ default=uuid.uuid4,
+ max_length=36, primary_key=True, serialize=False)),
('category', models.CharField(max_length=255)),
('description', models.TextField()),
- ('create_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='creation time')),
- ('update_time', models.DateTimeField(blank=True, null=True, verbose_name='last update time')),
- ('checklist', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='engagementmanager.Checklist')),
+ ('create_time', models.DateTimeField(
+ default=django.utils.timezone.now,
+ verbose_name='creation time')),
+ ('update_time', models.DateTimeField(
+ blank=True,
+ null=True,
+ verbose_name='last update time')),
+ ('checklist', models.ForeignKey(
+ blank=True, null=True,
+
+ on_delete=django.db.models.deletion.CASCADE,
+ to='engagementmanager.Checklist')),
],
options={
'db_table': 'ice_checklist_audit_log',
@@ -175,12 +271,31 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='ChecklistDecision',
fields=[
- ('uuid', models.CharField(default=uuid.uuid4, max_length=36, primary_key=True, serialize=False)),
- ('review_value', models.CharField(choices=[('approved', 'approved'), ('denied', 'denied'), ('not_relevant', 'not_relevant'), ('na', 'na')], max_length=36)),
- ('peer_review_value', models.CharField(choices=[('approved', 'approved'), ('denied', 'denied'), ('not_relevant', 'not_relevant'), ('na', 'na')], max_length=36)),
- ('create_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='creation time')),
- ('update_time', models.DateTimeField(blank=True, null=True, verbose_name='last update time')),
- ('checklist', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='engagementmanager.Checklist')),
+ ('uuid', models.CharField(
+
+ default=uuid.uuid4,
+ max_length=36, primary_key=True, serialize=False)),
+ ('review_value', models.CharField(
+ choices=[('approved', 'approved'), (
+ 'denied', 'denied'),
+ ('not_relevant', 'not_relevant'),
+ ('na', 'na')], max_length=36)),
+ ('peer_review_value', models.CharField(
+ choices=[('approved', 'approved'), (
+ 'denied', 'denied'),
+ ('not_relevant', 'not_relevant'),
+ ('na', 'na')], max_length=36)),
+ ('create_time', models.DateTimeField(
+ default=django.utils.timezone.now,
+ verbose_name='creation time')),
+ ('update_time', models.DateTimeField(
+ blank=True,
+ null=True,
+ verbose_name='last update time')),
+ ('checklist', models.ForeignKey(
+
+ on_delete=django.db.models.deletion.CASCADE,
+ to='engagementmanager.Checklist')),
],
options={
'db_table': 'ice_checklist_decision',
@@ -189,14 +304,31 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='ChecklistLineItem',
fields=[
- ('uuid', models.CharField(default=uuid.uuid4, max_length=36, primary_key=True, serialize=False)),
- ('name', models.CharField(max_length=255, verbose_name='line name')),
- ('weight', models.FloatField(verbose_name='line weight')),
- ('description', models.TextField(verbose_name='line description')),
- ('line_type', models.CharField(choices=[('auto', 'auto'), ('manual', 'manual')], default='auto', max_length=36)),
- ('validation_instructions', models.TextField(verbose_name='line validation instructions')),
- ('create_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='creation time')),
- ('update_time', models.DateTimeField(blank=True, null=True, verbose_name='last update time')),
+ ('uuid', models.CharField(
+
+ default=uuid.uuid4,
+ max_length=36, primary_key=True, serialize=False)),
+ ('name', models.CharField(max_length=255,
+ verbose_name='line name')),
+ ('weight', models.FloatField(
+ verbose_name='line weight')),
+ ('description', models.TextField(
+ verbose_name='line description')),
+ ('line_type', models.CharField(
+ choices=[
+ ('auto', 'auto'), ('manual', 'manual')],
+ default='auto',
+ max_length=36)),
+ ('validation_instructions', models.TextField(
+
+ verbose_name='line validation instructions')),
+ ('create_time', models.DateTimeField(
+ default=django.utils.timezone.now,
+ verbose_name='creation time')),
+ ('update_time', models.DateTimeField(
+ blank=True,
+ null=True,
+ verbose_name='last update time')),
],
options={
'db_table': 'ice_checklist_line_item',
@@ -205,14 +337,32 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='ChecklistSection',
fields=[
- ('uuid', models.CharField(default=uuid.uuid4, max_length=36, primary_key=True, serialize=False)),
- ('name', models.CharField(max_length=255, verbose_name='section name')),
- ('weight', models.FloatField(verbose_name='checklist weight')),
- ('description', models.TextField(verbose_name='section description')),
- ('validation_instructions', models.TextField(verbose_name='section validation instructions')),
- ('create_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='creation time')),
- ('update_time', models.DateTimeField(blank=True, null=True, verbose_name='last update time')),
- ('parent_section', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='engagementmanager.ChecklistSection')),
+ ('uuid', models.CharField(
+
+ default=uuid.uuid4,
+ max_length=36, primary_key=True, serialize=False)),
+ ('name', models.CharField(max_length=255,
+ verbose_name='section name')),
+ ('weight', models.FloatField(
+ verbose_name='checklist weight')),
+ ('description', models.TextField(
+
+ verbose_name='section description')),
+ ('validation_instructions', models.TextField(
+
+ verbose_name='section validation instructions')),
+ ('create_time', models.DateTimeField(
+ default=django.utils.timezone.now,
+ verbose_name='creation time')),
+ ('update_time', models.DateTimeField(
+ blank=True,
+ null=True,
+ verbose_name='last update time')),
+ ('parent_section', models.ForeignKey(
+ blank=True, null=True,
+
+ on_delete=django.db.models.deletion.CASCADE,
+ to='engagementmanager.ChecklistSection')),
],
options={
'db_table': 'ice_checklist_section',
@@ -221,12 +371,27 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='ChecklistTemplate',
fields=[
- ('uuid', models.CharField(default=uuid.uuid4, max_length=36, primary_key=True, serialize=False)),
- ('name', models.CharField(max_length=255, verbose_name='template name')),
- ('category', models.CharField(choices=[('overall', 'overall'), ('heat', 'heat'), ('glance', 'glance'), ('instantiation', 'instantiation'), ('asdc', 'asdc')], default='overall', max_length=36)),
- ('version', models.IntegerField(verbose_name='template version')),
- ('create_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='creation time')),
- ('update_time', models.DateTimeField(blank=True, null=True, verbose_name='last update time')),
+ ('uuid', models.CharField(
+
+ default=uuid.uuid4,
+ max_length=36, primary_key=True, serialize=False)),
+ ('name', models.CharField(max_length=255,
+ verbose_name='template name')),
+ ('category', models.CharField(
+ choices=[('overall', 'overall'),
+ ('heat', 'heat'), ('glance', 'glance'), (
+ 'instantiation', 'instantiation'), ('asdc', 'asdc')],
+ default='overall',
+ max_length=36)),
+ ('version', models.IntegerField(
+ verbose_name='template version')),
+ ('create_time', models.DateTimeField(
+ default=django.utils.timezone.now,
+ verbose_name='creation time')),
+ ('update_time', models.DateTimeField(
+ blank=True,
+ null=True,
+ verbose_name='last update time')),
],
options={
'db_table': 'ice_checklist_template',
@@ -235,10 +400,19 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='CustomUser',
fields=[
- ('user_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to=settings.AUTH_USER_MODEL)),
- ('activation_token', models.CharField(max_length=128, null=True, unique=True)),
- ('activation_token_create_time', models.DateTimeField(default=django.utils.timezone.now, null=True, verbose_name='activation_token_create_time')),
- ('temp_password', models.CharField(blank=True, default=None, max_length=256, null=True)),
+ ('user_ptr', models.OneToOneField(
+ auto_created=True,
+ on_delete=django.db.models.deletion.CASCADE,
+ parent_link=True, primary_key=True, serialize=False,
+ to=settings.AUTH_USER_MODEL)),
+ ('activation_token', models.CharField(
+ max_length=128, null=True, unique=True)),
+ ('activation_token_create_time', models.DateTimeField(
+ default=django.utils.timezone.now, null=True,
+ verbose_name='activation_token_create_time')),
+ ('temp_password', models.CharField(
+
+ blank=True, default=None, max_length=256, null=True)),
],
options={
'db_table': 'ice_custom_user',
@@ -251,7 +425,10 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='DeploymentTarget',
fields=[
- ('uuid', models.CharField(default=uuid.uuid4, max_length=36, primary_key=True, serialize=False)),
+ ('uuid', models.CharField(
+
+ default=uuid.uuid4,
+ max_length=36, primary_key=True, serialize=False)),
('name', models.CharField(max_length=45)),
('version', models.CharField(max_length=100)),
('weight', models.IntegerField(default=1)),
@@ -264,7 +441,10 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='DeploymentTargetSite',
fields=[
- ('uuid', models.CharField(default=uuid.uuid4, max_length=36, primary_key=True, serialize=False)),
+ ('uuid', models.CharField(
+
+ default=uuid.uuid4,
+ max_length=36, primary_key=True, serialize=False)),
('name', models.CharField(max_length=45)),
],
options={
@@ -274,7 +454,10 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='ECOMPRelease',
fields=[
- ('uuid', models.CharField(default=uuid.uuid4, max_length=36, primary_key=True, serialize=False)),
+ ('uuid', models.CharField(
+
+ default=uuid.uuid4,
+ max_length=36, primary_key=True, serialize=False)),
('name', models.CharField(max_length=45)),
('weight', models.IntegerField(default=1)),
('ui_visibility', models.BooleanField(default=True)),
@@ -286,23 +469,68 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='Engagement',
fields=[
- ('uuid', models.CharField(default=uuid.uuid4, max_length=64, primary_key=True, serialize=False)),
- ('engagement_manual_id', models.CharField(db_index=True, default=-1, max_length=36)),
+ ('uuid', models.CharField(
+
+ default=uuid.uuid4,
+ max_length=64, primary_key=True, serialize=False)),
+ ('engagement_manual_id', models.CharField(
+ db_index=True, default=-1, max_length=36)),
('progress', models.IntegerField(default=0)),
- ('target_completion_date', models.DateField(blank=True, default=engagementmanager.models.get_default_target_completion_date, null=True)),
- ('engagement_stage', models.CharField(choices=[('Intake', 'Intake'), ('Active', 'Active'), ('Validated', 'Validated'), ('Completed', 'Completed'), ('Archived', 'Archived')], db_index=True, default='Intake', max_length=15)),
- ('create_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='creation time')),
- ('heat_validated_time', models.DateTimeField(blank=True, null=True, verbose_name='heat validated time')),
- ('image_scan_time', models.DateTimeField(blank=True, null=True, verbose_name='image scan time')),
- ('aic_instantiation_time', models.DateTimeField(blank=True, null=True, verbose_name='aic instantiation time')),
- ('asdc_onboarding_time', models.DateTimeField(blank=True, null=True, verbose_name='asdc onboarding time')),
- ('started_state_time', models.DateTimeField(blank=True, null=True, verbose_name='started state time')),
- ('intake_time', models.DateTimeField(blank=True, null=True, verbose_name='intake time')),
- ('active_time', models.DateTimeField(blank=True, null=True, verbose_name='active time')),
- ('validated_time', models.DateTimeField(blank=True, null=True, verbose_name='validated time')),
- ('completed_time', models.DateTimeField(blank=True, null=True, verbose_name='completed time')),
+ ('target_completion_date', models.DateField(
+
+ blank=True,
+ default=engagementmanager.models.
+ get_default_target_completion_date, null=True)),
+ ('engagement_stage', models.CharField(
+ choices=[('Intake', 'Intake'), ('Active', 'Active'),
+ ('Validated', 'Validated'), (
+ 'Completed', 'Completed'), ('Archived', 'Archived')],
+ db_index=True,
+ default='Intake', max_length=15)),
+ ('create_time', models.DateTimeField(
+ default=django.utils.timezone.now,
+ verbose_name='creation time')),
+ ('heat_validated_time', models.DateTimeField(
+
+ blank=True, null=True,
+ verbose_name='heat validated time')),
+ ('image_scan_time', models.DateTimeField(
+
+ blank=True, null=True,
+ verbose_name='image scan time')),
+ ('aic_instantiation_time', models.DateTimeField(
+
+ blank=True, null=True,
+ verbose_name='aic instantiation time')),
+ ('asdc_onboarding_time', models.DateTimeField(
+
+ blank=True, null=True,
+ verbose_name='asdc onboarding time')),
+ ('started_state_time', models.DateTimeField(
+
+ blank=True, null=True,
+ verbose_name='started state time')),
+ ('intake_time', models.DateTimeField(
+
+ blank=True, null=True,
+ verbose_name='intake time')),
+ ('active_time', models.DateTimeField(
+
+ blank=True, null=True,
+ verbose_name='active time')),
+ ('validated_time', models.DateTimeField(
+
+ blank=True, null=True,
+ verbose_name='validated time')),
+ ('completed_time', models.DateTimeField(
+
+ blank=True, null=True,
+ verbose_name='completed time')),
('archive_reason', models.TextField(default=None, null=True)),
- ('archived_time', models.DateTimeField(blank=True, null=True, verbose_name='archived time')),
+ ('archived_time', models.DateTimeField(
+
+ blank=True, null=True,
+ verbose_name='archived time')),
('is_with_files', models.BooleanField(default=False)),
],
options={
@@ -312,10 +540,15 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='EngagementStatus',
fields=[
- ('uuid', models.CharField(default=uuid.uuid4, max_length=64, primary_key=True, serialize=False)),
+ ('uuid', models.CharField(
+
+ default=uuid.uuid4,
+ max_length=64, primary_key=True, serialize=False)),
('description', models.CharField(max_length=256)),
- ('create_time', models.DateTimeField(default=django.utils.timezone.now)),
- ('update_time', models.DateTimeField(default=django.utils.timezone.now)),
+ ('create_time', models.DateTimeField(
+ default=django.utils.timezone.now)),
+ ('update_time', models.DateTimeField(
+ default=django.utils.timezone.now)),
],
options={
'db_table': 'ice_engagement_status',
@@ -324,9 +557,15 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='Feedback',
fields=[
- ('uuid', models.CharField(default=uuid.uuid4, max_length=36, primary_key=True, serialize=False, unique=True)),
- ('create_time', models.DateTimeField(default=django.utils.timezone.now)),
- ('description', models.TextField(verbose_name='feedback_description')),
+ ('uuid', models.CharField(
+
+ default=uuid.uuid4, max_length=36,
+ primary_key=True, serialize=False, unique=True)),
+ ('create_time', models.DateTimeField(
+ default=django.utils.timezone.now)),
+ ('description', models.TextField(
+
+ verbose_name='feedback_description')),
],
options={
'db_table': 'ice_feedback',
@@ -335,20 +574,41 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='IceUserProfile',
fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('uuid', models.CharField(default=uuid.uuid4, max_length=36, unique=True)),
+ ('id', models.AutoField(auto_created=True,
+ primary_key=True, serialize=False,
+ verbose_name='ID')),
+ ('uuid', models.CharField(
+
+
+ default=uuid.uuid4, max_length=36, unique=True)),
('phone_number', models.CharField(max_length=30)),
('full_name', models.CharField(max_length=30)),
- ('email', models.EmailField(db_index=True, max_length=254, unique=True, verbose_name='email')),
- ('create_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='creation time')),
- ('ssh_public_key', models.CharField(blank=True, max_length=1024, null=True, verbose_name='ssh_public_key')),
+ ('email', models.EmailField(db_index=True,
+ max_length=254, unique=True,
+ verbose_name='email')),
+ ('create_time', models.DateTimeField(
+ default=django.utils.timezone.now,
+ verbose_name='creation time')),
+ ('ssh_public_key', models.CharField(
+ blank=True,
+ max_length=1024, null=True,
+ verbose_name='ssh_public_key')),
('regular_email_updates', models.BooleanField(default=False)),
- ('email_updates_on_every_notification', models.BooleanField(default=True)),
- ('email_updates_daily_digest', models.BooleanField(default=False)),
- ('is_service_provider_contact', models.BooleanField(default=False)),
- ('rgwa_access_key', models.CharField(blank=True, max_length=1024, null=True, unique=True)),
- ('rgwa_secret_key', models.CharField(blank=True, max_length=1024, null=True, unique=True)),
- ('slack_handle', models.CharField(blank=True, default=None, max_length=64, null=True)),
+ ('email_updates_on_every_notification',
+ models.BooleanField(default=True)),
+ ('email_updates_daily_digest',
+ models.BooleanField(default=False)),
+ ('is_service_provider_contact',
+ models.BooleanField(default=False)),
+ ('rgwa_access_key', models.CharField(
+
+ blank=True, max_length=1024, null=True, unique=True)),
+ ('rgwa_secret_key', models.CharField(
+
+ blank=True, max_length=1024, null=True, unique=True)),
+ ('slack_handle', models.CharField(
+
+ blank=True, default=None, max_length=64, null=True)),
],
options={
'db_table': 'ice_user_profile',
@@ -357,13 +617,21 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='Invitation',
fields=[
- ('uuid', models.CharField(default=uuid.uuid4, max_length=36, primary_key=True, serialize=False)),
- ('engagement_uuid', models.CharField(db_index=True, max_length=64)),
- ('invited_by_user_uuid', models.CharField(db_index=True, max_length=64)),
+ ('uuid', models.CharField(
+
+ default=uuid.uuid4,
+ max_length=36, primary_key=True, serialize=False)),
+ ('engagement_uuid', models.CharField(
+ db_index=True, max_length=64)),
+ ('invited_by_user_uuid', models.CharField(
+ db_index=True, max_length=64)),
('email', models.CharField(max_length=255)),
- ('invitation_token', models.CharField(db_index=True, max_length=1024)),
+ ('invitation_token', models.CharField(
+ db_index=True, max_length=1024)),
('accepted', models.BooleanField(default=False)),
- ('create_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='invitation creation time')),
+ ('create_time', models.DateTimeField(
+ default=django.utils.timezone.now,
+ verbose_name='invitation creation time')),
],
options={
'db_table': 'ice_invitation',
@@ -372,22 +640,60 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='NextStep',
fields=[
- ('uuid', models.CharField(default=uuid.uuid4, max_length=36, primary_key=True, serialize=False)),
- ('create_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='creation time')),
- ('last_update_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='last update time')),
- ('last_update_type', models.CharField(default='Added', max_length=15)),
+ ('uuid', models.CharField(
+
+ default=uuid.uuid4,
+ max_length=36, primary_key=True, serialize=False)),
+ ('create_time', models.DateTimeField(
+ default=django.utils.timezone.now,
+ verbose_name='creation time')),
+ ('last_update_time', models.DateTimeField(
+ default=django.utils.timezone.now,
+ verbose_name='last update time')),
+ ('last_update_type', models.CharField(
+ default='Added', max_length=15)),
('position', models.IntegerField()),
('description', models.TextField()),
- ('state', models.CharField(choices=[('Incomplete', 'Incomplete'), ('Completed', 'Completed')], max_length=15)),
+ ('state', models.CharField(
+ choices=[
+ ('Incomplete', 'Incomplete'),
+ ('Completed', 'Completed')], max_length=15)),
('engagement_stage', models.CharField(max_length=15)),
- ('next_step_type', models.CharField(choices=[('set_ssh', 'set_ssh'), ('trial_agreements', 'trial_agreements'), ('add_contact_person', 'add_contact_person'), ('submit_vf_package', 'submit_vf_package'), ('el_handoff', 'el_handoff'), ('user_defined', 'user_defined')], default='user_defined', max_length=36)),
- ('files', models.TextField(null=True, verbose_name='list of files')),
- ('due_date', models.DateField(null=True, verbose_name='due_date')),
- ('assignees', models.ManyToManyField(related_name='assignees', to='engagementmanager.IceUserProfile')),
- ('creator', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='NextStep_creator', to='engagementmanager.IceUserProfile')),
- ('engagement', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='engagementmanager.Engagement')),
- ('last_updater', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='NextStep_last_updater', to='engagementmanager.IceUserProfile')),
- ('owner', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='engagementmanager.IceUserProfile')),
+ ('next_step_type', models.CharField(
+ choices=[('set_ssh', 'set_ssh'),
+ ('trial_agreements', 'trial_agreements'),
+ ('add_contact_person', 'add_contact_person'), (
+ 'submit_vf_package', 'submit_vf_package'),
+ ('el_handoff', 'el_handoff'),
+ ('user_defined', 'user_defined')],
+ default='user_defined',
+ max_length=36)),
+ ('files', models.TextField(null=True,
+ verbose_name='list of files')),
+ ('due_date', models.DateField(null=True,
+ verbose_name='due_date')),
+ ('assignees', models.ManyToManyField(
+ related_name='assignees',
+ to='engagementmanager.IceUserProfile')),
+ ('creator', models.ForeignKey(
+ on_delete=django.db.models.deletion.PROTECT,
+ related_name='NextStep_creator',
+ to='engagementmanager.IceUserProfile')),
+ ('engagement', models.ForeignKey(
+ blank=True, null=True,
+
+ on_delete=django.db.models.deletion.PROTECT,
+ to='engagementmanager.Engagement')),
+ ('last_updater', models.ForeignKey(
+ null=True,
+ on_delete=django.db.models.deletion.PROTECT,
+ related_name='NextStep_last_updater',
+ to='engagementmanager.IceUserProfile')),
+ ('owner', models.ForeignKey(
+ blank=True, null=True,
+
+ on_delete=django.db.models.deletion.PROTECT,
+ to='engagementmanager.IceUserProfile')),
],
options={
'verbose_name_plural': 'Next steps',
@@ -397,11 +703,20 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='Notification',
fields=[
- ('uuid', models.CharField(default=uuid.uuid4, max_length=36, primary_key=True, serialize=False, unique=True)),
+ ('uuid', models.CharField(
+
+ default=uuid.uuid4, max_length=36,
+ primary_key=True, serialize=False, unique=True)),
('is_sent', models.BooleanField(default=False)),
('is_read', models.BooleanField(default=False)),
- ('activity', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='engagementmanager.Activity')),
- ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='engagementmanager.IceUserProfile')),
+ ('activity', models.ForeignKey(
+ null=True,
+ on_delete=django.db.models.deletion.CASCADE,
+ to='engagementmanager.Activity')),
+ ('user', models.ForeignKey(
+
+ on_delete=django.db.models.deletion.CASCADE,
+ to='engagementmanager.IceUserProfile')),
],
options={
'db_table': 'ice_notification',
@@ -410,10 +725,23 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='RecentEngagement',
fields=[
- ('uuid', models.CharField(default=uuid.uuid4, max_length=64, primary_key=True, serialize=False)),
+ ('uuid', models.CharField(
+
+ default=uuid.uuid4,
+ max_length=64, primary_key=True, serialize=False)),
('user_uuid', models.CharField(max_length=64)),
- ('action_type', models.CharField(choices=[('JOINED_TO_ENGAGEMENT', 'JOINED_TO_ENGAGEMENT'), ('NEXT_STEP_ASSIGNED', 'NEXT_STEP_ASSIGNED'), ('GOT_OWNERSHIP_OVER_ENGAGEMENT', 'GOT_OWNERSHIP_OVER_ENGAGEMENT'), ('NAVIGATED_INTO_ENGAGEMENT', 'NAVIGATED_INTO_ENGAGEMENT'), ('NEW_VF_CREATED', 'NEW_VF_CREATED')], max_length=36)),
- ('last_update', models.DateTimeField(default=django.utils.timezone.now, verbose_name='update time')),
+ ('action_type', models.CharField(
+ choices=[('JOINED_TO_ENGAGEMENT', 'JOINED_TO_ENGAGEMENT'),
+ ('NEXT_STEP_ASSIGNED', 'NEXT_STEP_ASSIGNED'), (
+ 'GOT_OWNERSHIP_OVER_ENGAGEMENT',
+ 'GOT_OWNERSHIP_OVER_ENGAGEMENT'),
+ ('NAVIGATED_INTO_ENGAGEMENT',
+ 'NAVIGATED_INTO_ENGAGEMENT'),
+ ('NEW_VF_CREATED', 'NEW_VF_CREATED')],
+ max_length=36)),
+ ('last_update', models.DateTimeField(
+ default=django.utils.timezone.now,
+ verbose_name='update time')),
],
options={
'db_table': 'ice_recent_engagement',
@@ -422,8 +750,13 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='Role',
fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('uuid', models.CharField(default=uuid.uuid4, max_length=36, unique=True)),
+ ('id', models.AutoField(auto_created=True,
+ primary_key=True, serialize=False,
+ verbose_name='ID')),
+ ('uuid', models.CharField(
+
+
+ default=uuid.uuid4, max_length=36, unique=True)),
('name', models.CharField(max_length=36, unique=True)),
],
options={
@@ -433,8 +766,13 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='Vendor',
fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('uuid', models.CharField(default=uuid.uuid4, max_length=36, unique=True)),
+ ('id', models.AutoField(auto_created=True,
+ primary_key=True, serialize=False,
+ verbose_name='ID')),
+ ('uuid', models.CharField(
+
+
+ default=uuid.uuid4, max_length=36, unique=True)),
('name', models.CharField(max_length=100, unique=True)),
('public', models.BooleanField()),
],
@@ -446,16 +784,40 @@ class Migration(migrations.Migration):
name='VF',
fields=[
('name', models.CharField(db_index=True, max_length=100)),
- ('version', models.CharField(db_index=True, max_length=100, null=True)),
- ('uuid', models.CharField(default=uuid.uuid4, max_length=36, primary_key=True, serialize=False, unique=True)),
- ('is_service_provider_internal', models.BooleanField(default=False)),
- ('git_repo_url', models.CharField(default=-1, max_length=512)),
- ('target_lab_entry_date', models.DateField(verbose_name='target_lab_entry_date')),
- ('deployment_target', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='engagementmanager.DeploymentTarget')),
- ('deployment_target_sites', models.ManyToManyField(blank=True, default=None, related_name='DeployTarget_sites', to='engagementmanager.DeploymentTargetSite')),
- ('ecomp_release', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='engagementmanager.ECOMPRelease')),
- ('engagement', models.OneToOneField(default=-1, on_delete=django.db.models.deletion.CASCADE, to='engagementmanager.Engagement')),
- ('vendor', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='engagementmanager.Vendor')),
+ ('version', models.CharField(
+ db_index=True, max_length=100, null=True)),
+ ('uuid', models.CharField(
+
+ default=uuid.uuid4, max_length=36,
+ primary_key=True, serialize=False, unique=True)),
+ ('is_service_provider_internal',
+ models.BooleanField(default=False)),
+ ('git_repo_url', models.CharField(default=-1,
+ max_length=512)),
+ ('target_lab_entry_date', models.DateField(
+
+ verbose_name='target_lab_entry_date')),
+ ('deployment_target', models.ForeignKey(
+ blank=True, null=True,
+
+ on_delete=django.db.models.deletion.SET_NULL,
+ to='engagementmanager.DeploymentTarget')),
+ ('deployment_target_sites', models.ManyToManyField(
+ blank=True, default=None,
+ related_name='DeployTarget_sites',
+ to='engagementmanager.DeploymentTargetSite')),
+ ('ecomp_release', models.ForeignKey(
+ null=True,
+ on_delete=django.db.models.deletion.CASCADE,
+ to='engagementmanager.ECOMPRelease')),
+ ('engagement', models.OneToOneField(
+ default=-1,
+ on_delete=django.db.models.deletion.CASCADE,
+ to='engagementmanager.Engagement')),
+ ('vendor', models.ForeignKey(
+
+ on_delete=django.db.models.deletion.PROTECT,
+ to='engagementmanager.Vendor')),
],
options={
'db_table': 'ice_vf',
@@ -464,14 +826,31 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='VFC',
fields=[
- ('uuid', models.CharField(default=uuid.uuid4, max_length=36, primary_key=True, serialize=False, unique=True)),
+ ('uuid', models.CharField(
+
+ default=uuid.uuid4, max_length=36,
+ primary_key=True, serialize=False, unique=True)),
('name', models.CharField(db_index=True, max_length=100)),
- ('external_ref_id', models.CharField(default='', max_length=20)),
+ ('external_ref_id', models.CharField(default='',
+ max_length=20)),
('ice_mandated', models.BooleanField(default=False)),
- ('create_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='creation time')),
- ('company', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='engagementmanager.Vendor')),
- ('creator', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='Vfc_creator', to='engagementmanager.IceUserProfile')),
- ('vf', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='engagementmanager.VF')),
+ ('create_time', models.DateTimeField(
+ default=django.utils.timezone.now,
+
+ verbose_name='creation time')),
+ ('company', models.ForeignKey(
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ to='engagementmanager.Vendor')),
+ ('creator', models.ForeignKey(
+ blank=True, null=True,
+ on_delete=django.db.models.deletion.PROTECT,
+ related_name='Vfc_creator',
+ to='engagementmanager.IceUserProfile')),
+ ('vf', models.ForeignKey(
+
+ on_delete=django.db.models.deletion.PROTECT,
+ to='engagementmanager.VF')),
],
options={
'db_table': 'ice_vfc',
@@ -480,7 +859,10 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='recentengagement',
name='vf',
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='engagementmanager.VF'),
+ field=models.ForeignKey(
+
+ on_delete=django.db.models.deletion.CASCADE,
+ to='engagementmanager.VF'),
),
migrations.AlterUniqueTogether(
name='invitation',
@@ -489,62 +871,102 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='iceuserprofile',
name='company',
- field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, to='engagementmanager.Vendor'),
+ field=models.ForeignKey(
+ null=True,
+ on_delete=django.db.models.deletion.PROTECT,
+ to='engagementmanager.Vendor'),
),
migrations.AddField(
model_name='iceuserprofile',
name='role',
- field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, to='engagementmanager.Role'),
+ field=models.ForeignKey(
+ null=True,
+ on_delete=django.db.models.deletion.PROTECT,
+ to='engagementmanager.Role'),
),
migrations.AddField(
model_name='iceuserprofile',
name='user',
- field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='engagementmanager.CustomUser'),
+ field=models.OneToOneField(
+
+ on_delete=django.db.models.deletion.CASCADE,
+ to='engagementmanager.CustomUser'),
),
migrations.AddField(
model_name='feedback',
name='user',
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='engagementmanager.IceUserProfile'),
+ field=models.ForeignKey(
+
+ on_delete=django.db.models.deletion.CASCADE,
+ to='engagementmanager.IceUserProfile'),
),
migrations.AddField(
model_name='engagementstatus',
name='creator',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='status_creator', to='engagementmanager.IceUserProfile'),
+ field=models.ForeignKey(
+ blank=True, null=True,
+ on_delete=django.db.models.deletion.PROTECT,
+ related_name='status_creator',
+ to='engagementmanager.IceUserProfile'),
),
migrations.AddField(
model_name='engagementstatus',
name='engagement',
- field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='engagementmanager.Engagement'),
+ field=models.ForeignKey(
+
+ on_delete=django.db.models.deletion.PROTECT,
+ to='engagementmanager.Engagement'),
),
migrations.AddField(
model_name='engagement',
name='contact_user',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='Engagement_contact_user', to='engagementmanager.IceUserProfile'),
+ field=models.ForeignKey(
+ blank=True, null=True,
+ on_delete=django.db.models.deletion.PROTECT,
+ related_name='Engagement_contact_user',
+ to='engagementmanager.IceUserProfile'),
),
migrations.AddField(
model_name='engagement',
name='creator',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='Engagement_creator', to='engagementmanager.IceUserProfile'),
+ field=models.ForeignKey(
+ blank=True, null=True,
+ on_delete=django.db.models.deletion.PROTECT,
+ related_name='Engagement_creator',
+ to='engagementmanager.IceUserProfile'),
),
migrations.AddField(
model_name='engagement',
name='engagement_team',
- field=models.ManyToManyField(related_name='members', to='engagementmanager.IceUserProfile'),
+ field=models.ManyToManyField(
+ related_name='members',
+ to='engagementmanager.IceUserProfile'),
),
migrations.AddField(
model_name='engagement',
name='peer_reviewer',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='Engagement_peer_reviewer', to='engagementmanager.IceUserProfile'),
+ field=models.ForeignKey(
+ blank=True, null=True,
+ on_delete=django.db.models.deletion.PROTECT,
+ related_name='Engagement_peer_reviewer',
+ to='engagementmanager.IceUserProfile'),
),
migrations.AddField(
model_name='engagement',
name='reviewer',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='Engagement_el_reviewer', to='engagementmanager.IceUserProfile'),
+ field=models.ForeignKey(
+ blank=True, null=True,
+ on_delete=django.db.models.deletion.PROTECT,
+ related_name='Engagement_el_reviewer',
+ to='engagementmanager.IceUserProfile'),
),
migrations.AddField(
model_name='engagement',
name='starred_engagement',
- field=models.ManyToManyField(blank=True, default=None, to='engagementmanager.IceUserProfile'),
+ field=models.ManyToManyField(
+
+ blank=True, default=None,
+ to='engagementmanager.IceUserProfile'),
),
migrations.AlterUniqueTogether(
name='deploymenttarget',
@@ -553,57 +975,93 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='checklistsection',
name='template',
- field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='engagementmanager.ChecklistTemplate'),
+ field=models.ForeignKey(
+
+ on_delete=django.db.models.deletion.PROTECT,
+ to='engagementmanager.ChecklistTemplate'),
),
migrations.AddField(
model_name='checklistlineitem',
name='section',
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='engagementmanager.ChecklistSection'),
+ field=models.ForeignKey(
+
+ on_delete=django.db.models.deletion.CASCADE,
+ to='engagementmanager.ChecklistSection'),
),
migrations.AddField(
model_name='checklistlineitem',
name='template',
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='engagementmanager.ChecklistTemplate'),
+ field=models.ForeignKey(
+
+ on_delete=django.db.models.deletion.CASCADE,
+ to='engagementmanager.ChecklistTemplate'),
),
migrations.AddField(
model_name='checklistdecision',
name='lineitem',
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='engagementmanager.ChecklistLineItem'),
+ field=models.ForeignKey(
+
+ on_delete=django.db.models.deletion.CASCADE,
+ to='engagementmanager.ChecklistLineItem'),
),
migrations.AddField(
model_name='checklistdecision',
name='template',
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='engagementmanager.ChecklistTemplate'),
+ field=models.ForeignKey(
+
+ on_delete=django.db.models.deletion.CASCADE,
+ to='engagementmanager.ChecklistTemplate'),
),
migrations.AddField(
model_name='checklistauditlog',
name='creator',
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='engagementmanager.IceUserProfile'),
+ field=models.ForeignKey(
+
+ on_delete=django.db.models.deletion.CASCADE,
+ to='engagementmanager.IceUserProfile'),
),
migrations.AddField(
model_name='checklistauditlog',
name='decision',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='engagementmanager.ChecklistDecision'),
+ field=models.ForeignKey(
+
+ blank=True, null=True,
+
+ on_delete=django.db.models.deletion.CASCADE,
+ to='engagementmanager.ChecklistDecision'),
),
migrations.AddField(
model_name='checklist',
name='creator',
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='checklist_creator', to='engagementmanager.IceUserProfile'),
+ field=models.ForeignKey(
+
+ on_delete=django.db.models.deletion.CASCADE,
+ related_name='checklist_creator',
+ to='engagementmanager.IceUserProfile'),
),
migrations.AddField(
model_name='checklist',
name='engagement',
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='engagementmanager.Engagement'),
+ field=models.ForeignKey(
+
+ on_delete=django.db.models.deletion.CASCADE,
+ to='engagementmanager.Engagement'),
),
migrations.AddField(
model_name='checklist',
name='owner',
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='checklist_owner', to='engagementmanager.IceUserProfile'),
+ field=models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE,
+ related_name='checklist_owner',
+ to='engagementmanager.IceUserProfile'),
),
migrations.AddField(
model_name='checklist',
name='template',
- field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='engagementmanager.ChecklistTemplate'),
+ field=models.ForeignKey(
+
+ on_delete=django.db.models.deletion.PROTECT,
+ to='engagementmanager.ChecklistTemplate'),
),
migrations.AlterUniqueTogether(
name='applicationserviceinfrastructure',
@@ -612,12 +1070,18 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='activity',
name='activity_owner',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='engagementmanager.IceUserProfile'),
+ field=models.ForeignKey(
+ blank=True, null=True,
+ on_delete=django.db.models.deletion.CASCADE,
+ to='engagementmanager.IceUserProfile'),
),
migrations.AddField(
model_name='activity',
name='engagement',
- field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, to='engagementmanager.Engagement'),
+ field=models.ForeignKey(
+ null=True,
+ on_delete=django.db.models.deletion.PROTECT,
+ to='engagementmanager.Engagement'),
),
migrations.AlterIndexTogether(
name='notification',
diff --git a/django/engagementmanager/migrations/0002_auto_20160704_1028.py b/django/engagementmanager/migrations/0002_auto_20160704_1028.py
index 682394a..a32c2d2 100644
--- a/django/engagementmanager/migrations/0002_auto_20160704_1028.py
+++ b/django/engagementmanager/migrations/0002_auto_20160704_1028.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -85,24 +85,34 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='engagement',
name='create_time',
- field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='creation time'),
+ field=models.DateTimeField(
+ default=django.utils.timezone.now,
+ verbose_name='creation time'),
),
migrations.AddField(
model_name='engagement',
name='creator',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT,
- related_name='Engagement_creator', to='engagementmanager.IceUser'),
+ field=models.ForeignKey(
+ blank=True, null=True,
+ on_delete=django.db.models.deletion.PROTECT,
+ related_name='Engagement_creator',
+ to='engagementmanager.IceUser'),
),
migrations.AddField(
model_name='vfc',
name='create_time',
- field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='creation time'),
+ field=models.DateTimeField(
+ default=django.utils.timezone.now,
+ verbose_name='creation time'),
),
migrations.AddField(
model_name='vfc',
name='creator',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT,
- related_name='Vfc_creator', to='engagementmanager.IceUser'),
+ field=models.ForeignKey(
+ blank=True, null=True,
+ on_delete=django.db.models.deletion.PROTECT,
+ related_name='Vfc_creator',
+ to='engagementmanager.IceUser'),
),
migrations.AddField(
model_name='vfc',
@@ -117,20 +127,29 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='activity',
name='activity_owner',
- field=models.ForeignKey(blank=True, null=True,
- on_delete=django.db.models.deletion.CASCADE, to='engagementmanager.IceUser'),
+ field=models.ForeignKey(
+ blank=True, null=True,
+ on_delete=django.db.models.deletion.CASCADE,
+ to='engagementmanager.IceUser'),
),
migrations.AlterField(
model_name='activity',
name='activity_type',
- field=models.CharField(choices=[(b'3', b'eng_validation_request'), (b'4', b'next_steps'),
- (b'2', b'ssh_key_added'), (b'1', b'user_joined_eng'), (b'5', b'vfc')], max_length=36),
+ field=models.CharField(
+ choices=[(b'3', b'eng_validation_request'),
+ (b'4', b'next_steps'),
+ (b'2', b'ssh_key_added'),
+ (b'1', b'user_joined_eng'),
+ (b'5', b'vfc')], max_length=36),
),
migrations.AlterField(
model_name='engagement',
name='contact_user',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT,
- related_name='Engagement_contact_user', to='engagementmanager.IceUser'),
+ field=models.ForeignKey(
+ blank=True, null=True,
+ on_delete=django.db.models.deletion.PROTECT,
+ related_name='Engagement_contact_user',
+ to='engagementmanager.IceUser'),
),
migrations.AlterField(
model_name='engagement',
@@ -146,7 +165,9 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='vfc',
name='uuid',
- field=models.CharField(max_length=36, primary_key=True, serialize=False, unique=True),
+ field=models.CharField(
+ max_length=36, primary_key=True,
+ serialize=False, unique=True),
),
migrations.AlterUniqueTogether(
name='vfc',
diff --git a/django/engagementmanager/migrations/0003_auto_20160713_0929.py b/django/engagementmanager/migrations/0003_auto_20160713_0929.py
index 3bc94a0..39cc9cb 100644
--- a/django/engagementmanager/migrations/0003_auto_20160713_0929.py
+++ b/django/engagementmanager/migrations/0003_auto_20160713_0929.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -56,30 +56,61 @@ class Migration(migrations.Migration):
operations = [
migrations.AlterModelOptions(
name='nextstep',
- options={'verbose_name_plural': 'Next steps'},
+ options={
+ 'verbose_name_plural': 'Next steps'},
),
migrations.AddField(
model_name='nextstep',
name='next_step_type',
- field=models.CharField(choices=[(b'(3,)', b'add_contact_person'), (b'(5,)', b'el_handoff'), (b'(1,)', b'set_ssh'), (
- b'(4,)', b'submit_vf_package'), (b'(2,)', b'trial_agreements'), (b'6', b'user_defined')], default=b'user_defined', max_length=36),
+ field=models.CharField(
+ choices=[
+ (b'(3,)',
+ b'add_contact_person'),
+ (b'(5,)',
+ b'el_handoff'),
+ (b'(1,)',
+ b'set_ssh'),
+ (b'(4,)',
+ b'submit_vf_package'),
+ (b'(2,)',
+ b'trial_agreements'),
+ (b'6',
+ b'user_defined')],
+ default=b'user_defined',
+ max_length=36),
),
migrations.AddField(
model_name='nextstep',
name='owner',
- field=models.ForeignKey(blank=True, null=True,
- on_delete=django.db.models.deletion.PROTECT, to='engagementmanager.IceUser'),
+ field=models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.PROTECT,
+ to='engagementmanager.IceUser'),
),
migrations.AlterField(
model_name='engagement',
name='target_completion_date',
- field=models.DateField(blank=True, default=datetime.datetime(
- 2016, 7, 29, 9, 29, 32, 642800, tzinfo=utc), null=True),
+ field=models.DateField(
+ blank=True,
+ default=datetime.datetime(
+ 2016,
+ 7,
+ 29,
+ 9,
+ 29,
+ 32,
+ 642800,
+ tzinfo=utc),
+ null=True),
),
migrations.AlterField(
model_name='nextstep',
name='engagement',
- field=models.ForeignKey(blank=True, null=True,
- on_delete=django.db.models.deletion.PROTECT, to='engagementmanager.Engagement'),
+ field=models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.PROTECT,
+ to='engagementmanager.Engagement'),
),
]
diff --git a/django/engagementmanager/migrations/0004_auto_20160720_2143.py b/django/engagementmanager/migrations/0004_auto_20160720_2143.py
index cfc04d3..452770f 100644
--- a/django/engagementmanager/migrations/0004_auto_20160720_2143.py
+++ b/django/engagementmanager/migrations/0004_auto_20160720_2143.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -57,12 +57,27 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='iceuser',
name='temp_password',
- field=models.CharField(blank=True, default=None, max_length=256, null=True, unique=True),
+ field=models.CharField(
+ blank=True,
+ default=None,
+ max_length=256,
+ null=True,
+ unique=True),
),
migrations.AlterField(
model_name='engagement',
name='target_completion_date',
- field=models.DateField(blank=True, default=datetime.datetime(
- 2016, 8, 5, 18, 43, 43, 473000, tzinfo=utc), null=True),
+ field=models.DateField(
+ blank=True,
+ default=datetime.datetime(
+ 2016,
+ 8,
+ 5,
+ 18,
+ 43,
+ 43,
+ 473000,
+ tzinfo=utc),
+ null=True),
),
]
diff --git a/django/engagementmanager/migrations/0005_auto_20160815_1248.py b/django/engagementmanager/migrations/0005_auto_20160815_1248.py
index decbe51..35b4878 100644
--- a/django/engagementmanager/migrations/0005_auto_20160815_1248.py
+++ b/django/engagementmanager/migrations/0005_auto_20160815_1248.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -56,7 +56,8 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='DeploymentTargetSite',
fields=[
- ('uuid', models.CharField(max_length=36, primary_key=True, serialize=False)),
+ ('uuid', models.CharField(max_length=36,
+ primary_key=True, serialize=False)),
('name', models.CharField(max_length=45)),
],
options={
@@ -72,24 +73,30 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='vfc',
name='company',
- field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL,
- to='engagementmanager.Vendor'),
+ field=models.ForeignKey(
+ null=True, on_delete=django.db.models.deletion.SET_NULL,
+ to='engagementmanager.Vendor'),
),
migrations.AlterField(
model_name='engagement',
name='target_completion_date',
field=models.DateField(
- blank=True, default=engagementmanager.models.get_default_target_completion_date, null=True),
+ blank=True,
+ default=engagementmanager.models.
+ get_default_target_completion_date, null=True),
),
migrations.AlterField(
model_name='iceuser',
name='temp_password',
- field=models.CharField(blank=True, default=None, max_length=256, null=True),
+ field=models.CharField(
+ blank=True, default=None, max_length=256, null=True),
),
migrations.AddField(
model_name='vf',
name='deployment_target_sites',
- field=models.ManyToManyField(blank=True, default=None, related_name='DeployTarget_sites',
- to='engagementmanager.DeploymentTargetSite'),
+ field=models.ManyToManyField(
+ blank=True, default=None,
+ related_name='DeployTarget_sites',
+ to='engagementmanager.DeploymentTargetSite'),
),
]
diff --git a/django/engagementmanager/migrations/0006_auto_20160825_0644.py b/django/engagementmanager/migrations/0006_auto_20160825_0644.py
index 285631d..d361a3d 100644
--- a/django/engagementmanager/migrations/0006_auto_20160825_0644.py
+++ b/django/engagementmanager/migrations/0006_auto_20160825_0644.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -55,17 +55,38 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='Checklist',
fields=[
- ('uuid', models.CharField(max_length=36, primary_key=True, serialize=False)),
- ('name', models.CharField(max_length=255, verbose_name='checklist name')),
- ('state', models.CharField(choices=[(b'(4,)', b'approval'), (b'(7,)', b'archive'), (b'(1,)', b'automation'), (b'(6,)', b'closed'), (
- b'(5,)', b'handoff'), (b'(3,)', b'peer_review'), (b'8', b'pending'), (b'(2,)', b'review')], default=b'automation', max_length=36)),
- ('validation_cycle', models.IntegerField(verbose_name='validation cycle')),
- ('weight', models.FloatField(default=0, verbose_name='checklist weight')),
- ('associated_files', models.TextField(verbose_name='list of files from gitlab')),
- ('create_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='creation time')),
- ('update_time', models.DateTimeField(blank=True, null=True, verbose_name='last update time')),
- ('creator', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE,
- related_name='checklist_creator', to='engagementmanager.IceUser')),
+ ('uuid', models.CharField(max_length=36,
+ primary_key=True, serialize=False)),
+ ('name', models.CharField(
+ max_length=255,
+ verbose_name='checklist name')),
+ ('state', models.CharField(
+ choices=[(b'(4,)', b'approval'),
+ (b'(7,)', b'archive'),
+ (b'(1,)', b'automation'), (b'(6,)', b'closed'), (
+ b'(5,)', b'handoff'), (b'(3,)', b'peer_review'),
+ (b'8', b'pending'), (b'(2,)', b'review')],
+ default=b'automation', max_length=36)),
+ ('validation_cycle', models.IntegerField(
+
+ verbose_name='validation cycle')),
+ ('weight', models.FloatField(
+ default=0,
+ verbose_name='checklist weight')),
+ ('associated_files', models.TextField(
+
+ verbose_name='list of files from gitlab')),
+ ('create_time', models.DateTimeField(
+ default=django.utils.timezone.now,
+ verbose_name='creation time')),
+ ('update_time', models.DateTimeField(
+ blank=True,
+ null=True,
+ verbose_name='last update time')),
+ ('creator', models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE,
+ related_name='checklist_creator',
+ to='engagementmanager.IceUser')),
],
options={
'db_table': 'ice_checklist',
@@ -74,15 +95,25 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='ChecklistAuditLog',
fields=[
- ('uuid', models.CharField(max_length=36, primary_key=True, serialize=False)),
+ ('uuid', models.CharField(max_length=36,
+ primary_key=True, serialize=False)),
('category', models.CharField(max_length=255)),
('description', models.TextField()),
- ('create_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='creation time')),
- ('update_time', models.DateTimeField(blank=True, null=True, verbose_name='last update time')),
- ('checklist', models.ForeignKey(blank=True, null=True,
- on_delete=django.db.models.deletion.CASCADE, to='engagementmanager.Checklist')),
+ ('create_time', models.DateTimeField(
+ default=django.utils.timezone.now,
+ verbose_name='creation time')),
+ ('update_time', models.DateTimeField(
+ blank=True,
+ null=True,
+ verbose_name='last update time')),
+ ('checklist', models.ForeignKey(
+ blank=True, null=True,
+ on_delete=django.db.models.deletion.CASCADE,
+ to='engagementmanager.Checklist')),
('creator', models.ForeignKey(
- on_delete=django.db.models.deletion.CASCADE, to='engagementmanager.IceUser')),
+
+ on_delete=django.db.models.deletion.CASCADE,
+ to='engagementmanager.IceUser')),
],
options={
'db_table': 'ice_checklist_audit_log',
@@ -91,15 +122,25 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='ChecklistDecision',
fields=[
- ('uuid', models.CharField(max_length=36, primary_key=True, serialize=False)),
+ ('uuid', models.CharField(max_length=36,
+ primary_key=True, serialize=False)),
('review_value', models.CharField(choices=[
- (b'(1,)', b'approved'), (b'(2,)', b'denied'), (b'4', b'na'), (b'(3,)', b'not_relevant')], max_length=36)),
+ (b'(1,)', b'approved'), (b'(2,)', b'denied'), (b'4', b'na'),
+ (b'(3,)', b'not_relevant')], max_length=36)),
('peer_review_value', models.CharField(choices=[
- (b'(1,)', b'approved'), (b'(2,)', b'denied'), (b'4', b'na'), (b'(3,)', b'not_relevant')], max_length=36)),
- ('create_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='creation time')),
- ('update_time', models.DateTimeField(blank=True, null=True, verbose_name='last update time')),
+ (b'(1,)', b'approved'), (b'(2,)', b'denied'), (b'4', b'na'),
+ (b'(3,)', b'not_relevant')], max_length=36)),
+ ('create_time', models.DateTimeField(
+ default=django.utils.timezone.now,
+ verbose_name='creation time')),
+ ('update_time', models.DateTimeField(
+ blank=True,
+ null=True,
+ verbose_name='last update time')),
('checklist', models.ForeignKey(
- on_delete=django.db.models.deletion.CASCADE, to='engagementmanager.Checklist')),
+
+ on_delete=django.db.models.deletion.CASCADE,
+ to='engagementmanager.Checklist')),
],
options={
'db_table': 'ice_checklist_decision',
@@ -108,15 +149,27 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='ChecklistLineItem',
fields=[
- ('uuid', models.CharField(max_length=36, primary_key=True, serialize=False)),
- ('name', models.CharField(max_length=255, verbose_name='line name')),
+ ('uuid', models.CharField(max_length=36,
+ primary_key=True, serialize=False)),
+ ('name', models.CharField(max_length=255,
+ verbose_name='line name')),
('weight', models.FloatField(verbose_name='line weight')),
- ('description', models.TextField(verbose_name='line description')),
- ('line_type', models.CharField(choices=[(b'(1,)', b'auto'),
- (b'2', b'manual')], default=b'auto', max_length=36)),
- ('validation_instructions', models.TextField(verbose_name='line validation instructions')),
- ('create_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='creation time')),
- ('update_time', models.DateTimeField(blank=True, null=True, verbose_name='last update time')),
+ ('description', models.TextField(
+ verbose_name='line description')),
+ ('line_type', models.CharField(
+ choices=[(b'(1,)', b'auto'),
+ (b'2', b'manual')],
+ default=b'auto', max_length=36)),
+ ('validation_instructions', models.TextField(
+
+ verbose_name='line validation instructions')),
+ ('create_time', models.DateTimeField(
+ default=django.utils.timezone.now,
+ verbose_name='creation time')),
+ ('update_time', models.DateTimeField(
+ blank=True,
+ null=True,
+ verbose_name='last update time')),
],
options={
'db_table': 'ice_checklist_line_item',
@@ -125,15 +178,28 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='ChecklistSection',
fields=[
- ('uuid', models.CharField(max_length=36, primary_key=True, serialize=False)),
- ('name', models.CharField(max_length=255, verbose_name='section name')),
+ ('uuid', models.CharField(max_length=36,
+ primary_key=True, serialize=False)),
+ ('name', models.CharField(max_length=255,
+ verbose_name='section name')),
('weight', models.FloatField(verbose_name='checklist weight')),
- ('description', models.TextField(verbose_name='section description')),
- ('validation_instructions', models.TextField(verbose_name='section validation instructions')),
- ('create_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='creation time')),
- ('update_time', models.DateTimeField(blank=True, null=True, verbose_name='last update time')),
- ('parent_section', models.ForeignKey(blank=True, null=True,
- on_delete=django.db.models.deletion.CASCADE, to='engagementmanager.ChecklistSection')),
+ ('description', models.TextField(
+
+ verbose_name='section description')),
+ ('validation_instructions', models.TextField(
+
+ verbose_name='section validation instructions')),
+ ('create_time', models.DateTimeField(
+ default=django.utils.timezone.now,
+ verbose_name='creation time')),
+ ('update_time', models.DateTimeField(
+ blank=True,
+ null=True,
+ verbose_name='last update time')),
+ ('parent_section',
+ models.ForeignKey(blank=True, null=True,
+ on_delete=django.db.models.deletion.CASCADE,
+ to='engagementmanager.ChecklistSection')),
],
options={
'db_table': 'ice_checklist_section',
@@ -142,13 +208,24 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='ChecklistTemplate',
fields=[
- ('uuid', models.CharField(max_length=36, primary_key=True, serialize=False)),
- ('name', models.CharField(max_length=255, verbose_name='template name')),
- ('category', models.CharField(choices=[
- (b'3', b'glance'), (b'(2,)', b'heat'), (b'(1,)', b'overall')], default=b'overall', max_length=36)),
- ('version', models.IntegerField(verbose_name='template version')),
- ('create_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='creation time')),
- ('update_time', models.DateTimeField(blank=True, null=True, verbose_name='last update time')),
+ ('uuid', models.CharField(max_length=36,
+ primary_key=True, serialize=False)),
+ ('name', models.CharField(max_length=255,
+ verbose_name='template name')),
+ ('category', models.CharField(
+ choices=[
+ (b'3', b'glance'), (b'(2,)', b'heat'),
+ (b'(1,)', b'overall')],
+ default=b'overall', max_length=36)),
+ ('version', models.IntegerField(
+ verbose_name='template version')),
+ ('create_time', models.DateTimeField(
+ default=django.utils.timezone.now,
+ verbose_name='creation time')),
+ ('update_time', models.DateTimeField(
+ blank=True,
+ null=True,
+ verbose_name='last update time')),
],
options={
'db_table': 'ice_checklist_template',
@@ -157,81 +234,103 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='engagement',
name='peer_reviewer',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT,
- related_name='Engagement_peer_reviewer', to='engagementmanager.IceUser'),
+ field=models.ForeignKey(
+ blank=True, null=True,
+ on_delete=django.db.models.deletion.PROTECT,
+ related_name='Engagement_peer_reviewer',
+ to='engagementmanager.IceUser'),
),
migrations.AddField(
model_name='nextstep',
name='assignees',
- field=models.ManyToManyField(related_name='assignees', to='engagementmanager.IceUser'),
+ field=models.ManyToManyField(
+ related_name='assignees', to='engagementmanager.IceUser'),
),
migrations.AddField(
model_name='nextstep',
name='due_date',
- field=models.DateField(null=True, verbose_name='due_date'),
+ field=models.DateField(null=True,
+ verbose_name='due_date'),
),
migrations.AddField(
model_name='nextstep',
name='files',
- field=models.TextField(null=True, verbose_name='list of files'),
+ field=models.TextField(null=True,
+ verbose_name='list of files'),
),
migrations.AlterField(
model_name='activity',
name='activity_type',
- field=models.CharField(choices=[(b'6', b'change_checklist_state'), (b'3', b'eng_validation_request'), (
- b'4', b'next_steps'), (b'2', b'ssh_key_added'), (b'1', b'user_joined_eng'), (b'5', b'vfc')], max_length=36),
+ field=models.CharField(
+ choices=[(b'6', b'change_checklist_state'),
+ (b'3', b'eng_validation_request'), (
+ b'4', b'next_steps'), (b'2', b'ssh_key_added'),
+ (b'1', b'user_joined_eng'), (b'5', b'vfc')],
+ max_length=36),
),
migrations.AddField(
model_name='checklistsection',
name='template',
- field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT,
- to='engagementmanager.ChecklistTemplate'),
+ field=models.ForeignKey(
+ on_delete=django.db.models.deletion.PROTECT,
+ to='engagementmanager.ChecklistTemplate'),
),
migrations.AddField(
model_name='checklistlineitem',
name='section',
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE,
- to='engagementmanager.ChecklistSection'),
+ field=models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE,
+ to='engagementmanager.ChecklistSection'),
),
migrations.AddField(
model_name='checklistlineitem',
name='template',
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE,
- to='engagementmanager.ChecklistTemplate'),
+ field=models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE,
+ to='engagementmanager.ChecklistTemplate'),
),
migrations.AddField(
model_name='checklistdecision',
name='lineitem',
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE,
- to='engagementmanager.ChecklistLineItem'),
+ field=models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE,
+ to='engagementmanager.ChecklistLineItem'),
),
migrations.AddField(
model_name='checklistdecision',
name='template',
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE,
- to='engagementmanager.ChecklistTemplate'),
+ field=models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE,
+ to='engagementmanager.ChecklistTemplate'),
),
migrations.AddField(
model_name='checklistauditlog',
name='decision',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE,
- to='engagementmanager.ChecklistDecision'),
+ field=models.ForeignKey(
+ blank=True, null=True,
+ on_delete=django.db.models.deletion.CASCADE,
+ to='engagementmanager.ChecklistDecision'),
),
migrations.AddField(
model_name='checklist',
name='engagement',
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='engagementmanager.Engagement'),
+ field=models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE,
+ to='engagementmanager.Engagement'),
),
migrations.AddField(
model_name='checklist',
name='owner',
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE,
- related_name='checklist_owner', to='engagementmanager.IceUser'),
+ field=models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE,
+ related_name='checklist_owner',
+ to='engagementmanager.IceUser'),
),
migrations.AddField(
model_name='checklist',
name='template',
- field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT,
- to='engagementmanager.ChecklistTemplate'),
+ field=models.ForeignKey(
+ on_delete=django.db.models.deletion.PROTECT,
+ to='engagementmanager.ChecklistTemplate'),
),
]
diff --git a/django/engagementmanager/migrations/0007_auto_20160922_0421.py b/django/engagementmanager/migrations/0007_auto_20160922_0421.py
index 655f30d..2224a49 100644
--- a/django/engagementmanager/migrations/0007_auto_20160922_0421.py
+++ b/django/engagementmanager/migrations/0007_auto_20160922_0421.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -54,8 +54,14 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='ECOMPRelease',
fields=[
- ('uuid', models.CharField(max_length=36, primary_key=True, serialize=False)),
- ('name', models.CharField(max_length=45)),
+ ('uuid',
+ models.CharField(
+ max_length=36,
+ primary_key=True,
+ serialize=False)),
+ ('name',
+ models.CharField(
+ max_length=45)),
],
options={
'db_table': 'ice_ecomp_release',
@@ -64,7 +70,10 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='vf',
name='ecomp_release',
- field=models.ForeignKey(blank=True, null=True,
- on_delete=django.db.models.deletion.SET_NULL, to='engagementmanager.ECOMPRelease'),
+ field=models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ to='engagementmanager.ECOMPRelease'),
),
]
diff --git a/django/engagementmanager/migrations/0008_auto_20161009_1210.py b/django/engagementmanager/migrations/0008_auto_20161009_1210.py
index ce6ddcc..75af591 100644
--- a/django/engagementmanager/migrations/0008_auto_20161009_1210.py
+++ b/django/engagementmanager/migrations/0008_auto_20161009_1210.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -55,12 +55,34 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='RecentEngagement',
fields=[
- ('uuid', models.CharField(max_length=64, primary_key=True, serialize=False)),
- ('user_uuid', models.CharField(max_length=64)),
- ('action_type', models.CharField(choices=[(b'(3,)', b'GOT_OWNERSHIP_OVER_ENGAGEMENT'), (b'(1,)', b'JOINED_TO_ENGAGEMENT'), (
- b'(4,)', b'NAVIGATED_INTO_ENGAGEMENT'), (b'(2,)', b'NEXT_STEP_ASSIGNED')], max_length=36)),
- ('last_update', models.DateTimeField(default=django.utils.timezone.now, verbose_name='update time')),
- ('vf', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='engagementmanager.VF')),
+ ('uuid',
+ models.CharField(
+ max_length=64,
+ primary_key=True,
+ serialize=False)),
+ ('user_uuid',
+ models.CharField(
+ max_length=64)),
+ ('action_type',
+ models.CharField(
+ choices=[
+ (b'(3,)',
+ b'GOT_OWNERSHIP_OVER_ENGAGEMENT'),
+ (b'(1,)',
+ b'JOINED_TO_ENGAGEMENT'),
+ (b'(4,)',
+ b'NAVIGATED_INTO_ENGAGEMENT'),
+ (b'(2,)',
+ b'NEXT_STEP_ASSIGNED')],
+ max_length=36)),
+ ('last_update',
+ models.DateTimeField(
+ default=django.utils.timezone.now,
+ verbose_name='update time')),
+ ('vf',
+ models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE,
+ to='engagementmanager.VF')),
],
options={
'db_table': 'ice_recent_engagement',
@@ -69,6 +91,7 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='engagement',
name='starred_engagement',
- field=models.ManyToManyField(to='engagementmanager.IceUser'),
+ field=models.ManyToManyField(
+ to='engagementmanager.IceUser'),
),
]
diff --git a/django/engagementmanager/migrations/0009_auto_20161018_0740.py b/django/engagementmanager/migrations/0009_auto_20161018_0740.py
index 5536536..252d16c 100644
--- a/django/engagementmanager/migrations/0009_auto_20161018_0740.py
+++ b/django/engagementmanager/migrations/0009_auto_20161018_0740.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -53,13 +53,42 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='checklist',
name='state',
- field=models.CharField(choices=[(b'(4,)', b'approval'), (b'(7,)', b'archive'), (b'(1,)', b'automation'), (b'(6,)', b'closed'), (
- b'(5,)', b'handoff'), (b'(3,)', b'peer_review'), (b'8', b'pending'), (b'(2,)', b'review')], default=b'pending', max_length=36),
+ field=models.CharField(
+ choices=[
+ (b'(4,)',
+ b'approval'),
+ (b'(7,)',
+ b'archive'),
+ (b'(1,)',
+ b'automation'),
+ (b'(6,)',
+ b'closed'),
+ (b'(5,)',
+ b'handoff'),
+ (b'(3,)',
+ b'peer_review'),
+ (b'8',
+ b'pending'),
+ (b'(2,)',
+ b'review')],
+ default=b'pending',
+ max_length=36),
),
migrations.AlterField(
model_name='recentengagement',
name='action_type',
- field=models.CharField(choices=[(b'(3,)', b'GOT_OWNERSHIP_OVER_ENGAGEMENT'), (b'(1,)', b'JOINED_TO_ENGAGEMENT'), (
- b'(4,)', b'NAVIGATED_INTO_ENGAGEMENT'), (b'(5,)', b'NEW_VF_CREATED'), (b'(2,)', b'NEXT_STEP_ASSIGNED')], max_length=36),
+ field=models.CharField(
+ choices=[
+ (b'(3,)',
+ b'GOT_OWNERSHIP_OVER_ENGAGEMENT'),
+ (b'(1,)',
+ b'JOINED_TO_ENGAGEMENT'),
+ (b'(4,)',
+ b'NAVIGATED_INTO_ENGAGEMENT'),
+ (b'(5,)',
+ b'NEW_VF_CREATED'),
+ (b'(2,)',
+ b'NEXT_STEP_ASSIGNED')],
+ max_length=36),
),
]
diff --git a/django/engagementmanager/migrations/0010_auto_20161025_0838.py b/django/engagementmanager/migrations/0010_auto_20161025_0838.py
index 19f8db6..aa4c78d 100644
--- a/django/engagementmanager/migrations/0010_auto_20161025_0838.py
+++ b/django/engagementmanager/migrations/0010_auto_20161025_0838.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -53,54 +53,88 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='activity',
name='activity_type',
- field=models.CharField(choices=[(b'change_checklist_state', b'change_checklist_state'), (b'eng_validation_request', b'eng_validation_request'), (
- b'next_steps', b'next_steps'), (b'ssh_key_added', b'ssh_key_added'), (b'user_joined_eng', b'user_joined_eng'), (b'vfc', b'vfc')], max_length=36),
+ field=models.CharField(
+ choices=[(b'change_checklist_state',
+ b'change_checklist_state'),
+ (b'eng_validation_request',
+ b'eng_validation_request'), (
+ b'next_steps', b'next_steps'),
+ (b'ssh_key_added', b'ssh_key_added'),
+ (b'user_joined_eng', b'user_joined_eng'),
+ (b'vfc', b'vfc')], max_length=36),
),
migrations.AlterField(
model_name='checklist',
name='state',
- field=models.CharField(choices=[(b'approval', b'approval'), (b'archive', b'archive'), (b'automation', b'automation'), (b'closed', b'closed'), (
- b'handoff', b'handoff'), (b'peer_review', b'peer_review'), (b'pending', b'pending'), (b'review', b'review')], default=b'pending', max_length=36),
+ field=models.CharField(
+ choices=[(b'approval', b'approval'),
+ (b'archive', b'archive'),
+ (b'automation', b'automation'),
+ (b'closed', b'closed'), (
+ b'handoff', b'handoff'), (b'peer_review', b'peer_review'),
+ (b'pending', b'pending'), (b'review', b'review')],
+ default=b'pending', max_length=36),
),
migrations.AlterField(
model_name='checklistdecision',
name='peer_review_value',
- field=models.CharField(choices=[(b'approved', b'approved'), (b'denied', b'denied'),
- (b'na', b'na'), (b'not_relevant', b'not_relevant')], max_length=36),
+ field=models.CharField(
+ choices=[(b'approved', b'approved'), (b'denied', b'denied'),
+ (b'na', b'na'), (b'not_relevant', b'not_relevant')],
+ max_length=36),
),
migrations.AlterField(
model_name='checklistdecision',
name='review_value',
- field=models.CharField(choices=[(b'approved', b'approved'), (b'denied', b'denied'),
- (b'na', b'na'), (b'not_relevant', b'not_relevant')], max_length=36),
+ field=models.CharField(
+ choices=[(b'approved', b'approved'), (b'denied', b'denied'),
+ (b'na', b'na'), (b'not_relevant', b'not_relevant')],
+ max_length=36),
),
migrations.AlterField(
model_name='checklistlineitem',
name='line_type',
- field=models.CharField(choices=[(b'auto', b'auto'), (b'manual', b'manual')],
- default=b'auto', max_length=36),
+ field=models.CharField(
+ choices=[(b'auto', b'auto'), (b'manual', b'manual')],
+ default=b'auto', max_length=36),
),
migrations.AlterField(
model_name='checklisttemplate',
name='category',
- field=models.CharField(choices=[(b'glance', b'glance'), (b'heat', b'heat'),
- (b'overall', b'overall')], default=b'overall', max_length=36),
+ field=models.CharField(
+ choices=[(b'glance', b'glance'), (b'heat', b'heat'),
+ (b'overall', b'overall')], default=b'overall',
+ max_length=36),
),
migrations.AlterField(
model_name='engagement',
name='starred_engagement',
- field=models.ManyToManyField(blank=True, to='engagementmanager.IceUser'),
+ field=models.ManyToManyField(
+ blank=True, to='engagementmanager.IceUser'),
),
migrations.AlterField(
model_name='nextstep',
name='next_step_type',
- field=models.CharField(choices=[(b'add_contact_person', b'add_contact_person'), (b'el_handoff', b'el_handoff'), (b'set_ssh', b'set_ssh'), (
- b'submit_vf_package', b'submit_vf_package'), (b'trial_agreements', b'trial_agreements'), (b'user_defined', b'user_defined')], default=b'user_defined', max_length=36),
+ field=models.CharField(
+ choices=[(b'add_contact_person', b'add_contact_person'),
+ (b'el_handoff', b'el_handoff'),
+ (b'set_ssh', b'set_ssh'), (
+ b'submit_vf_package', b'submit_vf_package'),
+ (b'trial_agreements', b'trial_agreements'),
+ (b'user_defined', b'user_defined')],
+ default=b'user_defined', max_length=36),
),
migrations.AlterField(
model_name='recentengagement',
name='action_type',
- field=models.CharField(choices=[(b'GOT_OWNERSHIP_OVER_ENGAGEMENT', b'GOT_OWNERSHIP_OVER_ENGAGEMENT'), (b'JOINED_TO_ENGAGEMENT', b'JOINED_TO_ENGAGEMENT'), (
- b'NAVIGATED_INTO_ENGAGEMENT', b'NAVIGATED_INTO_ENGAGEMENT'), (b'NEW_VF_CREATED', b'NEW_VF_CREATED'), (b'NEXT_STEP_ASSIGNED', b'NEXT_STEP_ASSIGNED')], max_length=36),
+ field=models.CharField(
+ choices=[(b'GOT_OWNERSHIP_OVER_ENGAGEMENT',
+ b'GOT_OWNERSHIP_OVER_ENGAGEMENT'),
+ (b'JOINED_TO_ENGAGEMENT', b'JOINED_TO_ENGAGEMENT'), (
+ b'NAVIGATED_INTO_ENGAGEMENT',
+ b'NAVIGATED_INTO_ENGAGEMENT'),
+ (b'NEW_VF_CREATED', b'NEW_VF_CREATED'),
+ (b'NEXT_STEP_ASSIGNED', b'NEXT_STEP_ASSIGNED')],
+ max_length=36),
),
]
diff --git a/django/engagementmanager/migrations/0011_auto_20161109_0811.py b/django/engagementmanager/migrations/0011_auto_20161109_0811.py
index 9bcf50c..d359667 100644
--- a/django/engagementmanager/migrations/0011_auto_20161109_0811.py
+++ b/django/engagementmanager/migrations/0011_auto_20161109_0811.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -54,28 +54,38 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='engagement',
name='engagement_manual_id',
- field=models.CharField(max_length=36),
+ field=models.CharField(
+ max_length=36),
),
migrations.AlterField(
model_name='engagement',
name='starred_engagement',
- field=models.ManyToManyField(blank=True, default=None, to='engagementmanager.IceUser'),
+ field=models.ManyToManyField(
+ blank=True,
+ default=None,
+ to='engagementmanager.IceUser'),
),
migrations.AlterField(
model_name='vf',
name='ecomp_release',
- field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE,
- to='engagementmanager.ECOMPRelease'),
+ field=models.ForeignKey(
+ null=True,
+ on_delete=django.db.models.deletion.CASCADE,
+ to='engagementmanager.ECOMPRelease'),
),
migrations.AlterField(
model_name='vf',
name='engagement',
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='engagementmanager.Engagement'),
+ field=models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE,
+ to='engagementmanager.Engagement'),
),
migrations.AlterField(
model_name='vf',
name='git_repo_url',
- field=models.CharField(default='', max_length=512),
+ field=models.CharField(
+ default='',
+ max_length=512),
preserve_default=False,
),
]
diff --git a/django/engagementmanager/migrations/0012_auto_20161109_0822.py b/django/engagementmanager/migrations/0012_auto_20161109_0822.py
index 79214dc..7036260 100644
--- a/django/engagementmanager/migrations/0012_auto_20161109_0822.py
+++ b/django/engagementmanager/migrations/0012_auto_20161109_0822.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -54,29 +54,46 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='engagement',
name='reviewer',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT,
- related_name='Engagement_el_reviewer', to='engagementmanager.IceUser'),
+ field=models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.PROTECT,
+ related_name='Engagement_el_reviewer',
+ to='engagementmanager.IceUser'),
),
migrations.AlterField(
model_name='engagement',
name='engagement_manual_id',
- field=models.CharField(default=-1, max_length=36),
+ field=models.CharField(
+ default=-1,
+ max_length=36),
),
migrations.AlterField(
model_name='nextstep',
name='state',
- field=models.CharField(choices=[(b'Completed', b'Completed'), (b'Confirmed',
- b'Confirmed'), (b'TODO', b'TODO')], max_length=15),
+ field=models.CharField(
+ choices=[
+ (b'Completed',
+ b'Completed'),
+ (b'Confirmed',
+ b'Confirmed'),
+ (b'TODO',
+ b'TODO')],
+ max_length=15),
),
migrations.AlterField(
model_name='vf',
name='engagement',
- field=models.ForeignKey(default=-1, on_delete=django.db.models.deletion.CASCADE,
- to='engagementmanager.Engagement'),
+ field=models.ForeignKey(
+ default=-1,
+ on_delete=django.db.models.deletion.CASCADE,
+ to='engagementmanager.Engagement'),
),
migrations.AlterField(
model_name='vf',
name='git_repo_url',
- field=models.CharField(default=-1, max_length=512),
+ field=models.CharField(
+ default=-1,
+ max_length=512),
),
]
diff --git a/django/engagementmanager/migrations/0013_auto_20161128_1159.py b/django/engagementmanager/migrations/0013_auto_20161128_1159.py
index 06a55c1..395d01d 100644
--- a/django/engagementmanager/migrations/0013_auto_20161128_1159.py
+++ b/django/engagementmanager/migrations/0013_auto_20161128_1159.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -54,46 +54,64 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='engagement',
name='active_time',
- field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='active time'),
+ field=models.DateTimeField(
+ default=django.utils.timezone.now,
+ verbose_name='active time'),
),
migrations.AddField(
model_name='engagement',
name='aic_instantiation_time',
- field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='aic instantiation time'),
+ field=models.DateTimeField(
+ default=django.utils.timezone.now,
+ verbose_name='aic instantiation time'),
),
migrations.AddField(
model_name='engagement',
name='asdc_onboarding_time',
- field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='asdc onboarding time'),
+ field=models.DateTimeField(
+ default=django.utils.timezone.now,
+ verbose_name='asdc onboarding time'),
),
migrations.AddField(
model_name='engagement',
name='completed_time',
- field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='completed time'),
+ field=models.DateTimeField(
+ default=django.utils.timezone.now,
+ verbose_name='completed time'),
),
migrations.AddField(
model_name='engagement',
name='heat_validated_time',
- field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='heat validated time'),
+ field=models.DateTimeField(
+ default=django.utils.timezone.now,
+ verbose_name='heat validated time'),
),
migrations.AddField(
model_name='engagement',
name='image_scan_time',
- field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='image scan time'),
+ field=models.DateTimeField(
+ default=django.utils.timezone.now,
+ verbose_name='image scan time'),
),
migrations.AddField(
model_name='engagement',
name='intake_time',
- field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='intake time'),
+ field=models.DateTimeField(
+ default=django.utils.timezone.now,
+ verbose_name='intake time'),
),
migrations.AddField(
model_name='engagement',
name='started_state_time',
- field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='started state time'),
+ field=models.DateTimeField(
+ default=django.utils.timezone.now,
+ verbose_name='started state time'),
),
migrations.AddField(
model_name='engagement',
name='validated_time',
- field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='validated time'),
+ field=models.DateTimeField(
+ default=django.utils.timezone.now,
+ verbose_name='validated time'),
),
]
diff --git a/django/engagementmanager/migrations/0014_auto_20161129_1145.py b/django/engagementmanager/migrations/0014_auto_20161129_1145.py
index ee4efd4..bde0b91 100644
--- a/django/engagementmanager/migrations/0014_auto_20161129_1145.py
+++ b/django/engagementmanager/migrations/0014_auto_20161129_1145.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -53,52 +53,96 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='activity',
name='activity_type',
- field=models.CharField(choices=[(b'change_checklist_state', b'change_checklist_state'), (b'eng_validation_request', b'eng_validation_request'), (b'next_steps', b'next_steps'), (b'ssh_key_added', b'ssh_key_added'), (
- b'test_finished_event', b'test_finished_event'), (b'user_joined_eng', b'user_joined_eng'), (b'vf_provisioing_event', b'vf_provisioing_event'), (b'vfc', b'vfc')], max_length=36),
+ field=models.CharField(
+ choices=[
+ (b'change_checklist_state',
+ b'change_checklist_state'),
+ (b'eng_validation_request',
+ b'eng_validation_request'),
+ (b'next_steps',
+ b'next_steps'),
+ (b'ssh_key_added',
+ b'ssh_key_added'),
+ (b'test_finished_event',
+ b'test_finished_event'),
+ (b'user_joined_eng',
+ b'user_joined_eng'),
+ (b'vf_provisioing_event',
+ b'vf_provisioing_event'),
+ (b'vfc',
+ b'vfc')],
+ max_length=36),
),
migrations.AlterField(
model_name='engagement',
name='active_time',
- field=models.DateTimeField(blank=True, null=True, verbose_name='active time'),
+ field=models.DateTimeField(
+ blank=True,
+ null=True,
+ verbose_name='active time'),
),
migrations.AlterField(
model_name='engagement',
name='aic_instantiation_time',
- field=models.DateTimeField(blank=True, null=True, verbose_name='aic instantiation time'),
+ field=models.DateTimeField(
+ blank=True,
+ null=True,
+ verbose_name='aic instantiation time'),
),
migrations.AlterField(
model_name='engagement',
name='asdc_onboarding_time',
- field=models.DateTimeField(blank=True, null=True, verbose_name='asdc onboarding time'),
+ field=models.DateTimeField(
+ blank=True,
+ null=True,
+ verbose_name='asdc onboarding time'),
),
migrations.AlterField(
model_name='engagement',
name='completed_time',
- field=models.DateTimeField(blank=True, null=True, verbose_name='completed time'),
+ field=models.DateTimeField(
+ blank=True,
+ null=True,
+ verbose_name='completed time'),
),
migrations.AlterField(
model_name='engagement',
name='heat_validated_time',
- field=models.DateTimeField(blank=True, null=True, verbose_name='heat validated time'),
+ field=models.DateTimeField(
+ blank=True,
+ null=True,
+ verbose_name='heat validated time'),
),
migrations.AlterField(
model_name='engagement',
name='image_scan_time',
- field=models.DateTimeField(blank=True, null=True, verbose_name='image scan time'),
+ field=models.DateTimeField(
+ blank=True,
+ null=True,
+ verbose_name='image scan time'),
),
migrations.AlterField(
model_name='engagement',
name='intake_time',
- field=models.DateTimeField(blank=True, null=True, verbose_name='intake time'),
+ field=models.DateTimeField(
+ blank=True,
+ null=True,
+ verbose_name='intake time'),
),
migrations.AlterField(
model_name='engagement',
name='started_state_time',
- field=models.DateTimeField(blank=True, null=True, verbose_name='started state time'),
+ field=models.DateTimeField(
+ blank=True,
+ null=True,
+ verbose_name='started state time'),
),
migrations.AlterField(
model_name='engagement',
name='validated_time',
- field=models.DateTimeField(blank=True, null=True, verbose_name='validated time'),
+ field=models.DateTimeField(
+ blank=True,
+ null=True,
+ verbose_name='validated time'),
),
]
diff --git a/django/engagementmanager/migrations/0015_engagementstatus.py b/django/engagementmanager/migrations/0015_engagementstatus.py
index 84eee4d..0b9247c 100644
--- a/django/engagementmanager/migrations/0015_engagementstatus.py
+++ b/django/engagementmanager/migrations/0015_engagementstatus.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -55,14 +55,31 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='EngagementStatus',
fields=[
- ('uuid', models.CharField(max_length=64, primary_key=True, serialize=False)),
- ('description', models.CharField(max_length=256)),
- ('create_time', models.DateTimeField(default=django.utils.timezone.now)),
- ('update_time', models.DateTimeField(default=django.utils.timezone.now)),
- ('creator', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT,
- related_name='status_creator', to='engagementmanager.IceUser')),
- ('engagement', models.ForeignKey(
- on_delete=django.db.models.deletion.PROTECT, to='engagementmanager.Engagement')),
+ ('uuid',
+ models.CharField(
+ max_length=64,
+ primary_key=True,
+ serialize=False)),
+ ('description',
+ models.CharField(
+ max_length=256)),
+ ('create_time',
+ models.DateTimeField(
+ default=django.utils.timezone.now)),
+ ('update_time',
+ models.DateTimeField(
+ default=django.utils.timezone.now)),
+ ('creator',
+ models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.PROTECT,
+ related_name='status_creator',
+ to='engagementmanager.IceUser')),
+ ('engagement',
+ models.ForeignKey(
+ on_delete=django.db.models.deletion.PROTECT,
+ to='engagementmanager.Engagement')),
],
options={
'db_table': 'ice_engagement_status',
diff --git a/django/engagementmanager/migrations/0016_auto_20161208_0842.py b/django/engagementmanager/migrations/0016_auto_20161208_0842.py
index 92d1518..de53576 100644
--- a/django/engagementmanager/migrations/0016_auto_20161208_0842.py
+++ b/django/engagementmanager/migrations/0016_auto_20161208_0842.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -53,7 +53,17 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='engagement',
name='engagement_stage',
- field=models.CharField(choices=[(b'Active', b'Active'), (b'Completed', b'Completed'),
- (b'Intake', b'Intake'), (b'Validated', b'Validated')], default=b'Intake', max_length=15),
+ field=models.CharField(
+ choices=[
+ (b'Active',
+ b'Active'),
+ (b'Completed',
+ b'Completed'),
+ (b'Intake',
+ b'Intake'),
+ (b'Validated',
+ b'Validated')],
+ default=b'Intake',
+ max_length=15),
),
]
diff --git a/django/engagementmanager/migrations/0017_auto_20161215_1535.py b/django/engagementmanager/migrations/0017_auto_20161215_1535.py
index c0adc38..cc264ce 100644
--- a/django/engagementmanager/migrations/0017_auto_20161215_1535.py
+++ b/django/engagementmanager/migrations/0017_auto_20161215_1535.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -54,14 +54,18 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='Invitation',
fields=[
- ('uuid', models.CharField(max_length=36, primary_key=True, serialize=False)),
- ('engagement_uuid', models.CharField(db_index=True, max_length=64)),
- ('invited_by_user_uuid', models.CharField(db_index=True, max_length=64)),
+ ('uuid', models.CharField(max_length=36,
+ primary_key=True, serialize=False)),
+ ('engagement_uuid', models.CharField(
+ db_index=True, max_length=64)),
+ ('invited_by_user_uuid', models.CharField(
+ db_index=True, max_length=64)),
('email', models.CharField(max_length=255)),
('invitation_token', models.CharField(max_length=1024)),
('accepted', models.BooleanField(default=False)),
('create_time', models.DateTimeField(
- default=django.utils.timezone.now, verbose_name='invitation creation time')),
+ default=django.utils.timezone.now,
+ verbose_name='invitation creation time')),
],
options={
'db_table': 'ice_invitation',
diff --git a/django/engagementmanager/migrations/0018_set_old_notif_true.py b/django/engagementmanager/migrations/0018_set_old_notif_true.py
index 76e8265..6b54271 100644
--- a/django/engagementmanager/migrations/0018_set_old_notif_true.py
+++ b/django/engagementmanager/migrations/0018_set_old_notif_true.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -50,5 +50,6 @@ class Migration(migrations.Migration):
]
operations = [
- migrations.RunSQL("update ice_notification SET is_sent = 't' where is_sent = 'f';"),
+ migrations.RunSQL(
+ "update ice_notification SET is_sent = 't' where is_sent = 'f';"),
]
diff --git a/django/engagementmanager/migrations/0019_auto_20170104_1715.py b/django/engagementmanager/migrations/0019_auto_20170104_1715.py
index 329ffa3..ea919ec 100644
--- a/django/engagementmanager/migrations/0019_auto_20170104_1715.py
+++ b/django/engagementmanager/migrations/0019_auto_20170104_1715.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -53,7 +53,19 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='engagement',
name='engagement_stage',
- field=models.CharField(choices=[(b'Active', b'Active'), (b'Archived', b'Archived'), (b'Completed', b'Completed'), (
- b'Intake', b'Intake'), (b'Validated', b'Validated')], default=b'Intake', max_length=15),
+ field=models.CharField(
+ choices=[
+ (b'Active',
+ b'Active'),
+ (b'Archived',
+ b'Archived'),
+ (b'Completed',
+ b'Completed'),
+ (b'Intake',
+ b'Intake'),
+ (b'Validated',
+ b'Validated')],
+ default=b'Intake',
+ max_length=15),
),
]
diff --git a/django/engagementmanager/migrations/0020_add_indexes_20170108.py b/django/engagementmanager/migrations/0020_add_indexes_20170108.py
index 2b71e1e..ddb6680 100644
--- a/django/engagementmanager/migrations/0020_add_indexes_20170108.py
+++ b/django/engagementmanager/migrations/0020_add_indexes_20170108.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -65,13 +65,19 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='engagement',
name='engagement_stage',
- field=models.CharField(choices=[(b'Active', b'Active'), (b'Archived', b'Archived'), (b'Completed', b'Completed'), (
- b'Intake', b'Intake'), (b'Validated', b'Validated')], db_index=True, default=b'Intake', max_length=15),
+ field=models.CharField(
+ choices=[(b'Active', b'Active'), (b'Archived', b'Archived'),
+ (b'Completed', b'Completed'), (
+ b'Intake', b'Intake'), (b'Validated', b'Validated')],
+ db_index=True, default=b'Intake',
+ max_length=15),
),
migrations.AlterField(
model_name='iceuser',
name='email',
- field=models.EmailField(db_index=True, max_length=254, unique=True, verbose_name='email'),
+ field=models.EmailField(
+ db_index=True, max_length=254, unique=True,
+ verbose_name='email'),
),
migrations.AlterField(
model_name='invitation',
@@ -81,8 +87,10 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='vf',
name='engagement',
- field=models.OneToOneField(default=-1, on_delete=django.db.models.deletion.CASCADE,
- to='engagementmanager.Engagement'),
+ field=models.OneToOneField(
+ default=-1,
+ on_delete=django.db.models.deletion.CASCADE,
+ to='engagementmanager.Engagement'),
),
migrations.AlterField(
model_name='vf',
diff --git a/django/engagementmanager/migrations/0021_generate_excel_overview_sheet_procedure_20170110.py b/django/engagementmanager/migrations/0021_generate_excel_overview_sheet_procedure_20170110.py
index b902df4..6cd92cc 100644
--- a/django/engagementmanager/migrations/0021_generate_excel_overview_sheet_procedure_20170110.py
+++ b/django/engagementmanager/migrations/0021_generate_excel_overview_sheet_procedure_20170110.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -50,8 +50,13 @@ def forwards(apps, schema_editor):
return
cursor = connection.cursor()
- cursor.execute(open(os.path.join(os.path.dirname(engagementmanager.__file__),
- 'sql-scripts/generate_excel_overview_sheet_procedure.sql'), "r").read())
+ cursor.execute(
+ open(
+ os.path.join(
+ os.path.dirname(
+ engagementmanager.__file__),
+ 'sql-scripts/generate_excel_overview_sheet_procedure.sql'),
+ "r").read())
class Migration(migrations.Migration):
diff --git a/django/engagementmanager/migrations/0022_auto_20170118_1520.py b/django/engagementmanager/migrations/0022_auto_20170118_1520.py
index b90451b..5769817 100644
--- a/django/engagementmanager/migrations/0022_auto_20170118_1520.py
+++ b/django/engagementmanager/migrations/0022_auto_20170118_1520.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -56,15 +56,16 @@ def create_user_for_pre_user_profiles(apps, schema_editor):
CustomUser = apps.get_model("engagementmanager", "CustomUser")
IceUserProfile = apps.get_model("engagementmanager", "IceUserProfile")
users_list = IceUserProfile.objects.filter(user=None)
- count = 0
for profile in users_list:
try:
- custom_user, created = CustomUser.objects.get_or_create(username=profile.email)
+ custom_user, created = CustomUser.objects.get_or_create(
+ username=profile.email)
custom_user.is_active = profile.is_active
custom_user.email = profile.email
custom_user.activation_token = profile.activation_token
custom_user.password = profile.password
- custom_user.activation_token_create_time = profile.activation_token_create_time
+ custom_user.activation_token_create_time = \
+ profile.activation_token_create_time
custom_user.save()
profile.user = custom_user
profile.save()
@@ -78,19 +79,28 @@ class Migration(migrations.Migration):
dependencies = [
# ('auth', '0009_auto_20170118_0740'),
- ('engagementmanager', '0021_generate_excel_overview_sheet_procedure_20170110'),
+ ('engagementmanager',
+ '0021_generate_excel_overview_sheet_procedure_20170110'),
]
operations = [
migrations.CreateModel(
name='CustomUser',
fields=[
- ('user_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE,
- parent_link=True, primary_key=True, serialize=False, to=settings.AUTH_USER_MODEL)),
- ('activation_token', models.CharField(max_length=128, null=True, unique=True)),
+ ('user_ptr', models.OneToOneField(
+ auto_created=True,
+ on_delete=django.db.models.deletion.CASCADE,
+ parent_link=True, primary_key=True,
+ serialize=False,
+ to=settings.AUTH_USER_MODEL)),
+ ('activation_token', models.CharField(
+ max_length=128, null=True, unique=True)),
('activation_token_create_time', models.DateTimeField(
- default=django.utils.timezone.now, null=True, verbose_name='activation_token_create_time')),
- ('temp_password', models.CharField(blank=True, default=None, max_length=256, null=True)),
+ default=django.utils.timezone.now, null=True,
+ verbose_name='activation_token_create_time')),
+ ('temp_password', models.CharField(
+
+ blank=True, default=None, max_length=256, null=True)),
],
options={
'abstract': False,
@@ -107,69 +117,126 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='IceUserProfile',
name='user',
- field=models.OneToOneField(null=True, on_delete=django.db.models.CASCADE, to='engagementmanager.CustomUser')
+ field=models.OneToOneField(
+ null=True, on_delete=django.db.models.CASCADE,
+ to='engagementmanager.CustomUser')
),
migrations.AlterField(
model_name='activity',
name='activity_type',
- field=models.CharField(choices=[(b'user_joined_eng', b'user_joined_eng'), (b'ssh_key_added', b'ssh_key_added'), (b'eng_validation_request', b'eng_validation_request'), (b'next_steps', b'next_steps'), (
- b'vfc', b'vfc'), (b'change_checklist_state', b'change_checklist_state'), (b'vf_provisioing_event', b'vf_provisioing_event'), (b'test_finished_event', b'test_finished_event')], max_length=36),
+ field=models.CharField(
+ choices=[(b'user_joined_eng', b'user_joined_eng'),
+ (b'ssh_key_added', b'ssh_key_added'),
+ (b'eng_validation_request',
+ b'eng_validation_request'),
+ (b'next_steps', b'next_steps'), (b'vfc', b'vfc'),
+ (b'change_checklist_state',
+ b'change_checklist_state'),
+ (b'vf_provisioing_event', b'vf_provisioing_event'),
+ (b'test_finished_event', b'test_finished_event')],
+ max_length=36),
),
migrations.AlterField(
model_name='checklist',
name='state',
- field=models.CharField(choices=[(b'pending', b'pending'), (b'automation', b'automation'), (b'review', b'review'), (b'peer_review', b'peer_review'), (
- b'approval', b'approval'), (b'handoff', b'handoff'), (b'closed', b'closed'), (b'archive', b'archive')], default=b'pending', max_length=36),
+ field=models.CharField(choices=[(b'pending', b'pending'),
+ (b'automation', b'automation'),
+ (b'review', b'review'),
+ (b'peer_review', b'peer_review'),
+ (b'approval', b'approval'),
+ (b'handoff', b'handoff'),
+ (b'closed', b'closed'),
+ (b'archive', b'archive')],
+ default=b'pending', max_length=36),
),
migrations.AlterField(
model_name='checklistdecision',
name='peer_review_value',
- field=models.CharField(choices=[(b'na', b'na'), (b'approved', b'approved'),
- (b'denied', b'denied'), (b'not_relevant', b'not_relevant')], max_length=36),
+ field=models.CharField(choices=[(b'na', b'na'),
+ (b'approved', b'approved'),
+ (b'denied', b'denied'),
+ (b'not_relevant',
+ b'not_relevant')],
+ max_length=36),
),
migrations.AlterField(
model_name='checklistdecision',
name='review_value',
- field=models.CharField(choices=[(b'na', b'na'), (b'approved', b'approved'),
- (b'denied', b'denied'), (b'not_relevant', b'not_relevant')], max_length=36),
+ field=models.CharField(
+ choices=[(b'na', b'na'), (b'approved', b'approved'),
+ (b'denied', b'denied'),
+ (b'not_relevant',
+ b'not_relevant')],
+ max_length=36),
),
migrations.AlterField(
model_name='checklistlineitem',
name='line_type',
field=models.CharField(
- choices=[(b'manual', b'manual'), (b'auto', b'auto')], default=b'auto', max_length=36),
+ choices=[(b'manual', b'manual'),
+ (b'auto', b'auto')],
+ default=b'auto',
+ max_length=36),
),
migrations.AlterField(
model_name='checklisttemplate',
name='category',
- field=models.CharField(choices=[(b'glance', b'glance'), (b'instantiation', b'instantiation'), (
- b'asdc', b'asdc'), (b'overall', b'overall'), (b'heat', b'heat')], default=b'overall', max_length=36),
+ field=models.CharField(
+ choices=[(b'glance', b'glance'),
+ (b'instantiation', b'instantiation'), (
+ b'asdc', b'asdc'),
+ (b'overall', b'overall'),
+ (b'heat', b'heat')],
+ default=b'overall', max_length=36),
),
migrations.AlterField(
model_name='engagement',
name='engagement_stage',
- field=models.CharField(choices=[(b'Archived', b'Archived'), (b'Intake', b'Intake'), (b'Active', b'Active'), (
- b'Validated', b'Validated'), (b'Completed', b'Completed')], db_index=True, default=b'Intake', max_length=15),
+ field=models.CharField(
+ choices=[(b'Archived', b'Archived'),
+ (b'Intake', b'Intake'),
+ (b'Active', b'Active'), (
+ b'Validated', b'Validated'),
+ (b'Completed', b'Completed')],
+ db_index=True,
+ default=b'Intake',
+ max_length=15),
),
migrations.AlterField(
model_name='nextstep',
name='next_step_type',
- field=models.CharField(choices=[(b'user_defined', b'user_defined'), (b'set_ssh', b'set_ssh'), (b'trial_agreements', b'trial_agreements'), (
- b'add_contact_person', b'add_contact_person'), (b'submit_vf_package', b'submit_vf_package'), (b'el_handoff', b'el_handoff')], default=b'user_defined', max_length=36),
+ field=models.CharField(
+ choices=[(b'user_defined', b'user_defined'),
+ (b'set_ssh', b'set_ssh'),
+ (b'trial_agreements', b'trial_agreements'), (
+ b'add_contact_person', b'add_contact_person'),
+ (b'submit_vf_package', b'submit_vf_package'),
+ (b'el_handoff', b'el_handoff')],
+ default=b'user_defined', max_length=36),
),
migrations.AlterField(
model_name='nextstep',
name='state',
field=models.CharField(
- choices=[(b'Confirmed', b'Confirmed'), (b'TODO', b'TODO'), (b'Completed', b'Completed')], max_length=15),
+ choices=[(b'Confirmed', b'Confirmed'),
+ (b'TODO', b'TODO'),
+ (b'Completed', b'Completed')],
+ max_length=15),
),
migrations.AlterField(
model_name='recentengagement',
name='action_type',
- field=models.CharField(choices=[(b'JOINED_TO_ENGAGEMENT', b'JOINED_TO_ENGAGEMENT'), (b'NEXT_STEP_ASSIGNED', b'NEXT_STEP_ASSIGNED'), (
- b'GOT_OWNERSHIP_OVER_ENGAGEMENT', b'GOT_OWNERSHIP_OVER_ENGAGEMENT'), (b'NAVIGATED_INTO_ENGAGEMENT', b'NAVIGATED_INTO_ENGAGEMENT'), (b'NEW_VF_CREATED', b'NEW_VF_CREATED')], max_length=36),
+ field=models.CharField(
+ choices=[(b'JOINED_TO_ENGAGEMENT', b'JOINED_TO_ENGAGEMENT'),
+ (b'NEXT_STEP_ASSIGNED', b'NEXT_STEP_ASSIGNED'), (
+ b'GOT_OWNERSHIP_OVER_ENGAGEMENT',
+ b'GOT_OWNERSHIP_OVER_ENGAGEMENT'),
+ (b'NAVIGATED_INTO_ENGAGEMENT',
+ b'NAVIGATED_INTO_ENGAGEMENT'),
+ (b'NEW_VF_CREATED', b'NEW_VF_CREATED')],
+ max_length=36),
),
# migrations.DeleteModel(
# name='IceUser',
@@ -178,98 +245,141 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='notification',
name='user',
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='engagementmanager.IceUserProfile'),
+ field=models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE,
+ to='engagementmanager.IceUserProfile'),
),
migrations.AlterField(
model_name='vfc',
name='creator',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT,
- related_name='Vfc_creator', to='engagementmanager.IceUserProfile'),
+ field=models.ForeignKey(
+ blank=True, null=True,
+ on_delete=django.db.models.deletion.PROTECT,
+ related_name='Vfc_creator',
+ to='engagementmanager.IceUserProfile'),
),
migrations.AlterField(
model_name='nextstep',
name='owner',
field=models.ForeignKey(
- blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='engagementmanager.IceUserProfile'),
+
+ blank=True, null=True,
+ on_delete=django.db.models.deletion.PROTECT,
+ to='engagementmanager.IceUserProfile'),
),
migrations.AlterField(
model_name='engagement',
name='engagement_team',
- field=models.ManyToManyField(related_name='members', to='engagementmanager.IceUserProfile'),
+ field=models.ManyToManyField(
+ related_name='members',
+ to='engagementmanager.IceUserProfile'),
),
migrations.AlterField(
model_name='engagement',
name='contact_user',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT,
- related_name='Engagement_contact_user', to='engagementmanager.IceUserProfile'),
+ field=models.ForeignKey(
+ blank=True, null=True,
+ on_delete=django.db.models.deletion.PROTECT,
+ related_name='Engagement_contact_user',
+ to='engagementmanager.IceUserProfile'),
),
migrations.AlterField(
model_name='engagement',
name='creator',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT,
- related_name='Engagement_creator', to='engagementmanager.IceUserProfile'),
+ field=models.ForeignKey(
+ blank=True, null=True,
+ on_delete=django.db.models.deletion.PROTECT,
+ related_name='Engagement_creator',
+ to='engagementmanager.IceUserProfile'),
),
migrations.AlterField(
model_name='checklistauditlog',
name='creator',
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='engagementmanager.IceUserProfile'),
+ field=models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE,
+ to='engagementmanager.IceUserProfile'),
),
migrations.AlterField(
model_name='engagement',
name='peer_reviewer',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT,
- related_name='Engagement_peer_reviewer', to='engagementmanager.IceUserProfile'),
+ field=models.ForeignKey(
+ blank=True, null=True,
+ on_delete=django.db.models.deletion.PROTECT,
+ related_name='Engagement_peer_reviewer',
+ to='engagementmanager.IceUserProfile'),
),
migrations.AlterField(
model_name='engagement',
name='reviewer',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT,
- related_name='Engagement_el_reviewer', to='engagementmanager.IceUserProfile'),
+ field=models.ForeignKey(
+ blank=True, null=True,
+ on_delete=django.db.models.deletion.PROTECT,
+ related_name='Engagement_el_reviewer',
+ to='engagementmanager.IceUserProfile'),
),
migrations.AlterField(
model_name='engagement',
name='starred_engagement',
- field=models.ManyToManyField(blank=True, default=None, to='engagementmanager.IceUserProfile'),
+ field=models.ManyToManyField(
+
+ blank=True, default=None,
+ to='engagementmanager.IceUserProfile'),
),
migrations.AlterField(
model_name='engagementstatus',
name='creator',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT,
- related_name='status_creator', to='engagementmanager.IceUserProfile'),
+ field=models.ForeignKey(
+ blank=True, null=True,
+ on_delete=django.db.models.deletion.PROTECT,
+ related_name='status_creator',
+ to='engagementmanager.IceUserProfile'),
),
migrations.AlterField(
model_name='nextstep',
name='assignees',
- field=models.ManyToManyField(related_name='assignees', to='engagementmanager.IceUserProfile'),
+ field=models.ManyToManyField(
+ related_name='assignees',
+ to='engagementmanager.IceUserProfile'),
),
migrations.AlterField(
model_name='nextstep',
name='creator',
- field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT,
- related_name='NextStep_creator', to='engagementmanager.IceUserProfile'),
+ field=models.ForeignKey(
+ on_delete=django.db.models.deletion.PROTECT,
+ related_name='NextStep_creator',
+ to='engagementmanager.IceUserProfile'),
),
migrations.AlterField(
model_name='nextstep',
name='last_updater',
- field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT,
- related_name='NextStep_last_updater', to='engagementmanager.IceUserProfile'),
+ field=models.ForeignKey(
+ null=True,
+ on_delete=django.db.models.deletion.PROTECT,
+ related_name='NextStep_last_updater',
+ to='engagementmanager.IceUserProfile'),
),
migrations.AlterField(
model_name='activity',
name='activity_owner',
field=models.ForeignKey(
- blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='engagementmanager.IceUserProfile'),
+ blank=True, null=True,
+ on_delete=django.db.models.deletion.CASCADE,
+ to='engagementmanager.IceUserProfile'),
),
migrations.AlterField(
model_name='checklist',
name='creator',
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE,
- related_name='checklist_creator', to='engagementmanager.IceUserProfile'),
+ field=models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE,
+ related_name='checklist_creator',
+ to='engagementmanager.IceUserProfile'),
),
migrations.AlterField(
model_name='checklist',
name='owner',
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE,
- related_name='checklist_owner', to='engagementmanager.IceUserProfile'),
+ field=models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE,
+ related_name='checklist_owner',
+ to='engagementmanager.IceUserProfile'),
),
]
diff --git a/django/engagementmanager/migrations/0023_auto_20170123_1445.py b/django/engagementmanager/migrations/0023_auto_20170123_1445.py
index cd01832..20526d2 100644
--- a/django/engagementmanager/migrations/0023_auto_20170123_1445.py
+++ b/django/engagementmanager/migrations/0023_auto_20170123_1445.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -82,8 +82,9 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='iceuserprofile',
name='company',
- field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT,
- to='engagementmanager.Vendor'),
+ field=models.ForeignKey(
+ null=True, on_delete=django.db.models.deletion.PROTECT,
+ to='engagementmanager.Vendor'),
),
migrations.AlterField(
model_name='iceuserprofile',
@@ -93,13 +94,16 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='iceuserprofile',
name='role',
- field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT,
- to='engagementmanager.Role'),
+ field=models.ForeignKey(
+ null=True, on_delete=django.db.models.deletion.PROTECT,
+ to='engagementmanager.Role'),
),
migrations.AlterField(
model_name='iceuserprofile',
name='user',
- field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='engagementmanager.CustomUser'),
+ field=models.OneToOneField(
+ on_delete=django.db.models.deletion.CASCADE,
+ to='engagementmanager.CustomUser'),
),
migrations.AlterModelTable(
name='customuser',
diff --git a/django/engagementmanager/migrations/0024_auto_20170227_1224.py b/django/engagementmanager/migrations/0024_auto_20170227_1224.py
index 3481eb5..0919dbb 100644
--- a/django/engagementmanager/migrations/0024_auto_20170227_1224.py
+++ b/django/engagementmanager/migrations/0024_auto_20170227_1224.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -53,12 +53,33 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='engagement',
name='archive_reason',
- field=models.TextField(default=None, null=True),
+ field=models.TextField(
+ default=None,
+ null=True),
),
migrations.AlterField(
model_name='activity',
name='activity_type',
- field=models.CharField(choices=[(b'user_joined_eng', b'user_joined_eng'), (b'ssh_key_added', b'ssh_key_added'), (b'eng_validation_request', b'eng_validation_request'), (b'next_steps', b'next_steps'), (b'vfc', b'vfc'), (
- b'change_checklist_state', b'change_checklist_state'), (b'vf_provisioing_event', b'vf_provisioing_event'), (b'test_finished_event', b'test_finished_event'), (b'change_engagement_stage', b'change_engagement_stage')], max_length=36),
+ field=models.CharField(
+ choices=[
+ (b'user_joined_eng',
+ b'user_joined_eng'),
+ (b'ssh_key_added',
+ b'ssh_key_added'),
+ (b'eng_validation_request',
+ b'eng_validation_request'),
+ (b'next_steps',
+ b'next_steps'),
+ (b'vfc',
+ b'vfc'),
+ (b'change_checklist_state',
+ b'change_checklist_state'),
+ (b'vf_provisioing_event',
+ b'vf_provisioing_event'),
+ (b'test_finished_event',
+ b'test_finished_event'),
+ (b'change_engagement_stage',
+ b'change_engagement_stage')],
+ max_length=36),
),
]
diff --git a/django/engagementmanager/migrations/0025_change_nextsteps_to_new_state.py b/django/engagementmanager/migrations/0025_change_nextsteps_to_new_state.py
index bfec64d..0d5ae02 100644
--- a/django/engagementmanager/migrations/0025_change_nextsteps_to_new_state.py
+++ b/django/engagementmanager/migrations/0025_change_nextsteps_to_new_state.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -49,6 +49,10 @@ class Migration(migrations.Migration):
]
operations = [
- migrations.RunSQL("update ice_next_step set state = 'Incomplete' where state = 'TODO';"),
- migrations.RunSQL("update ice_next_step set state = 'Completed' where state = 'Confirmed';"),
+ migrations.RunSQL(
+ "update ice_next_step set state = 'Incomplete' \
+ where state = 'TODO';"),
+ migrations.RunSQL(
+ "update ice_next_step set state = 'Completed' \
+ where state = 'Confirmed';"),
]
diff --git a/django/engagementmanager/migrations/0026_add_slack_handle_to_ice_user_profile.py b/django/engagementmanager/migrations/0026_add_slack_handle_to_ice_user_profile.py
index 489b6ce..0406dfa 100644
--- a/django/engagementmanager/migrations/0026_add_slack_handle_to_ice_user_profile.py
+++ b/django/engagementmanager/migrations/0026_add_slack_handle_to_ice_user_profile.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -52,6 +52,7 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='iceuserprofile',
name='slack_handle',
- field=models.CharField(blank=True, default=None, max_length=64, null=True),
+ field=models.CharField(
+ blank=True, default=None, max_length=64, null=True),
),
]
diff --git a/django/engagementmanager/migrations/0027_add_version_to_vf.py b/django/engagementmanager/migrations/0027_add_version_to_vf.py
index 3bd618e..5eb2087 100644
--- a/django/engagementmanager/migrations/0027_add_version_to_vf.py
+++ b/django/engagementmanager/migrations/0027_add_version_to_vf.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/engagementmanager/migrations/0028_auto_20170425_1310.py b/django/engagementmanager/migrations/0028_auto_20170425_1310.py
index 68e15f5..d4988e9 100644
--- a/django/engagementmanager/migrations/0028_auto_20170425_1310.py
+++ b/django/engagementmanager/migrations/0028_auto_20170425_1310.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -53,59 +53,177 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='activity',
name='activity_type',
- field=models.CharField(choices=[('user_joined_eng', 'user_joined_eng'), ('ssh_key_added', 'ssh_key_added'), ('eng_validation_request', 'eng_validation_request'), ('next_steps', 'next_steps'), ('vfc', 'vfc'), (
- 'change_checklist_state', 'change_checklist_state'), ('vf_provisioing_event', 'vf_provisioing_event'), ('test_finished_event', 'test_finished_event'), ('change_engagement_stage', 'change_engagement_stage')], max_length=36),
+ field=models.CharField(
+ choices=[
+ ('user_joined_eng',
+ 'user_joined_eng'),
+ ('ssh_key_added',
+ 'ssh_key_added'),
+ ('eng_validation_request',
+ 'eng_validation_request'),
+ ('next_steps',
+ 'next_steps'),
+ ('vfc',
+ 'vfc'),
+ ('change_checklist_state',
+ 'change_checklist_state'),
+ ('vf_provisioing_event',
+ 'vf_provisioing_event'),
+ ('test_finished_event',
+ 'test_finished_event'),
+ ('change_engagement_stage',
+ 'change_engagement_stage')],
+ max_length=36),
),
migrations.AlterField(
model_name='checklist',
name='state',
- field=models.CharField(choices=[('automation', 'automation'), ('review', 'review'), ('peer_review', 'peer_review'), ('approval', 'approval'), (
- 'handoff', 'handoff'), ('closed', 'closed'), ('archive', 'archive'), ('pending', 'pending')], default='pending', max_length=36),
+ field=models.CharField(
+ choices=[
+ ('automation',
+ 'automation'),
+ ('review',
+ 'review'),
+ ('peer_review',
+ 'peer_review'),
+ ('approval',
+ 'approval'),
+ ('handoff',
+ 'handoff'),
+ ('closed',
+ 'closed'),
+ ('archive',
+ 'archive'),
+ ('pending',
+ 'pending')],
+ default='pending',
+ max_length=36),
),
migrations.AlterField(
model_name='checklistdecision',
name='peer_review_value',
- field=models.CharField(choices=[('approved', 'approved'), ('denied', 'denied'),
- ('not_relevant', 'not_relevant'), ('na', 'na')], max_length=36),
+ field=models.CharField(
+ choices=[
+ ('approved',
+ 'approved'),
+ ('denied',
+ 'denied'),
+ ('not_relevant',
+ 'not_relevant'),
+ ('na',
+ 'na')],
+ max_length=36),
),
migrations.AlterField(
model_name='checklistdecision',
name='review_value',
- field=models.CharField(choices=[('approved', 'approved'), ('denied', 'denied'),
- ('not_relevant', 'not_relevant'), ('na', 'na')], max_length=36),
+ field=models.CharField(
+ choices=[
+ ('approved',
+ 'approved'),
+ ('denied',
+ 'denied'),
+ ('not_relevant',
+ 'not_relevant'),
+ ('na',
+ 'na')],
+ max_length=36),
),
migrations.AlterField(
model_name='checklistlineitem',
name='line_type',
- field=models.CharField(choices=[('auto', 'auto'), ('manual', 'manual')], default='auto', max_length=36),
+ field=models.CharField(
+ choices=[
+ ('auto',
+ 'auto'),
+ ('manual',
+ 'manual')],
+ default='auto',
+ max_length=36),
),
migrations.AlterField(
model_name='checklisttemplate',
name='category',
- field=models.CharField(choices=[('overall', 'overall'), ('heat', 'heat'), ('glance', 'glance'),
- ('instantiation', 'instantiation'), ('asdc', 'asdc')], default='overall', max_length=36),
+ field=models.CharField(
+ choices=[
+ ('overall',
+ 'overall'),
+ ('heat',
+ 'heat'),
+ ('glance',
+ 'glance'),
+ ('instantiation',
+ 'instantiation'),
+ ('asdc',
+ 'asdc')],
+ default='overall',
+ max_length=36),
),
migrations.AlterField(
model_name='engagement',
name='engagement_stage',
- field=models.CharField(choices=[('Intake', 'Intake'), ('Active', 'Active'), ('Validated', 'Validated'), (
- 'Completed', 'Completed'), ('Archived', 'Archived')], db_index=True, default='Intake', max_length=15),
+ field=models.CharField(
+ choices=[
+ ('Intake',
+ 'Intake'),
+ ('Active',
+ 'Active'),
+ ('Validated',
+ 'Validated'),
+ ('Completed',
+ 'Completed'),
+ ('Archived',
+ 'Archived')],
+ db_index=True,
+ default='Intake',
+ max_length=15),
),
migrations.AlterField(
model_name='nextstep',
name='next_step_type',
- field=models.CharField(choices=[('set_ssh', 'set_ssh'), ('trial_agreements', 'trial_agreements'), ('add_contact_person', 'add_contact_person'), (
- 'submit_vf_package', 'submit_vf_package'), ('el_handoff', 'el_handoff'), ('user_defined', 'user_defined')], default='user_defined', max_length=36),
+ field=models.CharField(
+ choices=[
+ ('set_ssh',
+ 'set_ssh'),
+ ('trial_agreements',
+ 'trial_agreements'),
+ ('add_contact_person',
+ 'add_contact_person'),
+ ('submit_vf_package',
+ 'submit_vf_package'),
+ ('el_handoff',
+ 'el_handoff'),
+ ('user_defined',
+ 'user_defined')],
+ default='user_defined',
+ max_length=36),
),
migrations.AlterField(
model_name='nextstep',
name='state',
- field=models.CharField(choices=[('Incomplete', 'Incomplete'), ('Completed', 'Completed')], max_length=15),
+ field=models.CharField(
+ choices=[
+ ('Incomplete',
+ 'Incomplete'),
+ ('Completed',
+ 'Completed')],
+ max_length=15),
),
migrations.AlterField(
model_name='recentengagement',
name='action_type',
- field=models.CharField(choices=[('JOINED_TO_ENGAGEMENT', 'JOINED_TO_ENGAGEMENT'), ('NEXT_STEP_ASSIGNED', 'NEXT_STEP_ASSIGNED'), ('GOT_OWNERSHIP_OVER_ENGAGEMENT',
- 'GOT_OWNERSHIP_OVER_ENGAGEMENT'), ('NAVIGATED_INTO_ENGAGEMENT', 'NAVIGATED_INTO_ENGAGEMENT'), ('NEW_VF_CREATED', 'NEW_VF_CREATED')], max_length=36),
+ field=models.CharField(
+ choices=[
+ ('JOINED_TO_ENGAGEMENT',
+ 'JOINED_TO_ENGAGEMENT'),
+ ('NEXT_STEP_ASSIGNED',
+ 'NEXT_STEP_ASSIGNED'),
+ ('GOT_OWNERSHIP_OVER_ENGAGEMENT',
+ 'GOT_OWNERSHIP_OVER_ENGAGEMENT'),
+ ('NAVIGATED_INTO_ENGAGEMENT',
+ 'NAVIGATED_INTO_ENGAGEMENT'),
+ ('NEW_VF_CREATED',
+ 'NEW_VF_CREATED')],
+ max_length=36),
),
]
diff --git a/django/engagementmanager/migrations/0029_auto_20170504_0749.py b/django/engagementmanager/migrations/0029_auto_20170504_0749.py
index f1a4f9a..6d609e2 100644
--- a/django/engagementmanager/migrations/0029_auto_20170504_0749.py
+++ b/django/engagementmanager/migrations/0029_auto_20170504_0749.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/engagementmanager/migrations/0030_engagement_archived_time.py b/django/engagementmanager/migrations/0030_engagement_archived_time.py
index b24f67a..0fe2b05 100644
--- a/django/engagementmanager/migrations/0030_engagement_archived_time.py
+++ b/django/engagementmanager/migrations/0030_engagement_archived_time.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -53,6 +53,7 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='engagement',
name='archived_time',
- field=models.DateTimeField(blank=True, null=True, verbose_name='archived time'),
+ field=models.DateTimeField(
+ blank=True, null=True, verbose_name='archived time'),
),
]
diff --git a/django/engagementmanager/migrations/0031_auto_20170620_1312.py b/django/engagementmanager/migrations/0031_auto_20170620_1312.py
index f1956c4..8c27f24 100644
--- a/django/engagementmanager/migrations/0031_auto_20170620_1312.py
+++ b/django/engagementmanager/migrations/0031_auto_20170620_1312.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -54,11 +54,38 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='activity',
name='activity_type',
- field=models.CharField(choices=[('user_joined_eng', 'user_joined_eng'), ('ssh_key_added', 'ssh_key_added'), ('eng_validation_request', 'eng_validation_request'), ('update_next_steps', 'update_next_steps'), ('vfc', 'vfc'), ('change_checklist_state', 'change_checklist_state'), ('vf_provisioning_event', 'vf_provisioning_event'), ('test_finished_event', 'test_finished_event'), ('change_engagement_stage', 'change_engagement_stage'), ('add_next_steps', 'add_next_steps'), ('delete_next_steps', 'delete_next_steps')], max_length=36),
+ field=models.CharField(
+ choices=[
+ ('user_joined_eng',
+ 'user_joined_eng'),
+ ('ssh_key_added',
+ 'ssh_key_added'),
+ ('eng_validation_request',
+ 'eng_validation_request'),
+ ('update_next_steps',
+ 'update_next_steps'),
+ ('vfc',
+ 'vfc'),
+ ('change_checklist_state',
+ 'change_checklist_state'),
+ ('vf_provisioning_event',
+ 'vf_provisioning_event'),
+ ('test_finished_event',
+ 'test_finished_event'),
+ ('change_engagement_stage',
+ 'change_engagement_stage'),
+ ('add_next_steps',
+ 'add_next_steps'),
+ ('delete_next_steps',
+ 'delete_next_steps')],
+ max_length=36),
),
migrations.AlterField(
model_name='activity',
name='engagement',
- field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, to='engagementmanager.Engagement'),
+ field=models.ForeignKey(
+ null=True,
+ on_delete=django.db.models.deletion.PROTECT,
+ to='engagementmanager.Engagement'),
),
]
diff --git a/django/engagementmanager/migrations/0032_auto_20170702_1435.py b/django/engagementmanager/migrations/0032_auto_20170702_1435.py
index 53e5a22..11f0d86 100644
--- a/django/engagementmanager/migrations/0032_auto_20170702_1435.py
+++ b/django/engagementmanager/migrations/0032_auto_20170702_1435.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -55,10 +55,16 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='Feedback',
fields=[
- ('uuid', models.CharField(max_length=36, primary_key=True, serialize=False, unique=True)),
- ('create_time', models.DateTimeField(default=django.utils.timezone.now)),
- ('description', models.TextField(verbose_name='feedback_description')),
- ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='engagementmanager.IceUserProfile')),
+ ('uuid', models.CharField(max_length=36,
+ primary_key=True, serialize=False,
+ unique=True)),
+ ('create_time', models.DateTimeField(
+ default=django.utils.timezone.now)),
+ ('description', models.TextField(
+ verbose_name='feedback_description')),
+ ('user', models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE,
+ to='engagementmanager.IceUserProfile')),
],
options={
'db_table': 'ice_feedback',
diff --git a/django/engagementmanager/migrations/0033_auto_20170704_0635.py b/django/engagementmanager/migrations/0033_auto_20170704_0635.py
index c6d1bb6..08aebc8 100644
--- a/django/engagementmanager/migrations/0033_auto_20170704_0635.py
+++ b/django/engagementmanager/migrations/0033_auto_20170704_0635.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -54,116 +54,158 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='activity',
name='uuid',
- field=models.CharField(default=uuid.uuid4, max_length=36, primary_key=True, serialize=False, unique=True),
+ field=models.CharField(
+ default=uuid.uuid4, max_length=36, primary_key=True,
+ serialize=False, unique=True),
),
migrations.AlterField(
model_name='applicationserviceinfrastructure',
name='uuid',
- field=models.CharField(default=uuid.uuid4, max_length=36, unique=True),
+ field=models.CharField(
+ default=uuid.uuid4, max_length=36, unique=True),
),
migrations.AlterField(
model_name='checklist',
name='uuid',
- field=models.CharField(default=uuid.uuid4, max_length=36, primary_key=True, serialize=False),
+ field=models.CharField(
+ default=uuid.uuid4, max_length=36, primary_key=True,
+ serialize=False),
),
migrations.AlterField(
model_name='checklistauditlog',
name='uuid',
- field=models.CharField(default=uuid.uuid4, max_length=36, primary_key=True, serialize=False),
+ field=models.CharField(
+ default=uuid.uuid4, max_length=36, primary_key=True,
+ serialize=False),
),
migrations.AlterField(
model_name='checklistdecision',
name='uuid',
- field=models.CharField(default=uuid.uuid4, max_length=36, primary_key=True, serialize=False),
+ field=models.CharField(
+ default=uuid.uuid4, max_length=36, primary_key=True,
+ serialize=False),
),
migrations.AlterField(
model_name='checklistlineitem',
name='uuid',
- field=models.CharField(default=uuid.uuid4, max_length=36, primary_key=True, serialize=False),
+ field=models.CharField(
+ default=uuid.uuid4, max_length=36, primary_key=True,
+ serialize=False),
),
migrations.AlterField(
model_name='checklistsection',
name='uuid',
- field=models.CharField(default=uuid.uuid4, max_length=36, primary_key=True, serialize=False),
+ field=models.CharField(
+ default=uuid.uuid4, max_length=36, primary_key=True,
+ serialize=False),
),
migrations.AlterField(
model_name='checklisttemplate',
name='uuid',
- field=models.CharField(default=uuid.uuid4, max_length=36, primary_key=True, serialize=False),
+ field=models.CharField(
+ default=uuid.uuid4, max_length=36, primary_key=True,
+ serialize=False),
),
migrations.AlterField(
model_name='deploymenttarget',
name='uuid',
- field=models.CharField(default=uuid.uuid4, max_length=36, primary_key=True, serialize=False),
+ field=models.CharField(
+ default=uuid.uuid4, max_length=36, primary_key=True,
+ serialize=False),
),
migrations.AlterField(
model_name='deploymenttargetsite',
name='uuid',
- field=models.CharField(default=uuid.uuid4, max_length=36, primary_key=True, serialize=False),
+ field=models.CharField(
+ default=uuid.uuid4, max_length=36, primary_key=True,
+ serialize=False),
),
migrations.AlterField(
model_name='ecomprelease',
name='uuid',
- field=models.CharField(default=uuid.uuid4, max_length=36, primary_key=True, serialize=False),
+ field=models.CharField(
+ default=uuid.uuid4, max_length=36, primary_key=True,
+ serialize=False),
),
migrations.AlterField(
model_name='engagement',
name='uuid',
- field=models.CharField(default=uuid.uuid4, max_length=64, primary_key=True, serialize=False),
+ field=models.CharField(
+ default=uuid.uuid4, max_length=64, primary_key=True,
+ serialize=False),
),
migrations.AlterField(
model_name='engagementstatus',
name='uuid',
- field=models.CharField(default=uuid.uuid4, max_length=64, primary_key=True, serialize=False),
+ field=models.CharField(
+ default=uuid.uuid4, max_length=64, primary_key=True,
+ serialize=False),
),
migrations.AlterField(
model_name='feedback',
name='uuid',
- field=models.CharField(default=uuid.uuid4, max_length=36, primary_key=True, serialize=False, unique=True),
+ field=models.CharField(
+ default=uuid.uuid4, max_length=36, primary_key=True,
+ serialize=False, unique=True),
),
migrations.AlterField(
model_name='iceuserprofile',
name='uuid',
- field=models.CharField(default=uuid.uuid4, max_length=36, unique=True),
+ field=models.CharField(
+ default=uuid.uuid4, max_length=36, unique=True),
),
migrations.AlterField(
model_name='invitation',
name='uuid',
- field=models.CharField(default=uuid.uuid4, max_length=36, primary_key=True, serialize=False),
+ field=models.CharField(
+ default=uuid.uuid4, max_length=36, primary_key=True,
+ serialize=False),
),
migrations.AlterField(
model_name='nextstep',
name='uuid',
- field=models.CharField(default=uuid.uuid4, max_length=36, primary_key=True, serialize=False),
+ field=models.CharField(
+ default=uuid.uuid4, max_length=36, primary_key=True,
+ serialize=False),
),
migrations.AlterField(
model_name='notification',
name='uuid',
- field=models.CharField(default=uuid.uuid4, max_length=36, primary_key=True, serialize=False, unique=True),
+ field=models.CharField(
+ default=uuid.uuid4, max_length=36, primary_key=True,
+ serialize=False, unique=True),
),
migrations.AlterField(
model_name='recentengagement',
name='uuid',
- field=models.CharField(default=uuid.uuid4, max_length=64, primary_key=True, serialize=False),
+ field=models.CharField(
+ default=uuid.uuid4, max_length=64, primary_key=True,
+ serialize=False),
),
migrations.AlterField(
model_name='role',
name='uuid',
- field=models.CharField(default=uuid.uuid4, max_length=36, unique=True),
+ field=models.CharField(
+ default=uuid.uuid4, max_length=36, unique=True),
),
migrations.AlterField(
model_name='vendor',
name='uuid',
- field=models.CharField(default=uuid.uuid4, max_length=36, unique=True),
+ field=models.CharField(
+ default=uuid.uuid4, max_length=36, unique=True),
),
migrations.AlterField(
model_name='vf',
name='uuid',
- field=models.CharField(default=uuid.uuid4, max_length=36, primary_key=True, serialize=False, unique=True),
+ field=models.CharField(
+ default=uuid.uuid4, max_length=36, primary_key=True,
+ serialize=False, unique=True),
),
migrations.AlterField(
model_name='vfc',
name='uuid',
- field=models.CharField(default=uuid.uuid4, max_length=36, primary_key=True, serialize=False, unique=True),
+ field=models.CharField(
+ default=uuid.uuid4, max_length=36, primary_key=True,
+ serialize=False, unique=True),
),
]
diff --git a/django/engagementmanager/migrations/0034_engagement_is_with_files.py b/django/engagementmanager/migrations/0034_engagement_is_with_files.py
index 01d15f5..8cd6eb6 100644
--- a/django/engagementmanager/migrations/0034_engagement_is_with_files.py
+++ b/django/engagementmanager/migrations/0034_engagement_is_with_files.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/engagementmanager/migrations/0035_rgwa_fields.py b/django/engagementmanager/migrations/0035_rgwa_fields.py
index cce62bf..86b0c3a 100644
--- a/django/engagementmanager/migrations/0035_rgwa_fields.py
+++ b/django/engagementmanager/migrations/0035_rgwa_fields.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -53,16 +53,50 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='iceuserprofile',
name='rgwa_access_key',
- field=models.CharField(blank=True, max_length=1024, null=True, unique=True),
+ field=models.CharField(
+ blank=True,
+ max_length=1024,
+ null=True,
+ unique=True),
),
migrations.AddField(
model_name='iceuserprofile',
name='rgwa_secret_key',
- field=models.CharField(blank=True, max_length=1024, null=True, unique=True),
+ field=models.CharField(
+ blank=True,
+ max_length=1024,
+ null=True,
+ unique=True),
),
migrations.AlterField(
model_name='activity',
name='activity_type',
- field=models.CharField(choices=[('user_joined_eng', 'user_joined_eng'), ('ssh_key_added', 'ssh_key_added'), ('eng_validation_request', 'eng_validation_request'), ('update_next_steps', 'update_next_steps'), ('vfc', 'vfc'), ('change_checklist_state', 'change_checklist_state'), ('vf_provisioning_event', 'vf_provisioning_event'), ('test_finished_event', 'test_finished_event'), ('change_engagement_stage', 'change_engagement_stage'), ('add_next_steps', 'add_next_steps'), ('delete_next_steps', 'delete_next_steps'), ('notice_empty_engagement', 'notice_empty_engagement')], max_length=36),
+ field=models.CharField(
+ choices=[
+ ('user_joined_eng',
+ 'user_joined_eng'),
+ ('ssh_key_added',
+ 'ssh_key_added'),
+ ('eng_validation_request',
+ 'eng_validation_request'),
+ ('update_next_steps',
+ 'update_next_steps'),
+ ('vfc',
+ 'vfc'),
+ ('change_checklist_state',
+ 'change_checklist_state'),
+ ('vf_provisioning_event',
+ 'vf_provisioning_event'),
+ ('test_finished_event',
+ 'test_finished_event'),
+ ('change_engagement_stage',
+ 'change_engagement_stage'),
+ ('add_next_steps',
+ 'add_next_steps'),
+ ('delete_next_steps',
+ 'delete_next_steps'),
+ ('notice_empty_engagement',
+ 'notice_empty_engagement')],
+ max_length=36),
),
]
diff --git a/django/engagementmanager/migrations/0036_auto_20170906_0935.py b/django/engagementmanager/migrations/0036_auto_20170906_0935.py
index 7c85b6c..b37d84f 100644
--- a/django/engagementmanager/migrations/0036_auto_20170906_0935.py
+++ b/django/engagementmanager/migrations/0036_auto_20170906_0935.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/engagementmanager/migrations/__init__.py b/django/engagementmanager/migrations/__init__.py
index 1726c13..16f81cb 100644
--- a/django/engagementmanager/migrations/__init__.py
+++ b/django/engagementmanager/migrations/__init__.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/engagementmanager/models.py b/django/engagementmanager/models.py
index 71deb84..0b84172 100644
--- a/django/engagementmanager/models.py
+++ b/django/engagementmanager/models.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -45,7 +45,9 @@ from django.db.models.signals import post_save
from django.utils import timezone
from django.utils.timezone import timedelta
from engagementmanager.service.logging_service import LoggingServiceFactory
-from engagementmanager.utils.constants import EngagementStage, ActivityType, NextStepType, CheckListState, CheckListCategory, CheckListDecisionValue, CheckListLineType, \
+from engagementmanager.utils.constants import EngagementStage, ActivityType, \
+ NextStepType, CheckListState, CheckListCategory, CheckListDecisionValue, \
+ CheckListLineType, \
RecentEngagementActionType, NextStepState
@@ -188,21 +190,45 @@ class Engagement(models.Model):
engagement_team = models.ManyToManyField(
IceUserProfile, related_name='members')
creator = models.ForeignKey(
- IceUserProfile, on_delete=models.PROTECT, null=True, blank=True, related_name='Engagement_creator')
+ IceUserProfile,
+ on_delete=models.PROTECT,
+ null=True,
+ blank=True,
+ related_name='Engagement_creator')
contact_user = models.ForeignKey(
- IceUserProfile, on_delete=models.PROTECT, null=True, blank=True, related_name='Engagement_contact_user')
+ IceUserProfile,
+ on_delete=models.PROTECT,
+ null=True,
+ blank=True,
+ related_name='Engagement_contact_user')
engagement_manual_id = models.CharField(
- max_length=36, null=False, blank=False, default=-1, db_index=True) # index in favor of dashboard search
+ max_length=36,
+ null=False,
+ blank=False,
+ default=-1,
+ db_index=True) # index in favor of dashboard search
progress = models.IntegerField(default=0)
target_completion_date = models.DateField(
null=True, blank=True, default=get_default_target_completion_date)
- engagement_stage = models.CharField(max_length=15, default=EngagementStage.Intake.name, choices=EngagementStage.choices(
- ), db_index=True) # Can be: Intake, Active, Validated, Completed @UndefinedVariable
+ engagement_stage = models.CharField(
+ max_length=15,
+ default=EngagementStage.Intake.name,
+ choices=EngagementStage.choices(),
+ db_index=True)
+ # Can be: Intake, Active, Validated, Completed @UndefinedVariable
create_time = models.DateTimeField('creation time', default=timezone.now)
peer_reviewer = models.ForeignKey(
- IceUserProfile, on_delete=models.PROTECT, null=True, blank=True, related_name='Engagement_peer_reviewer')
+ IceUserProfile,
+ on_delete=models.PROTECT,
+ null=True,
+ blank=True,
+ related_name='Engagement_peer_reviewer')
reviewer = models.ForeignKey(
- IceUserProfile, on_delete=models.PROTECT, null=True, blank=True, related_name='Engagement_el_reviewer')
+ IceUserProfile,
+ on_delete=models.PROTECT,
+ null=True,
+ blank=True,
+ related_name='Engagement_el_reviewer')
starred_engagement = models.ManyToManyField(
IceUserProfile, default=None, blank=True)
heat_validated_time = models.DateTimeField(
@@ -239,7 +265,11 @@ class EngagementStatus(models.Model):
engagement = models.ForeignKey(Engagement, on_delete=models.PROTECT)
description = models.CharField(max_length=256)
creator = models.ForeignKey(
- IceUserProfile, on_delete=models.PROTECT, null=True, blank=True, related_name='status_creator')
+ IceUserProfile,
+ on_delete=models.PROTECT,
+ null=True,
+ blank=True,
+ related_name='status_creator')
create_time = models.DateTimeField(default=timezone.now)
update_time = models.DateTimeField(default=timezone.now)
@@ -261,7 +291,10 @@ class Activity(models.Model):
metadata = models.CharField(max_length=1024)
def __str__(self):
- return 'Activity created at ' + str(self.create_time) + ', Description: ' + self.description + ', Notification:' + str(self.is_notification) + ', ActivityType=' + str(self.activity_type)
+ return 'Activity created at ' + str(self.create_time) \
+ + ', Description: ' + self.description + \
+ ', Notification:' + str(self.is_notification) + \
+ ', ActivityType=' + str(self.activity_type)
class Meta:
ordering = ['-create_time']
@@ -279,7 +312,8 @@ class Notification(models.Model):
activity = models.ForeignKey(Activity, on_delete=models.CASCADE, null=True)
def __str__(self):
- return str(self.user) + ' ' + str(self.is_sent) + ' ' + str(self.is_read)
+ return str(self.user) + ' ' + str(self.is_sent) + \
+ ' ' + str(self.is_read)
class Meta:
db_table = "ice_notification"
@@ -296,7 +330,9 @@ class Feedback(models.Model):
description = models.TextField('feedback_description')
def __str__(self):
- return 'Feedback created at ' + str(self.create_time) + ' ' + str(self.user) + ', Description: ' + self.description
+ return 'Feedback created at ' + \
+ str(self.create_time) + ' ' + str(self.user) + \
+ ', Description: ' + self.description
class Meta:
db_table = "ice_feedback"
@@ -331,7 +367,10 @@ class VF(models.Model):
DeploymentTarget, on_delete=models.SET_NULL, null=True, blank=True)
ecomp_release = models.ForeignKey(ECOMPRelease, null=True, blank=False)
deployment_target_sites = models.ManyToManyField(
- DeploymentTargetSite, default=None, blank=True, related_name='DeployTarget_sites')
+ DeploymentTargetSite,
+ default=None,
+ blank=True,
+ related_name='DeployTarget_sites')
is_service_provider_internal = models.BooleanField(default=False)
vendor = models.ForeignKey(Vendor, on_delete=models.PROTECT)
git_repo_url = models.CharField(max_length=512, blank=False, default=-1)
@@ -341,8 +380,10 @@ class VF(models.Model):
def jenkins_job_name(self):
if not self.engagement.engagement_manual_id:
raise ValueError(
- "engagement_manual_id (%s) is not valid for jenkins job name" % self.engagement.engagement_manual_id)
- return "{self.name}_{self.engagement.engagement_manual_id}".format(self=self)
+ "engagement_manual_id (%s) is not valid for jenkins job name" %
+ self.engagement.engagement_manual_id)
+ return "{self.name}_{self.engagement.engagement_manual_id}".format(
+ self=self)
def __str__(self):
return self.name
@@ -362,7 +403,11 @@ class VFC(models.Model):
company = models.ForeignKey(Vendor, on_delete=SET_NULL, null=True)
create_time = models.DateTimeField('creation time', default=timezone.now)
creator = models.ForeignKey(
- IceUserProfile, on_delete=models.PROTECT, null=True, blank=True, related_name='Vfc_creator')
+ IceUserProfile,
+ on_delete=models.PROTECT,
+ null=True,
+ blank=True,
+ related_name='Vfc_creator')
def __str__(self):
return self.name
@@ -393,8 +438,10 @@ class ChecklistTemplate(models.Model): # Reference Table
uuid = models.CharField(
default=uuid.uuid4, max_length=36, primary_key=True)
name = models.CharField('template name', max_length=255)
- category = models.CharField(max_length=36, choices=CheckListCategory.choices(
- ), default=CheckListCategory.overall.name) # @UndefinedVariable
+ category = models.CharField(
+ max_length=36,
+ choices=CheckListCategory.choices(),
+ default=CheckListCategory.overall.name) # @UndefinedVariable
version = models.IntegerField('template version')
create_time = models.DateTimeField('creation time', default=timezone.now)
update_time = models.DateTimeField(
@@ -435,8 +482,10 @@ class ChecklistLineItem(models.Model): # Reference Table
name = models.CharField('line name', max_length=255)
weight = models.FloatField('line weight')
description = models.TextField('line description')
- line_type = models.CharField(max_length=36, choices=CheckListLineType.choices(
- ), default=CheckListLineType.auto.name) # @UndefinedVariable
+ line_type = models.CharField(
+ max_length=36,
+ choices=CheckListLineType.choices(),
+ default=CheckListLineType.auto.name) # @UndefinedVariable
validation_instructions = models.TextField('line validation instructions')
create_time = models.DateTimeField('creation time', default=timezone.now)
update_time = models.DateTimeField(
@@ -447,9 +496,13 @@ class ChecklistLineItem(models.Model): # Reference Table
ChecklistSection, on_delete=models.CASCADE, null=False, blank=False)
def save(self, *args, **kwargs):
- if (self.template != self.section.template != None):
- raise ValueError("ChecklistLineItem can't be saved/updated since the template " +
- self.template.name + " is not equal to its section's template " + self.section.template.name)
+ if (self.template != self.section.template is not None):
+ raise ValueError(
+ "ChecklistLineItem can't be saved/updated \
+ since the template " +
+ self.template.name +
+ " is not equal to its section's template " +
+ self.section.template.name)
super(ChecklistLineItem, self).save(*args, **kwargs)
def __str__(self):
@@ -478,10 +531,14 @@ class Checklist(models.Model):
template = models.ForeignKey(ChecklistTemplate, on_delete=models.PROTECT)
# The EL that opened the modal.
creator = models.ForeignKey(
- IceUserProfile, on_delete=models.CASCADE, related_name='checklist_creator')
+ IceUserProfile,
+ on_delete=models.CASCADE,
+ related_name='checklist_creator')
# The user who currently validates the checklist
owner = models.ForeignKey(
- IceUserProfile, on_delete=models.CASCADE, related_name='checklist_owner')
+ IceUserProfile,
+ on_delete=models.CASCADE,
+ related_name='checklist_owner')
def __str__(self):
return self.name + ' ' + self.state
@@ -495,11 +552,16 @@ class NextStep(models.Model):
default=uuid.uuid4, max_length=36, primary_key=True)
create_time = models.DateTimeField('creation time', default=timezone.now)
creator = models.ForeignKey(
- IceUserProfile, on_delete=models.PROTECT, related_name="NextStep_creator")
+ IceUserProfile,
+ on_delete=models.PROTECT,
+ related_name="NextStep_creator")
last_update_time = models.DateTimeField(
'last update time', default=timezone.now)
last_updater = models.ForeignKey(
- IceUserProfile, on_delete=models.PROTECT, null=True, related_name="NextStep_last_updater")
+ IceUserProfile,
+ on_delete=models.PROTECT,
+ null=True,
+ related_name="NextStep_last_updater")
# Can be: Modified, Added, Completed, Denied
last_update_type = models.CharField(max_length=15, default='Added')
position = models.IntegerField()
@@ -514,15 +576,18 @@ class NextStep(models.Model):
Engagement, on_delete=models.PROTECT, null=True, blank=True)
owner = models.ForeignKey(
IceUserProfile, on_delete=models.PROTECT, null=True, blank=True)
- next_step_type = models.CharField(max_length=36, choices=NextStepType.choices(
- ), default=NextStepType.user_defined.name) # @UndefinedVariable
+ next_step_type = models.CharField(
+ max_length=36,
+ choices=NextStepType.choices(),
+ default=NextStepType.user_defined.name) # @UndefinedVariable
files = models.TextField('list of files', null=True)
assignees = models.ManyToManyField(
IceUserProfile, related_name='assignees')
due_date = models.DateField('due_date', null=True)
def __str__(self):
- return self.engagement_stage + ' ' + self.state + ' ' + self.description
+ return self.engagement_stage + ' ' + self.state + \
+ ' ' + self.description
class Meta:
db_table = "ice_next_step"
@@ -535,9 +600,10 @@ class ChecklistDecision(models.Model):
uuid = models.CharField(
default=uuid.uuid4, max_length=36, primary_key=True)
review_value = models.CharField(
- max_length=36, choices=CheckListDecisionValue.choices()) # @UndefinedVariable
+ max_length=36,
+ choices=CheckListDecisionValue.choices())
peer_review_value = models.CharField(
- max_length=36, choices=CheckListDecisionValue.choices()) # @UndefinedVariable
+ max_length=36, choices=CheckListDecisionValue.choices())
create_time = models.DateTimeField('creation time', default=timezone.now)
update_time = models.DateTimeField(
'last update time', null=True, blank=True)
@@ -546,19 +612,33 @@ class ChecklistDecision(models.Model):
lineitem = models.ForeignKey(ChecklistLineItem, on_delete=models.CASCADE)
def save(self, *args, **kwargs):
- if (self.template != self.checklist.template != None):
- raise ValueError("ChecklistDecision can't be saved/updated since the template " +
- self.template.name + " is not equal to its checklist's template " + self.checklist.template.name)
- if (self.template != self.lineitem.section.template != None):
- raise ValueError("ChecklistDecision can't be saved/updated since the template " + self.template.name +
- " is not equal to its lineitem/section's template " + self.lineitem.section.template)
- if (self.checklist.template != self.lineitem.section.template != None):
- raise ValueError("ChecklistDecision can't be saved/updated since its checklist's template " +
- self.checklist.template + " is not equal to its lineitem/section's template " + self.lineitem.section.template)
+ if (self.template != self.checklist.template is not None):
+ raise ValueError(
+ "ChecklistDecision can't be saved/updated \
+ since the template " +
+ self.template.name +
+ " is not equal to its checklist's template " +
+ self.checklist.template.name)
+ if (self.template != self.lineitem.section.template is not None):
+ raise ValueError(
+ "ChecklistDecision can't be saved/updated \
+ since the template " +
+ self.template.name +
+ " is not equal to its lineitem/section's template " +
+ self.lineitem.section.template)
+ if (self.checklist.template != self.lineitem.section.template
+ is not None):
+ raise ValueError(
+ "ChecklistDecision can't be saved/updated since \
+ its checklist's template " +
+ self.checklist.template +
+ " is not equal to its lineitem/section's template " +
+ self.lineitem.section.template)
super(ChecklistDecision, self).save(*args, **kwargs)
def __str__(self):
- return 'decision:' + self.uuid + ' ' + self.template.name + ' ' + self.review_value + ' ' + self.peer_review_value
+ return 'decision:' + self.uuid + ' ' + self.template.name + \
+ ' ' + self.review_value + ' ' + self.peer_review_value
class Meta:
db_table = "ice_checklist_decision"
@@ -581,9 +661,11 @@ class ChecklistAuditLog(models.Model):
ChecklistDecision, on_delete=models.CASCADE, null=True, blank=True)
def save(self, *args, **kwargs):
- if (self.checklist != None and self.decision != None):
+ if (self.checklist is not None and self.decision is not None):
raise ValueError(
- "ChecklistAuditLog can't be attached to both checklist and decision. Please remove one of them and retry the operation")
+ "ChecklistAuditLog can't be attached \
+ to both checklist and decision. Please \
+ remove one of them and retry the operation")
super(ChecklistAuditLog, self).save(*args, **kwargs)
def __str__(self):
@@ -602,13 +684,17 @@ class Invitation(models.Model):
max_length=64, null=False, blank=False, db_index=True)
email = models.CharField(max_length=255, null=False, blank=False)
invitation_token = models.CharField(
- max_length=1024, null=False, blank=False, db_index=True) # index in favor of signup
+ max_length=1024,
+ null=False,
+ blank=False,
+ db_index=True) # index in favor of signup
accepted = models.BooleanField(default=False)
create_time = models.DateTimeField(
'invitation creation time', default=timezone.now)
def __str__(self):
- return "Invite from " + self.invited_by_user_uuid + " to " + self.email + " for joining engagement " + self.engagement_uuid
+ return "Invite from " + self.invited_by_user_uuid + " to " + \
+ self.email + " for joining engagement " + self.engagement_uuid
class Meta:
db_table = "ice_invitation"
diff --git a/django/engagementmanager/nextsteps.py b/django/engagementmanager/nextsteps.py
index 3fee019..2355304 100644
--- a/django/engagementmanager/nextsteps.py
+++ b/django/engagementmanager/nextsteps.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -51,28 +51,33 @@ default_next_steps = [
{
'position': 2,
'stage': 'Intake',
- 'text': 'Please work with your Engagement Lead (EL) to complete the necessary trial agreements.',
+ 'text': 'Please work with your Engagement Lead (EL) to complete the ' +
+ 'necessary trial agreements.',
'condition': lambda x, y: True,
'type': NextStepType.trial_agreements.name # @UndefinedVariable
},
{
'position': 3,
'stage': 'Intake',
- 'text': 'Please add your ' + Constants.service_provider_company_name + ' sponsor or vendor contact information.',
+ 'text': 'Please add your ' + Constants.service_provider_company_name\
+ + ' sponsor or vendor contact information.',
'condition': lambda user, eng: False if (eng.contact_user) else True,
'type': NextStepType.add_contact_person.name # @UndefinedVariable
},
{
'position': 1,
'stage': 'Active',
- 'text': 'Please submit the first version of the VF package. If you have any problems or questions, please contact your Engagement Lead (EL)',
+ 'text': 'Please submit the first version of the VF package.' +\
+ 'If you have any problems or questions,' +\
+ 'please contact your Engagement Lead (EL)',
'condition': lambda x, y: True,
'type': NextStepType.submit_vf_package.name # @UndefinedVariable
},
{
'position': 1,
'stage': 'Validated',
- 'text': 'Please schedule a time with your Engagement Lead (EL) to complete the handoff.',
+ 'text': 'Please schedule a time with your Engagement Lead (EL)' +\
+ 'to complete the handoff.',
'condition': lambda x, y: True,
'type': NextStepType.el_handoff.name # @UndefinedVariable
}
@@ -83,18 +88,28 @@ def create_default_next_steps_for_user(user, el_user):
"""
This method is for personal default next step only since it has an owner
"""
- def cond(user): return False if (user.ssh_public_key and user.ssh_public_key != '') else True
+ def cond(user): return False if (
+ user.ssh_public_key and user.ssh_public_key != '') else True
if cond(user):
desc = "Please add your SSH key to be able to contribute."
- nextstep = NextStep.objects.create(creator=el_user, last_updater=el_user, position=1, description=desc, last_update_type='Added', state='Incomplete',
- engagement_stage='Intake', engagement=None, owner=user, next_step_type=NextStepType.set_ssh.name, due_date=timezone.now() + timedelta(days=1)) # @UndefinedVariable
+ nextstep = NextStep.objects.create(
+ creator=el_user,
+ last_updater=el_user, position=1,
+ description=desc,
+ last_update_type='Added',
+ state='Incomplete',
+ engagement_stage='Intake',
+ engagement=None, owner=user,
+ next_step_type=NextStepType.set_ssh.name,
+ due_date=timezone.now() + timedelta(days=1))
nextstep.assignees.add(user)
nextstep.save()
def create_default_next_steps(user, engagement, el_user):
"""
- This method is for non-personal default next step only since it doesn't have an owner
+ This method is for non-personal default next step \
+ only since it doesn't have an owner
"""
for step in default_next_steps:
cond = step['condition']
@@ -104,10 +119,17 @@ def create_default_next_steps(user, engagement, el_user):
if (user.company == Constants.service_provider_company):
desc = desc.replace('$Contact', 'Vendor Contact')
else:
- desc = desc.replace('$Contact', Constants.service_provider_company_name + ' Sponsor Contact')
+ desc = desc.replace(
+ '$Contact', Constants.service_provider_company_name
+ + ' Sponsor Contact')
logger.debug('Creating default next step : ' + desc)
- nextstep = NextStep.objects.create(creator=el_user, last_updater=el_user, position=step['position'], description=desc, state='Incomplete', engagement_stage=step[
- 'stage'], engagement=engagement, next_step_type=ns_type, due_date=timezone.now() + timedelta(days=1))
+ nextstep = NextStep.objects.create(
+ creator=el_user,
+ last_updater=el_user, position=step['position'],
+ description=desc, state='Incomplete',
+ engagement_stage=step['stage'],
+ engagement=engagement, next_step_type=ns_type,
+ due_date=timezone.now() + timedelta(days=1))
nextstep.assignees.add(el_user)
nextstep.save()
else:
diff --git a/django/engagementmanager/notifications.py b/django/engagementmanager/notifications.py
index 59f2e1f..ce2676d 100644
--- a/django/engagementmanager/notifications.py
+++ b/django/engagementmanager/notifications.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -45,7 +45,8 @@ logger = LoggingServiceFactory.get_logger()
def num_of_notifications_for_user(user_uuid):
user = IceUserProfile.objects.get(uuid=user_uuid)
- amountOfnotificationForUser = Notification.objects.filter(user=user, is_read=False).filter().count()
+ amountOfnotificationForUser = Notification.objects.filter(
+ user=user, is_read=False).filter().count()
return amountOfnotificationForUser
@@ -53,7 +54,9 @@ def pull_recent_notifications(user_uuid, offset, limit):
ModifiedNotificationsSet = []
logger.debug("Pulling unread notifications from DB")
user = IceUserProfile.objects.get(uuid=user_uuid)
- notificationsList = Notification.objects.filter(user=user).order_by('is_read', '-activity__create_time')[int(offset):int(offset) + int(limit)]
+ notificationsList = Notification.objects.filter(user=user).order_by(
+ 'is_read', '-activity__create_time')[
+ int(offset):int(offset) + int(limit)]
num_of_objects = Notification.objects.filter(user=user).count()
for notif in notificationsList:
serializedNotification = ThinNotificationModelSerializer(notif).data
diff --git a/django/engagementmanager/rest/__init__.py b/django/engagementmanager/rest/__init__.py
index 1726c13..16f81cb 100644
--- a/django/engagementmanager/rest/__init__.py
+++ b/django/engagementmanager/rest/__init__.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/engagementmanager/rest/activation.py b/django/engagementmanager/rest/activation.py
index 3499b95..ed6c4d5 100644
--- a/django/engagementmanager/rest/activation.py
+++ b/django/engagementmanager/rest/activation.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -48,8 +48,10 @@ from engagementmanager.decorator.log_func_entry import logFuncEntry
from engagementmanager.models import IceUserProfile
from engagementmanager.rest.vvp_api_view import VvpApiView
from engagementmanager.utils.constants import Constants
-from engagementmanager.utils.vvp_exceptions import VvpObjectNotAvailable, VvpGeneralException, VvpBadRequest
-from engagementmanager.views_helper import generateActivationLink, getFirstEngByUser
+from engagementmanager.utils.vvp_exceptions \
+ import VvpObjectNotAvailable, VvpGeneralException, VvpBadRequest
+from engagementmanager.views_helper \
+ import generateActivationLink, getFirstEngByUser
from engagementmanager.vm_integration import vm_client
from engagementmanager.service.logging_service import LoggingServiceFactory
@@ -63,8 +65,9 @@ class ResendActivationMail(VvpApiView):
def get(self, request, user_uuid, format=None):
ice_user_obj = IceUserProfile.objects.get(uuid=user_uuid)
- data = {'activation_link': generateActivationLink(ice_user_obj.user.activation_token, ice_user_obj),
- 'full_name': ice_user_obj.full_name}
+ data = {'activation_link': generateActivationLink(
+ ice_user_obj.user.activation_token, ice_user_obj),
+ 'full_name': ice_user_obj.full_name}
# updating the activation time
ice_user_obj.user.activation_token_create_time = timezone.now()
@@ -72,10 +75,12 @@ class ResendActivationMail(VvpApiView):
ice_user_obj.save()
self.logger.debug("Activation Link: " + data['activation_link'])
- body = get_template("{activate_template_dir}activate_mail_body.html".format(
- activate_template_dir=Constants.activate_template_dir))
- subject = get_template("{activate_template_dir}activate_mail_subject.html".format(
- activate_template_dir=Constants.activate_template_dir))
+ body = get_template(
+ "{activate_template_dir}activate_mail_body.html".format(
+ activate_template_dir=Constants.activate_template_dir))
+ subject = get_template(
+ "{activate_template_dir}activate_mail_subject.html".format(
+ activate_template_dir=Constants.activate_template_dir))
mail.sendMail(ice_user_obj.email, data, body, subject)
return Response()
@@ -98,18 +103,22 @@ class ActivateUser(VvpApiView):
if user.activation_token != kwargs['token']:
raise VvpBadRequest(
- "User's activation token is not equal to the token in the activation path param.")
+ "User's activation token is not equal to the \
+ token in the activation path param.")
created = user.activation_token_create_time
current = timezone.now()
- if created.year == current.year and created.month == current.month and (created.day == current.day or
- created.day == current.day - 1):
+ if created.year == current.year and created.month == current.month \
+ and (created.day == current.day or
+ created.day == current.day - 1):
delta = current - created
- if abs(delta).total_seconds() / 3600.0 <= settings.TOKEN_EXPIRATION_IN_HOURS:
+ if abs(delta).total_seconds() / 3600.0 <= \
+ settings.TOKEN_EXPIRATION_IN_HOURS:
user.is_active = True
user.save()
self.logger.debug(
- "User " + user_profile.full_name + " is activated successfully, redirecting to Login")
+ "User " + user_profile.full_name + " is activated successfully, \
+ redirecting to Login")
user = IceUserProfile.objects.get(email=user.email)
eng = getFirstEngByUser(user)
result = {'activation_success': True, }
@@ -119,5 +128,5 @@ class ActivateUser(VvpApiView):
return Response(result)
else:
raise SignatureExpired("User's activation token expired.")
-
+
return Response({'activation_success': False, })
diff --git a/django/engagementmanager/rest/activity.py b/django/engagementmanager/rest/activity.py
index 47b4cc7..e2502da 100644
--- a/django/engagementmanager/rest/activity.py
+++ b/django/engagementmanager/rest/activity.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -60,6 +60,7 @@ class PullActivities(VvpApiView):
if not num:
num = settings.NUMBER_OF_POLLED_ACTIVITIES
eng = Engagement.objects.get(uuid=request_data_mgr.get_eng_uuid())
- activities = self.activities_service.pull_recent_activities(eng, recent_activities_limit=num)
+ activities = self.activities_service.pull_recent_activities(
+ eng, recent_activities_limit=num)
serializer = ActivityModelSerializer(activities, many=True)
return Response(serializer.data)
diff --git a/django/engagementmanager/rest/checklist.py b/django/engagementmanager/rest/checklist.py
index 200dcaa..daa69e2 100644
--- a/django/engagementmanager/rest/checklist.py
+++ b/django/engagementmanager/rest/checklist.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -36,8 +36,6 @@
# ============LICENSE_END============================================
#
# ECOMP is a trademark and service mark of AT&T Intellectual Property.
-import json
-
from rest_framework.response import Response
from rest_framework.status import HTTP_400_BAD_REQUEST,\
HTTP_500_INTERNAL_SERVER_ERROR
@@ -71,8 +69,9 @@ class NewCheckList(VvpApiView):
data = request.data
if ('checkListName' not in data or not data['checkListName'] or
- 'checkListTemplateUuid' not in data or not data['checkListTemplateUuid'] or
- 'checkListAssociatedFiles' not in data):
+ 'checkListTemplateUuid' not in data or
+ not data['checkListTemplateUuid'] or
+ 'checkListAssociatedFiles' not in data):
msg = "One of the CheckList's input parameters is missing"
self.logger.error(msg)
return Response(msg, status=HTTP_400_BAD_REQUEST)
@@ -83,7 +82,8 @@ class NewCheckList(VvpApiView):
return Response(msg, status=HTTP_400_BAD_REQUEST)
data = CheckListSvc().createOrUpdateChecklist(
- data['checkListName'], data['checkListTemplateUuid'], data['checkListAssociatedFiles'], None)
+ data['checkListName'], data['checkListTemplateUuid'],
+ data['checkListAssociatedFiles'], None)
return Response(data)
@@ -107,9 +107,10 @@ class ExistingCheckList(VvpApiView):
def put(self, request, checklistUuid):
data = request.data
if ('checklistUuid' not in data or not data['checklistUuid'] or
- 'checkListName' not in data or not data['checkListName'] or
- 'checkListTemplateUuid' not in data or not data['checkListTemplateUuid'] or
- 'checkListAssociatedFiles' not in data):
+ 'checkListName' not in data or not data['checkListName'] or
+ 'checkListTemplateUuid' not in data or
+ not data['checkListTemplateUuid'] or
+ 'checkListAssociatedFiles' not in data):
msg = "One of the CheckList's input parameters is missing"
self.logger.error(msg)
return Response(msg, status=HTTP_400_BAD_REQUEST)
@@ -119,7 +120,8 @@ class ExistingCheckList(VvpApiView):
return Response(msg, status=HTTP_400_BAD_REQUEST)
data = CheckListSvc().createOrUpdateChecklist(
- data['checkListName'], data['checkListTemplateUuid'], data['checkListAssociatedFiles'], data['checklistUuid'])
+ data['checkListName'], data['checkListTemplateUuid'],
+ data['checkListAssociatedFiles'], data['checklistUuid'])
return Response(data)
diff --git a/django/engagementmanager/rest/checklist_audit_log.py b/django/engagementmanager/rest/checklist_audit_log.py
index 4b86a33..62aafdf 100644
--- a/django/engagementmanager/rest/checklist_audit_log.py
+++ b/django/engagementmanager/rest/checklist_audit_log.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -36,7 +36,6 @@
# ============LICENSE_END============================================
#
# ECOMP is a trademark and service mark of AT&T Intellectual Property.
-import json
from rest_framework.response import Response
@@ -46,8 +45,9 @@ from engagementmanager.decorator.log_func_entry import logFuncEntry
from engagementmanager.models import ChecklistDecision, Checklist
from engagementmanager.rest.vvp_api_view import VvpApiView
from engagementmanager.service.authorization_service import Permissions
-from engagementmanager.service.checklist_audit_log_service import getAuditLogsWithChecklist, \
- addAuditLogToChecklist, getAuditLogsWithDecision, addAuditLogToDecision
+from engagementmanager.service.checklist_audit_log_service \
+ import getAuditLogsWithChecklist, addAuditLogToChecklist, \
+ getAuditLogsWithDecision, addAuditLogToDecision
from engagementmanager.utils.request_data_mgr import request_data_mgr
@@ -68,7 +68,8 @@ class ChecklistAuditLog(VvpApiView):
checklistUuid = request_data_mgr.get_cl_uuid()
if ('description' not in data or not data['description']):
- msg = "description for the audit log is not provided in the request's body"
+ msg = "description for the audit log is " +\
+ "not provided in the request's body"
self.logger.error(msg)
raise KeyError(msg)
description = data['description']
diff --git a/django/engagementmanager/rest/checklist_decision.py b/django/engagementmanager/rest/checklist_decision.py
index a0cfe01..5a965de 100644
--- a/django/engagementmanager/rest/checklist_decision.py
+++ b/django/engagementmanager/rest/checklist_decision.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -46,7 +46,8 @@ from engagementmanager.decorator.class_decorator import classDecorator
from engagementmanager.decorator.log_func_entry import logFuncEntry
from engagementmanager.rest.vvp_api_view import VvpApiView
from engagementmanager.service.authorization_service import Permissions
-from engagementmanager.service.checklist_decision_service import setDecision, getDecision
+from engagementmanager.service.checklist_decision_service import setDecision, \
+ getDecision
from engagementmanager.utils.request_data_mgr import request_data_mgr
diff --git a/django/engagementmanager/rest/checklist_set_state.py b/django/engagementmanager/rest/checklist_set_state.py
index e9c6eb3..ceadf18 100644
--- a/django/engagementmanager/rest/checklist_set_state.py
+++ b/django/engagementmanager/rest/checklist_set_state.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -59,9 +59,13 @@ class ChecklistState(VvpApiView):
decline = data['decline']
if decline == "True":
checklist = set_state(True, request_data_mgr.get_cl_uuid(),
- isMoveToAutomation=False, description=data['description'])
+ isMoveToAutomation=False,
+ description=data['description'])
else:
- checklist = set_state(False, request_data_mgr.get_cl_uuid(), description=data['description'])
+ checklist = set_state(
+ False, request_data_mgr.get_cl_uuid(),
+ description=data['description'])
- cldata = json.dumps(SuperThinChecklistModelSerializer(checklist).data, ensure_ascii=False)
+ cldata = json.dumps(SuperThinChecklistModelSerializer(
+ checklist).data, ensure_ascii=False)
return Response(cldata)
diff --git a/django/engagementmanager/rest/cms/__init__.py b/django/engagementmanager/rest/cms/__init__.py
index 1726c13..16f81cb 100644
--- a/django/engagementmanager/rest/cms/__init__.py
+++ b/django/engagementmanager/rest/cms/__init__.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/engagementmanager/rest/cms/pages.py b/django/engagementmanager/rest/cms/pages.py
index efe0b4e..bef4962 100644
--- a/django/engagementmanager/rest/cms/pages.py
+++ b/django/engagementmanager/rest/cms/pages.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/engagementmanager/rest/cms/posts.py b/django/engagementmanager/rest/cms/posts.py
index 17e33fb..d808156 100644
--- a/django/engagementmanager/rest/cms/posts.py
+++ b/django/engagementmanager/rest/cms/posts.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -47,11 +47,12 @@ from engagementmanager.service.cms.posts_service import CMSPostsService
@classDecorator([logFuncEntry])
class Posts(VvpApiView):
- def get(self, request, format=None, **kwargs):
+ def get(self, request):
categoryParam = request.GET.get('category', "")
limitParam = request.GET.get('limit', 5)
offsetParam = request.GET.get('offset', 0)
fromLastDaysParam = request.GET.get('fromLastDays', None)
- posts = CMSPostsService().getPosts(offsetParam, limitParam, fromLastDaysParam, categoryParam)
+ posts = CMSPostsService().getPosts(offsetParam, limitParam,
+ fromLastDaysParam, categoryParam)
return Response(posts)
diff --git a/django/engagementmanager/rest/csrf_exempt_session_authentication.py b/django/engagementmanager/rest/csrf_exempt_session_authentication.py
index 89a6243..ac26492 100644
--- a/django/engagementmanager/rest/csrf_exempt_session_authentication.py
+++ b/django/engagementmanager/rest/csrf_exempt_session_authentication.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/engagementmanager/rest/data_loader.py b/django/engagementmanager/rest/data_loader.py
index 11e8dfc..7ee7e70 100644
--- a/django/engagementmanager/rest/data_loader.py
+++ b/django/engagementmanager/rest/data_loader.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -36,7 +36,6 @@
# ============LICENSE_END============================================
#
# ECOMP is a trademark and service mark of AT&T Intellectual Property.
-import json
from uuid import uuid4
from django.utils import timezone
@@ -56,17 +55,27 @@ class EngLeadsDataLoader(VvpApiView):
def get(self, request):
data = request.data
- service_provider_company = Vendor.objects.get(name=Constants.service_provider_company_name)
+ service_provider_company = Vendor.objects.get(
+ name=Constants.service_provider_company_name)
el_role = Role.objects.get(name="el")
for el in data:
user_object = CustomUser.objects.create_user(
- username=el['full_name'], email=el['full_name'], password=el['password'], is_active=False, activation_token=uuid4(), activation_token_create_time=timezone.now())
- data = createUserTemplate(service_provider_company, el['full_name'], el_role, '', True, None, True, user_object)
- el_user, is_profile_created = IceUserProfile.objects.update_or_create(
- email=user_object.email, defaults=data)
+ username=el['full_name'], email=el['full_name'],
+ password=el['password'], is_active=False,
+ activation_token=uuid4(),
+ activation_token_create_time=timezone.now())
+ data = createUserTemplate(
+ service_provider_company, el['full_name'], el_role, '',
+ True, None, True, user_object)
+ el_user, is_profile_created = \
+ IceUserProfile.objects.update_or_create(
+ email=user_object.email, defaults=data)
self.logger.info("User: " + el_user.full_name +
- " was created successfully during bulk_load_engagement_leads function")
- self.logger.info("All users were created successfully during bulk_load_engagement_leads function")
+ " was created successfully during \
+ bulk_load_engagement_leads function")
+ self.logger.info(
+ "All users were created successfully during \
+ bulk_load_engagement_leads function")
return Response()
@@ -76,7 +85,12 @@ class CompaniesDataLoader(VvpApiView):
def get(self, request):
data = request.data
for vendor in data:
- Vendor.objects.get_or_create(name=vendor['name'], defaults={'public': True})
- self.logger.info('Company found or created during bulk load vendors: ' + logEncoding(vendor))
- self.logger.info("All companies were created successfully during bulk_load_companies function")
+ Vendor.objects.get_or_create(
+ name=vendor['name'], defaults={'public': True})
+ self.logger.info(
+ 'Company found or created during bulk load vendors: '
+ + logEncoding(vendor))
+ self.logger.info(
+ "All companies were created successfully during \
+ bulk_load_companies function")
return Response()
diff --git a/django/engagementmanager/rest/deployment_target.py b/django/engagementmanager/rest/deployment_target.py
index c52d9b9..4eaa625 100644
--- a/django/engagementmanager/rest/deployment_target.py
+++ b/django/engagementmanager/rest/deployment_target.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -45,7 +45,8 @@ from engagementmanager.decorator.log_func_entry import logFuncEntry
from engagementmanager.models import DeploymentTarget
from engagementmanager.rest.vvp_api_view import VvpApiView
from engagementmanager.serializers import DeploymentTargetModelSerializer
-from engagementmanager.service.deploment_target_service import update_deployment_target
+from engagementmanager.service.deploment_target_service \
+ import update_deployment_target
@classDecorator([logFuncEntry])
@@ -58,12 +59,16 @@ class DeploymentTargetRESTMethods(VvpApiView):
update_deployment_target(engagement_uuid, dt_uuid)
return Response(msg)
else:
- msg = "DTarget PUT Request failed, engagement_uuid wasn't found in kwargs or its content is empty, therefore cannot filter by it to find the required VF"
+ msg = "DTarget PUT Request failed, engagement_uuid wasn't found \
+ in kwargs or its content is empty, therefore cannot filter by it \
+ to find the required VF"
self.logger.error(msg)
msg = "Action failed."
return Response(msg, status=HTTP_400_BAD_REQUEST)
def get(self, request):
- deployment_targets = DeploymentTarget.objects.filter(ui_visibility=True).order_by('weight')
- serializer = DeploymentTargetModelSerializer(deployment_targets, many=True)
+ deployment_targets = DeploymentTarget.objects.filter(
+ ui_visibility=True).order_by('weight')
+ serializer = DeploymentTargetModelSerializer(
+ deployment_targets, many=True)
return Response(serializer.data)
diff --git a/django/engagementmanager/rest/deployment_target_site.py b/django/engagementmanager/rest/deployment_target_site.py
index 32ff5a4..748871e 100644
--- a/django/engagementmanager/rest/deployment_target_site.py
+++ b/django/engagementmanager/rest/deployment_target_site.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -44,7 +44,8 @@ from engagementmanager.decorator.class_decorator import classDecorator
from engagementmanager.decorator.log_func_entry import logFuncEntry
from engagementmanager.models import VF, DeploymentTargetSite
from engagementmanager.rest.vvp_api_view import VvpApiView
-from engagementmanager.serializers import ThinDeploymentTargetSiteModelSerializer
+from engagementmanager.serializers import \
+ ThinDeploymentTargetSiteModelSerializer
from engagementmanager.service.authorization_service import Permissions
@@ -56,16 +57,19 @@ class DTSites(VvpApiView):
if vf_uuid:
vf = VF.objects.get(uuid=vf_uuid)
dtsites = vf.deployment_target_sites
- serializer = ThinDeploymentTargetSiteModelSerializer(dtsites, many=True)
+ serializer = ThinDeploymentTargetSiteModelSerializer(
+ dtsites, many=True)
return Response(serializer.data)
else:
dtsites = DeploymentTargetSite.objects.all()
- serializer = ThinDeploymentTargetSiteModelSerializer(dtsites, many=True)
+ serializer = ThinDeploymentTargetSiteModelSerializer(
+ dtsites, many=True)
return Response(serializer.data)
"""
expecting: VF object uuid, DeploymentTargetSite uuid
- result: addition of the DeploymentTargetSite object with dtsite_uuid to the VF's deployment_target_sites
+ result: addition of the DeploymentTargetSite object with dtsite_uuid \
+ to the VF's deployment_target_sites
"""
@auth(Permissions.add_deployment_target_site)
def post(self, request):
@@ -76,7 +80,8 @@ class DTSites(VvpApiView):
try:
dtsite = DeploymentTargetSite.objects.get(name=name)
- msg = "DTSite was already existed, hence would next be added to the VF's sites list"
+ msg = "DTSite was already existed, hence would next be \
+ added to the VF's sites list"
except DeploymentTargetSite.DoesNotExist:
dtsite = DeploymentTargetSite.objects.create(name=name)
dtsite.save()
diff --git a/django/engagementmanager/rest/ecomp.py b/django/engagementmanager/rest/ecomp.py
index a2585ac..0632ee4 100644
--- a/django/engagementmanager/rest/ecomp.py
+++ b/django/engagementmanager/rest/ecomp.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -38,7 +38,7 @@
# ECOMP is a trademark and service mark of AT&T Intellectual Property.
from rest_framework.permissions import IsAuthenticated
from rest_framework.response import Response
-from rest_framework.status import HTTP_400_BAD_REQUEST, HTTP_202_ACCEPTED
+from rest_framework.status import HTTP_400_BAD_REQUEST
from engagementmanager.decorator.class_decorator import classDecorator
from engagementmanager.decorator.log_func_entry import logFuncEntry
@@ -58,12 +58,15 @@ class ECOMPReleaseRESTMethods(VvpApiView):
update_ECOMP(engagement_uuid, ecomp_uuid)
return Response(msg)
else:
- msg = "ECOMPRelease PUT Request failed, engagement_uuid wasn't found in kwargs or its content is empty, therefore cannot filter by it to find the required VF"
+ msg = "ECOMPRelease PUT Request failed, engagement_uuid wasn't \
+ found in kwargs or its content is empty, therefore cannot filter \
+ by it to find the required VF"
self.logger.error(msg)
msg = "Action failed."
return Response(msg, status=HTTP_400_BAD_REQUEST)
def get(self, request):
- ecomp_releases = ECOMPRelease.objects.filter(ui_visibility=True).order_by('weight')
+ ecomp_releases = ECOMPRelease.objects.filter(
+ ui_visibility=True).order_by('weight')
serializer = ECOMPReleaseModelSerializer(ecomp_releases, many=True)
return Response(serializer.data)
diff --git a/django/engagementmanager/rest/engagement.py b/django/engagementmanager/rest/engagement.py
index 89e74fe..c557cd5 100644
--- a/django/engagementmanager/rest/engagement.py
+++ b/django/engagementmanager/rest/engagement.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -51,8 +51,8 @@ from engagementmanager.serializers import VFModelSerializer, \
EngagementStatusModelSerializer
from engagementmanager.service.authorization_service import Permissions
from engagementmanager.service import engagement_service as eng_svc
-from engagementmanager.utils.constants import Roles, RecentEngagementActionType, \
- CheckListState, EngagementStage
+from engagementmanager.utils.constants import Roles, \
+ RecentEngagementActionType, CheckListState, EngagementStage
from engagementmanager.utils.request_data_mgr import request_data_mgr
from engagementmanager.utils.validator import logEncoding
from rest_framework.response import Response
@@ -69,14 +69,17 @@ class ExpandedEngByUser(VvpApiView):
if ('stage' not in data or not data['stage']
or 'keyword' not in data
or 'offset' not in data or int(data['offset']) < 0
- or 'limit' not in data or not data['limit'] or (data['limit'] < 1)):
- msg = "GetExpandedEngByUser - get request: one of the parameters is missing or invalid."
+ or 'limit' not in data or not data['limit'] or
+ (data['limit'] < 1)):
+ msg = "GetExpandedEngByUser - get request: one of the parameters \
+ is missing or invalid."
self.logger.error(msg)
msg = "Action was failed due to bad request."
return Response(msg, status=HTTP_400_BAD_REQUEST)
user = request_data_mgr.get_user()
data = eng_svc.get_dashboard_expanded_engs(
- data['stage'], data['keyword'], data['offset'], data['limit'], user)
+ data['stage'], data['keyword'], data['offset'],
+ data['limit'], user)
return Response(data)
@@ -95,7 +98,8 @@ class ExportEngagements(VvpApiView):
stageParam = request.GET['stage']
keywordParam = request.GET['keyword']
- # data, status = eng_svc.get_dashboard_expanded_engs(stageParam, keywordParam, 0, sys.maxint, user)
+ # data, status = eng_svc.get_dashboard_expanded_engs
+ # (stageParam, keywordParam, 0, sys.maxint, user)
vfs, deployment_targets = eng_svc.get_expanded_engs_for_export(
stageParam, keywordParam, user)
@@ -103,92 +107,96 @@ class ExportEngagements(VvpApiView):
# Create 'Validation Details' sheet and fill it up with required data:
validationWorkSheet = workbook.create_sheet()
validationWorkSheet.title = 'Validation Details'
- headlines = [WriteOnlyCell(validationWorkSheet, value=u"EId"),
- WriteOnlyCell(validationWorkSheet, value=u"Engagement"),
- WriteOnlyCell(validationWorkSheet, value=u"Reviewer"),
- WriteOnlyCell(
- validationWorkSheet, value=u"Peer reviewer"),
- WriteOnlyCell(validationWorkSheet, value=u"VFC"),
- WriteOnlyCell(validationWorkSheet, value=u"VFC #"),
- WriteOnlyCell(validationWorkSheet, value=u"Started"),
- WriteOnlyCell(validationWorkSheet, value=u"Vendor"),
- WriteOnlyCell(validationWorkSheet, value=u"AIC Version"),
- WriteOnlyCell(
- validationWorkSheet, value=u"ECOMP Release"),
- WriteOnlyCell(validationWorkSheet, value=u"Validate"),
- WriteOnlyCell(validationWorkSheet, value=u"Completed"),
- WriteOnlyCell(validationWorkSheet, value=u"Stage"),
- WriteOnlyCell(
- validationWorkSheet, value=u"Heat Pre-validated"),
- WriteOnlyCell(validationWorkSheet, value=u"Image Scan"),
- WriteOnlyCell(
- validationWorkSheet, value=u"AIC Instantiated"),
- WriteOnlyCell(
- validationWorkSheet, value=u"ASDC Onboarded"),
- WriteOnlyCell(
- validationWorkSheet, value=u"Overall Progress in %"),
- WriteOnlyCell(
- validationWorkSheet, value=u"Target Completion Date"),
- WriteOnlyCell(validationWorkSheet, value=u"Status")]
+ headlines = [
+ WriteOnlyCell(validationWorkSheet, value=u"EId"),
+ WriteOnlyCell(validationWorkSheet, value=u"Engagement"),
+ WriteOnlyCell(validationWorkSheet, value=u"Reviewer"),
+ WriteOnlyCell(
+ validationWorkSheet, value=u"Peer reviewer"),
+ WriteOnlyCell(validationWorkSheet, value=u"VFC"),
+ WriteOnlyCell(validationWorkSheet, value=u"VFC #"),
+ WriteOnlyCell(validationWorkSheet, value=u"Started"),
+ WriteOnlyCell(validationWorkSheet, value=u"Vendor"),
+ WriteOnlyCell(validationWorkSheet, value=u"AIC Version"),
+ WriteOnlyCell(
+ validationWorkSheet, value=u"ECOMP Release"),
+ WriteOnlyCell(validationWorkSheet, value=u"Validate"),
+ WriteOnlyCell(validationWorkSheet, value=u"Completed"),
+ WriteOnlyCell(validationWorkSheet, value=u"Stage"),
+ WriteOnlyCell(
+ validationWorkSheet, value=u"Heat Pre-validated"),
+ WriteOnlyCell(validationWorkSheet, value=u"Image Scan"),
+ WriteOnlyCell(
+ validationWorkSheet, value=u"AIC Instantiated"),
+ WriteOnlyCell(
+ validationWorkSheet, value=u"ASDC Onboarded"),
+ WriteOnlyCell(
+ validationWorkSheet, value=u"Overall Progress in %"),
+ WriteOnlyCell(
+ validationWorkSheet, value=u"Target Completion Date"),
+ WriteOnlyCell(validationWorkSheet, value=u"Status")]
for headline in headlines:
headline.font = Font(name='Courier', size=16, bold=True)
validationWorkSheet.append(headlines)
for vf in vfs:
- validationWorkSheet.append([smart_str(vf["engagement__engagement_manual_id"]),
- smart_str(vf["vf__name"]),
- smart_str(
- vf["vf_engagement__reviewer"]),
- smart_str(
- vf["vf_engagement__peer_reviewer"]),
- smart_str(vf["vfcs"]),
- smart_str(vf["vfcs__number"]),
- smart_str(
- vf["engagement__started_state_time"]),
- smart_str(vf["vendor__name"]),
- smart_str(
- vf["deployment_target__version"]),
- smart_str(vf["ecomp_release__name"]),
- smart_str(
- vf["engagement__validated_time"]),
- smart_str(
- vf["engagement__completed_time"]),
- smart_str(
- vf["engagement__engagement_stage"]),
- smart_str(
- vf["engagement__heat_validated_time"]),
- smart_str(
- vf["engagement__image_scan_time"]),
- smart_str(
- vf["engagement__aic_instantiation_time"]),
- smart_str(
- vf["engagement__asdc_onboarding_time"]),
- smart_str(vf["engagement__progress"]),
- smart_str(
- vf["engagement__target_completion_date"]),
- smart_str(
- vf["engagement__latest_status"])
- ])
+ validationWorkSheet.append(
+ [smart_str(vf["engagement__engagement_manual_id"]),
+ smart_str(vf["vf__name"]),
+ smart_str(
+ vf["vf_engagement__reviewer"]),
+ smart_str(
+ vf["vf_engagement__peer_reviewer"]),
+ smart_str(vf["vfcs"]),
+ smart_str(vf["vfcs__number"]),
+ smart_str(
+ vf["engagement__started_state_time"]),
+ smart_str(vf["vendor__name"]),
+ smart_str(
+ vf["deployment_target__version"]),
+ smart_str(vf["ecomp_release__name"]),
+ smart_str(
+ vf["engagement__validated_time"]),
+ smart_str(
+ vf["engagement__completed_time"]),
+ smart_str(
+ vf["engagement__engagement_stage"]),
+ smart_str(
+ vf["engagement__heat_validated_time"]),
+ smart_str(
+ vf["engagement__image_scan_time"]),
+ smart_str(
+ vf["engagement__aic_instantiation_time"]),
+ smart_str(
+ vf["engagement__asdc_onboarding_time"]),
+ smart_str(vf["engagement__progress"]),
+ smart_str(
+ vf["engagement__target_completion_date"]),
+ smart_str(
+ vf["engagement__latest_status"])
+ ])
# Create 'Overview' sheet and fill it up with required data:
overviewWorkSheet = workbook.create_sheet()
overviewWorkSheet.title = 'Overview'
- headlines = [WriteOnlyCell(validationWorkSheet, value=u"AIC/ECOMP"),
- WriteOnlyCell(
- validationWorkSheet, value=u"Active Count of Engagement"),
- WriteOnlyCell(
- validationWorkSheet, value=u"Sum of Nr of VFs"),
- WriteOnlyCell(
- validationWorkSheet, value=u"Intake Count of Engagement"),
- WriteOnlyCell(
- validationWorkSheet, value=u"Sum of Nr of VFs"),
- WriteOnlyCell(
- validationWorkSheet, value=u"Completed Count of Engagement"),
- WriteOnlyCell(
- validationWorkSheet, value=u"Sum of Nr of VFs"),
- WriteOnlyCell(
- validationWorkSheet, value=u"Total Count of Engagement"),
- WriteOnlyCell(validationWorkSheet, value=u"Total Sum of Nr of VFs")]
+ headlines = [
+ WriteOnlyCell(validationWorkSheet, value=u"AIC/ECOMP"),
+ WriteOnlyCell(
+ validationWorkSheet, value=u"Active Count of Engagement"),
+ WriteOnlyCell(
+ validationWorkSheet, value=u"Sum of Nr of VFs"),
+ WriteOnlyCell(
+ validationWorkSheet, value=u"Intake Count of Engagement"),
+ WriteOnlyCell(
+ validationWorkSheet, value=u"Sum of Nr of VFs"),
+ WriteOnlyCell(
+ validationWorkSheet, value=u"Completed Count of Engagement"),
+ WriteOnlyCell(
+ validationWorkSheet, value=u"Sum of Nr of VFs"),
+ WriteOnlyCell(
+ validationWorkSheet, value=u"Total Count of Engagement"),
+ WriteOnlyCell(validationWorkSheet,
+ value=u"Total Sum of Nr of VFs")]
for headline in headlines:
headline.font = Font(name='Courier', size=16, bold=True)
overviewWorkSheet.append(headlines)
@@ -196,10 +204,12 @@ class ExportEngagements(VvpApiView):
for deployment_target in deployment_targets:
overviewWorkSheet.append(deployment_target)
- # We are using HttpResponse and not Rest Response since we couldnt find
+ # We are using HttpResponse and not
+ # Rest Response since we couldnt find
# support for content diposition
response = HttpResponse(
- content_type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')
+ content_type='application/vnd.openxmlformats-officedocument.\
+ spreadsheetml.sheet')
response['Content-Disposition'] = 'attachment; filename=D2ICE.xlsx'
workbook.save(response)
@@ -215,12 +225,15 @@ class GetEngByUser(VvpApiView):
user = request_data_mgr.get_user()
vf_list = []
- engStageList = [EngagementStage.Intake.name, EngagementStage.Active.name,
- EngagementStage.Validated.name, EngagementStage.Completed.name] # @UndefinedVariable
+ engStageList = [
+ EngagementStage.Intake.name, EngagementStage.Active.name,
+ EngagementStage.Validated.name, EngagementStage.Completed.name]
# @UndefinedVariable
- if (user.role.name == Roles.admin.name or user.role.name == Roles.admin_ro.name):
- vf_list = VF.objects.filter(engagement__engagement_stage__in=engStageList)\
+ if (user.role.name == Roles.admin.name or
+ user.role.name == Roles.admin_ro.name):
+ vf_list = VF.objects.filter(
+ engagement__engagement_stage__in=engStageList)\
.distinct().order_by('engagement__engagement_manual_id')\
.annotate(
engagement_manual_id=F('engagement__engagement_manual_id'),
@@ -238,8 +251,10 @@ class GetEngByUser(VvpApiView):
'engagement_stage',
)
else:
- vf_list = VF.objects.filter(engagement__engagement_stage__in=engStageList).\
- filter(Q(engagement__engagement_team__uuid=user.uuid)).distinct().order_by('engagement__engagement_manual_id')\
+ vf_list = VF.objects.filter(
+ engagement__engagement_stage__in=engStageList).\
+ filter(Q(engagement__engagement_team__uuid=user.uuid))\
+ .distinct().order_by('engagement__engagement_manual_id')\
.annotate(
engagement_manual_id=F('engagement__engagement_manual_id'),
engagement_uuid=F('engagement__uuid'),
@@ -282,7 +297,8 @@ class SingleEngByUser(VvpApiView):
engagement = None
# @UndefinedVariable
- if (user.role.name == Roles.admin.name or user.role.name == Roles.admin_ro.name):
+ if (user.role.name == Roles.admin.name or
+ user.role.name == Roles.admin_ro.name):
engagement = Engagement.objects.get(uuid=eng_uuid)
else:
try:
@@ -292,7 +308,7 @@ class SingleEngByUser(VvpApiView):
try:
engagement = Engagement.objects.get(
engagement_team__uuid=user.uuid, uuid=eng_uuid)
- except:
+ except BaseException:
msg = "Eng for the User with uuid " + \
user.uuid + " doesn't exist."
self.logger.error(msg)
@@ -300,7 +316,8 @@ class SingleEngByUser(VvpApiView):
return Response(msg, status=HTTP_500_INTERNAL_SERVER_ERROR)
vfObj = VF.objects.get(engagement__uuid=engagement.uuid)
eng_svc.update_or_insert_to_recent_engagements(
- user.uuid, vfObj, RecentEngagementActionType.NAVIGATED_INTO_ENGAGEMENT.name) # @UndefinedVariable
+ user.uuid, vfObj, RecentEngagementActionType.
+ NAVIGATED_INTO_ENGAGEMENT.name)
vfList = VF.objects.filter(engagement__uuid=engagement.uuid)
formated_vf_list = VFModelSerializer(vfList, many=True).data
@@ -342,11 +359,12 @@ class StarredEngagements(VvpApiView):
@auth(Permissions.star_an_engagement)
def get(self, request):
user = request_data_mgr.get_user()
- if (user == None):
+ if (not user):
msg = "User with uuid " + user.uuid + \
" doesn't exist. Can't fetch their engagements"
self.logger.error(logEncoding(msg))
- msg = "You are not registered as a user, please sign up in order to perform this action"
+ msg = "You are not registered as a user, please sign\
+ up in order to perform this action"
return Response(msg, status=HTTP_400_BAD_REQUEST)
vf_list = eng_svc.vf_retreiver(user, True)
@@ -360,17 +378,29 @@ class StarredEngagements(VvpApiView):
for vf_data in vf_list:
# @UndefinedVariable
- if (user.role.name == Roles.el.name or user.role.name == Roles.admin.name or user.role.name == Roles.admin_ro.name):
+ if (
+ user.role.name == Roles.el.name or
+ user.role.name == Roles.admin.name or
+ user.role.name == Roles.admin_ro.name):
if (vf_data['engagement__reviewer__uuid'] == user.uuid):
- checklist_lists = Checklist.objects.filter(Q(engagement__uuid=vf_data['engagement__uuid']), Q(engagement__reviewer=user), ~Q(
- state=CheckListState.archive.name)).values('uuid', 'name', 'state', 'owner__uuid') # @UndefinedVariable
+ checklist_lists = Checklist.objects.filter(
+ Q(engagement__uuid=vf_data['engagement__uuid']),
+ Q(engagement__reviewer=user), ~Q(
+ state=CheckListState.archive.name)).values(
+ 'uuid', 'name', 'state', 'owner__uuid')
# @UndefinedVariable
- elif (user.role.name == Roles.admin.name or user.role.name == Roles.admin_ro.name):
- checklist_lists = Checklist.objects.filter(Q(engagement__uuid=vf_data['engagement__uuid']), ~Q(
- state=CheckListState.archive.name)).values('uuid', 'name', 'state', 'owner__uuid') # @UndefinedVariable
+ elif (user.role.name == Roles.admin.name or
+ user.role.name == Roles.admin_ro.name):
+ checklist_lists = Checklist.objects.filter(
+ Q(engagement__uuid=vf_data['engagement__uuid']),
+ ~Q(state=CheckListState.archive.name)).values(
+ 'uuid', 'name', 'state', 'owner__uuid')
else:
- checklist_lists = Checklist.objects.filter(Q(engagement__uuid=vf_data['engagement__uuid']), Q(owner=user), ~Q(
- state=CheckListState.archive.name)).values('uuid', 'name', 'state', 'owner__uuid') # @UndefinedVariable
+ checklist_lists = Checklist.objects.filter(
+ Q(engagement__uuid=vf_data['engagement__uuid']),
+ Q(owner=user), ~Q(
+ state=CheckListState.archive.name)).values(
+ 'uuid', 'name', 'state', 'owner__uuid')
vf_data['checklists'] = checklist_lists
else:
vf_data['checklists'] = None
@@ -391,11 +421,12 @@ class StarredEngagements(VvpApiView):
return Response(msg, status=HTTP_400_BAD_REQUEST)
eng_uuid = data['engagement_uuid']
- if (user == None):
+ if (not user):
msg = "User with uuid " + user.uuid + \
" doesn't exist. Can't fetch their engagements"
self.logger.error(logEncoding(msg))
- msg = "You are not registered as a user, please sign up in order to perform this action"
+ msg = "You are not registered as a user, please sign up in order \
+ to perform this action"
return Response(msg, status=HTTP_400_BAD_REQUEST)
msg = eng_svc.star_an_engagement(user, eng_uuid)
@@ -409,11 +440,12 @@ class GetRecentEngagements(VvpApiView):
@auth(Permissions.eng_membership)
def get(self, request, format=None, **kwargs):
user = request_data_mgr.get_user()
- if (user == None):
+ if (not user):
msg = "User with uuid " + user.uuid + \
" doesn't exist. Can't fetch their engagements"
self.logger.error(logEncoding(msg))
- msg = "You are not registered as a user, please sign up in order to perform this action"
+ msg = "You are not registered as a user, please sign up in order \
+ to perform this action"
return Response(msg, status=HTTP_400_BAD_REQUEST)
stared_list = eng_svc.vf_retreiver(user, True)
@@ -431,17 +463,27 @@ class GetRecentEngagements(VvpApiView):
if (idx == recentList):
break
# @UndefinedVariable
- if (user.role.name == Roles.el.name or user.role.name == Roles.admin.name or user.role.name == Roles.admin_ro.name):
+ if (user.role.name == Roles.el.name or
+ user.role.name == Roles.admin.name or
+ user.role.name == Roles.admin_ro.name):
if (vf_data['vf__engagement__reviewer__uuid'] == user.uuid):
- checklist_lists = Checklist.objects.filter(Q(engagement__uuid=vf_data['vf__engagement__uuid']), Q(engagement__reviewer=user), ~Q(
- state=CheckListState.archive.name)).values('uuid', 'name', 'state', 'owner__uuid') # @UndefinedVariable
+ checklist_lists = Checklist.objects.filter(
+ Q(engagement__uuid=vf_data['vf__engagement__uuid']),
+ Q(engagement__reviewer=user), ~Q(
+ state=CheckListState.archive.name)).values(
+ 'uuid', 'name', 'state', 'owner__uuid')
# @UndefinedVariable
- elif (user.role.name == Roles.admin.name or user.role.name == Roles.admin_ro.name):
- checklist_lists = Checklist.objects.filter(Q(engagement__uuid=vf_data['vf__engagement__uuid']), ~Q(
- state=CheckListState.archive.name)).values('uuid', 'name', 'state', 'owner__uuid') # @UndefinedVariable
+ elif (user.role.name == Roles.admin.name or
+ user.role.name == Roles.admin_ro.name):
+ checklist_lists = Checklist.objects.filter(
+ Q(engagement__uuid=vf_data['vf__engagement__uuid']),
+ ~Q(state=CheckListState.archive.name)).values(
+ 'uuid', 'name', 'state', 'owner__uuid')
else:
- checklist_lists = Checklist.objects.filter(Q(engagement__uuid=vf_data['vf__engagement__uuid']), Q(owner=user), ~Q(
- state=CheckListState.archive.name)).values('uuid', 'name', 'state', 'owner__uuid') # @UndefinedVariable
+ checklist_lists = Checklist.objects.filter(
+ Q(engagement__uuid=vf_data['vf__engagement__uuid']),
+ Q(owner=user), ~Q(state=CheckListState.archive.name))\
+ .values('uuid', 'name', 'state', 'owner__uuid')
vf_data['checklists'] = checklist_lists
else:
vf_data['checklists'] = None
@@ -457,7 +499,8 @@ class EngagementProgressBar(VvpApiView):
data = request.data
msg = "OK"
- if ('progress' not in data or not data['progress'] or data['progress'] == ''):
+ if ('progress' not in data or not data['progress'] or
+ data['progress'] == ''):
msg = "progress parameter is missing or empty"
self.logger.error(msg)
msg = "Action has failed due to bad request."
@@ -472,7 +515,8 @@ class EngagementProgressBar(VvpApiView):
eng = self.get_entity(Engagement, request_data_mgr.get_eng_uuid())
msg = "OK"
- if ('target_date' not in data or not data['target_date'] or data['target_date'] == ''):
+ if ('target_date' not in data or not data['target_date'] or
+ data['target_date'] == ''):
msg = "target_date parameter is missing or empty"
self.logger.error(msg)
msg = "Action has failed due to bad request."
@@ -494,7 +538,8 @@ class ChangeTargetLabEntryDate(VvpApiView):
eng = self.get_entity(Engagement, request_data_mgr.get_eng_uuid())
msg = "OK"
vf = VF.objects.get(engagement__uuid=eng.uuid)
- if ('target_date' not in data or not data['target_date'] or data['target_date'] == ''):
+ if ('target_date' not in data or not data['target_date']
+ or data['target_date'] == ''):
msg = "target_date parameter is missing or empty"
self.logger.error(msg)
msg = "Action has failed due to bad request."
@@ -535,11 +580,13 @@ class Status(VvpApiView):
if not description:
msg = "Not description sent"
self.logger.error(msg)
- msg = "You are not registered as a user, please sign up in order to perform this action"
+ msg = "You are not registered as a user, please sign \
+ up in order to perform this action"
return Response(msg, status=HTTP_400_BAD_REQUEST)
# @UndefinedVariable
- if (user.role.name != Roles.admin.name and user.role.name != Roles.el.name):
+ if (user.role.name != Roles.admin.name and
+ user.role.name != Roles.el.name):
msg = "User not authorized"
self.logger.error(msg)
msg = "Internal error."
@@ -569,7 +616,8 @@ class Status(VvpApiView):
return Response(msg, status=HTTP_400_BAD_REQUEST)
# @UndefinedVariable
- if (user.role.name != Roles.admin.name and user.role.name != Roles.el.name):
+ if (user.role.name != Roles.admin.name and
+ user.role.name != Roles.el.name):
msg = "User not authorized"
self.logger.error(msg)
msg = "Internal error."
@@ -598,7 +646,8 @@ class EngagementOps(VvpApiView):
user = request_data_mgr.get_user()
created_eng_status = eng_svc.insert_engagement_status(
user, data['status'], engagement)
- return Response(EngagementStatusModelSerializer(created_eng_status).data)
+ return Response(
+ EngagementStatusModelSerializer(created_eng_status).data)
else:
return Response()
@@ -613,7 +662,7 @@ class EngagementTeamUsers(VvpApiView):
data = request.data
if (data['user_uuid']):
requested_user_uuid = data['user_uuid']
- if (eng_uuid is not None and user is not None and data['user_uuid'] is not None):
+ if (eng_uuid and user and data['user_uuid']):
eng_svc.remove_user_from_engagement_team(
eng_uuid, user, requested_user_uuid)
return Response(status=HTTP_204_NO_CONTENT)
diff --git a/django/engagementmanager/rest/feedback.py b/django/engagementmanager/rest/feedback.py
index b8075b8..146cb29 100644
--- a/django/engagementmanager/rest/feedback.py
+++ b/django/engagementmanager/rest/feedback.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -57,7 +57,8 @@ class Feedback(VvpApiView):
@auth(Permissions.add_feedback)
def post(self, request):
user = request_data_mgr.get_user()
- if ('description' not in request.data or not request.data['description']):
+ if ('description' not in request.data or
+ not request.data['description']):
raise KeyError("One of the input parameters are missing")
new_description = request.data['description']
new_feedback = FeedbackModal(
@@ -65,6 +66,7 @@ class Feedback(VvpApiView):
description=new_description
)
new_feedback.save()
- self.slack_client.send_slack_notifications_for_new_feedback(new_feedback, user)
+ self.slack_client.send_slack_notifications_for_new_feedback(
+ new_feedback, user)
return Response(status.HTTP_200_OK)
diff --git a/django/engagementmanager/rest/invite.py b/django/engagementmanager/rest/invite.py
index 8060a69..e5e1505 100644
--- a/django/engagementmanager/rest/invite.py
+++ b/django/engagementmanager/rest/invite.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -36,7 +36,6 @@
# ============LICENSE_END============================================
#
# ECOMP is a trademark and service mark of AT&T Intellectual Property.
-import json
from rest_framework import status
from rest_framework.response import Response
@@ -59,15 +58,18 @@ class InviteTeamMember(VvpApiView):
inviterUser = request_data_mgr.get_user()
msg = "OK"
sts = status.HTTP_200_OK
- if (inviterUser != None):
+ if (inviterUser):
dataList = []
dataList = request.data
for data in dataList:
- if 'eng_uuid' in data and data['eng_uuid'] and 'email' in data and data['email']:
- inviteUserToSignUpOrLogin(inviterUser, data, is_contact_user=False)
+ if 'eng_uuid' in data and data['eng_uuid'] and \
+ 'email' in data and data['email']:
+ inviteUserToSignUpOrLogin(
+ inviterUser, data, is_contact_user=False)
else:
- msg = "No eng_uuid or no email found on the request body to invite-team-members. data=" + str(data)
+ msg = "No eng_uuid or no email found on the request \
+ body to invite-team-members. data=" + str(data)
self.logger.error(logEncoding(msg))
sts = status.HTTP_500_INTERNAL_SERVER_ERROR
@@ -84,9 +86,9 @@ class InviteContact(VvpApiView):
data = request.data
if ('full_name' not in data or not data['full_name'] or
- 'email' not in data or not data['email'] or
- 'phone_number' not in data or not data['phone_number'] or
- 'eng_uuid' not in data or not data['eng_uuid']):
+ 'email' not in data or not data['email'] or
+ 'phone_number' not in data or not data['phone_number'] or
+ 'eng_uuid' not in data or not data['eng_uuid']):
msg = "One of the input parameters is missing"
self.logger.error(msg)
return Response(msg, status=status.HTTP_400_BAD_REQUEST)
diff --git a/django/engagementmanager/rest/login.py b/django/engagementmanager/rest/login.py
index 53b906b..ddc5df4 100644
--- a/django/engagementmanager/rest/login.py
+++ b/django/engagementmanager/rest/login.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -36,7 +36,6 @@
# ============LICENSE_END============================================
#
# ECOMP is a trademark and service mark of AT&T Intellectual Property.
-import json
from rest_framework.permissions import AllowAny
from rest_framework.response import Response
@@ -64,7 +63,9 @@ class Login(VvpApiView):
if param:
reset_password_param = param
- reset_password_email, is_reset_pwd_flow = login_svc.identify_reset_password(jwt_obj, reset_password_param)
+ reset_password_email, is_reset_pwd_flow = login_svc.\
+ identify_reset_password(
+ jwt_obj, reset_password_param)
if not user_profile.user.is_active:
msg = login_svc.render_user_not_active_message(data['email'])
@@ -82,7 +83,9 @@ class Login(VvpApiView):
if 'invitation' in data:
login_svc.handle_invite_token(data, msg, user_profile)
- self.logger.debug("login has passed successfully for [email=" + data['email'] + "]")
+ self.logger.debug(
+ "login has passed successfully for [email=" + data['email']
+ + "]")
login_svc.update_last_login(user_profile)
return Response(msg)
diff --git a/django/engagementmanager/rest/nextsteps.py b/django/engagementmanager/rest/nextsteps.py
index 7d4f850..0c93f20 100644
--- a/django/engagementmanager/rest/nextsteps.py
+++ b/django/engagementmanager/rest/nextsteps.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -41,7 +41,8 @@ import json
from rest_framework.response import Response
from rest_framework.status import HTTP_400_BAD_REQUEST, HTTP_204_NO_CONTENT
-from engagementmanager.bus.messages.activity_event_message import ActivityEventMessage
+from engagementmanager.bus.messages.activity_event_message import \
+ ActivityEventMessage
from engagementmanager.decorator.auth import auth
from engagementmanager.decorator.class_decorator import classDecorator
from engagementmanager.decorator.log_func_entry import logFuncEntry
@@ -82,16 +83,20 @@ class NextSteps(VvpApiView):
data = NextStepSvc().addNextStep(dataList)
for next_step in data:
- if (next_step['files'] != None):
+ if next_step['files']:
next_step['files'] = json.loads(next_step['files'])
- self.logger.debug("Successfully added a Next Step to engagement_uuid=" +
- eng_uuid + " for creator with uuid=" + str(user))
+ self.logger.debug(
+ "Successfully added a Next Step to engagement_uuid=" +
+ eng_uuid +
+ " for creator with uuid=" +
+ str(user))
return Response(data)
@auth(Permissions.eng_membership)
def get(self, request, **kwargs):
- next_steps_data = NextStepSvc().get_next_steps(eng_stage=kwargs['eng_stage'])
+ next_steps_data = NextStepSvc().get_next_steps(
+ eng_stage=kwargs['eng_stage'])
return Response(next_steps_data.data)
@auth(Permissions.update_personal_next_step)
@@ -129,7 +134,8 @@ class EditNextSteps(VvpApiView):
ns = self.get_entity(NextStep, request_data_mgr.get_ns_uuid())
ns.delete()
- activity_data = DeleteNextStepsActivityData(request_data_mgr.get_user(), ns.engagement)
+ activity_data = DeleteNextStepsActivityData(
+ request_data_mgr.get_user(), ns.engagement)
bus_service.send_message(ActivityEventMessage(activity_data))
return Response(status=HTTP_204_NO_CONTENT)
@@ -144,20 +150,23 @@ class ChecklistNextStep(VvpApiView):
dataList = json.loads(body_unicode)
msg = "OK"
- if (request_data_mgr.get_cl_uuid() == None or request_data_mgr.get_eng_uuid() == None):
- msg = "check list uuid or engagement uuid is missing from the url path parameters"
+ if (not request_data_mgr.get_cl_uuid() or not
+ request_data_mgr.get_eng_uuid()):
+ msg = "check list uuid or engagement uuid is missing from the " +\
+ "url path parameters"
self.logger.error(msg)
return Response(msg, status=HTTP_400_BAD_REQUEST)
for data in dataList:
if ('assigneesUuids' not in data or not data['assigneesUuids'] or
- 'description' not in data or not data['description'] or
- 'duedate' not in data or not data['duedate']):
+ 'description' not in data or not data['description'] or
+ 'duedate' not in data or not data['duedate']):
msg = "One of the CheckList's input parameters is missing"
self.logger.error(msg)
return Response(msg, status=HTTP_400_BAD_REQUEST)
data = NextStepSvc().addNextStep(
- dataList, desc="Checklist is denied due to a creation of a new NextStep")
+ dataList, desc="Checklist is denied due to a creation " +
+ "of a new NextStep")
return Response(data)
diff --git a/django/engagementmanager/rest/notification.py b/django/engagementmanager/rest/notification.py
index 34c4a7b..53acb30 100644
--- a/django/engagementmanager/rest/notification.py
+++ b/django/engagementmanager/rest/notification.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -44,7 +44,8 @@ from engagementmanager.decorator.auth import auth
from engagementmanager.decorator.class_decorator import classDecorator
from engagementmanager.decorator.log_func_entry import logFuncEntry
import engagementmanager.models
-from engagementmanager.notifications import num_of_notifications_for_user, reset_num_of_notifications_for_user,\
+from engagementmanager.notifications import num_of_notifications_for_user, \
+ reset_num_of_notifications_for_user,\
pull_recent_notifications
from engagementmanager.rest.vvp_api_view import VvpApiView
from engagementmanager.service.authorization_service import Permissions
@@ -75,12 +76,15 @@ class NotificationOps(VvpApiView):
# PullRecentNotif4User
def get(self, request, user_uuid, offset, limit):
user = request_data_mgr.get_user()
- serilizedActivitySet, num_of_objects = pull_recent_notifications(user.uuid, offset, limit)
+ serilizedActivitySet, num_of_objects = pull_recent_notifications(
+ user.uuid, offset, limit)
if serilizedActivitySet is not None:
- data = {'serilizedActivitySet': serilizedActivitySet, 'num_of_objects': num_of_objects}
+ data = {'serilizedActivitySet': serilizedActivitySet,
+ 'num_of_objects': num_of_objects}
return Response(data)
else:
- return Response("Activity set wasn't found", status=HTTP_400_BAD_REQUEST)
+ return Response("Activity set wasn't found",
+ status=HTTP_400_BAD_REQUEST)
# Reset the number of an unread notifications
def put(self, request):
diff --git a/django/engagementmanager/rest/parsers.py b/django/engagementmanager/rest/parsers.py
index fce516a..9c778e7 100644
--- a/django/engagementmanager/rest/parsers.py
+++ b/django/engagementmanager/rest/parsers.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -47,10 +47,10 @@ sanitizer = Cleaner(
styles=[
'color', 'font-family', 'font-style', 'font-weight',
'text-decoration-line',
- ],
+ ],
protocols=['http'],
strip=True,
- )
+)
def clean_r(obj):
@@ -94,6 +94,7 @@ class XSSParserMixin(parsers.BaseParser):
cause clean_r() to be run against the parsed data.
"""
+
def parse(self, stream, media_type=None, parser_context=None):
return clean_r(
super().parse(
diff --git a/django/engagementmanager/rest/signup.py b/django/engagementmanager/rest/signup.py
index 85d63cd..ee875ab 100644
--- a/django/engagementmanager/rest/signup.py
+++ b/django/engagementmanager/rest/signup.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -51,10 +51,10 @@ from engagementmanager.decorator.log_func_entry import logFuncEntry
from engagementmanager.models import Vendor, Engagement, Role, Invitation, \
IceUserProfile, CustomUser
from engagementmanager.rest.vvp_api_view import VvpApiView
-from engagementmanager.serializers import SuperThinIceUserProfileModelSerializer
+from engagementmanager.serializers import\
+ SuperThinIceUserProfileModelSerializer
from engagementmanager.service.invite_service import markInvitationAsAccepted
from engagementmanager.service.user_service import UserService
-from engagementmanager.utils.authentication import JWTAuthentication
from engagementmanager.utils.constants import Constants, Roles
from engagementmanager.utils.validator import Validator, logEncoding
from engagementmanager.views_helper import generateActivationLink, \
@@ -70,11 +70,11 @@ class SignUp(VvpApiView):
data_dont_save = JSONParser().parse(request)
if ('company' not in data or not data['company'] or
- 'full_name' not in data or not data['full_name'] or
- 'email' not in data or not data['email'] or
- 'password' not in data or not data['password'] or
- 'phone_number' not in data or not data['phone_number'] or
- 'regular_email_updates' not in data):
+ 'full_name' not in data or not data['full_name'] or
+ 'email' not in data or not data['email'] or
+ 'password' not in data or not data['password'] or
+ 'phone_number' not in data or not data['phone_number'] or
+ 'regular_email_updates' not in data):
msg = "One of the input parameters is missing"
self.logger.error(msg)
return Response(msg, status=status.HTTP_400_BAD_REQUEST)
@@ -97,12 +97,15 @@ class SignUp(VvpApiView):
Validator.validateEmail(i_email)
- if data_dont_save['company'] == Constants.service_provider_company_name:
+ if data_dont_save['company'] == \
+ Constants.service_provider_company_name:
i_is_service_provider_contact = True
mailTokens = i_email.split("@")
- if mailTokens[1] not in Constants.service_provider_mail_domain and i_is_service_provider_contact:
- msg = "Email address should be with service provider domain for signees that their company =" + \
+ if mailTokens[1] not in Constants.service_provider_mail_domain and \
+ i_is_service_provider_contact:
+ msg = "Email address should be with service provider domain for \
+ signees that their company =" + \
Constants.service_provider_company_name
self.logger.error(logEncoding(msg))
return Response(msg, status=status.HTTP_400_BAD_REQUEST)
@@ -114,46 +117,62 @@ class SignUp(VvpApiView):
activationToken = str(uuid.uuid4().hex)
i_company = Vendor.objects.get(name=data_dont_save['company'])
- user_object = CustomUser.objects.create_user(username=i_email, email=i_email, password=i_password,
- activation_token=activationToken, activation_token_create_time=timezone.now(), is_active=False)
- info = createUserTemplate(i_company, i_full_name, roleObj, i_phone_number,
- i_is_service_provider_contact, None, i_regular_email_updates, user_object)
- newUserObj, is_profile_created = IceUserProfile.objects.update_or_create(
- email=user_object.email, defaults=info)
+ user_object = CustomUser.objects.create_user(
+ username=i_email, email=i_email, password=i_password,
+ activation_token=activationToken,
+ activation_token_create_time=timezone.now(), is_active=False)
+ info = createUserTemplate(
+ i_company, i_full_name, roleObj, i_phone_number,
+ i_is_service_provider_contact,
+ None, i_regular_email_updates, user_object)
+ newUserObj, is_profile_created = \
+ IceUserProfile.objects.update_or_create(
+ email=user_object.email, defaults=info)
self.logger.debug(
"Creating Non activated User: " + str(newUserObj))
userData = SuperThinIceUserProfileModelSerializer(newUserObj).data
- # If we eng_uuid and inviter_uuid is supplied it means that this user was
- # invited. We want to add them to the engagement team of the inviter
+ # If we eng_uuid and inviter_uuid is supplied it means that this
+ # user was invited. We want to add them to the engagement team
+ # of the inviter
if 'invitation' in data:
invitation = Invitation.objects.get(
invitation_token=data['invitation'])
- self.logger.debug("Looks like user " + i_full_name + " has arrived to the sign-up page from an invite email initiated by user with uuid=" +
- invitation.invited_by_user_uuid + ". Adding them to the inviter's engagement_team...")
+ self.logger.debug(
+ "Looks like user " + i_full_name +
+ " has arrived to the sign-up page from an invite email \
+ initiated by user with uuid=" +
+ invitation.invited_by_user_uuid + ". Adding them to the \
+ inviter's engagement_team...")
userData['eng_uuid'] = invitation.engagement_uuid
if data["is_contact_user"] == "true":
engObj = Engagement.objects.get(
uuid=invitation.engagement_uuid)
engObj.contact_user = newUserObj
- self.logger.debug("Attaching the user (" + newUserObj.full_name +
- ") to the engagement's (" + engObj.uuid + ") contact_user")
+ self.logger.debug(
+ "Attaching the user (" + newUserObj.full_name +
+ ") to the engagement's (" + engObj.uuid +
+ ") contact_user")
engObj.save()
user_svc.addUserToEngAndFireProvisionVfSig(
newUserObj, invitation)
otherInviteObj = Invitation.objects.filter(
- accepted=False, email=i_email).exclude(uuid=invitation.uuid)
+ accepted=False, email=i_email).exclude(
+ uuid=invitation.uuid)
- if data['is_contact_user'] == "true" or data['is_contact_user'] == "True":
+ if data['is_contact_user'] == "true" or \
+ data['is_contact_user'] == "True":
engObj = Engagement.objects.get(
uuid=invitation.engagement_uuid)
engObj.contact_user = newUserObj
- self.logger.debug("Attaching the user (" + newUserObj.full_name +
- ") to the engagement's (" + engObj.uuid + ") contact_user")
+ self.logger.debug(
+ "Attaching the user (" + newUserObj.full_name +
+ ") to the engagement's (" +
+ engObj.uuid + ") contact_user")
engObj.save()
markInvitationAsAccepted(data['invitation'])
@@ -171,10 +190,12 @@ class SignUp(VvpApiView):
self.logger.debug(
"Activation Link: " + data['activation_link'])
- body = get_template("{activate_template_dir}activate_mail_body.html".format(
- activate_template_dir=Constants.activate_template_dir))
- subject = get_template("{activate_template_dir}activate_mail_subject.html".format(
- activate_template_dir=Constants.activate_template_dir))
+ body = get_template(
+ "{activate_template_dir}activate_mail_body.html".format(
+ activate_template_dir=Constants.activate_template_dir))
+ subject = get_template(
+ "{activate_template_dir}activate_mail_subject.html".format(
+ activate_template_dir=Constants.activate_template_dir))
mail.sendMail(i_email, data, body, subject)
self.logger.debug(
diff --git a/django/engagementmanager/rest/user.py b/django/engagementmanager/rest/user.py
index 13fc916..7f9acb2 100644
--- a/django/engagementmanager/rest/user.py
+++ b/django/engagementmanager/rest/user.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -36,7 +36,6 @@
# ============LICENSE_END============================================
#
# ECOMP is a trademark and service mark of AT&T Intellectual Property.
-import json
import uuid
from django.conf import settings
@@ -91,7 +90,8 @@ class UpdatePassword(VvpApiView):
user.user.set_password(data['password'])
user.user.temp_password = None
user.user.save()
- self.logger.info("Reset Password finished successfully for user with uuid=" +
+ self.logger.info("Reset Password finished successfully " +
+ "for user with uuid=" +
user.uuid + " Redirecting to Login")
return Response(msg)
@@ -122,12 +122,13 @@ class SendResetPasswordInstructionMail(VvpApiView):
self.logger.debug(
"The login link to reset Password: " + str(data['login_link']))
- if (user != None):
- body = get_template("{reset_pwd_template_dir}reset_pwd_instructions_mail_body.html" .format(
- reset_pwd_template_dir=Constants.reset_pwd_template_dir))
- subject = get_template("{reset_pwd_template_dir}reset_pwd_instructions_mail_subject.html".format(
- reset_pwd_template_dir=Constants.reset_pwd_template_dir))
-
+ if (user):
+ body = get_template(
+ Constants.reset_pwd_template_dir +
+ "reset_pwd_instructions_mail_body.html")
+ subject = get_template(
+ Constants.reset_pwd_template_dir +
+ "reset_pwd_instructions_mail_subject.html")
user.user.temp_password = make_password(data['tempPassword'])
user.user.save()
user.save()
@@ -135,8 +136,9 @@ class SendResetPasswordInstructionMail(VvpApiView):
try:
mail.sendMail(data['email'], data, body, subject)
except Exception as e:
- msg = "Something went wrong while trying to send reset-password mail to " + \
- data['email'] + "\n error: " + e.message
+ msg = "Something went wrong while trying to send \
+ reset-password mail to " \
+ + data['email'] + "\n error: " + e.message
self.logger.error(
msg + " rolling back the temporary password from the DB")
user.user.temp_password = None
@@ -162,7 +164,8 @@ class User(VvpApiView):
user.phone_number = data['phone_number']
user.full_name = data['full_name']
if len(user.full_name) > 30:
- return Response("first name should be up to 30 characters", status=HTTP_400_BAD_REQUEST)
+ return Response("first name should be up to 30 characters",
+ status=HTTP_400_BAD_REQUEST)
self.handle_password_change(data, user)
@@ -238,4 +241,5 @@ class EngagementLeads(VvpApiView):
class RGWAAccessKey(VvpApiView):
def get(self, request):
- return Response({"rgwa_secret_key": UserService().get_user_rgwa_secret()})
+ return Response(
+ {"rgwa_secret_key": UserService().get_user_rgwa_secret()})
diff --git a/django/engagementmanager/rest/validation_details.py b/django/engagementmanager/rest/validation_details.py
index 1f1a929..ebb527e 100644
--- a/django/engagementmanager/rest/validation_details.py
+++ b/django/engagementmanager/rest/validation_details.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/engagementmanager/rest/vendor.py b/django/engagementmanager/rest/vendor.py
index b6ae351..1c5f5f6 100644
--- a/django/engagementmanager/rest/vendor.py
+++ b/django/engagementmanager/rest/vendor.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -68,9 +68,6 @@ class VendorREST(VvpApiView):
data = request.data
vendor = None
- public = False
- if 'public' in data:
- public = data['public']
try:
vendor = Vendor.objects.get(name=data['name'])
msg = "Company: " + vendor.name + " already exist"
@@ -91,5 +88,5 @@ class VendorREST(VvpApiView):
def delete(self, request, uuid):
msg = ""
sts = HTTP_204_NO_CONTENT
- vendor = Vendor.objects.get(uuid=uuid).delete()
+ Vendor.objects.get(uuid=uuid).delete()
return Response(msg, status=sts)
diff --git a/django/engagementmanager/rest/vf.py b/django/engagementmanager/rest/vf.py
index 23ee5b9..0288c14 100644
--- a/django/engagementmanager/rest/vf.py
+++ b/django/engagementmanager/rest/vf.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/engagementmanager/rest/vfc.py b/django/engagementmanager/rest/vfc.py
index 9ebf3bc..245e936 100644
--- a/django/engagementmanager/rest/vfc.py
+++ b/django/engagementmanager/rest/vfc.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -36,7 +36,6 @@
# ============LICENSE_END============================================
#
# ECOMP is a trademark and service mark of AT&T Intellectual Property.
-import json
from rest_framework.response import Response
from rest_framework.status import HTTP_204_NO_CONTENT
@@ -64,10 +63,13 @@ class VFCRest(VvpApiView):
return Response(serializer.data)
"""
- expecting: VF object uuid, VFC relevant fields(excluding the ones with default field)
- result: addition of a VFC to the DB and concatenating them with the VF object
+ expecting: VF object uuid, VFC relevant fields
+ (excluding the ones with default field)
+ result: addition of a VFC to the DB and concatenating
+ them with the VF object
"""
- # This method doesn't need to be decorated with auth since it doesn't pass any engagement data from the front-end
+ # This method doesn't need to be decorated with auth since it doesn't pass
+ # any engagement data from the front-end
@auth(Permissions.add_vfc)
def post(self, request):
diff --git a/django/engagementmanager/rest/vvp_api_view.py b/django/engagementmanager/rest/vvp_api_view.py
index 4abe086..3163fe9 100644
--- a/django/engagementmanager/rest/vvp_api_view.py
+++ b/django/engagementmanager/rest/vvp_api_view.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -40,7 +40,8 @@ from abc import ABCMeta
from rest_framework.views import APIView
from engagementmanager.decorator.class_decorator import classDecorator
from engagementmanager.decorator.log_func_entry import logFuncEntry
-from engagementmanager.service.authorization_service import AuthorizationService
+from engagementmanager.service.authorization_service import \
+ AuthorizationService
from engagementmanager.service.logging_service import LoggingServiceFactory
diff --git a/django/engagementmanager/scheduled_jobs.py b/django/engagementmanager/scheduled_jobs.py
index 9430ff6..02e0db6 100644
--- a/django/engagementmanager/scheduled_jobs.py
+++ b/django/engagementmanager/scheduled_jobs.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -38,8 +38,10 @@
# ECOMP is a trademark and service mark of AT&T Intellectual Property.
from apscheduler.schedulers.background import BackgroundScheduler
from django.conf import settings
-from engagementmanager.bus.messages.daily_scheduled_message import DailyScheduledMessage
-from engagementmanager.bus.messages.hourly_scheduled_message import HourlyScheduledMessage
+from engagementmanager.bus.messages.daily_scheduled_message\
+ import DailyScheduledMessage
+from engagementmanager.bus.messages.hourly_scheduled_message\
+ import HourlyScheduledMessage
from engagementmanager.service.logging_service import LoggingServiceFactory
logger = LoggingServiceFactory.get_logger()
@@ -57,11 +59,13 @@ class ScheduledJobs:
def setup_daily_job(self):
self.background_scheduler.add_job(self.__daily_scheduled_job, 'cron',
- hour=settings.DAILY_SCHEDULED_JOB_HOUR, day='*')
+ hour=settings.
+ DAILY_SCHEDULED_JOB_HOUR, day='*')
def __hourly_scheduled_job(self):
logger.debug("Hourly scheduled job is about to start.")
self.bus_service.send_message(HourlyScheduledMessage())
def setup_hourly_job(self):
- self.background_scheduler.add_job(self.__hourly_scheduled_job, 'cron', minute=0, hour='*', day='*')
+ self.background_scheduler.add_job(
+ self.__hourly_scheduled_job, 'cron', minute=0, hour='*', day='*')
diff --git a/django/engagementmanager/serializers.py b/django/engagementmanager/serializers.py
index e3e88b0..154884e 100644
--- a/django/engagementmanager/serializers.py
+++ b/django/engagementmanager/serializers.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -37,7 +37,9 @@
#
# ECOMP is a trademark and service mark of AT&T Intellectual Property.
'''
-Each entity has a model serializer that save/update the object in its create()/update() methods and a regular dictionary (map) serializer that return a new/updated instance of the object
+Each entity has a model serializer that save/update the object in its \
+create()/update() methods and a regular dictionary (map) serializer that \
+return a new/updated instance of the object
'''
from rest_framework import serializers
@@ -47,7 +49,8 @@ from engagementmanager.models import NextStep, Notification, Activity, \
ChecklistLineItem, ECOMPRelease, EngagementStatus, CustomUser, \
ChecklistSection
-from .models import IceUserProfile, VFC, Engagement, VF, DeploymentTarget, Role, Vendor, DeploymentTargetSite
+from .models import IceUserProfile, VFC, Engagement, VF, \
+ DeploymentTarget, Role, Vendor, DeploymentTargetSite
class RoleModelSerializer(serializers.ModelSerializer):
@@ -106,7 +109,8 @@ class SuperThinIceUserProfileModelSerializer(serializers.ModelSerializer):
'user', 'company', 'phone_number')
-class SuperThinIceUserProfileModelSerializerForSignals(serializers.ModelSerializer):
+class SuperThinIceUserProfileModelSerializerForSignals(
+ serializers.ModelSerializer):
role = RoleModelSerializer(many=False)
class Meta:
@@ -121,8 +125,10 @@ class ThinIceUserProfileModelSerializer(serializers.ModelSerializer):
class Meta:
model = IceUserProfile
- fields = ('email', 'full_name', 'user', 'is_service_provider_contact', 'phone_number', 'role', 'uuid', 'company',
- 'ssh_public_key', 'regular_email_updates', 'email_updates_on_every_notification',
+ fields = ('email', 'full_name', 'user', 'is_service_provider_contact',
+ 'phone_number', 'role', 'uuid', 'company',
+ 'ssh_public_key', 'regular_email_updates',
+ 'email_updates_on_every_notification',
'email_updates_daily_digest', 'rgwa_access_key')
@@ -179,7 +185,8 @@ class ThinVFModelSerializer(serializers.ModelSerializer):
class Meta:
model = VF
fields = (
- 'uuid', 'name', 'engagement', 'is_service_provider_internal', 'ecomp_release')
+ 'uuid', 'name', 'engagement',
+ 'is_service_provider_internal', 'ecomp_release')
class ThinDeploymentTargetSiteModelSerializer(serializers.ModelSerializer):
@@ -304,7 +311,8 @@ class UserNextStepModelSerializer(serializers.ModelSerializer):
class Meta:
model = NextStep
fields = ('due_date', 'engagement_manual_id', 'description',
- 'create_time', 'creator_full_name', 'vf_name', 'engagement_uuid')
+ 'create_time', 'creator_full_name',
+ 'vf_name', 'engagement_uuid')
class NextStepModelSerializer(serializers.ModelSerializer):
diff --git a/django/engagementmanager/service/__init__.py b/django/engagementmanager/service/__init__.py
index 1726c13..16f81cb 100644
--- a/django/engagementmanager/service/__init__.py
+++ b/django/engagementmanager/service/__init__.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/engagementmanager/service/activities_service.py b/django/engagementmanager/service/activities_service.py
index b7edca4..36ecaa7 100644
--- a/django/engagementmanager/service/activities_service.py
+++ b/django/engagementmanager/service/activities_service.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -38,7 +38,8 @@
# ECOMP is a trademark and service mark of AT&T Intellectual Property.
import json
from django.utils import timezone
-from engagementmanager.bus.messages.new_notification_message import NewNotificationMessage
+from engagementmanager.bus.messages.new_notification_message \
+ import NewNotificationMessage
from engagementmanager.models import IceUserProfile, Activity, Notification
from engagementmanager.utils import activities_data
from engagementmanager.utils.constants import Constants
@@ -55,7 +56,8 @@ class ActivitiesSvc:
if hasattr(activity_data, "users_list") and activity_data.users_list:
for user in activity_data.users_list:
activity_data.user = user
- if hasattr(activity_data, "multiple_users_as_owners") and activity_data.multiple_users_as_owners:
+ if hasattr(activity_data, "multiple_users_as_owners") and \
+ activity_data.multiple_users_as_owners:
activity_data.owner = activity_data.user
self.set_description(activity_data)
self.set_metadata(activity_data)
@@ -67,13 +69,17 @@ class ActivitiesSvc:
def __create_activity(self, activity_data):
if activity_data.engagement is None:
- msg = "Engagement provided is a None object, be careful not to generate " \
- "description and metadata with engagement properties."
+ msg = "Engagement provided is a None object, " +\
+ "be careful not to generate description and metadata " +\
+ "with engagement properties."
logger.warn(msg)
- if activity_data.owner and not isinstance(activity_data.owner, IceUserProfile):
- raise ValueError("owner should be IceUserProfile, was %r", activity_data.owner)
+ if activity_data.owner and not isinstance(activity_data.owner,
+ IceUserProfile):
+ raise ValueError(
+ "owner should be IceUserProfile, was %r", activity_data.owner)
if activity_data.description is None:
- logger.warn('createActivity called with description=None; setting to ""')
+ logger.warn(
+ 'createActivity called with description=None; setting to ""')
activity_data.description = ''
new_activity = Activity.objects.create(
@@ -93,50 +99,75 @@ class ActivitiesSvc:
if activity_data.owner is None:
if activity_data.engagement:
- users_to_notify = activity_data.engagement.engagement_team.all()
+ users_to_notify = activity_data.engagement.\
+ engagement_team.all()
else:
users_to_notify.append(activity_data.owner)
for user_to_notify in users_to_notify:
- new_notification = Notification.objects.create(user=user_to_notify, activity=new_activity)
+ new_notification = Notification.objects.create(
+ user=user_to_notify, activity=new_activity)
new_activity.notification_set.add(new_notification)
user_to_notify.notification_set.add(new_notification)
new_notification.save()
from engagementmanager.apps import bus_service
- bus_service.send_message(NewNotificationMessage(new_notification))
+ bus_service.send_message(
+ NewNotificationMessage(new_notification))
def pull_recent_activities(self, engagement, recent_activities_limit):
- """ expected: engagement object (Activity), recent_activities_limit (integer) - number of recent activities
+ """ expected: engagement object (Activity), recent_activities_limit
+ (integer) - number of recent activities
result: Top-X Dict Activity objects (sort by create_time) """
logger.debug("Pulling top X activities from DB")
activities = Activity.objects.filter(
- engagement=engagement, activity_owner=None).order_by('-create_time')[:recent_activities_limit]
+ engagement=engagement, activity_owner=None).order_by(
+ '-create_time')[:recent_activities_limit]
return activities
def set_description(self, activity_data):
dt = timezone.now()
description = ''
- if isinstance(activity_data, activities_data.UserJoinedEngagementActivityData):
+ if isinstance(activity_data, activities_data.
+ UserJoinedEngagementActivityData):
description = "##user_name## joined ##vf_name## "
- elif isinstance(activity_data, activities_data.UpdateNextStepsActivityData):
- description = "##user_name## " + activity_data.update_type.lower() + " a next step"
- elif isinstance(activity_data, activities_data.VFProvisioningActivityData):
- description = "Failed Gitlab and/or Jenkins Provision ##vf_name##: " + activity_data.description
- elif isinstance(activity_data, activities_data.TestFinishedActivityData):
- description = "Failure in Jenkins Job: " + activity_data.description
- elif isinstance(activity_data, activities_data.ChangeEngagementStageActivityData):
- description = "Engagement stage is now " + activity_data.stage + " for the following VF: ##vf_name##"
- elif isinstance(activity_data, activities_data.DeleteNextStepsActivityData):
+ elif isinstance(activity_data, activities_data.
+ UpdateNextStepsActivityData):
+ description = "##user_name## " + activity_data.\
+ update_type.lower() + " a next step"
+ elif isinstance(activity_data, activities_data.
+ VFProvisioningActivityData):
+ description = "Failed Gitlab and/or Jenkins Provision " +\
+ "##vf_name##: " + activity_data.description
+ elif isinstance(activity_data, activities_data.
+ TestFinishedActivityData):
+ description = "Failure in Jenkins Job: "\
+ + activity_data.description
+ elif isinstance(activity_data, activities_data.
+ ChangeEngagementStageActivityData):
+ description = "Engagement stage is now " + \
+ activity_data.stage + " for the following VF: ##vf_name##"
+ elif isinstance(activity_data, activities_data.
+ DeleteNextStepsActivityData):
+ description = activity_data.user.full_name + \
+ " has deleted a next step at " + \
+ dt.strftime("%Y-%m-%d %H:%M:%S")
+ elif isinstance(activity_data, activities_data.
+ NoticeEmptyEngagementData):
+ description = "You have not added any parts of the VNF package " +\
+ "to your engagement ##vf_name## since it was created " \
+ + activity_data.delta_days_from_creation + \
+ " days ago. Do note that if you have not added any " +\
+ "parts of the VNF package by " + \
+ activity_data.max_empty_time + ", we will be automatically " +\
+ "archive it."
+ elif isinstance(activity_data, activities_data.
+ AddNextStepsActivityData):
description = activity_data.user.full_name + \
- " has deleted a next step at " + dt.strftime("%Y-%m-%d %H:%M:%S")
- elif isinstance(activity_data, activities_data.NoticeEmptyEngagementData):
- description = "You have not added any parts of the VNF package to your engagement ##vf_name## since it was created " + activity_data.delta_days_from_creation +\
- " days ago. Do note that if you have not added any parts of the VNF package by " + \
- activity_data.max_empty_time + ", we will be automatically archive it."
- elif isinstance(activity_data, activities_data.AddNextStepsActivityData):
- description = activity_data.user.full_name + " has added a next step at " + dt.strftime("%Y-%m-%d %H:%M:%S")
- elif isinstance(activity_data, activities_data.SSHKeyAddedActivityData):
+ " has added a next step at " + dt.strftime(
+ "%Y-%m-%d %H:%M:%S")
+ elif isinstance(activity_data, activities_data.
+ SSHKeyAddedActivityData):
if activity_data.action == 'add':
description = "You have added an SSH key to your profile"
elif activity_data.action == 'set':
@@ -150,11 +181,15 @@ class ActivitiesSvc:
dt = timezone.now()
metadata = {}
- if isinstance(activity_data, activities_data.UserJoinedEngagementActivityData):
+ if isinstance(activity_data, activities_data.
+ UserJoinedEngagementActivityData):
activity_data.is_notification = True
- metadata['notification_subject'] = "Someone has joined the " + activity_data.vf.name + " team"
- metadata['notification_message'] = activity_data.user.full_name + " joined the " + activity_data.vf.name + \
- " team. You can reach the dashboard by going to this link: " + \
+ metadata['notification_subject'] = "Someone has joined the " + \
+ activity_data.vf.name + " team"
+ metadata['notification_message'] = activity_data.user.full_name +\
+ " joined the " + activity_data.vf.name + \
+ " team. You can reach the dashboard by " +\
+ "going to this link: " + \
Constants.dashboard_href
metadata['macros'] = {
'##vf_name##': {
@@ -168,7 +203,8 @@ class ActivitiesSvc:
'long': activity_data.user.email,
}
}
- elif isinstance(activity_data, activities_data.UpdateNextStepsActivityData):
+ elif isinstance(activity_data, activities_data.
+ UpdateNextStepsActivityData):
metadata['macros'] = {
'##user_name##': {
'type': 'popover',
@@ -176,15 +212,24 @@ class ActivitiesSvc:
'long': activity_data.user.email,
}
}
- elif isinstance(activity_data, activities_data.NoticeEmptyEngagementData):
+ elif isinstance(activity_data, activities_data.
+ NoticeEmptyEngagementData):
activity_data.is_notification = True
- metadata['notification_subject'] = "Inactive Engagement Alert - " + activity_data.vf_name
+ metadata['notification_subject'] = "Inactive Engagement Alert - "\
+ + activity_data.vf_name
- metadata['notification_message'] = "We have noticed that you have not added any parts of the VNF package to your engagement <em>" +\
- activity_data.engagement.engagement_manual_id + ": " + activity_data.vf_name + "</em> since it was created " + activity_data.delta_days_from_creation +\
- " days ago. If you have any questions around how you add your VNF package please check the relevant parts of the online documentation.<br/><br/>" +\
- "Do note that if you have not added any parts of the VNF package by " + \
- activity_data.max_empty_time + ", we will be automatically archive it."
+ metadata['notification_message'] = "We have noticed that " +\
+ "you have not added any parts of the VNF " +\
+ "package to your engagement <em>"\
+ + activity_data.engagement.engagement_manual_id + ": "\
+ + activity_data.vf_name + "</em> since it was created "\
+ + activity_data.delta_days_from_creation +\
+ " days ago. If you have any questions around how you add " +\
+ "your VNF package please check the relevant parts of the " +\
+ "online documentation.<br/><br/>" +\
+ "Do note that if you have not added any parts of the VNF " +\
+ "package by " + activity_data.max_empty_time + ", we will " +\
+ "be automatically archive it."
metadata['macros'] = {
'##vf_name##': {
@@ -194,9 +239,11 @@ class ActivitiesSvc:
},
}
- elif isinstance(activity_data, activities_data.VFProvisioningActivityData):
+ elif isinstance(activity_data, activities_data.
+ VFProvisioningActivityData):
activity_data.is_notification = True
- metadata['notification_subject'] = "Failed Gitlab and/or Jenkins Provision: " + activity_data.vf.name
+ metadata['notification_subject'] = "Failed Gitlab and/or " +\
+ "Jenkins Provision: " + activity_data.vf.name
metadata['notification_message'] = activity_data.description
metadata['macros'] = {
'##vf_name##': {
@@ -205,16 +252,19 @@ class ActivitiesSvc:
'eng_uuid': activity_data.vf.engagement.uuid,
},
}
- elif isinstance(activity_data, activities_data.TestFinishedActivityData):
+ elif isinstance(activity_data, activities_data.
+ TestFinishedActivityData):
activity_data.is_notification = True
metadata['notification_subject'] = "Failed test_finished signal "
metadata['notification_message'] = activity_data.description
- elif isinstance(activity_data, activities_data.ChangeEngagementStageActivityData):
+ elif isinstance(activity_data, activities_data.
+ ChangeEngagementStageActivityData):
activity_data.is_notification = True
- metadata['notification_subject'] = "Engagement stage was changed for the following VF: " + \
- activity_data.vf.name
- metadata['notification_message'] = "Engagement stage is now " + activity_data.stage +\
- " for the following VF: " + activity_data.vf.name
+ metadata['notification_subject'] = "Engagement stage was " +\
+ "changed for the following VF: " + activity_data.vf.name
+ metadata['notification_message'] = "Engagement stage is now " \
+ + activity_data.stage + " for the following VF: " \
+ + activity_data.vf.name
metadata['macros'] = {
'##vf_name##': {
'type': 'select_engagement',
@@ -222,17 +272,22 @@ class ActivitiesSvc:
'eng_uuid': activity_data.engagement.uuid,
}
}
- elif isinstance(activity_data, activities_data.AddNextStepsActivityData):
+ elif isinstance(activity_data,
+ activities_data.AddNextStepsActivityData):
activity_data.is_notification = True
- metadata['notification_subject'] = "New next-step was added to the following VF: " + activity_data.vf.name
- metadata['notification_message'] = activity_data.user.full_name + " has added a next step at " +\
+ metadata['notification_subject'] = "New next-step was " +\
+ "added to the following VF: " + activity_data.vf.name
+ metadata['notification_message'] = activity_data.user.full_name \
+ + " has added a next step at " +\
dt.strftime("%Y-%m-%d %H:%M:%S") + \
", You can reach the dashboard by going to this link: " \
+ Constants.dashboard_href
- elif isinstance(activity_data, activities_data.SSHKeyAddedActivityData):
+ elif isinstance(
+ activity_data, activities_data.SSHKeyAddedActivityData):
activity_data.is_notification = True
metadata['notification_subject'] = "You have set an SSH key"
- metadata['notification_message'] = "You have set an SSH key to your profile. Please allow some time for" \
- " it to propagate across the system."
+ metadata['notification_message'] = "You have set an SSH key to " +\
+ "your profile. Please allow some time for it to propagate " +\
+ "across the system."
activity_data.metadata = metadata
diff --git a/django/engagementmanager/service/authorization_service.py b/django/engagementmanager/service/authorization_service.py
index c850b4a..7a30d0e 100644
--- a/django/engagementmanager/service/authorization_service.py
+++ b/django/engagementmanager/service/authorization_service.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -39,8 +39,8 @@
import json
from enum import Enum
import rest_framework
-from engagementmanager.models import Role, Engagement, Checklist, NextStep, VFC, \
- VF, ChecklistDecision, Notification
+from engagementmanager.models import Role, Engagement, Checklist, NextStep, \
+ VFC, VF, ChecklistDecision, Notification
from engagementmanager.utils.constants import Roles
from engagementmanager.utils.request_data_mgr import request_data_mgr
from engagementmanager.service.logging_service import LoggingServiceFactory
@@ -119,8 +119,10 @@ class Permissions(Enum):
class AuthorizationService:
"""
- The Authorization Service detemines whether a given action is authorized for a specific user.
- The method: is_user_able_to performs the authorization check given a user and an action (from Permissions ENUM)
+ The Authorization Service detemines whether a given action is authorized
+ for a specific user.
+ The method: is_user_able_to performs the authorization check given a user
+ and an action (from Permissions ENUM)
"""
role_standard_user = None
role_el = None
@@ -129,8 +131,10 @@ class AuthorizationService:
def __get_role_checks(self, user, action):
"""
- Returns the list of auth checks that should be performed per user action.
- Returns None if the action is not listed in the authorized actions of the given user.
+ Returns the list of auth checks that should be \
+ performed per user action.
+ Returns None if the action is not listed in the \
+ authorized actions of the given user.
"""
result = None
@@ -138,33 +142,40 @@ class AuthorizationService:
if (user.role == self.role_el) and (action in self.el_permissions):
result = self.el_permissions[action]
# ADMIN #
- elif user.role == self.role_admin and action in self.admin_permissions:
+ elif user.role == self.role_admin and action in \
+ self.admin_permissions:
result = self.admin_permissions[action]
# ADMIN Read only #
- elif user.role == self.role_admin_ro and action in self.admin_ro_permissions:
+ elif user.role == self.role_admin_ro and action in \
+ self.admin_ro_permissions:
result = self.admin_ro_permissions[action]
# STANDRARD_USER #
- if user.role == self.role_standard_user and action in self.standard_user_permissions:
+ if user.role == self.role_standard_user and \
+ action in self.standard_user_permissions:
result = self.standard_user_permissions[action]
return result
def __require_eng_membership(self, user, action, **kwargs):
"""
- Determines whether a given user is part of engagement team by the eng uuid
+ Determines whether a given user is part of engagement \
+ team by the eng uuid.
user = IceUser
eng = UUID as a string
:param user: user for auth check
:param action: action for auth check
:param kwargs: eng_uuid, checklist_uuid, ...
- :return: Boolean, Message -> True/False if auth check succeeds/fails and a message describing auth failure
+ :return: Boolean, Message -> True/False if auth check \
+ succeeds/fails and a message describing auth failure
"""
eng = kwargs['eng']
try:
# @UndefinedVariable
- if (user.email == eng.reviewer.email or user.email == eng.peer_reviewer.email or user.role.name == Roles.admin.name):
+ if (user.email == eng.reviewer.email or
+ user.email == eng.peer_reviewer.email or
+ user.role.name == Roles.admin.name):
return True, 'OK'
else:
# validate if user in Team
@@ -173,33 +184,39 @@ class AuthorizationService:
else:
return False, ""
except Engagement.DoesNotExist:
- msg = 'User ' + user.email + ' is not a member of engagement: ' + eng.uuid + \
- ' / User is a not peer reviewer / admin of the engagement / Engagement wasnt found while fetching from DB'
+ msg = 'User ' + user.email + ' is not a member of engagement: ' + \
+ eng.uuid + \
+ ' / User is a not peer reviewer / admin of the ' +\
+ 'engagement / Engagement wasnt found while fetching from DB'
logger.info(msg)
return False, msg
except Exception as e:
print(e)
- msg = 'A general error occurred while trying to validate that User ' + \
- user.email + ' is a member of engagement '
+ msg = 'A general error occurred while trying to validate ' +\
+ 'that User ' + user.email + ' is a member of engagement '
logger.info(msg + " Error: " + str(e))
return False, msg
def __require_peer_review_ownership(self, user, action, **kwargs):
"""
- Determines whether the given user is the peer reviewer of the checklist
+ Determines whether the given user is \
+ the peer reviewer of the checklist
"""
cl = kwargs['cl']
eng = kwargs['eng']
if cl and eng:
# @UndefinedVariable
- if (eng.peer_reviewer == user and cl.owner == user) or (user.role.name == Roles.admin.name):
+ if (eng.peer_reviewer == user and cl.owner == user) or \
+ (user.role.name == Roles.admin.name):
return True, 'OK'
else:
- return False, 'User is either not the owner of the checklist or not a peer reviewer of the checklist'
+ return False, 'User is either not the owner of ' +\
+ 'the checklist or not a peer reviewer of the checklist'
else:
logger.error(
- 'Internal Error - Checklist/Engagement not found while trying to check permissions for user ' + user.email)
+ 'Internal Error - Checklist/Engagement not found while ' +
+ 'trying to check permissions for user ' + user.email)
return False, 'Internal Error - Checklist not found'
def __require_cl_ownership(self, user, action, **kwargs):
@@ -216,7 +233,8 @@ class AuthorizationService:
return False, 'User is not the owner of the checklist'
else:
logger.error(
- 'Internal Error - Checklist not found while trying to check permissions for user ' + user.email)
+ 'Internal Error - Checklist not found while trying to ' +
+ 'check permissions for user ' + user.email)
return False, 'Internal Error - Checklist not found'
def __require_el_of_engagement(self, user, action, **kwargs):
@@ -234,7 +252,8 @@ class AuthorizationService:
return False, 'Role Not authorized'
else:
logger.error(
- 'Internal Error - Engagement not found while trying to check permissions for user ' + user.email)
+ 'Internal Error - Engagement not found while trying to ' +
+ 'check permissions for user ' + user.email)
return False, 'Internal Error - Checklist not found'
def __noop(self, user, action, **kwargs):
@@ -266,7 +285,8 @@ class AuthorizationService:
######################
"""
Each Permission Map is composed of the following key-val pairs:
- Key='Action (Permission ENUM)' --> Value='Set of Checks to perform on this action.'
+ Key='Action (Permission ENUM)' --> Value='Set of Checks to
+ perform on this action.'
"""
el_permissions = {
Permissions.add_vf: {__noop},
@@ -289,16 +309,20 @@ class AuthorizationService:
Permissions.set_checklist_decision: {__require_cl_ownership},
Permissions.add_checklist_audit_log: {__require_cl_ownership},
Permissions.delete_checklist_audit_log: {__require_cl_ownership},
- Permissions.el_review_checklist: {__require_cl_ownership, __require_eng_membership},
+ Permissions.el_review_checklist: {__require_cl_ownership,
+ __require_eng_membership},
Permissions.peer_review_checklist: {__require_peer_review_ownership},
- Permissions.handoff_checklist: {__require_cl_ownership, __require_eng_membership},
- Permissions.add_checklist_nextstep: {__require_cl_ownership, __require_eng_membership},
+ Permissions.handoff_checklist: {__require_cl_ownership,
+ __require_eng_membership},
+ Permissions.add_checklist_nextstep: {__require_cl_ownership,
+ __require_eng_membership},
Permissions.edit_nextstep: {__require_eng_membership},
Permissions.is_el_of_eng: {__require_el_of_engagement},
Permissions.update_personal_next_step: {__noop},
Permissions.create_checklist_audit_log: {__require_eng_membership},
Permissions.create_checklist_decision: {__require_eng_membership},
- Permissions.update_checklist_state: {__require_cl_ownership, __require_eng_membership},
+ Permissions.update_checklist_state: {__require_cl_ownership,
+ __require_eng_membership},
Permissions.create_deployment_target_site: {__require_eng_membership},
Permissions.star_an_engagement: {__noop},
Permissions.invite: {__require_eng_membership},
@@ -338,7 +362,8 @@ class AuthorizationService:
Permissions.update_vf: {__require_eng_membership},
Permissions.reset_nextstep: {__require_eng_membership},
Permissions.update_personal_next_step: {__noop},
- Permissions.update_checklist_state: {__require_cl_ownership, __require_eng_membership},
+ Permissions.update_checklist_state: {__require_cl_ownership,
+ __require_eng_membership},
Permissions.create_deployment_target_site: {__require_eng_membership},
Permissions.star_an_engagement: {__noop},
Permissions.invite: {__require_eng_membership},
@@ -368,7 +393,8 @@ class AuthorizationService:
admin_permissions.update( # Add Extra permissions to admin
{
Permissions.admin_approve_checklist: {__require_cl_ownership},
- Permissions.remove_from_engagement_team: {__require_eng_membership},
+ Permissions.remove_from_engagement_team: {
+ __require_eng_membership},
Permissions.view_checklist_template: {__noop},
Permissions.edit_checklist_template: {__noop},
Permissions.archive_engagement: {__noop},
@@ -403,7 +429,8 @@ class AuthorizationService:
)
def __init__(self):
- self.role_standard_user = self.role_el = self.role_admin = self.role_admin_ro = None
+ self.role_standard_user = self.role_el = self.role_admin = \
+ self.role_admin_ro = None
self.__load_roles_from_db()
def check_permissions(self, user, action, eng_uuid, role, eng, cl):
@@ -411,7 +438,8 @@ class AuthorizationService:
# role and action
perm_checks = self.__get_role_checks(user, action)
if not perm_checks:
- # Permission Checks were not found, it means that the action is not listed in the permitted
+ # Permission Checks were not found, it means that the action is
+ # not listed in the permitted
# actions for the role of the user
ret = False, 'Role ' + str(role.name) + ' is not permitted to ' + \
str(action.name) + '/ Engagement: ' + \
@@ -456,7 +484,8 @@ class AuthorizationService:
eng = Engagement.objects.get(uuid=eng_uuid)
except Engagement.DoesNotExist:
logger.error(
- 'ENG was not found while checking permissions... returning 500')
+ 'ENG was not found while checking permissions... ' +
+ 'returning 500')
return None, None
try:
@@ -490,7 +519,7 @@ class AuthorizationService:
else:
# Extract eng_uuid from request body
for arg in args:
- if eng_uuid != None:
+ if eng_uuid:
break
if isinstance(arg, rest_framework.request.Request):
try:
@@ -512,7 +541,8 @@ class AuthorizationService:
if 'eng_uuid' in data and data['eng_uuid']:
eng_uuid = data['eng_uuid']
- elif 'engagement_uuid' in data and data['engagement_uuid']:
+ elif 'engagement_uuid' in data and \
+ data['engagement_uuid']:
eng_uuid = data['engagement_uuid']
except Exception as e:
print(e)
@@ -523,80 +553,88 @@ class AuthorizationService:
# Extract CHECKLIST_UUID #
if 'checklistUuid' in kwargs:
request_data_mgr.set_cl_uuid(kwargs['checklistUuid'])
- if (eng_uuid == None):
+ if not eng_uuid:
try:
eng_uuid = Checklist.objects.get(
uuid=request_data_mgr.get_cl_uuid()).engagement.uuid
request_data_mgr.set_eng_uuid(eng_uuid)
except Checklist.DoesNotExist:
- raise Exception("auth service couldn't fetch Checklist by checklist uuid=" +
+ raise Exception("auth service couldn't fetch Checklist " +
+ "by checklist uuid=" +
request_data_mgr.get_cl_uuid())
except Exception as e:
raise Exception(
- "Failed fetching engagement uuid from checklist " + request_data_mgr.get_cl_uuid())
+ "Failed fetching engagement uuid from checklist "
+ + request_data_mgr.get_cl_uuid())
# Extract engagement by NEXTSTEP_UUID #
if 'ns_uuid' in kwargs:
request_data_mgr.set_ns_uuid(kwargs['ns_uuid'])
- if (eng_uuid == None):
+ if not eng_uuid:
next_step = None
try:
next_step = NextStep.objects.get(
uuid=request_data_mgr.get_ns_uuid())
except NextStep.DoesNotExist:
- raise Exception("auth service couldn't fetch NextStep by nextstep uuid=" +
+ raise Exception("auth service couldn't" +
+ "fetch NextStep by nextstep uuid=" +
request_data_mgr.get_ns_uuid())
try:
eng_uuid = next_step.engagement.uuid
request_data_mgr.set_eng_uuid(eng_uuid)
- except:
- # If we've gotten here it means that the next_step doesn't have attached
+ except BaseException:
+ # If we've gotten here it means that the next_step
+ # doesn't have attached
# engagement (e.g personal next_step)
pass
# Extract engagement by VFC
if ('uuid' in kwargs):
from engagementmanager.rest.vfc import VFCRest
- if (isinstance(args[0], VFCRest) == True):
+ if (isinstance(args[0], VFCRest)):
try:
vfc = VFC.objects.get(uuid=kwargs['uuid'])
- if (eng_uuid == None):
+ if not eng_uuid:
eng_uuid = vfc.vf.engagement.uuid
request_data_mgr.set_eng_uuid(eng_uuid)
except VFC.DoesNotExist:
raise Exception(
- "auth service couldn't fetch vfc by vfc uuid=" + kwargs['uuid'])
+ "auth service couldn't fetch vfc by vfc uuid="
+ + kwargs['uuid'])
# Extract engagement by VF (unfortunately the url exposed by the server
# get uuid as a parameter and serve both vf and vfc APIs) #
- if 'vf_uuid' in kwargs and eng_uuid == None:
+ if 'vf_uuid' in kwargs and not eng_uuid:
try:
eng_uuid = VF.objects.get(
uuid=kwargs['vf_uuid']).engagement.uuid
request_data_mgr.set_eng_uuid(eng_uuid)
except VF.DoesNotExist:
logger.error(
- "Prepare_data_for_auth: Couldn't fetch engagement object from VF, trying to fetch from VFC...")
+ "Prepare_data_for_auth: Couldn't fetch engagement " +
+ "object from VF, trying to fetch from VFC...")
vfc = None
try:
vfc = VFC.objects.get(uuid=kwargs['vf_uuid'])
- if (vfc != None):
+ if vfc:
eng_uuid = vfc.vf.engagement.uuid
request_data_mgr.set_eng_uuid(eng_uuid)
except VFC.DoesNotExist:
logger.error(
- "Prepare_data_for_auth: Couldn't fetch engagement object from VFC")
+ "Prepare_data_for_auth: Couldn't fetch engagement " +
+ "object from VFC")
# Extract engagement by ChecklistDecision
- if 'decision_uuid' in kwargs and eng_uuid == None:
+ if 'decision_uuid' in kwargs and not eng_uuid:
try:
eng_uuid = ChecklistDecision.objects.get(
uuid=kwargs['decision_uuid']).checklist.engagement.uuid
request_data_mgr.set_eng_uuid(eng_uuid)
except ChecklistDecision.DoesNotExist:
logger.error(
- "Prepare_data_for_auth: Couldn't fetch engagement object from ChecklistDecision")
+ "Prepare_data_for_auth: Couldn't fetch " +
+ "engagement object from ChecklistDecision")
# Extract notification uuid for permission check
if 'notif_uuid' in kwargs:
diff --git a/django/engagementmanager/service/base_service.py b/django/engagementmanager/service/base_service.py
index 93e48f8..b6b34e6 100644
--- a/django/engagementmanager/service/base_service.py
+++ b/django/engagementmanager/service/base_service.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -43,7 +43,8 @@ from engagementmanager.service.logging_service import LoggingServiceFactory
class BaseSvc():
'''
- classdocs This is the base abstract class of all ice Services delegated from the Rest layer
+ classdocs This is the base abstract class of all ice Services \
+ delegated from the Rest layer
'''
__metaclass__ = ABCMeta
diff --git a/django/engagementmanager/service/bus_service.py b/django/engagementmanager/service/bus_service.py
index 5096fbb..0595c7b 100644
--- a/django/engagementmanager/service/bus_service.py
+++ b/django/engagementmanager/service/bus_service.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -36,7 +36,8 @@
# ============LICENSE_END============================================
#
# ECOMP is a trademark and service mark of AT&T Intellectual Property.
-from engagementmanager.bus.handlers.service_bus_base_handler import ServiceBusBaseHandler
+from engagementmanager.bus.handlers.service_bus_base_handler \
+ import ServiceBusBaseHandler
from engagementmanager.utils.vvp_exceptions import VvpGeneralException
@@ -49,7 +50,9 @@ class BusService:
def register(self, handler, message_type):
if not isinstance(handler, ServiceBusBaseHandler):
- raise VvpGeneralException("You can't register handler which is not from type of ServiceBusBaseHandler")
+ raise VvpGeneralException(
+ "You can't register handler which is not from type " +
+ "of ServiceBusBaseHandler")
handler_pair = self.__get_or_create_handler_pair(message_type)
handler_pair["handlers"].append(handler)
diff --git a/django/engagementmanager/service/checklist_audit_log_service.py b/django/engagementmanager/service/checklist_audit_log_service.py
index f726950..84f0d9b 100644
--- a/django/engagementmanager/service/checklist_audit_log_service.py
+++ b/django/engagementmanager/service/checklist_audit_log_service.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -37,7 +37,8 @@
#
# ECOMP is a trademark and service mark of AT&T Intellectual Property.
import json
-from engagementmanager.models import ChecklistDecision, ChecklistAuditLog, Checklist
+from engagementmanager.models import ChecklistDecision,\
+ ChecklistAuditLog, Checklist
from engagementmanager.serializers import ThinChecklistAuditLogModelSerializer
from engagementmanager.service.logging_service import LoggingServiceFactory
@@ -46,11 +47,14 @@ logger = LoggingServiceFactory.get_logger()
def addAuditLogToDecision(decision, description, user, category=''):
"""
- expected: decisionUuid(string), description(string), user(object), category is optional(string)
- result: new auditlog object would be create and attached to a decision object.
+ expected: decisionUuid(string), description(string),\
+ user(object), category is optional(string)
+ result: new auditlog object would be create and \
+ attached to a decision object.
"""
audit = ChecklistAuditLog.objects.create(decision=decision,
- description=description, category=category, creator=user)
+ description=description,
+ category=category, creator=user)
auditData = ThinChecklistAuditLogModelSerializer(audit).data
return auditData
@@ -58,10 +62,11 @@ def addAuditLogToDecision(decision, description, user, category=''):
def getAuditLogsWithDecision(decisionUuid, user):
"""
expected: decisionUuid(string), user(object)
- result: all audit logs objects that attached to a decision would be returned in a json.
+ result: all audit logs objects that attached to a decision \
+ would be returned in a json.
"""
data = dict()
- if checklistUuid == '' or not user: # @UndefinedVariable
+ if decisionUuid == '' or not user:
msg = "checklistUuid or user == None"
logger.error(msg)
msg = "AuditLogs were not retrieved due to bad parameters"
@@ -69,18 +74,22 @@ def getAuditLogsWithDecision(decisionUuid, user):
decision = ChecklistDecision.objects.get(uuid=decisionUuid)
audits = ChecklistAuditLog.objects.filter(decision=decision)
- data['audits'] = ThinChecklistAuditLogModelSerializer(audits, many=True).data
+ data['audits'] = ThinChecklistAuditLogModelSerializer(
+ audits, many=True).data
auditsData = json.dumps(data, ensure_ascii=False)
return auditsData
def addAuditLogToChecklist(checklist, description, user, category=''):
"""
- expected: checklistUuid(string), description(string), user(object), category is optional(string)
- result: new auditlog object would be create and attached to a checklist object.
+ expected: checklistUuid(string), description(string), user(object), \
+ category is optional(string)
+ result: new auditlog object would be create and attached \
+ to a checklist object.
"""
audit = ChecklistAuditLog.objects.create(checklist=checklist,
- description=description, category=category, creator=user)
+ description=description,
+ category=category, creator=user)
auditData = ThinChecklistAuditLogModelSerializer(audit).data
logger.debug("audit log was successfully updated")
return auditData
@@ -89,7 +98,8 @@ def addAuditLogToChecklist(checklist, description, user, category=''):
def getAuditLogsWithChecklist(checklistUuid, user):
"""
expected: checklistUuid(string), user(object)
- result: all audit logs objects that attached to a checklist would be returned in a json.
+ result: all audit logs objects that attached to a checklist \
+ would be returned in a json.
"""
data = dict()
if checklistUuid == '' or not user: # @UndefinedVariable
@@ -100,6 +110,7 @@ def getAuditLogsWithChecklist(checklistUuid, user):
checklist = Checklist.objects.get(uuid=checklistUuid)
audits = ChecklistAuditLog.objects.filter(checklist=checklist)
- data['audits'] = ThinChecklistAuditLogModelSerializer(audits, many=True).data
+ data['audits'] = ThinChecklistAuditLogModelSerializer(
+ audits, many=True).data
auditsData = json.dumps(data, ensure_ascii=False)
return auditsData
diff --git a/django/engagementmanager/service/checklist_decision_service.py b/django/engagementmanager/service/checklist_decision_service.py
index e94c059..14007fe 100644
--- a/django/engagementmanager/service/checklist_decision_service.py
+++ b/django/engagementmanager/service/checklist_decision_service.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -52,7 +52,8 @@ logger = LoggingServiceFactory.get_logger()
def setDecision(decisionUuid, user, value):
logger.debug("attempting setDecision(user=%r, value=%r)...", user, value)
- if not decisionUuid or not user or value not in CheckListDecisionValue.__members__:
+ if not decisionUuid or not user or value not in \
+ CheckListDecisionValue.__members__:
msg = "decisionUuid or value are empty or invalid / user == None"
logger.error(msg)
msg = "decision wasn't change due to bad parameters"
@@ -61,48 +62,64 @@ def setDecision(decisionUuid, user, value):
decision = ChecklistDecision.objects.get(uuid=decisionUuid)
checklist = decision.checklist
- # @UndefinedVariable
- if (checklist.owner.email == user.email and user.role.name == Roles.el.name) or (user.role.name == Roles.admin.name):
- if checklist.state == CheckListState.review.name: # @UndefinedVariable
+ if (checklist.owner.email == user.email and
+ user.role.name == Roles.el.name) or \
+ (user.role.name == Roles.admin.name):
+ if checklist.state == CheckListState.review.name:
if decision.review_value != value:
decision.review_value = value
decision.save()
- msg = "review_value was successfully changed for decision: " + decision.uuid + " , value: " + value
+ msg = "review_value was successfully " +\
+ "changed for decision: " + \
+ decision.uuid + " , value: " + value
else:
- msg = "review_value was already the same: " + decision.uuid + " , value: " + value
+ msg = "review_value was already the same: " + \
+ decision.uuid + " , value: " + value
logger.debug(msg)
- elif checklist.state == CheckListState.peer_review.name: # @UndefinedVariable
+ elif checklist.state == CheckListState.peer_review.name:
if decision.peer_review_value != value:
decision.peer_review_value = value
decision.save()
- msg = "peer_review_value was successfully changed for decision: " + decision.uuid + " , value: " + value
+ msg = "peer_review_value was successfully " +\
+ "changed for decision: " + decision.uuid +\
+ " , value: " + value
else:
- msg = "review_value was already the same: " + decision.uuid + " , value: " + value
+ msg = "review_value was already the same: " + \
+ decision.uuid + " , value: " + value
logger.debug(msg)
- elif checklist.state == CheckListState.automation.name: # @UndefinedVariable
+ elif checklist.state == CheckListState.automation.name:
if decision.review_value != value:
decision.peer_review_value = value
decision.save()
- msg = "peer_review_value was successfully changed for decision: " + decision.uuid + " , value: " + value
+ msg = "peer_review_value was successfully " +\
+ "changed for decision: " + decision.uuid +\
+ " , value: " + value
else:
- msg = "review_value was already the same: " + decision.uuid + " , value: " + value
+ msg = "review_value was already the same: " + \
+ decision.uuid + " , value: " + value
if decision.review_value != value:
decision.review_value = value
decision.save()
- msg = "review_value was successfully changed for decision: " + decision.uuid + " , value: " + value
+ msg = "review_value was successfully " +\
+ "changed for decision: " + \
+ decision.uuid + " , value: " + value
else:
- msg = "review_value was already the same: " + decision.uuid + " , value: " + value
+ msg = "review_value was already the same: " + \
+ decision.uuid + " , value: " + value
logger.debug(msg)
else:
- msg = "checklist's state is an invalid state for the decision change and should be different"
+ msg = "checklist's state is an invalid state for the decision " +\
+ "change and should be different"
logger.error(msg)
- msg = "decision wasn't change, Checklist's state is not allowed to change the decision"
+ msg = "decision wasn't change, " +\
+ "Checklist's state is not allowed to change the decision"
raise MethodNotAllowed(msg)
return msg
else:
msg = "user isn't an EL / The User (" + user.full_name + \
- ") tried to change the decision while the current owner is " + checklist.owner.full_name
+ ") tried to change the decision while the current owner is " \
+ + checklist.owner.full_name
logger.error(logEncoding(msg))
msg = "Action is forbidden"
raise PermissionDenied(msg)
@@ -110,13 +127,16 @@ def setDecision(decisionUuid, user, value):
def getDecision(decisionUuid, user):
data = dict()
- if decisionUuid == '' or (not user and user.role.name == Roles.el.name): # @UndefinedVariable
+ # @UndefinedVariable
+ if decisionUuid == '' or (not user and user.role.name == Roles.el.name):
msg = "decisionUuid or (user == None / user.role != EL)"
logger.error(msg)
- msg = "decision wasn't retrieved due to bad parameters / you are not authorized"
+ msg = "decision wasn't retrieved due to bad parameters / " +\
+ "you are not authorized"
raise KeyError(msg)
decision = ChecklistDecision.objects.get(uuid=decisionUuid)
- data['decision'] = ThinChecklistDecisionModelSerializer(decision, many=False).data
+ data['decision'] = ThinChecklistDecisionModelSerializer(
+ decision, many=False).data
decisionData = json.dumps(data, ensure_ascii=False)
return decisionData
diff --git a/django/engagementmanager/service/checklist_service.py b/django/engagementmanager/service/checklist_service.py
index 0df7edd..9132a3c 100644
--- a/django/engagementmanager/service/checklist_service.py
+++ b/django/engagementmanager/service/checklist_service.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -43,12 +43,16 @@ from engagementmanager.apps import bus_service
from engagementmanager.bus.messages.activity_event_message import \
ActivityEventMessage
from engagementmanager.git.git_manager import GitManager
-from engagementmanager.models import ChecklistTemplate, Checklist, Engagement, \
- ChecklistAuditLog, ChecklistDecision, ChecklistLineItem, IceUserProfile, VF, \
+from engagementmanager.models import ChecklistTemplate, \
+ Checklist, Engagement, \
+ ChecklistAuditLog, ChecklistDecision, ChecklistLineItem, \
+ IceUserProfile, VF, \
ChecklistSection, Role
from engagementmanager.serializers import ThinChecklistModelSerializer, \
- ThinChecklistAuditLogModelSerializer, ThinChecklistDecisionModelSerializer, \
- ThinPostChecklistResponseModelSerializer, ChecklistTemplateModelSerializer, \
+ ThinChecklistAuditLogModelSerializer, \
+ ThinChecklistDecisionModelSerializer, \
+ ThinPostChecklistResponseModelSerializer, \
+ ChecklistTemplateModelSerializer, \
ChecklistSectionModelSerializer, ChecklistLineItemModelSerializer
from engagementmanager.service.checklist_audit_log_service import \
addAuditLogToDecision, addAuditLogToChecklist
@@ -72,15 +76,19 @@ logger = LoggingServiceFactory.get_logger()
class CheckListSvc(BaseSvc):
+
def retreive_cl_files_for_engagment(self, eng_uuid):
vf_associated_files_list = []
- checklists_of_eng = Checklist.objects.filter(engagement__uuid=eng_uuid).exclude(
- state=CheckListState.archive.name).exclude(state=CheckListState.closed.name) # @UndefinedVariable
+ checklists_of_eng = Checklist.objects.filter(
+ engagement__uuid=eng_uuid).exclude(
+ state=CheckListState.archive.name).exclude(
+ state=CheckListState.closed.name)
for checklistObj in checklists_of_eng:
associated_files = json.loads(checklistObj.associated_files)
- vf_associated_files_list = vf_associated_files_list + associated_files
+ vf_associated_files_list = \
+ vf_associated_files_list + associated_files
return vf_associated_files_list
def getDataForCreateNewChecklist(self, user, eng_uuid):
@@ -95,12 +103,14 @@ class CheckListSvc(BaseSvc):
# Get all templates
data = self.getChecklistTemplates()
- data['checkListAssociatedFiles'] = self.gitManager.getRepoAssociatedFilesForUser(
+ data['checkListAssociatedFiles'] = \
+ self.gitManager.getRepoAssociatedFilesForUser(
eng_uuid)
return data
def getChecklistTemplates(self, templateUuid=None):
- """Return checklist template with nested sections and their nested line items"""
+ """Return checklist template with
+ nested sections and their nested line items"""
data = dict()
if not templateUuid:
checkListTemplates = ChecklistTemplate.objects.all()
@@ -109,11 +119,11 @@ class CheckListSvc(BaseSvc):
checkListTemplates, many=True).data
return data
cl_template = ChecklistTemplate.objects.get(uuid=templateUuid)
- if (cl_template != None):
+ if (cl_template is not None):
data = ChecklistTemplateModelSerializer(
cl_template, many=False).data
sections = ChecklistSection.objects.filter(template=cl_template)
- if (sections != None):
+ if (sections is not None):
section_list = []
for sec in sections:
section_data = dict()
@@ -121,7 +131,8 @@ class CheckListSvc(BaseSvc):
sec, many=False).data
lineItems = ChecklistLineItem.objects.filter(section=sec)
- section_data['lineItems'] = ChecklistLineItemModelSerializer(
+ section_data['lineItems'] = \
+ ChecklistLineItemModelSerializer(
lineItems, many=True).data
section_list.append(section_data)
@@ -134,8 +145,10 @@ class CheckListSvc(BaseSvc):
logger.debug(
"Creating a new section. Section name = " + section['name'])
- weight = int(ChecklistSection.objects.filter(template=templateObj).aggregate(
- max_weight=Max('weight'))['max_weight'] or 0) + 1
+ weight = int(
+ ChecklistSection.objects.filter(
+ template=templateObj).aggregate(
+ max_weight=Max('weight'))['max_weight'] or 0) + 1
newSection = ChecklistSection.objects.create(
name=section.get('name', None),
@@ -147,11 +160,14 @@ class CheckListSvc(BaseSvc):
return newSection
- def createNewLineItemForSection(self, newSectionObj, listItem, templateObj):
+ def createNewLineItemForSection(
+ self, newSectionObj, listItem, templateObj):
"""Create new line item for a given section and template """
- weight = int(ChecklistLineItem.objects.filter(section=newSectionObj).aggregate(
- max_weight=Max('weight'))['max_weight'] or 0) + 1
+ weight = int(
+ ChecklistLineItem.objects.filter(
+ section=newSectionObj).aggregate(
+ max_weight=Max('weight'))['max_weight'] or 0) + 1
ChecklistLineItem.objects.create(
name=listItem['name'],
@@ -165,22 +181,27 @@ class CheckListSvc(BaseSvc):
weight=weight)
def delete(self, dict_structure, query_set, entity, isDirty):
- """Generically find the xor result of the user input and the db data. Assumption: If entities exits in DB but not in user input they'll be deleted"""
- uuid_client = [dict['uuid'] for dict in dict_structure]
+ """Generically find the xor result of the user input and the
+ db data. Assumption: If entities exits in DB but not in
+ user input they'll be deleted"""
+ uuid_client = [dictio['uuid'] for dictio in dict_structure]
uuid_db = [record.uuid for record in query_set]
uuids_to_delete = set(uuid_db) - set(uuid_client)
for u_uid in uuids_to_delete:
entity.objects.filter(uuid=u_uid).delete()
- # Note: No need to delete ChecklistLineItem corresponding to this section
+ # Note: No need to delete ChecklistLineItem
+ # corresponding to this section
# since there is a CASCADE operation on delete section
isDirty[0] = True
def editIfChanged(self, entity, uidict, fieldList):
- """Generic function to check that set of fields are modified on a certain entity"""
+ """Generic function to check that set of fields
+ are modified on a certain entity"""
isChanged = False
for field in fieldList:
if (field in uidict):
- if (isChanged != True and entity.__dict__[field] == uidict[field]):
+ if (not isChanged and entity.__dict__[
+ field] == uidict[field]):
isChanged = False
else:
entity.__dict__[field] = uidict[field]
@@ -198,13 +219,17 @@ class CheckListSvc(BaseSvc):
isDirty[0] = True
def updateLineItemFields(self, lineitem, li, isDirty):
- if (self.editIfChanged(lineitem, li, ['name', 'description', 'validation_instructions', 'line_type'])):
+ if (self.editIfChanged(lineitem, li, [
+ 'name', 'description',
+ 'validation_instructions', 'line_type'])):
lineitem.save()
isDirty[0] = True
def editChecklistTemplate(self, checklistTemplate):
"""edit the template+section+line-item of user input"""
- NEW_ENTITY = "newEntity" # this is an indication on top of the provided json to create the entity
+ # this is an indication on top of the provided json to create the
+ # entity
+ NEW_ENTITY = "newEntity"
templateObj = None
isDirty = [False]
if ('uuid' in checklistTemplate):
@@ -239,7 +264,8 @@ class CheckListSvc(BaseSvc):
else: # line-item was only updated
lineitem = ChecklistLineItem.objects.get(
uuid=li['uuid'])
- self.updateLineItemFields(lineitem, li, isDirty)
+ self.updateLineItemFields(
+ lineitem, li, isDirty)
executor.submit(self.decline_all_template_checklists,
isDirty[0], templateObj, request_data_mgr.get_user())
@@ -250,26 +276,36 @@ class CheckListSvc(BaseSvc):
start = time.clock()
try:
- if (isDirty == True):
- states_to_exclude = [CheckListState.archive.name, CheckListState.closed.name,
- CheckListState.pending.name] # @UndefinedVariable
+ if (isDirty):
+ states_to_exclude = [
+ CheckListState.archive.name,
+ CheckListState.closed.name,
+ CheckListState.pending.name] # @UndefinedVariable
checklists = Checklist.objects.filter(
template=templateObj).exclude(state__in=states_to_exclude)
logger.debug("Number of checklists=" +
- str(len(checklists)))
+ str(len(checklists)))
for checklist in checklists:
request_data_mgr.set_cl_uuid(checklist.uuid)
request_data_mgr.set_eng_uuid(checklist.engagement.uuid)
set_state(
- True, # means that the checklist will be declined and a cloned one is created in PENDING status
+ # means that the checklist will be declined and a
+ # cloned one is created in PENDING status
+ True,
checklist.uuid,
isMoveToAutomation=True,
- description="""Checklist {name} was rejected since its template ({template}) was edited/deleted""".format(
- name=checklist.name, template=templateObj.name), # means the checklist will be triggered into automation cycle
+ description="""Checklist {name} was rejected """ +\
+ """since its template ({template}) was """ +\
+ """edited/deleted""".format(
+ name=checklist.name, template=templateObj.name),
+ # means the checklist will be triggered into automation
+ # cycle
)
except Exception as e:
- msg = """Something went wrong while trying to reject check-lists which its template was changed. template={template}. Error:""".format(
- template=templateObj.name)
+ msg = """Something went wrong while trying to reject """ +\
+ """check-lists which its template was changed. """ +\
+ """template={template}. Error:""".format(
+ template=templateObj.name)
logger.error(msg + " " + str(e))
raise e # Don't remove try-except, it supports async invocation
end = time.clock()
@@ -280,15 +316,17 @@ class CheckListSvc(BaseSvc):
data = dict()
checklist = None
- if user.role.name == Roles.admin.name or user.role.name == Roles.admin_ro.name: # @UndefinedVariable
+ if user.role.name == Roles.admin.name or \
+ user.role.name == Roles.admin_ro.name:
checklist = Checklist.objects.get(uuid=checklistUuid)
else:
checklist = Checklist.objects.get(
Q(uuid=checklistUuid), Q(creator=user) | Q(owner=user))
# CheckList
- if checklist.state == CheckListState.archive.name: # @UndefinedVariable
- msg = "got a request for a checklist which is an archived one, might have been due to an admin edit of a checklist template."
+ if checklist.state == CheckListState.archive.name:
+ msg = "got a request for a checklist which is an archived one, " +\
+ "might have been due to an admin edit of a checklist template."
logger.error(msg)
msg = "Requested checklist is archived, reloading checklists list"
raise VvpObjectNotAvailable(msg)
@@ -322,15 +360,18 @@ class CheckListSvc(BaseSvc):
section_key = str(section_weight) + "_" + section_uuid
if section_key not in checklistLineItems:
checklistLineItems[section_key] = {}
- checklistLineItems[section_key]['section'] = checklistDecision['lineitem']['section']
+ checklistLineItems[section_key]['section'] = \
+ checklistDecision['lineitem']['section']
checklistLineItems[section_key]['decisions'] = {}
checklistLineItems[section_key]['weight'] = section_weight
decision_uuid = checklistDecision['uuid']
line_item_weight = checklistDecision['lineitem']['weight']
decision_key = str(line_item_weight) + "_" + decision_uuid
- checklistLineItems[section_key]['decisions'][decision_key] = checklistDecision
- checklistLineItems[section_key]['decisions'][decision_key]['weight'] = line_item_weight
+ checklistLineItems[section_key]['decisions'][decision_key] = \
+ checklistDecision
+ checklistLineItems[section_key]['decisions'][
+ decision_key]['weight'] = line_item_weight
data['checklistDecisions'] = checklistLineItems
@@ -343,10 +384,16 @@ class CheckListSvc(BaseSvc):
if decisionAuditLogs.count() > 0:
serializedAuditLogsData = ThinChecklistAuditLogModelSerializer(
decisionAuditLogs, many=True).data
- data['decisionAuditLogs'][checklistDecision.uuid] = serializedAuditLogsData
+ data['decisionAuditLogs'][
+ checklistDecision.uuid] = serializedAuditLogsData
- logger.debug("get existing checklist has succeeded for checklist.uuid=" + str(checklist.uuid) +
- ", user.uuid=" + str(user.uuid) + ", checklist.uuid=" + str(checklistUuid))
+ logger.debug("get existing checklist has " +
+ "succeeded for checklist.uuid=" +
+ str(checklist.uuid) +
+ ", user.uuid=" +
+ str(user.uuid) +
+ ", checklist.uuid=" +
+ str(checklistUuid))
return data
@@ -354,7 +401,12 @@ class CheckListSvc(BaseSvc):
repo_files = self.gitManager.getRepoAssociatedFilesForUser(eng_uuid)
return repo_files
- def createOrUpdateChecklist(self, checkListName, checkListTemplateUuid, checkListAssociatedFiles, checklistUuid=None):
+ def createOrUpdateChecklist(
+ self,
+ checkListName,
+ checkListTemplateUuid,
+ checkListAssociatedFiles,
+ checklistUuid=None):
template = None
checklist = None
user = request_data_mgr.get_user()
@@ -362,19 +414,18 @@ class CheckListSvc(BaseSvc):
vf = VF.objects.get(engagement__uuid=eng_uuid)
- if not send_jenkins_job_and_gitlab_repo_exists(vf):
- msg = "Jenkins job or gitlab repo is still missing"
- logger.error(msg)
- msg = "Create or update checklist is not ready yet"
- raise Exception(msg)
-
# associated_files may be delivered in this format
- # [{"File": "bar"}, {"File": "baz"}, {"File": "foo"}, {"File": "quux"}]
+ # [{"File": "bar"}, {"File": "baz"},
+ # {"File": "foo"}, {"File": "quux"}]
# but we want to store it in this format
# ["bar", "baz", "foo", "quux"]
repo_files = self.gitManager.getRepoAssociatedFilesForUser(eng_uuid)
-# checklist_files_list = [f['File'] if isinstance(f, dict) else f for f in checkListAssociatedFiles]
+ if not send_jenkins_job_and_gitlab_repo_exists(vf):
+ msg = "Jenkins job or gitlab repo is still missing"
+ logger.error(msg)
+ msg = "Create or update checklist is not ready yet"
+ raise Exception(msg)
checklist_files_list = []
for file in checkListAssociatedFiles:
if isinstance(file, dict):
@@ -384,7 +435,7 @@ class CheckListSvc(BaseSvc):
for added_name in checklist_files_list:
if added_name not in repo_files:
logger.error("Update checklist has failed. " +
- added_name + " doesnt exist in repo")
+ added_name + " doesnt exist in repo")
msg = "Failed to create checklist, please select valid file"
raise ValueError(msg)
@@ -393,19 +444,21 @@ class CheckListSvc(BaseSvc):
engagement = Engagement.objects.get(uuid=eng_uuid)
template = ChecklistTemplate.objects.get(uuid=checkListTemplateUuid)
- if (checklistUuid != None): # Update Checklist
+ if (checklistUuid is not None): # Update Checklist
checklist = Checklist.objects.get(uuid=checklistUuid)
checklist.name = checkListName
checklist.associated_files = associated_files
checklist.template = template
checklist.save()
-
- if (associated_files != None and len(checklist_files_list) > 0):
+ if (associated_files and len(checklist_files_list) > 0):
set_state(
decline=True,
description="Checklist: " + checklist.name +
- "in Pending state will transition to Automation because it has associated files",
- isMoveToAutomation=True, # means the checklist will be triggered into automation cycle
+ "in Pending state will transition to \
+ Automation because it has associated files",
+ isMoveToAutomation=True,
+ # means the checklist will be triggered into automation
+ # cycle
checklist_uuid=checklist.uuid
)
else: # create ChcekList
@@ -416,35 +469,46 @@ class CheckListSvc(BaseSvc):
vf = None
vf = VF.objects.get(engagement=engagement)
- if (vf.git_repo_url == None):
+ if (vf.git_repo_url is None):
msg = "Can't create checklist since the attached VF (" + \
vf.name + ") doesn't contain git_repo_url"
logger.error(
"Update checklist has failed. " + logEncoding(msg))
raise ObjectDoesNotExist(msg)
- checklist = Checklist(name=checkListName, validation_cycle=1, associated_files=associated_files,
- state=CheckListState.pending.name, engagement=engagement, template=template, creator=user, owner=incharge_personal) # @UndefinedVariable
+ checklist = Checklist(
+ name=checkListName,
+ validation_cycle=1,
+ associated_files=associated_files,
+ state=CheckListState.pending.name,
+ engagement=engagement,
+ template=template,
+ creator=user,
+ owner=incharge_personal) # @UndefinedVariable
line_items_list = ChecklistLineItem.objects.filter(
template=template)
checklist.save()
for lineitem in line_items_list:
- new_decision = ChecklistDecision(checklist=checklist,
- template=template, lineitem=lineitem)
+ new_decision = ChecklistDecision(
+ checklist=checklist, template=template, lineitem=lineitem)
new_decision.save()
# When Checklist is created with files move it it automation
- if (associated_files != None and len(checklist_files_list) > 0):
+ if (associated_files and len(checklist_files_list) > 0):
set_state(
decline=False,
checklist_uuid=checklist.uuid,
description="Checklist: " + checklist.name +
- "in Pending state will transition to Automation because it has associated files",
- isMoveToAutomation=True # means the checklist will be triggered into automation cycle
+ "in Pending state will transition to \
+ Automation because it has associated files",
+ isMoveToAutomation=True
+ # means the checklist will be triggered into automation
+ # cycle
)
logger.debug(
- "Create/Update checklist has succeeded for checklist.uuid=" + str(checklist.uuid))
+ "Create/Update checklist has succeeded for checklist.uuid="
+ + str(checklist.uuid))
return ThinPostChecklistResponseModelSerializer(checklist).data
@@ -453,14 +517,26 @@ class CheckListSvc(BaseSvc):
checklist.delete()
logger.debug(
- "Delete checklist has succeeded for checklist.uuid=" + str(checklist_uuid))
-
- def setChecklistDecisionsFromValMgr(self, user, checklist_uuid, decisions, checklist_results_from_jenkins):
- checklist = Checklist.objects.get(uuid=checklist_uuid, owner=user,
- state=CheckListState.automation.name) # @UndefinedVariable
+ "Delete checklist has succeeded for checklist.uuid=" +
+ str(checklist_uuid))
+
+ def setChecklistDecisionsFromValMgr(
+ self,
+ user,
+ checklist_uuid,
+ decisions,
+ checklist_results_from_jenkins):
+ checklist = Checklist.objects.get(
+ uuid=checklist_uuid,
+ owner=user,
+ state=CheckListState.automation.name)
- logger.debug("setChecklistDecisionsFromValMgr() checklist_uuid=%r, len(decisions)=%d",
- checklist_uuid, len(decisions),)
+ logger.debug(
+ "setChecklistDecisionsFromValMgr() " +
+ "checklist_uuid=%r, len(decisions)=%d",
+ checklist_uuid,
+ len(decisions),
+ )
if ('error' in checklist_results_from_jenkins):
el_role = Role.objects.get(name=Roles.el.name)
@@ -469,23 +545,24 @@ class CheckListSvc(BaseSvc):
Q(role=el_role) | Q(role=admin_role))
activity_data = TestFinishedActivityData(
- el_admin_list, checklist.engagement, checklist_results_from_jenkins['error'])
+ el_admin_list, checklist.engagement,
+ checklist_results_from_jenkins['error'])
bus_service.send_message(ActivityEventMessage(activity_data))
- msg = "test_finished signal from Jenkins has arrived with error: {}".format(
- checklist_results_from_jenkins['error'])
+ msg = "test_finished signal from Jenkins has arrived with " +\
+ "error: {}".format(checklist_results_from_jenkins['error'])
logger.error(msg)
set_state(True, checklist_uuid, isMoveToAutomation=False,
description=checklist_results_from_jenkins['error'])
raise Exception(msg)
ChecklistLineItem.objects.filter(template=checklist.template).update(
- line_type=CheckListLineType.manual.name) # @UndefinedVariable
+ line_type=CheckListLineType.manual.name)
for decision in decisions:
lineitem_obj = ChecklistLineItem.objects.get(
uuid=decision['line_item_id'])
- lineitem_obj.line_type = CheckListLineType.auto.name # @UndefinedVariable
+ lineitem_obj.line_type = CheckListLineType.auto.name
lineitem_obj.save()
decision_obj = ChecklistDecision.objects.get(
@@ -493,16 +570,22 @@ class CheckListSvc(BaseSvc):
setDecision(decisionUuid=decision_obj.uuid,
user=user, value=decision['value'])
- if (decision['audit_log_text'] != '' and decision['audit_log_text'] != None):
- addAuditLogToDecision(decision=decision_obj,
- description=decision['audit_log_text'], user=user, category='')
+ if (decision['audit_log_text'] !=
+ '' and decision['audit_log_text'] is not None):
+ addAuditLogToDecision(
+ decision=decision_obj,
+ description=decision['audit_log_text'],
+ user=user,
+ category='')
desc = "The {} validation test suite has completed. The decisions " +\
- "based on the test results have successfully been set in the " +\
+ "based on the test results \
+ have successfully been set in the " +\
"checklist.".format(checklist.template.category)
addAuditLogToChecklist(checklist=checklist, description=desc,
user=user, category='')
- checklistData = ThinChecklistModelSerializer(checklist, many=False).data
+ checklistData = ThinChecklistModelSerializer(
+ checklist, many=False).data
set_state(False, checklist.uuid,
isMoveToAutomation=True, description="")
diff --git a/django/engagementmanager/service/checklist_state_service.py b/django/engagementmanager/service/checklist_state_service.py
index 1903c47..e20d673 100644
--- a/django/engagementmanager/service/checklist_state_service.py
+++ b/django/engagementmanager/service/checklist_state_service.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -60,7 +60,7 @@ logger = LoggingServiceFactory.get_logger()
def insert_to_recent_engagements(owner=None, action=None, vf=None):
- if vf == None:
+ if not vf:
# If VF wasn't supplied let's fetch it using checklist and
# checklist.engagement
checkListObj = Checklist.objects.get(
@@ -75,28 +75,36 @@ def insert_to_recent_engagements(owner=None, action=None, vf=None):
def description_creator(checklist, next_state, additional_comment=""):
if additional_comment:
- description = "The " + checklist.name + " checklist was changed to the " +\
+ description = "The " + checklist.name + " \
+ checklist was changed to the " +\
next_state.lower() + " state. " + "\n" +\
additional_comment
else:
- description = "The " + checklist.name + " checklist was changed to the " +\
+ description = "The " + checklist.name + \
+ " checklist was changed to the " +\
next_state.lower() + " state."
return description
'''
- If kwargs['isMoveToAutomation']==True than the CL will not be cloned but reverted to automation, else (False) will be cloned and returned in pending
+ If kwargs['isMoveToAutomation']==True than the CL will not be \
+ cloned but reverted to automation, else (False) will be cloned \
+ and returned in pending
'''
-def set_state(decline, checklist_uuid, isMoveToAutomation=True, description=None):
- logger.debug('set_state(decline=%r,checklist_uuid=%r,get_request_data_vars= %r)',
- decline, checklist_uuid, request_data_mgr.get_request_data_vars())
+def set_state(decline, checklist_uuid, isMoveToAutomation=True,
+ description=None):
+ logger.debug('set_state(decline=%r,checklist_uuid=%r,\
+ get_request_data_vars= %r)',
+ decline, checklist_uuid,
+ request_data_mgr.get_request_data_vars())
- if checklist_uuid != None: # was sent explicitly
+ if checklist_uuid:
request_data_mgr.set_cl_uuid(checklist_uuid)
- if any(x is None for x in [checklist_uuid, request_data_mgr.get_user(), description]):
+ if any(x is None for x in [checklist_uuid,
+ request_data_mgr.get_user(), description]):
msg = "checklist uuid or user or description is None"
logger.error(msg)
msg = "checklist state wasn't change due to bad parameters"
@@ -126,79 +134,97 @@ def set_state(decline, checklist_uuid, isMoveToAutomation=True, description=None
raise KeyError(msg)
# @UndefinedVariable
- if checklist.state == CheckListState.closed.name or checklist.state == CheckListState.archive.name:
- msg = "attempt to change state to the next one from 'closed'/'archive', no actions were made."
+ if checklist.state == CheckListState.closed.name or \
+ checklist.state == CheckListState.archive.name:
+ msg = "attempt to change state to the next one \
+ from 'closed'/'archive', no actions were made."
logger.error(msg)
- msg = "checklist's state is already closed/archive, can not move forward in states."
+ msg = "checklist's state is already closed/archive, \
+ can not move forward in states."
raise FileExistsError(msg)
- elif decline and checklist.state != CheckListState.pending.name: # @UndefinedVariable
+ elif decline and checklist.state != CheckListState.pending.name:
logger.debug(
- 'set_state: decline and not pending -< about to set the state to ARCHIVE and duplicate the checklist')
+ 'set_state: decline and not pending -< about to set the \
+ state to ARCHIVE and duplicate the checklist')
set_state_to_archive(isMoveToAutomation, description)
# @UndefinedVariable
- return check_sts(checklist, request_data_mgr.get_user(), CheckListState.archive.name, additional_comment)
+ return check_sts(checklist, request_data_mgr.get_user(),
+ CheckListState.archive.name, additional_comment)
elif checklist.state == CheckListState.pending.name: # @UndefinedVariable
logger.debug('set_state: pending to automation')
set_state_to_automation()
# @UndefinedVariable
- return check_sts(checklist, request_data_mgr.get_user(), CheckListState.automation.name, additional_comment)
+ return check_sts(checklist, request_data_mgr.get_user(),
+ CheckListState.automation.name, additional_comment)
# this case is when getting a signal from VM that jenkins has finished all
# tests
- elif checklist.state == CheckListState.automation.name: # @UndefinedVariable
+ elif checklist.state == CheckListState.automation.name:
logger.debug('set_state: automation to review')
set_state_to_review(checklist)
slack_client.send_notification_to_reviewer_when_automation_completes(
engagement_manual_id, vf_name, reviewer, checklist_name)
# @UndefinedVariable
- return check_sts(checklist, request_data_mgr.get_user(), CheckListState.review.name, additional_comment)
+ return check_sts(checklist, request_data_mgr.get_user(),
+ CheckListState.review.name, additional_comment)
- elif checklist.state == CheckListState.review.name: # @UndefinedVariable
+ elif checklist.state == CheckListState.review.name:
logger.debug('set_state: review to peer review')
set_state_to_peer_review()
- slack_client.send_notification_to_peer_reviewer_when_the_review_completes(
- engagement_manual_id, vf_name, reviewer, peer_reviewer, checklist_name)
+ slack_client.\
+ send_notification_to_peer_reviewer_when_the_review_completes(
+ engagement_manual_id, vf_name, reviewer, peer_reviewer,
+ checklist_name)
# @UndefinedVariable
- return check_sts(checklist, request_data_mgr.get_user(), CheckListState.peer_review.name, additional_comment)
+ return check_sts(checklist, request_data_mgr.get_user(),
+ CheckListState.peer_review.name, additional_comment)
- elif checklist.state == CheckListState.peer_review.name: # @UndefinedVariable
+ elif checklist.state == CheckListState.peer_review.name:
logger.debug('set_state: peer review to approval')
set_state_to_approval()
admins = IceUserProfile.objects.filter(role__name=Roles.admin.name)
- slack_client.send_notification_to_admins_when_the_peer_review_completes(
- engagement_manual_id, vf_name, reviewer, peer_reviewer, admins, checklist_name)
+ slack_client.\
+ send_notification_to_admins_when_the_peer_review_completes(
+ engagement_manual_id,
+ vf_name, reviewer, peer_reviewer, admins,
+ checklist_name)
# @UndefinedVariable
- return check_sts(checklist, request_data_mgr.get_user(), CheckListState.approval.name, additional_comment)
+ return check_sts(checklist, request_data_mgr.get_user(),
+ CheckListState.approval.name, additional_comment)
- elif checklist.state == CheckListState.approval.name: # @UndefinedVariable
+ elif checklist.state == CheckListState.approval.name:
logger.debug('set_state: approval to handoff')
set_state_to_handoff()
slack_client.send_notification_to_reviewer_when_approved(
engagement_manual_id, vf_name, reviewer, checklist_name)
# @UndefinedVariable
- return check_sts(checklist, request_data_mgr.get_user(), CheckListState.handoff.name, additional_comment)
+ return check_sts(checklist, request_data_mgr.get_user(),
+ CheckListState.handoff.name, additional_comment)
- elif checklist.state == CheckListState.handoff.name: # @UndefinedVariable
+ elif checklist.state == CheckListState.handoff.name:
logger.debug('set_state: handoff to closed')
set_state_to_closed()
admins = IceUserProfile.objects.filter(role__name=Roles.admin.name)
slack_client.send_notifications_when_closed(
- engagement_manual_id, vf_name, reviewer, peer_reviewer, admins, checklist_name)
+ engagement_manual_id, vf_name, reviewer, peer_reviewer,
+ admins, checklist_name)
# @UndefinedVariable
- return check_sts(checklist, request_data_mgr.get_user(), CheckListState.closed.name, additional_comment)
+ return check_sts(checklist, request_data_mgr.get_user(),
+ CheckListState.closed.name, additional_comment)
def duplicate_checklist_and_its_auditlogs(checklist, isMoveToAutomation):
- ''' Create the basic duplicated checklist object based on the original one '''
+ ''' Create the basic duplicated checklist
+ object based on the original one '''
newState = CheckListState.pending.name # @UndefinedVariable
checklistDupObject = Checklist.objects.create(
@@ -211,7 +237,8 @@ def duplicate_checklist_and_its_auditlogs(checklist, isMoveToAutomation):
owner=checklist.creator,
state=newState)
- ''' Fetch all original cl audit logs and attach it to the duplicated one '''
+ ''' Fetch all original cl audit logs and attach it to the \
+ duplicated one '''
audits = ChecklistAuditLog.objects.filter(checklist=checklist)
for item in audits:
audit = addAuditLogToChecklist(
@@ -219,37 +246,42 @@ def duplicate_checklist_and_its_auditlogs(checklist, isMoveToAutomation):
if not audit:
logger.error(
- "duplicate_checklist_and_its_auditlogs: Failed to create a duplicated audit log in the DB")
+ "duplicate_checklist_and_its_auditlogs: Failed to \
+ create a duplicated audit log in the DB")
msg = "checklist state wasn't change"
raise Exception(msg)
''' Fetch all original line items and attach it to the duplicated one '''
line_items_list = ChecklistLineItem.objects.filter(
template=checklist.template)
- # Implementation is based on space and performance aspect and not particularly one of them
- #(could have just change the internal object's cl field to the new object and reset their values)
for lineitem in line_items_list:
old_decisions = ChecklistDecision.objects.filter(
- lineitem=lineitem, checklist=checklist, template=checklist.template)
+ lineitem=lineitem, checklist=checklist,
+ template=checklist.template)
if len(old_decisions) == 0:
new_decision = ChecklistDecision.objects.create(
- checklist=checklistDupObject, template=checklistDupObject.template, lineitem=lineitem)
+ checklist=checklistDupObject,
+ template=checklistDupObject.template, lineitem=lineitem)
else:
for decision in old_decisions:
new_decision = ChecklistDecision.objects.create(
- checklist=checklistDupObject, template=checklist.template, lineitem=lineitem)
+ checklist=checklistDupObject,
+ template=checklist.template, lineitem=lineitem)
old_decision_auditlogs = ChecklistAuditLog.objects.filter(
decision=decision)
for audit in old_decision_auditlogs:
audit = ChecklistAuditLog.objects.create(
- decision=new_decision, description=audit.description, category='', creator=audit.creator)
-
- if isMoveToAutomation == True: # This is a scenario in which we send to VM cl_from_pending_to_automation_event
+ decision=new_decision, description=audit.description,
+ category='', creator=audit.creator)
+ # This is a scenario in which we send to VM
+ # cl_from_pending_to_automation_event
+ if isMoveToAutomation:
logger.debug("Cloned Checklist is triggered as to automation")
try:
set_state_to_automation(checklistDupObject)
except KeyError:
- # delete new checklist since we don't want duplicate checklist while
+ # delete new checklist since
+ # we don't want duplicate checklist while
# the other one is still not archived
checklistDupObject.delete()
@@ -258,9 +290,10 @@ def duplicate_checklist_and_its_auditlogs(checklist, isMoveToAutomation):
def check_sts(checklist, user, next_state, additional_comment):
description = description_creator(
- checklist, next_state, additional_comment=additional_comment) # @UndefinedVariable
+ checklist, next_state, additional_comment=additional_comment)
if not description:
- msg = "failed to set the state to the next one due to invalid parameters."
+ msg = "failed to set the state to the next one due to \
+ invalid parameters."
raise ValueError(msg)
addAuditLogToChecklist(checklist, description, user)
return checklist
@@ -271,22 +304,25 @@ def check_decision_meet_criterias(checkListObj, review_type):
return True
if review_type == 'review_value':
- invalid_decisions = ChecklistDecision.objects.filter(Q(checklist=checkListObj) &
- (
- Q(review_value=CheckListDecisionValue.na.name)
- | Q(review_value=CheckListDecisionValue.denied.name)
- )).count() # @UndefinedVariable
+ invalid_decisions = ChecklistDecision.objects.filter(
+ Q(checklist=checkListObj) &
+ (
+ Q(review_value=CheckListDecisionValue.na.name)
+ | Q(review_value=CheckListDecisionValue.denied.name)
+ )).count() # @UndefinedVariable
elif review_type == 'peer_review_value':
- invalid_decisions = ChecklistDecision.objects.filter(Q(checklist=checkListObj) &
- (
- Q(peer_review_value=CheckListDecisionValue.na.name) |
- Q(peer_review_value=CheckListDecisionValue.denied.name)
- )).count() # @UndefinedVariable
+ invalid_decisions = ChecklistDecision.objects.filter(
+ Q(checklist=checkListObj) &
+ (
+ Q(peer_review_value=CheckListDecisionValue.na.name) |
+ Q(peer_review_value=CheckListDecisionValue.denied.name)
+ )).count() # @UndefinedVariable
else:
return True
if invalid_decisions:
- msg = "checklist state wasn't change, not all decisions are approved / na"
+ msg = "checklist state wasn't change, \
+ not all decisions are approved / na"
raise MethodNotAllowed(msg)
@@ -305,22 +341,23 @@ def retrieve_checklist_object(cluuid):
"""
-This method is called when an EL / Peer Reviewer declines a CL or creates a Next step for them after declining a specific line item in the CL.
+This method is called when an EL / Peer Reviewer declines a CL or \
+creates a Next step for them after declining a specific line item in the CL.
"""
@auth(Permissions.set_checklist_decision, is_internal=True)
def set_state_to_archive(isMoveToAutomation=True, description=None):
checkListObj = retrieve_checklist_and_its_decisions(
- request_data_mgr.get_cl_uuid(), '') # @UndefinedVariable
+ request_data_mgr.get_cl_uuid(), '')
rejection_description = description_creator(
- checkListObj, CheckListState.archive.name, description) # @UndefinedVariable
+ checkListObj, CheckListState.archive.name, description)
addAuditLogToChecklist(
checkListObj, rejection_description, request_data_mgr.get_user())
checklistDupObject = duplicate_checklist_and_its_auditlogs(
checkListObj, isMoveToAutomation)
- checkListObj.state = CheckListState.archive.name # @UndefinedVariable
+ checkListObj.state = CheckListState.archive.name
checkListObj.owner = checkListObj.creator
checkListObj.update_time = timezone.now()
@@ -331,25 +368,29 @@ def set_state_to_archive(isMoveToAutomation=True, description=None):
def set_state_to_automation(checkListObj=None):
if checkListObj is None:
- checkListObj = retrieve_checklist_object(request_data_mgr.get_cl_uuid())
+ checkListObj = retrieve_checklist_object(
+ request_data_mgr.get_cl_uuid())
- if checkListObj.associated_files == [] or not checkListObj.associated_files:
+ if checkListObj.associated_files == [] or not \
+ checkListObj.associated_files:
logger.error(
- "set_state_to_automation failed: no files were found in the checkListObj.associated_file")
- msg = "checklist state wasn't change, please add files to the checklist in order to start Automation state"
+ "set_state_to_automation failed: no files were \
+ found in the checkListObj.associated_file")
+ msg = "checklist state wasn't change, please add files \
+ to the checklist in order to start Automation state"
raise KeyError(msg)
originalState = checkListObj.state
- checkListObj.state = CheckListState.automation.name # @UndefinedVariable
+ checkListObj.state = CheckListState.automation.name
checkListObj.update_time = timezone.now()
checkListObj.save()
- if originalState == CheckListState.pending.name: # @UndefinedVariable
+ if originalState == CheckListState.pending.name:
send_cl_from_pending_to_automation_event(checkListObj)
def set_state_to_review(checkListObj):
- checkListObj.state = CheckListState.review.name # @UndefinedVariable
+ checkListObj.state = CheckListState.review.name
checkListObj.update_time = timezone.now()
# set the owner to reviewer and update_or_insert_to_recent_engagements(...)
@@ -359,15 +400,17 @@ def set_state_to_review(checkListObj):
@auth(Permissions.el_review_checklist, is_internal=True)
def set_state_to_peer_review():
"""
- This method is called when EL approves a review and moves a CL to peer_review
+ This method is called when EL approves a review
+ and moves a CL to peer_review
"""
checkListObj = retrieve_checklist_and_its_decisions(
- request_data_mgr.get_cl_uuid(), 'review_value') # @UndefinedVariable
- checkListObj.state = CheckListState.peer_review.name # @UndefinedVariable
+ request_data_mgr.get_cl_uuid(), 'review_value')
+ checkListObj.state = CheckListState.peer_review.name
checkListObj.owner = checkListObj.engagement.peer_reviewer
insert_to_recent_engagements(
- owner=checkListObj.owner, action=RecentEngagementActionType.GOT_OWNERSHIP_OVER_ENGAGEMENT.name) # @UndefinedVariable
+ owner=checkListObj.owner,
+ action=RecentEngagementActionType.GOT_OWNERSHIP_OVER_ENGAGEMENT.name)
checkListObj.update_time = timezone.now()
@@ -377,17 +420,19 @@ def set_state_to_peer_review():
@auth(Permissions.peer_review_checklist, is_internal=True)
def set_state_to_approval():
"""
- This method is called when Peer Reviewer approves a review and moves a CL to approval state
+ This method is called when Peer Reviewer approves a
+ review and moves a CL to approval state
"""
checkListObj = retrieve_checklist_and_its_decisions(
- request_data_mgr.get_cl_uuid(), 'peer_review_value') # @UndefinedVariable
- checkListObj.state = CheckListState.approval.name # @UndefinedVariable
- admin_role = Role.objects.get(name=Roles.admin.name) # @UndefinedVariable
+ request_data_mgr.get_cl_uuid(), 'peer_review_value')
+ checkListObj.state = CheckListState.approval.name
+ admin_role = Role.objects.get(name=Roles.admin.name)
admin_list = IceUserProfile.objects.all().filter(
- role=admin_role) # @UndefinedVariable
+ role=admin_role)
if admin_list.count() < 1:
- logger.error("Failed to save the new state of the Checklist to the DB")
+ logger.error("Failed to save the new state \
+ of the Checklist to the DB")
msg = "checklist state wasn't change due to server error"
raise Exception(msg)
@@ -397,7 +442,8 @@ def set_state_to_approval():
checkListObj.update_time = timezone.now()
checkListObj.owner = admin
insert_to_recent_engagements(
- owner=checkListObj.owner, action=RecentEngagementActionType.GOT_OWNERSHIP_OVER_ENGAGEMENT.name) # @UndefinedVariable
+ owner=checkListObj.owner,
+ action=RecentEngagementActionType.GOT_OWNERSHIP_OVER_ENGAGEMENT.name)
checkListObj.save()
@@ -405,15 +451,17 @@ def set_state_to_approval():
@auth(Permissions.admin_approve_checklist)
def set_state_to_handoff():
"""
- This method is called when an admin approves a CL and moves it to a handoff state
+ This method is called when an admin approves
+ a CL and moves it to a handoff state
"""
checkListObj = retrieve_checklist_and_its_decisions(
request_data_mgr.get_cl_uuid(), '')
- checkListObj.state = CheckListState.handoff.name # @UndefinedVariable
+ checkListObj.state = CheckListState.handoff.name
checkListObj.owner = checkListObj.creator
insert_to_recent_engagements(
- owner=checkListObj.owner, action=RecentEngagementActionType.GOT_OWNERSHIP_OVER_ENGAGEMENT.name) # @UndefinedVariable
+ owner=checkListObj.owner,
+ action=RecentEngagementActionType.GOT_OWNERSHIP_OVER_ENGAGEMENT.name)
checkListObj.update_time = timezone.now()
@@ -423,11 +471,12 @@ def set_state_to_handoff():
@auth(Permissions.handoff_checklist)
def set_state_to_closed():
"""
- This method is called when an EL approves the handoff and moves the CL to closed state
+ This method is called when an EL approves the handoff
+ and moves the CL to closed state
"""
checkListObj = retrieve_checklist_and_its_decisions(
request_data_mgr.get_cl_uuid(), '')
- checkListObj.state = CheckListState.closed.name # @UndefinedVariable
+ checkListObj.state = CheckListState.closed.name
checkListObj.owner = checkListObj.creator
checkListObj.update_time = timezone.now()
update_eng_validation_details(checkListObj)
diff --git a/django/engagementmanager/service/cms/__init__.py b/django/engagementmanager/service/cms/__init__.py
index 1726c13..16f81cb 100644
--- a/django/engagementmanager/service/cms/__init__.py
+++ b/django/engagementmanager/service/cms/__init__.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/engagementmanager/service/cms/base_cms.py b/django/engagementmanager/service/cms/base_cms.py
index 8625d88..4f7cdd5 100644
--- a/django/engagementmanager/service/cms/base_cms.py
+++ b/django/engagementmanager/service/cms/base_cms.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/engagementmanager/service/cms/pages_service.py b/django/engagementmanager/service/cms/pages_service.py
index ab6fc96..9dbc44f 100644
--- a/django/engagementmanager/service/cms/pages_service.py
+++ b/django/engagementmanager/service/cms/pages_service.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -55,10 +55,12 @@ class CMSPagesService(BaseCms):
def getPage(self, id):
page = cms_client.get_page(id)
- # Handling static files address (like images) to get the full address of the CMS static file:
+ # Handling static files address (like images) to get the full
+ # address of the CMS static file:
if 'content' in page and page['content']:
cmsAddress = re.sub('\/api/$', '', cms_client.api_url)
- page['content'] = page['content'].replace('src="/static/media/', 'src="%s/static/media/' % cmsAddress)
+ page['content'] = page['content'].replace(
+ 'src="/static/media/', 'src="%s/static/media/' % cmsAddress)
return page
diff --git a/django/engagementmanager/service/cms/posts_service.py b/django/engagementmanager/service/cms/posts_service.py
index 720f766..3121202 100644
--- a/django/engagementmanager/service/cms/posts_service.py
+++ b/django/engagementmanager/service/cms/posts_service.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -51,8 +51,10 @@ class CMSPostsService(BaseCms):
from_last_days_param = ""
if (fromLastDays is not None and fromLastDays != ""):
- from_last_days_param = (datetime.now() - timedelta(days=int(fromLastDays))).strftime('%Y-%m-%d')
+ from_last_days_param = (datetime.now() - timedelta(
+ days=int(fromLastDays))).strftime('%Y-%m-%d')
- posts = cms_client.get_posts(offset, limit, category, from_last_days_param)
+ posts = cms_client.get_posts(
+ offset, limit, category, from_last_days_param)
return posts
diff --git a/django/engagementmanager/service/deploment_target_service.py b/django/engagementmanager/service/deploment_target_service.py
index 69c5e6f..d0ca514 100644
--- a/django/engagementmanager/service/deploment_target_service.py
+++ b/django/engagementmanager/service/deploment_target_service.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/engagementmanager/service/ecomp_service.py b/django/engagementmanager/service/ecomp_service.py
index d151ac0..190f613 100644
--- a/django/engagementmanager/service/ecomp_service.py
+++ b/django/engagementmanager/service/ecomp_service.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/engagementmanager/service/engagement_service.py b/django/engagementmanager/service/engagement_service.py
index 628bc57..48cc728 100644
--- a/django/engagementmanager/service/engagement_service.py
+++ b/django/engagementmanager/service/engagement_service.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -50,8 +50,8 @@ from engagementmanager.bus.messages.activity_event_message import \
from engagementmanager.slack_client.api import SlackClient
from engagementmanager.models import VF, Engagement, RecentEngagement, \
EngagementStatus, VFC, IceUserProfile, Checklist
-from engagementmanager.serializers import SuperThinIceUserProfileModelSerializer, \
- VFModelSerializerForSignal
+from engagementmanager.serializers import \
+ SuperThinIceUserProfileModelSerializer, VFModelSerializerForSignal
from engagementmanager.utils.constants import Roles, EngagementStage, \
ChecklistDefaultNames
from engagementmanager.utils.dates import parse_date
@@ -71,13 +71,15 @@ def update_engagement_status(user, description, eng_status_uuid, engagement):
status.description = description
status.update_time = timezone.now()
status.save()
- msg = "Status was successfully updated with a for engagement with uuid: " + \
+ msg = "Status was successfully updated " +\
+ "with a for engagement with uuid: " + \
engagement.uuid
logger.debug(msg)
except RecentEngagement.DoesNotExist:
EngagementStatus.objects.create(
creator=user, description=description)
- msg = "Status was successfully created with a for engagement with uuid: " + \
+ msg = "Status was successfully created with a " +\
+ "for engagement with uuid: " + \
engagement.uuid
logger.debug(msg)
@@ -85,18 +87,19 @@ def update_engagement_status(user, description, eng_status_uuid, engagement):
def insert_engagement_status(user, description, engagement):
created_eng = EngagementStatus.objects.create(
creator=user, description=description, engagement=engagement)
- msg = "Status was successfully created with a for engagement with uuid: " + \
- engagement.uuid
+ msg = "Status was successfully created \
+ with a for engagement with uuid: " + engagement.uuid
logger.debug(msg)
return created_eng
-def update_or_insert_to_recent_engagements(original_user_uuid, vf, action_type):
+def update_or_insert_to_recent_engagements(
+ original_user_uuid, vf, action_type):
try:
user_uuid = ''
try:
user_uuid = original_user_uuid.urn[9:]
- except:
+ except BaseException:
user_uuid = original_user_uuid
recent_engs = RecentEngagement.objects.filter(
user_uuid=user_uuid, vf=vf.uuid).order_by('-last_update')
@@ -109,23 +112,28 @@ def update_or_insert_to_recent_engagements(original_user_uuid, vf, action_type):
if (recent_eng.action_type != action_type):
recent_eng.action_type = action_type
recent_eng.last_update = timezone.now()
- msg = "Recent engagement table was successfully updated the row for a user with uuid: " + \
+ msg = "Recent engagement table was successfully updated " +\
+ "the row for a user with uuid: " + \
user_uuid + " and vf uuid: " + vf.uuid + \
"with a new action type: " + action_type
logger.debug(msg)
recent_eng.save()
else:
recent_eng.last_update = timezone.now()
- msg = "Recent engagement table was successfully updated the last_update row for a user with uuid: " + \
+ msg = "Recent engagement table was successfully updated " +\
+ "the last_update row for a user with uuid: " + \
user_uuid + " and vf uuid: " + vf.uuid
logger.debug(msg)
recent_eng.save()
RecentEngagement.objects.filter(
- last_update__lt=datetime.now() - timedelta(days=settings.RECENT_ENG_TTL)).delete()
+ last_update__lt=datetime.now() -
+ timedelta(
+ days=settings.RECENT_ENG_TTL)).delete()
except RecentEngagement.DoesNotExist:
RecentEngagement.objects.create(
user_uuid=user_uuid, vf=vf, action_type=action_type)
- msg = "Recent engagement table was successfully updated with a new row for a user with uuid: " + \
+ msg = "Recent engagement table was successfully updated " +\
+ "with a new row for a user with uuid: " + \
str(user_uuid) + " and vf uuid: " + str(vf.uuid)
logger.debug(msg)
@@ -135,13 +143,18 @@ def get_dashboard_expanded_engs(stage, keyword, offset, limit, user):
Expecting:
stage: one of the choices in the defined constants.
keyword: string
- offset: non-negative number to start the pull from them + 9 (Negative indexing (i.e. Entry.objects.all()[-1]) is not supported - according to Django 21.12.16).
+ offset: non-negative number to start the pull from them + 9
+ (Negative indexing (i.e. Entry.objects.all()[-1]) is not
+ supported - according to Django 21.12.16).
user: user object of the requesting client.
Result:
Query-set of engs that match the parameters provided (10 objects).
"""
- engStageList = [EngagementStage.Intake.name, EngagementStage.Active.name,
- EngagementStage.Validated.name, EngagementStage.Completed.name] # @UndefinedVariable
+ engStageList = [
+ EngagementStage.Intake.name,
+ EngagementStage.Active.name,
+ EngagementStage.Validated.name,
+ EngagementStage.Completed.name] # @UndefinedVariable
q_object = Q()
q_vfc_object = Q()
@@ -160,14 +173,16 @@ def get_dashboard_expanded_engs(stage, keyword, offset, limit, user):
q_vfc_object &= Q(vf__engagement__engagement_stage=stage)
# @UndefinedVariable
- if (user.role.name != Roles.admin.name and user.role.name != Roles.admin_ro.name):
+ if (user.role.name != Roles.admin.name and
+ user.role.name != Roles.admin_ro.name):
q_object &= Q(engagement__engagement_team__uuid=user.uuid)
q_vfc_object &= Q(vf__engagement__engagement_team__uuid=user.uuid)
vf_list_uuids = VF.objects.filter(q_object).values_list(
'uuid', flat=True).order_by('engagement__target_completion_date')
vfc_vflist_uuids = VFC.objects.filter(q_vfc_object).values_list(
- 'vf__uuid', flat=True).order_by('vf__engagement__target_completion_date')
+ 'vf__uuid', flat=True).order_by(
+ 'vf__engagement__target_completion_date')
vf_list_uuids = OrderedSet(vf_list_uuids)
for current_vf in OrderedSet(vfc_vflist_uuids):
@@ -175,33 +190,37 @@ def get_dashboard_expanded_engs(stage, keyword, offset, limit, user):
num_of_objects = len(vf_list_uuids)
vf_final_array = []
- vf_list = VF.objects.filter(uuid__in=vf_list_uuids)\
- .annotate(vf__name=F('name'), vendor__name=F('vendor__name'),
- )\
- .values(
- 'vf__name',
- 'version',
- 'deployment_target__version',
- 'engagement__peer_reviewer__uuid',
- 'ecomp_release__name',
- 'engagement__engagement_stage',
- 'engagement__engagement_manual_id',
- 'engagement__uuid',
- 'engagement__heat_validated_time',
- 'engagement__image_scan_time',
- 'engagement__aic_instantiation_time',
- 'engagement__asdc_onboarding_time',
- 'engagement__target_completion_date',
- 'engagement__progress',
- 'target_lab_entry_date',
- 'engagement__started_state_time',
- 'vendor__name',
- 'engagement__validated_time',
- 'engagement__completed_time',
- 'uuid'
- )\
- .annotate(vf_uuid_count=Count('uuid', distinct=True))\
- .order_by('engagement__target_completion_date')[int(offset):int(offset) + limit]
+ vf_list = VF.objects.filter(
+ uuid__in=vf_list_uuids) .annotate(
+ vf__name=F('name'),
+ vendor__name=F('vendor__name'),
+ ) .values(
+ 'vf__name',
+ 'version',
+ 'deployment_target__version',
+ 'engagement__peer_reviewer__uuid',
+ 'ecomp_release__name',
+ 'engagement__engagement_stage',
+ 'engagement__engagement_manual_id',
+ 'engagement__uuid',
+ 'engagement__heat_validated_time',
+ 'engagement__image_scan_time',
+ 'engagement__aic_instantiation_time',
+ 'engagement__asdc_onboarding_time',
+ 'engagement__target_completion_date',
+ 'engagement__progress',
+ 'target_lab_entry_date',
+ 'engagement__started_state_time',
+ 'vendor__name',
+ 'engagement__validated_time',
+ 'engagement__completed_time',
+ 'uuid') .annotate(
+ vf_uuid_count=Count(
+ 'uuid',
+ distinct=True)) .order_by(
+ 'engagement__target_completion_date')[
+ int(offset):int(offset) +
+ limit]
for current_vf in vf_list:
eng = Engagement.objects.get(uuid=current_vf['engagement__uuid'])
starred_users = eng.starred_engagement.all()
@@ -257,7 +276,8 @@ def get_expanded_engs_for_export(stage, keyword, user):
def is_eng_stage_eql_to_requested_one(engagement, requested_stage):
if engagement.engagement_stage == requested_stage:
- msg = "An attempt to change the Engagement's stage (uuid: " + engagement.uuid + \
+ msg = "An attempt to change the Engagement's stage (uuid: " + \
+ engagement.uuid + \
") to the same stage it is current in(" + \
engagement.engagement_stage + ") was made."
logger.debug(msg)
@@ -275,6 +295,8 @@ def set_engagement_stage(eng_uuid, stage):
engagement.engagement_stage = stage
engagement.intake_time = timezone.now()
engagement.save()
+ logger.debug("Engagement's stage was modified in DB to: %s" % stage)
+ logger.debug("firing an event to gitlab")
vm_client.fire_event_in_bg('send_provision_new_vf_event', vfObj)
msg = send_notifications_and_create_activity_after_eng_stage_update(
engagement)
@@ -286,22 +308,27 @@ def send_notifications_and_create_activity_after_eng_stage_update(engagement):
res = get_engagement_manual_id_and_vf_name(engagement)
slack_client = SlackClient()
slack_client.update_for_change_of_the_engagement_stage(
- res['engagement_manual_id'], res['vf_name'], engagement.engagement_stage)
+ res['engagement_manual_id'], res['vf_name'],
+ engagement.engagement_stage)
- activity_data = ChangeEngagementStageActivityData(VF.objects.get(engagement=engagement), engagement.engagement_stage,
- engagement)
+ activity_data = ChangeEngagementStageActivityData(VF.objects.get(
+ engagement=engagement), engagement.engagement_stage, engagement)
from engagementmanager.apps import bus_service
bus_service.send_message(ActivityEventMessage(activity_data))
- logger.debug("Engagement's stage (eng_uuid: " + engagement.uuid + ") was successfully changed to: "
- + engagement.engagement_stage)
+ logger.debug(
+ "Engagement's stage (eng_uuid: " +
+ engagement.uuid +
+ ") was successfully changed to: " +
+ engagement.engagement_stage)
return "OK"
def set_progress_for_engagement(progress=None):
prog = int(progress)
if prog < 0 or prog > 100:
- msg = 'set_progress_for_engagement failed: Progress value is invalid (out of bounds). Should be 0-100'
+ msg = 'set_progress_for_engagement failed: Progress ' +\
+ 'value is invalid (out of bounds). Should be 0-100'
logger.debug(msg)
raise ValueError(msg)
else:
@@ -311,29 +338,35 @@ def set_progress_for_engagement(progress=None):
def vf_retreiver(user, star=False, recent=False, eng_uuid=""):
- engStageList = [EngagementStage.Intake.name, EngagementStage.Active.name,
- EngagementStage.Validated.name, EngagementStage.Completed.name] # @UndefinedVariable
+ engStageList = [
+ EngagementStage.Intake.name,
+ EngagementStage.Active.name,
+ EngagementStage.Validated.name,
+ EngagementStage.Completed.name]
# @UndefinedVariable
- if (user.role.name == Roles.admin.name or user.role.name == Roles.admin_ro.name):
+ if (user.role.name == Roles.admin.name or
+ user.role.name == Roles.admin_ro.name):
if star:
- vf_list = VF.objects.filter(engagement__engagement_stage__in=engStageList)\
- .filter(engagement__starred_engagement__uuid=user.uuid).distinct().order_by('engagement__engagement_manual_id')\
- .values(
- 'uuid',
- 'name',
- 'is_service_provider_internal',
- 'engagement__creator__uuid',
- 'engagement__engagement_manual_id',
- 'engagement__peer_reviewer__uuid',
- 'engagement__peer_reviewer__email',
- 'engagement__reviewer__uuid',
- 'engagement__reviewer__email',
- 'engagement__uuid'
- )
+ vf_list = VF.objects.filter(
+ engagement__engagement_stage__in=engStageList) .filter(
+ engagement__starred_engagement__uuid=user.uuid).\
+ distinct().order_by(
+ 'engagement__engagement_manual_id') .values(
+ 'uuid',
+ 'name',
+ 'is_service_provider_internal',
+ 'engagement__creator__uuid',
+ 'engagement__engagement_manual_id',
+ 'engagement__peer_reviewer__uuid',
+ 'engagement__peer_reviewer__email',
+ 'engagement__reviewer__uuid',
+ 'engagement__reviewer__email',
+ 'engagement__uuid')
for vf in vf_list:
red_dot_activity = RecentEngagement.objects.filter(
- vf=vf['uuid']).values('action_type').order_by('-last_update')[:1]
+ vf=vf['uuid']).values(
+ 'action_type').order_by('-last_update')[:1]
if (red_dot_activity.count() > 0):
vf['action_type'] = red_dot_activity[0]['action_type']
else:
@@ -342,9 +375,10 @@ def vf_retreiver(user, star=False, recent=False, eng_uuid=""):
return vf_list
elif recent:
- recent = RecentEngagement.objects.filter(vf__engagement__engagement_stage__in=engStageList)\
- .filter(user_uuid=user.uuid).distinct().order_by('-last_update')\
- .values(
+ recent = RecentEngagement.objects.filter(
+ vf__engagement__engagement_stage__in=engStageList) .filter(
+ user_uuid=user.uuid).distinct().order_by(
+ '-last_update') .values(
'vf__uuid',
'vf__name',
'vf__is_service_provider_internal',
@@ -356,29 +390,31 @@ def vf_retreiver(user, star=False, recent=False, eng_uuid=""):
'vf__engagement__reviewer__email',
'vf__engagement__uuid',
'action_type',
- 'last_update'
- )[:20]
+ 'last_update')[
+ :20]
return recent
else:
if eng_uuid != "":
- vf_list = VF.objects.filter(engagement__engagement_stage__in=engStageList)\
- .filter(engagement__uuid=eng_uuid).distinct().order_by('engagement__engagement_manual_id')\
- .values(
- 'uuid',
- 'name',
- 'is_service_provider_internal',
- 'engagement__creator__uuid',
- 'engagement__engagement_manual_id',
- 'engagement__peer_reviewer__uuid',
- 'engagement__peer_reviewer__email',
- 'engagement__reviewer__uuid',
- 'engagement__reviewer__email',
- 'engagement__uuid'
- )
+ vf_list = VF.objects.filter(
+ engagement__engagement_stage__in=engStageList) .filter(
+ engagement__uuid=eng_uuid).distinct().order_by(
+ 'engagement__engagement_manual_id') .values(
+ 'uuid',
+ 'name',
+ 'is_service_provider_internal',
+ 'engagement__creator__uuid',
+ 'engagement__engagement_manual_id',
+ 'engagement__peer_reviewer__uuid',
+ 'engagement__peer_reviewer__email',
+ 'engagement__reviewer__uuid',
+ 'engagement__reviewer__email',
+ 'engagement__uuid')
else:
- vf_list = VF.objects.filter(engagement__engagement_stage__in=engStageList)\
- .filter().distinct().order_by('engagement__engagement_manual_id')\
+ vf_list = VF.objects.filter(
+ engagement__engagement_stage__in=engStageList)\
+ .filter().distinct().order_by(
+ 'engagement__engagement_manual_id')\
.values(
'uuid',
'name',
@@ -396,8 +432,15 @@ def vf_retreiver(user, star=False, recent=False, eng_uuid=""):
else:
if star:
if eng_uuid != "":
- vf_list = VF.objects.filter(engagement__engagement_stage__in=engStageList)\
- .filter(Q(engagement__uuid=eng_uuid, engagement__engagement_team__uuid=user.uuid, engagement__starred_engagement__uuid=user.uuid) | Q(engagement__uuid=eng_uuid, engagement__peer_reviewer=user, engagement__starred_engagement__uuid=user.uuid))\
+ vf_list = VF.objects.filter(
+ engagement__engagement_stage__in=engStageList) .filter(
+ Q(
+ engagement__uuid=eng_uuid,
+ engagement__engagement_team__uuid=user.uuid,
+ engagement__starred_engagement__uuid=user.uuid) | Q(
+ engagement__uuid=eng_uuid,
+ engagement__peer_reviewer=user,
+ engagement__starred_engagement__uuid=user.uuid)) \
.values(
'uuid',
'name',
@@ -408,12 +451,17 @@ def vf_retreiver(user, star=False, recent=False, eng_uuid=""):
'engagement__peer_reviewer__email',
'engagement__reviewer__uuid',
'engagement__reviewer__email',
- 'engagement__uuid'
- )
+ 'engagement__uuid')
else:
- vf_list = VF.objects.filter(engagement__engagement_stage__in=engStageList)\
- .filter(Q(engagement__engagement_team__uuid=user.uuid, engagement__starred_engagement__uuid=user.uuid) | Q(engagement__peer_reviewer=user, engagement__starred_engagement__uuid=user.uuid)).distinct().order_by('engagement__engagement_manual_id')\
- .values(
+ vf_list = VF.objects.filter(
+ engagement__engagement_stage__in=engStageList) .filter(
+ Q(
+ engagement__engagement_team__uuid=user.uuid,
+ engagement__starred_engagement__uuid=user.uuid) | Q(
+ engagement__peer_reviewer=user,
+ engagement__starred_engagement__uuid=user.uuid)).\
+ distinct().order_by(
+ 'engagement__engagement_manual_id') .values(
'uuid',
'name',
'is_service_provider_internal',
@@ -423,11 +471,11 @@ def vf_retreiver(user, star=False, recent=False, eng_uuid=""):
'engagement__peer_reviewer__email',
'engagement__reviewer__uuid',
'engagement__reviewer__email',
- 'engagement__uuid'
- )
+ 'engagement__uuid')
for vf in vf_list:
red_dot_activity = RecentEngagement.objects.filter(
- vf=vf['uuid']).values('action_type').order_by('-last_update')[:1]
+ vf=vf['uuid']).values(
+ 'action_type').order_by('-last_update')[:1]
if (red_dot_activity.count() > 0):
vf['action_type'] = red_dot_activity[0]['action_type']
else:
@@ -436,28 +484,38 @@ def vf_retreiver(user, star=False, recent=False, eng_uuid=""):
return vf_list
elif recent:
- recent = RecentEngagement.objects.filter(vf__engagement__engagement_stage__in=engStageList)\
- .filter(Q(user_uuid=user.uuid, vf__engagement__engagement_team__uuid=user.uuid) | Q(user_uuid=user.uuid, vf__engagement__peer_reviewer=user)).distinct().order_by('-last_update')\
- .values(
- 'vf__uuid',
- 'vf__name',
- 'vf__is_service_provider_internal',
- 'vf__engagement__creator__uuid',
- 'vf__engagement__engagement_manual_id',
- 'vf__engagement__peer_reviewer__uuid',
- 'vf__engagement__peer_reviewer__email',
- 'vf__engagement__reviewer__uuid',
- 'vf__engagement__reviewer__email',
- 'vf__engagement__uuid',
- 'action_type',
- 'last_update'
- )[:20]
+ recent = RecentEngagement.objects.filter(
+ vf__engagement__engagement_stage__in=engStageList) .filter(
+ Q(
+ user_uuid=user.uuid,
+ vf__engagement__engagement_team__uuid=user.uuid) | Q(
+ user_uuid=user.uuid,
+ vf__engagement__peer_reviewer=user)).distinct().order_by(
+ '-last_update') .values(
+ 'vf__uuid',
+ 'vf__name',
+ 'vf__is_service_provider_internal',
+ 'vf__engagement__creator__uuid',
+ 'vf__engagement__engagement_manual_id',
+ 'vf__engagement__peer_reviewer__uuid',
+ 'vf__engagement__peer_reviewer__email',
+ 'vf__engagement__reviewer__uuid',
+ 'vf__engagement__reviewer__email',
+ 'vf__engagement__uuid',
+ 'action_type',
+ 'last_update')[
+ :20]
return recent
else:
if eng_uuid != "":
- vf_list = VF.objects.filter(engagement__engagement_stage__in=engStageList)\
- .filter(Q(engagement__uuid=eng_uuid, engagement__engagement_team__uuid=user.uuid) | Q(engagement__uuid=eng_uuid, engagement__peer_reviewer=user)).distinct().order_by('engagement__engagement_manual_id')\
- .values(
+ vf_list = VF.objects.filter(
+ engagement__engagement_stage__in=engStageList) .filter(
+ Q(
+ engagement__uuid=eng_uuid,
+ engagement__engagement_team__uuid=user.uuid) | Q(
+ engagement__uuid=eng_uuid,
+ engagement__peer_reviewer=user)).distinct().order_by(
+ 'engagement__engagement_manual_id') .values(
'uuid',
'name',
'is_service_provider_internal',
@@ -467,12 +525,14 @@ def vf_retreiver(user, star=False, recent=False, eng_uuid=""):
'engagement__peer_reviewer__email',
'engagement__reviewer__uuid',
'engagement__reviewer__email',
- 'engagement__uuid'
- )
+ 'engagement__uuid')
else:
- vf_list = VF.objects.filter(engagement__engagement_stage__in=engStageList)\
- .filter(Q(engagement__engagement_team__uuid=user.uuid) | Q(engagement__peer_reviewer=user)).distinct().order_by('engagement__engagement_manual_id')\
- .values(
+ vf_list = VF.objects.filter(
+ engagement__engagement_stage__in=engStageList) .filter(
+ Q(
+ engagement__engagement_team__uuid=user.uuid) | Q(
+ engagement__peer_reviewer=user)).distinct().order_by(
+ 'engagement__engagement_manual_id') .values(
'uuid',
'name',
'is_service_provider_internal',
@@ -482,8 +542,7 @@ def vf_retreiver(user, star=False, recent=False, eng_uuid=""):
'engagement__peer_reviewer__email',
'engagement__reviewer__uuid',
'engagement__reviewer__email',
- 'engagement__uuid'
- )
+ 'engagement__uuid')
return vf_list
@@ -557,7 +616,11 @@ def set_engagement_reviewer(eng_uuid, reviewer_uuid):
res = get_engagement_manual_id_and_vf_name(engagement)
slack_client = SlackClient()
slack_client.update_reviewer_or_peer_reviewer(
- res['engagement_manual_id'], res['vf_name'], reviewer, old_reviewer, 'reviewer')
+ res['engagement_manual_id'],
+ res['vf_name'],
+ reviewer,
+ old_reviewer,
+ 'reviewer')
result = reviewer
else:
@@ -588,7 +651,11 @@ def set_engagement_peer_reviewer(eng_uuid, peer_reviewer_uuid):
res = get_engagement_manual_id_and_vf_name(engagement)
slack_client = SlackClient()
slack_client.update_reviewer_or_peer_reviewer(
- res['engagement_manual_id'], res['vf_name'], peer_reviewer, old_peer_reviewer, 'peer reviewer')
+ res['engagement_manual_id'],
+ res['vf_name'],
+ peer_reviewer,
+ old_peer_reviewer,
+ 'peer reviewer')
result = peer_reviewer
else:
@@ -605,7 +672,8 @@ def switch_engagement_reviewers(eng_uuid, reviewer_uuid, peer_reviewer_uuid):
old_reviewer = engagement.reviewer
checklist_owners = Checklist.objects.filter(
- Q(engagement__uuid=eng_uuid) & (Q(owner=old_reviewer) | Q(owner=old_peer_reviewer)))
+ Q(engagement__uuid=eng_uuid) & (
+ Q(owner=old_reviewer) | Q(owner=old_peer_reviewer)))
for checklist in checklist_owners:
if checklist.owner == reviewer:
@@ -622,9 +690,17 @@ def switch_engagement_reviewers(eng_uuid, reviewer_uuid, peer_reviewer_uuid):
res = get_engagement_manual_id_and_vf_name(engagement)
slack_client = SlackClient()
slack_client.update_reviewer_or_peer_reviewer(
- res['engagement_manual_id'], res['vf_name'], reviewer, old_reviewer, 'reviewer')
+ res['engagement_manual_id'],
+ res['vf_name'],
+ reviewer,
+ old_reviewer,
+ 'reviewer')
slack_client.update_reviewer_or_peer_reviewer(
- res['engagement_manual_id'], res['vf_name'], peer_reviewer, old_peer_reviewer, 'peer reviewer')
+ res['engagement_manual_id'],
+ res['vf_name'],
+ peer_reviewer,
+ old_peer_reviewer,
+ 'peer reviewer')
return {"reviewer": reviewer_uuid, "peerreviewer": peer_reviewer_uuid}
@@ -666,24 +742,32 @@ def update_engagement(engagement_dict):
def remove_user_from_engagement_team(eng_uuid, user, removed_user_uuid):
msg = "User was successfully removed from the engagement team"
# @UndefinedVariable
- if ((removed_user_uuid == user.uuid) or (removed_user_uuid != user.uuid and (user.role.name == Roles.admin.name or user.role.name == Roles.el.name))):
+ if ((removed_user_uuid == user.uuid) or
+ (removed_user_uuid != user.uuid and (
+ user.role.name == Roles.admin.name or
+ user.role.name == Roles.el.name))):
engagement = Engagement.objects.get(uuid=eng_uuid)
requested_user = IceUserProfile.objects.get(uuid=removed_user_uuid)
- if (engagement.peer_reviewer == requested_user or engagement.reviewer == requested_user
- or engagement.creator == requested_user or engagement.contact_user == requested_user):
- msg = "Reviewer/Peer Reviewer/Creator/Contact user cannot be removed from engagement team."
+ if (engagement.peer_reviewer == requested_user or
+ engagement.reviewer == requested_user
+ or engagement.creator == requested_user or
+ engagement.contact_user == requested_user):
+ msg = "Reviewer/Peer Reviewer/Creator/Contact " +\
+ "user cannot be removed from engagement team."
logger.error(msg)
raise PermissionDenied
engagement.engagement_team.remove(requested_user)
engagement.save()
logger.debug(msg)
else:
- msg = "removed user is not equal to conducting user or user is not an admin."
+ msg = "removed user is not equal to conducting " +\
+ "user or user is not an admin."
logger.error(msg)
raise PermissionDenied
def update_eng_validation_details(cl):
setattr(cl.engagement,
- ChecklistDefaultNames.VALIDATION_DATE_ARRAY[cl.name], timezone.now())
+ ChecklistDefaultNames.VALIDATION_DATE_ARRAY[cl.name],
+ timezone.now())
cl.engagement.save()
diff --git a/django/engagementmanager/service/invite_service.py b/django/engagementmanager/service/invite_service.py
index c4780fd..b22a27d 100644
--- a/django/engagementmanager/service/invite_service.py
+++ b/django/engagementmanager/service/invite_service.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -52,36 +52,46 @@ from engagementmanager.service.logging_service import LoggingServiceFactory
logger = LoggingServiceFactory.get_logger()
-def enforce_invitation_throttling(eng_uuid, invited_email, inviterUser, invitedUser):
+def enforce_invitation_throttling(eng_uuid, invited_email,
+ inviterUser, invitedUser):
assert eng_uuid is not None
assert invited_email is not None
- invitation = Invitation.objects.filter(engagement_uuid=eng_uuid, email=invited_email)
+ invitation = Invitation.objects.filter(
+ engagement_uuid=eng_uuid, email=invited_email)
if len(invitation) > 0:
- logger.warn("Oops, looks like an invitation with following details already exists: " + str(invitation))
+ logger.warn(
+ "Oops, looks like an invitation with " +
+ "following details already exists: "
+ + str(invitation))
return False
- if ((invitedUser != None and invitedUser.role.name != Roles.admin.name and
- invitedUser.role.name != Roles.el.name) or invitedUser == None):
- numOfInvitationinLast24H = Invitation.objects.filter(email=invited_email,
- create_time__gte=datetime.now() - timedelta(
- hours=24)).count()
+ if (not invitedUser or (
+ not invitedUser and invitedUser.role.name !=
+ Roles.admin.name and invitedUser.role.name != Roles.el.name)):
+ numOfInvitationinLast24H = Invitation.objects.filter(
+ email=invited_email,
+ create_time__gte=datetime.now() - timedelta(
+ hours=24)).count()
if numOfInvitationinLast24H >= 5:
logger.warn(
- "Oops, looks like invited email (" + invited_email + ") which isn't EL nor admin has reached its "
- "max invitations (5) in the last 24 hours")
+ "Oops, looks like invited email (" + invited_email +
+ ") which isn't EL nor admin has reached its "
+ "max invitations (5) in the last 24 hours")
return False
- if ((invitedUser != None and invitedUser.role.name == Roles.standard_user.name) or
- (invitedUser != None and invitedUser.role.name == Roles.admin_ro.name) or
- invitedUser == None):
- numOfInvitationinLast24H = Invitation.objects.filter(invited_by_user_uuid=inviterUser.uuid,
- create_time__gte=datetime.now() - timedelta(
- hours=24)).count()
+ if ((invitedUser and invitedUser.role.name == Roles.standard_user.name) or
+ (invitedUser and invitedUser.role.name == Roles.admin_ro.name) or
+ invitedUser is None):
+ numOfInvitationinLast24H = Invitation.objects.filter(
+ invited_by_user_uuid=inviterUser.uuid,
+ create_time__gte=datetime.now() - timedelta(
+ hours=24)).count()
if numOfInvitationinLast24H >= 25:
logger.warn(
"Oops, looks like a standard-user/admin-readonly inviter "
- "(" + inviterUser.email + ") has reached its max invitations (25) in the last 24 hours")
+ "(" + inviterUser.email + ") has reached its max invitations" +
+ "(25) in the last 24 hours")
return False
return True
@@ -92,27 +102,35 @@ def generateInviteMail(data, inviterUser, invitedUser, is_contact_user):
data['vf_name'] = vf.name
else:
data['vf_name'] = "-"
- logger.error("Couldn't fetch VF by engagement uuid=" + logEncoding(data['eng_uuid']))
+ logger.error("Couldn't fetch VF by engagement uuid=" +
+ logEncoding(data['eng_uuid']))
body = get_template("{invite_template_dir}invite_mail_body.html".format(
invite_template_dir=Constants.invite_template_dir))
- subject = get_template("{invite_template_dir}invite_mail_subject.html".format(
- invite_template_dir=Constants.invite_template_dir))
+ subject = get_template(
+ "{invite_template_dir}invite_mail_subject.html".format(
+ invite_template_dir=Constants.invite_template_dir))
data['dashboard_link'] = str(settings.DOMAIN) + "/#/dashboard/"
- invitation = Invitation.objects.create(engagement_uuid=data['eng_uuid'],
- invited_by_user_uuid=inviterUser.uuid, email=data['email'],
- invitation_token=uuid4())
+ invitation = Invitation.objects.create(
+ engagement_uuid=data['eng_uuid'],
+ invited_by_user_uuid=inviterUser.uuid, email=data['email'],
+ invitation_token=uuid4())
if invitedUser is not None:
- data['invite_link'] = str(settings.DOMAIN) + "/#/login?invitation=" + str(invitation.invitation_token)
- data['instruction'] = "To accept this invitation, please click this link:"
- logger.debug("Invited Contact with email " + data['email'] + "already exist in the DB. Sending them an email "
- "with link to login page. link=" + data[
+ data['invite_link'] = str(
+ settings.DOMAIN) + "/#/login?invitation="\
+ + str(invitation.invitation_token)
+ data['instruction'] = "To accept this invitation, \
+ please click this link:"
+ logger.debug("Invited Contact with email " + data['email'] +
+ "already exist in the DB. Sending them an email "
+ "with link to login page. link=" + data[
'invite_link'])
if is_contact_user:
logger.debug("Updating the Engagement with uuid=" + data[
- 'eng_uuid'] + " to have this contact user: " + invitedUser.full_name)
+ 'eng_uuid'] + " to have this contact user: "
+ + invitedUser.full_name)
engObj = Engagement.objects.get(uuid=data['eng_uuid'])
engObj.contact_user = invitedUser
engObj.save()
@@ -121,21 +139,27 @@ def generateInviteMail(data, inviterUser, invitedUser, is_contact_user):
prefix = str(settings.DOMAIN) + "/#/signUp?invitation=" + \
str(invitation.invitation_token) + "&email=" + data['email']
suffix = ""
- if 'full_name' in data and data['full_name'] and 'phone_number' in data and data['phone_number']:
- suffix += "&full_name=" + data['full_name'] + "&phone_number=" + data['phone_number']
+ if 'full_name' in data and data['full_name'] and \
+ 'phone_number' in data and data['phone_number']:
+ suffix += "&full_name=" + \
+ data['full_name'] + "&phone_number=" + data['phone_number']
if data.get('company'):
suffix += "&company=" + data['company']
data['invite_link'] = prefix + suffix
- data['instruction'] = "To create an account and accept this invitation, please click this link:"
+ data['instruction'] = "To create an account and accept this " +\
+ "invitation, please click this link:"
if is_contact_user:
data['invite_link'] += "&is_contact_user=true"
- logger.debug("The invite mail is sent to a contact person (VF Contact or "
- + Constants.service_provider_company_name + " Sponsor)")
+ logger.debug("The invite mail is sent to a contact "
+ "person (VF Contact or "
+ + Constants.service_provider_company_name
+ + " Sponsor)")
logger.debug(
- "Invited Person doesn't exists, sending them an email with link to signup. link=" + data['invite_link'])
+ "Invited Person doesn't exists, sending them an email " +
+ "with link to signup. link=" + data['invite_link'])
return body, subject, invitation
@@ -151,23 +175,27 @@ def inviteUserToSignUpOrLogin(inviterUser, data, is_contact_user):
if len(rs) > 0:
invitedUser = IceUserProfile.objects.get(email=data['email'])
- is_invite_ok = enforce_invitation_throttling(data['eng_uuid'], data['email'], inviterUser, invitedUser)
+ is_invite_ok = enforce_invitation_throttling(
+ data['eng_uuid'], data['email'], inviterUser, invitedUser)
- if is_invite_ok == False:
+ if not is_invite_ok:
msg = "Invite couldn't be created"
logger.error(msg)
raise VvpBadRequest(msg)
- body, subject, invitation = generateInviteMail(data, inviterUser, invitedUser, is_contact_user)
+ body, subject, invitation = generateInviteMail(
+ data, inviterUser, invitedUser, is_contact_user)
try:
mail.sendMail(data['email'], data, body, subject)
except Exception as e:
logger.error(e)
- msg = "Something went wrong while trying to send mail to " + data['email'] + " from " + inviterUser.email
+ msg = "Something went wrong while trying to send mail to " + \
+ data['email'] + " from " + inviterUser.email
logger.error(msg)
if invitation:
- logger.error("Rolling back the invitation (" + invitation + ") due to problems in sending its mail")
+ logger.error("Rolling back the invitation (" +
+ invitation + ") due to problems in sending its mail")
invitation.delete()
raise Exception(msg)
diff --git a/django/engagementmanager/service/logging_service.py b/django/engagementmanager/service/logging_service.py
index b90bdbf..7136774 100644
--- a/django/engagementmanager/service/logging_service.py
+++ b/django/engagementmanager/service/logging_service.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/engagementmanager/service/login_service.py b/django/engagementmanager/service/login_service.py
index 7216b56..6388e1e 100644
--- a/django/engagementmanager/service/login_service.py
+++ b/django/engagementmanager/service/login_service.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -74,14 +74,19 @@ class LoginSvc(BaseSvc):
raise PermissionDenied(msg)
return user
- def reset_password(self, reset_password_email, i_password, msg, user_profile):
+ def reset_password(self, reset_password_email, i_password,
+ msg, user_profile):
token_user = self.get_user_by_email(reset_password_email)
if user_profile.user.id != token_user.id:
- msg = self.render_user_conflict_message(user_profile.user, token_user)
+ msg = self.render_user_conflict_message(
+ user_profile.user, token_user)
temp_encrypted_password = user_profile.user.temp_password
- is_temp_password_ok = check_password(i_password, temp_encrypted_password)
+ is_temp_password_ok = check_password(
+ i_password, temp_encrypted_password)
if is_temp_password_ok:
- self.logger.debug("Temporary Passwords match... Checking temporary password expiration")
+ self.logger.debug(
+ "Temporary Passwords match...\
+ Checking temporary password expiration")
else:
msg = "User or Password does not match"
self.logger.error(msg + " in Reset Password flow")
@@ -90,7 +95,8 @@ class LoginSvc(BaseSvc):
def render_user_conflict_message(self, user, user_from_token):
msg = "User Conflict"
- self.logger.error(msg + ". user uuid =" + user.id + ", user from token uuid=" + user_from_token.id)
+ self.logger.error(msg + ". user uuid =" + user.id +
+ ", user from token uuid=" + user_from_token.id)
raise VvpConflict
def render_user_not_active_message(self, i_email):
@@ -106,25 +112,31 @@ class LoginSvc(BaseSvc):
if reset_password_param is not None:
is_reset_pwd_flow = True
self.logger.debug(
- "Reset Password flow is identified. Checking temporary password expiration. t=" + reset_password_param)
+ "Reset Password flow is identified.\
+ Checking temporary password expiration. t="
+ + reset_password_param)
token_arr = reset_password_param.split("token")
if len(token_arr) > 0:
email = jwt_obj.decode_reset_password_token(str(token_arr[1]))
else:
- self.logger.error("token doesn't include token prefix: " + logEncoding(reset_password_param))
+ self.logger.error(
+ "token doesn't include token prefix: "
+ + logEncoding(reset_password_param))
is_reset_pwd_flow = False
return email, is_reset_pwd_flow
def handle_invite_token(self, data, user_data, user_profile):
data['invitation'] = data['invitation'].strip()
- invitation = Invitation.objects.get(invitation_token=data['invitation'])
+ invitation = Invitation.objects.get(
+ invitation_token=data['invitation'])
addUsersToEngTeam(invitation.engagement_uuid, [user_profile])
vf_obj = VF.objects.get(engagement__uuid=invitation.engagement_uuid)
vm_client.fire_event_in_bg('send_provision_new_vf_event', vf_obj)
user_data['eng_uuid'] = invitation.engagement_uuid
markInvitationAsAccepted(data['invitation'])
- def get_serialized_user_data(self, is_reset_pwd_flow, user_profile, jwt_obj, user):
+ def get_serialized_user_data(self, is_reset_pwd_flow, user_profile,
+ jwt_obj, user):
user_data = ThinIceUserProfileModelSerializer(user_profile).data
user_data['isResetPwdFlow'] = is_reset_pwd_flow
user_data['token'] = jwt_obj.create_token(user)
diff --git a/django/engagementmanager/service/nextstep_service.py b/django/engagementmanager/service/nextstep_service.py
index 9fa8672..fe34f3a 100644
--- a/django/engagementmanager/service/nextstep_service.py
+++ b/django/engagementmanager/service/nextstep_service.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -40,13 +40,19 @@ import json
from django.db.models.query_utils import Q
from django.utils import timezone
from django.utils.timezone import timedelta
-from engagementmanager.bus.messages.activity_event_message import ActivityEventMessage
-from engagementmanager.models import Engagement, IceUserProfile, NextStep, VF
-from engagementmanager.serializers import ThinNextStepModelSerializer, UserNextStepModelSerializer
-from engagementmanager.utils.activities_data import UpdateNextStepsActivityData, AddNextStepsActivityData
-from engagementmanager.service.engagement_service import update_or_insert_to_recent_engagements
+from engagementmanager.bus.messages.activity_event_message import \
+ ActivityEventMessage
+from engagementmanager.models import Engagement, IceUserProfile, \
+ NextStep, VF
+from engagementmanager.serializers import ThinNextStepModelSerializer, \
+ UserNextStepModelSerializer
+from engagementmanager.utils.activities_data import \
+ UpdateNextStepsActivityData, AddNextStepsActivityData
+from engagementmanager.service.engagement_service import \
+ update_or_insert_to_recent_engagements
from engagementmanager.service.base_service import BaseSvc
-from engagementmanager.utils.constants import Constants, NextStepType, NextStepState, RecentEngagementActionType
+from engagementmanager.utils.constants import Constants, NextStepType,\
+ NextStepState, RecentEngagementActionType
from engagementmanager.utils.request_data_mgr import request_data_mgr
from engagementmanager.apps import bus_service
from engagementmanager.service.logging_service import LoggingServiceFactory
@@ -59,37 +65,45 @@ class NextStepSvc(BaseSvc):
{
'position': 2,
'stage': 'Intake',
- 'text': 'Please work with your Engagement Lead (EL) to complete the necessary trial agreements.',
+ 'text': 'Please work with your Engagement Lead (EL) ' +
+ 'to complete the necessary trial agreements.',
'condition': lambda x, y: True,
- 'type': NextStepType.trial_agreements.name # @UndefinedVariable
+ 'type': NextStepType.trial_agreements.name
},
{
'position': 3,
'stage': 'Intake',
- 'text': 'Please add your ' + Constants.service_provider_company_name + ' sponsor or vendor contact information.',
- 'condition': lambda user, eng: False if (eng.contact_user) else True,
- 'type': NextStepType.add_contact_person.name # @UndefinedVariable
+ 'text': 'Please add your ' +
+ Constants.service_provider_company_name +
+ ' sponsor or vendor contact information.',
+ 'condition': lambda user, eng: False if
+ (eng.contact_user) else True,
+ 'type': NextStepType.add_contact_person.name
},
{
'position': 1,
'stage': 'Active',
- 'text': 'Please submit the first version of the VF package. If you have any problems or questions, please contact your Engagement Lead (EL)',
+ 'text': 'Please submit the first version of the VF package. ' +
+ 'If you have any problems or questions, please ' +
+ 'contact your Engagement Lead (EL)',
'condition': lambda x, y: True,
- 'type': NextStepType.submit_vf_package.name # @UndefinedVariable
+ 'type': NextStepType.submit_vf_package.name
},
{
'position': 1,
'stage': 'Validated',
- 'text': 'Please schedule a time with your Engagement Lead (EL) to complete the handoff.',
+ 'text': 'Please schedule a time with your Engagement Lead (EL) ' +
+ 'to complete the handoff.',
'condition': lambda x, y: True,
- 'type': NextStepType.el_handoff.name # @UndefinedVariable
+ 'type': NextStepType.el_handoff.name
}
]
def get_user_next_steps(self, limit, state):
user = request_data_mgr.get_user()
- nextSteps = NextStep.objects.filter(Q(assignees=user) & Q(state=state)).order_by('due_date').distinct()
+ nextSteps = NextStep.objects.filter(Q(assignees=user) & Q(
+ state=state)).order_by('due_date').distinct()
count = nextSteps.count()
serializer = UserNextStepModelSerializer(nextSteps[:limit], many=True)
return serializer, count
@@ -98,16 +112,24 @@ class NextStepSvc(BaseSvc):
user = request_data_mgr.get_user()
eng_uuid = request_data_mgr.get_eng_uuid()
- ers = NextStep.objects.filter(Q(engagement__uuid=eng_uuid, owner=None, engagement_stage=eng_stage) | Q(
- owner=user, engagement_stage=eng_stage)).order_by('position')
+ ers = NextStep.objects.filter(
+ Q(
+ engagement__uuid=eng_uuid,
+ owner=None,
+ engagement_stage=eng_stage) | Q(
+ owner=user,
+ engagement_stage=eng_stage)).order_by('position')
serializer = ThinNextStepModelSerializer(ers, many=True)
for next_step in serializer.data:
if next_step['files'] is not None:
next_step['files'] = json.loads(next_step['files'])
- if 'engagement' in next_step and next_step['engagement'] is not None and 'engagement_team' in next_step['engagement'] and next_step['engagement']['engagement_team'] is not None:
+ if 'engagement' in next_step and next_step['engagement'] \
+ is not None and 'engagement_team' in next_step[
+ 'engagement'] and \
+ next_step['engagement']['engagement_team'] is not None:
for user in next_step['engagement']['engagement_team']:
- if (user['ssh_public_key'] != None):
+ if (user['ssh_public_key'] is not None):
del user['ssh_public_key']
return serializer
@@ -126,24 +148,27 @@ class NextStepSvc(BaseSvc):
for data in dataList:
try:
- associated_files = json.dumps(data['files'], ensure_ascii=False)
- except:
+ associated_files = json.dumps(
+ data['files'], ensure_ascii=False)
+ except BaseException:
associated_files = "[]"
try:
due_date = data['duedate']
- except:
+ except BaseException:
due_date = None
- nextStepObj = NextStep.objects.create(creator=user, last_updater=user, engagement=engObj, position=NextStep.objects.count() + 1,
- # @UndefinedVariable
- description=data[
- 'description'], state=NextStepState.Incomplete.name, engagement_stage=engObj.engagement_stage,
- files=associated_files, due_date=due_date) # @UndefinedVariable
+ nextStepObj = NextStep.objects.create(
+ creator=user, last_updater=user, engagement=engObj,
+ position=NextStep.objects.count() + 1,
+ description=data[
+ 'description'], state=NextStepState.Incomplete.name,
+ engagement_stage=engObj.engagement_stage,
+ files=associated_files, due_date=due_date)
try:
data['assigneesUuids']
- except:
+ except BaseException:
data['assigneesUuids'] = []
for assigneesUuid in data['assigneesUuids']:
@@ -152,30 +177,39 @@ class NextStepSvc(BaseSvc):
nextStepObj.assignees.add(assignee_user)
nextStepObj.save()
update_or_insert_to_recent_engagements(
- assignee_user.uuid, vfObj, RecentEngagementActionType.NEXT_STEP_ASSIGNED.name) # @UndefinedVariable
+ assignee_user.uuid,
+ vfObj,
+ RecentEngagementActionType.NEXT_STEP_ASSIGNED.name)
nextStepData.append(ThinNextStepModelSerializer(nextStepObj).data)
- activity_data = AddNextStepsActivityData(VF.objects.get(engagement=engObj), user, engObj)
+ activity_data = AddNextStepsActivityData(
+ VF.objects.get(engagement=engObj), user, engObj)
bus_service.send_message(ActivityEventMessage(activity_data))
- if checklist_uuid != None:
- from engagementmanager.service.checklist_state_service import set_state
- set_state(True, checklist_uuid, isMoveToAutomation=True, description=desc)
- logger.debug("Successfully added a Next Step to engagement_uuid=" +
- eng_uuid + " for checklist=" + checklist_uuid)
+ if checklist_uuid is not None:
+ from engagementmanager.service.checklist_state_service import \
+ set_state
+ set_state(True, checklist_uuid,
+ isMoveToAutomation=True, description=desc)
+ logger.debug("Successfully added a \
+ Next Step to engagement_uuid=" +
+ eng_uuid + " for checklist=" + checklist_uuid)
return nextStepData
'''
- This function shall return the update type in the next step (can be Completed or Denied)
+ This function shall return the update type in the next step
+ (can be Completed or Denied)
'''
def validate_state_transition(self, user, current_state, next_state):
update_type = next_state.name
- logger.debug('validating step transition by %s from %s to %s', user.role.name, current_state, next_state)
+ logger.debug('validating step transition by %s from %s to %s',
+ user.role.name, current_state, next_state)
- if (current_state == NextStepState.Completed and next_state == NextStepState.Incomplete):
+ if (current_state == NextStepState.Completed and next_state ==
+ NextStepState.Incomplete):
if (user.role.name == 'el'):
update_type = 'Denied'
else:
@@ -184,7 +218,8 @@ class NextStepSvc(BaseSvc):
return update_type
def create_default_next_steps_for_user(self, user, el_user):
- def cond(user): return False if (user.ssh_public_key and user.ssh_public_key != '') else True
+ def cond(user): return False if (
+ user.ssh_public_key and user.ssh_public_key != '') else True
if cond(user):
desc = "Please add your SSH key to be able to contribute."
@@ -198,12 +233,13 @@ class NextStepSvc(BaseSvc):
engagement_stage='Intake',
engagement=None,
owner=user,
- next_step_type=NextStepType.set_ssh.name, # @UndefinedVariable
+ next_step_type=NextStepType.set_ssh.name,
due_date=timezone.now() + timedelta(days=1))
nextstep.save()
'''
- This method is for non-personal default next step only since it doesn't have an owner
+ This method is for non-personal default next step only
+ since it doesn't have an owner
'''
def create_default_next_steps(self, user, engagement, el_user):
@@ -215,16 +251,30 @@ class NextStepSvc(BaseSvc):
if (user.company == Constants.service_provider_company):
desc = desc.replace('$Contact', 'Vendor Contact')
else:
- desc = desc.replace('$Contact', Constants.service_provider_company_name + ' Sponsor Contact')
+ desc = desc.replace(
+ '$Contact',
+ Constants.service_provider_company_name +
+ ' Sponsor Contact')
logger.debug('Creating default next step : ' + desc)
- nextstep = NextStep.objects.create(creator=el_user, last_updater=el_user, position=step['position'], description=desc, state='Incomplete', engagement_stage=step[
- 'stage'], engagement=engagement, next_step_type=ns_type, due_date=timezone.now() + timedelta(days=1))
+ nextstep = NextStep.objects.create(
+ creator=el_user,
+ last_updater=el_user,
+ position=step['position'],
+ description=desc,
+ state='Incomplete',
+ engagement_stage=step['stage'],
+ engagement=engagement,
+ next_step_type=ns_type,
+ due_date=timezone.now() +
+ timedelta(
+ days=1))
nextstep.assignees.add(el_user)
nextstep.save()
else:
- logger.debug('Skipping creation of default next step : ' + desc)
+ logger.debug(
+ 'Skipping creation of default next step : ' + desc)
def update_next_steps_order(self, nextsteps):
counter = 0
@@ -248,13 +298,17 @@ class NextStepSvc(BaseSvc):
step.assignees.remove(user)
for assigneesUuid in data['assigneesUuids']:
assigned_user = IceUserProfile.objects.get(uuid=assigneesUuid)
- eng_team = Engagement.objects.get(uuid=request_data_mgr.get_eng_uuid()).engagement_team.all()
+ eng_team = Engagement.objects.get(
+ uuid=request_data_mgr.get_eng_uuid()).\
+ engagement_team.all()
if (assigned_user in eng_team):
step.assignees.add(assigned_user)
step.save()
else:
logger.error(
- "An attempt to edit a NS and assign a user who is not in the engagement team was conducted, user wasn't assigned!")
+ "An attempt to edit a NS and assign a user who is " +
+ "not in the engagement team was conducted, " +
+ "user wasn't assigned!")
continue
step.last_updater = request_data_mgr.get_user()
@@ -268,7 +322,8 @@ class NextStepSvc(BaseSvc):
if attr == 'state':
update_type = self.validate_state_transition(
- request_data_mgr.get_user(), NextStepState[step.state], NextStepState[state])
+ request_data_mgr.get_user(), NextStepState[step.state],
+ NextStepState[state])
step.state = state
step.last_updater = request_data_mgr.get_user()
step.last_update_time = timezone.now()
@@ -276,5 +331,6 @@ class NextStepSvc(BaseSvc):
step.save()
if step.engagement:
activity_data = UpdateNextStepsActivityData(
- step.last_update_type, request_data_mgr.get_user(), step.engagement)
+ step.last_update_type,
+ request_data_mgr.get_user(), step.engagement)
bus_service.send_message(ActivityEventMessage(activity_data))
diff --git a/django/engagementmanager/service/user_service.py b/django/engagementmanager/service/user_service.py
index 8d6317e..d8a99f1 100644
--- a/django/engagementmanager/service/user_service.py
+++ b/django/engagementmanager/service/user_service.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -40,9 +40,11 @@ from django.contrib.auth import get_user_model
from sshpubkeys import SSHKey
from engagementmanager.apps import bus_service
-from engagementmanager.bus.messages.activity_event_message import ActivityEventMessage
+from engagementmanager.bus.messages.activity_event_message\
+ import ActivityEventMessage
from engagementmanager.models import IceUserProfile, Role, VF
-from engagementmanager.serializers import SuperThinIceUserProfileModelSerializerForSignals
+from engagementmanager.serializers import\
+ SuperThinIceUserProfileModelSerializerForSignals
from engagementmanager.service.base_service import BaseSvc
from engagementmanager.utils.cryptography import CryptographyText
from engagementmanager.utils.activities_data import SSHKeyAddedActivityData
@@ -61,15 +63,15 @@ class UserService(BaseSvc):
try:
ssh.parse()
except Exception as e:
- msg = """ssh provided by the user is invalid, type of exception: """ + \
- str(e)
+ msg = """ssh provided by the user is invalid,""" +\
+ """type of exception: """ + str(e)
self.logger.error(msg)
msg = "Updating SSH Key failed due to invalid key."
raise VvpBadRequest(msg)
# remove comment from ssh key
# ssh.comment returns comment attached to key
- if ssh.comment != None:
+ if ssh.comment is not None:
striped_key = sshkey.replace(ssh.comment, '').strip()
else:
striped_key = sshkey.strip()
@@ -85,7 +87,8 @@ class UserService(BaseSvc):
raise Exception(msg)
else:
self.logger.debug(
- "SSH key already taken by another user - uuid: %s", user_with_ssh.uuid)
+ "SSH key already taken by another user - uuid: %s",
+ user_with_ssh.uuid)
msg = "Updating SSH Key failed due to invalid key."
raise VvpBadRequest(msg)
@@ -100,7 +103,8 @@ class UserService(BaseSvc):
def get_el_list(self):
el_role = Role.objects.get(name='el')
engagement_leads_users = IceUserProfile.objects.filter(role=el_role)
- return SuperThinIceUserProfileModelSerializerForSignals(engagement_leads_users, many=True).data
+ return SuperThinIceUserProfileModelSerializerForSignals(
+ engagement_leads_users, many=True).data
def get_user_by_email(self, email):
UserModel = get_user_model()
diff --git a/django/engagementmanager/service/vf_service.py b/django/engagementmanager/service/vf_service.py
index aa3a9d3..7399cd2 100644
--- a/django/engagementmanager/service/vf_service.py
+++ b/django/engagementmanager/service/vf_service.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/engagementmanager/service/vfc_service.py b/django/engagementmanager/service/vfc_service.py
index 341cfc1..807a8ea 100644
--- a/django/engagementmanager/service/vfc_service.py
+++ b/django/engagementmanager/service/vfc_service.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -54,14 +54,19 @@ class VFCSvc(BaseSvc):
duplicate = False
many = True
dict = {}
- # Iterate through all the VFCs that are received from the user, if there's duplication -> check the VF, if it is the same ->duplicate = True
- # If there's a duplication and the other VFCs trying to be created are not
- # duplicated -> Many = True -> they would be successfully created any way
+ # Iterate through all the VFCs that are received from the user,
+ # if there's duplication -> check the VF,
+ # if it is the same ->duplicate = True
+ # If there's a duplication and the other
+ # VFCs trying to be created are not
+ # duplicated -> Many = True -> they would be successfully created any
+ # way
for i in range(len(data['vfcs'])):
dict.update(data['vfcs'][i])
# check if the VFC already exist (filter by name)
try:
- vfc = VFC.objects.filter(name=dict['name'], external_ref_id=dict['external_ref_id'])
+ vfc = VFC.objects.filter(
+ name=dict['name'], external_ref_id=dict['external_ref_id'])
# if found VFC with same name and ref id
if (vfc.count() > 0):
for item in vfc:
@@ -69,8 +74,10 @@ class VFCSvc(BaseSvc):
if (not duplicate):
duplicate = True
duplicateNames.append(dict['name'])
- # if found a similar VFC with name and ref_id, but VF is different (
- # cannot use else, and raise, since the for has to check all vfcs that
+ # if found a similar VFC with name and ref_id,\
+ # but VF is different (
+ # cannot use else, and raise,
+ # since the for has to check all vfcs that
# match - for example, 2 VFs with same vfc)
if not duplicate:
raise VFC.DoesNotExist
@@ -79,19 +86,26 @@ class VFCSvc(BaseSvc):
raise VFC.DoesNotExist
# If the VFC Does not exist, then continue as usual and create it.
except VFC.DoesNotExist:
- many = True # not used, unless there's a duplicate as well, just a helper
+ many = True
+ # not used, unless there's a duplicate as well, just a helper
- user = IceUserProfile.objects.get(email=data['creator']['email'])
+ user = IceUserProfile.objects.get(
+ email=data['creator']['email'])
vf = VF.objects.get(uuid=data['vf_uuid'])
# Check if the company that the user entered already exist.
try:
company = Vendor.objects.get(name=dict['company'])
except Vendor.DoesNotExist:
- company = Vendor.objects.create(name=dict['company'], public=False)
+ company = Vendor.objects.create(
+ name=dict['company'], public=False)
company.save()
# create the VFC
- vfc = VFC.objects.create(name=dict['name'], company=company, vf=vf,
- creator=user, external_ref_id=dict['external_ref_id'])
+ vfc = VFC.objects.create(
+ name=dict['name'],
+ company=company,
+ vf=vf,
+ creator=user,
+ external_ref_id=dict['external_ref_id'])
if 'ice_mandated' in dict:
vfc.ice_mandated = dict['ice_mandated']
vfc.save()
@@ -101,7 +115,8 @@ class VFCSvc(BaseSvc):
num = 1
for vfc_name in duplicateNames:
msg = msg + str(num) + ". The VFC " + vfc_name + \
- " already exist, the VF that it is related to is: " + item.vf.name + "\n"
+ " already exist, the VF that it is related to is: "\
+ + item.vf.name + "\n"
num += 1
msg = msg + "\nThe other VFCs were created succesfully\n"
self.logger.error(msg)
diff --git a/django/engagementmanager/slack_client/__init__.py b/django/engagementmanager/slack_client/__init__.py
index 1726c13..16f81cb 100644
--- a/django/engagementmanager/slack_client/__init__.py
+++ b/django/engagementmanager/slack_client/__init__.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/engagementmanager/slack_client/api.py b/django/engagementmanager/slack_client/api.py
index f006322..df149ed 100644
--- a/django/engagementmanager/slack_client/api.py
+++ b/django/engagementmanager/slack_client/api.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -58,11 +58,14 @@ class SlackClient(object):
# create the slack client
self.client = None
- if settings.SLACK_API_TOKEN is not None and settings.SLACK_API_TOKEN != "":
+ if settings.SLACK_API_TOKEN is not None and \
+ settings.SLACK_API_TOKEN != "":
try:
self.client = Slacker(settings.SLACK_API_TOKEN)
except Exception as exception:
- logger.error('Unknown error while creating the a slack client: ' + str(exception))
+ logger.error(
+ 'Unknown error while creating the a slack client: ' +
+ str(exception))
# post a message via the Slack API
def trigger_slack_chat_post_message(self, to, message):
@@ -75,11 +78,13 @@ class SlackClient(object):
"""
try:
# Send a message to a channel or a user
- response = self.client.chat.post_message(to, message)
+ self.client.chat.post_message(to, message)
except Error as e:
logger.error('Invalid Slack API token was provided: ' + str(e))
except Exception as exception:
- logger.error('Unknown error while posting a message to Slack: ' + str(exception))
+ logger.error(
+ 'Unknown error while posting a message to Slack: ' +
+ str(exception))
# asynchronously post a message
def post_message(self, to, message):
@@ -91,8 +96,11 @@ class SlackClient(object):
if to and message:
logger.debug('Trigger Slack API - chat.post_message')
- future = executor.submit(self.trigger_slack_chat_post_message, to, message)
- logger.debug('Continuing after triggering the Slack API - chat.post_message')
+ executor.submit(
+ self.trigger_slack_chat_post_message, to, message)
+ logger.debug(
+ 'Continuing after triggering the Slack API - \
+ chat.post_message')
# send slack message to the engagement channel
def update_engagement_channel(self, message, notify_channel=False):
@@ -119,94 +127,219 @@ class SlackClient(object):
self.post_message('@' + user.slack_handle, message)
# update reviewer or peer reviewer when a new engagement is created
- def update_reviewer_or_peer_reviewer(self, engagement_manual_id, vf_name, user, old_user, notification_type='reviewer'):
+ def update_reviewer_or_peer_reviewer(
+ self,
+ engagement_manual_id,
+ vf_name,
+ user,
+ old_user,
+ notification_type='reviewer'):
# construct the Slack messages
- user_message = 'You have been assigned as the _{}_ for the engagement _{}: {}_. '.format(
+ user_message = 'You have been assigned as the \
+ _{}_ for the engagement _{}: {}_. '.format(
notification_type, engagement_manual_id, vf_name)
- old_user_message_postfix = 'The assigned _{}_ is now _{}_.'.format(notification_type, user.full_name)
+ old_user_message_postfix = 'The assigned _{}_ is now _{}_.'.format(
+ notification_type, user.full_name)
user_message_postfix = ""
old_user_message = ""
if old_user is not None:
- user_message_postfix = 'The previously assigned _{}_ was _{}_ in case you need to reach out for questions.'.format(
+ user_message_postfix = 'The previously assigned _{}_ was _{}_ in \
+ case you need to reach out for questions.'.format(
notification_type, old_user.full_name)
- old_user_message = 'You are no longer the assigned _{}_ for the engagement _{}: {}_. '.format(
+ old_user_message = 'You are no longer the assigned _{}_ for the \
+ engagement _{}: {}_. '.format(
notification_type, engagement_manual_id, vf_name)
# send Slack messages
self.send_message_to_user(user, user_message + user_message_postfix)
- self.send_message_to_user(old_user, old_user_message + old_user_message_postfix)
+ self.send_message_to_user(
+ old_user, old_user_message + old_user_message_postfix)
# update the engagement channel when a new engagement is created
- def update_engagement_channel_for_new_engagement(self, engagement_manual_id, vf_name, reviewer, peer_reviewer, creator):
- new_engagement_message = '_{}_ created a new engagement _{}: {}_. _{}_ was assigned as the reviewer and _{}_ as the peer reviewer'.format(
- creator.full_name, engagement_manual_id, vf_name, reviewer.full_name, peer_reviewer.full_name)
+ def update_engagement_channel_for_new_engagement(
+ self, engagement_manual_id, vf_name, reviewer,
+ peer_reviewer, creator):
+ new_engagement_message = '_{}_ created a new engagement _{}: {}_. \
+ _{}_ was assigned as the reviewer and \
+ _{}_ as the peer reviewer'.format(
+ creator.full_name, engagement_manual_id, vf_name,
+ reviewer.full_name, peer_reviewer.full_name)
self.update_engagement_channel(new_engagement_message, True)
- # update reviewer, peer reviewer and the engagement channel when a new engagement is created
- def send_slack_notifications_for_new_engagement(self, engagement_manual_id, vf_name, reviewer, peer_reviewer, creator):
- self.update_reviewer_or_peer_reviewer(engagement_manual_id, vf_name, reviewer, None, 'reviewer')
- self.update_reviewer_or_peer_reviewer(engagement_manual_id, vf_name, peer_reviewer, None, 'peer reviewer')
+ # update reviewer, peer reviewer and the engagement channel when a new
+ # engagement is created
+ def send_slack_notifications_for_new_engagement(
+ self,
+ engagement_manual_id,
+ vf_name,
+ reviewer,
+ peer_reviewer,
+ creator):
+ self.update_reviewer_or_peer_reviewer(
+ engagement_manual_id, vf_name, reviewer, None, 'reviewer')
+ self.update_reviewer_or_peer_reviewer(
+ engagement_manual_id, vf_name, peer_reviewer, None,
+ 'peer reviewer')
self.update_engagement_channel_for_new_engagement(
engagement_manual_id, vf_name, reviewer, peer_reviewer, creator)
def send_slack_notifications_for_new_feedback(self, feedback, user):
- new_feedback_message = 'Created a new Feedback by {} Description : {}.'.format(
+ new_feedback_message = 'Created a new Feedback by {} Description : \
+ {}.'.format(
user.full_name, feedback.description)
self.update_engagement_channel(new_feedback_message, True)
self.update_devops_channel(new_feedback_message, True)
# update the engagement channel when the stage is changed for an engagement
- def update_for_change_of_the_engagement_stage(self, engagement_manual_id, vf_name, stage):
- change_engagement_stage_message = 'The engagement _{}: {}_ was moved to the _{}_ stage.'.format(
+ def update_for_change_of_the_engagement_stage(
+ self, engagement_manual_id, vf_name, stage):
+ change_engagement_stage_message = 'The engagement _{}: \
+ {}_ was moved to the _{}_ stage.'.format(
engagement_manual_id, vf_name, stage)
self.update_engagement_channel(change_engagement_stage_message)
# update the engagement channel when an engagement is archived
- def update_for_archived_engagement(self, engagement_manual_id, vf_name, reason):
- archived_engagement_message = 'The engagement _{}: {}_ was archived because of this reason: _{}_.'.format(
+ def update_for_archived_engagement(
+ self, engagement_manual_id, vf_name, reason):
+ archived_engagement_message = 'The engagement _{}: \
+ {}_ was archived because of this reason: _{}_.'.format(
engagement_manual_id, vf_name, reason)
self.update_engagement_channel(archived_engagement_message)
# update the reviewer and peer reviewer when the git repository is updated
- def send_notifications_on_git_push(self, engagement_manual_id, vf_name, reviewer, peer_reviewer, committed_files):
- str_committed_files = "The following files was added or changed as part of the commit:\n\n- %s" % '\n- '.join(
+ def send_notifications_on_git_push(
+ self,
+ engagement_manual_id,
+ vf_name,
+ reviewer,
+ peer_reviewer,
+ committed_files):
+ str_committed_files = "The following files was added \
+ or changed as part of the commit:\n\n- %s" % '\n- '.join(
committed_files)
- message = 'The Git repository for the engagement _{}: {}_ in which you are assigned as a _{}_ was updated. ' + \
+ message = 'The Git repository for the engagement _{}: \
+ {}_ in which you are assigned as a _{}_ was updated. ' + \
str_committed_files
- self.send_message_to_user(reviewer, message.format(engagement_manual_id, vf_name, 'reviewer'))
- self.send_message_to_user(peer_reviewer, message.format(engagement_manual_id, vf_name, 'peer_reviewer'))
+ self.send_message_to_user(reviewer, message.format(
+ engagement_manual_id, vf_name, 'reviewer'))
+ self.send_message_to_user(peer_reviewer, message.format(
+ engagement_manual_id, vf_name, 'peer_reviewer'))
- # update the reviewer when the automation phase is completed for a checklist
- def send_notification_to_reviewer_when_automation_completes(self, engagement_manual_id, vf_name, reviewer, checklist_name):
+ def send_notifications_bucket_image_update(
+ self,
+ engagement_manual_id,
+ vf_name,
+ reviewer,
+ peer_reviewer,
+ bucket_name):
+ str_committed_files = "The following bucket was updated with new image files: %s" % bucket_name
+ message = 'The rgwa bucket for the engagement _{}: {}_ in which you are assigned as a _{}_ was updated. ' + \
+ str_committed_files
+ self.send_message_to_user(
+ reviewer,
+ message.format(
+ engagement_manual_id,
+ vf_name,
+ 'reviewer'))
+ self.send_message_to_user(
+ peer_reviewer,
+ message.format(
+ engagement_manual_id,
+ vf_name,
+ 'peer_reviewer'))
+
+ # update the reviewer when the automation phase is completed for a
+ # checklist
+ def send_notification_to_reviewer_when_automation_completes(
+ self, engagement_manual_id, vf_name, reviewer, checklist_name):
message = 'The automation phase completed for the checklist _{}_ under the engagement _{}: {}_. You can now start your review of it.'
- self.send_message_to_user(reviewer, message.format(checklist_name, engagement_manual_id, vf_name))
+ self.send_message_to_user(
+ reviewer,
+ message.format(
+ checklist_name,
+ engagement_manual_id,
+ vf_name))
- # update the peer reviewer when the review phase is completed for a checklist
- def send_notification_to_peer_reviewer_when_the_review_completes(self, engagement_manual_id, vf_name, reviewer, peer_reviewer, checklist_name):
- message = 'The review phase was completed by _{}_ for the checklist _{}_ under the engagement _{}: {}_. You can now start your peer review of it.'
+ # update the peer reviewer when the review phase is completed for a
+ # checklist
+ def send_notification_to_peer_reviewer_when_the_review_completes(
+ self, engagement_manual_id, vf_name, reviewer, peer_reviewer,
+ checklist_name):
+ message = 'The review phase was completed by _{}_ for the checklist \
+ _{}_ under the engagement _{}: {}_. \
+ You can now start your peer review of it.'
self.send_message_to_user(peer_reviewer, message.format(
- reviewer.full_name, checklist_name, engagement_manual_id, vf_name))
+ reviewer.full_name, checklist_name,
+ engagement_manual_id, vf_name))
- # update the admins when the review and peer reviews have been completed for a checklist
- def send_notification_to_admins_when_the_peer_review_completes(self, engagement_manual_id, vf_name, reviewer, peer_reviewer, admins, checklist_name):
- message = 'The manual reviews have been completed by the reviewer _{}_ and peer reviewer _{}_ for the checklist _{}_ under the engagement _{}: {}_. It is now waiting for an approval by you or any other admin.'
+ # update the admins when the review and peer reviews have been completed
+ # for a checklist
+ def send_notification_to_admins_when_the_peer_review_completes(
+ self,
+ engagement_manual_id,
+ vf_name,
+ reviewer,
+ peer_reviewer,
+ admins,
+ checklist_name):
+ message = 'The manual reviews have been completed by the reviewer \
+ _{}_ and peer reviewer _{}_ for the checklist _{}_ under the \
+ engagement _{}: {}_. It is now waiting for an approval by you \
+ or any other admin.'
for admin in admins:
- self.send_message_to_user(admin, message.format(
- reviewer.full_name, peer_reviewer.full_name, checklist_name, engagement_manual_id, vf_name))
+ self.send_message_to_user(
+ admin,
+ message.format(
+ reviewer.full_name,
+ peer_reviewer.full_name,
+ checklist_name,
+ engagement_manual_id,
+ vf_name))
# update reviewer when a checklist is approved
- def send_notification_to_reviewer_when_approved(self, engagement_manual_id, vf_name, reviewer, checklist_name):
- message = 'The checklist _{}_ under the engagement _{}: {}_ is now approved. You can now hand off the artifacts and close out the checklist.'
- self.send_message_to_user(reviewer, message.format(checklist_name, engagement_manual_id, vf_name))
+ def send_notification_to_reviewer_when_approved(
+ self, engagement_manual_id, vf_name, reviewer, checklist_name):
+ message = 'The checklist _{}_ under the engagement _{}: {}_ is \
+ now approved. You can now hand off the artifacts and close \
+ out the checklist.'
+ self.send_message_to_user(reviewer, message.format(
+ checklist_name, engagement_manual_id, vf_name))
# update reviewer, peer reviewer and admins when a checklist is closed
- def send_notifications_when_closed(self, engagement_manual_id, vf_name, reviewer, peer_reviewer, admins, checklist_name):
- message = 'The checklist _{}_ under the engagement _{}: {}_ has now been closed and all the asssociated artifacts are validated. The reviewer was _{}_ and the peer reviewer was _{}_.'
- self.send_message_to_user(reviewer, message.format(checklist_name, engagement_manual_id,
- vf_name, reviewer.full_name, peer_reviewer.full_name))
- self.send_message_to_user(peer_reviewer, message.format(
- checklist_name, engagement_manual_id, vf_name, reviewer.full_name, peer_reviewer.full_name))
+ def send_notifications_when_closed(
+ self,
+ engagement_manual_id,
+ vf_name,
+ reviewer,
+ peer_reviewer,
+ admins,
+ checklist_name):
+ message = 'The checklist _{}_ under the engagement _{}: {}_ has now \
+ been closed and all the asssociated artifacts are validated. The \
+ reviewer was _{}_ and the peer reviewer was _{}_.'
+ self.send_message_to_user(
+ reviewer,
+ message.format(
+ checklist_name,
+ engagement_manual_id,
+ vf_name,
+ reviewer.full_name,
+ peer_reviewer.full_name))
+ self.send_message_to_user(
+ peer_reviewer,
+ message.format(
+ checklist_name,
+ engagement_manual_id,
+ vf_name,
+ reviewer.full_name,
+ peer_reviewer.full_name))
for admin in admins:
- self.send_message_to_user(admin, message.format(checklist_name, engagement_manual_id,
- vf_name, reviewer.full_name, peer_reviewer.full_name))
+ self.send_message_to_user(
+ admin,
+ message.format(
+ checklist_name,
+ engagement_manual_id,
+ vf_name,
+ reviewer.full_name,
+ peer_reviewer.full_name))
diff --git a/django/engagementmanager/templatetags/__init__.py b/django/engagementmanager/templatetags/__init__.py
index 1726c13..16f81cb 100644
--- a/django/engagementmanager/templatetags/__init__.py
+++ b/django/engagementmanager/templatetags/__init__.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/engagementmanager/templatetags/vvptags.py b/django/engagementmanager/templatetags/vvptags.py
index 1a6a0ee..77db16b 100644
--- a/django/engagementmanager/templatetags/vvptags.py
+++ b/django/engagementmanager/templatetags/vvptags.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/engagementmanager/tests/__init__.py b/django/engagementmanager/tests/__init__.py
index 1726c13..16f81cb 100644
--- a/django/engagementmanager/tests/__init__.py
+++ b/django/engagementmanager/tests/__init__.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/engagementmanager/tests/test_access_credentials.py b/django/engagementmanager/tests/test_access_credentials.py
index 73d427c..7ddc867 100644
--- a/django/engagementmanager/tests/test_access_credentials.py
+++ b/django/engagementmanager/tests/test_access_credentials.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -45,7 +45,8 @@ from django.utils import timezone
from engagementmanager.utils.constants import Constants
from engagementmanager.vm_integration import vm_client
from validationmanager.rados.rgwa_client import RGWAClient
-from validationmanager.tests.test_rgwa_client_factory import TestRGWAClientFactory
+from validationmanager.tests.test_rgwa_client_factory import \
+ TestRGWAClientFactory
class ActivateTestCase(TestBaseEntity):
@@ -56,25 +57,41 @@ class ActivateTestCase(TestBaseEntity):
self.urlStr = self.urlPrefix + "signup/"
self.createDefaultRoles()
- uuid, vendor = self.creator.createVendor(Constants.service_provider_company_name)
+ uuid, vendor = self.creator.createVendor(
+ Constants.service_provider_company_name)
self.activation_token_time = timezone.now()
self.activation_token_time = self.activation_token_time.replace(
2012, 1, 2, 13, 48, 25)
- print("This is the time that is going to be added to expiredTokenUser: " +
+ print("This is the time that is going to be " +
+ "added to expiredTokenUser: " +
str(self.activation_token_time))
- self.user = self.creator.createUser(vendor, self.randomGenerator("email"), self.randomGenerator(
- "randomNumber"), self.randomGenerator("randomString"), self.standard_user, True)
- self.new_user = self.creator.createUser(vendor, self.randomGenerator("email"), self.randomGenerator(
- "randomNumber"), self.randomGenerator("randomString"), self.standard_user, True)
+ self.user = self.creator.createUser(
+ vendor,
+ self.randomGenerator("email"),
+ self.randomGenerator("randomNumber"),
+ self.randomGenerator("randomString"),
+ self.standard_user,
+ True)
+ self.new_user = self.creator.createUser(
+ vendor,
+ self.randomGenerator("email"),
+ self.randomGenerator("randomNumber"),
+ self.randomGenerator("randomString"),
+ self.standard_user,
+ True)
print('-----------------------------------------------------')
print('Created User:')
print('UUID: ' + str(self.user.uuid))
print('Full Name: ' + self.user.full_name)
print('-----------------------------------------------------')
- self.params = '{"company":"' + str(self.user.company) + '","full_name":"' + self.user.full_name + '","email":"' + self.user.email + '","phone_number":"' + self.user.phone_number + \
- '","password":"' + self.user.user.password + '","regular_email_updates":"' + \
+ self.params = '{"company":"' + str(self.user.company) \
+ + '","full_name":"' + self.user.full_name + '","email":"' + \
+ self.user.email + '","phone_number":"' + self.user.phone_number + \
+ '","password":"' + self.user.user.password \
+ + '","regular_email_updates":"' + \
str(self.user.regular_email_updates) + \
- '","is_service_provider_contact":"' + str(self.user.is_service_provider_contact) + '"}'
+ '","is_service_provider_contact":"' + \
+ str(self.user.is_service_provider_contact) + '"}'
self.userToken = self.loginAndCreateSessionToken(self.user)
self.new_user_token = self.loginAndCreateSessionToken(self.new_user)
@@ -83,7 +100,7 @@ class ActivateTestCase(TestBaseEntity):
vm_client.fire_event_in_bg(
'send_create_user_in_rgwa_event', self.user)
rgwa = TestRGWAClientFactory.admin()
- rgwa_user = rgwa.get_user(self.user.full_name)
+ rgwa_user = rgwa.get_user(self.user.uuid)
if rgwa_user is None:
print("Test Failed!")
else:
@@ -91,15 +108,15 @@ class ActivateTestCase(TestBaseEntity):
print("######access_key#################= ", access_key)
secret_key = rgwa_user['secret_key']
print("######secret_key#################= ", secret_key)
- self.assertTrue(access_key and secret_key != None)
+ self.assertTrue(access_key and secret_key is not None)
print("#################################")
print("Test PASS!")
self.printTestName("Test ended")
# Whenever a new user is configured, we should create a RadosGW user for them.
-# If unspecified, the access keys are generated on the server and returned here
-# in the response.
+# If unspecified, the access keys are generated
+# on the server and returned here in the response.
def testCreateAndGetRgwaUser(self):
if settings.IS_SIGNAL_ENABLED:
base_url = 'http://{S3_HOST}:{S3_PORT}/admin'.format(
@@ -116,7 +133,7 @@ class ActivateTestCase(TestBaseEntity):
new_user = admin_conn.create_user(
uid=username, display_name='User "%s"' % username)
print("new_user = " + str(new_user))
- self.assertTrue(new_user['user_id'] != None)
+ self.assertTrue(new_user['user_id'] is not None)
get_user = admin_conn.get_user(new_user['user_id'])
self.assertTrue(new_user['user_id'] == get_user['user_id'])
@@ -129,17 +146,18 @@ class ActivateTestCase(TestBaseEntity):
print("S3_HOST = " + self.s3_host)
print("s3_port =" + str(self.s3_port))
- boto_conn = S3Connection(host=self.s3_host,
- port=self.s3_port,
- aws_access_key_id=s3aws_access_key_id,
- aws_secret_access_key=s3aws_secret_access_key,
- calling_format=OrdinaryCallingFormat(),
- is_secure=False,
- )
+ boto_conn = S3Connection(
+ host=self.s3_host,
+ port=self.s3_port,
+ aws_access_key_id=s3aws_access_key_id,
+ aws_secret_access_key=s3aws_secret_access_key,
+ calling_format=OrdinaryCallingFormat(),
+ is_secure=False,
+ )
boto_conn.num_retries = 0
bucketname = self.randomGenerator("randomString").lower()
new_bucket = boto_conn.create_bucket(bucketname)
- assertTrue(new_bucket != None)
+ assertTrue(new_bucket is not None)
print("new_bucket = " + str(new_bucket))
bucket = boto_conn.get_bucket(bucketname)
print("bucket = " + str(bucket))
@@ -149,27 +167,34 @@ class ActivateTestCase(TestBaseEntity):
def testGetSecretKey(self):
vm_client.send_create_user_in_rgwa_event(self.user)
urlStr = self.urlPrefix + 'users/account/rgwa/'
- print("urlStr of get secret key",urlStr)
+ print("urlStr of get secret key", urlStr)
self.printTestName("testGetSecretKey [Start]")
- response = self.c.get(urlStr, data={}, content_type='application/json',
- **{'HTTP_AUTHORIZATION': "token " + self.userToken})
+ response = self.c.get(
+ urlStr,
+ data={},
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token " + self.userToken})
print('Got response : ' + str(response.status_code))
dict_response = json.loads(response.content)
- print("api response",dict_response)
+ print("api response", dict_response)
self.assertTrue(dict_response["rgwa_secret_key"] is not None)
self.printTestName("testGetSecretKey [End]")
def testNegativeGetSecretKeyInvalidToken(self):
vm_client.send_create_user_in_rgwa_event(self.user)
urlStr = self.urlPrefix + 'users/account/rgwa/'
- print("urlStr of get secret key",urlStr)
+ print("urlStr of get secret key", urlStr)
self.printTestName("testGetSecretKey [Start]")
- response = self.c.get(urlStr, data={}, content_type='application/json',
- **{'HTTP_AUTHORIZATION': 'token' + self.new_user_token})
+ response = self.c.get(
+ urlStr,
+ data={},
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': 'token' + self.new_user_token})
print('Got response : ' + str(response.status_code))
dict_response = json.loads(response.content)
- print("api response",dict_response)
- self.assertTrue(dict_response[
- "detail"] == 'You must authenticate in order to ' +
- 'perform this action: Authentication credentials were not provided.')
+ print("api response", dict_response)
+ self.assertTrue(
+ dict_response["detail"] == 'You must authenticate in order to ' +
+ 'perform this action: Authentication ' +
+ 'credentials were not provided.')
self.printTestName("testGetSecretKey [End]")
diff --git a/django/engagementmanager/tests/test_activation.py b/django/engagementmanager/tests/test_activation.py
index a845373..25403dd 100644
--- a/django/engagementmanager/tests/test_activation.py
+++ b/django/engagementmanager/tests/test_activation.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -47,22 +47,43 @@ class ActivateTestCase(TestBaseEntity):
def childSetup(self): # Variables to use in this class.
self.urlStr = self.urlPrefix + "signup/"
self.createDefaultRoles()
- uuid, vendor = self.creator.createVendor(Constants.service_provider_company_name)
+ uuid, vendor = self.creator.createVendor(
+ Constants.service_provider_company_name)
self.activation_token_time = timezone.now()
- self.activation_token_time = self.activation_token_time.replace(2012, 1, 2, 13, 48, 25)
- print("This is the time that is going to be added to expiredTokenUser: " + str(self.activation_token_time))
- self.user = self.creator.createUser(vendor, self.randomGenerator("email"), self.randomGenerator(
- "randomNumber"), self.randomGenerator("randomString"), self.standard_user, False)
- self.expiredTokenUser = self.creator.createUser(vendor, self.randomGenerator("email"), self.randomGenerator(
- "randomNumber"), self.randomGenerator("randomString"), self.standard_user, False, activation_token_create_time=self.activation_token_time)
+ self.activation_token_time = self.activation_token_time.replace(
+ 2012, 1, 2, 13, 48, 25)
+ print("This is the time that is going " +
+ "to be added to expiredTokenUser: " +
+ str(self.activation_token_time))
+ self.user = self.creator.createUser(
+ vendor,
+ self.randomGenerator("email"),
+ self.randomGenerator("randomNumber"),
+ self.randomGenerator("randomString"),
+ self.standard_user,
+ False)
+ self.expiredTokenUser = self.creator.createUser(
+ vendor,
+ self.randomGenerator("email"),
+ self.randomGenerator("randomNumber"),
+ self.randomGenerator("randomString"),
+ self.standard_user,
+ False,
+ activation_token_create_time=self.activation_token_time)
print('-----------------------------------------------------')
print('Created User:')
print('UUID: ' + str(self.user.uuid))
print('Full Name: ' + self.user.full_name)
print('-----------------------------------------------------')
- self.params = '{"company":"' + str(self.user.company) + '","full_name":"' + self.user.full_name + '","email":"' + self.user.email + '","phone_number":"' + self.user.phone_number + \
- '","password":"' + self.user.user.password + '","regular_email_updates":"' + \
- str(self.user.regular_email_updates) + '","is_service_provider_contact":"' + str(self.user.is_service_provider_contact) + '"}'
+ self.params = '{"company":"' + str(self.user.company) + \
+ '","full_name":"' + self.user.full_name + '","email":"' + \
+ self.user.email + '","phone_number":"' + \
+ self.user.phone_number + \
+ '","password":"' + self.user.user.password + \
+ '","regular_email_updates":"' + \
+ str(self.user.regular_email_updates) + \
+ '","is_service_provider_contact":"' + \
+ str(self.user.is_service_provider_contact) + '"}'
def testActivation(self):
print("\n\n$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$")
@@ -70,12 +91,15 @@ class ActivateTestCase(TestBaseEntity):
print("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n\n")
for a in range(2):
print("###############################################")
- print(" Before activation, Current User's activation mode: " + str(self.user.user.is_active))
+ print(" Before activation, Current User's activation mode: " +
+ str(self.user.user.is_active))
for a in range(2):
print("###############################################")
user_uuid = self.user.uuid
- print(self.urlPrefix + 'activate/' + str(user_uuid) + '/' + str(self.user.user.activation_token))
- print("Activating through the activate_user function: (simulating a GET request)")
+ print(self.urlPrefix + 'activate/' + str(user_uuid) +
+ '/' + str(self.user.user.activation_token))
+ print("Activating through the activate_user function: " +
+ "(simulating a GET request)")
response = self.c.get(self.urlPrefix + 'activate/' + str(user_uuid) +
'/' + str(self.user.user.activation_token))
print("Response: " + str(response.status_code))
@@ -84,11 +108,13 @@ class ActivateTestCase(TestBaseEntity):
print("******")
for a in range(2):
print("###############################################")
- print(" Current User's activation mode: " + str(self.user.user.is_active))
+ print(" Current User's activation mode: " +
+ str(self.user.user.is_active))
for a in range(2):
print("###############################################")
- print("Current User's activation mode: " + str(self.user.user.is_active))
- if (self.user.user.is_active != True):
+ print("Current User's activation mode: " +
+ str(self.user.user.is_active))
+ if (not self.user.user.is_active):
for a in range(2):
print("###############################################")
print(" User's activation failed: is_active != True..")
@@ -108,23 +134,29 @@ class ActivateTestCase(TestBaseEntity):
print("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n\n")
for a in range(2):
print("###############################################")
- print("Current User's activation mode: " + str(self.user.user.is_active))
+ print("Current User's activation mode: " +
+ str(self.user.user.is_active))
for a in range(2):
print("###############################################")
- urlStrToGET = self.urlPrefix + "users/"
user_uuid = self.expiredTokenUser.uuid
- print("\n\nA user with was pre-initiated with old token creation time : 2012-01-02 13:48:25.299000+00:00\n\n")
- response = self.c.get(self.urlPrefix + 'activate/' + str(user_uuid) + '/' +
- str(self.expiredTokenUser.user.activation_token))
+ print("\n\nA user with was pre-initiated with old token " +
+ "creation time: 2012-01-02 13:48:25.299000+00:00\n\n")
+ self.c.get(
+ self.urlPrefix +
+ 'activate/' +
+ str(user_uuid) +
+ '/' +
+ str(self.expiredTokenUser.user.activation_token))
self.user.refresh_from_db()
for a in range(2):
print("###############################################")
- print(" Current User's activation mode: " + str(self.expiredTokenUser.user.is_active))
+ print(" Current User's activation mode: " +
+ str(self.expiredTokenUser.user.is_active))
for a in range(2):
print("###############################################")
print("\n\n")
- if (self.expiredTokenUser.user.activation_token != True):
+ if (not self.expiredTokenUser.user.activation_token):
for a in range(2):
print("###############################################")
print("Test Success!")
@@ -143,23 +175,27 @@ class ActivateTestCase(TestBaseEntity):
print("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n\n")
for a in range(2):
print("###############################################")
- print("Current User's activation mode: " + str(self.user.user.is_active))
+ print("Current User's activation mode: " +
+ str(self.user.user.is_active))
for a in range(2):
print("###############################################")
- urlStrToGET = self.urlPrefix + "users/"
- user_uuid = self.expiredTokenUser.uuid
print("\n\n Trying to activate a user with an unmatching token")
- response = self.c.get(self.urlPrefix + 'activate/' + str(self.user.uuid) +
- '/' + str(self.expiredTokenUser.user.activation_token))
+ self.c.get(
+ self.urlPrefix +
+ 'activate/' +
+ str(self.user.uuid) +
+ '/' +
+ str(self.expiredTokenUser.user.activation_token))
self.user.refresh_from_db()
for a in range(2):
print("###############################################")
- print(" Current User's activation mode: " + str(self.expiredTokenUser.user.is_active))
+ print(" Current User's activation mode: " +
+ str(self.expiredTokenUser.user.is_active))
for a in range(2):
print("###############################################")
print("\n\n")
- if (self.expiredTokenUser.user.activation_token != True):
+ if (not self.expiredTokenUser.user.activation_token):
for a in range(2):
print("###############################################")
print("Test Success!")
diff --git a/django/engagementmanager/tests/test_activities.py b/django/engagementmanager/tests/test_activities.py
index 9e83e9f..65b5bef 100644
--- a/django/engagementmanager/tests/test_activities.py
+++ b/django/engagementmanager/tests/test_activities.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -36,9 +36,11 @@
# ============LICENSE_END============================================
#
# ECOMP is a trademark and service mark of AT&T Intellectual Property.
-from engagementmanager.bus.messages.activity_event_message import ActivityEventMessage
+from engagementmanager.bus.messages.activity_event_message \
+ import ActivityEventMessage
from engagementmanager.models import Vendor
-from engagementmanager.utils.activities_data import UserJoinedEngagementActivityData
+from engagementmanager.utils.activities_data import \
+ UserJoinedEngagementActivityData
from engagementmanager.tests.test_base_entity import TestBaseEntity
from engagementmanager.utils.constants import Constants
from engagementmanager.apps import bus_service
@@ -54,14 +56,30 @@ class ActivityTestCase(TestBaseEntity):
self.createDefaultRoles()
# Create a user with role el
- vendor = Vendor.objects.get(name=Constants.service_provider_company_name)
- self.el_user = self.creator.createUser(vendor, self.randomGenerator(
- "main-vendor-email"), self.randomGenerator("randomNumber"), self.randomGenerator("randomString"), self.el, True)
+ vendor = Vendor.objects.get(
+ name=Constants.service_provider_company_name)
+ self.el_user = self.creator.createUser(
+ vendor,
+ self.randomGenerator("main-vendor-email"),
+ self.randomGenerator("randomNumber"),
+ self.randomGenerator("randomString"),
+ self.el,
+ True)
vendor = Vendor.objects.get(name='Other')
- self.user = self.creator.createUser(vendor, self.randomGenerator("email"), self.randomGenerator(
- "randomNumber"), self.randomGenerator("randomString"), self.standard_user, True)
- self.pruser = self.creator.createUser(vendor, self.randomGenerator("email"), self.randomGenerator(
- "randomNumber"), self.randomGenerator("randomString"), self.standard_user, True)
+ self.user = self.creator.createUser(
+ vendor,
+ self.randomGenerator("email"),
+ self.randomGenerator("randomNumber"),
+ self.randomGenerator("randomString"),
+ self.standard_user,
+ True)
+ self.pruser = self.creator.createUser(
+ vendor,
+ self.randomGenerator("email"),
+ self.randomGenerator("randomNumber"),
+ self.randomGenerator("randomString"),
+ self.standard_user,
+ True)
# Create an Engagement with team
self.engagement = self.creator.createEngagement(self.randomGenerator(
@@ -73,9 +91,14 @@ class ActivityTestCase(TestBaseEntity):
# Create a VF
self.deploymentTarget = self.creator.createDeploymentTarget(
- self.randomGenerator("randomString"), self.randomGenerator("randomString"))
- self.vf = self.creator.createVF(self.randomGenerator("randomString"),
- self.engagement, self.deploymentTarget, False, vendor)
+ self.randomGenerator("randomString"),
+ self.randomGenerator("randomString"))
+ self.vf = self.creator.createVF(
+ self.randomGenerator("randomString"),
+ self.engagement,
+ self.deploymentTarget,
+ False,
+ vendor)
self.token = self.loginAndCreateSessionToken(self.user)
def testCreateActivity(self):
@@ -84,42 +107,57 @@ class ActivityTestCase(TestBaseEntity):
logger.debug("Starting activity test: User joined")
vendor = Vendor.objects.get(name='Other')
- randomUser = self.creator.createUser(vendor, self.randomGenerator("email"), self.randomGenerator(
- "randomNumber"), self.randomGenerator("randomString"), self.standard_user, True)
+ randomUser = self.creator.createUser(
+ vendor,
+ self.randomGenerator("email"),
+ self.randomGenerator("randomNumber"),
+ self.randomGenerator("randomString"),
+ self.standard_user,
+ True)
self.engagement.engagement_team.add(randomUser)
self.engagement.save()
logger.debug(
- "created a new user & added them to the engagement team, going to create the activity and consider it as a notification")
+ "created a new user & added them to the engagement team, \
+ going to create the activity and consider it as a notification")
usersList = []
usersList.append(randomUser)
- activity_data = UserJoinedEngagementActivityData(self.vf, usersList, self.engagement)
+ activity_data = UserJoinedEngagementActivityData(
+ self.vf, usersList, self.engagement)
bus_service.send_message(ActivityEventMessage(activity_data))
logger.debug(
- "activity & notification created successfully, please manually verify that an email was sent / MX server tried to send")
+ "activity & notification created successfully, \
+ please manually verify that an email was sent / MX server \
+ tried to send")
logger.debug("Ended activity test: User joined ")
logger.debug("Starting pullActivities test")
- response = self.c.get(urlStr.replace('${uuid}', str(self.engagement.uuid)),
+ response = self.c.get(urlStr.replace('${uuid}',
+ str(self.engagement.uuid)),
**{'HTTP_AUTHORIZATION': "token " + self.token})
content = response.content
status = response.status_code
logger.debug("Got response : " + str(status))
logger.debug("Got content : " + str(content))
if (status != 200):
- logger.error("Got response : " + str(status) + " , wrong http response returned ")
+ logger.error("Got response : " + str(status) +
+ " , wrong http response returned ")
self.assertEqual(response.status_code, 200)
logger.debug("Ended pullActivities test ")
logger.debug("Starting activity test: delete user")
- logger.debug("Verify that the 'User Joined' activity is deleted from the recent activities")
- response = self.c.get(urlStr.replace('${uuid}', str(self.engagement.uuid)),
+ logger.debug(
+ "Verify that the 'User Joined' activity \
+ is deleted from the recent activities")
+ response = self.c.get(urlStr.replace('${uuid}',
+ str(self.engagement.uuid)),
**{'HTTP_AUTHORIZATION': "token " + self.token})
content = response.content
status = response.status_code
logger.debug("Got response : " + str(status))
logger.debug("Got content : " + str(content))
if (status != 200):
- logger.error("Got response : " + str(status) + " , wrong http response returned ")
+ logger.error("Got response : " + str(status) +
+ " , wrong http response returned ")
self.assertEqual(response.status_code, 200)
logger.debug("Ended activity test: delete user ")
diff --git a/django/engagementmanager/tests/test_add_contact.py b/django/engagementmanager/tests/test_add_contact.py
index c1af553..95b7713 100644
--- a/django/engagementmanager/tests/test_add_contact.py
+++ b/django/engagementmanager/tests/test_add_contact.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -37,7 +37,6 @@
#
# ECOMP is a trademark and service mark of AT&T Intellectual Property.
import json
-import random
from engagementmanager.tests.test_base_entity import TestBaseEntity
from engagementmanager.models import Vendor
from engagementmanager.utils.constants import Constants
@@ -52,20 +51,29 @@ class TestAddContactTestCase(TestBaseEntity):
self.createDefaultRoles()
# Create a user with role el
- self.el_user = self.creator.createUser(Vendor.objects.get(
- name=Constants.service_provider_company_name), self.randomGenerator(
- "main-vendor-email"), '55501000199', 'el user', self.el, True)
-
- self.inviter = self.creator.createUser(Vendor.objects.get(
- name='Other'), self.randomGenerator(
- "main-vendor-email"), '55501000199', 'inviter user', self.standard_user, True)
+ self.el_user = self.creator.createUser(
+ Vendor.objects.get(
+ name=Constants.service_provider_company_name),
+ self.randomGenerator(
+ "main-vendor-email"), '55501000199', 'el user', self.el, True)
+
+ self.inviter = self.creator.createUser(
+ Vendor.objects.get(
+ name='Other'),
+ self.randomGenerator("main-vendor-email"),
+ '55501000199',
+ 'inviter user',
+ self.standard_user,
+ True)
self.reviewer = self.creator.createUser(Vendor.objects.get(
name='Other'), self.randomGenerator(
- "main-vendor-email"), '55501000199', 'reviewer user', self.el, True)
+ "main-vendor-email"), '55501000199',
+ 'reviewer user', self.el, True)
self.peer_reviewer = self.creator.createUser(Vendor.objects.get(
name='Other'), self.randomGenerator(
- "main-vendor-email"), '55501000199', 'peer-reviewer user', self.el, True)
+ "main-vendor-email"), '55501000199', 'peer-reviewer user',
+ self.el, True)
# Create an Engagement with team
self.engagement = self.creator.createEngagement(
'123456789', 'Validation', None)
@@ -80,40 +88,53 @@ class TestAddContactTestCase(TestBaseEntity):
# Create a VF
self.deploymentTarget = self.creator.createDeploymentTarget(
- self.randomGenerator("randomString"), self.randomGenerator("randomString"))
- self.vf = self.creator.createVF(self.randomGenerator("randomString"), self.engagement,
- self.deploymentTarget, False, Vendor.objects.get(name='Other'))
+ self.randomGenerator("randomString"),
+ self.randomGenerator("randomString"))
+ self.vf = self.creator.createVF(
+ self.randomGenerator("randomString"),
+ self.engagement,
+ self.deploymentTarget,
+ False,
+ Vendor.objects.get(
+ name='Other'))
self.urlStr = self.urlPrefix + "add-contact/"
self.data = dict()
self.token = self.loginAndCreateSessionToken(self.el_user)
def initBody(self):
- self.data['company'] = Vendor.objects.get(name=Constants.service_provider_company_name).name
+ self.data['company'] = Vendor.objects.get(
+ name=Constants.service_provider_company_name).name
self.data['full_name'] = "full name"
self.data['email'] = self.randomGenerator("main-vendor-email")
self.data['phone_number'] = "12345"
def addContact(self, expectedStatus=200):
self.contactData = json.dumps(self.data, ensure_ascii=False)
- response = self.c.post(self.urlStr, self.contactData, content_type='application/json',
- **{'HTTP_AUTHORIZATION': "token " + self.token})
+ response = self.c.post(
+ self.urlStr,
+ self.contactData,
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token " + self.token})
print('Got response : ' + str(response.status_code))
self.assertEqual(response.status_code, expectedStatus)
return response
def createContactUser(self):
- self.contact = self.creator.createUser(Vendor.objects.get(
- name=Constants.service_provider_company_name), self.data['email'],
- self.data['phone_number'], self.data['full_name'], self.standard_user, True)
+ self.contact = self.creator.createUser(
+ Vendor.objects.get(
+ name=Constants.service_provider_company_name),
+ self.data['email'],
+ self.data['phone_number'],
+ self.data['full_name'],
+ self.standard_user,
+ True)
print('-----------------------------------------------------')
print('Created User:')
print('UUID: ' + str(self.contact.uuid))
print('Full Name: ' + self.contact.full_name)
print('-----------------------------------------------------')
- ### TESTS ###
-
def testAddContactForNonExistingContact(self):
self.initBody()
self.data['eng_uuid'] = str(self.engagement.uuid)
@@ -130,12 +151,14 @@ class TestAddContactTestCase(TestBaseEntity):
self.initBody()
self.data['eng_uuid'] = str(self.engagement.uuid)
self.data['email'] = None
- print("Negative test: removing mandatory field email --> Should fail on 400")
+ print("Negative test: removing mandatory field email --> " +
+ "Should fail on 400")
self.addContact(400)
def testNegativeAddContactForExistingContactAndFakeEngUUID(self):
self.initBody()
self.createContactUser()
self.data['eng_uuid'] = "FakeUuid"
- print("Negative test: Non existing engagement UUID --> Should fail on 500")
+ print("Negative test: Non existing engagement UUID --> " +
+ "Should fail on 500")
self.addContact(401)
diff --git a/django/engagementmanager/tests/test_add_feedback.py b/django/engagementmanager/tests/test_add_feedback.py
index 33382aa..c7f5923 100644
--- a/django/engagementmanager/tests/test_add_feedback.py
+++ b/django/engagementmanager/tests/test_add_feedback.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -37,13 +37,11 @@
#
# ECOMP is a trademark and service mark of AT&T Intellectual Property.
import json
-import random
from rest_framework.status import HTTP_200_OK, HTTP_400_BAD_REQUEST
from engagementmanager.tests.test_base_entity import TestBaseEntity
from engagementmanager.models import Vendor
from engagementmanager.utils.constants import Constants
-from engagementmanager.utils.request_data_mgr import request_data_mgr
class TestAddContactTestCase(TestBaseEntity):
@@ -52,8 +50,14 @@ class TestAddContactTestCase(TestBaseEntity):
self.createVendors([Constants.service_provider_company_name, 'Other'])
self.createDefaultRoles()
- self.reviewer = self.creator.createUser(Vendor.objects.get(
- name='Other'), self.randomGenerator("main-vendor-email"), '55501000199', 'reviewer user', self.el, True)
+ self.reviewer = self.creator.createUser(
+ Vendor.objects.get(
+ name='Other'),
+ self.randomGenerator("main-vendor-email"),
+ '55501000199',
+ 'reviewer user',
+ self.el,
+ True)
self.peer_reviewer = self.creator.createUser(Vendor.objects.get(
name='Other'), self.randomGenerator("main-vendor-email"),
'55501000199', 'peer-reviewer user', self.el, True)
@@ -70,9 +74,15 @@ class TestAddContactTestCase(TestBaseEntity):
# Create a VF
self.deploymentTarget = self.creator.createDeploymentTarget(
- self.randomGenerator("randomString"), self.randomGenerator("randomString"))
- self.vf = self.creator.createVF(self.randomGenerator("randomString"), self.engagement,
- self.deploymentTarget, False, Vendor.objects.get(name='Other'))
+ self.randomGenerator("randomString"),
+ self.randomGenerator("randomString"))
+ self.vf = self.creator.createVF(
+ self.randomGenerator("randomString"),
+ self.engagement,
+ self.deploymentTarget,
+ False,
+ Vendor.objects.get(
+ name='Other'))
self.urlStr = self.urlPrefix + "add-feedback/"
self.data = dict()
@@ -80,18 +90,20 @@ class TestAddContactTestCase(TestBaseEntity):
def initBody(self):
self.data['description'] = Vendor.objects.get(
- name=Constants.service_provider_company_name).name + "ruslan gafiulin"
+ name=Constants.service_provider_company_name).name \
+ + "ruslan gafiulin"
def addFeedback(self, expectedStatus=HTTP_200_OK):
self.feedbackData = json.dumps(self.data, ensure_ascii=False)
- response = self.c.post(self.urlStr, self.feedbackData, content_type='application/json',
- **{'HTTP_AUTHORIZATION': "token " + self.token})
+ response = self.c.post(self.urlStr,
+ self.feedbackData,
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token "
+ + self.token})
print('Got response : ' + str(response.status_code))
self.assertEqual(response.status_code, expectedStatus)
return response
- ### TESTS ###
-
def testAddFeedbackForNonExistingContact(self):
self.initBody()
self.data['description'] = str(self.engagement.uuid)
diff --git a/django/engagementmanager/tests/test_add_next_step_to_checklist.py b/django/engagementmanager/tests/test_add_next_step_to_checklist.py
index e88cddd..21301af 100644
--- a/django/engagementmanager/tests/test_add_next_step_to_checklist.py
+++ b/django/engagementmanager/tests/test_add_next_step_to_checklist.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -50,13 +50,19 @@ class TestAddNextStepToChecklistTestCase(TestBaseEntity):
def childSetup(self):
self.createVendors([Constants.service_provider_company_name, 'Other'])
- self.vendor = Vendor.objects.get(name=Constants.service_provider_company_name)
+ self.vendor = Vendor.objects.get(
+ name=Constants.service_provider_company_name)
self.createDefaultRoles()
# Create a user with role el
- self.el_user = self.creator.createUser(Vendor.objects.get(
- name=Constants.service_provider_company_name), self.randomGenerator("main-vendor-email"),
- '55501000199', 'el user', self.el, True)
+ self.el_user = self.creator.createUser(
+ Vendor.objects.get(
+ name=Constants.service_provider_company_name),
+ self.randomGenerator("main-vendor-email"),
+ '55501000199',
+ 'el user',
+ self.el,
+ True)
print('-----------------------------------------------------')
print('Created User:')
print('UUID: ' + str(self.el_user.uuid))
@@ -64,17 +70,28 @@ class TestAddNextStepToChecklistTestCase(TestBaseEntity):
print('-----------------------------------------------------')
# Create a user with role el
- self.peer_reviewer_user = self.creator.createUser(Vendor.objects.get(
- name=Constants.service_provider_company_name), self.randomGenerator("main-vendor-email"),
- '55501000199', 'peer-reviewer user', self.el, True)
+ self.peer_reviewer_user = self.creator.createUser(
+ Vendor.objects.get(
+ name=Constants.service_provider_company_name),
+ self.randomGenerator("main-vendor-email"),
+ '55501000199',
+ 'peer-reviewer user',
+ self.el,
+ True)
print('-----------------------------------------------------')
print('Created User:')
print('UUID: ' + str(self.el_user.uuid))
print('Full Name: ' + self.el_user.full_name)
print('-----------------------------------------------------')
- self.user2 = self.creator.createUser(Vendor.objects.get(
- name='Other'), self.randomGenerator("main-vendor-email"), '55501000199', 'user', self.standard_user, True)
+ self.user2 = self.creator.createUser(
+ Vendor.objects.get(
+ name='Other'),
+ self.randomGenerator("main-vendor-email"),
+ '55501000199',
+ 'user',
+ self.standard_user,
+ True)
print('-----------------------------------------------------')
print('Created User:')
print('UUID: ' + str(self.user2.uuid))
@@ -82,7 +99,8 @@ class TestAddNextStepToChecklistTestCase(TestBaseEntity):
print('-----------------------------------------------------')
# Create an Engagement with team
- self.engagement = self.creator.createEngagement('123456789', 'Validation', None)
+ self.engagement = self.creator.createEngagement(
+ '123456789', 'Validation', None)
self.engagement.reviewer = self.el_user
self.engagement.engagement_team.add(self.el_user)
self.engagement.peer_reviewer = self.peer_reviewer_user
@@ -93,9 +111,14 @@ class TestAddNextStepToChecklistTestCase(TestBaseEntity):
print('-----------------------------------------------------')
self.deploymentTarget = self.creator.createDeploymentTarget(
- self.randomGenerator("randomString"), self.randomGenerator("randomString"))
- self.vf = self.creator.createVF(self.randomGenerator("randomString"),
- self.engagement, self.deploymentTarget, False, self.vendor)
+ self.randomGenerator("randomString"),
+ self.randomGenerator("randomString"))
+ self.vf = self.creator.createVF(
+ self.randomGenerator("randomString"),
+ self.engagement,
+ self.deploymentTarget,
+ False,
+ self.vendor)
print('-----------------------------------------------------')
print('Created VF:')
print('UUID: ' + str(self.vf.uuid))
@@ -111,10 +134,15 @@ class TestAddNextStepToChecklistTestCase(TestBaseEntity):
self.token = self.loginAndCreateSessionToken(self.el_user)
datajson = json.dumps(self.data, ensure_ascii=False)
self.clUrlStr = self.urlPrefix + "engagement/@eng_uuid/checklist/new/"
- self.checklist = self.c.post(self.clUrlStr.replace("@eng_uuid", str(self.engagement.uuid)),
- datajson, content_type='application/json', **{'HTTP_AUTHORIZATION': "token " + self.token})
-
- self.urlStr = self.urlPrefix + "engagement/@eng_uuid/checklist/@checklist_uuid/nextstep/"
+ self.checklist = self.c.post(
+ self.clUrlStr.replace(
+ "@eng_uuid", str(
+ self.engagement.uuid)), datajson,
+ content_type='application/json', **{
+ 'HTTP_AUTHORIZATION': "token " + self.token})
+
+ self.urlStr = self.urlPrefix + \
+ "engagement/@eng_uuid/checklist/@checklist_uuid/nextstep/"
self.nextStepList = []
def initBody(self):
@@ -137,9 +165,14 @@ class TestAddNextStepToChecklistTestCase(TestBaseEntity):
def testAddNextStepForCheckListPositive(self):
self.initBody()
self.nextStepList = json.dumps(self.nextStepList, ensure_ascii=False)
- self.urlStr = self.urlStr.replace("@checklist_uuid", json.loads(self.checklist.content)[
- 'uuid']).replace("@eng_uuid", str(self.engagement.uuid))
- response = self.c.post(self.urlStr, self.nextStepList, content_type='application/json',
+ self.urlStr = self.urlStr.replace(
+ "@checklist_uuid", json.loads(
+ self.checklist.content)['uuid']).replace(
+ "@eng_uuid", str(
+ self.engagement.uuid))
+ response = self.c.post(self.urlStr,
+ self.nextStepList,
+ content_type='application/json',
**{'HTTP_AUTHORIZATION': "token " + self.token})
print('Got response : ' + str(response.status_code))
self.assertEqual(response.status_code, HTTP_200_OK)
@@ -150,8 +183,11 @@ class TestAddNextStepToChecklistTestCase(TestBaseEntity):
self.nextStepList = json.dumps(self.nextStepList, ensure_ascii=False)
self.urlStr = self.urlStr.replace("@checklist_uuid", json.loads(
self.checklist.content)['uuid']).replace("@eng_uuid", str(uuid4()))
- response = self.c.post(self.urlStr, self.nextStepList, content_type='application/json',
+ response = self.c.post(self.urlStr,
+ self.nextStepList,
+ content_type='application/json',
**{'HTTP_AUTHORIZATION': "token " + self.token})
- print('------------------------------> Got response : ' + str(response.status_code))
+ print('------------------------------> Got response : ' +
+ str(response.status_code))
self.assertEqual(response.status_code, HTTP_401_UNAUTHORIZED)
return response
diff --git a/django/engagementmanager/tests/test_audit_log_and_decision_api.py b/django/engagementmanager/tests/test_audit_log_and_decision_api.py
index 42395ae..7614a84 100644
--- a/django/engagementmanager/tests/test_audit_log_and_decision_api.py
+++ b/django/engagementmanager/tests/test_audit_log_and_decision_api.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -41,9 +41,11 @@ from uuid import uuid4
from rest_framework.status import HTTP_200_OK, HTTP_400_BAD_REQUEST,\
HTTP_401_UNAUTHORIZED, HTTP_500_INTERNAL_SERVER_ERROR,\
HTTP_405_METHOD_NOT_ALLOWED
-from engagementmanager.models import Vendor, Checklist, ChecklistAuditLog, ChecklistDecision, ChecklistLineItem, ChecklistSection
+from engagementmanager.models import Vendor, Checklist, ChecklistAuditLog, \
+ ChecklistDecision, ChecklistLineItem, ChecklistSection
from engagementmanager.tests.test_base_entity import TestBaseEntity
-from engagementmanager.utils.constants import CheckListLineType, CheckListDecisionValue, CheckListState, Constants
+from engagementmanager.utils.constants import CheckListLineType, \
+ CheckListDecisionValue, CheckListState, Constants
from engagementmanager.service.logging_service import LoggingServiceFactory
logger = LoggingServiceFactory.get_logger()
@@ -53,19 +55,31 @@ class AuditLogAndDecisionAPITest(TestBaseEntity):
def childSetup(self):
- self.createVendors([Constants.service_provider_company_name, 'Amdocs', 'Other'])
+ self.createVendors(
+ [Constants.service_provider_company_name, 'Amdocs', 'Other'])
self.createDefaultRoles()
# Create a user with role el
- self.el_user = self.creator.createUser(Vendor.objects.get(
- name=Constants.service_provider_company_name), self.randomGenerator("main-vendor-email"), '12323245435', 'el user', self.el, True)
+ self.el_user = self.creator.createUser(
+ Vendor.objects.get(
+ name=Constants.service_provider_company_name),
+ self.randomGenerator("main-vendor-email"),
+ '12323245435',
+ 'el user',
+ self.el,
+ True)
self.peer_reviewer = self.creator.createUser(Vendor.objects.get(
name='Other'), self.randomGenerator("main-vendor-email"),
'55501000199', 'peer-reviewer user', self.el, True)
# For negative tests
self.user = self.creator.createUser(
- Vendor.objects.get(name=Constants.service_provider_company_name),
- self.randomGenerator("main-vendor-email"), '12323245435', 'user', self.standard_user, True)
+ Vendor.objects.get(
+ name=Constants.service_provider_company_name),
+ self.randomGenerator("main-vendor-email"),
+ '12323245435',
+ 'user',
+ self.standard_user,
+ True)
self.template = self.creator.createDefaultCheckListTemplate()
self.engagement = self.creator.createEngagement(
@@ -77,14 +91,36 @@ class AuditLogAndDecisionAPITest(TestBaseEntity):
self.clbodydata = dict()
self.initCLBody()
self.auditdata = dict()
- self.checklist = Checklist.objects.create(uuid=uuid4(), name=self.clbodydata['checkListName'], validation_cycle=1, associated_files=self.clbodydata[
- 'checkListAssociatedFiles'], engagement=self.engagement, template=self.template, creator=self.el_user, owner=self.el_user)
- self.section = ChecklistSection.objects.create(uuid=uuid4(), name=self.randomGenerator("randomString"), weight=1.0, description=self.randomGenerator(
- "randomString"), validation_instructions=self.randomGenerator("randomString"), template=self.template)
- self.line_item = ChecklistLineItem.objects.create(uuid=uuid4(), name=self.randomGenerator("randomString"), weight=1.0, description=self.randomGenerator(
- "randomString"), line_type=CheckListLineType.auto.name, validation_instructions=self.randomGenerator("randomString"), template=self.template, section=self.section) # @UndefinedVariable
+ self.checklist = Checklist.objects.create(
+ uuid=uuid4(),
+ name=self.clbodydata['checkListName'],
+ validation_cycle=1,
+ associated_files=self.clbodydata['checkListAssociatedFiles'],
+ engagement=self.engagement,
+ template=self.template,
+ creator=self.el_user,
+ owner=self.el_user)
+ self.section = ChecklistSection.objects.create(
+ uuid=uuid4(),
+ name=self.randomGenerator("randomString"),
+ weight=1.0,
+ description=self.randomGenerator("randomString"),
+ validation_instructions=self.randomGenerator("randomString"),
+ template=self.template)
+ self.line_item = ChecklistLineItem.objects.create(
+ uuid=uuid4(),
+ name=self.randomGenerator("randomString"),
+ weight=1.0,
+ description=self.randomGenerator("randomString"),
+ line_type=CheckListLineType.auto.name,
+ validation_instructions=self.randomGenerator("randomString"),
+ template=self.template,
+ section=self.section) # @UndefinedVariable
self.decision = ChecklistDecision.objects.create(
- uuid=uuid4(), checklist=self.checklist, template=self.template, lineitem=self.line_item)
+ uuid=uuid4(),
+ checklist=self.checklist,
+ template=self.template,
+ lineitem=self.line_item)
self.section.save()
self.line_item.save()
self.decision.save()
@@ -96,10 +132,13 @@ class AuditLogAndDecisionAPITest(TestBaseEntity):
self.clbodydata['checkListName'] = "ice-checklist-for-test"
self.clbodydata['checkListTemplateUuid'] = str(self.template.uuid)
self.clbodydata[
- 'checkListAssociatedFiles'] = "[\"file0/f69f4ce7-51d5-409c-9d0e-ec6b1e79df28\", \"file1/f69f4ce7-51d5-409c-9d0e-ec6b1e79df28\", \"file2/f69f4ce7-51d5-409c-9d0e-ec6b1e79df28\"]"
+ 'checkListAssociatedFiles'] = "\
+ [\"file0/f69f4ce7-51d5-409c-9d0e-ec6b1e79df28\",\
+ \"file1/f69f4ce7-51d5-409c-9d0e-ec6b1e79df28\",\
+ \"file2/f69f4ce7-51d5-409c-9d0e-ec6b1e79df28\"]"
- def loggerTestFailedOrSucceded(self, bool):
- if bool:
+ def loggerTestFailedOrSucceded(self, bool_flag):
+ if bool_flag:
logger.debug("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$")
logger.debug(" Test Succeeded")
logger.debug("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n\n")
@@ -119,8 +158,12 @@ class AuditLogAndDecisionAPITest(TestBaseEntity):
self.auditdata['description'] = "description text"
datajson = json.dumps(self.auditdata, ensure_ascii=False)
- response = self.c.post(self.urlStr.replace("@cl_uuid", str(self.checklist.uuid)), datajson,
- content_type='application/json', **{'HTTP_AUTHORIZATION': "token " + self.ELtoken})
+ response = self.c.post(self.urlStr.replace("@cl_uuid",
+ str(self.checklist.uuid)),
+ datajson,
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token "
+ + self.ELtoken})
logger.debug('Got response : ' + str(response.status_code) +
" Expecting " + str(HTTP_200_OK))
@@ -140,7 +183,8 @@ class AuditLogAndDecisionAPITest(TestBaseEntity):
def testCreateAuditLogViaChecklistNegativeEmptyDescription(self):
logger.debug("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$")
logger.debug(
- " Negative Test started: Create AuditLog Via Checklist with empty description")
+ " Negative Test started: Create AuditLog Via \
+ Checklist with empty description")
logger.debug("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n\n")
self.urlStr = self.urlPrefix + "checklist/@cl_uuid/auditlog/"
@@ -150,8 +194,12 @@ class AuditLogAndDecisionAPITest(TestBaseEntity):
self.auditdata['description'] = ""
datajson = json.dumps(self.auditdata, ensure_ascii=False)
- response = self.c.post(self.urlStr.replace("@cl_uuid", str(self.checklist.uuid)), datajson,
- content_type='application/json', **{'HTTP_AUTHORIZATION': "token " + self.ELtoken})
+ response = self.c.post(self.urlStr.replace("@cl_uuid",
+ str(self.checklist.uuid)),
+ datajson,
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token "
+ + self.ELtoken})
logger.debug('Got response : ' + str(response.status_code) +
" Expecting " + str(HTTP_400_BAD_REQUEST))
@@ -165,7 +213,8 @@ class AuditLogAndDecisionAPITest(TestBaseEntity):
def testCreateAuditLogViaChecklistNegativeBadCLUuid(self):
logger.debug("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$")
logger.debug(
- " Negative Test started: Create AuditLog Via Checklist with bad CL uuid")
+ " Negative Test started: Create AuditLog Via \
+ Checklist with bad CL uuid")
logger.debug("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n\n")
self.urlStr = self.urlPrefix + "checklist/@cl_uuid/auditlog/"
@@ -175,8 +224,11 @@ class AuditLogAndDecisionAPITest(TestBaseEntity):
self.auditdata['description'] = "description text"
datajson = json.dumps(self.auditdata, ensure_ascii=False)
- response = self.c.post(self.urlStr.replace("@cl_uuid", str(uuid4())),
- datajson, content_type='application/json', **{'HTTP_AUTHORIZATION': "token " + self.token})
+ response = self.c.post(self.urlStr.replace("@cl_uuid",
+ str(uuid4())),
+ datajson,
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token " + self.token})
logger.debug('Got response : ' + str(response.status_code) +
" Expecting " + str(HTTP_500_INTERNAL_SERVER_ERROR))
@@ -192,15 +244,20 @@ class AuditLogAndDecisionAPITest(TestBaseEntity):
logger.debug(" Test started: Create AuditLog Via Decision")
logger.debug("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n\n")
- self.urlStr = self.urlPrefix + "checklist/decision/@decision_uuid/auditlog/"
+ self.urlStr = self.urlPrefix + \
+ "checklist/decision/@decision_uuid/auditlog/"
logger.debug("Creating a checklist")
self.auditdata['description'] = "description text"
datajson = json.dumps(self.auditdata, ensure_ascii=False)
- response = self.c.post(self.urlStr.replace("@decision_uuid", str(self.decision.uuid)), datajson,
- content_type='application/json', **{'HTTP_AUTHORIZATION': "token " + self.ELtoken})
+ response = self.c.post(self.urlStr.replace("@decision_uuid",
+ str(self.decision.uuid)),
+ datajson,
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token "
+ + self.ELtoken})
logger.debug('Got response : ' + str(response.status_code) +
" Expecting " + str(HTTP_200_OK))
@@ -214,18 +271,24 @@ class AuditLogAndDecisionAPITest(TestBaseEntity):
def testCreateAuditLogViaDecisionNegativeEmptyDescription(self):
logger.debug("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$")
logger.debug(
- " Negative Test started: Create AuditLog Via Decision with empty description")
+ " Negative Test started: Create AuditLog Via \
+ Decision with empty description")
logger.debug("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n\n")
- self.urlStr = self.urlPrefix + "checklist/decision/@decision_uuid/auditlog/"
+ self.urlStr = self.urlPrefix + \
+ "checklist/decision/@decision_uuid/auditlog/"
logger.debug("Creating a checklist")
self.auditdata['description'] = ""
datajson = json.dumps(self.auditdata, ensure_ascii=False)
- response = self.c.post(self.urlStr.replace("@decision_uuid", str(self.decision.uuid)), datajson,
- content_type='application/json', **{'HTTP_AUTHORIZATION': "token " + self.ELtoken})
+ response = self.c.post(self.urlStr.replace("@decision_uuid",
+ str(self.decision.uuid)),
+ datajson,
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token "
+ + self.ELtoken})
logger.debug('Got response : ' + str(response.status_code) +
" Expecting " + str(HTTP_400_BAD_REQUEST))
@@ -239,18 +302,24 @@ class AuditLogAndDecisionAPITest(TestBaseEntity):
def testCreateAuditLogViaDecisionNegativeBadCLUuid(self):
logger.debug("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$")
logger.debug(
- " Negative Test started: Create AuditLog Via Decision with bad Decision uuid")
+ " Negative Test started: Create AuditLog Via \
+ Decision with bad Decision uuid")
logger.debug("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n\n")
- self.urlStr = self.urlPrefix + "checklist/decision/@decision_uuid/auditlog/"
+ self.urlStr = self.urlPrefix + \
+ "checklist/decision/@decision_uuid/auditlog/"
logger.debug("Creating a checklist")
self.auditdata['description'] = "description text"
datajson = json.dumps(self.auditdata, ensure_ascii=False)
- response = self.c.post(self.urlStr.replace("@decision_uuid", str(uuid4())), datajson,
- content_type='application/json', **{'HTTP_AUTHORIZATION': "token " + self.ELtoken})
+ response = self.c.post(self.urlStr.replace("@decision_uuid",
+ str(uuid4())),
+ datajson,
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token "
+ + self.ELtoken})
logger.debug('Got response : ' + str(response.status_code) +
" Expecting " + str(HTTP_400_BAD_REQUEST))
@@ -270,20 +339,25 @@ class AuditLogAndDecisionAPITest(TestBaseEntity):
logger.debug("Creating a checklist")
- self.checklist.state = CheckListState.review.name # @UndefinedVariable
+ self.checklist.state = CheckListState.review.name
self.checklist.owner = self.el_user
self.checklist.save()
# @UndefinedVariable
self.auditdata['value'] = CheckListDecisionValue.approved.name
datajson = json.dumps(self.auditdata, ensure_ascii=False)
- response = self.c.put(self.urlStr.replace("@decision_uuid", str(self.decision.uuid)), datajson,
- content_type='application/json', **{'HTTP_AUTHORIZATION': "token " + self.ELtoken})
+ response = self.c.put(
+ self.urlStr.replace("@decision_uuid",
+ str(self.decision.uuid)),
+ datajson,
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token " + self.ELtoken})
logger.debug('Got response : ' + str(response.status_code) +
" Expecting " + str(HTTP_200_OK))
check = ChecklistDecision.objects.get(checklist=self.checklist)
- if (response.status_code == HTTP_200_OK and check.review_value == 'approved'):
+ if (response.status_code == HTTP_200_OK and
+ check.review_value == 'approved'):
self.loggerTestFailedOrSucceded(True)
self.assertEqual(response.status_code, HTTP_200_OK)
else:
@@ -299,15 +373,19 @@ class AuditLogAndDecisionAPITest(TestBaseEntity):
logger.debug("Creating a checklist")
- self.checklist.state = CheckListState.review.name # @UndefinedVariable
+ self.checklist.state = CheckListState.review.name
self.checklist.owner = self.user
self.checklist.save()
# @UndefinedVariable
self.auditdata['value'] = CheckListDecisionValue.approved.name
datajson = json.dumps(self.auditdata, ensure_ascii=False)
- response = self.c.put(self.urlStr.replace("@decision_uuid", str(self.decision.uuid)), datajson,
- content_type='application/json', **{'HTTP_AUTHORIZATION': "token " + self.ELtoken})
+ response = self.c.put(
+ self.urlStr.replace("@decision_uuid",
+ str(self.decision.uuid)),
+ datajson,
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token " + self.ELtoken})
logger.debug('Got response : ' + str(response.status_code) +
" Expecting " + str(HTTP_401_UNAUTHORIZED))
@@ -327,14 +405,18 @@ class AuditLogAndDecisionAPITest(TestBaseEntity):
logger.debug("Creating a checklist")
- self.checklist.state = CheckListState.review.name # @UndefinedVariable
+ self.checklist.state = CheckListState.review.name
self.checklist.owner = self.el_user
self.checklist.save()
self.auditdata['value'] = self.randomGenerator("randomString")
datajson = json.dumps(self.auditdata, ensure_ascii=False)
- response = self.c.put(self.urlStr.replace("@decision_uuid", str(self.decision.uuid)), datajson,
- content_type='application/json', **{'HTTP_AUTHORIZATION': "token " + self.ELtoken})
+ response = self.c.put(
+ self.urlStr.replace("@decision_uuid",
+ str(self.decision.uuid)),
+ datajson,
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token " + self.ELtoken})
logger.debug('Got response : ' + str(response.status_code) +
" Expecting " + str(HTTP_400_BAD_REQUEST))
@@ -362,8 +444,12 @@ class AuditLogAndDecisionAPITest(TestBaseEntity):
self.auditdata['value'] = CheckListDecisionValue.approved.name
datajson = json.dumps(self.auditdata, ensure_ascii=False)
- response = self.c.put(self.urlStr.replace("@decision_uuid", str(self.decision.uuid)), datajson,
- content_type='application/json', **{'HTTP_AUTHORIZATION': "token " + self.ELtoken})
+ response = self.c.put(
+ self.urlStr.replace("@decision_uuid",
+ str(self.decision.uuid)),
+ datajson,
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token " + self.ELtoken})
logger.debug('Got response : ' + str(response.status_code) +
" Expecting " + str(HTTP_400_BAD_REQUEST))
@@ -372,4 +458,5 @@ class AuditLogAndDecisionAPITest(TestBaseEntity):
self.assertEqual(response.status_code, HTTP_400_BAD_REQUEST)
else:
self.loggerTestFailedOrSucceded(False)
- self.assertEqual(response.status_code, HTTP_405_METHOD_NOT_ALLOWED)
+ self.assertEqual(response.status_code,
+ HTTP_405_METHOD_NOT_ALLOWED)
diff --git a/django/engagementmanager/tests/test_auth_service.py b/django/engagementmanager/tests/test_auth_service.py
index b61de8d..f5c9544 100644
--- a/django/engagementmanager/tests/test_auth_service.py
+++ b/django/engagementmanager/tests/test_auth_service.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -37,7 +37,8 @@
#
# ECOMP is a trademark and service mark of AT&T Intellectual Property.
from engagementmanager.models import Vendor
-from engagementmanager.service.authorization_service import AuthorizationService, Permissions
+from engagementmanager.service.authorization_service import \
+ AuthorizationService, Permissions
from engagementmanager.tests.test_base_entity import TestBaseEntity
from engagementmanager.utils.constants import Constants
from engagementmanager.utils.request_data_mgr import request_data_mgr
@@ -50,9 +51,14 @@ class TestAuthService(TestBaseEntity):
self.createDefaultRoles()
- self.admin_user = self.creator.createUser(Vendor.objects.get(
- name=Constants.service_provider_company_name), Constants.service_provider_admin_mail,
- '55501000199', 'admin user', self.admin, True)
+ self.admin_user = self.creator.createUser(
+ Vendor.objects.get(
+ name=Constants.service_provider_company_name),
+ Constants.service_provider_admin_mail,
+ '55501000199',
+ 'admin user',
+ self.admin,
+ True)
print('-----------------------------------------------------')
print('Created User:')
print('UUID: ' + str(self.admin_user.uuid))
@@ -60,18 +66,28 @@ class TestAuthService(TestBaseEntity):
print('-----------------------------------------------------')
# Create a user with role el
- self.el_user = self.creator.createUser(Vendor.objects.get(
- name=Constants.service_provider_company_name), self.randomGenerator("main-vendor-email"),
- '55501000199', 'el user', self.el, True)
+ self.el_user = self.creator.createUser(
+ Vendor.objects.get(
+ name=Constants.service_provider_company_name),
+ self.randomGenerator("main-vendor-email"),
+ '55501000199',
+ 'el user',
+ self.el,
+ True)
print('-----------------------------------------------------')
print('Created User:')
print('UUID: ' + str(self.el_user.uuid))
print('Full Name: ' + self.el_user.full_name)
print('-----------------------------------------------------')
- self.peer_reviewer = self.creator.createUser(Vendor.objects.get(
- name=Constants.service_provider_company_name), self.randomGenerator("main-vendor-email"),
- '55501000199', 'peer-reviewer user', self.el, True)
+ self.peer_reviewer = self.creator.createUser(
+ Vendor.objects.get(
+ name=Constants.service_provider_company_name),
+ self.randomGenerator("main-vendor-email"),
+ '55501000199',
+ 'peer-reviewer user',
+ self.el,
+ True)
print('-----------------------------------------------------')
print('Created User:')
print('UUID: ' + str(self.peer_reviewer.uuid))
@@ -79,9 +95,14 @@ class TestAuthService(TestBaseEntity):
print('-----------------------------------------------------')
# Create another EL
- self.another_el_user = self.creator.createUser(Vendor.objects.get(
- name=Constants.service_provider_company_name), self.randomGenerator("main-vendor-email"),
- '55501000199', 'el user2', self.el, True)
+ self.another_el_user = self.creator.createUser(
+ Vendor.objects.get(
+ name=Constants.service_provider_company_name),
+ self.randomGenerator("main-vendor-email"),
+ '55501000199',
+ 'el user2',
+ self.el,
+ True)
print('-----------------------------------------------------')
print('Created User:')
print('UUID: ' + str(self.another_el_user.uuid))
@@ -99,9 +120,15 @@ class TestAuthService(TestBaseEntity):
print('-----------------------------------------------------')
# Create a user with role standard_user with SSH key
- self.user_with_ssh = self.creator.createUser(Vendor.objects.get(
- name='Other'), self.randomGenerator("main-vendor-email"),
- '55501000199', 'ssh user', self.standard_user, True, 'just-a-fake-ssh-key')
+ self.user_with_ssh = self.creator.createUser(
+ Vendor.objects.get(
+ name='Other'),
+ self.randomGenerator("main-vendor-email"),
+ '55501000199',
+ 'ssh user',
+ self.standard_user,
+ True,
+ 'just-a-fake-ssh-key')
print('-----------------------------------------------------')
print('Created User:')
print('UUID: ' + str(self.user_with_ssh.uuid))
@@ -109,7 +136,8 @@ class TestAuthService(TestBaseEntity):
print('-----------------------------------------------------')
# Create an Engagement with team
- self.engagement = self.creator.createEngagement('just-a-fake-uuid', 'Validation', None)
+ self.engagement = self.creator.createEngagement(
+ 'just-a-fake-uuid', 'Validation', None)
self.engagement.engagement_team.add(self.user, self.el_user)
self.engagement.reviewer = self.el_user
self.engagement.peer_reviewer = self.peer_reviewer
@@ -120,16 +148,20 @@ class TestAuthService(TestBaseEntity):
print('-----------------------------------------------------')
# Create another Engagement with team with SSH Key
- self.engagement_ssh = self.creator.createEngagement('just-another-fake-uuid', 'Validation', None)
- self.engagement_ssh.engagement_team.add(self.user_with_ssh, self.el_user)
+ self.engagement_ssh = self.creator.createEngagement(
+ 'just-another-fake-uuid', 'Validation', None)
+ self.engagement_ssh.engagement_team.add(
+ self.user_with_ssh, self.el_user)
print('-----------------------------------------------------')
print('Created Engagement:')
print('UUID: ' + str(self.engagement_ssh.uuid))
print('-----------------------------------------------------')
# Create another Engagement with Main Contact
- self.engagement_with_contact = self.creator.createEngagement('yet-just-another-fake-uuid', 'Validation', None)
- self.engagement_with_contact.engagement_team.add(self.user_with_ssh, self.el_user)
+ self.engagement_with_contact = self.creator.createEngagement(
+ 'yet-just-another-fake-uuid', 'Validation', None)
+ self.engagement_with_contact.engagement_team.add(
+ self.user_with_ssh, self.el_user)
self.engagement_with_contact.contact_user = self.user_with_ssh
print('-----------------------------------------------------')
print('Created Engagement:')
@@ -137,8 +169,10 @@ class TestAuthService(TestBaseEntity):
print('-----------------------------------------------------')
# Create another Engagement with Main Contact
- self.engagement_4_createNS = self.creator.createEngagement('yet-just-another-fake-uuid2', 'Validation', None)
- self.engagement_4_createNS.engagement_team.add(self.user_with_ssh, self.el_user)
+ self.engagement_4_createNS = self.creator.createEngagement(
+ 'yet-just-another-fake-uuid2', 'Validation', None)
+ self.engagement_4_createNS.engagement_team.add(
+ self.user_with_ssh, self.el_user)
self.engagement_4_createNS.contact_user = self.user_with_ssh
print('-----------------------------------------------------')
print('Created Engagement:')
@@ -154,8 +188,15 @@ class TestAuthService(TestBaseEntity):
print('UUID: ' + str(self.checklist_template.uuid))
print('-----------------------------------------------------')
- self.checklist = self.creator.createCheckList('some-checklist', 'Automation', 1, '{}', self.engagement,
- self.checklist_template, self.el_user, self.peer_reviewer)
+ self.checklist = self.creator.createCheckList(
+ 'some-checklist',
+ 'Automation',
+ 1,
+ '{}',
+ self.engagement,
+ self.checklist_template,
+ self.el_user,
+ self.peer_reviewer)
print('-----------------------------------------------------')
print('Created Check List')
print('UUID: ' + str(self.checklist.uuid))
@@ -168,77 +209,90 @@ class TestAuthService(TestBaseEntity):
# TEST EL PERMISSIONS
######################
# Test Add VF for EL
- auth_result, message = auth.is_user_able_to(self.el_user, Permissions.add_vf, str(self.engagement.uuid), '')
+ auth_result, message = auth.is_user_able_to(
+ self.el_user, Permissions.add_vf, str(self.engagement.uuid), '')
print('ADD_VF Got Result : ' + str(auth_result) + ' ' + message)
self.assertEquals(auth_result, True)
- auth_result, message = auth.is_user_able_to(self.el_user, Permissions.add_vendor, '', '')
+ auth_result, message = auth.is_user_able_to(
+ self.el_user, Permissions.add_vendor, '', '')
print('ADD_VENDOR Got Result : ' + message)
self.assertEquals(auth_result, True)
# Check that EL that belong to ENG can create next step
auth_result, message = auth.is_user_able_to(
- self.el_user, Permissions.add_nextstep, str(self.engagement.uuid), '')
+ self.el_user, Permissions.add_nextstep, str(
+ self.engagement.uuid), '')
print('ADD_NEXTSTEP Got Result : ' + message)
self.assertEquals(auth_result, True)
# Check that EL that does not belong to ENG cannot create next step
auth_result, message = auth.is_user_able_to(
- self.another_el_user, Permissions.add_nextstep, str(self.engagement.uuid), '')
+ self.another_el_user, Permissions.add_nextstep, str(
+ self.engagement.uuid), '')
print('ADD_NEXTSTEP Got Result : ' + message)
self.assertEquals(auth_result, False)
# Check that CL can be created only by EL that belongs to ENG
auth_result, message = auth.is_user_able_to(
- self.el_user, Permissions.add_checklist, str(self.engagement.uuid), '')
+ self.el_user, Permissions.add_checklist, str(
+ self.engagement.uuid), '')
print('ADD_CHECKLIST Got Result : ' + message)
self.assertEquals(auth_result, True)
- # Check that CL can be created only by EL that belongs to ENG (use another el)
+ # Check that CL can be created only by EL that belongs to ENG (use
+ # another el)
auth_result, message = auth.is_user_able_to(
- self.another_el_user, Permissions.add_checklist, str(self.engagement.uuid), '')
+ self.another_el_user, Permissions.add_checklist, str(
+ self.engagement.uuid), '')
print('ADD_CHECKLIST Got Result : ' + message)
self.assertEquals(auth_result, False)
- auth_result, message = auth.is_user_able_to(self.user, Permissions.add_checklist, str(self.engagement.uuid), '')
+ auth_result, message = auth.is_user_able_to(
+ self.user, Permissions.add_checklist, str(
+ self.engagement.uuid), '')
print('ADD_CHECKLIST Got Result : ' + message)
self.assertEquals(auth_result, False)
# Check that only peer reviewer can do peer review
request_data_mgr.set_cl_uuid(str(self.checklist.uuid))
auth_result, message = auth.is_user_able_to(
- self.peer_reviewer, Permissions.peer_review_checklist, str(self.engagement.uuid), str(self.checklist.uuid))
+ self.peer_reviewer, Permissions.peer_review_checklist, str(
+ self.engagement.uuid), str(
+ self.checklist.uuid))
print('PEER_REVIEW_CHECKLIST Got Result : ' + message)
self.assertEquals(auth_result, True)
# Check that a user that is not defined as peer review cannot review
auth_result, message = auth.is_user_able_to(
- self.el_user, Permissions.peer_review_checklist, str(self.engagement.uuid), str(self.checklist.uuid))
+ self.el_user, Permissions.peer_review_checklist, str(
+ self.engagement.uuid), str(
+ self.checklist.uuid))
print('PEER_REVIEW_CHECKLIST Got Result : ' + message)
self.assertEquals(auth_result, False)
- # Check that admin which is not owner cannot approve CL
- # Test is greyed out due to the fact that admin can approve any CL
-# auth_result, message = auth.is_user_able_to(self.admin_user, Permissions.admin_approve_checklist, str(self.engagement.uuid), str(self.checklist.uuid))
-# print('ADMIN_APPROVE_CHECKLIST Got Result : ' + message)
-# self.assertEquals(auth_result, False)
-
# Check that only admin which is the cl owner can approve CL
self.checklist.owner = self.admin_user # Make admin the owner
self.checklist.save()
auth_result, message = auth.is_user_able_to(
- self.admin_user, Permissions.admin_approve_checklist, str(self.engagement.uuid), str(self.checklist.uuid))
+ self.admin_user, Permissions.admin_approve_checklist, str(
+ self.engagement.uuid), str(
+ self.checklist.uuid))
print('ADMIN_APPROVE_CHECKLIST Got Result : ' + message)
self.assertEquals(auth_result, True)
# Check that only admin can approve CL (attempt with regular EL)
auth_result, message = auth.is_user_able_to(
- self.el_user, Permissions.admin_approve_checklist, str(self.engagement.uuid), str(self.checklist.uuid))
+ self.el_user, Permissions.admin_approve_checklist, str(
+ self.engagement.uuid), str(
+ self.checklist.uuid))
print('ADMIN_APPROVE_CHECKLIST Got Result : ' + message)
self.assertEquals(auth_result, False)
# Check that only admin can approve CL (attempt with regular user)
auth_result, message = auth.is_user_able_to(
- self.user, Permissions.admin_approve_checklist, str(self.engagement.uuid), str(self.checklist.uuid))
+ self.user, Permissions.admin_approve_checklist, str(
+ self.engagement.uuid), str(
+ self.checklist.uuid))
print('ADMIN_APPROVE_CHECKLIST Got Result : ' + message)
self.assertEquals(auth_result, False)
diff --git a/django/engagementmanager/tests/test_base_entity.py b/django/engagementmanager/tests/test_base_entity.py
index b6a5ece..712214a 100644
--- a/django/engagementmanager/tests/test_base_entity.py
+++ b/django/engagementmanager/tests/test_base_entity.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -41,6 +41,8 @@ import http.client
import inspect
import re
import django
+from engagementmanager.tests.vvpEntitiesCreator import VvpEntitiesCreator
+from engagementmanager.service.logging_service import LoggingServiceFactory
from django.conf import settings
from django.test import TestCase
from django.test.client import Client
@@ -48,8 +50,6 @@ import psycopg2
from rest_framework.parsers import JSONParser
from wheel.signatures import assertTrue
django.setup()
-from engagementmanager.tests.vvpEntitiesCreator import VvpEntitiesCreator
-from engagementmanager.service.logging_service import LoggingServiceFactory
logger = LoggingServiceFactory.get_logger()
@@ -58,9 +58,11 @@ class TestBaseEntity(TestCase):
__metaclass__ = ABCMeta
def setUp(self):
- logger.debug("---------------------- TestCase " + self.__class__.__name__ + " ----------------------")
+ logger.debug("---------------------- TestCase " +
+ self.__class__.__name__ + " ----------------------")
self.urlPrefix = "/%s/v1/engmgr/" % settings.PROGRAM_NAME_URL_PREFIX
- self.conn = http.client.HTTPConnection("127.0.0.1", 8000) # @UndefinedVariable
+ self.conn = http.client.HTTPConnection(
+ "127.0.0.1", 8000) # @UndefinedVariable
self.c = Client()
self.creator = VvpEntitiesCreator()
settings.IS_SIGNAL_ENABLED = False
@@ -69,7 +71,8 @@ class TestBaseEntity(TestCase):
def tearDown(self):
settings.IS_SIGNAL_ENABLED = True
self.conn.close()
- logger.debug("---------------------- TestCase " + self.__class__.__name__ + " ---------------------- ")
+ logger.debug("---------------------- TestCase " +
+ self.__class__.__name__ + " ---------------------- ")
logger.debug("")
logger.debug("")
@@ -80,7 +83,8 @@ class TestBaseEntity(TestCase):
def createDefaultRoles(self):
# Create Default Roles if does not exist
- self.admin, self.el, self.standard_user = self.creator.createAndGetDefaultRoles()
+ self.admin, self.el, self.standard_user = \
+ self.creator.createAndGetDefaultRoles()
def printTestName(self, testNameTrigger):
if testNameTrigger == "START":
@@ -93,22 +97,24 @@ class TestBaseEntity(TestCase):
pass
def nativeConnect2Db(self):
- return psycopg2.connect("dbname='icedb' user='iceuser' host='localhost' password='Aa123456' port='5433'")
+ return psycopg2.connect(
+ "dbname='icedb' user='iceuser' host='localhost' \
+ password='Aa123456' port='5433'")
def deleteRecord(self, urlStr, getRecord, isNegativeTest):
logger.debug("DELETE: " + urlStr + "/" + getRecord)
self.conn.request("DELETE", urlStr + "/" + getRecord)
r1 = self.conn.getresponse()
logger.debug("DELETE response status code: " + str(r1.status))
-# logger.debug("Number of records in the table: " + self.getNumOfRecordViaRest(urlStr))
- if (isNegativeTest == False):
+ if (not isNegativeTest):
assertTrue(r1.status == 204)
return r1
- elif (isNegativeTest == True):
+ elif (isNegativeTest):
return r1
def createEntityViaPost(self, urlStr, params, headers=None):
- logger.debug("POST: " + urlStr + " Body: " + params + " Headers: " + str(headers))
+ logger.debug("POST: " + urlStr + " Body: " +
+ params + " Headers: " + str(headers))
self.conn.request("POST", urlStr, params, headers)
r1 = self.conn.getresponse()
return r1
@@ -118,17 +124,23 @@ class TestBaseEntity(TestCase):
self.conn.request("PUT", urlStr + "/" + getRecord, params)
r1 = self.conn.getresponse()
logger.debug("PUT response status code: " + str(r1.status))
- if (isNegativeTest == False):
+ if (not isNegativeTest):
assertTrue(r1.status == 200)
return r1
- elif (isNegativeTest == True):
+ elif (isNegativeTest):
return r1
'''
- If you wish to "SELECT *" and get the first record then send queryFilterName=1 and queryFilterValue=1 to the method
+ If you wish to "SELECT *" and get the first record then send
+ queryFilterName=1 and queryFilterValue=1 to the method
'''
- def filterTableByColAndVal(self, queryColumnName, queryTableName, queryFilterName, queryFilterValue):
+ def filterTableByColAndVal(
+ self,
+ queryColumnName,
+ queryTableName,
+ queryFilterName,
+ queryFilterValue):
dbConn = self.nativeConnect2Db()
cur = dbConn.cursor()
queryStr = "SELECT %s FROM %s WHERE %s ='%s'" % (
@@ -136,9 +148,13 @@ class TestBaseEntity(TestCase):
logger.debug(queryStr)
cur.execute(queryStr)
result = str(cur.fetchone())
- if (bool(re.search('[^0-9]', result)) == True):
- logger.debug("Looks like result (" + result +
- ") from DB is in a multi column pattern: [col1, col2,...,coln], omitting it all colm beside " + queryColumnName)
+ if (bool(re.search('[^0-9]', result))):
+ logger.debug(
+ "Looks like result (" +
+ result +
+ ") from DB is in a multi column pattern: \
+ [col1, col2,...,coln], omitting it all colm beside " +
+ queryColumnName)
if (result.find("',)") != -1): # formatting strings e.g uuid
result = result.partition('\'')[-1].rpartition('\'')[0]
elif (result.find(",)") != -1): # formatting ints e.g id
@@ -149,13 +165,18 @@ class TestBaseEntity(TestCase):
def selectLastValue(self, queryColumnName, queryTableName, orderBy="id"):
dbConn = self.nativeConnect2Db()
cur = dbConn.cursor()
- queryStr = "select %s from %s ORDER BY %s DESC LIMIT 1;" % (queryColumnName, queryTableName, orderBy)
+ queryStr = "select %s from %s ORDER BY %s DESC LIMIT 1;" % (
+ queryColumnName, queryTableName, orderBy)
logger.debug(queryStr)
cur.execute(queryStr)
result = str(cur.fetchone())
- if (bool(re.search('[^0-9]', result)) == True):
- logger.debug("Looks like result (" + result +
- ") from DB is in a multi column pattern: [col1, col2,...,coln], omitting it all colm beside " + queryColumnName)
+ if (bool(re.search('[^0-9]', result))):
+ logger.debug(
+ "Looks like result (" +
+ result +
+ ") from DB is in a multi column pattern: [col1, col2,...,coln]\
+ , omitting it all colm beside " +
+ queryColumnName)
if (result.find("',)") != -1): # formatting strings e.g uuid
result = result.partition('\'')[-1].rpartition('\'')[0]
elif (result.find(",)") != -1): # formatting ints e.g id
@@ -166,11 +187,13 @@ class TestBaseEntity(TestCase):
def columnMaxLength(self, tableName, columnName):
dbConn = self.nativeConnect2Db()
cur = dbConn.cursor()
- queryStr = "SELECT character_maximum_length from information_schema.columns WHERE table_name ='%s' and column_name = '%s'" % (
+ queryStr = "SELECT character_maximum_length from \
+ information_schema.columns WHERE table_name ='%s' \
+ and column_name = '%s'" % (
tableName, columnName)
cur.execute(queryStr)
result = str(cur.fetchone())
- if (bool(re.search('[^0-9]', result)) == True):
+ if (bool(re.search('[^0-9]', result))):
if (result.find("',)") != -1): # formatting strings e.g uuid
result = result.partition('\'')[-1].rpartition('\'')[0]
elif (result.find(",)") != -1): # formatting ints e.g id
@@ -198,7 +221,8 @@ class TestBaseEntity(TestCase):
logger.debug("MaximalNameValue=" + str(maxName))
return maxName
- def getRecordAndDeserilizeIt(self, urlStr, getFilter, serializer, isCreateObj):
+ def getRecordAndDeserilizeIt(
+ self, urlStr, getFilter, serializer, isCreateObj):
logger.debug("GET: " + urlStr + "/" + getFilter)
try:
self.conn.request("GET", urlStr + "/" + getFilter)
@@ -206,7 +230,7 @@ class TestBaseEntity(TestCase):
logger.debug("DATA After JSON Parse:" + str(data))
ser = serializer(data=data)
# logger.debug(" --> Serializer data: "+repr(ser))
- if (isCreateObj == True):
+ if (isCreateObj):
logger.debug("Creating ...")
obj = ser.create(data)
else:
@@ -219,50 +243,64 @@ class TestBaseEntity(TestCase):
return obj
def newParameters(self, oldValue, newValue, uuidValue):
- newParams = re.sub(oldValue, newValue, self.params) # Find and replace in string.
- newParams = re.sub("}", ', "uuid":"' + uuidValue + '"}', newParams) # Add UUID to params
+ # Find and replace in string.
+ newParams = re.sub(oldValue, newValue, self.params)
+ newParams = re.sub("}", ', "uuid":"' + uuidValue +
+ '"}', newParams) # Add UUID to params
return newParams
def negativeTestPost(self, getFilter, allowTwice=False):
logger.debug("POST negative tests are starting now!")
- if (allowTwice == False):
+ if (not allowTwice):
logger.debug("Negative 01: Insert the same record twice via REST")
r1 = self.createEntityViaPost(self.urlStr, self.params)
logger.debug(r1.status, r1.reason)
assertTrue(r1.status == 400)
self.deleteRecord(self.urlStr, getFilter, False)
logger.debug("Negative 02: Insert record with empty value via REST")
- paramsEmptyValue = re.sub(r':\".*?\"', ':\"\"', self.params) # Create params with empty values.
+ # Create params with empty values.
+ paramsEmptyValue = re.sub(r':\".*?\"', ':\"\"', self.params)
r1 = self.createEntityViaPost(self.urlStr, paramsEmptyValue)
logger.debug(r1.status, r1.reason)
assertTrue(r1.status == 400)
logger.debug("Negative 03: Insert record with missing value via REST")
- paramsMissingValue = re.sub(r'{\".*?\":', '{\"\":', self.params) # Create params without records part 1.
+ # Create params without records part 1.
+ paramsMissingValue = re.sub(r'{\".*?\":', '{\"\":', self.params)
# Create params without records part 2.
- paramsMissingValue = re.sub(r', \".*?\":', ', \"\":', paramsMissingValue)
+ paramsMissingValue = re.sub(
+ r', \".*?\":', ', \"\":', paramsMissingValue)
r1 = self.createEntityViaPost(self.urlStr, paramsMissingValue)
logger.debug(r1.status, r1.reason)
assertTrue(r1.status == 400)
- logger.debug("Negative 04: Insert record with more than " + str(self.longValueLength) + " chars via REST")
- paramsLongValue = re.sub(
- r':\".*?\"', ':\"' + str(self.randomGenerator("randomNumber", self.longValueLength)) + '\"', self.params)
+ logger.debug("Negative 04: Insert record with more than " +
+ str(self.longValueLength) + " chars via REST")
+ paramsLongValue = re.sub(r':\".*?\"',
+ ':\"' + str(
+ self.randomGenerator(
+ "randomNumber",
+ self.longValueLength)) + '\"',
+ self.params)
r1 = self.createEntityViaPost(self.urlStr, paramsLongValue)
logger.debug(r1.status, r1.reason)
assertTrue(r1.status == 400)
- if (allowTwice == True):
+ if (allowTwice):
logger.debug("Deleting record from database...")
self.deleteRecord(self.urlStr, getFilter, False)
def negativeTestPut(self, getFilter, params):
logger.debug("PUT negative tests are starting now!")
- match = re.search("\D", getFilter) # Check if getFilter contains non-digit characters.
+ # Check if getFilter contains non-digit characters.
+ match = re.search("\D", getFilter)
if not match:
logger.debug("Negative 01: Edit non existing record via REST")
nonExistingValue = self.randomGenerator("randomNumber", 5)
- r1 = self.editEntityViaPut(self.urlStr, nonExistingValue, params, True)
+ r1 = self.editEntityViaPut(
+ self.urlStr, nonExistingValue, params, True)
logger.debug(r1.status, r1.reason)
assertTrue(r1.status == 404)
- logger.debug("Negative 02: Edit record with string in URL instead of integer via REST")
+ logger.debug(
+ "Negative 02: Edit record with string \
+ in URL instead of integer via REST")
randStr = self.randomGenerator("randomString")
r1 = self.editEntityViaPut(self.urlStr, randStr, params, True)
logger.debug(r1.status, r1.reason)
@@ -270,7 +308,8 @@ class TestBaseEntity(TestCase):
else:
logger.debug("Negative 01: Edit non existing record via REST")
nonExistingValue = self.randomGenerator("randomString")
- r1 = self.editEntityViaPut(self.urlStr, nonExistingValue, params, True)
+ r1 = self.editEntityViaPut(
+ self.urlStr, nonExistingValue, params, True)
logger.debug(r1.status, r1.reason)
assertTrue(r1.status == 404)
logger.debug("Negative 02: Edit record without URL pointer via REST")
@@ -278,15 +317,20 @@ class TestBaseEntity(TestCase):
logger.debug(r1.status, r1.reason)
assertTrue(r1.status == 405)
logger.debug("Negative 03: Edit record with empty value via REST")
- paramsEmptyValue = re.sub(r':\".*?\"', ':\"\"', params) # Create params with empty values.
- r1 = self.editEntityViaPut(self.urlStr, getFilter, paramsEmptyValue, True)
+ # Create params with empty values.
+ paramsEmptyValue = re.sub(r':\".*?\"', ':\"\"', params)
+ r1 = self.editEntityViaPut(
+ self.urlStr, getFilter, paramsEmptyValue, True)
logger.debug(r1.status, r1.reason)
assertTrue(r1.status == 400)
logger.debug("Negative 04: Edit record with missing value via REST")
- paramsMissingValue = re.sub(r'{\".*?\":', '{\"\":', params) # Create params without records part 1.
+ # Create params without records part 1.
+ paramsMissingValue = re.sub(r'{\".*?\":', '{\"\":', params)
# Create params without records part 2.
- paramsMissingValue = re.sub(r', \".*?\":', ', \"\":', paramsMissingValue)
- r1 = self.editEntityViaPut(self.urlStr, getFilter, paramsMissingValue, True)
+ paramsMissingValue = re.sub(
+ r', \".*?\":', ', \"\":', paramsMissingValue)
+ r1 = self.editEntityViaPut(
+ self.urlStr, getFilter, paramsMissingValue, True)
logger.debug(r1.status, r1.reason)
assertTrue(r1.status == 400)
logger.debug("Deleting record from database...")
@@ -294,7 +338,9 @@ class TestBaseEntity(TestCase):
def negativeTestDelete(self):
logger.debug("DELETE negative tests are starting now!")
- logger.debug("Negative 01: Delete non existing record via REST or wrong URL pointer")
+ logger.debug(
+ "Negative 01: Delete non existing record via \
+ REST or wrong URL pointer")
nonExistingValue = self.randomGenerator("randomString")
r1 = self.deleteRecord(self.urlStr, nonExistingValue, True)
logger.debug(r1.status, r1.reason)
@@ -309,7 +355,8 @@ class TestBaseEntity(TestCase):
self.assertTrue(False)
def failRestTest(self, r1):
- logger.debug("Previous HTTP POST request has failed with " + str(r1.status))
+ logger.debug(
+ "Previous HTTP POST request has failed with " + str(r1.status))
self.assertTrue(False)
def randomGenerator(self, typeOfValue, numberOfDigits=0):
diff --git a/django/engagementmanager/tests/test_base_transaction_entity.py b/django/engagementmanager/tests/test_base_transaction_entity.py
index e206bad..06221c4 100644
--- a/django/engagementmanager/tests/test_base_transaction_entity.py
+++ b/django/engagementmanager/tests/test_base_transaction_entity.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -52,9 +52,11 @@ class TestBaseTransactionEntity(TransactionTestCase):
__metaclass__ = ABCMeta
def setUp(self):
- logger.debug("---------------------- TransactionTestCase " + self.__class__.__name__ + " ----------------------")
+ logger.debug("---------------------- TransactionTestCase " +
+ self.__class__.__name__ + " ----------------------")
self.urlPrefix = "/%s/v1/engmgr/" % settings.PROGRAM_NAME_URL_PREFIX
- self.conn = http.client.HTTPConnection("127.0.0.1", 8000) # @UndefinedVariable
+ self.conn = http.client.HTTPConnection(
+ "127.0.0.1", 8000) # @UndefinedVariable
self.c = Client()
self.creator = VvpEntitiesCreator()
settings.IS_SIGNAL_ENABLED = False
@@ -63,7 +65,8 @@ class TestBaseTransactionEntity(TransactionTestCase):
def tearDown(self):
settings.IS_SIGNAL_ENABLED = True
self.conn.close()
- logger.debug("---------------------- TransactionTestCase " + self.__class__.__name__ + " ---------------------- ")
+ logger.debug("---------------------- TransactionTestCase " +
+ self.__class__.__name__ + " ---------------------- ")
@abstractmethod
def childSetup(self):
diff --git a/django/engagementmanager/tests/test_checklist.py b/django/engagementmanager/tests/test_checklist.py
index a7fa800..c9f6fde 100644
--- a/django/engagementmanager/tests/test_checklist.py
+++ b/django/engagementmanager/tests/test_checklist.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -39,7 +39,8 @@
import json
from uuid import uuid4
-from rest_framework.status import HTTP_200_OK, HTTP_401_UNAUTHORIZED, HTTP_400_BAD_REQUEST
+from rest_framework.status import HTTP_200_OK, HTTP_401_UNAUTHORIZED, \
+ HTTP_400_BAD_REQUEST
from engagementmanager.models import ChecklistTemplate, ChecklistLineItem
from engagementmanager.models import Vendor
@@ -51,24 +52,34 @@ class TestChecklistTestCase(TestBaseEntity):
def childSetup(self):
- self.createVendors([Constants.service_provider_company_name, 'Amdocs', 'Other'])
+ self.createVendors(
+ [Constants.service_provider_company_name, 'Amdocs', 'Other'])
self.createDefaultRoles()
# Create a user with role el
- self.el_user = self.creator.createUser(Vendor.objects.get(
- name=Constants.service_provider_company_name), self.randomGenerator("main-vendor-email"),
- '55501000199', 'el user', self.el, True)
+ self.el_user = self.creator.createUser(
+ Vendor.objects.get(
+ name=Constants.service_provider_company_name),
+ self.randomGenerator("main-vendor-email"),
+ '55501000199',
+ 'el user',
+ self.el,
+ True)
self.peer_reviewer = self.creator.createUser(Vendor.objects.get(
name='Other'), self.randomGenerator("main-vendor-email"),
'55501000199', 'peer-reviewer user', self.el, True)
# For negative tests
- self.user = self.creator.createUser(Vendor.objects.get(
- name=Constants.service_provider_company_name), self.randomGenerator("main-vendor-email"),
- '55501000199', 'user', self.standard_user, True)
+ self.user = self.creator.createUser(
+ Vendor.objects.get(
+ name=Constants.service_provider_company_name),
+ self.randomGenerator("main-vendor-email"),
+ '55501000199',
+ 'user',
+ self.standard_user,
+ True)
self.urlStr = self.urlPrefix + "engagement/@eng_uuid/checklist/new/"
self.data = dict()
self.template = self.creator.createDefaultCheckListTemplate()
-# self.engagement = Engagement.objects.create(uuid='just-a-fake-uuid',engagement_stage='Validation')
self.engagement = self.creator.createEngagement(
uuid4(), 'Validation', None)
self.engagement.reviewer = self.el_user
@@ -78,9 +89,14 @@ class TestChecklistTestCase(TestBaseEntity):
self.engagement.save()
self.vendor = Vendor.objects.get(name='Other')
self.deploymentTarget = self.creator.createDeploymentTarget(
- self.randomGenerator("randomString"), self.randomGenerator("randomString"))
- self.vf = self.creator.createVF(self.randomGenerator("randomString"),
- self.engagement, self.deploymentTarget, False, self.vendor)
+ self.randomGenerator("randomString"),
+ self.randomGenerator("randomString"))
+ self.vf = self.creator.createVF(
+ self.randomGenerator("randomString"),
+ self.engagement,
+ self.deploymentTarget,
+ False,
+ self.vendor)
def initBody(self):
self.data['checkListName'] = "ice checklist for test"
@@ -90,14 +106,20 @@ class TestChecklistTestCase(TestBaseEntity):
self.data['checkListAssociatedFiles'].append("file1")
self.data['checkListAssociatedFiles'].append("file2")
- def getOrCreateChecklist(self, expectedStatus=HTTP_200_OK, httpMethod="GET"):
+ def getOrCreateChecklist(
+ self, expectedStatus=HTTP_200_OK, httpMethod="GET"):
if (httpMethod == "GET"):
- response = self.c.get(self.urlStr.replace("@eng_uuid", str(self.engagement.uuid)),
- **{'HTTP_AUTHORIZATION': "token " + self.token})
+ response = self.c.get(self.urlStr.replace("@eng_uuid", str(
+ self.engagement.uuid)), **{'HTTP_AUTHORIZATION': "token "
+ + self.token})
elif (httpMethod == "POST"):
datajson = json.dumps(self.data, ensure_ascii=False)
- response = self.c.post(self.urlStr.replace("@eng_uuid", str(self.engagement.uuid)), datajson,
- content_type='application/json', **{'HTTP_AUTHORIZATION': "token " + self.token})
+ response = self.c.post(
+ self.urlStr.replace("@eng_uuid", str(self.engagement.uuid)),
+ datajson,
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token "
+ + self.token})
print('Got response : ' + str(response.status_code) +
" Expecting " + str(expectedStatus))
@@ -163,8 +185,10 @@ class TestChecklistTestCase(TestBaseEntity):
self.data = dict()
self.data['decisions'] = "{123}"
datajson = json.dumps(self.data, ensure_ascii=False)
- response = self.c.get(self.urlStr.replace("@checklist_uuid", str(checklist['uuid'])),
- content_type='application/json', **{'HTTP_AUTHORIZATION': "token " + self.token})
+ response = self.c.get(self.urlStr.replace("@checklist_uuid",
+ str(checklist['uuid'])),
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token " + self.token})
print(json.loads(response.content))
@@ -173,5 +197,8 @@ class TestChecklistTestCase(TestBaseEntity):
self.data = dict()
self.data['decisions'] = "{123}"
datajson = json.dumps(self.data, ensure_ascii=False)
- response = self.c.post(self.urlStr.replace("@checklist_uuid", str(checklist['uuid'])), datajson,
- content_type='application/json', **{'HTTP_AUTHORIZATION': "token " + self.token})
+ response = self.c.post(self.urlStr.replace("@checklist_uuid",
+ str(checklist['uuid'])),
+ datajson,
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token " + self.token})
diff --git a/django/engagementmanager/tests/test_checklist_template.py b/django/engagementmanager/tests/test_checklist_template.py
index c3c63e4..0cb8075 100644
--- a/django/engagementmanager/tests/test_checklist_template.py
+++ b/django/engagementmanager/tests/test_checklist_template.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -51,30 +51,51 @@ def dummy_true():
return True
-@mock.patch('engagementmanager.service.checklist_service.CheckListSvc.decline_all_template_checklists', dummy_true)
+@mock.patch(
+ 'engagementmanager.service.checklist_service.' +
+ 'CheckListSvc.decline_all_template_checklists',
+ dummy_true)
class TestChecklistTestCase(TestBaseEntity):
def childSetup(self):
- self.createVendors([Constants.service_provider_company_name, 'Amdocs', 'Other'])
+ self.createVendors(
+ [Constants.service_provider_company_name, 'Amdocs', 'Other'])
self.createDefaultRoles()
# Create a user with role el
self.el_user = self.creator.createUser(
- Vendor.objects.get(name=Constants.service_provider_company_name), self.randomGenerator("main-vendor-email"),
- '55501000199', 'el user', self.el, True)
- self.admin_user = self.creator.createUser(Vendor.objects.get(name=Constants.service_provider_company_name),
- Constants.service_provider_admin_mail, '55501000199',
- 'admin user', self.admin, True)
+ Vendor.objects.get(
+ name=Constants.service_provider_company_name),
+ self.randomGenerator("main-vendor-email"),
+ '55501000199',
+ 'el user',
+ self.el,
+ True)
+ self.admin_user = self.creator.createUser(
+ Vendor.objects.get(
+ name=Constants.service_provider_company_name),
+ Constants.service_provider_admin_mail,
+ '55501000199',
+ 'admin user',
+ self.admin,
+ True)
# For negative tests
self.user = self.creator.createUser(
- Vendor.objects.get(name=Constants.service_provider_company_name), self.randomGenerator("main-vendor-email"),
- '55501000199', 'user', self.standard_user, True)
+ Vendor.objects.get(
+ name=Constants.service_provider_company_name),
+ self.randomGenerator("main-vendor-email"),
+ '55501000199',
+ 'user',
+ self.standard_user,
+ True)
self.urlStrForSave = self.urlPrefix + "checklist/template/"
- self.urlStrForGetTmpl = self.urlPrefix + "checklist/template/@template_uuid"
+ self.urlStrForGetTmpl = self.urlPrefix + \
+ "checklist/template/@template_uuid"
self.urlStrForGetTmpls = self.urlPrefix + "checklist/templates/"
self.data = dict()
self.template = self.creator.createDefaultCheckListTemplate()
- self.engagement = self.creator.createEngagement('just-a-fake-uuid', 'Validation', None)
+ self.engagement = self.creator.createEngagement(
+ 'just-a-fake-uuid', 'Validation', None)
self.engagement.reviewer = self.el_user
self.engagement.peer_reviewer = self.el_user
self.engagement.engagement_team.add(self.user)
@@ -82,9 +103,14 @@ class TestChecklistTestCase(TestBaseEntity):
self.engagement.save()
self.vendor = Vendor.objects.get(name='Other')
self.deploymentTarget = self.creator.createDeploymentTarget(
- self.randomGenerator("randomString"), self.randomGenerator("randomString"))
+ self.randomGenerator("randomString"),
+ self.randomGenerator("randomString"))
self.vf = self.creator.createVF(
- self.randomGenerator("randomString"), self.engagement, self.deploymentTarget, False, self.vendor)
+ self.randomGenerator("randomString"),
+ self.engagement,
+ self.deploymentTarget,
+ False,
+ self.vendor)
def initBody(self):
self.data['uuid'] = str(self.template.uuid)
@@ -108,24 +134,31 @@ class TestChecklistTestCase(TestBaseEntity):
self.data['sections'].append(sec1)
print(self.data)
- def getOrCreateChecklistTemplate(self, urlStr, expectedStatus=HTTP_200_OK, httpMethod="GET"):
+ def getOrCreateChecklistTemplate(
+ self, urlStr, expectedStatus=HTTP_200_OK, httpMethod="GET"):
if (httpMethod == "GET"):
if (urlStr == self.urlStrForGetTmpls):
- response = self.c.get(urlStr,
- **{'HTTP_AUTHORIZATION': "token " + self.token})
+ response = self.c.get(
+ urlStr, **{'HTTP_AUTHORIZATION': "token " + self.token})
else:
- response = self.c.get(urlStr.replace("@template_uuid", str(self.template.uuid)),
- **{'HTTP_AUTHORIZATION': "token " + self.token})
+ response = self.c.get(
+ urlStr.replace("@template_uuid", str(
+ self.template.uuid)),
+ **{'HTTP_AUTHORIZATION': "token " + self.token})
elif (httpMethod == "PUT"):
datajson = json.dumps(self.data, ensure_ascii=False)
response = self.c.put(
- urlStr, datajson, content_type='application/json', **{'HTTP_AUTHORIZATION': "token " + self.token})
- print('Got response : ' + str(response.status_code) + " Expecting " + str(expectedStatus))
- print('Got response : ' + str(response.status_code) + " Expecting " + str(expectedStatus))
+ urlStr,
+ datajson,
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token " + self.token})
+ print('Got response : ' + str(response.status_code) +
+ " Expecting " + str(expectedStatus))
+ print('Got response : ' + str(response.status_code) +
+ " Expecting " + str(expectedStatus))
self.assertEqual(response.status_code, expectedStatus)
return response
- ### TESTS ###
def testSaveChecklistTemplate(self):
self.initBody()
self.token = self.loginAndCreateSessionToken(self.admin_user)
@@ -137,32 +170,43 @@ class TestChecklistTestCase(TestBaseEntity):
self.token = self.loginAndCreateSessionToken(self.admin_user)
self.data['uuid'] = ""
print("testSaveChecklistTemplateMissingTemplateUuid")
- self.getOrCreateChecklistTemplate(self.urlStrForSave, expectedStatus=HTTP_404_NOT_FOUND, httpMethod="PUT")
+ self.getOrCreateChecklistTemplate(
+ self.urlStrForSave,
+ expectedStatus=HTTP_404_NOT_FOUND,
+ httpMethod="PUT")
def testSaveChecklistTemplateNotExistingTemplate(self):
self.initBody()
self.token = self.loginAndCreateSessionToken(self.admin_user)
print("testSaveChecklistTemplateNoExistanceTemplate")
self.data['uuid'] = 'fake_uuid'
- self.getOrCreateChecklistTemplate(self.urlStrForSave, expectedStatus=HTTP_404_NOT_FOUND, httpMethod="PUT")
+ self.getOrCreateChecklistTemplate(
+ self.urlStrForSave,
+ expectedStatus=HTTP_404_NOT_FOUND,
+ httpMethod="PUT")
def testSaveChecklistTemplateMissingKey(self):
self.initBody()
self.token = self.loginAndCreateSessionToken(self.admin_user)
print("testSaveChecklistTemplateNoExistanceTemplate")
- # take the first line item (li1_name) which is newEntity and remove its name, expect 500
+ # take the first line item (li1_name) which is newEntity and remove its
+ # name, expect 500
self.data['sections'][0]["lineItems"][0]["name"] = None
self.getOrCreateChecklistTemplate(
- self.urlStrForSave, expectedStatus=HTTP_500_INTERNAL_SERVER_ERROR, httpMethod="PUT")
+ self.urlStrForSave,
+ expectedStatus=HTTP_500_INTERNAL_SERVER_ERROR,
+ httpMethod="PUT")
def testGetChecklistTemplates(self):
self.initBody()
self.token = self.loginAndCreateSessionToken(self.admin_user)
print("testSaveChecklistTemplate")
- self.getOrCreateChecklistTemplate(self.urlStrForGetTmpls, httpMethod="GET")
+ self.getOrCreateChecklistTemplate(
+ self.urlStrForGetTmpls, httpMethod="GET")
def testGetChecklistTemplate(self):
self.initBody()
self.token = self.loginAndCreateSessionToken(self.admin_user)
print("testSaveChecklistTemplate")
- self.getOrCreateChecklistTemplate(self.urlStrForGetTmpl, httpMethod="GET")
+ self.getOrCreateChecklistTemplate(
+ self.urlStrForGetTmpl, httpMethod="GET")
diff --git a/django/engagementmanager/tests/test_cms_documentation_search.py b/django/engagementmanager/tests/test_cms_documentation_search.py
index 2d13f96..0d19dbc 100644
--- a/django/engagementmanager/tests/test_cms_documentation_search.py
+++ b/django/engagementmanager/tests/test_cms_documentation_search.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -48,7 +48,8 @@ logger = LoggingServiceFactory.get_logger()
def search_page_mock(keyword):
- result = [{u'id': 1, u'title': 'exists_title', u'children': [], u'status': '', u'_order': 1}, ]
+ result = [{u'id': 1, u'title': 'exists_title',
+ u'children': [], u'status': '', u'_order': 1}, ]
return result
@@ -61,41 +62,54 @@ class TestCMSDocumentationSearch(TestBaseEntity):
def childSetup(self):
self.createVendors([Constants.service_provider_company_name, 'Other'])
self.createDefaultRoles()
- self.admin, self.el, self.standard_user = self.creator.createAndGetDefaultRoles()
- self.user = self.creator.createUser(Vendor.objects.get(name='Other'),
- self.randomGenerator("main-vendor-email"), 'Aa123456',
- 'user', self.standard_user, True)
+ self.admin, self.el, self.standard_user = \
+ self.creator.createAndGetDefaultRoles()
+ self.user = self.creator.createUser(
+ Vendor.objects.get(
+ name='Other'),
+ self.randomGenerator("main-vendor-email"),
+ 'Aa123456',
+ 'user',
+ self.standard_user,
+ True)
self.token = self.loginAndCreateSessionToken(self.user)
def testSearchEmptyString(self):
urlStr = self.urlPrefix + 'cms/pages/search/?keyword='
self.printTestName("testSearchEmptyString [Start]")
logger.debug("action should success (200), and return empty array")
- response = self.c.get(urlStr, **{'HTTP_AUTHORIZATION': "token " + self.token})
+ response = self.c.get(
+ urlStr, **{'HTTP_AUTHORIZATION': "token " + self.token})
print('Got response : ' + str(response.status_code))
self.assertEqual(response.status_code, HTTP_200_OK)
content = json.loads(response.content)
self.assertEqual(content, [])
self.printTestName("testSearchEmptyString [End]")
- @mock.patch('engagementmanager.apps.cms_client.search_pages', search_empty_page_mock)
+ @mock.patch('engagementmanager.apps.cms_client.search_pages',
+ search_empty_page_mock)
def testSearchNotExistsKeyword(self):
urlStr = self.urlPrefix + 'cms/pages/search/?keyword=somewordnotexists'
self.printTestName("testSearchNotExistsKeyword [Start]")
logger.debug("action should success (200), and return empty array")
- response = self.c.get(urlStr, **{'HTTP_AUTHORIZATION': "token " + self.token})
+ response = self.c.get(
+ urlStr, **{'HTTP_AUTHORIZATION': "token " + self.token})
print('Got response : ' + str(response.status_code))
self.assertEqual(response.status_code, HTTP_200_OK)
content = json.loads(response.content)
self.assertEqual(content, [])
self.printTestName("testSearchNotExistsKeyword [End]")
- @mock.patch('engagementmanager.apps.cms_client.search_pages', search_page_mock)
+ @mock.patch('engagementmanager.apps.cms_client.search_pages',
+ search_page_mock)
def testSearchExistsKeyword(self):
urlStr = self.urlPrefix + 'cms/pages/search/?keyword=exists_title'
self.printTestName("testSearchExistsKeyword [Start]")
- logger.debug("action should success (200), and return array with one page (by mock)")
- response = self.c.get(urlStr, **{'HTTP_AUTHORIZATION': "token " + self.token})
+ logger.debug(
+ "action should success (200), \
+ and return array with one page (by mock)")
+ response = self.c.get(
+ urlStr, **{'HTTP_AUTHORIZATION': "token " + self.token})
print('Got response : ' + str(response.status_code))
self.assertEqual(response.status_code, HTTP_200_OK)
content = json.loads(response.content)
diff --git a/django/engagementmanager/tests/test_cms_pages.py b/django/engagementmanager/tests/test_cms_pages.py
index 4fd9473..d6d074b 100644
--- a/django/engagementmanager/tests/test_cms_pages.py
+++ b/django/engagementmanager/tests/test_cms_pages.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -48,30 +48,72 @@ logger = LoggingServiceFactory.get_logger()
def get_pages_mock(title=""):
- result = [{u'meta_description': u'Content of page #1', u'parent': None, u'title': u'Page #1',
- u'login_required': True, u'children': [], u'id': 1,
- u'content': u'<p>Content of page #1</p>', u'content_model': u'richtextpage',
- u'publish_date': u'2017-01-01T13:47:15Z', u'slug': u'documentation/page#1', u'tags': u''},
- {u'meta_description': u'Content of page #2', u'parent': None, u'title': u'Page #2',
- u'login_required': True, u'children': [], u'id': 2,
- u'content': u'<p>Content of page #2</p>', u'content_model': u'richtextpage',
- u'publish_date': u'2017-01-01T13:47:15Z', u'slug': u'documentation/page#2', u'tags': u''},
- {u'meta_description': u'Content of page #3', u'parent': None, u'title': u'Page #3',
- u'login_required': True, u'children': [], u'id': 3,
- u'content': u'<p>Content of page #3</p>', u'content_model': u'richtextpage',
- u'publish_date': u'2017-01-01T13:47:15Z', u'slug': u'documentation/page#3', u'tags': u''},
- {u'meta_description': u'Content of page #4', u'parent': None, u'title': u'Page #4',
- u'login_required': True, u'children': [], u'id': 4,
- u'content': u'<p>Content of page #4</p>', u'content_model': u'richtextpage',
- u'publish_date': u'2017-01-01T13:47:15Z', u'slug': u'documentation/page#4', u'tags': u''},
- {u'meta_description': u'Content of page #5', u'parent': None, u'title': u'Page #5',
- u'login_required': True, u'children': [], u'id': 5,
- u'content': u'<p>Content of page #5</p>', u'content_model': u'richtextpage',
- u'publish_date': u'2017-01-01T13:47:15Z', u'slug': u'documentation/page#5', u'tags': u''},
- {u'meta_description': u'Content of page #6', u'parent': None, u'title': u'Page #6',
- u'login_required': True, u'children': [], u'id': 6,
- u'content': u'<p>Content of page #6</p>', u'content_model': u'richtextpage',
- u'publish_date': u'2017-01-01T13:47:15Z', u'slug': u'documentation/page#6', u'tags': u''}]
+ result = [{u'meta_description': u'Content of page #1',
+ u'parent': None,
+ u'title': u'Page #1',
+ u'login_required': True,
+ u'children': [],
+ u'id': 1,
+ u'content': u'<p>Content of page #1</p>',
+ u'content_model': u'richtextpage',
+ u'publish_date': u'2017-01-01T13:47:15Z',
+ u'slug': u'documentation/page#1',
+ u'tags': u''},
+ {u'meta_description': u'Content of page #2',
+ u'parent': None,
+ u'title': u'Page #2',
+ u'login_required': True,
+ u'children': [],
+ u'id': 2,
+ u'content': u'<p>Content of page #2</p>',
+ u'content_model': u'richtextpage',
+ u'publish_date': u'2017-01-01T13:47:15Z',
+ u'slug': u'documentation/page#2',
+ u'tags': u''},
+ {u'meta_description': u'Content of page #3',
+ u'parent': None,
+ u'title': u'Page #3',
+ u'login_required': True,
+ u'children': [],
+ u'id': 3,
+ u'content': u'<p>Content of page #3</p>',
+ u'content_model': u'richtextpage',
+ u'publish_date': u'2017-01-01T13:47:15Z',
+ u'slug': u'documentation/page#3',
+ u'tags': u''},
+ {u'meta_description': u'Content of page #4',
+ u'parent': None,
+ u'title': u'Page #4',
+ u'login_required': True,
+ u'children': [],
+ u'id': 4,
+ u'content': u'<p>Content of page #4</p>',
+ u'content_model': u'richtextpage',
+ u'publish_date': u'2017-01-01T13:47:15Z',
+ u'slug': u'documentation/page#4',
+ u'tags': u''},
+ {u'meta_description': u'Content of page #5',
+ u'parent': None,
+ u'title': u'Page #5',
+ u'login_required': True,
+ u'children': [],
+ u'id': 5,
+ u'content': u'<p>Content of page #5</p>',
+ u'content_model': u'richtextpage',
+ u'publish_date': u'2017-01-01T13:47:15Z',
+ u'slug': u'documentation/page#5',
+ u'tags': u''},
+ {u'meta_description': u'Content of page #6',
+ u'parent': None,
+ u'title': u'Page #6',
+ u'login_required': True,
+ u'children': [],
+ u'id': 6,
+ u'content': u'<p>Content of page #6</p>',
+ u'content_model': u'richtextpage',
+ u'publish_date': u'2017-01-01T13:47:15Z',
+ u'slug': u'documentation/page#6',
+ u'tags': u''}]
if title != "":
return [result[0]]
else:
@@ -79,10 +121,18 @@ def get_pages_mock(title=""):
def get_page_mock(id):
- result = {u'meta_description': u'Content of page #1', u'parent': None, u'title': u'Page #1',
- u'login_required': True, u'children': [], u'id': 1,
- u'content': u'<p>Content of page #1</p>', u'content_model': u'richtextpage',
- u'publish_date': u'2017-01-01T13:47:15Z', u'slug': u'documentation/page#1', u'tags': u''}
+ result = {
+ u'meta_description': u'Content of page #1',
+ u'parent': None,
+ u'title': u'Page #1',
+ u'login_required': True,
+ u'children': [],
+ u'id': 1,
+ u'content': u'<p>Content of page #1</p>',
+ u'content_model': u'richtextpage',
+ u'publish_date': u'2017-01-01T13:47:15Z',
+ u'slug': u'documentation/page#1',
+ u'tags': u''}
return result
@@ -94,17 +144,24 @@ class CMSGetPagesTestCase(TestBaseEntity):
def childSetup(self):
self.createVendors([Constants.service_provider_company_name, 'Other'])
self.createDefaultRoles()
- self.admin, self.el, self.standard_user = self.creator.createAndGetDefaultRoles()
- self.user = self.creator.createUser(Vendor.objects.get(name='Other'),
- self.randomGenerator("main-vendor-email"), 'Aa123456',
- 'user', self.standard_user, True)
+ self.admin, self.el, self.standard_user = \
+ self.creator.createAndGetDefaultRoles()
+ self.user = self.creator.createUser(
+ Vendor.objects.get(
+ name='Other'),
+ self.randomGenerator("main-vendor-email"),
+ 'Aa123456',
+ 'user',
+ self.standard_user,
+ True)
self.token = self.loginAndCreateSessionToken(self.user)
def testGetPageById(self):
urlStr = self.urlPrefix + 'cms/pages/1/'
self.printTestName("testGetPageById [Start]")
logger.debug("action should success (200), and return page by id")
- response = self.c.get(urlStr, **{'HTTP_AUTHORIZATION': "token " + self.token})
+ response = self.c.get(
+ urlStr, **{'HTTP_AUTHORIZATION': "token " + self.token})
print('Got response : ' + str(response.status_code))
self.assertEqual(response.status_code, HTTP_200_OK)
content = json.loads(response.content)
@@ -115,10 +172,12 @@ class CMSGetPagesTestCase(TestBaseEntity):
urlStr = self.urlPrefix + 'cms/pages/'
self.printTestName("testGetPages [Start]")
logger.debug("action should success (200), and return all pages")
- response = self.c.get(urlStr, **{'HTTP_AUTHORIZATION': "token " + self.token})
+ response = self.c.get(
+ urlStr, **{'HTTP_AUTHORIZATION': "token " + self.token})
print('Got response : ' + str(response.status_code))
self.assertEqual(response.status_code, HTTP_200_OK)
- self.assertEqual(len(json.loads(response.content)), 6) # Suppose to be 6 The amount of Pages in the mock.
+ # Suppose to be 6 The amount of Pages in the mock.
+ self.assertEqual(len(json.loads(response.content)), 6)
self.printTestName("testGetPages [End]")
def testGetPagesByTitle(self):
@@ -126,10 +185,12 @@ class CMSGetPagesTestCase(TestBaseEntity):
print(urlStr)
self.printTestName("testGetPagesByTitle [Start]")
logger.debug("action should success (200), and return filtered pages")
- response = self.c.get(urlStr, **{'HTTP_AUTHORIZATION': "token " + self.token})
+ response = self.c.get(
+ urlStr, **{'HTTP_AUTHORIZATION': "token " + self.token})
print('Got response : ' + str(response.status_code))
self.assertEqual(response.status_code, HTTP_200_OK)
content = json.loads(response.content)
- self.assertEqual(len(content), 1) # Suppose to be 1 The amount of Documentation titled pages in the mock.
+ # Suppose to be 1 The amount of Documentation titled pages in the mock.
+ self.assertEqual(len(content), 1)
self.assertEqual(content[0]["title"], 'Page #1')
self.printTestName("testGetPagesByTitle [End]")
diff --git a/django/engagementmanager/tests/test_cms_posts.py b/django/engagementmanager/tests/test_cms_posts.py
index 7132c2c..8859d48 100644
--- a/django/engagementmanager/tests/test_cms_posts.py
+++ b/django/engagementmanager/tests/test_cms_posts.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -48,16 +48,144 @@ logger = LoggingServiceFactory.get_logger()
def get_posts_mock(offset=0, limit=10, category="", date_min=""):
- result = [{u'updated': u'2017-01-17T15:57:19.567778Z', u'title': u'announcement..new.1', u'url': u'http://127.0.0.1:8001/blog/announcementnew1/', u'short_url': u'/blog/announcementnew1/', u'tags': u'', u'excerpt': u'announcement..new.announcement..new.', u'allow_comments': True, u'comments': [], u'slug': u'announcementnew1', u'content': u'<p>announcement..new.announcement..new.</p>', u'publish_date': u'2017-01-14T19:53:52Z', u'user': {u'username': u'al942u', u'first_name': u'', u'last_name': u'', u'email': u'al942u@mail.com', u'is_staff': True, u'id': 1}, u'featured_image': u'', u'comments_count': 0, u'id': 1, u'categories': [{u'slug': u'announcement', u'id': 1, u'title': u'Announcement'}]},
- {u'updated': u'2017-01-16T15:57:19.567778Z', u'title': u'announcement..new.2', u'url': u'http://127.0.0.1:8001/blog/announcementnew2/', u'short_url': u'/blog/announcementnew2/', u'tags': u'', u'excerpt': u'announcement..new.announcement..new.', u'allow_comments': True, u'comments': [], u'slug': u'announcementnew2',
- u'content': u'<p>announcement..new.announcement..new.</p>', u'publish_date': u'2017-01-15T19:53:52Z', u'user': {u'username': u'al942u', u'first_name': u'', u'last_name': u'', u'email': u'al942u@mail.com', u'is_staff': True, u'id': 1}, u'featured_image': u'', u'comments_count': 0, u'id': 2, u'categories': [{u'slug': u'announcement', u'id': 1, u'title': u'Announcement'}]},
- {u'updated': u'2017-01-15T15:57:19.567778Z', u'title': u'announcement..new.3', u'url': u'http://127.0.0.1:8001/blog/announcementnew3/', u'short_url': u'/blog/announcementnew3/', u'tags': u'', u'excerpt': u'announcement..new.announcement..new.', u'allow_comments': True, u'comments': [], u'slug': u'announcementnew3',
- u'content': u'<p>announcement..new.announcement..new.</p>', u'publish_date': u'2017-01-16T19:53:52Z', u'user': {u'username': u'al942u', u'first_name': u'', u'last_name': u'', u'email': u'al942u@mail.com', u'is_staff': True, u'id': 1}, u'featured_image': u'', u'comments_count': 0, u'id': 3, u'categories': [{u'slug': u'announcement', u'id': 1, u'title': u'Announcement'}]},
- {u'updated': u'2017-01-14T15:57:19.567778Z', u'title': u'news..new.1', u'url': u'http://127.0.0.1:8001/blog/news1/', u'short_url': u'/blog/news1/', u'tags': u'', u'excerpt': u'news..new.news..new.', u'allow_comments': True, u'comments': [], u'slug': u'news1', u'content': u'<p>news..new.news..new.</p>',
- u'publish_date': u'2017-01-14T19:53:52Z', u'user': {u'username': u'al942u', u'first_name': u'', u'last_name': u'', u'email': u'al942u@mail.com', u'is_staff': True, u'id': 1}, u'featured_image': u'', u'comments_count': 0, u'id': 4, u'categories': [{u'slug': u'news', u'id': 1, u'title': u'News'}]},
- {u'updated': u'2017-01-13T15:57:19.567778Z', u'title': u'news..new.2', u'url': u'http://127.0.0.1:8001/blog/news2/', u'short_url': u'/blog/news2/', u'tags': u'', u'excerpt': u'news..new.news..new.', u'allow_comments': True, u'comments': [], u'slug': u'news2', u'content': u'<p>news..new.news..new.</p>',
- u'publish_date': u'2017-01-15T19:53:52Z', u'user': {u'username': u'al942u', u'first_name': u'', u'last_name': u'', u'email': u'al942u@mail.com', u'is_staff': True, u'id': 1}, u'featured_image': u'', u'comments_count': 0, u'id': 5, u'categories': [{u'slug': u'news', u'id': 1, u'title': u'News'}]},
- {u'updated': u'2017-01-12T15:57:19.567778Z', u'title': u'news..new.3', u'url': u'http://127.0.0.1:8001/blog/news3/', u'short_url': u'/blog/news3/', u'tags': u'', u'excerpt': u'news..new.news..new.', u'allow_comments': True, u'comments': [], u'slug': u'news3', u'content': u'<p>news..new.news..new.</p>', u'publish_date': u'2017-01-16T19:53:52Z', u'user': {u'username': u'al942u', u'first_name': u'', u'last_name': u'', u'email': u'al942u@mail.com', u'is_staff': True, u'id': 1}, u'featured_image': u'', u'comments_count': 0, u'id': 6, u'categories': [{u'slug': u'news', u'id': 1, u'title': u'News'}]}]
+ result = [{u'updated': u'2017-01-17T15:57:19.567778Z',
+ u'title': u'announcement..new.1',
+ u'url': u'http://127.0.0.1:8001/blog/announcementnew1/',
+ u'short_url': u'/blog/announcementnew1/',
+ u'tags': u'',
+ u'excerpt': u'announcement..new.announcement..new.',
+ u'allow_comments': True,
+ u'comments': [],
+ u'slug': u'announcementnew1',
+ u'content': u'<p>announcement..new.announcement..new.</p>',
+ u'publish_date': u'2017-01-14T19:53:52Z',
+ u'user': {u'username': u'al942u',
+ u'first_name': u'',
+ u'last_name': u'',
+ u'email': u'al942u@mail.com',
+ u'is_staff': True,
+ u'id': 1},
+ u'featured_image': u'',
+ u'comments_count': 0,
+ u'id': 1,
+ u'categories': [{u'slug': u'announcement',
+ u'id': 1,
+ u'title': u'Announcement'}]},
+ {u'updated': u'2017-01-16T15:57:19.567778Z',
+ u'title': u'announcement..new.2',
+ u'url': u'http://127.0.0.1:8001/blog/announcementnew2/',
+ u'short_url': u'/blog/announcementnew2/',
+ u'tags': u'',
+ u'excerpt': u'announcement..new.announcement..new.',
+ u'allow_comments': True,
+ u'comments': [],
+ u'slug': u'announcementnew2',
+ u'content': u'<p>announcement..new.announcement..new.</p>',
+ u'publish_date': u'2017-01-15T19:53:52Z',
+ u'user': {u'username': u'al942u',
+ u'first_name': u'',
+ u'last_name': u'',
+ u'email': u'al942u@mail.com',
+ u'is_staff': True,
+ u'id': 1},
+ u'featured_image': u'',
+ u'comments_count': 0,
+ u'id': 2,
+ u'categories': [{u'slug': u'announcement',
+ u'id': 1,
+ u'title': u'Announcement'}]},
+ {u'updated': u'2017-01-15T15:57:19.567778Z',
+ u'title': u'announcement..new.3',
+ u'url': u'http://127.0.0.1:8001/blog/announcementnew3/',
+ u'short_url': u'/blog/announcementnew3/',
+ u'tags': u'',
+ u'excerpt': u'announcement..new.announcement..new.',
+ u'allow_comments': True,
+ u'comments': [],
+ u'slug': u'announcementnew3',
+ u'content': u'<p>announcement..new.announcement..new.</p>',
+ u'publish_date': u'2017-01-16T19:53:52Z',
+ u'user': {u'username': u'al942u',
+ u'first_name': u'',
+ u'last_name': u'',
+ u'email': u'al942u@mail.com',
+ u'is_staff': True,
+ u'id': 1},
+ u'featured_image': u'',
+ u'comments_count': 0,
+ u'id': 3,
+ u'categories': [{u'slug': u'announcement',
+ u'id': 1,
+ u'title': u'Announcement'}]},
+ {u'updated': u'2017-01-14T15:57:19.567778Z',
+ u'title': u'news..new.1',
+ u'url': u'http://127.0.0.1:8001/blog/news1/',
+ u'short_url': u'/blog/news1/',
+ u'tags': u'',
+ u'excerpt': u'news..new.news..new.',
+ u'allow_comments': True,
+ u'comments': [],
+ u'slug': u'news1',
+ u'content': u'<p>news..new.news..new.</p>',
+ u'publish_date': u'2017-01-14T19:53:52Z',
+ u'user': {u'username': u'al942u',
+ u'first_name': u'',
+ u'last_name': u'',
+ u'email': u'al942u@mail.com',
+ u'is_staff': True,
+ u'id': 1},
+ u'featured_image': u'',
+ u'comments_count': 0,
+ u'id': 4,
+ u'categories': [{u'slug': u'news',
+ u'id': 1,
+ u'title': u'News'}]},
+ {u'updated': u'2017-01-13T15:57:19.567778Z',
+ u'title': u'news..new.2',
+ u'url': u'http://127.0.0.1:8001/blog/news2/',
+ u'short_url': u'/blog/news2/',
+ u'tags': u'',
+ u'excerpt': u'news..new.news..new.',
+ u'allow_comments': True,
+ u'comments': [],
+ u'slug': u'news2',
+ u'content': u'<p>news..new.news..new.</p>',
+ u'publish_date': u'2017-01-15T19:53:52Z',
+ u'user': {u'username': u'al942u',
+ u'first_name': u'',
+ u'last_name': u'',
+ u'email': u'al942u@mail.com',
+ u'is_staff': True,
+ u'id': 1},
+ u'featured_image': u'',
+ u'comments_count': 0,
+ u'id': 5,
+ u'categories': [{u'slug': u'news',
+ u'id': 1,
+ u'title': u'News'}]},
+ {u'updated': u'2017-01-12T15:57:19.567778Z',
+ u'title': u'news..new.3',
+ u'url': u'http://127.0.0.1:8001/blog/news3/',
+ u'short_url': u'/blog/news3/',
+ u'tags': u'',
+ u'excerpt': u'news..new.news..new.',
+ u'allow_comments': True,
+ u'comments': [],
+ u'slug': u'news3',
+ u'content': u'<p>news..new.news..new.</p>',
+ u'publish_date': u'2017-01-16T19:53:52Z',
+ u'user': {u'username': u'al942u',
+ u'first_name': u'',
+ u'last_name': u'',
+ u'email': u'al942u@mail.com',
+ u'is_staff': True,
+ u'id': 1},
+ u'featured_image': u'',
+ u'comments_count': 0,
+ u'id': 6,
+ u'categories': [{u'slug': u'news',
+ u'id': 1,
+ u'title': u'News'}]}]
if category == "News":
return [result[3], result[4], result[5]]
@@ -77,10 +205,16 @@ class CMSGetPostsTestCase(TestBaseEntity):
def childSetup(self):
self.createVendors([Constants.service_provider_company_name, 'Other'])
self.createDefaultRoles()
- self.admin, self.el, self.standard_user = self.creator.createAndGetDefaultRoles()
- self.user = self.creator.createUser(Vendor.objects.get(name='Other'),
- self.randomGenerator("main-vendor-email"), 'Aa123456',
- 'user', self.standard_user, True)
+ self.admin, self.el, self.standard_user = \
+ self.creator.createAndGetDefaultRoles()
+ self.user = self.creator.createUser(
+ Vendor.objects.get(
+ name='Other'),
+ self.randomGenerator("main-vendor-email"),
+ 'Aa123456',
+ 'user',
+ self.standard_user,
+ True)
self.token = self.loginAndCreateSessionToken(self.user)
def testGetPostsByCategory(self):
@@ -88,17 +222,20 @@ class CMSGetPostsTestCase(TestBaseEntity):
print(urlStr)
self.printTestName("GetPostsByCategoryTest [Start]")
logger.debug("action should success (200), and return filtered posts")
- response = self.c.get(urlStr, **{'HTTP_AUTHORIZATION': "token " + self.token})
+ response = self.c.get(
+ urlStr, **{'HTTP_AUTHORIZATION': "token " + self.token})
print('Got response : ' + str(response.status_code))
self.assertEqual(response.status_code, HTTP_200_OK)
- self.assertEqual(len(json.loads(response.content)), 3) # Suppose to be 3 The amount of News in the mock.
+ # Suppose to be 3 The amount of News in the mock.
+ self.assertEqual(len(json.loads(response.content)), 3)
self.printTestName("GetPostsByCategoryTest [End]")
def testGetAllPosts(self):
urlStr = self.urlPrefix + 'cms/posts/?limit=10'
self.printTestName("GetAllPostsTest [Start]")
logger.debug("action should success (200), and return all posts")
- response = self.c.get(urlStr, **{'HTTP_AUTHORIZATION': "token " + self.token})
+ response = self.c.get(
+ urlStr, **{'HTTP_AUTHORIZATION': "token " + self.token})
print('Got response : ' + str(response.status_code))
self.assertEqual(response.status_code, HTTP_200_OK)
# Suppose to be 6 items like the amount of items of the mock.
@@ -109,29 +246,37 @@ class CMSGetPostsTestCase(TestBaseEntity):
limit = 2
urlStr = self.urlPrefix + 'cms/posts/?limit=' + str(limit)
self.printTestName("GetLimitedPostsTest [Start]")
- logger.debug("action should success (200), and filtered with limit all posts")
- response = self.c.get(urlStr, **{'HTTP_AUTHORIZATION': "token " + self.token})
+ logger.debug(
+ "action should success (200), and filtered with limit all posts")
+ response = self.c.get(
+ urlStr, **{'HTTP_AUTHORIZATION': "token " + self.token})
print('Got response : ' + str(response.status_code))
self.assertEqual(response.status_code, HTTP_200_OK)
- self.assertEqual(len(json.loads(response.content)), limit) # Suppose to be {{limit}} amount of items
+ # Suppose to be {{limit}} amount of items
+ self.assertEqual(len(json.loads(response.content)), limit)
self.printTestName("GetLimitedPostsTest [End]")
def testGetPostsByDateMin(self):
urlStr = self.urlPrefix + 'cms/posts/?fromLastDays=2&limit=10'
self.printTestName("GetPostsByDateMinTest [Start]")
logger.debug("action should success (200), and return filtered posts")
- response = self.c.get(urlStr, **{'HTTP_AUTHORIZATION': "token " + self.token})
+ response = self.c.get(
+ urlStr, **{'HTTP_AUTHORIZATION': "token " + self.token})
print('Got response : ' + str(response.status_code))
self.assertEqual(response.status_code, HTTP_200_OK)
- self.assertEqual(len(json.loads(response.content)), 2) # Suppose to be 2 items that are after this date
+ # Suppose to be 2 items that are after this date
+ self.assertEqual(len(json.loads(response.content)), 2)
self.printTestName("GetPostsByDateMinTest [End]")
def testGetOneAnnouncementPost(self):
urlStr = self.urlPrefix + 'cms/posts/?limit=1&category=Announcement'
self.printTestName("GetOneAnnouncementPostTest [Start]")
- logger.debug("action should success (200), and return one announcement post")
- response = self.c.get(urlStr, **{'HTTP_AUTHORIZATION': "token " + self.token})
+ logger.debug(
+ "action should success (200), and return one announcement post")
+ response = self.c.get(
+ urlStr, **{'HTTP_AUTHORIZATION': "token " + self.token})
print('Got response : ' + str(response.status_code))
self.assertEqual(response.status_code, HTTP_200_OK)
- self.assertEqual(len(json.loads(response.content)), 1) # Suppose to be just 1 item like that.
+ # Suppose to be just 1 item like that.
+ self.assertEqual(len(json.loads(response.content)), 1)
self.printTestName("GetOneAnnouncementPostTest [End]")
diff --git a/django/engagementmanager/tests/test_deployment_target_sites.py b/django/engagementmanager/tests/test_deployment_target_sites.py
index ddfb448..a81d7e6 100644
--- a/django/engagementmanager/tests/test_deployment_target_sites.py
+++ b/django/engagementmanager/tests/test_deployment_target_sites.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -52,19 +52,35 @@ class DeploymentTargetSitesTestCase(TestBaseEntity):
self.createDefaultRoles()
# Create users:
- self.admin, self.el, self.standard_user = self.creator.createAndGetDefaultRoles()
- self.el_user = self.creator.createUser(Vendor.objects.get(name=Constants.service_provider_company_name),
- self.randomGenerator("main-vendor-email"), 'Aa123456',
- 'el user1', self.el, True)
+ self.admin, self.el, self.standard_user = \
+ self.creator.createAndGetDefaultRoles()
+ self.el_user = self.creator.createUser(
+ Vendor.objects.get(
+ name=Constants.service_provider_company_name),
+ self.randomGenerator("main-vendor-email"),
+ 'Aa123456',
+ 'el user1',
+ self.el,
+ True)
self.peer_reviewer = self.creator.createUser(Vendor.objects.get(
name='Other'), self.randomGenerator("main-vendor-email"),
'55501000199', 'peer-reviewer user', self.el, True)
- self.user = self.creator.createUser(Vendor.objects.get(
- name=Constants.service_provider_company_name), self.randomGenerator("main-vendor-email"), 'Aa123456',
- 'user', self.standard_user, True)
- self.admin_user = self.creator.createUser(Vendor.objects.get(name=Constants.service_provider_company_name),
- Constants.service_provider_admin_mail, 'Aa123456',
- 'admin user', self.admin, True)
+ self.user = self.creator.createUser(
+ Vendor.objects.get(
+ name=Constants.service_provider_company_name),
+ self.randomGenerator("main-vendor-email"),
+ 'Aa123456',
+ 'user',
+ self.standard_user,
+ True)
+ self.admin_user = self.creator.createUser(
+ Vendor.objects.get(
+ name=Constants.service_provider_company_name),
+ Constants.service_provider_admin_mail,
+ 'Aa123456',
+ 'admin user',
+ self.admin,
+ True)
# Create an Engagement with team
self.engagement = self.creator.createEngagement(
@@ -73,11 +89,17 @@ class DeploymentTargetSitesTestCase(TestBaseEntity):
self.engagement.peer_reviewer = self.peer_reviewer
self.engagement.engagement_team.add(self.user, self.el_user)
self.engagement.save()
- self.deploymentTarget = self.creator.createDeploymentTarget(self.randomGenerator("randomString"),
- self.randomGenerator("randomString"))
- self.vendor = Vendor.objects.get(name=Constants.service_provider_company_name)
- self.vf = self.creator.createVF(self.randomGenerator("randomString"), self.engagement,
- self.deploymentTarget, False, self.vendor)
+ self.deploymentTarget = self.creator.createDeploymentTarget(
+ self.randomGenerator("randomString"),
+ self.randomGenerator("randomString"))
+ self.vendor = Vendor.objects.get(
+ name=Constants.service_provider_company_name)
+ self.vf = self.creator.createVF(
+ self.randomGenerator("randomString"),
+ self.engagement,
+ self.deploymentTarget,
+ False,
+ self.vendor)
# Login with users:
self.user_token = self.loginAndCreateSessionToken(self.user)
@@ -91,8 +113,11 @@ class DeploymentTargetSitesTestCase(TestBaseEntity):
str(self.vf.uuid) + '"}'
print(myjson)
- response = self.c.post(urlStr, myjson, content_type='application/json',
- **{'HTTP_AUTHORIZATION': "token " + self.user_token})
+ response = self.c.post(
+ urlStr,
+ myjson,
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token " + self.user_token})
print('Got response : ' + str(response.status_code))
self.assertEqual(response.status_code, HTTP_401_UNAUTHORIZED)
@@ -103,8 +128,11 @@ class DeploymentTargetSitesTestCase(TestBaseEntity):
str(self.vf.uuid) + '"}'
print(myjson)
- response = self.c.post(urlStr, myjson, content_type='application/json',
- **{'HTTP_AUTHORIZATION': "token " + self.el_token})
+ response = self.c.post(
+ urlStr,
+ myjson,
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token " + self.el_token})
print('Got response : ' + str(response.status_code))
self.assertEqual(response.status_code, HTTP_200_OK)
@@ -115,8 +143,11 @@ class DeploymentTargetSitesTestCase(TestBaseEntity):
str(self.vf.uuid) + '"}'
print(myjson)
- response = self.c.post(urlStr, myjson, content_type='application/json',
- **{'HTTP_AUTHORIZATION': "token " + self.admin_token})
+ response = self.c.post(
+ urlStr,
+ myjson,
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token " + self.admin_token})
print('Got response : ' + str(response.status_code))
self.assertEqual(response.status_code, HTTP_200_OK)
diff --git a/django/engagementmanager/tests/test_digest_email_notifications.py b/django/engagementmanager/tests/test_digest_email_notifications.py
index b3e75df..cba67aa 100644
--- a/django/engagementmanager/tests/test_digest_email_notifications.py
+++ b/django/engagementmanager/tests/test_digest_email_notifications.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -39,10 +39,13 @@
import json
import mock
from rest_framework.status import HTTP_202_ACCEPTED
-from engagementmanager.bus.messages.activity_event_message import ActivityEventMessage
-from engagementmanager.bus.messages.daily_scheduled_message import DailyScheduledMessage
+from engagementmanager.bus.messages.activity_event_message import \
+ ActivityEventMessage
+from engagementmanager.bus.messages.daily_scheduled_message import \
+ DailyScheduledMessage
from engagementmanager.models import Vendor
-from engagementmanager.utils.activities_data import UserJoinedEngagementActivityData
+from engagementmanager.utils.activities_data import \
+ UserJoinedEngagementActivityData
from engagementmanager.tests.test_base_entity import TestBaseEntity
from engagementmanager.utils.constants import Constants, EngagementStage
from engagementmanager.apps import bus_service
@@ -67,14 +70,30 @@ class DigestEmailNotificationsTestCase(TestBaseEntity):
self.createVendors([Constants.service_provider_company_name, 'Other'])
self.createDefaultRoles()
- vendor = Vendor.objects.get(name=Constants.service_provider_company_name)
- self.el_user = self.creator.createUser(vendor, self.randomGenerator(
- "main-vendor-email"), self.randomGenerator("randomNumber"), self.randomGenerator("randomString"), self.el, True)
+ vendor = Vendor.objects.get(
+ name=Constants.service_provider_company_name)
+ self.el_user = self.creator.createUser(
+ vendor,
+ self.randomGenerator("main-vendor-email"),
+ self.randomGenerator("randomNumber"),
+ self.randomGenerator("randomString"),
+ self.el,
+ True)
vendor = Vendor.objects.get(name='Other')
- self.user = self.creator.createUser(vendor, self.randomGenerator("email"), self.randomGenerator(
- "randomNumber"), self.randomGenerator("randomString"), self.standard_user, True)
- self.pruser = self.creator.createUser(vendor, self.randomGenerator("email"), self.randomGenerator(
- "randomNumber"), self.randomGenerator("randomString"), self.standard_user, True)
+ self.user = self.creator.createUser(
+ vendor,
+ self.randomGenerator("email"),
+ self.randomGenerator("randomNumber"),
+ self.randomGenerator("randomString"),
+ self.standard_user,
+ True)
+ self.pruser = self.creator.createUser(
+ vendor,
+ self.randomGenerator("email"),
+ self.randomGenerator("randomNumber"),
+ self.randomGenerator("randomString"),
+ self.standard_user,
+ True)
self.engagement = self.creator.createEngagement(self.randomGenerator(
"randomString"), self.randomGenerator("randomString"), None)
@@ -84,22 +103,32 @@ class DigestEmailNotificationsTestCase(TestBaseEntity):
self.engagement.save()
self.deploymentTarget = self.creator.createDeploymentTarget(
- self.randomGenerator("randomString"), self.randomGenerator("randomString"))
- self.vf = self.creator.createVF(self.randomGenerator("randomString"),
- self.engagement, self.deploymentTarget, False, vendor)
+ self.randomGenerator("randomString"),
+ self.randomGenerator("randomString"))
+ self.vf = self.creator.createVF(
+ self.randomGenerator("randomString"),
+ self.engagement,
+ self.deploymentTarget,
+ False,
+ vendor)
def testDigestEmailForActivities(self):
"""
- Will check if the service bus deliver the message of sending digested mails
- No need to check if the mail is sent or if the python scheduling is working
+ Will check if the service bus deliver the
+ message of sending digested mails
+ No need to check if the mail is sent or if the
+ python scheduling is working
"""
# Create the activities:
- self.urlStr = self.urlPrefix + "single-engagement/" + str(self.engagement.uuid) + "/stage/@stage"
+ self.urlStr = self.urlPrefix + "single-engagement/" + \
+ str(self.engagement.uuid) + "/stage/@stage"
random_user = self.creator.createUser(Vendor.objects.get(name='Other'),
self.randomGenerator("email"),
- self.randomGenerator("randomNumber"),
- self.randomGenerator("randomString"),
+ self.randomGenerator(
+ "randomNumber"),
+ self.randomGenerator(
+ "randomString"),
self.el, True)
self.engagement.engagement_team.add(random_user)
@@ -107,18 +136,22 @@ class DigestEmailNotificationsTestCase(TestBaseEntity):
users_list = []
users_list.append(random_user)
- activity_data = UserJoinedEngagementActivityData(self.vf, users_list, self.engagement)
+ activity_data = UserJoinedEngagementActivityData(
+ self.vf, users_list, self.engagement)
bus_service.send_message(ActivityEventMessage(activity_data))
token = self.loginAndCreateSessionToken(random_user)
- response = self.c.put(self.urlStr.replace("@stage", EngagementStage.Active.name),
- json.dumps(dict(), ensure_ascii=False), content_type='application/json',
+ response = self.c.put(self.urlStr.replace("@stage",
+ EngagementStage.Active.name),
+ json.dumps(dict(),
+ ensure_ascii=False),
+ content_type='application/json',
**{'HTTP_AUTHORIZATION': "token " + token})
self.assertEqual(response.status_code, HTTP_202_ACCEPTED)
urlStr = self.urlPrefix + 'engagement/${uuid}/activities/'
- response = self.c.get(urlStr.replace('${uuid}', str(self.engagement.uuid)),
- **{'HTTP_AUTHORIZATION': "token " + token})
+ response = self.c.get(urlStr.replace('${uuid}', str(
+ self.engagement.uuid)), **{'HTTP_AUTHORIZATION': "token " + token})
content = json.loads(response.content)
self.assertEqual(len(content), 2)
diff --git a/django/engagementmanager/tests/test_eng_progress.py b/django/engagementmanager/tests/test_eng_progress.py
index 563c3cd..49ee024 100644
--- a/django/engagementmanager/tests/test_eng_progress.py
+++ b/django/engagementmanager/tests/test_eng_progress.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -36,7 +36,8 @@
# ============LICENSE_END============================================
#
# ECOMP is a trademark and service mark of AT&T Intellectual Property.
-from rest_framework.status import HTTP_401_UNAUTHORIZED, HTTP_202_ACCEPTED, HTTP_500_INTERNAL_SERVER_ERROR
+from rest_framework.status import HTTP_401_UNAUTHORIZED, \
+ HTTP_202_ACCEPTED, HTTP_500_INTERNAL_SERVER_ERROR
from engagementmanager.models import Vendor
from engagementmanager.tests.test_base_entity import TestBaseEntity
from engagementmanager.utils.constants import Constants
@@ -50,12 +51,18 @@ class EngProgressTestCase(TestBaseEntity):
def childSetup(self): # Variables to use in this class.
self.createVendors([Constants.service_provider_company_name, 'Other'])
self.createDefaultRoles()
- self.admin, self.el, self.standard_user = self.creator.createAndGetDefaultRoles()
+ self.admin, self.el, self.standard_user = \
+ self.creator.createAndGetDefaultRoles()
# Create a user with role el
- self.el_user = self.creator.createUser(Vendor.objects.get(
- name=Constants.service_provider_company_name), self.randomGenerator("main-vendor-email"),
- '55501000199', 'el user', self.el, True)
+ self.el_user = self.creator.createUser(
+ Vendor.objects.get(
+ name=Constants.service_provider_company_name),
+ self.randomGenerator("main-vendor-email"),
+ '55501000199',
+ 'el user',
+ self.el,
+ True)
self.peer_reviewer = self.creator.createUser(Vendor.objects.get(
name='Other'), self.randomGenerator("main-vendor-email"),
'55501000199', 'peer-reviewer user', self.el, True)
@@ -80,19 +87,29 @@ class EngProgressTestCase(TestBaseEntity):
self.printTestName("START")
logger.debug(
- "action should fail (401), Only Engagement Lead can set Engagement Progress")
- response = self.c.put(urlStr, '{ "progress" : 50 }', content_type='application/json',
- **{'HTTP_AUTHORIZATION': "token " + self.token})
+ "action should fail (401), Only Engagement \
+ Lead can set Engagement Progress")
+ response = self.c.put(
+ urlStr,
+ '{ "progress" : 50 }',
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token " + self.token})
print('Got response : ' + str(response.status_code))
self.assertEqual(response.status_code, HTTP_401_UNAUTHORIZED)
- response = self.c.put(urlStr, '{ "progress" : 50 }', content_type='application/json',
- **{'HTTP_AUTHORIZATION': "token " + self.ELtoken})
+ response = self.c.put(
+ urlStr,
+ '{ "progress" : 50 }',
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token " + self.ELtoken})
print('Got response : ' + str(response.status_code))
self.assertEqual(response.status_code, HTTP_202_ACCEPTED)
- response = self.c.put(urlStr, '{ "progress" : 101 }', content_type='application/json',
- **{'HTTP_AUTHORIZATION': "token " + self.ELtoken})
+ response = self.c.put(
+ urlStr,
+ '{ "progress" : 101 }',
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token " + self.ELtoken})
print('Got response : ' + str(response.status_code))
self.assertEqual(response.status_code, HTTP_500_INTERNAL_SERVER_ERROR)
diff --git a/django/engagementmanager/tests/test_eng_status.py b/django/engagementmanager/tests/test_eng_status.py
index 62f787d..9536a3e 100644
--- a/django/engagementmanager/tests/test_eng_status.py
+++ b/django/engagementmanager/tests/test_eng_status.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -52,15 +52,26 @@ class EngagementStatusTestCase(TestBaseEntity):
def childSetup(self): # Variables to use in this class.
self.createVendors([Constants.service_provider_company_name, 'Other'])
self.createDefaultRoles()
- self.admin, self.el, self.standard_user = self.creator.createAndGetDefaultRoles()
+ self.admin, self.el, self.standard_user = \
+ self.creator.createAndGetDefaultRoles()
# Create a user with role el
- self.el_user = self.creator.createUser(Vendor.objects.get(
- name=Constants.service_provider_company_name), self.randomGenerator("main-vendor-email"),
- '55501000199', 'el user', self.el, True)
- self.peer_review_user = self.creator.createUser(Vendor.objects.get(
- name=Constants.service_provider_company_name), self.randomGenerator("main-vendor-email"),
- '55501000199', 'peer-reviewer user', self.el, True)
+ self.el_user = self.creator.createUser(
+ Vendor.objects.get(
+ name=Constants.service_provider_company_name),
+ self.randomGenerator("main-vendor-email"),
+ '55501000199',
+ 'el user',
+ self.el,
+ True)
+ self.peer_review_user = self.creator.createUser(
+ Vendor.objects.get(
+ name=Constants.service_provider_company_name),
+ self.randomGenerator("main-vendor-email"),
+ '55501000199',
+ 'peer-reviewer user',
+ self.el,
+ True)
# Create a user with role standard_user
self.user = self.creator.createUser(Vendor.objects.get(
name='Other'), self.randomGenerator("main-vendor-email"),
@@ -69,19 +80,25 @@ class EngagementStatusTestCase(TestBaseEntity):
name='Other'), self.randomGenerator("main-vendor-email"),
'55501000199', 'user not team', self.standard_user, True)
# Create an Engagement with team
- self.engagement = self.creator.createEngagement(uuid4(), 'Validation', None)
+ self.engagement = self.creator.createEngagement(
+ uuid4(), 'Validation', None)
self.engagement.engagement_team.add(self.user, self.el_user)
self.engagement.reviewer = self.el_user
self.engagement.peer_reviewer = self.peer_review_user
self.engagement.save()
self.token = self.loginAndCreateSessionToken(self.user)
self.ELtoken = self.loginAndCreateSessionToken(self.el_user)
- self.user_not_team_token = self.loginAndCreateSessionToken(self.user_not_team)
+ self.user_not_team_token = self.loginAndCreateSessionToken(
+ self.user_not_team)
urlStr = self.urlPrefix + 'engagements/${uuid}/status'
myjson = json.dumps({"description": "blah blah"}, ensure_ascii=False)
- response = self.c.post(urlStr.replace('${uuid}', str(self.engagement.uuid)), myjson,
- content_type='application/json', **{'HTTP_AUTHORIZATION': "token " + self.ELtoken})
+ response = self.c.post(
+ urlStr.replace(
+ '${uuid}', str(
+ self.engagement.uuid)), myjson,
+ content_type='application/json', **{
+ 'HTTP_AUTHORIZATION': "token " + self.ELtoken})
self.created_status = json.loads(response.content)
def testPutStatus(self):
@@ -89,19 +106,34 @@ class EngagementStatusTestCase(TestBaseEntity):
self.printTestName("START - testPutStatus")
- logger.debug("action should fail (401), Only Engagement Lead can set Engagement Progress")
+ logger.debug(
+ "action should fail (401), Only \
+ Engagement Lead can set Engagement Progress")
myjson = json.dumps(
- {"eng_status_uuid": self.created_status['uuid'], "description": "blah2 blah2"}, ensure_ascii=False)
- response = self.c.put(urlStr.replace('${uuid}', str(self.engagement.uuid)), myjson,
- content_type='application/json', **{'HTTP_AUTHORIZATION': "token " + self.token})
+ {
+ "eng_status_uuid": self.created_status['uuid'],
+ "description": "blah2 blah2"},
+ ensure_ascii=False)
+ response = self.c.put(urlStr.replace('${uuid}',
+ str(self.engagement.uuid)),
+ myjson,
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token " + self.token})
print('Got response : ' + str(response.status_code))
self.assertEqual(response.status_code, HTTP_401_UNAUTHORIZED)
myjson = json.dumps(
- {"eng_status_uuid": self.created_status['uuid'], "description": "blah2 blah2"}, ensure_ascii=False)
- response = self.c.put(urlStr.replace('${uuid}', str(self.engagement.uuid)), myjson,
- content_type='application/json', **{'HTTP_AUTHORIZATION': "token " + self.ELtoken})
+ {
+ "eng_status_uuid": self.created_status['uuid'],
+ "description": "blah2 blah2"},
+ ensure_ascii=False)
+ response = self.c.put(
+ urlStr.replace(
+ '${uuid}', str(
+ self.engagement.uuid)), myjson,
+ content_type='application/json', **{
+ 'HTTP_AUTHORIZATION': "token " + self.ELtoken})
print('Got response : ' + str(response.status_code))
self.assertEqual(response.status_code, HTTP_200_OK)
@@ -112,24 +144,36 @@ class EngagementStatusTestCase(TestBaseEntity):
self.printTestName("START - testPostStatus")
- logger.debug("action should fail (401), Only Engagement Lead can set Engagement Progress")
+ logger.debug(
+ "action should fail (401), Only Engagement \
+ Lead can set Engagement Progress")
myjson = json.dumps({"description": "blah blah"}, ensure_ascii=False)
- response = self.c.post(urlStr.replace('${uuid}', str(self.engagement.uuid)), myjson,
- content_type='application/json', **{'HTTP_AUTHORIZATION': "token " + self.token})
+ response = self.c.post(urlStr.replace('${uuid}',
+ str(self.engagement.uuid)),
+ myjson,
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token " + self.token})
print('Got response : ' + str(response.status_code))
self.assertEqual(response.status_code, HTTP_401_UNAUTHORIZED)
logger.debug("action should fail (400), For fake engagement uuid")
myjson = json.dumps({"description": "blah blah"}, ensure_ascii=False)
- response = self.c.post(urlStr.replace(
- '${uuid}', str(uuid4())), myjson, content_type='application/json', **{'HTTP_AUTHORIZATION': "token " + self.ELtoken})
+ response = self.c.post(
+ urlStr.replace(
+ '${uuid}', str(
+ uuid4())), myjson, content_type='application/json', **{
+ 'HTTP_AUTHORIZATION': "token " + self.ELtoken})
print('Got response : ' + str(response.status_code))
self.assertEqual(response.status_code, HTTP_401_UNAUTHORIZED)
myjson = json.dumps({"description": "blah blah"}, ensure_ascii=False)
- response = self.c.post(urlStr.replace('${uuid}', str(self.engagement.uuid)), myjson,
- content_type='application/json', **{'HTTP_AUTHORIZATION': "token " + self.ELtoken})
+ response = self.c.post(
+ urlStr.replace(
+ '${uuid}', str(
+ self.engagement.uuid)), myjson,
+ content_type='application/json', **{
+ 'HTTP_AUTHORIZATION': "token " + self.ELtoken})
print('Got response : ' + str(response.status_code))
self.assertEqual(response.status_code, HTTP_200_OK)
@@ -140,21 +184,30 @@ class EngagementStatusTestCase(TestBaseEntity):
self.printTestName("START - testGetStatus")
- response = self.c.get(urlStr.replace('${uuid}', str(self.engagement.uuid)),
- content_type='application/json', **{'HTTP_AUTHORIZATION': "token " + self.token})
+ response = self.c.get(urlStr.replace('${uuid}',
+ str(self.engagement.uuid)),
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token " + self.token})
print('Got response : ' + str(response.status_code))
self.assertEqual(response.status_code, HTTP_200_OK)
- logger.debug("action should fail (401), Only team members can get status")
+ logger.debug(
+ "action should fail (401), Only team members can get status")
- response = self.c.get(urlStr.replace('${uuid}', str(
- self.engagement.uuid)), content_type='application/json', **{'HTTP_AUTHORIZATION': "token " + self.user_not_team_token})
+ response = self.c.get(
+ urlStr.replace(
+ '${uuid}',
+ str(self.engagement.uuid)),
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token " + self.user_not_team_token})
print('Got response : ' + str(response.status_code))
self.assertEqual(response.status_code, HTTP_401_UNAUTHORIZED)
- logger.debug("action should fail (401), Only existing eng_uuid cab ne fetched")
+ logger.debug(
+ "action should fail (401), Only existing eng_uuid cab ne fetched")
response = self.c.get(urlStr.replace('${uuid}', str(
- uuid4())), content_type='application/json', **{'HTTP_AUTHORIZATION': "token " + self.token})
+ uuid4())), content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token " + self.token})
print('Got response : ' + str(response.status_code))
self.assertEqual(response.status_code, HTTP_401_UNAUTHORIZED)
diff --git a/django/engagementmanager/tests/test_engagement_admin_operations.py b/django/engagementmanager/tests/test_engagement_admin_operations.py
index a50e49f..22e23b2 100644
--- a/django/engagementmanager/tests/test_engagement_admin_operations.py
+++ b/django/engagementmanager/tests/test_engagement_admin_operations.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -36,8 +36,8 @@
# ============LICENSE_END============================================
#
# ECOMP is a trademark and service mark of AT&T Intellectual Property.
-from engagementmanager.models import Vendor, Engagement, IceUserProfile, \
- Checklist
+from engagementmanager.models import Engagement, IceUserProfile, \
+ Checklist, Vendor
from engagementmanager.tests.test_base_entity import TestBaseEntity
from engagementmanager.utils.constants import EngagementStage, Constants
from rest_framework.status import HTTP_200_OK, HTTP_401_UNAUTHORIZED
@@ -52,23 +52,44 @@ class EngagementAdminOperationsTestCase(TestBaseEntity):
def childSetup(self):
self.createVendors([Constants.service_provider_company_name, 'Other'])
self.createDefaultRoles()
- self.admin, self.el, self.standard_user = self.creator.createAndGetDefaultRoles()
- self.el_user = self.creator.createUser(Vendor.objects.get(name=Constants.service_provider_company_name),
- self.randomGenerator("main-vendor-email"), '55501000199',
- 'el user', self.el, True)
- self.second_el_user = self.creator.createUser(Vendor.objects.get(
- name=Constants.service_provider_company_name), self.randomGenerator("main-vendor-email"), '55501000199',
- 'el user2', self.el, True)
+ self.admin, self.el, self.standard_user = \
+ self.creator.createAndGetDefaultRoles()
+ self.el_user = self.creator.createUser(
+ Vendor.objects.get(
+ name=Constants.service_provider_company_name),
+ self.randomGenerator("main-vendor-email"),
+ '55501000199',
+ 'el user',
+ self.el,
+ True)
+ self.second_el_user = self.creator.createUser(
+ Vendor.objects.get(
+ name=Constants.service_provider_company_name),
+ self.randomGenerator("main-vendor-email"),
+ '55501000199',
+ 'el user2',
+ self.el,
+ True)
self.el_user_to_update = self.creator.createUser(
Vendor.objects.get(name=Constants.service_provider_company_name),
self.randomGenerator("main-vendor-email"), '55501000199',
'el user 3', self.el, True)
- self.user = self.creator.createUser(Vendor.objects.get(name='Other'),
- self.randomGenerator("main-vendor-email"), '55501000199',
- 'user', self.standard_user, True)
- self.admin_user = self.creator.createUser(Vendor.objects.get(
- name=Constants.service_provider_company_name), Constants.service_provider_admin_mail, '55501000199',
- 'admin user', self.admin, True)
+ self.user = self.creator.createUser(
+ Vendor.objects.get(
+ name='Other'),
+ self.randomGenerator("main-vendor-email"),
+ '55501000199',
+ 'user',
+ self.standard_user,
+ True)
+ self.admin_user = self.creator.createUser(
+ Vendor.objects.get(
+ name=Constants.service_provider_company_name),
+ Constants.service_provider_admin_mail,
+ '55501000199',
+ 'admin user',
+ self.admin,
+ True)
self.engagement = self.creator.createEngagement(
'just-a-fake-uuid', 'Validation', None)
@@ -78,10 +99,16 @@ class EngagementAdminOperationsTestCase(TestBaseEntity):
self.engagement.peer_reviewer = self.second_el_user
self.engagement.save()
# Create a VF
- self.deploymentTarget = self.creator.createDeploymentTarget(self.randomGenerator("randomString"),
- self.randomGenerator("randomString"))
- self.vf = self.creator.createVF(self.randomGenerator("randomString"), self.engagement, self.deploymentTarget,
- False, Vendor.objects.get(name='Other'))
+ self.deploymentTarget = self.creator.createDeploymentTarget(
+ self.randomGenerator("randomString"),
+ self.randomGenerator("randomString"))
+ self.vf = self.creator.createVF(
+ self.randomGenerator("randomString"),
+ self.engagement,
+ self.deploymentTarget,
+ False,
+ Vendor.objects.get(
+ name='Other'))
self.userToken = self.loginAndCreateSessionToken(self.user)
self.elToken = self.loginAndCreateSessionToken(self.el_user)
@@ -95,7 +122,8 @@ class EngagementAdminOperationsTestCase(TestBaseEntity):
print(urlStr)
self.printTestName("testGetAllEls [Start]")
logger.debug(
- "action should success (200), and return all els exists in the system")
+ "action should success (200), and return \
+ all els exists in the system")
response = self.c.get(
urlStr, **{'HTTP_AUTHORIZATION': "token " + self.adminToken})
print('Got response : ' + str(response.status_code))
@@ -115,8 +143,11 @@ class EngagementAdminOperationsTestCase(TestBaseEntity):
print(urlStr)
self.printTestName("testArchiveEngagement [Start]")
logger.debug("action should success (202), and archive the engagement")
- response = self.c.put(urlStr, json.dumps({'reason': 'test_reason'}), content_type='application/json',
- **{'HTTP_AUTHORIZATION': "token " + self.adminToken})
+ response = self.c.put(
+ urlStr,
+ json.dumps({'reason': 'test_reason'}),
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token " + self.adminToken})
print('Got response : ' + str(response.status_code))
self.assertEqual(response.status_code, HTTP_200_OK)
@@ -133,8 +164,11 @@ class EngagementAdminOperationsTestCase(TestBaseEntity):
print(urlStr)
self.printTestName("testArchiveEngagement [Start]")
logger.debug("action should success (202), and archive the engagement")
- response = self.c.put(urlStr, json.dumps({'reason': 'test_reason'}), content_type='application/json',
- **{'HTTP_AUTHORIZATION': "token " + self.adminToken})
+ response = self.c.put(
+ urlStr,
+ json.dumps({'reason': 'test_reason'}),
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token " + self.adminToken})
print('Got response : ' + str(response.status_code))
self.assertEqual(response.status_code, HTTP_200_OK)
@@ -152,8 +186,11 @@ class EngagementAdminOperationsTestCase(TestBaseEntity):
self.printTestName("testSetEngagementReviewer [Start]")
logger.debug(
"action should success (200), and set the engagement reviewer")
- response = self.c.put(urlStr, json.dumps({'reviewer': str(self.el_user_to_update.uuid)}), content_type='application/json',
- **{'HTTP_AUTHORIZATION': "token " + self.adminToken})
+ response = self.c.put(
+ urlStr,
+ json.dumps({'reviewer': str(self.el_user_to_update.uuid)}),
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token " + self.adminToken})
print('Got response : ' + str(response.status_code))
self.assertEqual(response.status_code, HTTP_200_OK)
@@ -168,9 +205,13 @@ class EngagementAdminOperationsTestCase(TestBaseEntity):
print(urlStr)
self.printTestName("testSetEngagementPeerReviewer [Start]")
logger.debug(
- "action should success (200), and set the engagement peer reviewer")
- response = self.c.put(urlStr, json.dumps({'peerreviewer': str(self.el_user_to_update.uuid)}), content_type='application/json',
- **{'HTTP_AUTHORIZATION': "token " + self.adminToken})
+ "action should success (200), and set the \
+ engagement peer reviewer")
+ response = self.c.put(
+ urlStr,
+ json.dumps({'peerreviewer': str(self.el_user_to_update.uuid)}),
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token " + self.adminToken})
print('Got response : ' + str(response.status_code))
self.assertEqual(response.status_code, HTTP_200_OK)
@@ -196,8 +237,11 @@ class EngagementAdminOperationsTestCase(TestBaseEntity):
print(urlStr)
self.printTestName("testNegativeArchiveEngagement [Start]")
logger.debug("action should failed due to missing permissions (401)")
- response = self.c.put(urlStr, json.dumps({'reason': 'test_reason'}), content_type='application/json',
- **{'HTTP_AUTHORIZATION': "token " + self.elToken})
+ response = self.c.put(
+ urlStr,
+ json.dumps({'reason': 'test_reason'}),
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token " + self.elToken})
print('Got response : ' + str(response.status_code))
self.assertEqual(response.status_code, HTTP_401_UNAUTHORIZED)
self.printTestName("testNegativeArchiveEngagement [End]")
@@ -208,8 +252,11 @@ class EngagementAdminOperationsTestCase(TestBaseEntity):
print(urlStr)
self.printTestName("testNegativeSetEngagementReviewer [Start]")
logger.debug("action should failed due to missing permissions (401)")
- response = self.c.put(urlStr, json.dumps({'reviewer': str(self.el_user_to_update.uuid)}), content_type='application/json',
- **{'HTTP_AUTHORIZATION': "token " + self.elToken})
+ response = self.c.put(
+ urlStr,
+ json.dumps({'reviewer': str(self.el_user_to_update.uuid)}),
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token " + self.elToken})
print('Got response : ' + str(response.status_code))
self.assertEqual(response.status_code, HTTP_401_UNAUTHORIZED)
self.printTestName("testNegativeSetEngagementReviewer [End]")
@@ -220,8 +267,11 @@ class EngagementAdminOperationsTestCase(TestBaseEntity):
print(urlStr)
self.printTestName("testNegativeSetEngagementPeerReviewer [Start]")
logger.debug("action should failed due to missing permissions (401)")
- response = self.c.put(urlStr, json.dumps({'peerreviewer': str(self.el_user_to_update.uuid)}), content_type='application/json',
- **{'HTTP_AUTHORIZATION': "token " + self.elToken})
+ response = self.c.put(
+ urlStr,
+ json.dumps({'peerreviewer': str(self.el_user_to_update.uuid)}),
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token " + self.elToken})
print('Got response : ' + str(response.status_code))
self.assertEqual(response.status_code, HTTP_401_UNAUTHORIZED)
self.printTestName("testNegativeSetEngagementPeerReviewer [End]")
@@ -232,11 +282,19 @@ class EngagementAdminOperationsTestCase(TestBaseEntity):
print(urlStr)
self.printTestName("testSetEngagementReviewer [Start]")
logger.debug(
- "action should success (200), and switch between the engagement reviewer and peer reviewer")
+ "action should success (200), and switch between the engagement \
+ reviewer and peer reviewer")
logger.debug("Reviewer: %s, PeerReviewer: %s" %
- (self.engagement.reviewer, self.engagement.peer_reviewer))
- response = self.c.put(urlStr, json.dumps({'reviewer': str(self.second_el_user.uuid), 'peerreviewer': str(
- self.el_user.uuid)}), content_type='application/json', **{'HTTP_AUTHORIZATION': "token " + self.adminToken})
+ (self.engagement.reviewer,
+ self.engagement.peer_reviewer))
+ response = self.c.put(urlStr,
+ json.dumps({'reviewer':
+ str(self.second_el_user.uuid),
+ 'peerreviewer':
+ str(self.el_user.uuid)}),
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token "
+ + self.adminToken})
print('Got response : ' + str(response.status_code))
self.assertEqual(response.status_code, HTTP_200_OK)
@@ -259,9 +317,14 @@ class EngagementAdminOperationsTestCase(TestBaseEntity):
"cl-name", "review", 1, None, self.engagement, cl_template,
self.admin_user, self.el_user)
logger.debug(
- "action should success (200), set the engagement reviewer and change checklist owner")
- response = self.c.put(urlStr, json.dumps({'reviewer': str(self.el_user_to_update.uuid)}), content_type='application/json',
- **{'HTTP_AUTHORIZATION': "token " + self.adminToken})
+ "action should success (200), set the engagement reviewer \
+ and change checklist owner")
+ response = self.c.put(urlStr,
+ json.dumps({'reviewer':
+ str(self.el_user_to_update.uuid)}),
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token "
+ + self.adminToken})
print('Got response : ' + str(response.status_code))
checklist = Checklist.objects.get(uuid=checklist.uuid)
self.assertEqual(checklist.owner, self.el_user_to_update)
@@ -271,15 +334,21 @@ class EngagementAdminOperationsTestCase(TestBaseEntity):
urlStr = self.urlPrefix + 'engagements/' + \
str(self.engagement.uuid) + '/peerreviewer/'
print(urlStr)
- self.printTestName("testChecklistOwnerAfterChangePeerReviewer [Start]")
+ self.printTestName("testChecklistOwnerAfterChangePeerReviewer \
+ [Start]")
cl_template = self.creator.createDefaultCheckListTemplate()
checklist = self.creator.createCheckList(
"cl-name", "peer_review", 1, None, self.engagement, cl_template,
self.admin_user, self.second_el_user)
logger.debug(
- "action should success (200), set the engagement peer reviewer and change checklist owner")
- response = self.c.put(urlStr, json.dumps({'peerreviewer': str(self.el_user_to_update.uuid)}), content_type='application/json',
- **{'HTTP_AUTHORIZATION': "token " + self.adminToken})
+ "action should success (200), set the engagement \
+ peer reviewer and change checklist owner")
+ response = self.c.put(urlStr,
+ json.dumps({'peerreviewer':
+ str(self.el_user_to_update.uuid)}),
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token "
+ + self.adminToken})
print('Got response : ' + str(response.status_code))
checklist = Checklist.objects.get(uuid=checklist.uuid)
self.assertEqual(checklist.owner, self.el_user_to_update)
@@ -295,11 +364,18 @@ class EngagementAdminOperationsTestCase(TestBaseEntity):
"cl-name", "review", 1, None, self.engagement, cl_template,
self.admin_user, self.el_user)
logger.debug(
- "action should success (200), switch between the engagement reviewer and peer reviewer and change checklist owner")
+ "action should success (200), switch between the engagement \
+ reviewer and peer reviewer and change checklist owner")
logger.debug("Reviewer: %s, PeerReviewer: %s" %
(self.engagement.reviewer, self.engagement.peer_reviewer))
- response = self.c.put(urlStr, json.dumps({'reviewer': str(self.second_el_user.uuid), 'peerreviewer': str(
- self.el_user.uuid)}), content_type='application/json', **{'HTTP_AUTHORIZATION': "token " + self.adminToken})
+ response = self.c.put(urlStr,
+ json.dumps({'reviewer':
+ str(self.second_el_user.uuid),
+ 'peerreviewer':
+ str(self.el_user.uuid)}),
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token "
+ + self.adminToken})
print('Got response : ' + str(response.status_code))
checklist = Checklist.objects.get(uuid=checklist.uuid)
self.assertEqual(checklist.owner, self.second_el_user)
diff --git a/django/engagementmanager/tests/test_engagement_export.py b/django/engagementmanager/tests/test_engagement_export.py
index 7438658..ec93330 100644
--- a/django/engagementmanager/tests/test_engagement_export.py
+++ b/django/engagementmanager/tests/test_engagement_export.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -39,7 +39,8 @@
from rest_framework.status import HTTP_200_OK,\
HTTP_500_INTERNAL_SERVER_ERROR
from engagementmanager.models import Vendor, ECOMPRelease
-from engagementmanager.service.engagement_service import get_expanded_engs_for_export
+from engagementmanager.service.engagement_service \
+ import get_expanded_engs_for_export
from engagementmanager.tests.test_base_entity import TestBaseEntity
from engagementmanager.utils.constants import EngagementStage, Constants
from engagementmanager.service.logging_service import LoggingServiceFactory
@@ -53,13 +54,19 @@ class EngagementExportTestCase(TestBaseEntity):
def childSetup(self):
self.createVendors([Constants.service_provider_company_name, 'Other'])
self.createDefaultRoles()
- self.admin, self.el, self.standard_user = self.creator.createAndGetDefaultRoles()
+ self.admin, self.el, self.standard_user = \
+ self.creator.createAndGetDefaultRoles()
self.peer_reviewer = self.creator.createUser(Vendor.objects.get(
name='Other'), self.randomGenerator("main-vendor-email"),
'55501000199', 'peer-reviewer user', self.el, True)
- self.admin = self.creator.createUser(Vendor.objects.get(
- name=Constants.service_provider_company_name), Constants.service_provider_admin_mail,
- 'Aa123456', 'admin user', self.el, True)
+ self.admin = self.creator.createUser(
+ Vendor.objects.get(
+ name=Constants.service_provider_company_name),
+ Constants.service_provider_admin_mail,
+ 'Aa123456',
+ 'admin user',
+ self.el,
+ True)
self.user = self.creator.createUser(Vendor.objects.get(
name='Other'), self.randomGenerator("main-vendor-email"),
'Aa123456', 'user', self.standard_user, True)
@@ -73,9 +80,15 @@ class EngagementExportTestCase(TestBaseEntity):
self.engagement.engagement_stage = EngagementStage.Active.name
self.engagement.save()
self.deploymentTarget = self.creator.createDeploymentTarget(
- self.randomGenerator("randomString"), self.randomGenerator("randomString"))
- self.vf = self.creator.createVF(self.randomGenerator("randomString"), self.engagement,
- self.deploymentTarget, False, Vendor.objects.get(name=Constants.service_provider_company_name))
+ self.randomGenerator("randomString"),
+ self.randomGenerator("randomString"))
+ self.vf = self.creator.createVF(
+ self.randomGenerator("randomString"),
+ self.engagement,
+ self.deploymentTarget,
+ False,
+ Vendor.objects.get(
+ name=Constants.service_provider_company_name))
self.vf.ecomp_release = ECOMPRelease.objects.create(
uuid='uuid1', name='ActiveECOMPRelease')
self.vf.save()
@@ -89,9 +102,15 @@ class EngagementExportTestCase(TestBaseEntity):
self.engagement2.engagement_stage = EngagementStage.Intake.name
self.engagement2.save()
self.deploymentTarget = self.creator.createDeploymentTarget(
- self.randomGenerator("randomString"), self.randomGenerator("randomString"))
- self.vf2 = self.creator.createVF(self.randomGenerator("randomString"), self.engagement2,
- self.deploymentTarget, False, Vendor.objects.get(name='Other'))
+ self.randomGenerator("randomString"),
+ self.randomGenerator("randomString"))
+ self.vf2 = self.creator.createVF(
+ self.randomGenerator("randomString"),
+ self.engagement2,
+ self.deploymentTarget,
+ False,
+ Vendor.objects.get(
+ name='Other'))
self.vf2.ecomp_release = ECOMPRelease.objects.create(
uuid='uuid2', name='IntakeECOMPRelease')
self.vf2.save()
@@ -113,7 +132,8 @@ class EngagementExportTestCase(TestBaseEntity):
def testSuccessExport(self):
self.printTestName("Success export [start]")
- if settings.DATABASES["default"]["ENGINE"] == "django.db.backends.sqlite3":
+ if settings.DATABASES["default"]["ENGINE"] == \
+ "django.db.backends.sqlite3":
return
urlStr = self.urlPrefix + 'engagement/export/?stage=Active&keyword'
@@ -158,8 +178,10 @@ class EngagementExportTestCase(TestBaseEntity):
self.assertEqual(len(vfs) == 0, True)
# Check overview sheet data procedure:
- logger.debug("Check if the store procedure return data as expected (suppose to return 4 rows of overview "
- "sheet) and by that assume that it exists")
+ logger.debug(
+ "Check if the store procedure return data as expected \
+ (suppose to return 4 rows of overview "
+ "sheet) and by that assume that it exists")
self.assertEqual(len(deployment_targets), 4)
self.printTestName("Success export [end]")
diff --git a/django/engagementmanager/tests/test_expanded_eng.py b/django/engagementmanager/tests/test_expanded_eng.py
index ec89d0b..de2a622 100644
--- a/django/engagementmanager/tests/test_expanded_eng.py
+++ b/django/engagementmanager/tests/test_expanded_eng.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -53,9 +53,15 @@ class testGetExpandedEngsAndSearch(TestBaseEntity):
self.createDefaultRoles()
# Create a user with role el
- vendor = Vendor.objects.get(name=Constants.service_provider_company_name)
- self.el_user = self.creator.createUser(vendor, self.randomGenerator(
- "main-vendor-email"), self.randomGenerator("randomNumber"), self.randomGenerator("randomString"), self.el, True)
+ vendor = Vendor.objects.get(
+ name=Constants.service_provider_company_name)
+ self.el_user = self.creator.createUser(
+ vendor,
+ self.randomGenerator("main-vendor-email"),
+ self.randomGenerator("randomNumber"),
+ self.randomGenerator("randomString"),
+ self.el,
+ True)
self.peer_reviewer = self.creator.createUser(Vendor.objects.get(
name='Other'), self.randomGenerator("main-vendor-email"),
'55501000199', 'peer-reviewer user', self.el, True)
@@ -67,16 +73,27 @@ class testGetExpandedEngsAndSearch(TestBaseEntity):
# Create a user with role standard_user
self.vendor = Vendor.objects.get(name='Other')
- self.user = self.creator.createUser(self.vendor, "Johnny@d2ice.com", self.randomGenerator(
- "randomNumber"), self.randomGenerator("randomString"), self.standard_user, True)
+ self.user = self.creator.createUser(
+ self.vendor,
+ "Johnny@d2ice.com",
+ self.randomGenerator("randomNumber"),
+ self.randomGenerator("randomString"),
+ self.standard_user,
+ True)
print('-----------------------------------------------------')
print('Created User:')
print('UUID: ' + str(self.user.uuid))
print('Full Name: ' + self.user.full_name)
print('-----------------------------------------------------')
- self.service_provider = Vendor.objects.get(name=Constants.service_provider_company_name)
- self.peer_reviewer = self.creator.createUser(self.service_provider, self.randomGenerator(
- "main-vendor-email"), self.randomGenerator("randomNumber"), self.randomGenerator("randomString"), self.el, True)
+ self.service_provider = Vendor.objects.get(
+ name=Constants.service_provider_company_name)
+ self.peer_reviewer = self.creator.createUser(
+ self.service_provider,
+ self.randomGenerator("main-vendor-email"),
+ self.randomGenerator("randomNumber"),
+ self.randomGenerator("randomString"),
+ self.el,
+ True)
logger.debug('-----------------------------------------------------')
logger.debug('Created Peer Reviewer:')
logger.debug('UUID: ' + str(self.peer_reviewer.uuid))
@@ -84,13 +101,18 @@ class testGetExpandedEngsAndSearch(TestBaseEntity):
logger.debug('-----------------------------------------------------')
# Create an Engagement with team
- engStageList = [EngagementStage.Intake.name, EngagementStage.Active.name,
- EngagementStage.Validated.name, EngagementStage.Completed.name] # @UndefinedVariable
+ engStageList = [
+ EngagementStage.Intake.name,
+ EngagementStage.Active.name,
+ EngagementStage.Validated.name,
+ EngagementStage.Completed.name] # @UndefinedVariable
self.random_stage = engStageList[(random.randint(0, 3) * 2 + 1) % 4]
self.names_array = list()
for i in range(0, 14):
self.engagement = self.creator.createEngagement(
- self.randomGenerator("randomString"), self.randomGenerator("randomString"), None)
+ self.randomGenerator(
+ "randomString"),
+ self.randomGenerator("randomString"), None)
self.engagement.reviewer = self.el_user
self.engagement.peer_reviewer = self.peer_reviewer
self.engagement.engagement_manual_id = self.randomGenerator(
@@ -107,10 +129,14 @@ class testGetExpandedEngsAndSearch(TestBaseEntity):
self.names_array.append(self.engagement.engagement_manual_id)
# Create a VF
self.deploymentTarget = self.creator.createDeploymentTarget(
- self.randomGenerator("randomString"), self.randomGenerator("randomString"))
- # self.asInfrastructure = self.creator.createApplicationServiceInfrastructure(self.randomGenerator("randomString"))
+ self.randomGenerator("randomString"),
+ self.randomGenerator("randomString"))
self.vf = self.creator.createVF(
- "vf_" + str(i), self.engagement, self.deploymentTarget, False, vendor)
+ "vf_" + str(i),
+ self.engagement,
+ self.deploymentTarget,
+ False,
+ vendor)
self.vf.save()
self.names_array.append(self.vf.name)
print('-----------------------------------------------------')
@@ -120,7 +146,11 @@ class testGetExpandedEngsAndSearch(TestBaseEntity):
if (i % 2 == 0):
self.engagement.engagement_team.add(self.user)
vfc = self.creator.createVFC(
- "vfc_" + str(i), self.randomGenerator("randomNumber"), self.vendor, self.vf, self.el_user)
+ "vfc_" + str(i),
+ self.randomGenerator("randomNumber"),
+ self.vendor,
+ self.vf,
+ self.el_user)
self.names_array.append(vfc.name)
self.engagement.save()
@@ -128,8 +158,8 @@ class testGetExpandedEngsAndSearch(TestBaseEntity):
random.randint(0, len(self.names_array) - 1))]
self.token = self.loginAndCreateSessionToken(self.user)
- def loggerTestFailedOrSucceded(self, bool):
- if bool:
+ def loggerTestFailedOrSucceded(self, bool_flag):
+ if bool_flag:
logger.debug("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$")
logger.debug(" Test Succeeded")
logger.debug("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n\n")
@@ -142,13 +172,16 @@ class testGetExpandedEngsAndSearch(TestBaseEntity):
urlStr = self.urlPrefix + 'engagement/expanded/'
logger.debug("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$")
logger.debug(
- " Test started: test_get_expanded_even_numbered_engs_by_standard_user_no_keyword")
+ " Test started: test_get_expanded_even_numbered_\
+ engs_by_standard_user_no_keyword")
logger.debug("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n\n")
postData = {'stage': 'All', 'keyword': '', 'offset': 0, 'limit': 15}
datajson = json.dumps(postData, ensure_ascii=False)
- response = self.c.post(
- urlStr, datajson, content_type='application/json', **{'HTTP_AUTHORIZATION': "token " + self.token})
+ response = self.c.post(urlStr,
+ datajson,
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token " + self.token})
status = response.status_code
logger.debug("Got response : " + str(status))
if (status != 200):
@@ -180,8 +213,10 @@ class testGetExpandedEngsAndSearch(TestBaseEntity):
postData = {'stage': self.random_stage,
'keyword': '', 'offset': 0, 'limit': 15}
datajson = json.dumps(postData, ensure_ascii=False)
- response = self.c.post(
- urlStr, datajson, content_type='application/json', **{'HTTP_AUTHORIZATION': "token " + self.token})
+ response = self.c.post(urlStr,
+ datajson,
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token " + self.token})
status = response.status_code
logger.debug("Got response : " + str(status))
if (status != 200):
@@ -196,7 +231,8 @@ class testGetExpandedEngsAndSearch(TestBaseEntity):
if (x['engagement__engagement_stage'] != self.random_stage):
self.loggerTestFailedOrSucceded(False)
logger.error(
- "VF With different stage than defined filter was retrieved")
+ "VF With different stage than \
+ defined filter was retrieved")
self.assertEqual(
x['engagement__engagement_stage'], self.random_stage)
self.loggerTestFailedOrSucceded(True)
@@ -212,7 +248,10 @@ class testGetExpandedEngsAndSearch(TestBaseEntity):
'offset': 0, 'limit': 15}
datajson = json.dumps(postData, ensure_ascii=False)
response = self.c.post(
- urlStr, datajson, content_type='application/json', **{'HTTP_AUTHORIZATION': "token " + self.token})
+ urlStr,
+ datajson,
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token " + self.token})
status = response.status_code
logger.debug("Got response : " + str(status))
self.assertEqual(response.status_code, 200)
@@ -220,8 +259,10 @@ class testGetExpandedEngsAndSearch(TestBaseEntity):
data = json.loads(response.content)
print("random keyword chosen: " + self.random_keyword)
for x in data['array']:
- bool = False
- if (x['engagement__engagement_manual_id'] != self.random_keyword and x['vf__name'] != self.random_keyword):
+ bool_flag = False
+ if (
+ x['engagement__engagement_manual_id'] != self.random_keyword
+ and x['vf__name'] != self.random_keyword):
vf = VF.objects.get(engagement__uuid=x['engagement__uuid'])
urlStr = self.urlPrefix + 'vf/' + str(vf.uuid) + '/vfcs/'
vfc_of_x_response = self.c.get(
@@ -229,13 +270,13 @@ class testGetExpandedEngsAndSearch(TestBaseEntity):
vfc_list = json.loads(vfc_of_x_response.content)
for vfc in vfc_list:
if vfc['name'] == self.random_keyword:
- bool = True
+ bool_flag = True
break
else:
continue
else:
- bool = True
- if (not bool):
+ bool_flag = True
+ if (not bool_flag):
self.loggerTestFailedOrSucceded(False)
logger.error(
"VF With different stage than filter was retrieved")
@@ -253,8 +294,10 @@ class testGetExpandedEngsAndSearch(TestBaseEntity):
postData = {'stage': self.random_stage,
'keyword': self.random_keyword, 'offset': 0, 'limit': 15}
datajson = json.dumps(postData, ensure_ascii=False)
- response = self.c.post(
- urlStr, datajson, content_type='application/json', **{'HTTP_AUTHORIZATION': "token " + self.token})
+ response = self.c.post(urlStr,
+ datajson,
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token " + self.token})
status = response.status_code
logger.debug("Got response : " + str(status))
if (status != 200):
@@ -265,14 +308,17 @@ class testGetExpandedEngsAndSearch(TestBaseEntity):
data = json.loads(response.content)
print("random keyword chosen: " + self.random_keyword)
for x in data['array']:
- bool = False
+ bool_flag = False
if (x['engagement__engagement_stage'] != self.random_stage):
self.loggerTestFailedOrSucceded(False)
logger.error(
- "VF With different stage than defined filter was retrieved")
+ "VF With different stage than \
+ defined filter was retrieved")
self.assertEqual(
x['engagement__engagement_stage'], self.random_stage)
- if (x['engagement__engagement_manual_id'] != self.random_keyword and x['vf__name'] != self.random_keyword):
+ if (
+ x['engagement__engagement_manual_id'] != self.random_keyword
+ and x['vf__name'] != self.random_keyword):
vf = VF.objects.get(engagement__uuid=x['engagement__uuid'])
urlStr = self.urlPrefix + 'vf' + str(vf.uuid) + '/vfcs/'
vfc_of_x_response = self.c.get(
@@ -280,13 +326,13 @@ class testGetExpandedEngsAndSearch(TestBaseEntity):
vfc_list = json.loads(vfc_of_x_response.content)
for vfc in vfc_list:
if (vfc['name'] == self.random_keyword):
- bool = True
+ bool_flag = True
break
else:
continue
else:
- bool = True
- if (not bool):
+ bool_flag = True
+ if (not bool_flag):
self.loggerTestFailedOrSucceded(False)
logger.error(
"VF With different stage than filter was retrieved")
@@ -304,8 +350,10 @@ class testGetExpandedEngsAndSearch(TestBaseEntity):
postData = {'stage': 'All', 'keyword': email_test,
'offset': 0, 'limit': 15}
datajson = json.dumps(postData, ensure_ascii=False)
- response = self.c.post(
- urlStr, datajson, content_type='application/json', **{'HTTP_AUTHORIZATION': "token " + self.token})
+ response = self.c.post(urlStr,
+ datajson,
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token " + self.token})
status = response.status_code
logger.debug("Got response : " + str(status))
self.assertEqual(response.status_code, 200)
@@ -316,7 +364,8 @@ class testGetExpandedEngsAndSearch(TestBaseEntity):
for vf_record in data['array']:
vf = VF.objects.get(
engagement__uuid=vf_record['engagement__uuid'])
- if (not vf.engagement.engagement_team.filter(uuid=self.user.uuid).exists()):
+ if (not vf.engagement.engagement_team.filter(
+ uuid=self.user.uuid).exists()):
self.loggerTestFailedOrSucceded(False)
logger.error(
"VF With different stage than filter was retrieved")
diff --git a/django/engagementmanager/tests/test_import_engagement_xls.py b/django/engagementmanager/tests/test_import_engagement_xls.py
index 8513998..5136af2 100644
--- a/django/engagementmanager/tests/test_import_engagement_xls.py
+++ b/django/engagementmanager/tests/test_import_engagement_xls.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -41,7 +41,8 @@ import os
from django.core import management
-from engagementmanager.management.commands.initial_populate_db import execute_bootstrap_actions
+from engagementmanager.management.commands.initial_populate_db \
+ import execute_bootstrap_actions
from engagementmanager.tests.test_base_entity import TestBaseEntity
@@ -54,10 +55,10 @@ class TestImportEngagementXLSTestCase(TestBaseEntity):
def initBody(self):
pass
- ### TESTS ###
def testImportEngagementXLSTestCase(self):
self.initBody()
- xls_path = 'engagementmanager/tests/D2_ICE_Engagements_Import_Example.xlsx'
+ xls_path = \
+ 'engagementmanager/tests/D2_ICE_Engagements_Import_Example.xlsx'
if not os.path.exists(xls_path):
print("File doesnt exists")
diff --git a/django/engagementmanager/tests/test_invite_members.py b/django/engagementmanager/tests/test_invite_members.py
index 460eded..eface25 100644
--- a/django/engagementmanager/tests/test_invite_members.py
+++ b/django/engagementmanager/tests/test_invite_members.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -83,11 +83,17 @@ class TestInviteMembersTestCase(TestBaseEntity):
# Create a VF
self.deploymentTarget = self.creator.createDeploymentTarget(
- self.randomGenerator("randomString"), self.randomGenerator("randomString"))
+ self.randomGenerator("randomString"),
+ self.randomGenerator("randomString"))
for eng in self.engList:
- vf = self.creator.createVF(self.randomGenerator("randomString"), eng,
- self.deploymentTarget, False, Vendor.objects.get(name='Other'))
+ vf = self.creator.createVF(
+ self.randomGenerator("randomString"),
+ eng,
+ self.deploymentTarget,
+ False,
+ Vendor.objects.get(
+ name='Other'))
self.vfList.append(vf)
self.urlStr = self.urlPrefix + "invite-team-members/"
@@ -108,22 +114,30 @@ class TestInviteMembersTestCase(TestBaseEntity):
def inviteContact(self, expectedStatus=HTTP_200_OK):
self.invitedDataStr = json.dumps(self.invitedData, ensure_ascii=False)
- response = self.c.post(self.urlStr, self.invitedDataStr, content_type='application/json',
+ response = self.c.post(self.urlStr,
+ self.invitedDataStr,
+ content_type='application/json',
**{'HTTP_AUTHORIZATION': "token " + self.token})
- print('Got response : ' + str(response.status_code), str(response.content))
+ print('Got response : ' + str(response.status_code),
+ str(response.content))
self.assertEqual(response.status_code, expectedStatus)
return response
def createContactUser(self):
- self.contact = self.creator.createUser(Vendor.objects.get(
- name=Constants.service_provider_company_name), self.data['email'], self.data['phone_number'], self.data['full_name'], self.standard_user, True)
+ self.contact = self.creator.createUser(
+ Vendor.objects.get(
+ name=Constants.service_provider_company_name),
+ self.data['email'],
+ self.data['phone_number'],
+ self.data['full_name'],
+ self.standard_user,
+ True)
print('-----------------------------------------------------')
print('Created User:')
print('UUID: ' + str(self.contact.uuid))
print('Full Name: ' + self.contact.full_name)
print('-----------------------------------------------------')
- ### TESTS ###
def testAddContactForNonExistingContact(self):
self.initBody()
self.inviteContact()
@@ -161,4 +175,5 @@ class TestInviteMembersTestCase(TestBaseEntity):
self.invitedData.append(data)
self.inviteContact(expectedStatus=HTTP_200_OK)
invitedUser = IceUserProfile.objects.get(email=data['email'])
- self.assertTrue(invitedUser in self.engList[i].engagement_team.all())
+ self.assertTrue(
+ invitedUser in self.engList[i].engagement_team.all())
diff --git a/django/engagementmanager/tests/test_next_steps.py b/django/engagementmanager/tests/test_next_steps.py
index 95a8227..d58cad5 100644
--- a/django/engagementmanager/tests/test_next_steps.py
+++ b/django/engagementmanager/tests/test_next_steps.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -53,7 +53,7 @@ class NextStepTest(unittest.TestCase):
pass
def testStandardUserActions(self):
- print('---------------------------------- Testing standard_user Actions ------------------------------------')
+ print('----- Testing standard_user Actions ----- ')
user = MagicMock()
user.role.name = 'standard_user'
@@ -64,7 +64,7 @@ class NextStepTest(unittest.TestCase):
user, NextStepState.Completed, NextStepState.Incomplete)
def testELUserActions(self):
- print('---------------------------------- Testing EL Actions ------------------------------------')
+ print('----- Testing EL Actions ----- ')
user = MagicMock()
user.role.name = 'el'
diff --git a/django/engagementmanager/tests/test_next_steps_api.py b/django/engagementmanager/tests/test_next_steps_api.py
index b0be468..f9b94ab 100644
--- a/django/engagementmanager/tests/test_next_steps_api.py
+++ b/django/engagementmanager/tests/test_next_steps_api.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -57,9 +57,14 @@ class TestNextStepsAPI(TestBaseEntity):
self.createDefaultRoles()
# Create a user with role el
- self.el_user = self.creator.createUser(Vendor.objects.get(
- name=Constants.service_provider_company_name), self.randomGenerator("main-vendor-email"),
- '55501000199', 'el user', self.el, True)
+ self.el_user = self.creator.createUser(
+ Vendor.objects.get(
+ name=Constants.service_provider_company_name),
+ self.randomGenerator("main-vendor-email"),
+ '55501000199',
+ 'el user',
+ self.el,
+ True)
print('-----------------------------------------------------')
print('Created User:')
print('UUID: ' + str(self.el_user.uuid))
@@ -87,9 +92,15 @@ class TestNextStepsAPI(TestBaseEntity):
print('-----------------------------------------------------')
# Create a user with role standard_user with SSH key
- self.user_with_ssh = self.creator.createUser(Vendor.objects.get(
- name='Other'), self.randomGenerator("main-vendor-email"),
- '55501000199', 'ssh user', self.standard_user, True, 'just-a-fake-ssh-key')
+ self.user_with_ssh = self.creator.createUser(
+ Vendor.objects.get(
+ name='Other'),
+ self.randomGenerator("main-vendor-email"),
+ '55501000199',
+ 'ssh user',
+ self.standard_user,
+ True,
+ 'just-a-fake-ssh-key')
print('-----------------------------------------------------')
print('Created User:')
print('UUID: ' + str(self.user_with_ssh.uuid))
@@ -97,7 +108,8 @@ class TestNextStepsAPI(TestBaseEntity):
print('-----------------------------------------------------')
# Create an Engagement with team
- self.engagement = self.creator.createEngagement('just-a-fake-uuid', 'Validation', None)
+ self.engagement = self.creator.createEngagement(
+ 'just-a-fake-uuid', 'Validation', None)
self.engagement.reviewer = self.el_user
self.engagement.peer_reviewer = self.el_user
self.engagement.engagement_team.add(self.user, self.el_user)
@@ -108,8 +120,10 @@ class TestNextStepsAPI(TestBaseEntity):
print('-----------------------------------------------------')
# Create another Engagement with team with SSH Key
- self.engagement_ssh = self.creator.createEngagement('just-another-fake-uuid', 'Validation', None)
- self.engagement_ssh.engagement_team.add(self.user_with_ssh, self.el_user)
+ self.engagement_ssh = self.creator.createEngagement(
+ 'just-another-fake-uuid', 'Validation', None)
+ self.engagement_ssh.engagement_team.add(
+ self.user_with_ssh, self.el_user)
self.engagement_ssh.peer_reviewer = self.pruser
self.engagement_ssh.save()
@@ -119,8 +133,10 @@ class TestNextStepsAPI(TestBaseEntity):
print('-----------------------------------------------------')
# Create another Engagement with Main Contact
- self.engagement_with_contact = self.creator.createEngagement('yet-just-another-fake-uuid', 'Validation', None)
- self.engagement_with_contact.engagement_team.add(self.user, self.el_user)
+ self.engagement_with_contact = self.creator.createEngagement(
+ 'yet-just-another-fake-uuid', 'Validation', None)
+ self.engagement_with_contact.engagement_team.add(
+ self.user, self.el_user)
self.engagement_with_contact.contact_user = self.user
self.engagement_with_contact.peer_reviewer = self.pruser
self.engagement_with_contact.save()
@@ -131,26 +147,35 @@ class TestNextStepsAPI(TestBaseEntity):
print('-----------------------------------------------------')
# Create another Engagement with Main Contact
- self.engagement_4_createNS = self.creator.createEngagement('yet-just-another-fake-uuid2', 'Validation', None)
+ self.engagement_4_createNS = self.creator.createEngagement(
+ 'yet-just-another-fake-uuid2', 'Validation', None)
self.engagement_4_createNS.reviewer = self.el_user
self.engagement_4_createNS.peer_reviewer = self.el_user
- self.engagement_4_createNS.engagement_team.add(self.user_with_ssh, self.el_user)
+ self.engagement_4_createNS.engagement_team.add(
+ self.user_with_ssh, self.el_user)
self.engagement_4_createNS.contact_user = self.user_with_ssh
self.engagement_4_createNS.save()
# Create engagement for order
- self.engagement_4_order = self.creator.createEngagement('yet-just-another-fake-uuid3', 'Validation', None)
+ self.engagement_4_order = self.creator.createEngagement(
+ 'yet-just-another-fake-uuid3', 'Validation', None)
self.engagement_4_order.reviewer = self.el_user
self.engagement_4_order.peer_reviewer = self.el_user
- self.engagement_4_order.engagement_team.add(self.user_with_ssh, self.el_user)
+ self.engagement_4_order.engagement_team.add(
+ self.user_with_ssh, self.el_user)
self.engagement_4_order.contact_user = self.user_with_ssh
self.engagement_4_order.save()
self.deploymentTarget = self.creator.createDeploymentTarget(
- self.randomGenerator("randomString"), self.randomGenerator("randomString"))
+ self.randomGenerator("randomString"),
+ self.randomGenerator("randomString"))
self.vendor = Vendor.objects.get(name='Other')
- self.vf = self.creator.createVF(self.randomGenerator("randomString"),
- self.engagement_4_createNS, self.deploymentTarget, False, self.vendor)
+ self.vf = self.creator.createVF(
+ self.randomGenerator("randomString"),
+ self.engagement_4_createNS,
+ self.deploymentTarget,
+ False,
+ self.vendor)
print('-----------------------------------------------------')
print('Created Engagement:')
@@ -163,12 +188,15 @@ class TestNextStepsAPI(TestBaseEntity):
def testCreateDefaultNextStepsAndSetNextStepsState(self):
urlStr = self.urlPrefix + 'engagements/${uuid}/nextsteps/Intake'
- NextStepSvc().create_default_next_steps(self.user, self.engagement, self.el_user)
- NextStepSvc().create_default_next_steps_for_user(self.user, self.el_user)
+ NextStepSvc().create_default_next_steps(
+ self.user, self.engagement, self.el_user)
+ NextStepSvc().create_default_next_steps_for_user(
+ self.user, self.el_user)
num_of_steps = 3
- response = self.c.get(urlStr.replace('${uuid}', str(self.engagement.uuid)),
- **{'HTTP_AUTHORIZATION': "token " + self.token})
+ response = self.c.get(
+ urlStr.replace('${uuid}', str(self.engagement.uuid)),
+ **{'HTTP_AUTHORIZATION': "token " + self.token})
print('Got response : ' + str(response.status_code))
print("DATA After JSON Parse:" + str(response.content))
@@ -180,32 +208,45 @@ class TestNextStepsAPI(TestBaseEntity):
print('Test that GET nextsteps in Intake state returns 3 items ')
self.assertEqual(len(response.json()), num_of_steps)
- print('Test First item state is Incomplete: ' + response.json()[0]['state'])
+ print('Test First item state is Incomplete: ' +
+ response.json()[0]['state'])
self.assertEqual(response.json()[0]['state'], 'Incomplete')
step_uuid = response.json()[0]['uuid']
urlStr = self.urlPrefix + 'nextsteps/' + step_uuid + '/state'
- print('attempt change state of next step Incomplete->COMPLETED by standard_user. This should succeed...')
- response = self.c.put(urlStr, '{ "state" : "Completed" }',
- content_type='application/json', **{'HTTP_AUTHORIZATION': "token " + self.ELtoken})
+ print('attempt change state of next step Incomplete->' +
+ 'COMPLETED by standard_user. This should succeed...')
+ response = self.c.put(
+ urlStr,
+ '{ "state" : "Completed" }',
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token " + self.ELtoken})
print('Got response : ' + str(response.status_code))
self.assertEqual(response.status_code, HTTP_200_OK)
- print('Negative: attempt change state of next step COMPLETED->Incomplete by EL. This should success')
- response = self.c.put(urlStr, '{ "state" : "Incomplete" }',
- content_type='application/json', **{'HTTP_AUTHORIZATION': "token " + self.ELtoken})
+ print('Negative: attempt change state of next step COMPLETED->' +
+ 'Incomplete by EL. This should success')
+ response = self.c.put(
+ urlStr,
+ '{ "state" : "Incomplete" }',
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token " + self.ELtoken})
print('Got response : ' + str(response.status_code))
self.assertEqual(response.status_code, HTTP_200_OK)
def testCreateDefaultNextStepsForUserWithSSHKey(self):
urlStr = self.urlPrefix + 'engagements/${uuid}/nextsteps/Intake'
- NextStepSvc().create_default_next_steps(self.user_with_ssh, self.engagement_ssh, self.el_user)
- # Would not create any next step, due to the reason that the user already has an SSH
- NextStepSvc().create_default_next_steps_for_user(self.user_with_ssh, self.el_user)
+ NextStepSvc().create_default_next_steps(
+ self.user_with_ssh, self.engagement_ssh, self.el_user)
+ # Would not create any next step, due to the reason that the user
+ # already has an SSH
+ NextStepSvc().create_default_next_steps_for_user(self.user_with_ssh,
+ self.el_user)
num_of_steps = 2
- response = self.c.get(urlStr.replace('${uuid}', str(self.engagement_ssh.uuid)),
+ response = self.c.get(urlStr.replace('${uuid}',
+ str(self.engagement_ssh.uuid)),
**{'HTTP_AUTHORIZATION': "token " + self.token})
print('Got response : ' + str(response.status_code))
print("DATA After JSON Parse:" + str(response.content))
@@ -222,33 +263,51 @@ class TestNextStepsAPI(TestBaseEntity):
nsDict["position"] = 4
nsDict["creator_uuid"] = str(self.el_user.uuid)
nsDict[
- "description"] = "Please submit the first version of the VF package. If you have any problems or questions please contact your Engagement Lead (EL)"
+ "description"] = "Please submit the first version of the " +\
+ "VF package. If you have any problems or questions please " +\
+ "contact your Engagement Lead (EL)"
nsDict["state"] = "Incomplete"
nsDict["engagement_stage"] = "Active"
myjson = json.dumps([nsDict], ensure_ascii=False)
- create_nextsteps_url = self.urlPrefix + "engagements/" + str(self.engagement_4_order.uuid) + "/nextsteps/"
- response = self.c.post(create_nextsteps_url, myjson, content_type='application/json',
- **{'HTTP_AUTHORIZATION': "token " + self.ELtoken})
- response = self.c.post(create_nextsteps_url, myjson, content_type='application/json',
- **{'HTTP_AUTHORIZATION': "token " + self.ELtoken})
- response = self.c.post(create_nextsteps_url, myjson, content_type='application/json',
- **{'HTTP_AUTHORIZATION': "token " + self.ELtoken})
-
- get_nextsteps_url = self.urlPrefix + 'engagements/${uuid}/nextsteps/Intake'
+ create_nextsteps_url = self.urlPrefix + "engagements/" + \
+ str(self.engagement_4_order.uuid) + "/nextsteps/"
+ response = self.c.post(create_nextsteps_url,
+ myjson,
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token "
+ + self.ELtoken})
+ response = self.c.post(create_nextsteps_url,
+ myjson,
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token "
+ + self.ELtoken})
+ response = self.c.post(create_nextsteps_url,
+ myjson,
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token "
+ + self.ELtoken})
+
+ get_nextsteps_url = self.urlPrefix + \
+ 'engagements/${uuid}/nextsteps/Intake'
response = self.c.get(get_nextsteps_url.replace('${uuid}', str(
- self.engagement_4_order.uuid)), **{'HTTP_AUTHORIZATION': "token " + self.sshtoken})
+ self.engagement_4_order.uuid)), **{'HTTP_AUTHORIZATION': "token "
+ + self.sshtoken})
decoded_ns = json.loads(response.content)
myjson = json.dumps(decoded_ns, ensure_ascii=False)
order_nextsteps_url = self.urlPrefix + 'engagements/' + \
str(self.engagement_4_order.uuid) + '/nextsteps/order_next_steps/'
- response = self.c.put(order_nextsteps_url, myjson, content_type='application/json',
- **{'HTTP_AUTHORIZATION': "token " + self.ELtoken})
+ response = self.c.put(
+ order_nextsteps_url,
+ myjson,
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token " + self.ELtoken})
response = self.c.get(get_nextsteps_url.replace('${uuid}', str(
- self.engagement_4_order.uuid)), **{'HTTP_AUTHORIZATION': "token " + self.sshtoken})
+ self.engagement_4_order.uuid)), **{'HTTP_AUTHORIZATION': "token "
+ + self.sshtoken})
decoded_ns = json.loads(response.content)
counter = 0
@@ -258,12 +317,15 @@ class TestNextStepsAPI(TestBaseEntity):
def testCreateDefaultNextStepsWhenENGContactExist(self):
urlStr = self.urlPrefix + 'engagements/${uuid}/nextsteps/Intake'
- NextStepSvc().create_default_next_steps(self.user, self.engagement_with_contact, self.el_user)
- NextStepSvc().create_default_next_steps_for_user(self.user, self.el_user)
+ NextStepSvc().create_default_next_steps(
+ self.user, self.engagement_with_contact, self.el_user)
+ NextStepSvc().create_default_next_steps_for_user(
+ self.user, self.el_user)
num_of_steps = 2
response = self.c.get(urlStr.replace('${uuid}', str(
- self.engagement_with_contact.uuid)), **{'HTTP_AUTHORIZATION': "token " + self.token})
+ self.engagement_with_contact.uuid)), **{
+ 'HTTP_AUTHORIZATION': "token " + self.token})
print('Got response : ' + str(response.status_code))
print("DATA After JSON Parse:" + str(response.content))
@@ -275,61 +337,90 @@ class TestNextStepsAPI(TestBaseEntity):
self.assertEqual(len(response.json()), num_of_steps)
def testAddNextStepToEng(self):
- urlStr = self.urlPrefix + "engagements/" + str(self.engagement_4_createNS.uuid) + "/nextsteps/"
+ urlStr = self.urlPrefix + "engagements/" + \
+ str(self.engagement_4_createNS.uuid) + "/nextsteps/"
- NextStepSvc().create_default_next_steps(self.user_with_ssh, self.engagement_4_createNS, self.el_user)
- # Would not create any next step, due to the reason that the user already has an SSH
- NextStepSvc().create_default_next_steps_for_user(self.user_with_ssh, self.el_user)
+ NextStepSvc().create_default_next_steps(
+ self.user_with_ssh, self.engagement_4_createNS, self.el_user)
+ # Would not create any next step, due to the reason that the user
+ # already has an SSH
+ NextStepSvc().create_default_next_steps_for_user(
+ self.user_with_ssh, self.el_user)
nsDict = {}
nsDict["position"] = "4"
nsDict["creator_uuid"] = str(self.el_user.uuid)
nsDict[
- "description"] = "Please submit the first version of the VF package. If you have any problems or questions please contact your Engagement Lead (EL)"
+ "description"] = "Please submit the first version of the VF " +\
+ "package. If you have any problems or questions please contact " +\
+ "your Engagement Lead (EL)"
nsDict["state"] = "Incomplete"
nsDict["engagement_stage"] = "Active"
myjson = json.dumps([nsDict], ensure_ascii=False)
print(myjson)
- response = self.c.post(urlStr, myjson, content_type='application/json',
- **{'HTTP_AUTHORIZATION': "token " + self.ELtoken})
+ response = self.c.post(urlStr,
+ myjson,
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token "
+ + self.ELtoken})
print('Got response : ' + str(response.status_code))
print("DATA After JSON Parse:" + str(response.content))
self.assertEqual(response.status_code, HTTP_200_OK)
def testDelNextStepToEng(self):
- nsObj = NextStep.objects.create(uuid=uuid4(), creator=self.el_user, position=2, description="testDelNextStepToEng",
- state='Incomplete', engagement_stage="Intake", engagement=self.engagement)
+ nsObj = NextStep.objects.create(
+ uuid=uuid4(),
+ creator=self.el_user,
+ position=2,
+ description="testDelNextStepToEng",
+ state='Incomplete',
+ engagement_stage="Intake",
+ engagement=self.engagement)
urlStr = self.urlPrefix + "nextsteps/" + str(nsObj.uuid)
- response = self.c.delete(urlStr, **{'HTTP_AUTHORIZATION': "token " + self.ELtoken})
+ response = self.c.delete(
+ urlStr, **{'HTTP_AUTHORIZATION': "token " + self.ELtoken})
print('Got response : ' + str(response.status_code))
print("DATA After JSON Parse:" + str(response.content))
self.assertEqual(response.status_code, HTTP_204_NO_CONTENT)
def testNegativeDelNextStepToEngNoHeader(self):
- nsObj = NextStep.objects.create(uuid=uuid4(), creator=self.el_user, position=2, description="testDelNextStepToEng",
- state='Incomplete', engagement_stage="Intake", engagement=self.engagement)
+ nsObj = NextStep.objects.create(
+ uuid=uuid4(),
+ creator=self.el_user,
+ position=2,
+ description="testDelNextStepToEng",
+ state='Incomplete',
+ engagement_stage="Intake",
+ engagement=self.engagement)
urlStr = self.urlPrefix + "nextsteps/" + str(nsObj.uuid)
response = self.c.delete(urlStr)
- print('Negative: Expecting response 403, got: ' + str(response.status_code))
+ print('Negative: Expecting response 403, got: ' +
+ str(response.status_code))
print("DATA After JSON Parse:" + str(response.content))
self.assertEqual(response.status_code, HTTP_403_FORBIDDEN)
def testEditNextSteps(self):
print(
- '---------------------------------- testEditNextSteps, Expecting 200 ------------------------------------')
- print('---------------------------------- Creating a next step ------------------------------------')
- step = NextStep.objects.create(position="4", creator=self.el_user, engagement=self.engagement,
- description="Please submit the first version of the VF package. If you have any problems or questions please contact your Engagement Lead (EL)",
- state="TODO", engagement_stage="Active",
- uuid=uuid4())
- print('---------------------------------- Editing the next step ------------------------------------')
+ '---------- testEditNextSteps, Expecting 200 ----------')
+ print('---------- Creating a next step ----------')
+ step = NextStep.objects.create(
+ position="4",
+ creator=self.el_user,
+ engagement=self.engagement,
+ description="Please submit the first version of the VF package. " +
+ "If you have any problems or questions please contact " +
+ "your Engagement Lead (EL)",
+ state="TODO",
+ engagement_stage="Active",
+ uuid=uuid4())
+ print('---------- Editing the next step ----------')
urlStr = self.urlPrefix + "nextsteps/" + str(step.uuid)
body = {}
files = []
@@ -341,17 +432,23 @@ class TestNextStepsAPI(TestBaseEntity):
body['assigneesUuids'] = [str(self.user.uuid), str(self.el_user.uuid)]
myjson = json.dumps(body, ensure_ascii=False)
print(myjson)
- response = self.c.put(urlStr, myjson, content_type='application/json',
- **{'HTTP_AUTHORIZATION': "token " + self.ELtoken})
+ response = self.c.put(
+ urlStr,
+ myjson,
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token " + self.ELtoken})
print(urlStr)
print('Got response : ' + str(response.status_code))
self.assertEqual(response.status_code, status.HTTP_200_OK)
def testUserNextSteps(self):
- NextStepSvc().create_default_next_steps(self.user_with_ssh, self.engagement_4_createNS, self.el_user)
- # Needs to return 0 elements for regular user which is not the assignee:
+ NextStepSvc().create_default_next_steps(
+ self.user_with_ssh, self.engagement_4_createNS, self.el_user)
+ # Needs to return 0 elements for regular user which is not the
+ # assignee:
urlStr = self.urlPrefix + 'engagements/user/nextsteps/'
- response = self.c.get(urlStr, **{'HTTP_AUTHORIZATION': "token " + self.sshtoken})
+ response = self.c.get(
+ urlStr, **{'HTTP_AUTHORIZATION': "token " + self.sshtoken})
print('Got response : ' + str(response.status_code))
self.assertEqual(response.status_code, HTTP_200_OK)
@@ -360,7 +457,8 @@ class TestNextStepsAPI(TestBaseEntity):
self.assertEqual(data["count"], 0)
# Needs to return 3 elements to el user which is the assignee:
- response = self.c.get(urlStr, **{'HTTP_AUTHORIZATION': "token " + self.ELtoken})
+ response = self.c.get(
+ urlStr, **{'HTTP_AUTHORIZATION': "token " + self.ELtoken})
print('Got response : ' + str(response.status_code))
self.assertEqual(response.status_code, HTTP_200_OK)
data = json.loads(response.content)
diff --git a/django/engagementmanager/tests/test_notify_inactive_engagements.py b/django/engagementmanager/tests/test_notify_inactive_engagements.py
index afeb835..19369d2 100644
--- a/django/engagementmanager/tests/test_notify_inactive_engagements.py
+++ b/django/engagementmanager/tests/test_notify_inactive_engagements.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -44,9 +44,11 @@ import mock
from engagementmanager.tests.test_base_entity import TestBaseEntity
from engagementmanager.apps import bus_service
-from engagementmanager.bus.messages.daily_scheduled_message import DailyScheduledMessage
+from engagementmanager.bus.messages.daily_scheduled_message \
+ import DailyScheduledMessage
from engagementmanager.models import Vendor, Engagement, Activity, Notification
-from engagementmanager.utils.constants import EngagementStage, ActivityType, Constants
+from engagementmanager.utils.constants import \
+ EngagementStage, ActivityType, Constants
from django.utils import timezone
@@ -96,22 +98,33 @@ class TestNotifyInactiveEngagements(TestBaseEntity):
def childSetup(self):
- self.createVendors([Constants.service_provider_company_name, 'Amdocs', 'Other'])
+ self.createVendors(
+ [Constants.service_provider_company_name, 'Amdocs', 'Other'])
self.createDefaultRoles()
# Create a user with role el
- self.el_user = self.creator.createUser(Vendor.objects.get(
- name=Constants.service_provider_company_name), self.randomGenerator("main-vendor-email"),
- '55501000199', 'el user', self.el, True)
+ self.el_user = self.creator.createUser(
+ Vendor.objects.get(
+ name=Constants.service_provider_company_name),
+ self.randomGenerator("main-vendor-email"),
+ '55501000199',
+ 'el user',
+ self.el,
+ True)
# For negative tests
- self.user = self.creator.createUser(Vendor.objects.get(
- name=Constants.service_provider_company_name), self.randomGenerator("main-vendor-email"),
- '55501000199', 'user', self.standard_user, True)
+ self.user = self.creator.createUser(
+ Vendor.objects.get(
+ name=Constants.service_provider_company_name),
+ self.randomGenerator("main-vendor-email"),
+ '55501000199',
+ 'user',
+ self.standard_user,
+ True)
self.urlStr = self.urlPrefix + "engagement/@eng_uuid/checklist/new/"
self.data = dict()
self.template = self.creator.createDefaultCheckListTemplate()
-# self.engagement = Engagement.objects.create(uuid='just-a-fake-uuid',engagement_stage='Validation')
- self.engagement = self.creator.createEngagement(uuid4(), 'Validation', None)
+ self.engagement = self.creator.createEngagement(
+ uuid4(), 'Validation', None)
self.engagement.reviewer = self.el_user
self.engagement.peer_reviewer = self.el_user
self.engagement.engagement_team.add(self.user)
@@ -121,11 +134,19 @@ class TestNotifyInactiveEngagements(TestBaseEntity):
self.engagement.save()
self.vendor = Vendor.objects.get(name='Other')
self.deploymentTarget = self.creator.createDeploymentTarget(
- self.randomGenerator("randomString"), self.randomGenerator("randomString"))
- self.vf = self.creator.createVF(self.randomGenerator("randomString"),
- self.engagement, self.deploymentTarget, False, self.vendor)
-
- @mock.patch('validationmanager.em_integration.vm_api.get_list_of_repo_files_callback', with_files)
+ self.randomGenerator("randomString"),
+ self.randomGenerator("randomString"))
+ self.vf = self.creator.createVF(
+ self.randomGenerator("randomString"),
+ self.engagement,
+ self.deploymentTarget,
+ False,
+ self.vendor)
+
+ @mock.patch(
+ 'validationmanager.em_integration.vm_api.' +
+ 'get_list_of_repo_files_callback',
+ with_files)
def testOnlyNotActiveEngagementsAreNotEffected(self):
self.engagement.engagement_stage = EngagementStage.Archived.name
self.engagement.save()
@@ -135,31 +156,49 @@ class TestNotifyInactiveEngagements(TestBaseEntity):
self.assertEqual(updated_engagement.is_with_files, False)
- @mock.patch('engagementmanager.bus.handlers.daily_notify_inactive_engagements_handler.DailyNotifyInactiveEngagementsHandler.get_max_empty_date', mocked_max_empty_date_negative)
- @mock.patch('validationmanager.em_integration.vm_api.get_list_of_repo_files_callback', no_files)
+ @mock.patch(
+ 'engagementmanager.bus.handlers.' +
+ 'daily_notify_inactive_engagements_handler.' +
+ 'DailyNotifyInactiveEngagementsHandler.get_max_empty_date',
+ mocked_max_empty_date_negative)
+ @mock.patch(
+ 'validationmanager.em_integration.' +
+ 'vm_api.get_list_of_repo_files_callback',
+ no_files)
def testEngagementsWithouthFilesOlderThan30DaysAreArchive(self):
bus_service.send_message(DailyScheduledMessage())
updated_engagement = Engagement.objects.get(uuid=self.engagement.uuid)
self.assertEqual(updated_engagement.is_with_files, False)
- self.assertEqual(updated_engagement.engagement_stage, EngagementStage.Archived.name)
+ self.assertEqual(updated_engagement.engagement_stage,
+ EngagementStage.Archived.name)
- @mock.patch('validationmanager.em_integration.vm_api.get_list_of_repo_files_callback', no_files)
+ @mock.patch(
+ 'validationmanager.em_integration.vm_api.' +
+ 'get_list_of_repo_files_callback',
+ no_files)
def testEngagementsWithouthFilesYoungerThan30DaysNotArchive(self):
bus_service.send_message(DailyScheduledMessage())
updated_engagement = Engagement.objects.get(uuid=self.engagement.uuid)
self.assertEqual(updated_engagement.is_with_files, False)
- self.assertEqual(updated_engagement.engagement_stage, EngagementStage.Active.name)
+ self.assertEqual(updated_engagement.engagement_stage,
+ EngagementStage.Active.name)
- @mock.patch('validationmanager.em_integration.vm_api.get_list_of_repo_files_callback', no_files)
+ @mock.patch(
+ 'validationmanager.em_integration.vm_api.' +
+ 'get_list_of_repo_files_callback',
+ no_files)
def testEngagementsWithouthFilesIsNotMarked(self):
bus_service.send_message(DailyScheduledMessage())
updated_engagement = Engagement.objects.get(uuid=self.engagement.uuid)
self.assertEqual(updated_engagement.is_with_files, False)
- @mock.patch('validationmanager.em_integration.vm_api.get_list_of_repo_files_callback', with_files)
+ @mock.patch(
+ 'validationmanager.em_integration.vm_api.' +
+ 'get_list_of_repo_files_callback',
+ with_files)
def testEngagementsWithoFilesNotSentEmail(self):
bus_service.send_message(DailyScheduledMessage())
new_activity = Activity.objects.filter(
@@ -168,8 +207,15 @@ class TestNotifyInactiveEngagements(TestBaseEntity):
)
self.assertEqual(0, len(new_activity))
- @mock.patch('validationmanager.em_integration.vm_api.get_list_of_repo_files_callback', no_files)
- @mock.patch('engagementmanager.bus.handlers.daily_notify_inactive_engagements_handler.DailyNotifyInactiveEngagementsHandler.get_days_delta', get_days_delta_plus_1)
+ @mock.patch(
+ 'validationmanager.em_integration.vm_api.' +
+ 'get_list_of_repo_files_callback',
+ no_files)
+ @mock.patch(
+ 'engagementmanager.bus.handlers.' +
+ 'daily_notify_inactive_engagements_handler.' +
+ 'DailyNotifyInactiveEngagementsHandler.get_days_delta',
+ get_days_delta_plus_1)
def testEngagementsWithoutFilesOneDayEmailNotSent(self):
bus_service.send_message(DailyScheduledMessage())
new_activity = Activity.objects.filter(
@@ -178,8 +224,15 @@ class TestNotifyInactiveEngagements(TestBaseEntity):
)
self.assertEqual(0, len(new_activity))
- @mock.patch('validationmanager.em_integration.vm_api.get_list_of_repo_files_callback', no_files)
- @mock.patch('engagementmanager.bus.handlers.daily_notify_inactive_engagements_handler.DailyNotifyInactiveEngagementsHandler.get_days_delta', get_days_delta_plus_7)
+ @mock.patch(
+ 'validationmanager.em_integration.vm_api.' +
+ 'get_list_of_repo_files_callback',
+ no_files)
+ @mock.patch(
+ 'engagementmanager.bus.handlers.' +
+ 'daily_notify_inactive_engagements_handler.' +
+ 'DailyNotifyInactiveEngagementsHandler.get_days_delta',
+ get_days_delta_plus_7)
def testEngagementsWithoutFiles7DayEmailSent(self):
bus_service.send_message(DailyScheduledMessage())
new_activity = Activity.objects.get(
@@ -193,8 +246,15 @@ class TestNotifyInactiveEngagements(TestBaseEntity):
for notifcation in new_notifications:
self.assertEqual(notifcation.is_sent, True)
- @mock.patch('validationmanager.em_integration.vm_api.get_list_of_repo_files_callback', no_files)
- @mock.patch('engagementmanager.bus.handlers.daily_notify_inactive_engagements_handler.DailyNotifyInactiveEngagementsHandler.get_days_delta', get_days_delta_plus_23)
+ @mock.patch(
+ 'validationmanager.em_integration.' +
+ 'vm_api.get_list_of_repo_files_callback',
+ no_files)
+ @mock.patch(
+ 'engagementmanager.bus.handlers.' +
+ 'daily_notify_inactive_engagements_handler.' +
+ 'DailyNotifyInactiveEngagementsHandler.get_days_delta',
+ get_days_delta_plus_23)
def testEngagementsWithoutFiles23DayEmailSent(self):
bus_service.send_message(DailyScheduledMessage())
new_activity = Activity.objects.get(
@@ -208,8 +268,15 @@ class TestNotifyInactiveEngagements(TestBaseEntity):
for notifcation in new_notifications:
self.assertEqual(notifcation.is_sent, True)
- @mock.patch('validationmanager.em_integration.vm_api.get_list_of_repo_files_callback', no_files)
- @mock.patch('engagementmanager.bus.handlers.daily_notify_inactive_engagements_handler.DailyNotifyInactiveEngagementsHandler.get_days_delta', get_days_delta_plus_29)
+ @mock.patch(
+ 'validationmanager.em_integration.vm_api.' +
+ 'get_list_of_repo_files_callback',
+ no_files)
+ @mock.patch(
+ 'engagementmanager.bus.handlers.' +
+ 'daily_notify_inactive_engagements_handler.' +
+ 'DailyNotifyInactiveEngagementsHandler.get_days_delta',
+ get_days_delta_plus_29)
def testEngagementsWithoutFiles29DayEmailSent(self):
bus_service.send_message(DailyScheduledMessage())
new_activity = Activity.objects.get(
@@ -223,7 +290,10 @@ class TestNotifyInactiveEngagements(TestBaseEntity):
for notifcation in new_notifications:
self.assertEqual(notifcation.is_sent, True)
- @mock.patch('validationmanager.em_integration.vm_api.get_list_of_repo_files_callback', with_files)
+ @mock.patch(
+ 'validationmanager.em_integration.' +
+ 'vm_api.get_list_of_repo_files_callback',
+ with_files)
def testEngagementsWithFilesIsMarked(self):
bus_service.send_message(DailyScheduledMessage())
diff --git a/django/engagementmanager/tests/test_pull_notifications.py b/django/engagementmanager/tests/test_pull_notifications.py
index 1c22437..24843ce 100644
--- a/django/engagementmanager/tests/test_pull_notifications.py
+++ b/django/engagementmanager/tests/test_pull_notifications.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -38,10 +38,12 @@
# ECOMP is a trademark and service mark of AT&T Intellectual Property.
from engagementmanager.tests.test_base_entity import TestBaseEntity
from engagementmanager.apps import bus_service
-from engagementmanager.bus.messages.activity_event_message import ActivityEventMessage
+from engagementmanager.bus.messages.activity_event_message import \
+ ActivityEventMessage
from engagementmanager.models import Vendor
-from engagementmanager.utils.constants import Constants, ActivityType
-from engagementmanager.utils.activities_data import ActivityData, UserJoinedEngagementActivityData
+from engagementmanager.utils.constants import Constants
+from engagementmanager.utils.activities_data import \
+ UserJoinedEngagementActivityData
from engagementmanager.service.logging_service import LoggingServiceFactory
logger = LoggingServiceFactory.get_logger()
@@ -54,14 +56,23 @@ class NotificationsTestCase(TestBaseEntity):
self.createDefaultRoles()
# Create a user with role el
- vendor = Vendor.objects.get(name=Constants.service_provider_company_name)
- self.peer_reviewer = self.creator.createUser(Vendor.objects.get(
- name=Constants.service_provider_company_name), self.randomGenerator("main-vendor-email"),
- '55501000199', 'peer-reviewer user', self.el, True)
- self.el_user = self.creator.createUser(vendor,
- self.randomGenerator("main-vendor-email"),
- self.randomGenerator("randomNumber"),
- self.randomGenerator("randomString"), self.el, True)
+ vendor = Vendor.objects.get(
+ name=Constants.service_provider_company_name)
+ self.peer_reviewer = self.creator.createUser(
+ Vendor.objects.get(
+ name=Constants.service_provider_company_name),
+ self.randomGenerator("main-vendor-email"),
+ '55501000199',
+ 'peer-reviewer user',
+ self.el,
+ True)
+ self.el_user = self.creator.createUser(
+ vendor,
+ self.randomGenerator("main-vendor-email"),
+ self.randomGenerator("randomNumber"),
+ self.randomGenerator("randomString"),
+ self.el,
+ True)
print('-----------------------------------------------------')
print('Created User:')
print('UUID: ' + str(self.el_user.uuid))
@@ -70,8 +81,13 @@ class NotificationsTestCase(TestBaseEntity):
# Create a user with role standard_user
vendor = Vendor.objects.get(name='Other')
- self.user = self.creator.createUser(vendor, self.randomGenerator("email"), self.randomGenerator(
- "randomNumber"), self.randomGenerator("randomString"), self.standard_user, True)
+ self.user = self.creator.createUser(
+ vendor,
+ self.randomGenerator("email"),
+ self.randomGenerator("randomNumber"),
+ self.randomGenerator("randomString"),
+ self.standard_user,
+ True)
print('-----------------------------------------------------')
print('Created User:')
print('UUID: ' + str(self.user.uuid))
@@ -90,9 +106,14 @@ class NotificationsTestCase(TestBaseEntity):
self.engagement.peer_reviewer = self.peer_reviewer
# Create a VF
self.deploymentTarget = self.creator.createDeploymentTarget(
- self.randomGenerator("randomString"), self.randomGenerator("randomString"))
- self.vf = self.creator.createVF(self.randomGenerator("randomString"),
- self.engagement, self.deploymentTarget, False, vendor)
+ self.randomGenerator("randomString"),
+ self.randomGenerator("randomString"))
+ self.vf = self.creator.createVF(
+ self.randomGenerator("randomString"),
+ self.engagement,
+ self.deploymentTarget,
+ False,
+ vendor)
print('-----------------------------------------------------')
print('Created VF:')
@@ -108,13 +129,19 @@ class NotificationsTestCase(TestBaseEntity):
logger.debug("Starting pull notification test")
logger.debug("Creating a random new user")
vendor = Vendor.objects.get(name='Other')
- randomUser = self.creator.createUser(vendor, self.randomGenerator("email"), self.randomGenerator(
- "randomNumber"), self.randomGenerator("randomString"), self.standard_user, True)
+ randomUser = self.creator.createUser(
+ vendor,
+ self.randomGenerator("email"),
+ self.randomGenerator("randomNumber"),
+ self.randomGenerator("randomString"),
+ self.standard_user,
+ True)
self.engagement.engagement_team.add(randomUser)
self.engagement.save()
logger.debug(
- "created a new user & added them to the engagement team, going to create the activity and consider it as a notification")
+ "created a new user & added them to the engagement team, \
+ going to create the activity and consider it as a notification")
usersList = []
usersList.append(randomUser)
activity_data = UserJoinedEngagementActivityData(
@@ -122,7 +149,8 @@ class NotificationsTestCase(TestBaseEntity):
bus_service.send_message(ActivityEventMessage(activity_data))
response = self.c.get(urlStr + str(randomUser.uuid) +
- "/0/1", **{'HTTP_AUTHORIZATION': "token " + self.token})
+ "/0/1", **{'HTTP_AUTHORIZATION':
+ "token " + self.token})
content = response.content
status = response.status_code
logger.debug("Got response : " + str(status))
diff --git a/django/engagementmanager/tests/test_rados_gateway.py b/django/engagementmanager/tests/test_rados_gateway.py
index 0d81ecc..4a48f58 100644
--- a/django/engagementmanager/tests/test_rados_gateway.py
+++ b/django/engagementmanager/tests/test_rados_gateway.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -38,13 +38,15 @@
# ECOMP is a trademark and service mark of AT&T Intellectual Property.
import json
import time
+
+from engagementmanager.bus.messages.hourly_scheduled_message import HourlyScheduledMessage
from engagementmanager.tests.test_base_transaction_entity import TestBaseTransactionEntity
-from django.test.testcases import TransactionTestCase
+from engagementmanager.apps import bus_service
from django.conf import settings
import mock
from rest_framework.status import HTTP_202_ACCEPTED
-from engagementmanager.models import Vendor, Engagement, VF
-from engagementmanager.utils.constants import Constants, EngagementStage
+from engagementmanager.models import Vendor, Checklist
+from engagementmanager.utils.constants import Constants, EngagementStage, CheckListState
from wheel.signatures import assertTrue
@@ -58,7 +60,7 @@ def get_or_create_bucket_mock(name):
'successful_ops': 4}],
'epoch': 1499821200,
'owner': 'staticfiles',
- 'time': '2017-07-12 01:00:00.000000Z'}
+ 'time': '2017-07-12 01:00:00.000000Z'}
return bucket
@@ -66,12 +68,13 @@ def get_or_create_bucket_mock(name):
def add_bucket_user_mock(user, bucket):
RadosGatewayTestCase.users_added_to_mock.append(user)
RadosGatewayTestCase.added_bucket = bucket
- print("*****RadosGatewayTestCase.added_bucket*****",RadosGatewayTestCase.added_bucket)
+ print("*****RadosGatewayTestCase.added_bucket*****",
+ RadosGatewayTestCase.added_bucket)
def remove_bucket_user_grants_mock(bucket, user):
RadosGatewayTestCase.added_bucket = bucket
- RadosGatewayTestCase.users_added_to_mock.remove(user)
+ RadosGatewayTestCase.users_added_to_mock.remove(user)
def blank_mock(vf):
@@ -79,32 +82,77 @@ def blank_mock(vf):
pass
-@mock.patch('validationmanager.em_integration.vm_api.get_or_create_bucket', get_or_create_bucket_mock)
-@mock.patch('validationmanager.em_integration.vm_api.add_bucket_user', add_bucket_user_mock)
-@mock.patch('validationmanager.em_integration.vm_api.remove_bucket_user_grants', remove_bucket_user_grants_mock)
-@mock.patch('validationmanager.em_integration.vm_api.ensure_git_entities', blank_mock)
-@mock.patch('validationmanager.em_integration.vm_api.ensure_jenkins_job', blank_mock)
-@mock.patch('validationmanager.em_integration.vm_api.ensure_checklists', blank_mock)
+def get_rgwa_uasge_mock(
+ uid=None,
+ start=None,
+ end=None,
+ show_entries=False,
+ show_summary=False):
+ print("===--get_rgwa_uasge_mock was invoked--===")
+ return {
+ "entries": [
+ {
+ "buckets": [
+ {
+ "bucket": "static-engagement-manual-id_static-vf-name",
+ "owner": "staticfiles",
+ "categories": [
+ {
+ "category": "put_obj",
+ "bytes_sent": 0,
+ "bytes_received": 2948046,
+ "ops": 102,
+ "successful_ops": 102
+ }
+ ],
+ "time": "2017-09-07 21:00:00.000000Z",
+ "epoch": 1504818000
+ }
+ ],
+ "user": "staticfiles"
+ }
+ ]
+ }
+
+
+@mock.patch('validationmanager.em_integration.vm_api.get_or_create_bucket',
+ get_or_create_bucket_mock)
+@mock.patch('validationmanager.em_integration.vm_api.add_bucket_user',
+ add_bucket_user_mock)
+@mock.patch(
+ 'validationmanager.em_integration.vm_api.remove_bucket_user_grants',
+ remove_bucket_user_grants_mock)
+@mock.patch(
+ 'validationmanager.em_integration.vm_api.ensure_git_entities', blank_mock)
+@mock.patch(
+ 'validationmanager.em_integration.vm_api.ensure_jenkins_job', blank_mock)
+@mock.patch(
+ 'validationmanager.em_integration.vm_api.ensure_checklists', blank_mock)
class RadosGatewayTestCase(TestBaseTransactionEntity):
users_added_to_mock = []
added_bucket = None
def changeEngagementStage(self, stage):
- self.urlStr = self.urlPrefix + "single-engagement/" + str(self.engagement.uuid) + "/stage/@stage"
+ self.urlStr = self.urlPrefix + "single-engagement/" + \
+ str(self.engagement.uuid) + "/stage/@stage"
datajson = json.dumps(self.data, ensure_ascii=False)
- response = self.c.put(self.urlStr.replace("@stage", stage), datajson,
- content_type='application/json', **{'HTTP_AUTHORIZATION': "token " + self.ELtoken})
+ response = self.c.put(
+ self.urlStr.replace("@stage",
+ stage),
+ datajson,
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token " + self.ELtoken})
self.assertEqual(response.status_code, HTTP_202_ACCEPTED)
-
+
def waitForBucket(self):
counter = 1
- while (RadosGatewayTestCase.added_bucket == None and counter <=20):
+ while (RadosGatewayTestCase.added_bucket is None and counter <= 20):
time.sleep(1)
time.sleep(1)
- if RadosGatewayTestCase.added_bucket == None :
+ if RadosGatewayTestCase.added_bucket is None:
raise Exception("Max retries exceeded, failing test...")
return False
- elif RadosGatewayTestCase.added_bucket != None:
+ elif RadosGatewayTestCase.added_bucket is not None:
return True
def childSetup(self):
@@ -114,36 +162,72 @@ class RadosGatewayTestCase(TestBaseTransactionEntity):
self.s3_host = settings.AWS_S3_HOST
self.s3_port = settings.AWS_S3_PORT
- vendor_uuid, self.service_provider = self.creator.createVendor(Constants.service_provider_company_name)
+ vendor_uuid, self.service_provider = self.creator.createVendor(
+ Constants.service_provider_company_name)
self.urlStr = self.urlPrefix + "signup/"
- self.admin, self.el, self.standard_user = self.creator.createAndGetDefaultRoles()
+ self.admin, self.el, self.standard_user = \
+ self.creator.createAndGetDefaultRoles()
self.data = dict()
- uuid, vendor = self.creator.createVendor(Constants.service_provider_company_name)
- self.user = self.creator.createUser(vendor, self.randomGenerator("email"), self.randomGenerator(
- "randomNumber"), self.randomGenerator("randomString"), self.standard_user, True)
+ uuid, vendor = self.creator.createVendor(
+ Constants.service_provider_company_name)
+ self.user = self.creator.createUser(
+ vendor,
+ self.randomGenerator("email"),
+ self.randomGenerator("randomNumber"),
+ self.randomGenerator("randomString"),
+ self.standard_user,
+ True)
- self.params = '{"company":"' + str(self.user.company) + '","full_name":"' + self.user.full_name + '","email":"' \
- + self.user.email + '","phone_number":"' + self.user.phone_number + \
- '","password":"' + self.user.user.password + '","regular_email_updates":"' + \
+ self.params = '{"company":"' + str(self.user.company) + \
+ '","full_name":"' + self.user.full_name + '","email":"' \
+ + self.user.email + '","phone_number":"' \
+ + self.user.phone_number + \
+ '","password":"' + self.user.user.password \
+ + '","regular_email_updates":"' + \
str(self.user.regular_email_updates) + \
- '","is_service_provider_contact":"' + str(self.user.is_service_provider_contact) + '"}'
- self.el_user = self.creator.createUser(Vendor.objects.get(
- name=Constants.service_provider_company_name), self.randomGenerator("main-vendor-email"),
- '55501000199', 'el user', self.el, True)
- self.peer_reviewer = self.creator.createUser(self.service_provider, self.randomGenerator(
- "main-vendor-email"), self.randomGenerator("randomNumber"), self.randomGenerator("randomString"), self.el, True)
-
- self.engagement = self.creator.createEngagement('just-a-fake-uuid', 'Validation', None)
+ '","is_service_provider_contact":"' + \
+ str(self.user.is_service_provider_contact) + '"}'
+ self.el_user = self.creator.createUser(
+ Vendor.objects.get(
+ name=Constants.service_provider_company_name),
+ self.randomGenerator("main-vendor-email"),
+ '55501000199',
+ 'el user',
+ self.el,
+ True)
+ self.admin_user = self.creator.createUser(
+ Vendor.objects.get(name=Constants.service_provider_company_name),
+ self.randomGenerator("main-vendor-email"),
+ '12323245435',
+ 'admin user',
+ self.admin,
+ True)
+ self.peer_reviewer = self.creator.createUser(
+ self.service_provider,
+ self.randomGenerator("main-vendor-email"),
+ self.randomGenerator("randomNumber"),
+ self.randomGenerator("randomString"),
+ self.el,
+ True)
+
+ self.engagement = self.creator.createEngagement(
+ 'just-a-fake-uuid', 'Validation', None)
self.engagement.reviewer = self.el_user
self.engagement.peer_reviewer = self.peer_reviewer
self.engagement.engagement_team.add(self.el_user, self.user)
- self.engagement.engagement_manual_id = self.randomGenerator("randomString")
+ self.engagement.engagement_manual_id = self.randomGenerator(
+ "randomString")
self.engagement.save()
self.deploymentTarget = self.creator.createDeploymentTarget(
- self.randomGenerator("randomString"), self.randomGenerator("randomString"))
- self.vf = self.creator.createVF(self.randomGenerator("randomString"),
- self.engagement, self.deploymentTarget, False, self.service_provider)
+ self.randomGenerator("randomString"),
+ self.randomGenerator("randomString"))
+ self.vf = self.creator.createVF(
+ self.randomGenerator("randomString"),
+ self.engagement,
+ self.deploymentTarget,
+ False,
+ self.service_provider)
self.userToken = self.loginAndCreateSessionToken(self.user)
self.ELtoken = self.loginAndCreateSessionToken(self.el_user)
@@ -151,28 +235,58 @@ class RadosGatewayTestCase(TestBaseTransactionEntity):
self.assertTrue(self.added_bucket is None)
self.changeEngagementStage(EngagementStage.Active.name)
self.assertTrue(RadosGatewayTestCase.added_bucket is not None)
- team_members_list = [entry for entry in self.engagement.engagement_team.all()]
+ team_members_list = [
+ entry for entry in self.engagement.engagement_team.all()]
for team_member in team_members_list:
- assertTrue(any(team_member.full_name == entity.full_name for entity in RadosGatewayTestCase.users_added_to_mock))
+ assertTrue(any(team_member.full_name ==
+ entity.full_name for entity in
+ RadosGatewayTestCase.users_added_to_mock))
-
def testDeleteUsersFromBucket(self):
self.changeEngagementStage(EngagementStage.Active.name)
self.changeEngagementStage(EngagementStage.Validated.name)
self.waitForBucket()
self.assertTrue(RadosGatewayTestCase.added_bucket is not None)
self.assertTrue(RadosGatewayTestCase.users_added_to_mock == [])
-
+
def testDeleteUsersFromBucketWhichNotCreated(self):
self.assertTrue(RadosGatewayTestCase.added_bucket is None)
self.changeEngagementStage(EngagementStage.Validated.name)
self.waitForBucket()
self.assertTrue(RadosGatewayTestCase.added_bucket is not None)
self.assertTrue(RadosGatewayTestCase.users_added_to_mock == [])
-
+
def testDeleteUsersFromBucketWhwenStageArchive(self):
self.assertTrue(RadosGatewayTestCase.added_bucket is None)
self.changeEngagementStage(EngagementStage.Archived.name)
self.waitForBucket()
self.assertTrue(RadosGatewayTestCase.added_bucket is not None)
self.assertTrue(RadosGatewayTestCase.users_added_to_mock == [])
+
+ @mock.patch(
+ 'validationmanager.rados.rgwa_client.RGWAClient.get_usage',
+ get_rgwa_uasge_mock)
+ def testImagePushedPolling(self):
+ self.engagement.engagement_manual_id = "static-engagement-manual-id"
+ self.engagement.save()
+ self.vf.name = "static-vf-name"
+ self.vf.save()
+ self.template = self.creator.createDefaultCheckListTemplate()
+ checklist = self.creator.createCheckList(
+ "cl-name",
+ "review",
+ 1,
+ None,
+ self.engagement,
+ self.template,
+ self.admin_user,
+ self.el_user)
+ self.changeEngagementStage(EngagementStage.Active.name)
+ bus_service.send_message(HourlyScheduledMessage())
+ self.assertEqual(
+ Checklist.objects.get(
+ engagement=self.engagement,
+ state=CheckListState.automation.name).state,
+ CheckListState.automation.name)
+ # TODO: After adding Michael's Celery invoke function -> check that the
+ # image scan actually ran O.K.
diff --git a/django/engagementmanager/tests/test_remove_user_from_eng_team.py b/django/engagementmanager/tests/test_remove_user_from_eng_team.py
index 15bcf2d..0c45ccb 100644
--- a/django/engagementmanager/tests/test_remove_user_from_eng_team.py
+++ b/django/engagementmanager/tests/test_remove_user_from_eng_team.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -50,49 +50,81 @@ class TestEngagementSetStage(TestBaseEntity):
def childSetup(self):
- self.createVendors([Constants.service_provider_company_name, 'Amdocs'])
+ self.createVendors([Constants.service_provider_company_name,
+ 'Amdocs'])
self.vendor = Vendor.objects.get(name='Amdocs')
- self.service_provider = Vendor.objects.get(name=Constants.service_provider_company_name)
+ self.service_provider = Vendor.objects.get(
+ name=Constants.service_provider_company_name)
self.createDefaultRoles()
# For negative tests
- self.user = self.creator.createUser(Vendor.objects.get(
- name=Constants.service_provider_company_name), self.randomGenerator("main-vendor-email"),
- '55501000199', 'user', self.standard_user, True)
- self.user2 = self.creator.createUser(Vendor.objects.get(
- name=Constants.service_provider_company_name), self.randomGenerator("main-vendor-email"),
- '55501000199', 'user2', self.standard_user, True)
+ self.user = self.creator.createUser(
+ Vendor.objects.get(
+ name=Constants.service_provider_company_name),
+ self.randomGenerator("main-vendor-email"),
+ '55501000199',
+ 'user',
+ self.standard_user,
+ True)
+ self.user2 = self.creator.createUser(
+ Vendor.objects.get(
+ name=Constants.service_provider_company_name),
+ self.randomGenerator("main-vendor-email"),
+ '55501000199',
+ 'user2',
+ self.standard_user,
+ True)
# Create users with role el (el+peer reviwer)
- self.el_user = self.creator.createUser(Vendor.objects.get(
- name=Constants.service_provider_company_name), self.randomGenerator("main-vendor-email"),
- '55501000199', 'el user', self.el, True)
- self.peer_reviewer = self.creator.createUser(self.service_provider, self.randomGenerator(
- "main-vendor-email"), self.randomGenerator("randomNumber"), self.randomGenerator("randomString"), self.el, True)
+ self.el_user = self.creator.createUser(
+ Vendor.objects.get(
+ name=Constants.service_provider_company_name),
+ self.randomGenerator("main-vendor-email"),
+ '55501000199',
+ 'el user',
+ self.el,
+ True)
+ self.peer_reviewer = self.creator.createUser(
+ self.service_provider,
+ self.randomGenerator("main-vendor-email"),
+ self.randomGenerator("randomNumber"),
+ self.randomGenerator("randomString"),
+ self.el,
+ True)
# Create a user with admin role
- self.admin_user = self.creator.createUser(Vendor.objects.get(
- name=Constants.service_provider_company_name), Constants.service_provider_admin_mail,
- '55501000199', 'admin user', self.admin, True)
+ self.admin_user = self.creator.createUser(
+ Vendor.objects.get(
+ name=Constants.service_provider_company_name),
+ Constants.service_provider_admin_mail,
+ '55501000199',
+ 'admin user',
+ self.admin,
+ True)
- self.engagement = self.creator.createEngagement('just-a-fake-uuid', 'Validation', None)
+ self.engagement = self.creator.createEngagement(
+ 'just-a-fake-uuid', 'Validation', None)
self.engagement.reviewer = self.el_user
self.engagement.peer_reviewer = self.peer_reviewer
- self.engagement.engagement_team.add(self.el_user, self.user, self.user2)
+ self.engagement.engagement_team.add(
+ self.el_user, self.user, self.user2)
self.engagement.save()
self.deploymentTarget = self.creator.createDeploymentTarget(
- self.randomGenerator("randomString"), self.randomGenerator("randomString"))
-# self.asInfrastructure = self.creator.createApplicationServiceInfrastructure(self.randomGenerator("randomString"))
- self.vf = self.creator.createVF(self.randomGenerator("randomString"),
- self.engagement, self.deploymentTarget, False, self.vendor)
-# self.vf.service_infrastructures.add(self.asInfrastructure)
+ self.randomGenerator("randomString"),
+ self.randomGenerator("randomString"))
+ self.vf = self.creator.createVF(
+ self.randomGenerator("randomString"),
+ self.engagement,
+ self.deploymentTarget,
+ False,
+ self.vendor)
self.data = dict()
self.user_token = self.loginAndCreateSessionToken(self.user)
self.user2_token = self.loginAndCreateSessionToken(self.user2)
self.admin_token = self.loginAndCreateSessionToken(self.admin_user)
- def loggerTestFailedOrSucceded(self, bool):
- if bool:
+ def loggerTestFailedOrSucceded(self, bool_flag):
+ if bool_flag:
logger.debug("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$")
logger.debug(" Test Succeeded")
logger.debug("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n\n")
@@ -106,23 +138,32 @@ class TestEngagementSetStage(TestBaseEntity):
logger.debug(" Test 2 started: Admin removes user from the eng team!")
logger.debug("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n\n")
- self.get_engagement_url = self.urlPrefix + "single-engagement/" + str(self.engagement.uuid)
+ self.get_engagement_url = self.urlPrefix + \
+ "single-engagement/" + str(self.engagement.uuid)
self.urlStr = self.urlPrefix + "engagements/engagement-team/"
self.data['eng_uuid'] = str(self.engagement.uuid)
self.data['user_uuid'] = str(self.user.uuid)
datajson = json.dumps(self.data, ensure_ascii=False)
- logger.debug("**********************************************************************")
+ logger.debug(
+ "**************************************************")
logger.debug("----- sending put request with body -----")
- logger.debug("**********************************************************************")
+ logger.debug(
+ "**************************************************")
- response = self.c.put(self.urlStr, datajson, content_type='application/json',
- **{'HTTP_AUTHORIZATION': "token " + self.admin_token})
+ response = self.c.put(self.urlStr,
+ datajson,
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token "
+ + self.admin_token})
if (response.status_code != HTTP_204_NO_CONTENT):
print(response.status_code)
- response2 = self.c.get(self.get_engagement_url, {}, content_type='application/json',
- **{'HTTP_AUTHORIZATION': "token " + self.admin_token})
+ response2 = self.c.get(self.get_engagement_url,
+ {},
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token "
+ + self.admin_token})
# Check if the user it still in the engagement team
received_eng = json.loads(response2.content)
@@ -139,28 +180,40 @@ class TestEngagementSetStage(TestBaseEntity):
def test_negative_remove_user_from_eng_team_by_another_user(self):
logger.debug("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$")
- logger.debug(" Test 3 (Negative) started: User2 removes user1 from the eng team!")
+ logger.debug(
+ " Test 3 (Negative) started: User2 removes \
+ user1 from the eng team!")
logger.debug("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n\n")
- self.get_engagement_url = self.urlPrefix + "single-engagement/" + str(self.engagement.uuid)
+ self.get_engagement_url = self.urlPrefix + \
+ "single-engagement/" + str(self.engagement.uuid)
self.urlStr = self.urlPrefix + "engagements/engagement-team/"
self.data['eng_uuid'] = str(self.engagement.uuid)
self.data['user_uuid'] = str(self.user.uuid)
datajson = json.dumps(self.data, ensure_ascii=False)
- logger.debug("**********************************************************************")
+ logger.debug(
+ "**************************************************")
logger.debug("----- sending put request with body -----")
- logger.debug("**********************************************************************")
+ logger.debug(
+ "**************************************************")
- response = self.c.put(self.urlStr, datajson, content_type='application/json',
- **{'HTTP_AUTHORIZATION': "token " + self.user2_token})
+ response = self.c.put(self.urlStr,
+ datajson,
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token "
+ + self.user2_token})
if (response.status_code != HTTP_204_NO_CONTENT):
print(response.status_code)
- response2 = self.c.get(self.get_engagement_url, {}, content_type='application/json',
- **{'HTTP_AUTHORIZATION': "token " + self.admin_token})
+ response2 = self.c.get(self.get_engagement_url,
+ {},
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token "
+ + self.admin_token})
- # Check if the user it still in the engagement team(it is supposed to remain there)
+ # Check if the user it still in the engagement team(it is supposed to
+ # remain there)
received_eng = json.loads(response2.content)
found = False
for item in received_eng["engagement"]["engagement_team"]:
@@ -175,28 +228,40 @@ class TestEngagementSetStage(TestBaseEntity):
def test_negative_remove_el_user_from_eng_team_by_admin(self):
logger.debug("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$")
- logger.debug(" Test 4 (Negative) started: admin removes el_user from the eng team!")
+ logger.debug(
+ " Test 4 (Negative) started: admin removes \
+ el_user from the eng team!")
logger.debug("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n\n")
- self.get_engagement_url = self.urlPrefix + "single-engagement/" + str(self.engagement.uuid)
+ self.get_engagement_url = self.urlPrefix + \
+ "single-engagement/" + str(self.engagement.uuid)
self.urlStr = self.urlPrefix + "engagements/engagement-team/"
self.data['eng_uuid'] = str(self.engagement.uuid)
self.data['user_uuid'] = str(self.el_user.uuid)
datajson = json.dumps(self.data, ensure_ascii=False)
- logger.debug("**********************************************************************")
+ logger.debug(
+ "**************************************************")
logger.debug("----- sending put request with body -----")
- logger.debug("**********************************************************************")
+ logger.debug(
+ "**************************************************")
- response = self.c.put(self.urlStr, datajson, content_type='application/json',
- **{'HTTP_AUTHORIZATION': "token " + self.admin_token})
+ response = self.c.put(self.urlStr,
+ datajson,
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token "
+ + self.admin_token})
if (response.status_code != HTTP_204_NO_CONTENT):
print(response.status_code)
- response2 = self.c.get(self.get_engagement_url, {}, content_type='application/json',
- **{'HTTP_AUTHORIZATION': "token " + self.admin_token})
+ response2 = self.c.get(self.get_engagement_url,
+ {},
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token "
+ + self.admin_token})
- # Check if the user it still in the engagement team(it is supposed to remain there)
+ # Check if the user it still in the engagement team(it is supposed to
+ # remain there)
received_eng = json.loads(response2.content)
found = False
for item in received_eng["engagement"]["engagement_team"]:
diff --git a/django/engagementmanager/tests/test_request_data_manager.py b/django/engagementmanager/tests/test_request_data_manager.py
index 13e4fe0..5c5cd2b 100644
--- a/django/engagementmanager/tests/test_request_data_manager.py
+++ b/django/engagementmanager/tests/test_request_data_manager.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -60,7 +60,8 @@ logger = LoggingServiceFactory.get_logger()
class TestRequestDataManager(TransactionTestCase):
def childSetup(self):
- logger.debug("---------------------- TestCase " + self.__class__.__name__ + " ----------------------")
+ logger.debug("---------------------- TestCase " +
+ self.__class__.__name__ + " ----------------------")
self.urlPrefix = "/%s/v1/engmgr/" % settings.PROGRAM_NAME_URL_PREFIX
self.c = Client()
self.creator = VvpEntitiesCreator()
@@ -69,24 +70,30 @@ class TestRequestDataManager(TransactionTestCase):
vendorUuid, vendor = self.creator.createVendor(vendor)
logger.debug(vendorUuid)
- self.admin, self.el, self.standard_user = self.creator.createAndGetDefaultRoles()
+ self.admin, self.el, self.standard_user = \
+ self.creator.createAndGetDefaultRoles()
# Create a user with role el
self.el_user = self.creator.createUser(
- Vendor.objects.get(name=Constants.service_provider_company_name), self.creator.randomGenerator("main-vendor-email"),
+ Vendor.objects.get(name=Constants.service_provider_company_name),
+ self.creator.randomGenerator("main-vendor-email"),
'55501000199', 'el user', self.el, True)
self.peer_review_user = self.creator.createUser(
- Vendor.objects.get(name=Constants.service_provider_company_name), self.creator.randomGenerator("main-vendor-email"),
+ Vendor.objects.get(name=Constants.service_provider_company_name),
+ self.creator.randomGenerator("main-vendor-email"),
'55501000199', 'peer-reviewer user', self.el, True)
# Create a user with role standard_user
self.user = self.creator.createUser(
- Vendor.objects.get(name='Other'), self.creator.randomGenerator("main-vendor-email"),
+ Vendor.objects.get(name='Other'), self.creator.randomGenerator(
+ "main-vendor-email"),
'55501000199', 'user', self.standard_user, True)
self.user_not_team = self.creator.createUser(
- Vendor.objects.get(name='Other'), self.creator.randomGenerator("main-vendor-email"),
+ Vendor.objects.get(name='Other'), self.creator.randomGenerator(
+ "main-vendor-email"),
'55501000199', 'user2', self.standard_user, True)
# # Create an Engagement with team
- self.engagement = self.creator.createEngagement('just-a-fake-uuid', 'Validation', None)
+ self.engagement = self.creator.createEngagement(
+ 'just-a-fake-uuid', 'Validation', None)
self.engagement.engagement_team.add(self.user, self.el_user)
self.engagement.reviewer = self.el_user
self.engagement.peer_reviewer = self.peer_review_user
@@ -99,7 +106,8 @@ class TestRequestDataManager(TransactionTestCase):
urlStr = self.urlPrefix + 'engagements/${uuid}/status'
myjson = json.dumps({"description": "blah blah"}, ensure_ascii=False)
response = self.c.post(urlStr.replace('${uuid}', str(
- self.engagement.uuid)), myjson, content_type='application/json', **{'HTTP_AUTHORIZATION': "token " + self.ELtoken})
+ self.engagement.uuid)), myjson, content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token " + self.ELtoken})
self.created_status = json.loads(response.content)
def my_task(self, eng_id):
@@ -121,11 +129,13 @@ class TestRequestDataManager(TransactionTestCase):
assert request_data_mgr.get_request_data()._eng_uuid == eng_id
assert request_data_mgr.get_eng_uuid() == eng_id
- # Checks that the allocated thread from testRequestDataManager is the same thread running in inner function
+ # Checks that the allocated thread from testRequestDataManager is the
+ # same thread running in inner function
assert request_data_mgr.get_request_data()._cl_uuid == thread_local_id
assert request_data_mgr.get_cl_uuid() == thread_local_id
- print('thread: ' + str(thread_local_id) + '. request data : ' + str(request_data_mgr.get_request_data_vars()))
+ print('thread: ' + str(thread_local_id) + '. request data : ' +
+ str(request_data_mgr.get_request_data_vars()))
return "OK"
def lauchTests(self):
@@ -135,8 +145,6 @@ class TestRequestDataManager(TransactionTestCase):
future1 = executor.submit(self.my_task, "eng#" + str(i))
assert future1.result() == "OK"
- ########### TESTS ###########
-
def testRequestDataManager(self):
executor = ThreadPoolExecutor(max_workers=2)
executor.submit(self.lauchTests)
@@ -145,11 +153,13 @@ class TestRequestDataManager(TransactionTestCase):
def testMultipleRequestsInParallel(self):
self.childSetup()
number_of_concurrent_requests = 10
- executor = ThreadPoolExecutor(max_workers=number_of_concurrent_requests)
+ executor = ThreadPoolExecutor(
+ max_workers=number_of_concurrent_requests)
def close_db_connections(func, *args, **kwargs):
"""
- Decorator to explicitly close db connections during threaded execution
+ Decorator to explicitly close db connections,
+ during threaded execution.
Note this is necessary to work around:
https://code.djangoproject.com/ticket/22420
@@ -160,7 +170,8 @@ class TestRequestDataManager(TransactionTestCase):
ret = func(*args, **kwargs)
finally:
for conn in connections.all():
- logger.debug("Closing DB connection. connection=" + str(conn))
+ logger.debug(
+ "Closing DB connection. connection=" + str(conn))
conn.close()
return ret
return _close_db_connections
@@ -172,18 +183,24 @@ class TestRequestDataManager(TransactionTestCase):
logger.debug("START - " + metadata)
myjson = json.dumps(
- {"eng_status_uuid": self.created_status['uuid'], "description": "blah2 blah2"}, ensure_ascii=False)
+ {"eng_status_uuid": self.created_status['uuid'],
+ "description": "blah2 blah2"}, ensure_ascii=False)
response = self.c.put(urlStr.replace('${uuid}', str(
- self.engagement.uuid)), myjson, content_type='application/json', **{'HTTP_AUTHORIZATION': "token " + self.token})
+ self.engagement.uuid)), myjson,
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token " + self.token})
print('Got response : ' + str(response.status_code))
self.assertEqual(response.status_code, HTTP_401_UNAUTHORIZED)
time.sleep(randint(0, 1))
myjson = json.dumps(
- {"eng_status_uuid": self.created_status['uuid'], "description": "blah2 blah2"}, ensure_ascii=False)
+ {"eng_status_uuid": self.created_status['uuid'],
+ "description": "blah2 blah2"}, ensure_ascii=False)
response = self.c.put(urlStr.replace('${uuid}', str(
- self.engagement.uuid)), myjson, content_type='application/json', **{'HTTP_AUTHORIZATION': "token " + token})
+ self.engagement.uuid)), myjson,
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token " + token})
print('Got response : ' + str(response.status_code))
self.assertEqual(response.status_code, HTTP_200_OK)
@@ -193,10 +210,12 @@ class TestRequestDataManager(TransactionTestCase):
for i in range(0, number_of_concurrent_requests):
eluser = self.creator.createUser(
- Vendor.objects.get(name='Other'), self.creator.randomGenerator("main-vendor-email"),
+ Vendor.objects.get(name='Other'), self.creator.randomGenerator(
+ "main-vendor-email"),
'55501000199', 'user' + str(i), self.el, True)
token = self.jwt_service.create_token(eluser.user)
- self.engagement = self.creator.createEngagement('just-a-fake-uuid', 'Validation', None)
+ self.engagement = self.creator.createEngagement(
+ 'just-a-fake-uuid', 'Validation', None)
self.engagement.engagement_team.add(eluser)
self.engagement.reviewer = eluser
self.engagement.peer_reviewer = self.peer_review_user
diff --git a/django/engagementmanager/tests/test_resend_activation_email.py b/django/engagementmanager/tests/test_resend_activation_email.py
index b544001..49a76e6 100644
--- a/django/engagementmanager/tests/test_resend_activation_email.py
+++ b/django/engagementmanager/tests/test_resend_activation_email.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -44,9 +44,15 @@ class TestResendActivationEmail(TestBaseEntity):
def childSetup(self):
self.createDefaultRoles()
- uuid, vendor = self.creator.createVendor(Constants.service_provider_company_name)
- self.user = self.creator.createUser(vendor, self.randomGenerator("email"), self.randomGenerator(
- "randomNumber"), self.randomGenerator("randomString"), self.standard_user, False)
+ uuid, vendor = self.creator.createVendor(
+ Constants.service_provider_company_name)
+ self.user = self.creator.createUser(
+ vendor,
+ self.randomGenerator("email"),
+ self.randomGenerator("randomNumber"),
+ self.randomGenerator("randomString"),
+ self.standard_user,
+ False)
self.urlStr = self.urlPrefix + \
"users/activation-mail/" + self.user.uuid
self.params = {"email": self.user.email}
diff --git a/django/engagementmanager/tests/test_reset_password.py b/django/engagementmanager/tests/test_reset_password.py
index 7cfdd54..c4c8bb4 100644
--- a/django/engagementmanager/tests/test_reset_password.py
+++ b/django/engagementmanager/tests/test_reset_password.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -47,13 +47,19 @@ class TestResetPasswordTestCase(TestBaseEntity):
def childSetup(self):
- self.createVendors([Constants.service_provider_company_name, 'Amdocs'])
+ self.createVendors([Constants.service_provider_company_name,
+ 'Amdocs'])
self.createDefaultRoles()
# Create a user with role el
- self.user = self.creator.createUser(Vendor.objects.get(
- name=Constants.service_provider_company_name), self.randomGenerator("main-vendor-email"),
- '55501000199', 'user', self.standard_user, True)
+ self.user = self.creator.createUser(
+ Vendor.objects.get(
+ name=Constants.service_provider_company_name),
+ self.randomGenerator("main-vendor-email"),
+ '55501000199',
+ 'user',
+ self.standard_user,
+ True)
self.urlStr = self.urlPrefix + "users/pwd/sendresetinstr/"
self.data = dict()
@@ -65,11 +71,18 @@ class TestResetPasswordTestCase(TestBaseEntity):
def resetPwd(self, expectedStatus=200, httpMethod="PUT"):
self.accountData = json.dumps(self.data, ensure_ascii=False)
if (httpMethod == "PUT"):
- response = self.c.put(self.urlStr, self.accountData, content_type='application/json',
- **{'HTTP_AUTHORIZATION': "token " + self.token})
+ response = self.c.put(self.urlStr,
+ self.accountData,
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token "
+ + self.token})
elif (httpMethod == "POST"):
- response = self.c.post(self.urlStr, self.accountData, content_type='application/json',
- **{'HTTP_AUTHORIZATION': "token " + self.token})
- print('Got response : ' + str(response.status_code) + " Expecting " + str(expectedStatus))
+ response = self.c.post(self.urlStr,
+ self.accountData,
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token "
+ + self.token})
+ print('Got response : ' + str(response.status_code) +
+ " Expecting " + str(expectedStatus))
self.assertEqual(response.status_code, expectedStatus)
return response
diff --git a/django/engagementmanager/tests/test_rgwa_client.py b/django/engagementmanager/tests/test_rgwa_client.py
index a65f5b3..06bad54 100644
--- a/django/engagementmanager/tests/test_rgwa_client.py
+++ b/django/engagementmanager/tests/test_rgwa_client.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -59,7 +59,7 @@ class Test_ValidateArgs(object):
self.valid_args = {
'foo': ['foo1', 'foo2'],
'bar': [1, 2, 3],
- }
+ }
def test_unconstrained(self):
_validate_args(self.valid_args, baz="quux")
@@ -89,7 +89,7 @@ class TestRGWAClientMethods(object):
access_key=self.access_key,
secret_key=self.secret_key,
base_url=Constants.rgwa_base_url
- )
+ )
def test_get_usage(self, r):
self.conn.get_usage(uid='foo', show_entries=True)
@@ -98,9 +98,9 @@ class TestRGWAClientMethods(object):
method='get',
json={},
params={'show-entries': True, 'show-summary': False, 'uid': 'foo'},
- url=Constants.rgwa_base_url+'/usage',
+ url=Constants.rgwa_base_url + '/usage',
verify=True,
- )
+ )
def test_trim_usage(self, r):
self.conn.trim_usage(uid='foo', remove_all=True)
@@ -111,7 +111,7 @@ class TestRGWAClientMethods(object):
params={'remove-all': True, 'uid': 'foo'},
url='http://localhost:8123/admin/usage',
verify=True,
- )
+ )
def test_get_user(self, r):
self.conn.get_user(uid='foo')
@@ -120,9 +120,9 @@ class TestRGWAClientMethods(object):
method='get',
json={},
params={'uid': 'foo'},
- url=Constants.rgwa_base_url+'/user',
+ url=Constants.rgwa_base_url + '/user',
verify=True,
- )
+ )
# Marked FIXME because we experience diminishing returns here. All the
# methods in the library are basically one-liner calls to the common
@@ -134,80 +134,103 @@ class TestRGWAClientMethods(object):
@expectedFailure
def test_create_user(self, r):
- raise NotImplementedError # FIXME
+ raise NotImplementedError # FIXME
+
@expectedFailure
def test_modify_user(self, r):
- raise NotImplementedError # FIXME
+ raise NotImplementedError # FIXME
+
@expectedFailure
def test_remove_user(self, r):
- raise NotImplementedError # FIXME
+ raise NotImplementedError # FIXME
+
@expectedFailure
def test_create_subuser(self, r):
- raise NotImplementedError # FIXME
+ raise NotImplementedError # FIXME
+
@expectedFailure
def test_modify_subuser(self, r):
- raise NotImplementedError # FIXME
+ raise NotImplementedError # FIXME
+
@expectedFailure
def test_remove_subuser(self, r):
- raise NotImplementedError # FIXME
+ raise NotImplementedError # FIXME
+
@expectedFailure
def test_create_key(self, r):
- raise NotImplementedError # FIXME
+ raise NotImplementedError # FIXME
+
@expectedFailure
def test_remove_key(self, r):
- raise NotImplementedError # FIXME
+ raise NotImplementedError # FIXME
+
@expectedFailure
def test_get_bucket(self, r):
- raise NotImplementedError # FIXME
+ raise NotImplementedError # FIXME
+
@expectedFailure
def test_check_bucket_index(self, r):
- raise NotImplementedError # FIXME
+ raise NotImplementedError # FIXME
+
@expectedFailure
def test_remove_bucket(self, r):
- raise NotImplementedError # FIXME
+ raise NotImplementedError # FIXME
+
@expectedFailure
def test_unlink_bucket(self, r):
- raise NotImplementedError # FIXME
+ raise NotImplementedError # FIXME
+
@expectedFailure
def test_link_bucket(self, r):
- raise NotImplementedError # FIXME
+ raise NotImplementedError # FIXME
+
@expectedFailure
def test_remove_object(self, r):
- raise NotImplementedError # FIXME
+ raise NotImplementedError # FIXME
+
@expectedFailure
def test_get_policy(self, r):
- raise NotImplementedError # FIXME
+ raise NotImplementedError # FIXME
+
@expectedFailure
def test_add_capability(self, r):
- raise NotImplementedError # FIXME
+ raise NotImplementedError # FIXME
+
@expectedFailure
def test_remove_capability(self, r):
- raise NotImplementedError # FIXME
+ raise NotImplementedError # FIXME
+
@expectedFailure
def test_get_quota(self, r):
- raise NotImplementedError # FIXME
+ raise NotImplementedError # FIXME
+
@expectedFailure
def test_set_quota(self, r):
- raise NotImplementedError # FIXME
+ raise NotImplementedError # FIXME
+
@expectedFailure
def test_get_user_quota(self, r):
- raise NotImplementedError # FIXME
+ raise NotImplementedError # FIXME
+
@expectedFailure
def test_set_user_quota(self, r):
- raise NotImplementedError # FIXME
+ raise NotImplementedError # FIXME
+
@expectedFailure
def test_get_user_bucket_quota(self, r):
- raise NotImplementedError # FIXME
+ raise NotImplementedError # FIXME
+
@expectedFailure
def test_set_user_bucket_quota(self, r):
- raise NotImplementedError # FIXME
+ raise NotImplementedError # FIXME
@expectedFailure
def test_get_users(self, r):
- raise NotImplementedError # FIXME
+ raise NotImplementedError # FIXME
+
@expectedFailure
def test_get_buckets(self, r):
- raise NotImplementedError # FIXME
+ raise NotImplementedError # FIXME
# FIXME TODO Add integration tests against a local ceph radosgw instance,
diff --git a/django/engagementmanager/tests/test_set_checklist_state.py b/django/engagementmanager/tests/test_set_checklist_state.py
index 1b986ae..a7a88f8 100644
--- a/django/engagementmanager/tests/test_set_checklist_state.py
+++ b/django/engagementmanager/tests/test_set_checklist_state.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -37,15 +37,16 @@
#
# ECOMP is a trademark and service mark of AT&T Intellectual Property.
from engagementmanager.models import Vendor, Checklist, ChecklistDecision, \
- ChecklistLineItem, ChecklistSection
+ ChecklistLineItem
from engagementmanager.tests.test_base_entity import TestBaseEntity
-from engagementmanager.utils.constants import CheckListLineType, \
+from engagementmanager.utils.constants import \
CheckListDecisionValue, CheckListState, ChecklistDefaultNames, Constants
from rest_framework.status import HTTP_200_OK
from uuid import uuid4
import json
from engagementmanager.service.logging_service import LoggingServiceFactory
-from mocks.jenkins_mock.services.jenkins_tests_validation_service import JenkinsTestsResultsSvc
+from mocks.jenkins_mock.services.jenkins_tests_validation_service import \
+ JenkinsTestsResultsSvc
logger = LoggingServiceFactory.get_logger()
@@ -65,20 +66,40 @@ class TestChecklistSetState(TestBaseEntity):
self.createDefaultRoles()
# For negative tests
- self.user = self.creator.createUser(Vendor.objects.get(
- name=Constants.service_provider_company_name), self.randomGenerator("main-vendor-email"),
- '55501000199', 'user', self.standard_user, True)
+ self.user = self.creator.createUser(
+ Vendor.objects.get(
+ name=Constants.service_provider_company_name),
+ self.randomGenerator("main-vendor-email"),
+ '55501000199',
+ 'user',
+ self.standard_user,
+ True)
# Create users with role el (el+peer reviwer)
- self.el_user = self.creator.createUser(Vendor.objects.get(
- name=Constants.service_provider_company_name), self.randomGenerator("main-vendor-email"),
- '55501000199', 'el user', self.el, True)
- self.peer_review_user = self.creator.createUser(Vendor.objects.get(
- name=Constants.service_provider_company_name), self.randomGenerator("main-vendor-email"),
- '55501000199', 'peer-reviewer user', self.el, True)
+ self.el_user = self.creator.createUser(
+ Vendor.objects.get(
+ name=Constants.service_provider_company_name),
+ self.randomGenerator("main-vendor-email"),
+ '55501000199',
+ 'el user',
+ self.el,
+ True)
+ self.peer_review_user = self.creator.createUser(
+ Vendor.objects.get(
+ name=Constants.service_provider_company_name),
+ self.randomGenerator("main-vendor-email"),
+ '55501000199',
+ 'peer-reviewer user',
+ self.el,
+ True)
# Create a user with admin role
- self.admin_user = self.creator.createUser(Vendor.objects.get(
- name=Constants.service_provider_company_name), Constants.service_provider_admin_mail,
- '55501000199', 'admin user', self.admin, True)
+ self.admin_user = self.creator.createUser(
+ Vendor.objects.get(
+ name=Constants.service_provider_company_name),
+ Constants.service_provider_admin_mail,
+ '55501000199',
+ 'admin user',
+ self.admin,
+ True)
self.template = self.creator.createDefaultCheckListTemplate()
self.engagement = self.creator.createEngagement(
@@ -89,23 +110,42 @@ class TestChecklistSetState(TestBaseEntity):
self.engagement.save()
self.deploymentTarget = self.creator.createDeploymentTarget(
- self.randomGenerator("randomString"), self.randomGenerator("randomString"))
- self.vf = self.creator.createVF(self.randomGenerator("randomString"),
- self.engagement, self.deploymentTarget, False, self.vendor)
+ self.randomGenerator("randomString"),
+ self.randomGenerator("randomString"))
+ self.vf = self.creator.createVF(
+ self.randomGenerator("randomString"),
+ self.engagement,
+ self.deploymentTarget,
+ False,
+ self.vendor)
self.clbodydata = dict()
self.initCLBody()
- self.checklist = Checklist.objects.create(uuid=uuid4(), name=self.clbodydata['checkListName'], validation_cycle=1, associated_files=self.clbodydata[
- 'checkListAssociatedFiles'], engagement=self.engagement, template=self.template, creator=self.el_user, owner=self.el_user)
+ self.checklist = Checklist.objects.create(
+ uuid=uuid4(),
+ name=self.clbodydata['checkListName'],
+ validation_cycle=1,
+ associated_files=self.clbodydata['checkListAssociatedFiles'],
+ engagement=self.engagement,
+ template=self.template,
+ creator=self.el_user,
+ owner=self.el_user)
self.checklist.save()
self.line_items = ChecklistLineItem.objects.filter(
- template=self.checklist.template)[:JenkinsTestsResultsSvc().num_of_auto_tests]
+ template=self.checklist.template)[
+ :JenkinsTestsResultsSvc().num_of_auto_tests]
self.decision = ChecklistDecision.objects.create(
- uuid=uuid4(), checklist=self.checklist, template=self.template, lineitem=self.line_items[0])
+ uuid=uuid4(),
+ checklist=self.checklist,
+ template=self.template,
+ lineitem=self.line_items[0])
self.decision2 = ChecklistDecision.objects.create(
- uuid=uuid4(), checklist=self.checklist, template=self.template, lineitem=self.line_items[1])
+ uuid=uuid4(),
+ checklist=self.checklist,
+ template=self.template,
+ lineitem=self.line_items[1])
self.decision.save()
self.decision2.save()
self.data = dict()
@@ -114,14 +154,8 @@ class TestChecklistSetState(TestBaseEntity):
self.ELtoken = self.loginAndCreateSessionToken(self.el_user)
self.admin_token = self.loginAndCreateSessionToken(self.admin_user)
- def initCLBody(self):
- self.clbodydata['checkListName'] = ChecklistDefaultNames.HEAT_TEMPLATES
- self.clbodydata['checkListTemplateUuid'] = str(self.template.uuid)
- self.clbodydata[
- 'checkListAssociatedFiles'] = "[\"file0/f69f4ce7-51d5-409c-9d0e-ec6b1e79df28\", \"file1/f69f4ce7-51d5-409c-9d0e-ec6b1e79df28\", \"file2/f69f4ce7-51d5-409c-9d0e-ec6b1e79df28\"]"
-
- def loggerTestFailedOrSucceded(self, bool):
- if bool:
+ def loggerTestFailedOrSucceded(self, bool_flag):
+ if bool_flag:
logger.debug("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$")
logger.debug(" Test Succeeded")
logger.debug("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n\n")
@@ -137,93 +171,147 @@ class TestChecklistSetState(TestBaseEntity):
self.urlStr = self.urlPrefix + "checklist/@cl_uuid/state/"
self.get_checklist_url = self.urlPrefix + "checklist/@cl_uuid"
- self.url_for_decision = self.urlPrefix + "checklist/decision/@decision_uuid"
+ self.url_for_decision = self.urlPrefix + \
+ "checklist/decision/@decision_uuid"
self.data['decline'] = "False"
self.data['description'] = "BLA BLA BLA"
datajson = json.dumps(self.data, ensure_ascii=False)
logger.debug(
- "**********************************************************************")
+ "***********************************************")
logger.debug("----- 1. Current state is " +
self.checklist.state + " -----")
logger.debug(
- "**********************************************************************")
+ "***********************************************")
logger.debug(
- "----- 1.1 Wishing to move from pending state to automation state -----")
+ "----- 1.1 Wishing to move from pending \
+ state to automation state -----")
logger.debug(
- "----- 1.2 Performing a request to move forward to the next state -----")
- response = self.c.put(self.urlStr.replace("@cl_uuid", str(self.checklist.uuid)), datajson,
- content_type='application/json', **{'HTTP_AUTHORIZATION': "token " + self.ELtoken})
- logger.debug('1.3 Please Notice, you got a ' + str(response.status_code) +
- ' response, and was expecting a ' + str(HTTP_200_OK) + ' response')
+ "----- 1.2 Performing a request to move \
+ forward to the next state -----")
+ response = self.c.put(self.urlStr.replace("@cl_uuid",
+ str(self.checklist.uuid)),
+ datajson,
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token "
+ + self.ELtoken})
+ logger.debug('1.3 Please Notice, you got a ' +
+ str(response.status_code) +
+ ' response, and was expecting a ' +
+ str(HTTP_200_OK) +
+ ' response')
self.assertEqual(response.status_code, HTTP_200_OK)
logger.debug(
- "----- 2 Test engine Mock retrieved tests results, hence checklist state moved to review state. -----")
+ "----- 2 Test engine Mock retrieved tests results, \
+ hence checklist state moved to review state. -----")
logger.debug(
"----- 3.1 changing decisions' review value to APPROVED -----")
decisions = ChecklistDecision.objects.filter(checklist=self.checklist)
for dec in decisions:
self.data['value'] = "approved"
datajson = json.dumps(self.data, ensure_ascii=False)
- response = self.c.put(self.url_for_decision.replace("@decision_uuid", str(dec.uuid)), datajson,
- content_type='application/json', **{'HTTP_AUTHORIZATION': "token " + self.ELtoken})
+ response = self.c.put(
+ self.url_for_decision.replace(
+ "@decision_uuid", str(
+ dec.uuid)), datajson,
+ content_type='application/json', **{
+ 'HTTP_AUTHORIZATION': "token " + self.ELtoken})
logger.debug(
- "----- 3.2 Wishing to move from review state to peer_review state -----")
+ "----- 3.2 Wishing to move from review state to \
+ peer_review state -----")
logger.debug(
- "----- 3.3 Performing a request to move forward to the next state -----")
+ "----- 3.3 Performing a request to move forward \
+ to the next state -----")
- response = self.c.put(self.urlStr.replace("@cl_uuid", str(self.checklist.uuid)), datajson,
- content_type='application/json', **{'HTTP_AUTHORIZATION': "token " + self.ELtoken})
- logger.debug('3.4 you got a ' + str(response.status_code) +
- ' response, and was expecting a ' + str(HTTP_200_OK) + ' response')
+ response = self.c.put(self.urlStr.replace("@cl_uuid",
+ str(self.checklist.uuid)),
+ datajson,
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token "
+ + self.ELtoken})
+ logger.debug('3.4 you got a ' +
+ str(response.status_code) +
+ ' response, and was expecting a ' +
+ str(HTTP_200_OK) +
+ ' response')
self.assertEqual(response.status_code, HTTP_200_OK)
logger.debug(
- "----- 4.1 changing the cl peer_reviews' decisions values to NA -----")
+ "----- 4.1 changing the cl peer_reviews' \
+ decisions values to NA -----")
for dec in decisions:
- dec.peer_review_value = CheckListDecisionValue.not_relevant.name # @UndefinedVariable
+ dec.peer_review_value = CheckListDecisionValue.not_relevant.name
dec.save()
logger.debug(
- "----- 4.2 Wishing to move from peer_review state to approval state -----")
+ "----- 4.2 Wishing to move from peer_review \
+ state to approval state -----")
logger.debug(
- "----- 4.3 Performing a request to move forward to the next state -----")
- response = self.c.put(self.urlStr.replace("@cl_uuid", str(self.checklist.uuid)), datajson,
- content_type='application/json', **{'HTTP_AUTHORIZATION': "token " + self.peer_review_token})
- logger.debug('4.4 Please Notice, you got a ' + str(response.status_code) +
- ' response, and was expecting a ' + str(HTTP_200_OK) + ' response')
+ "----- 4.3 Performing a request to move \
+ forward to the next state -----")
+ response = self.c.put(self.urlStr.replace("@cl_uuid",
+ str(self.checklist.uuid)),
+ datajson,
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token "
+ + self.peer_review_token})
+ logger.debug('4.4 Please Notice, you got a ' +
+ str(response.status_code) +
+ ' response, and was expecting a ' +
+ str(HTTP_200_OK) +
+ ' response')
self.assertEqual(response.status_code, HTTP_200_OK)
logger.debug(
- "----- 5.1 Wishing to move from approval state to handoff state -----")
+ "----- 5.1 Wishing to move from approval \
+ state to handoff state -----")
logger.debug(
- "----- 5.2 Performing a request to move forward to the next state -----")
- response = self.c.put(self.urlStr.replace("@cl_uuid", str(self.checklist.uuid)), datajson,
- content_type='application/json', **{'HTTP_AUTHORIZATION': "token " + self.admin_token})
- logger.debug('Please Notice, you got a ' + str(response.status_code) +
- ' response, and was expecting a ' + str(HTTP_200_OK) + ' response')
+ "----- 5.2 Performing a request to move \
+ forward to the next state -----")
+ response = self.c.put(self.urlStr.replace("@cl_uuid",
+ str(self.checklist.uuid)),
+ datajson,
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token "
+ + self.admin_token})
+ logger.debug('Please Notice, you got a ' +
+ str(response.status_code) +
+ ' response, and was expecting a ' +
+ str(HTTP_200_OK) +
+ ' response')
self.assertEqual(response.status_code, HTTP_200_OK)
logger.debug(
- "----- 6.1 Wishing to move from handoff state to closed state -----")
+ "----- 6.1 Wishing to move from handoff \
+ state to closed state -----")
logger.debug(
- "----- 6.2 Performing a request to move forward to the last state -----")
- response = self.c.put(self.urlStr.replace("@cl_uuid", str(self.checklist.uuid)), datajson,
- content_type='application/json', **{'HTTP_AUTHORIZATION': "token " + self.ELtoken})
- logger.debug('Please Notice, you got a ' + str(response.status_code) +
- ' response, and was expecting a ' + str(HTTP_200_OK) + ' response')
+ "----- 6.2 Performing a request to move \
+ forward to the last state -----")
+ response = self.c.put(
+ self.urlStr.replace("@cl_uuid", str(self.checklist.uuid)),
+ datajson,
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token " + self.ELtoken})
+ logger.debug('Please Notice, you got a ' +
+ str(response.status_code) +
+ ' response, and was expecting a ' +
+ str(HTTP_200_OK) +
+ ' response')
self.assertEqual(response.status_code, HTTP_200_OK)
self.loggerTestFailedOrSucceded(True)
'''
- This test checks that the signal is sent and responds with 200OK. Also that the signal logic change the checklist state to automation
+ This test checks that the signal is sent and \
+ responds with 200OK. Also that the signal \
+ logic change the checklist state to automation
'''
def testClFromPendingToAutomationSignal(self):
self.urlStr = self.urlPrefix + "checklist/@cl_uuid/state/"
self.get_checklist_url = self.urlPrefix + "checklist/@cl_uuid"
- self.url_for_decision = self.urlPrefix + "checklist/decision/@decision_uuid"
+ self.url_for_decision = self.urlPrefix + \
+ "checklist/decision/@decision_uuid"
self.data['decline'] = "False"
self.data['description'] = "BLA BLA BLA"
@@ -232,6 +320,9 @@ class TestChecklistSetState(TestBaseEntity):
cl = Checklist.objects.get(uuid=self.checklist.uuid)
cl.state = CheckListState.pending.name # @UndefinedVariable
cl.save()
- res1 = self.c.put(self.urlStr.replace("@cl_uuid", str(self.checklist.uuid)), datajson,
- content_type='application/json', **{'HTTP_AUTHORIZATION': "token " + self.ELtoken})
+ res1 = self.c.put(self.urlStr.replace("@cl_uuid",
+ str(self.checklist.uuid)),
+ datajson,
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token " + self.ELtoken})
self.assertEqual(res1.status_code, HTTP_200_OK)
diff --git a/django/engagementmanager/tests/test_set_eng_stage.py b/django/engagementmanager/tests/test_set_eng_stage.py
index f26b70b..70651a8 100644
--- a/django/engagementmanager/tests/test_set_eng_stage.py
+++ b/django/engagementmanager/tests/test_set_eng_stage.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -53,44 +53,69 @@ class TestEngagementSetStage(TestBaseEntity):
self.createVendors([Constants.service_provider_company_name, 'Amdocs'])
self.vendor = Vendor.objects.get(name='Amdocs')
- self.service_provider = Vendor.objects.get(name=Constants.service_provider_company_name)
+ self.service_provider = Vendor.objects.get(
+ name=Constants.service_provider_company_name)
self.createDefaultRoles()
# For negative tests
- self.user = self.creator.createUser(Vendor.objects.get(
- name=Constants.service_provider_company_name), self.randomGenerator("main-vendor-email"),
- '55501000199', 'user', self.standard_user, True)
+ self.user = self.creator.createUser(
+ Vendor.objects.get(
+ name=Constants.service_provider_company_name),
+ self.randomGenerator("main-vendor-email"),
+ '55501000199',
+ 'user',
+ self.standard_user,
+ True)
# Create users with role el (el+peer reviwer)
- self.el_user = self.creator.createUser(Vendor.objects.get(
- name=Constants.service_provider_company_name), self.randomGenerator("main-vendor-email"),
- '55501000199', 'el user', self.el, True)
- self.peer_reviewer = self.creator.createUser(self.service_provider, self.randomGenerator(
- "main-vendor-email"), self.randomGenerator("randomNumber"), self.randomGenerator("randomString"), self.el, True)
+ self.el_user = self.creator.createUser(
+ Vendor.objects.get(
+ name=Constants.service_provider_company_name),
+ self.randomGenerator("main-vendor-email"),
+ '55501000199',
+ 'el user',
+ self.el,
+ True)
+ self.peer_reviewer = self.creator.createUser(
+ self.service_provider,
+ self.randomGenerator("main-vendor-email"),
+ self.randomGenerator("randomNumber"),
+ self.randomGenerator("randomString"),
+ self.el,
+ True)
# Create a user with admin role
- self.admin_user = self.creator.createUser(Vendor.objects.get(
- name=Constants.service_provider_company_name), Constants.service_provider_admin_mail,
- '55501000199', 'admin user', self.admin, True)
+ self.admin_user = self.creator.createUser(
+ Vendor.objects.get(
+ name=Constants.service_provider_company_name),
+ Constants.service_provider_admin_mail,
+ '55501000199',
+ 'admin user',
+ self.admin,
+ True)
- self.engagement = self.creator.createEngagement('just-a-fake-uuid', 'Validation', None)
+ self.engagement = self.creator.createEngagement(
+ 'just-a-fake-uuid', 'Validation', None)
self.engagement.reviewer = self.el_user
self.engagement.peer_reviewer = self.peer_reviewer
self.engagement.engagement_team.add(self.el_user, self.user)
self.engagement.save()
self.deploymentTarget = self.creator.createDeploymentTarget(
- self.randomGenerator("randomString"), self.randomGenerator("randomString"))
-# self.asInfrastructure = self.creator.createApplicationServiceInfrastructure(self.randomGenerator("randomString"))
- self.vf = self.creator.createVF(self.randomGenerator("randomString"),
- self.engagement, self.deploymentTarget, False, self.vendor)
-# self.vf.service_infrastructures.add(self.asInfrastructure)
+ self.randomGenerator("randomString"),
+ self.randomGenerator("randomString"))
+ self.vf = self.creator.createVF(
+ self.randomGenerator("randomString"),
+ self.engagement,
+ self.deploymentTarget,
+ False,
+ self.vendor)
self.data = dict()
self.user_token = self.loginAndCreateSessionToken(self.user)
self.ELtoken = self.loginAndCreateSessionToken(self.el_user)
self.admin_token = self.loginAndCreateSessionToken(self.admin_user)
- def loggerTestFailedOrSucceded(self, bool):
- if bool:
+ def loggerTestFailedOrSucceded(self, bool_flag):
+ if bool_flag:
logger.debug("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$")
logger.debug(" Test Succeeded")
logger.debug("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n\n")
@@ -101,107 +126,210 @@ class TestEngagementSetStage(TestBaseEntity):
def testSetEngagementStageFullWorkFlowELUser(self):
logger.debug("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$")
- logger.debug(" Test started: change from Intake to Active, using --EL-- user!")
+ logger.debug(
+ " Test started: change from Intake to Active, using --EL-- user!")
logger.debug("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n\n")
- self.urlStr = self.urlPrefix + "single-engagement/" + str(self.engagement.uuid) + "/stage/@stage"
- self.get_engagement_url = self.urlPrefix + "single-engagement/" + str(self.engagement.uuid)
+ self.urlStr = self.urlPrefix + "single-engagement/" + \
+ str(self.engagement.uuid) + "/stage/@stage"
+ self.get_engagement_url = self.urlPrefix + \
+ "single-engagement/" + str(self.engagement.uuid)
datajson = json.dumps(self.data, ensure_ascii=False)
- logger.debug("**********************************************************************")
- logger.debug("----- 1. Current stage is " + self.engagement.engagement_stage + " -----")
- logger.debug("**********************************************************************")
+ logger.debug(
+ "************************************************")
+ logger.debug("----- 1. Current stage is " +
+ self.engagement.engagement_stage + " -----")
+ logger.debug(
+ "************************************************")
- logger.debug("----- 1.1 Wishing to move from Intake stage to Active stage -----")
- logger.debug("----- 1.2 Performing a request to move forward to the next stage -----")
- response = self.c.put(self.urlStr.replace("@stage", EngagementStage.Active.name), datajson,
- content_type='application/json', **{'HTTP_AUTHORIZATION': "token " + self.ELtoken})
- response2 = self.c.get(self.get_engagement_url, {}, content_type='application/json',
- **{'HTTP_AUTHORIZATION': "token " + self.ELtoken})
+ logger.debug(
+ "----- 1.1 Wishing to move from Intake \
+ stage to Active stage -----")
+ logger.debug(
+ "----- 1.2 Performing a request to move \
+ forward to the next stage -----")
+ response = self.c.put(
+ self.urlStr.replace("@stage", EngagementStage.Active.name),
+ datajson,
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token " + self.ELtoken})
+ self.c.get(self.get_engagement_url,
+ {},
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token "
+ + self.ELtoken})
# Check if the correct activity was created for stage change to Active
- self.notifcation_url = self.urlPrefix + "engagement/" + str(self.engagement.uuid) + "/activities/"
- response3 = self.c.get(self.notifcation_url, {}, content_type='application/json',
- **{'HTTP_AUTHORIZATION': "token " + self.ELtoken})
+ self.notifcation_url = self.urlPrefix + "engagement/" + \
+ str(self.engagement.uuid) + "/activities/"
+ response3 = self.c.get(self.notifcation_url,
+ {},
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token "
+ + self.ELtoken})
received_notification = json.loads(response3.content)[0]['description']
- should_be = "Engagement stage is now Active for the following VF: ##vf_name##"
+ should_be = "Engagement stage is now Active " +\
+ "for the following VF: ##vf_name##"
self.assertEqual(should_be, received_notification)
- self.assertEqual(self.vf.name in json.loads(response3.content)[0]['metadata'], True)
- logger.debug('1.3 Please Notice, you got a ' + str(response.status_code) +
- ' response, and was expecting a ' + str(HTTP_202_ACCEPTED) + ' response')
+ self.assertEqual(self.vf.name in json.loads(
+ response3.content)[0]['metadata'], True)
+ logger.debug('1.3 Please Notice, you got a ' +
+ str(response.status_code) +
+ ' response, and was expecting a ' +
+ str(HTTP_202_ACCEPTED) +
+ ' response')
self.assertEqual(response.status_code, HTTP_202_ACCEPTED)
- logger.debug("----- 2 Wishing to move from Active stage to Validated stage -----")
- logger.debug("----- 2.1 Performing a request to move forward to the next stage -----")
- response = self.c.put(self.urlStr.replace("@stage", EngagementStage.Validated.name), datajson,
- content_type='application/json', **{'HTTP_AUTHORIZATION': "token " + self.ELtoken})
- logger.debug('2.3 Please Notice, you got a ' + str(response.status_code) +
- ' response, and was expecting a ' + str(HTTP_202_ACCEPTED) + ' response')
+ logger.debug(
+ "----- 2 Wishing to move from Active \
+ stage to Validated stage -----")
+ logger.debug(
+ "----- 2.1 Performing a request to move \
+ forward to the next stage -----")
+ response = self.c.put(
+ self.urlStr.replace("@stage", EngagementStage.Validated.name),
+ datajson,
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token " + self.ELtoken})
+ logger.debug('2.3 Please Notice, you got a ' +
+ str(response.status_code) +
+ ' response, and was expecting a ' +
+ str(HTTP_202_ACCEPTED) +
+ ' response')
self.assertEqual(response.status_code, HTTP_202_ACCEPTED)
- logger.debug("----- 3.1 Wishing to move from Validated stage to Completed stage -----")
- logger.debug("----- 3.2 Performing a request to move forward to the next stage -----")
- response = self.c.put(self.urlStr.replace("@stage", EngagementStage.Completed.name), datajson,
- content_type='application/json', **{'HTTP_AUTHORIZATION': "token " + self.ELtoken})
- logger.debug('2.4 you got a ' + str(response.status_code) +
- ' response, and was expecting a ' + str(HTTP_202_ACCEPTED) + ' response')
+ logger.debug(
+ "----- 3.1 Wishing to move from Validated \
+ stage to Completed stage -----")
+ logger.debug(
+ "----- 3.2 Performing a request to move \
+ forward to the next stage -----")
+ response = self.c.put(
+ self.urlStr.replace("@stage", EngagementStage.Completed.name),
+ datajson,
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token "
+ + self.ELtoken})
+ logger.debug('2.4 you got a ' +
+ str(response.status_code) +
+ ' response, and was expecting a ' +
+ str(HTTP_202_ACCEPTED) +
+ ' response')
self.assertEqual(response.status_code, HTTP_202_ACCEPTED)
self.loggerTestFailedOrSucceded(True)
def testSetEngagementStageFullWorkFlowAdminUser(self):
logger.debug("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$")
- logger.debug(" Test started: change from Intake to Active, using --ADMIN-- user!")
+ logger.debug(
+ " Test started: change from Intake to \
+ Active, using --ADMIN-- user!")
logger.debug("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n\n")
- self.urlStr = self.urlPrefix + "single-engagement/" + str(self.engagement.uuid) + "/stage/@stage"
- self.get_engagement_url = self.urlPrefix + "single-engagement/" + str(self.engagement.uuid)
+ self.urlStr = self.urlPrefix + "single-engagement/" + \
+ str(self.engagement.uuid) + "/stage/@stage"
+ self.get_engagement_url = self.urlPrefix + \
+ "single-engagement/" + str(self.engagement.uuid)
datajson = json.dumps(self.data, ensure_ascii=False)
- logger.debug("**********************************************************************")
- logger.debug("----- 1. Current stage is " + self.engagement.engagement_stage + " -----")
- logger.debug("**********************************************************************")
+ logger.debug(
+ "************************************************")
+ logger.debug("----- 1. Current stage is " +
+ self.engagement.engagement_stage + " -----")
+ logger.debug(
+ "************************************************")
- logger.debug("----- 1.1 Wishing to move from Intake stage to Active stage -----")
- logger.debug("----- 1.2 Performing a request to move forward to the next stage -----")
- response = self.c.put(self.urlStr.replace("@stage", EngagementStage.Active.name), datajson,
- content_type='application/json', **{'HTTP_AUTHORIZATION': "token " + self.admin_token})
- logger.debug('1.3 Please Notice, you got a ' + str(response.status_code) +
- ' response, and was expecting a ' + str(HTTP_202_ACCEPTED) + ' response')
+ logger.debug(
+ "----- 1.1 Wishing to move from Intake stage to \
+ Active stage -----")
+ logger.debug(
+ "----- 1.2 Performing a request to move \
+ forward to the next stage -----")
+ response = self.c.put(self.urlStr.replace("@stage",
+ EngagementStage.Active.name),
+ datajson,
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token "
+ + self.admin_token})
+ logger.debug('1.3 Please Notice, you got a ' +
+ str(response.status_code) +
+ ' response, and was expecting a ' +
+ str(HTTP_202_ACCEPTED) +
+ ' response')
self.assertEqual(response.status_code, HTTP_202_ACCEPTED)
self.loggerTestFailedOrSucceded(False)
- logger.debug("----- 2 Wishing to move from Active stage to Validated stage -----")
- logger.debug("----- 2.1 Performing a request to move forward to the next stage -----")
- response = self.c.put(self.urlStr.replace("@stage", EngagementStage.Validated.name), datajson,
- content_type='application/json', **{'HTTP_AUTHORIZATION': "token " + self.admin_token})
- logger.debug('2.3 Please Notice, you got a ' + str(response.status_code) +
- ' response, and was expecting a ' + str(HTTP_202_ACCEPTED) + ' response')
+ logger.debug(
+ "----- 2 Wishing to move from Active \
+ stage to Validated stage -----")
+ logger.debug(
+ "----- 2.1 Performing a request to move \
+ forward to the next stage -----")
+ response = self.c.put(
+ self.urlStr.replace("@stage", EngagementStage.Validated.name),
+ datajson,
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token "
+ + self.admin_token})
+ logger.debug('2.3 Please Notice, you got a ' +
+ str(response.status_code) +
+ ' response, and was expecting a ' +
+ str(HTTP_202_ACCEPTED) +
+ ' response')
self.assertEqual(response.status_code, HTTP_202_ACCEPTED)
- logger.debug("----- 3 Wishing to move from Validated stage to Completed stage -----")
- logger.debug("----- 3.1 Performing a request to move forward to the next stage -----")
- response = self.c.put(self.urlStr.replace("@stage", EngagementStage.Completed.name), datajson,
- content_type='application/json', **{'HTTP_AUTHORIZATION': "token " + self.admin_token})
- logger.debug('2.4 you got a ' + str(response.status_code) +
- ' response, and was expecting a ' + str(HTTP_202_ACCEPTED) + ' response')
+ logger.debug(
+ "----- 3 Wishing to move from Validated stage \
+ to Completed stage -----")
+ logger.debug(
+ "----- 3.1 Performing a request to move forward \
+ to the next stage -----")
+ response = self.c.put(
+ self.urlStr.replace("@stage", EngagementStage.Completed.name),
+ datajson,
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token " + self.admin_token})
+ logger.debug('2.4 you got a ' +
+ str(response.status_code) +
+ ' response, and was expecting a ' +
+ str(HTTP_202_ACCEPTED) +
+ ' response')
self.assertEqual(response.status_code, HTTP_202_ACCEPTED)
self.loggerTestFailedOrSucceded(True)
def test_negative_set_eng_Stage(self):
logger.debug("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$")
- logger.debug(" Test started: Negative test to change stage with un authorized user")
+ logger.debug(
+ " Test started: Negative test to change \
+ stage with un authorized user")
logger.debug("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n\n")
- self.urlStr = self.urlPrefix + "single-engagement/" + str(self.engagement.uuid) + "/stage/@stage"
- self.get_engagement_url = self.urlPrefix + "single-engagement/" + str(self.engagement.uuid)
+ self.urlStr = self.urlPrefix + "single-engagement/" + \
+ str(self.engagement.uuid) + "/stage/@stage"
+ self.get_engagement_url = self.urlPrefix + \
+ "single-engagement/" + str(self.engagement.uuid)
datajson = json.dumps(self.data, ensure_ascii=False)
- logger.debug("**********************************************************************")
- logger.debug("----- 1. Current stage is " + self.engagement.engagement_stage + " -----")
- logger.debug("**********************************************************************")
+ logger.debug(
+ "************************************************")
+ logger.debug("----- 1. Current stage is " +
+ self.engagement.engagement_stage + " -----")
+ logger.debug(
+ "************************************************")
- logger.debug("----- 1.1 Wishing to try move from Intake stage to Active stage AND FAIL! -----")
- logger.debug("----- 1.2 Performing a request to move forward to the next stage -----")
- response = self.c.put(self.urlStr.replace("@stage", EngagementStage.Active.name), datajson,
- content_type='application/json', **{'HTTP_AUTHORIZATION': "token " + self.user_token})
- logger.debug('1.3 Please Notice, you got a ' + str(response.status_code) +
- ' response, and was expecting a ' + str(HTTP_401_UNAUTHORIZED) + ' response')
+ logger.debug(
+ "----- 1.1 Wishing to try move from Intake stage \
+ to Active stage AND FAIL! -----")
+ logger.debug(
+ "----- 1.2 Performing a request to move forward \
+ to the next stage -----")
+ response = self.c.put(self.urlStr.replace("@stage",
+ EngagementStage.Active.name),
+ datajson,
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token "
+ + self.user_token})
+ logger.debug('1.3 Please Notice, you got a ' +
+ str(response.status_code) +
+ ' response, and was expecting a ' +
+ str(HTTP_401_UNAUTHORIZED) +
+ ' response')
self.assertEqual(response.status_code, HTTP_401_UNAUTHORIZED)
self.loggerTestFailedOrSucceded(True)
diff --git a/django/engagementmanager/tests/test_update_password.py b/django/engagementmanager/tests/test_update_password.py
index 08b25b2..f4b5fbc 100644
--- a/django/engagementmanager/tests/test_update_password.py
+++ b/django/engagementmanager/tests/test_update_password.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -51,9 +51,14 @@ class TestUpdatePasswordTestCase(TestBaseEntity):
self.createDefaultRoles()
# Create a user with role el
- self.user = self.creator.createUser(Vendor.objects.get(
- name=Constants.service_provider_company_name), self.randomGenerator("main-vendor-email"),
- '55501000199', 'user', self.standard_user, True)
+ self.user = self.creator.createUser(
+ Vendor.objects.get(
+ name=Constants.service_provider_company_name),
+ self.randomGenerator("main-vendor-email"),
+ '55501000199',
+ 'user',
+ self.standard_user,
+ True)
self.urlStr = self.urlPrefix + "users/pwd/"
self.data = dict()
@@ -66,16 +71,22 @@ class TestUpdatePasswordTestCase(TestBaseEntity):
def updatePwd(self, expectedStatus=200, httpMethod="PUT"):
self.accountData = json.dumps(self.data, ensure_ascii=False)
if (httpMethod == "PUT"):
- response = self.c.put(self.urlStr, self.accountData, content_type='application/json',
- **{'HTTP_AUTHORIZATION': "token " + self.token})
+ response = self.c.put(self.urlStr,
+ self.accountData,
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token "
+ + self.token})
elif (httpMethod == "POST"):
- response = self.c.post(self.urlStr, self.accountData, content_type='application/json',
- **{'HTTP_AUTHORIZATION': "token " + self.token})
- print('Got response : ' + str(response.status_code) + " Expecting " + str(expectedStatus))
+ response = self.c.post(self.urlStr,
+ self.accountData,
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token "
+ + self.token})
+ print('Got response : ' + str(response.status_code) +
+ " Expecting " + str(expectedStatus))
self.assertEqual(response.status_code, expectedStatus)
return response
- ### TESTS ###
def testUpdatePasswordPositive(self):
self.initBody()
print("testUpdatePasswordPositive")
diff --git a/django/engagementmanager/tests/test_update_user_account.py b/django/engagementmanager/tests/test_update_user_account.py
index fd0becd..5feefed 100644
--- a/django/engagementmanager/tests/test_update_user_account.py
+++ b/django/engagementmanager/tests/test_update_user_account.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -53,7 +53,8 @@ class TestUpdateUserAccountTestCase(TestBaseEntity):
# Create a user with role el
self.user = self.creator.createUser(Vendor.objects.get(
- name=Constants.service_provider_company_name), self.randomGenerator("main-vendor-email"),
+ name=Constants.service_provider_company_name),
+ self.randomGenerator("main-vendor-email"),
'55501000199', 'user', self.standard_user, True)
print('-----------------------------------------------------')
print('Created User:')
@@ -76,16 +77,19 @@ class TestUpdateUserAccountTestCase(TestBaseEntity):
def updateAccount(self, expectedStatus=200, httpMethod="PUT"):
self.accountData = json.dumps(self.data, ensure_ascii=False)
if (httpMethod == "PUT"):
- response = self.c.put(self.urlStr, self.accountData, content_type='application/json',
- **{'HTTP_AUTHORIZATION': "token " + self.token})
+ response = self.c.put(self.urlStr, self.accountData,
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token "
+ + self.token})
elif (httpMethod == "POST"):
- response = self.c.post(self.urlStr, self.accountData, content_type='application/json',
- **{'HTTP_AUTHORIZATION': "token " + self.token})
+ response = self.c.post(self.urlStr, self.accountData,
+ content_type='application/json',
+ **{'HTTP_AUTHORIZATION': "token "
+ + self.token})
print('Got response : ' + str(response.status_code) + " Expecting 200")
self.assertEqual(response.status_code, expectedStatus)
return response
- ### TESTS ###
def testUpdateNegativeWrongHttpMethodAccount(self):
self.initBody()
print("Negative Test: Wrong HTTP Method --> Expecting status code 405")
@@ -93,7 +97,8 @@ class TestUpdateUserAccountTestCase(TestBaseEntity):
def testUpdateNegativeDiffPasswords(self):
self.initBody()
- print("Negative Test: password!=confirm_password --> Expecting status code 400")
+ print("Negative Test: password!=confirm_password --> \
+ Expecting status code 400")
self.data['confirm_password'] = "fakePassword"
self.updateAccount(400, "PUT")
diff --git a/django/engagementmanager/tests/test_vfc.py b/django/engagementmanager/tests/test_vfc.py
index e7f374a..bf462b6 100644
--- a/django/engagementmanager/tests/test_vfc.py
+++ b/django/engagementmanager/tests/test_vfc.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -51,16 +51,22 @@ class VFCAPITestCase(TestBaseEntity):
self.createVendors([Constants.service_provider_company_name, 'Other'])
self.createDefaultRoles()
# Create a user with role el
- self.service_provider = Vendor.objects.get(name=Constants.service_provider_company_name)
- self.el_user = self.creator.createUser(self.service_provider, self.randomGenerator(
- "main-vendor-email"), self.randomGenerator("randomNumber"), self.randomGenerator("randomString"), self.el, True)
+ self.service_provider = Vendor.objects.get(
+ name=Constants.service_provider_company_name)
+ self.el_user = self.creator.createUser(
+ self.service_provider, self.randomGenerator(
+ "main-vendor-email"), self.randomGenerator("randomNumber"),
+ self.randomGenerator(
+ "randomString"), self.el, True)
logger.debug('-----------------------------------------------------')
logger.debug('Created User:')
logger.debug('UUID: ' + str(self.el_user.uuid))
logger.debug('Full Name: ' + self.el_user.full_name)
logger.debug('-----------------------------------------------------')
- self.peer_reviewer = self.creator.createUser(self.service_provider, self.randomGenerator(
- "main-vendor-email"), self.randomGenerator("randomNumber"), self.randomGenerator("randomString"), self.el, True)
+ self.peer_reviewer = self.creator.createUser(
+ self.service_provider, self.randomGenerator(
+ "main-vendor-email"), self.randomGenerator("randomNumber"),
+ self.randomGenerator("randomString"), self.el, True)
logger.debug('-----------------------------------------------------')
logger.debug('Created Peer Reviewer:')
logger.debug('UUID: ' + str(self.peer_reviewer.uuid))
@@ -69,8 +75,10 @@ class VFCAPITestCase(TestBaseEntity):
# Create a user with role standard_user
self.vendor = Vendor.objects.get(name='Other')
- self.user = self.creator.createUser(self.vendor, self.randomGenerator("email"), self.randomGenerator(
- "randomNumber"), self.randomGenerator("randomString"), self.standard_user, True)
+ self.user = self.creator.createUser(
+ self.vendor, self.randomGenerator("email"), self.randomGenerator(
+ "randomNumber"), self.randomGenerator("randomString"),
+ self.standard_user, True)
logger.debug('-----------------------------------------------------')
logger.debug('Created User:')
logger.debug('UUID: ' + str(self.user.uuid))
@@ -80,7 +88,8 @@ class VFCAPITestCase(TestBaseEntity):
# Create an Engagement with team
self.engagement = self.creator.createEngagement(self.randomGenerator(
"randomString"), self.randomGenerator("randomString"), None)
- self.engagement.engagement_team.add(self.user, self.el_user, self.peer_reviewer)
+ self.engagement.engagement_team.add(
+ self.user, self.el_user, self.peer_reviewer)
self.engagement.peer_reviewer = self.peer_reviewer
self.engagement.reviewer = self.el_user
self.engagement.save()
@@ -91,9 +100,11 @@ class VFCAPITestCase(TestBaseEntity):
# Create a DT, DTSite, VF
self.deploymentTarget = self.creator.createDeploymentTarget(
- self.randomGenerator("randomString"), self.randomGenerator("randomString"))
+ self.randomGenerator("randomString"),
+ self.randomGenerator("randomString"))
self.vf = self.creator.createVF(self.randomGenerator("randomString"),
- self.engagement, self.deploymentTarget, False, self.vendor)
+ self.engagement, self.deploymentTarget,
+ False, self.vendor)
logger.debug('-----------------------------------------------------')
logger.debug('Created VF:')
@@ -103,16 +114,17 @@ class VFCAPITestCase(TestBaseEntity):
self.token = self.loginAndCreateSessionToken(self.user)
self.ELtoken = self.loginAndCreateSessionToken(self.el_user)
- def retrieveCurrentObjectsOfEngagementByFilter(self, method, detailOrObject, entity):
+ def retrieveCurrentObjectsOfEngagementByFilter(self, method,
+ detailOrObject, entity):
if method == 'filter':
- list = entity.objects.filter(engagement=detailOrObject)
- return list
+ entity_list = entity.objects.filter(engagement=detailOrObject)
+ return entity_list
elif method == 'get':
- list = entity.objects.get(uuid=detailOrObject)
- return list
+ entity_list = entity.objects.get(uuid=detailOrObject)
+ return entity_list
- def loggerTestFailedOrSucceded(self, bool):
- if bool:
+ def loggerTestFailedOrSucceded(self, flag):
+ if flag:
logger.debug("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$")
logger.debug(" Test Succeeded")
logger.debug("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n\n")
@@ -125,7 +137,8 @@ class VFCAPITestCase(TestBaseEntity):
logger.debug("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$")
logger.debug(" Test started: Create DTSite and add to VF")
logger.debug("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n\n")
- self.deploymentTargetSite = self.creator.createDeploymentTargetSite(self.randomGenerator("randomString"))
+ self.deploymentTargetSite = self.creator.createDeploymentTargetSite(
+ self.randomGenerator("randomString"))
self.vf.deployment_target_sites.add(self.deploymentTargetSite)
sites = self.vf.deployment_target_sites.all()
num = 1
@@ -141,14 +154,18 @@ class VFCAPITestCase(TestBaseEntity):
logger.debug("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$")
logger.debug(" Test started: Delete VFC")
logger.debug("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n\n")
- vfc = self.creator.createVFC(self.randomGenerator("randomString"), self.randomGenerator(
+ vfc = self.creator.createVFC(self.randomGenerator("randomString"),
+ self.randomGenerator(
"randomNumber"), self.vendor, self.vf, self.el_user)
- urlStr = self.urlPrefix + 'vf/' + str(vfc.uuid) + '/vfcs/' + str(vfc.uuid)
- if (vfc == None):
- logger.error("vfc wasn't created successfully before the deletion attempt")
+ urlStr = self.urlPrefix + 'vf/' + \
+ str(vfc.uuid) + '/vfcs/' + str(vfc.uuid)
+ if (not vfc):
+ logger.error(
+ "vfc wasn't created successfully before the deletion attempt")
self.loggerTestFailedOrSucceded(False)
self.assertEqual(500, expectedStatus)
- response = self.c.delete(urlStr, **{'HTTP_AUTHORIZATION': "token " + self.token})
+ response = self.c.delete(
+ urlStr, **{'HTTP_AUTHORIZATION': "token " + self.token})
logger.debug('Got response : ' + str(response.status_code))
if (response.status_code == HTTP_204_NO_CONTENT):
self.loggerTestFailedOrSucceded(True)
@@ -160,16 +177,21 @@ class VFCAPITestCase(TestBaseEntity):
logger.debug("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$")
logger.debug(" Test started: Get VFCs")
logger.debug("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n\n")
- vfc = self.creator.createVFC(self.randomGenerator("randomString"), self.randomGenerator(
+ vfc = self.creator.createVFC(self.randomGenerator("randomString"),
+ self.randomGenerator(
"randomNumber"), self.vendor, self.vf, self.el_user)
- vfc2 = self.creator.createVFC(self.randomGenerator("randomString"), self.randomGenerator(
+ vfc2 = self.creator.createVFC(self.randomGenerator("randomString"),
+ self.randomGenerator(
"randomNumber"), self.service_provider, self.vf, self.el_user)
urlStr = self.urlPrefix + 'vf/' + str(self.vf.uuid) + '/vfcs/'
- if (vfc == None or vfc2 == None):
- logger.error("The VFCs were not created successfully before the deletion attempt")
+ if (not vfc or not vfc2):
+ logger.error(
+ "The VFCs were not created successfully before \
+ the deletion attempt")
self.loggerTestFailedOrSucceded(False)
self.assertEqual(500, expectedStatus)
- response = self.c.get(urlStr, **{'HTTP_AUTHORIZATION': "token " + self.token})
+ response = self.c.get(
+ urlStr, **{'HTTP_AUTHORIZATION': "token " + self.token})
logger.debug('Got response : ' + str(response.status_code))
logger.debug("VFCs found in the VF(through the GET request):")
logger.debug(str(response.content))
diff --git a/django/engagementmanager/tests/vvpEntitiesCreator.py b/django/engagementmanager/tests/vvpEntitiesCreator.py
index 0ba619e..77ed260 100644
--- a/django/engagementmanager/tests/vvpEntitiesCreator.py
+++ b/django/engagementmanager/tests/vvpEntitiesCreator.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -42,8 +42,10 @@ import string
import random
from engagementmanager.service.logging_service import LoggingServiceFactory
from engagementmanager.utils.authentication import JWTAuthentication
-from engagementmanager.models import Vendor, IceUserProfile, Role, Engagement, DeploymentTarget, ApplicationServiceInfrastructure, VF,\
- NextStep, ChecklistTemplate, DeploymentTargetSite, VFC, Checklist, ChecklistSection, ChecklistLineItem,\
+from engagementmanager.models import Vendor, IceUserProfile, Role, \
+ Engagement, DeploymentTarget, ApplicationServiceInfrastructure, VF,\
+ NextStep, ChecklistTemplate, DeploymentTargetSite, VFC, \
+ Checklist, ChecklistSection, ChecklistLineItem,\
CustomUser
from engagementmanager.utils.constants import Constants
@@ -55,7 +57,8 @@ class VvpEntitiesCreator:
def __init__(self):
pass
- def createUserTemplate(self, company, email, full_name, role, is_service_provider_contact, ssh_key=None, ):
+ def createUserTemplate(self, company, email, full_name, role,
+ is_service_provider_contact, ssh_key=None, ):
return {
'company': company,
'email': email,
@@ -112,16 +115,25 @@ class VvpEntitiesCreator:
admin = self.getOrCreateIfNotExist(
Role, {'name': 'admin'}, {'name': 'admin'})
el = self.getOrCreateIfNotExist(Role, {'name': 'el'}, {'name': 'el'})
- standard_user = self.getOrCreateIfNotExist(Role, {'name': 'standard_user'}, {
- 'name': 'standard_user'})
+ standard_user = self.getOrCreateIfNotExist(
+ Role, {'name': 'standard_user'}, {
+ 'name': 'standard_user'})
return admin, el, standard_user
- def createUser(self, company, email, phone, fullName, role, is_active=False, ssh_key=None, activation_token_create_time=timezone.now()):
+ def createUser(self, company, email, phone, fullName, role,
+ is_active=False, ssh_key=None,
+ activation_token_create_time=timezone.now()):
try:
- user, is_user_created = CustomUser.objects.get_or_create(username=email, defaults={'email': email, 'password': '12345678', 'activation_token': uuid4(
- ), 'activation_token_create_time': timezone.now(), 'last_login': timezone.now(), 'is_active': is_active})
- user_profile, is_profile_created = IceUserProfile.objects.update_or_create(
- email=email, defaults=self.createUserTemplate(company, email, fullName, role, False, ssh_key))
+ user, is_user_created = CustomUser.objects.get_or_create(
+ username=email, defaults={
+ 'email': email, 'password': '12345678',
+ 'activation_token': uuid4(),
+ 'activation_token_create_time': timezone.now(),
+ 'last_login': timezone.now(), 'is_active': is_active})
+ user_profile, is_profile_created = \
+ IceUserProfile.objects.update_or_create(
+ email=email, defaults=self.createUserTemplate(
+ company, email, fullName, role, False, ssh_key))
except Exception as e:
logger.error("VvpEntitiesCreator - createUser - error:")
logger.error(e)
@@ -129,18 +141,23 @@ class VvpEntitiesCreator:
return user_profile
def createEngagement(self, uuid, engagement_type, engagement_team):
- return self.getOrCreateIfNotExist(Engagement, {'uuid': uuid}, self.createEngagementTemplate(engagement_type, engagement_team))
+ return self.getOrCreateIfNotExist(
+ Engagement, {'uuid': uuid}, self.createEngagementTemplate(
+ engagement_type, engagement_team))
- def createVF(self, name, engagement, deployment, is_service_provider_internal, vendor, **kwargs):
- vf = VF.objects.create(name=name, engagement=engagement,
- deployment_target=deployment,
- is_service_provider_internal=is_service_provider_internal,
- vendor=vendor,
- target_lab_entry_date=timezone.now(), **kwargs)
+ def createVF(self, name, engagement, deployment,
+ is_service_provider_internal, vendor, **kwargs):
+ vf = VF.objects.create(
+ name=name, engagement=engagement,
+ deployment_target=deployment,
+ is_service_provider_internal=is_service_provider_internal,
+ vendor=vendor,
+ target_lab_entry_date=timezone.now(), **kwargs)
return vf
def createNextStep(self, uuid, createFields):
- return self.getOrCreateIfNotExist(NextStep, {'uuid': uuid}, createFields)
+ return self.getOrCreateIfNotExist(
+ NextStep, {'uuid': uuid}, createFields)
def createDefaultCheckListTemplate(self):
checklist_templates = [
@@ -158,22 +175,45 @@ class VvpEntitiesCreator:
{
'name': 'Parameters',
'weight': 1,
- 'description': 'Numeric parameters should include range and/or allowed values.',
- 'validation_instructions': 'Here are some useful tips for how to validate this item in the most awesome way:<br><br><ul><li>Here is my awesome tip 1</li><li>Here is my awesome tip 2</li><li>Here is my awesome tip 3</li></ul>',
+ 'description': 'Numeric parameters ' +
+ 'should include range and/or allowed values.',
+ 'validation_instructions': 'Here are some ' +
+ 'useful tips for how to validate this item ' +
+ ' in the most awesome way:<br><br><ul><li>' +
+ 'Here is my awesome tip 1</li><li>Here is ' +
+ 'my awesome tip 2</li><li>' +
+ 'Here is my awesome ' +
+ 'tip 3</li></ul>',
'line_type': 'auto',
},
{
'name': 'String parameters',
'weight': 1,
- 'description': 'Numeric parameters should include range and/or allowed values.',
- 'validation_instructions': 'Here are some useful tips for how to validate this item in the most awesome way:<br><br><ul><li>Here is my awesome tip 1</li><li>Here is my awesome tip 2</li><li>Here is my awesome tip 3</li></ul>',
+ 'description': 'Numeric parameters ' +
+ 'should include range and/or allowed values.',
+ 'validation_instructions': 'Here are some ' +
+ 'useful tips for how to validate this item ' +
+ 'in the most awesome way:<br><br><ul><li>' +
+ 'Here is my awesome tip 1</li><li>Here is ' +
+ 'my awesome tip 2</li><li>' +
+ 'Here is my awesome ' +
+ 'tip 3</li></ul>',
'line_type': 'auto',
},
{
'name': 'Numeric parameters',
'weight': 1,
- 'description': 'Numeric parameters should include range and/or allowed values.',
- 'validation_instructions': 'Here are some useful tips for how to validate this item in the most awesome way:<br><br><ul><li>Here is my awesome tip 1</li><li>Here is my awesome tip 2</li><li>Here is my awesome tip 3</li></ul>',
+ 'description': 'Numeric parameters should ' +
+ 'include range and/or allowed values.',
+ 'validation_instructions': 'Here are some ' +
+ 'useful tips for how to ' +
+ 'validate this item in ' +
+ 'the most awesome way:<br><br><ul><li>' +
+ 'Here is ' +
+ 'my awesome tip 1</li><li>' +
+ 'Here is my awesome ' +
+ 'tip 2</li><li>Here is my awesome tip 3' +
+ '</li></ul>',
'line_type': 'auto',
}
]
@@ -187,15 +227,27 @@ class VvpEntitiesCreator:
{
'name': 'Normal references',
'weight': 1,
- 'description': 'Numeric parameters should include range and/or allowed values.',
- 'validation_instructions': 'Here are some useful tips for how to validate this item in the most awesome way:<br><br><ul><li>Here is my awesome tip 1</li><li>Here is my awesome tip 2</li><li>Here is my awesome tip 3</li></ul>',
+ 'description': 'Numeric parameters should ' +
+ 'include range and/or allowed values.',
+ 'validation_instructions': 'Here are ' +
+ 'some useful tips for how to validate ' +
+ 'this item in the most awesome way:' +
+ '<br><br><ul><li>Here is my awesome ' +
+ 'tip 1</li><li>Here is my awesome tip 2' +
+ '</li><li>Here is my awesome tip 3</li></ul>',
'line_type': 'manual',
},
{
'name': 'VF image',
'weight': 1,
- 'description': 'Numeric parameters should include range and/or allowed values.',
- 'validation_instructions': 'Here are some useful tips for how to validate this item in the most awesome way:<br><br><ul><li>Here is my awesome tip 1</li><li>Here is my awesome tip 2</li><li>Here is my awesome tip 3</li></ul>',
+ 'description': 'Numeric parameters should ' +
+ 'include range and/or allowed values.',
+ 'validation_instructions': 'Here are some ' +
+ 'useful tips for how to validate this item ' +
+ 'in the most awesome way:<br><br><ul><li>' +
+ 'Here is my awesome tip 1</li><li>Here ' +
+ 'is my awesome tip 2</li><li>Here is my ' +
+ 'awesome tip 3</li></ul>',
'line_type': 'auto',
}
]
@@ -206,32 +258,36 @@ class VvpEntitiesCreator:
]
for template in checklist_templates:
- created_template = ChecklistTemplate.objects.get_or_create(name=template['name'], defaults={
- 'category': template['category'],
- 'version': template['version'],
- 'create_time': timezone.now()
- })
+ created_template = ChecklistTemplate.objects.get_or_create(
+ name=template['name'], defaults={
+ 'category': template['category'],
+ 'version': template['version'],
+ 'create_time': timezone.now()
+ })
created_template = ChecklistTemplate.objects.get(
name=template['name'])
for section in template['sections']:
created_section = ChecklistSection.objects.get_or_create(
name=section['name'],
- template_id=created_template.uuid, defaults={
+ template_id=created_template.uuid,
+ defaults={
'weight': section['weight'],
'description': section['description'],
- 'validation_instructions': section['validation_instructions']
+ 'validation_instructions': section[
+ 'validation_instructions']
})
created_section = ChecklistSection.objects.get(
name=section['name'], template_id=created_template.uuid)
for lineitem in section['lineitems']:
- created_lineitem = ChecklistLineItem.objects.get_or_create(
+ ChecklistLineItem.objects.get_or_create(
name=lineitem['name'],
template_id=created_template.uuid,
defaults={
'weight': lineitem['weight'],
'description': lineitem['description'],
- 'validation_instructions': lineitem['validation_instructions'],
+ 'validation_instructions': lineitem[
+ 'validation_instructions'],
'line_type': lineitem['line_type'],
'section_id': created_section.uuid,
})
@@ -241,8 +297,9 @@ class VvpEntitiesCreator:
return self.defaultCheklistTemplate
- def createCheckList(self, name, state, validation_cycle, associated_files, engagement, template, creator, owner):
- if (associated_files == None):
+ def createCheckList(self, name, state, validation_cycle, associated_files,
+ engagement, template, creator, owner):
+ if (not associated_files):
associated_files = '{}'
return self.getOrCreateIfNotExist(Checklist, {'name': name}, {
'state': state,
@@ -260,21 +317,26 @@ class VvpEntitiesCreator:
try:
obj = VFC.objects.get(name=name)
except VFC.DoesNotExist:
- return VFC.objects.create(name=name, external_ref_id=ext_ref, company=company, creator=creator, vf=vf)
+ return VFC.objects.create(name=name, external_ref_id=ext_ref,
+ company=company, creator=creator, vf=vf)
return obj
def randomGenerator(self, typeOfValue, numberOfDigits=0):
lettersAndNumbers = string.ascii_letters + string.digits
if typeOfValue == 'email':
- myEmail = ''.join(random.choice(lettersAndNumbers) for _ in range(4)) + "@" + \
- ''.join(random.choice(string.ascii_uppercase) for _ in range(4)) + ".com"
+ myEmail = ''.join(
+ random.choice(lettersAndNumbers) for _ in range(4)) + "@" + \
+ ''.join(random.choice(string.ascii_uppercase)
+ for _ in range(4)) + ".com"
return myEmail
elif typeOfValue == 'main-vendor-email':
- myEmail = ''.join(random.choice(lettersAndNumbers) for _ in range(4)) + "@" + \
- Constants.service_provider_mail_domain[0]
+ myEmail = ''.join(
+ random.choice(lettersAndNumbers) for _ in range(4)) + "@" + \
+ Constants.service_provider_mail_domain[0]
return myEmail
elif typeOfValue == 'randomNumber':
- randomNumber = ''.join("%s" % random.randint(0, 9) for _ in range(0, (numberOfDigits + 1)))
+ randomNumber = ''.join("%s" % random.randint(0, 9)
+ for _ in range(0, (numberOfDigits + 1)))
return randomNumber
elif typeOfValue == 'randomString':
randomString = "".join(random.sample(lettersAndNumbers, 5))
diff --git a/django/engagementmanager/urls.py b/django/engagementmanager/urls.py
index 9cc5be3..f0aca9f 100644
--- a/django/engagementmanager/urls.py
+++ b/django/engagementmanager/urls.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -39,13 +39,17 @@
from django.conf.urls import url
from engagementmanager.rest import checklist_audit_log
-from engagementmanager.rest import user, activation, activity, vf, invite, feedback, nextsteps, engagement, \
- login, signup, notification, checklist, deployment_target_site, vendor, data_loader, checklist_decision, \
+from engagementmanager.rest import user, activation, activity, vf,\
+ invite, feedback, nextsteps, engagement, \
+ login, signup, notification, checklist, deployment_target_site,\
+ vendor, data_loader, checklist_decision, \
vfc, checklist_set_state, deployment_target, ecomp, validation_details
from engagementmanager.rest.cms.pages import Pages, PageById, PageSearch
from engagementmanager.rest.cms.posts import Posts
-from engagementmanager.rest.engagement import EngagementProgressBar, ChangeTargetLabEntryDate, EngagementOps, \
- EngagementReviewer, EngagementPeerReviewer, ArchiveEngagement, SwitchEngagementReviewers
+from engagementmanager.rest.engagement import EngagementProgressBar,\
+ ChangeTargetLabEntryDate, EngagementOps, \
+ EngagementReviewer, EngagementPeerReviewer,\
+ ArchiveEngagement, SwitchEngagementReviewers
from engagementmanager.rest.user import User
from engagementmanager.service.logging_service import LoggingServiceFactory
@@ -99,7 +103,8 @@ urlpatterns = [
re_uuid, nextsteps.NextSteps.as_view()),
url(r'^engagements/(?P<eng_uuid>%s)/nextsteps/order_next_steps$' %
re_uuid, nextsteps.OrderNextSteps.as_view()),
- url(r'^engagements/(?P<eng_uuid>%s)/nextsteps/(?P<eng_stage>%s)/?$' % (re_uuid, re_enum),
+ url(r'^engagements/(?P<eng_uuid>%s)/' % re_uuid +\
+ 'nextsteps/(?P<eng_stage>%s)/?$' % re_enum,
nextsteps.NextSteps.as_view()), # Set Next Step State
# Set Progress bar for Engagement
url(r'^engagements/(?P<eng_uuid>%s)/progress/?$' %
@@ -127,21 +132,22 @@ urlpatterns = [
re_uuid, activity.PullActivities.as_view()),
# DeploymentTarget(version)
- url(r'^engagement/(?P<engagement_uuid>%s)/deployment-targets/(?P<dt_uuid>%s)$'
- % (re_uuid, re_uuid),
+ url(r'^engagement/(?P<engagement_uuid>%s)' % re_uuid +\
+ '/deployment-targets/(?P<dt_uuid>%s)$' % (re_uuid),
deployment_target.DeploymentTargetRESTMethods.as_view()),
url(r'^deployment-targets/?$',
deployment_target.DeploymentTargetRESTMethods.as_view()),
# ECOMP
- url(r'^engagement/(?P<engagement_uuid>%s)/ecomp-releases/(?P<ecomp_uuid>%s)$' % (re_uuid, re_uuid),
+ url(r'^engagement/(?P<engagement_uuid>%s)' % re_uuid +\
+ '/ecomp-releases/(?P<ecomp_uuid>%s)$' % (re_uuid),
ecomp.ECOMPReleaseRESTMethods.as_view()),
url(r'^ecomp-releases/?$', ecomp.ECOMPReleaseRESTMethods.as_view()),
# VFVERSION
url(r'^vf/(?P<vf_uuid>%s)/vf-version/$' % re_uuid, vf.VF.as_view()),
# DeploymentTargetSite%s
- url(r'^vf/(?P<vf_uuid>%s)/validation-details/$' %
- re_uuid, validation_details.UpdateValidationDetails.as_view()),
+ url(r'^vf/(?P<vf_uuid>%s)/validation-details/$' % re_uuid,
+ validation_details.UpdateValidationDetails.as_view()),
url(r'^vf/(?P<vf_uuid>%s)/dtsites/$' %
re_uuid, deployment_target_site.DTSites.as_view()),
url(r'^vf/(?P<vf_uuid>%s)/dtsites/(?P<dts_uuid>%s)$' %
@@ -158,7 +164,8 @@ urlpatterns = [
(re_uuid, re_uuid), vfc.VFCRest.as_view()),
# Next Steps
- url(r'^nextsteps/(?P<ns_uuid>%s)/engagement/(?P<eng_uuid>%s)?$' % (re_uuid, re_uuid),
+ url(r'^nextsteps/(?P<ns_uuid>%s)/' % re_uuid +\
+ 'engagement/(?P<eng_uuid>%s)?$' % re_uuid,
nextsteps.EditNextSteps.as_view()), # Set State for a next step
url(r'^nextsteps/(?P<ns_uuid>%s)/(?P<attr>state)/?$' %
re_uuid, nextsteps.NextSteps.as_view()), # Set State for a next step
@@ -212,7 +219,9 @@ urlpatterns = [
re_uuid, checklist.CheckListTemplates.as_view()),
# get Checklist (returns files and all templates)
- url(r'^engagement/(?P<eng_uuid>%s)/checklist/(?P<checklistUuid>%s)/nextstep/$' % (re_uuid, re_uuid),
+ url(
+ r'^engagement/(?P<eng_uuid>%s)/checklist/' % re_uuid +\
+ '(?P<checklistUuid>%s)/nextstep/$' % re_uuid,\
nextsteps.ChecklistNextStep.as_view()),
url(r'^engagement/(?P<eng_uuid>%s)/checklist/new/$' %
re_uuid, checklist.NewCheckList.as_view()),
diff --git a/django/engagementmanager/utils/__init__.py b/django/engagementmanager/utils/__init__.py
index 371b694..c223eb3 100644
--- a/django/engagementmanager/utils/__init__.py
+++ b/django/engagementmanager/utils/__init__.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/engagementmanager/utils/activities_data.py b/django/engagementmanager/utils/activities_data.py
index 24275d6..7928ff7 100644
--- a/django/engagementmanager/utils/activities_data.py
+++ b/django/engagementmanager/utils/activities_data.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -53,44 +53,54 @@ class ActivityData:
class UserJoinedEngagementActivityData(ActivityData):
def __init__(self, vf, users_list, engagement, owner=None):
- super(UserJoinedEngagementActivityData, self).__init__(engagement, ActivityType.user_joined_eng, owner)
+ super(UserJoinedEngagementActivityData, self).__init__(
+ engagement, ActivityType.user_joined_eng, owner)
self.vf = vf
self.users_list = users_list
class VFProvisioningActivityData(ActivityData):
- def __init__(self, vf, users_list, engagement, description="There was an error provisioning the VF", owner=None):
- super(VFProvisioningActivityData, self).__init__(engagement, ActivityType.vf_provisioning_event, owner)
+ def __init__(self, vf, users_list, engagement,
+ description="There was an error provisioning the VF",
+ owner=None):
+ super(VFProvisioningActivityData, self).__init__(
+ engagement, ActivityType.vf_provisioning_event, owner)
self.vf = vf
self.description = description
self.users_list = users_list
class TestFinishedActivityData(ActivityData):
- def __init__(self, users_list, engagement, description="There was an error in Test"
- " Finished signal from Jenkins", owner=None):
- super(TestFinishedActivityData, self).__init__(engagement, ActivityType.test_finished_event, owner)
+ def __init__(self, users_list, engagement,
+ description="There was an error in Test"
+ " Finished signal from Jenkins", owner=None):
+ super(TestFinishedActivityData, self).__init__(
+ engagement, ActivityType.test_finished_event, owner)
self.description = description
self.users_list = users_list
class ChangeEngagementStageActivityData(ActivityData):
def __init__(self, vf, stage, engagement, owner=None):
- super(ChangeEngagementStageActivityData, self).__init__(engagement, ActivityType.change_engagement_stage, owner)
+ super(ChangeEngagementStageActivityData, self).__init__(
+ engagement, ActivityType.change_engagement_stage, owner)
self.vf = vf
self.stage = stage
class AddNextStepsActivityData(ActivityData):
def __init__(self, vf, user, engagement, owner=None):
- super(AddNextStepsActivityData, self).__init__(engagement, ActivityType.add_next_steps, owner)
+ super(AddNextStepsActivityData, self).__init__(
+ engagement, ActivityType.add_next_steps, owner)
self.vf = vf
self.user = user
class NoticeEmptyEngagementData(ActivityData):
- def __init__(self, vf_name, max_empty_time, git_repo_url, delta_days_from_creation, engagement, owner=None):
- super(NoticeEmptyEngagementData, self).__init__(engagement, ActivityType.notice_empty_engagement, owner)
+ def __init__(self, vf_name, max_empty_time, git_repo_url,
+ delta_days_from_creation, engagement, owner=None):
+ super(NoticeEmptyEngagementData, self).__init__(
+ engagement, ActivityType.notice_empty_engagement, owner)
self.max_empty_time = max_empty_time
self.vf_name = vf_name
self.git_repo_url = git_repo_url
@@ -99,18 +109,21 @@ class NoticeEmptyEngagementData(ActivityData):
class UpdateNextStepsActivityData(ActivityData):
def __init__(self, update_type, user, engagement, owner=None):
- super(UpdateNextStepsActivityData, self).__init__(engagement, ActivityType.update_next_steps, owner)
+ super(UpdateNextStepsActivityData, self).__init__(
+ engagement, ActivityType.update_next_steps, owner)
self.update_type = update_type
self.user = user
class DeleteNextStepsActivityData(ActivityData):
def __init__(self, user, engagement, owner=None):
- super(DeleteNextStepsActivityData, self).__init__(engagement, ActivityType.delete_next_steps, owner)
+ super(DeleteNextStepsActivityData, self).__init__(
+ engagement, ActivityType.delete_next_steps, owner)
self.user = user
class SSHKeyAddedActivityData(ActivityData):
def __init__(self, action, engagement, owner=None):
- super(SSHKeyAddedActivityData, self).__init__(engagement, ActivityType.ssh_key_added, owner)
+ super(SSHKeyAddedActivityData, self).__init__(
+ engagement, ActivityType.ssh_key_added, owner)
self.action = action
diff --git a/django/engagementmanager/utils/authentication.py b/django/engagementmanager/utils/authentication.py
index 6a857d6..cd25620 100644
--- a/django/engagementmanager/utils/authentication.py
+++ b/django/engagementmanager/utils/authentication.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -58,7 +58,8 @@ def ice_jwt_decode_handler(token):
class JWTAuthentication(object):
"""
Simple token based authentication.
- Clients should authenticate by passing the token key in the "Authorization" HTTP header, prepended with the string "Token ".
+ Clients should authenticate by passing the token key in the
+ "Authorization" HTTP header, prepended with the string "Token ".
For example: Authorization: Token 401f7ac837da42b97f613d789819ff93537bee6a
"""
@@ -75,11 +76,13 @@ class JWTAuthentication(object):
Create token for reset password flow.
"""
encryptor = URLSafeTimedSerializer(api_settings.JWT_SECRET_KEY)
- return encryptor.dumps(user_data.email, salt=api_settings.JWT_SECRET_KEY)
+ return encryptor.dumps(user_data.email,
+ salt=api_settings.JWT_SECRET_KEY)
def decode_reset_password_token(self, token):
"""
- Decoded the token created at reset password flow and return what was encrypted.
+ Decoded the token created at reset password flow and
+ return what was encrypted.
"""
decryptor = URLSafeTimedSerializer(api_settings.JWT_SECRET_KEY)
email = decryptor.loads(
diff --git a/django/engagementmanager/utils/choice_enum.py b/django/engagementmanager/utils/choice_enum.py
index ef19de2..84fbd18 100644
--- a/django/engagementmanager/utils/choice_enum.py
+++ b/django/engagementmanager/utils/choice_enum.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -44,13 +44,15 @@ class ChoiceEnum(Enum):
@classmethod
def choices(cls):
- """Return this Enum's values in a format suitable for use as Django Field.choices param.
+ """Return this Enum's values in a format suitable for use as Django Field.
+ choices param.
https://docs.python.org/3/library/enum.html
https://docs.djangoproject.com/en/1.10/ref/models/fields/#choices
"""
- # FIXME it might be more useful in some situations to return (x.value, x.name), but we do
- # this way is for compatibility with older versions of this code. Changing would require a
- # data migration.`
+ # FIXME it might be more useful in some situations to
+ # return (x.value, x.name), but we do
+ # this way is for compatibility with older versions of this code.
+ # Changing would require a data migration.`
return [(x.name, x.name) for x in cls]
diff --git a/django/engagementmanager/utils/constants.py b/django/engagementmanager/utils/constants.py
index 70fab7b..0e1c5b9 100644
--- a/django/engagementmanager/utils/constants.py
+++ b/django/engagementmanager/utils/constants.py
@@ -54,27 +54,31 @@ class Constants(object):
role_standard_user = None
role_admin = None
role_admin_ro = None
- service_provider_company_name = "ServiceProvider"
- service_provider_mail_domain = ["example-domain.com"]
- service_provider_admin_mail = "admin@example-domain.com"
- service_provider_admin_ro_mail = "admin_ro@example-domain.com"
- ice_base_ctx = "/vvp/v1/engmgr/"
- rgwa_base_url ='http://localhost:8123/admin'
+ service_provider_company_name = settings.SERVICE_PROVIDER
+ service_provider_mail_domain = [settings.SERVICE_PROVIDER_DOMAIN]
+ service_provider_admin_mail = "admin@" + settings.SERVICE_PROVIDER_DOMAIN
+ service_provider_admin_ro_mail = "admin_ro@" + \
+ settings.SERVICE_PROVIDER_DOMAIN
+ ice_base_ctx = "/{prefix}/v1/engmgr/"\
+ .format(prefix=settings.PROGRAM_NAME_URL_PREFIX)
+ rgwa_base_url = 'http://localhost:8123/admin'
default_vfc_version = "1.0.0"
- dbConnectionStr = "dbname='icedb' user='iceuser' host='localhost' password='Aa123456' port='5433'"
+ dbConnectionStr = "dbname='icedb' user='iceuser' host='localhost' " +\
+ "password='Aa123456' port='5433'"
dashboard_href = "<A href=" + \
str(settings.DOMAIN) + "/#/dashboard/" + ">Dashboard</A>"
- prodDomain = 'https://www.vvp.example-domain.com'
+ prodDomain = 'https://' + settings.SERVICE_PROVIDER_DOMAIN
invite_template_dir = "emails/invite/"
activate_template_dir = "emails/activate/"
notification_template_dir = "emails/notification/"
reset_pwd_template_dir = "emails/reset_pwd/"
activation_prefix = "/#/activate/"
- program_name = "VVP"
+ program_name = settings.PROGRAM_NAME
class TemplatesConstants(object):
- logo_url = "https://www.d2ice.att.io/styles/images/d2sandbox_logos-150x30.png"
+ logo_url = \
+ "https://www.d2ice.att.io/styles/images/d2sandbox_logos-150x30.png"
contact_mail = "d2ice@att.com"
context = {"service_provider": Constants.service_provider_company_name,
"program_name": Constants.program_name,
@@ -86,6 +90,8 @@ class TemplatesConstants(object):
'''
In order to get Enum Value as String use: EngagementType.Validation.name
'''
+
+
class EngagementModelValidationDate:
HEAT_VALIDATED = "heat_validated_time"
IMAGE_SCAN = "image_scan_time"
@@ -99,10 +105,12 @@ class JenkinsBuildParametersNames:
class MockJenkinsBuildLog:
- TEXT = "from server: Started by user admin \n \
- Building in workspace /var/jenkins_home/workspace/{vf_name}_{eng_man_id} \n \
- [{vf_name}_{eng_man_id}] $ /bin/sh /tmp/jenkins{random_id}.sh \n \
- Cloning into '/var/jenkins_home/workspace/{vf_name}_{eng_man_id}/VF'"
+ TEXT = \
+ "from server: Started by user admin \n \
+ Building in workspace \
+ /var/jenkins_home/workspace/{vf_name}_{eng_man_id} \n \
+ [{vf_name}_{eng_man_id}] $ /bin/sh /tmp/jenkins{random_id}.sh \n \
+ Cloning into '/var/jenkins_home/workspace/{vf_name}_{eng_man_id}/VF'"
class ChecklistDefaultNames:
diff --git a/django/engagementmanager/utils/cryptography.py b/django/engagementmanager/utils/cryptography.py
index 723efa0..b3ef5ca 100644
--- a/django/engagementmanager/utils/cryptography.py
+++ b/django/engagementmanager/utils/cryptography.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/engagementmanager/utils/dates.py b/django/engagementmanager/utils/dates.py
index db1d8fe..780482b 100644
--- a/django/engagementmanager/utils/dates.py
+++ b/django/engagementmanager/utils/dates.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/engagementmanager/utils/exception_handler.py b/django/engagementmanager/utils/exception_handler.py
index b1b46ee..732e2c4 100644
--- a/django/engagementmanager/utils/exception_handler.py
+++ b/django/engagementmanager/utils/exception_handler.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -39,7 +39,8 @@
import traceback
from rest_framework.response import Response
from rest_framework.views import exception_handler
-from engagementmanager.utils.exception_message_factory import ExceptionMessageFactory
+from engagementmanager.utils.exception_message_factory import \
+ ExceptionMessageFactory
from engagementmanager.service.logging_service import LoggingServiceFactory
logger = LoggingServiceFactory.get_logger()
@@ -47,7 +48,8 @@ logger = LoggingServiceFactory.get_logger()
def ice_exception_handler(exc, context):
"""
- our own exception handler so we will catch every exception occurred in rest and print it's stack into log
+ our own exception handler so we will catch every exception \
+ occurred in rest and print it's stack into log
:param exc: The exception
:param context: The context which the exception occurred in.
"""
@@ -60,14 +62,17 @@ def ice_exception_handler(exc, context):
if exception_msg_obj['include_exception']:
data['detail'] += str(exc)
- if 'include_additional_exc_str' in exception_msg_obj and exception_msg_obj['include_additional_exc_str']:
+ if 'include_additional_exc_str' in exception_msg_obj and \
+ exception_msg_obj['include_additional_exc_str']:
data['exception_message'] = str(exc)
response = Response(data, status=exception_msg_obj['status'])
logger.error("General exception occurred in rest framework: %s", exc)
- logger.debug("*******************************************************************************************")
+ logger.debug(
+ "***************************************************************")
logger.debug(traceback.format_exc())
- logger.debug("*******************************************************************************************")
+ logger.debug(
+ "***************************************************************")
return response
diff --git a/django/engagementmanager/utils/exception_message_factory.py b/django/engagementmanager/utils/exception_message_factory.py
index 6ea96f4..7904e02 100644
--- a/django/engagementmanager/utils/exception_message_factory.py
+++ b/django/engagementmanager/utils/exception_message_factory.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -49,36 +49,70 @@ from rest_framework.exceptions import MethodNotAllowed, NotAuthenticated, \
class ExceptionMessageFactory:
messages_dictionary = {
- ObjectDoesNotExist.__name__: {'msg': 'User or Password does not match', 'include_exception': False,
- 'status': status.HTTP_404_NOT_FOUND},
- MethodNotAllowed.__name__: {'msg': 'Method not allowed: ', 'include_exception': True,
- 'status': status.HTTP_405_METHOD_NOT_ALLOWED},
- NotAuthenticated.__name__: {'msg': 'You must authenticate in order to perform this action: ',
- 'include_exception': True, 'status': status.HTTP_403_FORBIDDEN},
- SignatureExpired.__name__: {'msg': 'Signature expired for this token: ', 'include_exception': True,
- 'status': status.HTTP_405_METHOD_NOT_ALLOWED},
- KeyError.__name__: {'msg': 'KeyError occurred over the backend.', 'include_exception': True,
- 'include_additional_exc_str': True, 'status': status.HTTP_400_BAD_REQUEST},
- ValueError.__name__: {'msg': 'ValueError occurred over the backend: ', 'include_exception': True,
- 'status': status.HTTP_500_INTERNAL_SERVER_ERROR},
- ConnectionError.__name__: {'msg': 'ConnectionError occurred over the backend: ', 'include_exception': True,
- 'status': status.HTTP_500_INTERNAL_SERVER_ERROR},
- ImportError.__name__: {'msg': 'ImportError occurred over the backend: ', 'include_exception': True,
- 'status': status.HTTP_500_INTERNAL_SERVER_ERROR},
- CommandError.__name__: {'msg': 'CommandError occurred over the backend: ', 'include_exception': True,
- 'status': status.HTTP_500_INTERNAL_SERVER_ERROR},
- PermissionDenied.__name__: {'msg': 'PermissionDenied occurred over the backend: ', 'include_exception': True,
- 'status': status.HTTP_401_UNAUTHORIZED},
- VvpObjectNotAvailable.__name__: {'msg': '', 'include_exception': True, 'status': status.HTTP_410_GONE},
- NotAcceptable.__name__: {'msg': '', 'include_exception': True, 'status': status.HTTP_403_FORBIDDEN},
- VvpGeneralException.__name__: {'msg': '', 'include_exception': True,
- 'status': status.HTTP_500_INTERNAL_SERVER_ERROR},
- FileExistsError.__name__: {'msg': 'Not modified due to: ', 'include_exception': True,
- 'status': status.HTTP_304_NOT_MODIFIED},
- VvpBadRequest.__name__: {'msg': '', 'include_exception': True, 'status': status.HTTP_400_BAD_REQUEST},
- VvpConflict.__name__: {'msg': '', 'include_exception': True, 'status': status.HTTP_409_CONFLICT},
- Exception.__name__: {'msg': 'General error on backend: ', 'include_exception': True,
- 'status': status.HTTP_500_INTERNAL_SERVER_ERROR},
+ ObjectDoesNotExist.__name__: {
+ 'msg': 'User or Password does not match',
+ 'include_exception': False,
+ 'status': status.HTTP_404_NOT_FOUND},
+ MethodNotAllowed.__name__: {
+ 'msg': 'Method not allowed: ',
+ 'include_exception': True,
+ 'status':
+ status.HTTP_405_METHOD_NOT_ALLOWED},
+ NotAuthenticated.__name__: {
+ 'msg': 'You must authenticate in order to perform this action: ',
+ 'include_exception': True, 'status': status.HTTP_403_FORBIDDEN},
+ SignatureExpired.__name__: {
+ 'msg': 'Signature expired for this token: ',
+ 'include_exception': True,
+ 'status':
+ status.HTTP_405_METHOD_NOT_ALLOWED},
+ KeyError.__name__: {
+ 'msg': 'KeyError occurred over the backend.',
+ 'include_exception': True,
+ 'include_additional_exc_str': True, 'status':
+ status.HTTP_400_BAD_REQUEST},
+ ValueError.__name__: {
+ 'msg': 'ValueError occurred over the backend: ',
+ 'include_exception': True,
+ 'status': status.HTTP_500_INTERNAL_SERVER_ERROR},
+ ConnectionError.__name__: {
+ 'msg': 'ConnectionError occurred over the backend: ',
+ 'include_exception': True,
+ 'status': status.HTTP_500_INTERNAL_SERVER_ERROR},
+ ImportError.__name__: {
+ 'msg': 'ImportError occurred over the backend: ',
+ 'include_exception': True,
+ 'status': status.HTTP_500_INTERNAL_SERVER_ERROR},
+ CommandError.__name__: {
+ 'msg': 'CommandError occurred over the backend: ',
+ 'include_exception': True,
+ 'status': status.HTTP_500_INTERNAL_SERVER_ERROR},
+ PermissionDenied.__name__: {
+ 'msg': 'PermissionDenied occurred over the backend: ',
+ 'include_exception': True,
+ 'status': status.HTTP_401_UNAUTHORIZED},
+ VvpObjectNotAvailable.__name__: {
+ 'msg': '', 'include_exception': True,
+ 'status': status.HTTP_410_GONE},
+ NotAcceptable.__name__: {
+ 'msg': '', 'include_exception': True,
+ 'status': status.HTTP_403_FORBIDDEN},
+ VvpGeneralException.__name__: {
+ 'msg': '', 'include_exception': True,
+ 'status': status.HTTP_500_INTERNAL_SERVER_ERROR},
+ FileExistsError.__name__: {
+ 'msg': 'Not modified due to: ', 'include_exception': True,
+ 'status': status.HTTP_304_NOT_MODIFIED},
+ VvpBadRequest.__name__: {
+ 'msg': '', 'include_exception': True,
+ 'status': status.HTTP_400_BAD_REQUEST},
+ VvpConflict.__name__: {
+ 'msg': '', 'include_exception': True,
+ 'status': status.HTTP_409_CONFLICT},
+ Exception.__name__: {
+ 'msg': 'General error on backend: ',
+ 'include_exception': True,
+ 'status': status.HTTP_500_INTERNAL_SERVER_ERROR},
}
def get_exception_message(self, exception):
diff --git a/django/engagementmanager/utils/request_data_mgr.py b/django/engagementmanager/utils/request_data_mgr.py
index 46557b4..e0114cc 100644
--- a/django/engagementmanager/utils/request_data_mgr.py
+++ b/django/engagementmanager/utils/request_data_mgr.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -117,7 +117,8 @@ class RequsetDataMgr:
}
'''
- Called from the verify_token decorator which is a central place that populates the user and all other attributes in RequestData object
+ Called from the verify_token decorator which is a central place \
+ that populates the user and all other attributes in RequestData object
'''
def clear_old_request_data(self):
diff --git a/django/engagementmanager/utils/validator.py b/django/engagementmanager/utils/validator.py
index cef67f6..0fdfb4c 100644
--- a/django/engagementmanager/utils/validator.py
+++ b/django/engagementmanager/utils/validator.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -84,7 +84,7 @@ def logEncoding(data):
try:
clean_data = bleach.clean(str(data))
clean_data += " (User Input)"
- except Exception as e:
+ except Exception:
clean_data = "couldnt bleach data"
pass
return clean_data
diff --git a/django/engagementmanager/utils/vvp_exceptions.py b/django/engagementmanager/utils/vvp_exceptions.py
index 2cc9cee..1b47f90 100644
--- a/django/engagementmanager/utils/vvp_exceptions.py
+++ b/django/engagementmanager/utils/vvp_exceptions.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/engagementmanager/views_helper.py b/django/engagementmanager/views_helper.py
index 418290b..fc0a721 100644
--- a/django/engagementmanager/views_helper.py
+++ b/django/engagementmanager/views_helper.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -92,7 +92,7 @@ def createEngagement(user, manual_el_id=False):
if user.role != elRole:
if not manual_el_id:
# Fetch a random EL
- qs = IceUserProfile.objects.all().filter(role=elRole) # @UndefinedVariable
+ qs = IceUserProfile.objects.all().filter(role=elRole)
if qs.count() > 0:
randUser = qs[random.randint(0, qs.count() - 1)]
elUser = IceUserProfile.objects.get(uuid=randUser.uuid)
@@ -110,7 +110,7 @@ def createEngagement(user, manual_el_id=False):
# Fetch another random el to be a Peer Reviewer
qs = IceUserProfile.objects.all().filter(
- role=elRole, user__is_active=True).exclude(uuid=elUser.uuid) # @UndefinedVariable
+ role=elRole, user__is_active=True).exclude(uuid=elUser.uuid)
prUser = None
if qs.count() > 0:
randUser = qs[random.randint(0, qs.count() - 1)]
@@ -125,7 +125,8 @@ def createEngagement(user, manual_el_id=False):
def is_str_supports_git_naming_convention(item):
"""
- validates that string can contain only letters, digits hyphen and dot. Also, String cannot end with dot
+ validates that string can contain only letters, digits hyphen and dot.
+ Also, String cannot end with dot
"""
return bool(re.compile("^[a-zA-Z0-9-]*$").match(item))
@@ -144,11 +145,12 @@ def createVF(user, request):
logger.debug("Processing VF - " + str(data))
if ('virtual_function' not in data or not data['virtual_function'] or
- 'version' not in data or not data['version'] or
- 'target_lab_entry_date' not in data or not data['target_lab_entry_date'] or
- 'target_aic_uuid' not in data or not data['target_aic_uuid'] or
- 'ecomp_release' not in data or not data['ecomp_release'] or
- 'is_service_provider_internal' not in data):
+ 'version' not in data or not data['version'] or
+ 'target_lab_entry_date' not in data or not
+ data['target_lab_entry_date'] or
+ 'target_aic_uuid' not in data or not data['target_aic_uuid'] or
+ 'ecomp_release' not in data or not data['ecomp_release'] or
+ 'is_service_provider_internal' not in data):
raise KeyError("One of the input parameters are missing")
# Set el manually, for example when using import from xls el is
@@ -173,7 +175,8 @@ def createVF(user, request):
i_vfName = data['virtual_function']
if not is_str_supports_git_naming_convention(i_vfName):
- msg = "VF Name can contain only letters, digits hyphen and dot. VF Name cannot end with dot"
+ msg = "VF Name can contain only letters, digits hyphen and dot.\
+ VF Name cannot end with dot"
logger.error(msg)
raise ValueError(msg)
i_vfVersion = data['version']
@@ -193,7 +196,7 @@ def createVF(user, request):
vfObj, was_created = addEntityIfNotExist(VF, vf)
insert_to_recent_engagements(
- user, RecentEngagementActionType.NEW_VF_CREATED.name, vfObj) # @UndefinedVariable
+ user, RecentEngagementActionType.NEW_VF_CREATED.name, vfObj)
addUsersToEngTeam(engObj.uuid, [user, elUser, prUser])
sendSlackNotifications(engObj.uuid, [user, elUser, prUser])
@@ -208,7 +211,8 @@ def createVF(user, request):
def updateValidationDetails(request):
- # if data['target_aic_uuid'] is not None and data['target_aic_uuid'] != "":
+ # if data['target_aic_uuid'] is not None and data['target_aic_uuid'] !=
+ # "":
data = request.data
logger.debug("Processing VF_Details - " + str(data))
vf = VF.objects.get(uuid=data['vf_uuid'])
@@ -226,15 +230,16 @@ def updateValidationDetails(request):
def checkAndModifyIfSSHNextStepExist(user):
SSHStep = None
qs = NextStep.objects.filter(
- owner=user, next_step_type=NextStepType.set_ssh.name) # @UndefinedVariable
+ owner=user, next_step_type=NextStepType.set_ssh.name)
if qs is None or qs.count() == 0:
return None
else:
SSHStep = NextStep.objects.get(
- owner=user, next_step_type=NextStepType.set_ssh.name) # @UndefinedVariable
+ owner=user, next_step_type=NextStepType.set_ssh.name)
# @UndefinedVariable
- if SSHStep.state in (NextStepState.Incomplete.name) and user.ssh_public_key:
+ if SSHStep.state in (
+ NextStepState.Incomplete.name) and user.ssh_public_key:
SSHStep.state = 'Completed'
SSHStep.last_update_time = timezone.now()
SSHStep.last_update_type = 'Completed'
@@ -245,7 +250,8 @@ def checkAndModifyIfSSHNextStepExist(user):
def addUsersToEngTeam(eng_uuid, newUserList):
"""
- If the user isn't an EL and their doesn't have an SSH step then create personal SSH next step for him.
+ If the user isn't an EL and their doesn't have an SSH step then,
+ create personal SSH next step for him.
"""
engObj = Engagement.objects.get(uuid=eng_uuid)
vfObj = engObj.vf
@@ -255,7 +261,8 @@ def addUsersToEngTeam(eng_uuid, newUserList):
for newUser in newUserList:
engObj.engagement_team.add(newUser)
update_or_insert_to_recent_engagements(
- newUser.uuid, vfObj, RecentEngagementActionType.JOINED_TO_ENGAGEMENT.name) # @UndefinedVariable
+ newUser.uuid, vfObj,
+ RecentEngagementActionType.JOINED_TO_ENGAGEMENT.name)
SSHStep = checkAndModifyIfSSHNextStepExist(newUser)
if not SSHStep and newUser != el_user:
NextStepSvc().create_default_next_steps_for_user(newUser, el_user)
@@ -267,7 +274,8 @@ def addUsersToEngTeam(eng_uuid, newUserList):
def sendSlackNotifications(eng_uuid, newUserList):
"""
- Send Slack notifications to the reviewer, peer reviewer and also the engagements channel
+ Send Slack notifications to the reviewer,
+ peer reviewer and also the engagements channel
"""
# get the engagement
engagement = Engagement.objects.get(uuid=eng_uuid)
@@ -301,24 +309,27 @@ def sendSlackNotifications(eng_uuid, newUserList):
engagement_manual_id, vf_name, reviewer, peer_reviewer, creator)
-def getVfByEngUuid(engUuid):
+def getVfByEngUuid(engUuid):
vfList = VF.objects.filter(engagement__uuid=engUuid)
if vfList:
logger.debug("Found VF name=" + vfList[0].name)
if len(vfList) > 1:
logger.warning(
- "!! There seems to be more than one VF attached to the engagement with uuid=" + logEncoding(engUuid))
+ "!! There seems to be more than one VF attached to the\
+ engagement with uuid=" + logEncoding(engUuid))
# Assumption: the list only has one item because the relation
# Engagement-VF is 1:1 business wise
return vfList[0]
else:
logger.error(
- "There are no VFs in the engagement identified by eng_uuid=" + logEncoding(engUuid))
+ "There are no VFs in the engagement identified\
+ by eng_uuid=" + logEncoding(engUuid))
return None
def generateActivationLink(activationToken, user):
- return str(settings.DOMAIN) + Constants.activation_prefix + str(user.uuid) + "/" + activationToken
+ return str(settings.DOMAIN) + Constants.activation_prefix + \
+ str(user.uuid) + "/" + activationToken
def getFirstEngByUser(user):
@@ -331,7 +342,9 @@ def getFirstEngByUser(user):
return None
-def createUserTemplate(company, full_name, role, phone, is_service_provider_contact, ssh_key=None, regular_email_updates=False, user=None):
+def createUserTemplate(company, full_name, role, phone,
+ is_service_provider_contact,
+ ssh_key=None, regular_email_updates=False, user=None):
data = {
'company': company,
'phone_number': phone,
diff --git a/django/engagementmanager/vm_integration/__init__.py b/django/engagementmanager/vm_integration/__init__.py
index 1726c13..16f81cb 100644
--- a/django/engagementmanager/vm_integration/__init__.py
+++ b/django/engagementmanager/vm_integration/__init__.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/engagementmanager/vm_integration/em_api.py b/django/engagementmanager/vm_integration/em_api.py
index b41a3ff..2fe7d43 100644
--- a/django/engagementmanager/vm_integration/em_api.py
+++ b/django/engagementmanager/vm_integration/em_api.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -43,23 +43,29 @@ from engagementmanager.models import Checklist, VF
from engagementmanager.service.checklist_service import CheckListSvc
from engagementmanager.service.checklist_state_service import set_state
from engagementmanager.utils import dict_path_get
-from engagementmanager.utils.constants import CheckListCategory, CheckListState, EngagementStage
+from engagementmanager.utils.constants import CheckListCategory, \
+ CheckListState
from engagementmanager.utils.request_data_mgr import request_data_mgr
from engagementmanager.service.logging_service import LoggingServiceFactory
logger = LoggingServiceFactory.get_logger()
+file_name = "em_api.py"
+
def test_finished_callback(checklist_test_results):
logger.debug(
- "test_finished_callback has signaled that a test has finished with test results %r", checklist_test_results)
+ "test_finished_callback has signaled that a test \
+ has finished with test results %r", checklist_test_results)
if not checklist_test_results:
- msg = "Couldn't find payload argument inside kwargs array, aborting signal"
+ msg = "Couldn't find payload argument inside kwargs array, aborting \
+ signal"
logger.error(msg)
raise KeyError(msg)
- checklist_test_results['description'] = "Validation manager has indicated that checklist {} tests has been completed with results".format(
+ checklist_test_results['description'] = "Validation manager has indicated\
+ that checklist {} tests has been completed with results".format(
checklist_test_results['checklist_uuid'])
checklist = Checklist.objects.get(
@@ -76,17 +82,20 @@ def test_finished_callback(checklist_test_results):
def git_push_callback(gitlab_data):
"""
- When we are notified that a repo has received a push, we must reject any checklists not in the
+ When we are notified that a repo has received a push, we must reject any \
+ checklists not in the
closed or archived state whose associated files have been modified.
"""
- logger.debug("Validation manager has signaled that a git push has occurred")
+ logger.debug(
+ "Validation manager has signaled that a git push has occurred")
msg = "OK"
data = None
# sanity check provided arguments
for key in ['project', 'project/git_ssh_url', 'commits']:
if not dict_path_get(gitlab_data, key):
- msg = "{!r} in the git_push signal gitlab_data is missing or empty.".format(
+ msg = "{!r} in the git_push signal gitlab_data is missing or \
+ empty.".format(
key)
logger.error(msg)
raise KeyError(msg)
@@ -101,7 +110,9 @@ def git_push_callback(gitlab_data):
if int(gitlab_data['total_commits_count']) == 0:
logger.debug("total_commits_count = %s",
gitlab_data['total_commits_count'])
- msg = "Something is wrong: Number of commits is 0 even after a push event has been invoked from validation manager to engagement manager"
+ msg = "Something is wrong: Number of commits is 0 even after a \
+ push event has been invoked from validation manager \
+ to engagement manager"
logger.warn(msg)
raise ValueError(msg)
@@ -123,7 +134,7 @@ def git_push_callback(gitlab_data):
.filter(engagement=vf.engagement)
# @UndefinedVariable
.exclude(state=CheckListState.archive.name)
- .exclude(state=CheckListState.closed.name)) # @UndefinedVariable
+ .exclude(state=CheckListState.closed.name))
committed_files = set(file
for commit in gitlab_data['commits']
@@ -139,7 +150,8 @@ def git_push_callback(gitlab_data):
peer_reviewer = vf.engagement.peer_reviewer
slack_client = SlackClient()
slack_client.send_notifications_on_git_push(
- engagement_manual_id, vf_name, reviewer, peer_reviewer, committed_files)
+ engagement_manual_id, vf_name, reviewer, peer_reviewer,
+ committed_files)
# loop through the checklists and start automation if necessary
for checklist in checklists:
@@ -156,32 +168,42 @@ def git_push_callback(gitlab_data):
for extension in ['.yaml', '.yml', '.env']
if file.lower().endswith(extension)):
continue
- if checklist.state == CheckListState.pending.name: # @UndefinedVariable
- description = "Checklist {checklist.name} (part of VF {vf.name}/{vf.uuid}) in Pending state will transition to Automation due to a push action on files [{mutual_files}]. chosen EL: {user.full_name}".format(
+ if checklist.state == CheckListState.pending.name:
+ description = "Checklist {checklist.name} (part of VF \
+ {vf.name}/{vf.uuid}) in Pending state will transition \
+ to Automation due to a push action on files \
+ [{mutual_files}]. chosen EL: \
+ {user.full_name}".format(
checklist=checklist,
vf=vf,
mutual_files=", ".join(mutual_files),
user=user,
)
else:
- description = "Checklist {checklist.uuid} (part of VF {vf.name}/{vf.uuid}) has been rejected due to a push action made on files [{mutual_files}]. chosen EL is: {user.full_name}".format(
+ description = "Checklist {checklist.uuid} (part of VF \
+ {vf.name}/{vf.uuid}) has been rejected due to a push \
+ action made on files [{mutual_files}]. chosen EL is: \
+ {user.full_name}".format(
checklist=checklist,
vf=vf,
mutual_files=", ".join(mutual_files),
user=user,
)
logger.debug(description)
- # FIXME Setting parameters into a global before calling a function that will break without
+ # FIXME Setting parameters into a global before
+ # calling a function that will break without
# them is TERRIBLE. We must fix this before we open-source this code.
request_data_mgr.set_cl_uuid(checklist.uuid)
request_data_mgr.set_user(user)
- data = set_state( # means that the checklist will be declined and a cloned one is
+ data = set_state( # means that the checklist will
+ # be declined and a cloned one is
# created in PENDING status
decline=True,
checklist_uuid=checklist.uuid,
# means the checklist will be triggered into automation cycle
isMoveToAutomation=True,
- description="This change was triggered by an update to the engagement git repository.")
+ description="This change was triggered by an update \
+ to the engagement git repository.")
logger.debug("set_state returned (%r)" % data)
diff --git a/django/engagementmanager/vm_integration/vm_client.py b/django/engagementmanager/vm_integration/vm_client.py
index 04d77c5..0e42b8a 100644
--- a/django/engagementmanager/vm_integration/vm_client.py
+++ b/django/engagementmanager/vm_integration/vm_client.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -56,7 +56,8 @@ executor = concurrent.futures.ThreadPoolExecutor(max_workers=4)
def send_jenkins_job_and_gitlab_repo_exists(vf):
# A signal which check if jenkins job was created and also if gitlab repo
logger.debug(
- "Sending a call to validation manager. Call=jenkins_job_and_gitlab_repo_exists_callback. vf=%s", vf.uuid)
+ "Sending a call to validation manager." +
+ "Call=jenkins_job_and_gitlab_repo_exists_callback. vf=%s", vf.uuid)
is_ready = vm_api.jenkins_job_and_gitlab_repo_exists_callback(vf=vf)
return is_ready
@@ -67,28 +68,36 @@ def send_cl_from_pending_to_automation_event(checkListObj):
# validation manager)
vf = VF.objects.get(engagement=checkListObj.engagement)
logger.debug(
- "Sending a call to validation manager. Call=send_cl_from_pending_to_automation_event. checklistUuid=%s", checkListObj.uuid)
- vm_api.cl_from_pending_to_automation_callback(vf=vf, checklist=checkListObj)
+ "Sending a call to validation manager." +
+ "Call=send_cl_from_pending_to_automation_event." +
+ "checklistUuid=%s", checkListObj.uuid)
+ vm_api.cl_from_pending_to_automation_callback(
+ vf=vf, checklist=checkListObj)
def send_ssh_key_created_or_updated_event(user):
# A signal which is sent from the EM to the VM when a user is adding or
# updating their ssh key
logger.debug(
- "Sending a call to validation manager. Call=send_ssh_key_created_or_updated_event. user=%s", user.uuid)
+ "Sending a call to validation manager. " +
+ "Call=send_ssh_key_created_or_updated_event. user=%s", user.uuid)
vm_api.ssh_key_created_or_updated_callback(user=user)
-
+
+
def send_create_user_in_rgwa_event(user):
# A signal which is sent from the EM to the VM when a user is adding or
# updating their ssh key
logger.debug(
- "Sending a call to validation manager. Call=send_create_user_in_rgwa_event. user=%s", user.full_name)
+ "Sending a call to validation manager. " +
+ "Call=send_create_user_in_rgwa_event. user=%s", user.full_name)
vm_api.create_user_rgwa(user=user)
-def send_remove_all_standard_users_from_project_event(gitlab, project_id, formatted_vf):
+def send_remove_all_standard_users_from_project_event(
+ gitlab, project_id, formatted_vf):
logger.debug(
- "Sending a call to validation manager. Call=send_remove_all_standard_users_from_project_event.")
+ "Sending a call to validation manager." +
+ "Call=send_remove_all_standard_users_from_project_event.")
vm_api.remove_all_standard_users_from_project(
gitlab, project_id, formatted_vf)
@@ -97,21 +106,25 @@ def send_get_project_by_vf_event(vf, gitlab):
if not settings.IS_SIGNAL_ENABLED:
return None
logger.debug(
- "Sending a call to validation manager. Call=send_get_project_by_vf_event.")
+ "Sending a call to validation manager." +
+ "Call=send_get_project_by_vf_event.")
vm_api.get_project_by_vf(vf, gitlab)
def send_provision_new_vf_event(vf):
- # A signal which is sent from the EM to the VM when a new VF is created. VM will than create a
+ # A signal which is sent from the EM to the
+ # VM when a new VF is created. VM will than create a
# gitlab repo for that new VF.
#
- # Note: despite its name, this signal is not used only for new vfs, but to update existing gitlab
+ # Note: despite its name, this signal is not
+ # used only for new vfs, but to update existing gitlab
# and jenkins provisioning when a vf changes e.g. when team members are
# added or removed.
try:
- vm_api.provision_new_vf_callback(vf=vf)
+ vm_api.provision_new_vf_callback(vf=vf)
logger.debug(
- "Sending a call to validation manager. Call=send_provision_new_vf_event. vf=%s", vf.uuid)
+ "Sending a call to validation manager. " +
+ "Call=send_provision_new_vf_event. vf=%s", vf.uuid)
except Exception as e:
el_role = Role.objects.get(name=Roles.el.name) # @UndefinedVariable
admin_role = Role.objects.get(
@@ -121,14 +134,15 @@ def send_provision_new_vf_event(vf):
activity_data = VFProvisioningActivityData(
vf, el_admin_list, vf.engagement, e)
bus_service.send_message(ActivityEventMessage(activity_data))
-
+
def send_get_list_of_repo_files_event(vf):
# A signal which is sent from the EM to the VM when a NextStep is created
# and we need the VF associated files in the git repository
files = vm_api.get_list_of_repo_files_callback(vf=vf)
logger.debug(
- "Sending a call to validation manager. Call=send_get_list_of_repo_files_event. vf=%s", vf.uuid)
+ "Sending a call to validation manager. " +
+ "Call=send_get_list_of_repo_files_event. vf=%s", vf.uuid)
formatted_repo_files = []
@@ -142,11 +156,12 @@ def send_get_list_of_repo_files_event(vf):
'''''''''''''''''''''''''''
UTIL FUNCTIONS FOR SIGNALS
'''''''''''''''''''''''''''
-
+
def fire_event_in_bg(function_name, obj):
event_function = globals()[function_name]
logger.debug(
- " . . . . . . . . . . . . Fire event in background started: %s . . . . . . . . . . . . ", function_name)
- future = executor.submit(event_function, obj)
+ " . . . . . . . . . . . . Fire event in background started: %s " +
+ ". . . . . . . . . . . . ", function_name)
+ executor.submit(event_function, obj)
logger.debug("Main thread continue without blocking...")
diff --git a/django/manage.py b/django/manage.py
index 43646a6..202801a 100644
--- a/django/manage.py
+++ b/django/manage.py
@@ -1,5 +1,5 @@
#!/usr/bin/env python
-#
+#
# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
diff --git a/django/mocks/__init__.py b/django/mocks/__init__.py
index 1726c13..16f81cb 100644
--- a/django/mocks/__init__.py
+++ b/django/mocks/__init__.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/mocks/gitlab_mock/__init__.py b/django/mocks/gitlab_mock/__init__.py
index 1726c13..16f81cb 100644
--- a/django/mocks/gitlab_mock/__init__.py
+++ b/django/mocks/gitlab_mock/__init__.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/mocks/gitlab_mock/rest/__init__.py b/django/mocks/gitlab_mock/rest/__init__.py
index 1726c13..16f81cb 100644
--- a/django/mocks/gitlab_mock/rest/__init__.py
+++ b/django/mocks/gitlab_mock/rest/__init__.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/mocks/gitlab_mock/rest/gitlab_files_respons_rest.py b/django/mocks/gitlab_mock/rest/gitlab_files_respons_rest.py
index e7456f2..dbddff7 100644
--- a/django/mocks/gitlab_mock/rest/gitlab_files_respons_rest.py
+++ b/django/mocks/gitlab_mock/rest/gitlab_files_respons_rest.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -36,12 +36,14 @@
# ============LICENSE_END============================================
#
# ECOMP is a trademark and service mark of AT&T Intellectual Property.
-from mocks.gitlab_mock.services.gitlab_files_service import GitlabFilesResultsSvc
+from mocks.gitlab_mock.services.gitlab_files_service import \
+ GitlabFilesResultsSvc
class GitlabFilesResultsREST():
def get(self, vf):
mock_gitlab_files_results_svc_obj = GitlabFilesResultsSvc()
- response = mock_gitlab_files_results_svc_obj.retrieve_files_for_vf_repo()
+ response = mock_gitlab_files_results_svc_obj.\
+ retrieve_files_for_vf_repo()
return response
diff --git a/django/mocks/gitlab_mock/services/__init__.py b/django/mocks/gitlab_mock/services/__init__.py
index 1726c13..16f81cb 100644
--- a/django/mocks/gitlab_mock/services/__init__.py
+++ b/django/mocks/gitlab_mock/services/__init__.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/mocks/gitlab_mock/services/gitlab_files_service.py b/django/mocks/gitlab_mock/services/gitlab_files_service.py
index 3224f94..8970e13 100644
--- a/django/mocks/gitlab_mock/services/gitlab_files_service.py
+++ b/django/mocks/gitlab_mock/services/gitlab_files_service.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/mocks/jenkins_mock/__init__.py b/django/mocks/jenkins_mock/__init__.py
index 1726c13..16f81cb 100644
--- a/django/mocks/jenkins_mock/__init__.py
+++ b/django/mocks/jenkins_mock/__init__.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/mocks/jenkins_mock/rest/__init__.py b/django/mocks/jenkins_mock/rest/__init__.py
index 1726c13..16f81cb 100644
--- a/django/mocks/jenkins_mock/rest/__init__.py
+++ b/django/mocks/jenkins_mock/rest/__init__.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/mocks/jenkins_mock/rest/jenkins_tests_validation_rest.py b/django/mocks/jenkins_mock/rest/jenkins_tests_validation_rest.py
index df9d0dd..2e05c42 100644
--- a/django/mocks/jenkins_mock/rest/jenkins_tests_validation_rest.py
+++ b/django/mocks/jenkins_mock/rest/jenkins_tests_validation_rest.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -36,7 +36,8 @@
# ============LICENSE_END============================================
#
# ECOMP is a trademark and service mark of AT&T Intellectual Property.
-from mocks.jenkins_mock.services.jenkins_tests_validation_service import JenkinsTestsResultsSvc
+from mocks.jenkins_mock.services.jenkins_tests_validation_service \
+ import JenkinsTestsResultsSvc
from validationmanager.em_integration import em_client
@@ -45,8 +46,9 @@ class JenkinsTestsResultsREST():
mock_tests_results_svc_obj = JenkinsTestsResultsSvc()
def post(self, git_repo_url, checklist_uuid):
- response = self.mock_tests_results_svc_obj.retrieve_tests_results_for_cl(
- checklist_uuid)
+ response = self.mock_tests_results_svc_obj.\
+ retrieve_tests_results_for_cl(
+ checklist_uuid)
em_client.test_finished(response)
def get(self, eng_manual_id, vf_name):
diff --git a/django/mocks/jenkins_mock/services/__init__.py b/django/mocks/jenkins_mock/services/__init__.py
index 1726c13..16f81cb 100644
--- a/django/mocks/jenkins_mock/services/__init__.py
+++ b/django/mocks/jenkins_mock/services/__init__.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/mocks/jenkins_mock/services/jenkins_tests_validation_service.py b/django/mocks/jenkins_mock/services/jenkins_tests_validation_service.py
index beccb53..c9fa91c 100644
--- a/django/mocks/jenkins_mock/services/jenkins_tests_validation_service.py
+++ b/django/mocks/jenkins_mock/services/jenkins_tests_validation_service.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -51,15 +51,17 @@ class JenkinsTestsResultsSvc():
response['checklist_uuid'] = checklist_uuid
checklist = Checklist.objects.get(uuid=checklist_uuid)
line_items = ChecklistLineItem.objects.filter(
- template=checklist.template)[:JenkinsTestsResultsSvc().num_of_auto_tests]
+ template=checklist.template)[
+ :JenkinsTestsResultsSvc().num_of_auto_tests]
optional_results = ['approved', 'denied']
optional_text = ['Mock: All required tests passed',
'Mock: At least one of the required tests failed']
response['decisions'] = list()
for lineitem in line_items:
- #random_result = random.choice(optional_results)
+ # random_result = random.choice(optional_results)
random_result = optional_results[0]
- #audit_log_text = optional_text[0] if random_result == optional_results[0] else optional_text[1]
+ # audit_log_text = optional_text[0] if random_result ==
+ # optional_results[0] else optional_text[1]
audit_log_text = optional_text[0]
response['decisions'].append(
{
diff --git a/django/requirements.txt b/django/requirements.txt
index 643cb90..2205314 100644
--- a/django/requirements.txt
+++ b/django/requirements.txt
@@ -40,6 +40,7 @@ Django==1.10.6
apscheduler
bleach
boto
+celery[redis]
configparser
django-cors-headers
django-storages
diff --git a/django/rgwa_mock/__init__.py b/django/rgwa_mock/__init__.py
index 1726c13..16f81cb 100644
--- a/django/rgwa_mock/__init__.py
+++ b/django/rgwa_mock/__init__.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/rgwa_mock/services/__init__.py b/django/rgwa_mock/services/__init__.py
index 1726c13..16f81cb 100644
--- a/django/rgwa_mock/services/__init__.py
+++ b/django/rgwa_mock/services/__init__.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/rgwa_mock/services/rgwa_keys_service.py b/django/rgwa_mock/services/rgwa_keys_service.py
index 71b08be..b0cf8f7 100644
--- a/django/rgwa_mock/services/rgwa_keys_service.py
+++ b/django/rgwa_mock/services/rgwa_keys_service.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/tools/__init__.py b/django/tools/__init__.py
index 1726c13..16f81cb 100644
--- a/django/tools/__init__.py
+++ b/django/tools/__init__.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/tox.ini b/django/tox.ini
index dd99e5a..647ff38 100644
--- a/django/tox.ini
+++ b/django/tox.ini
@@ -6,7 +6,7 @@ commands = django-admin.py test
setenv =
DJANGO_SETTINGS_MODULE=vvp.settings.tox_settings
PYTHONPATH={toxinidir}
- SECRET_KEY=6mo22&_gtjf#wktqf1#ve^7=w6kx)uq0u*4ksk^aq8lte&)yul
+ SECRET_KEY=aaa049575840-SOME-FAKE-SECRET-KEY-aaa049575840
ENVIRONMENT=development
PROGRAM_NAME_URL_PREFIX=vvp
EMAIL_HOST=localhost
@@ -18,16 +18,16 @@ setenv =
PGPASSWORD=Aa123456
PGHOST=localhost
PGPORT=5433
- SECRET_WEBHOOK_TOKEN=Aiwi8se4ien0foW6eimahch2zahshaGi
- SECRET_GITLAB_AUTH_TOKEN=ieNgathapoo4zohvee9a
- SECRET_JENKINS_PASSWORD=xaiyie0wuoqueuBu
- SECRET_CMS_APP_CLIENT_ID=MHmJo0ccDheVVsIiQHZnY6LXPAC6H6HAMzhCCM16
- SECRET_CMS_APP_CLIENT_SECRET=nI8QCFrKMpnw5nTs
+ SECRET_WEBHOOK_TOKEN=aaa049575840-FAKE-TOKEN-aaa049575840
+ SECRET_GITLAB_AUTH_TOKEN=aaa049-FAKE-SECRET-575840
+ SECRET_JENKINS_PASSWORD=aaa0495-FAKE-PASSWORD-75840
+ SECRET_CMS_APP_CLIENT_ID=aaa049575840-FAKE-CLIENT-ID-aaa049575840
+ SECRET_CMS_APP_CLIENT_SECRET=aaa049-FAKE-SECRET-575840
SLACK_API_TOKEN=
S3_HOST=dev-s3.d2ice.att.io
S3_PORT=443
- AWS_ACCESS_KEY_ID=FD21HBU2KRN3UVD1MWRN
- AWS_SECRET_ACCESS_KEY=TKoiwxziUWG9cTYUknUkFGmmyuQ27nP2lCiutEsD
+ AWS_ACCESS_KEY_ID=aaa049-FAKE-ACCESS-KEY-575840
+ AWS_SECRET_ACCESS_KEY=aaa049575840-SOME-FAKE-SECRET-KEY-aaa049575840
STATIC_ROOT=/app/htdocs
[base]
deps = -r{toxinidir}/requirements.txt
diff --git a/django/validationmanager/__init__.py b/django/validationmanager/__init__.py
index 1726c13..16f81cb 100644
--- a/django/validationmanager/__init__.py
+++ b/django/validationmanager/__init__.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/validationmanager/admin.py b/django/validationmanager/admin.py
index aa2eeab..a0b8a8b 100644
--- a/django/validationmanager/admin.py
+++ b/django/validationmanager/admin.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/validationmanager/apps.py b/django/validationmanager/apps.py
index 8576af0..552f98c 100644
--- a/django/validationmanager/apps.py
+++ b/django/validationmanager/apps.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -39,6 +39,9 @@
# To avoid the server reloading this class twice, run it with --noreload flag
from django.apps import AppConfig
+from engagementmanager.service.logging_service import LoggingServiceFactory
+
+logger = LoggingServiceFactory.get_logger()
class ValidationmanagerConfig(AppConfig):
@@ -48,4 +51,7 @@ class ValidationmanagerConfig(AppConfig):
def ready(self):
# This otherwise unused import causes the signal receivers
# to register themselves at the appropriate time. Do not remove.
+ # We use logger.debug to ignore flake8's warning about unused import.
import validationmanager.em_integration.vm_api
+ logger.debug(
+ validationmanager.em_integration.vm_api.config_xml_content)
diff --git a/django/validationmanager/em_integration/__init__.py b/django/validationmanager/em_integration/__init__.py
index 1726c13..16f81cb 100644
--- a/django/validationmanager/em_integration/__init__.py
+++ b/django/validationmanager/em_integration/__init__.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/validationmanager/em_integration/em_client.py b/django/validationmanager/em_integration/em_client.py
index 5620c0c..5fff71a 100644
--- a/django/validationmanager/em_integration/em_client.py
+++ b/django/validationmanager/em_integration/em_client.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/validationmanager/em_integration/vm_api.py b/django/validationmanager/em_integration/vm_api.py
index 1650fa1..6fb422b 100644
--- a/django/validationmanager/em_integration/vm_api.py
+++ b/django/validationmanager/em_integration/vm_api.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -44,14 +44,17 @@ from django.forms.models import model_to_dict
from django.template.loader import render_to_string
import requests
from engagementmanager.decorator.retry import retry_connection
-from engagementmanager.models import Engagement, IceUserProfile, Role, Checklist, \
- ChecklistDecision, ChecklistLineItem, CheckListState, ChecklistTemplate, VF
+from engagementmanager.models import Engagement, IceUserProfile, \
+ Role, Checklist,\
+ ChecklistDecision, ChecklistLineItem, CheckListState, \
+ ChecklistTemplate, VF
from engagementmanager.serializers import VFModelSerializerForSignal
from engagementmanager.utils.constants import Roles, EngagementStage, \
- CheckListLineType, JenkinsBuildParametersNames, RGWApermission
+ CheckListLineType, JenkinsBuildParametersNames, RGWApermission, CheckListCategory
from engagementmanager.utils.cryptography import CryptographyText
from engagementmanager.utils.validator import logEncoding
-from mocks.gitlab_mock.rest.gitlab_files_respons_rest import GitlabFilesResultsREST
+from mocks.gitlab_mock.rest.gitlab_files_respons_rest import \
+ GitlabFilesResultsREST
from mocks.jenkins_mock.rest.jenkins_tests_validation_rest import \
JenkinsTestsResultsREST
@@ -59,6 +62,7 @@ from rgwa_mock.services.rgwa_keys_service import RGWAKeysService
from validationmanager.rados.rgwa_client_factory import RGWAClientFactory
from validationmanager.utils.clients import get_jenkins_client, \
get_gitlab_client
+from validationmanager.tasks import request_scan
from engagementmanager.service.logging_service import LoggingServiceFactory
logger = LoggingServiceFactory.get_logger()
@@ -101,11 +105,16 @@ def cl_from_pending_to_automation_callback(vf, checklist):
logger.debug(
"Engagement Manager has signaled that a checklist state was " +
"changed from pending to automation")
- get_jenkins_client().build_job(
- vf.jenkins_job_name(), {
- 'checklist_uuid': checklist.uuid,
- 'git_repo_url': vf.git_repo_url,
- })
+ if checklist.template and checklist.template.category == CheckListCategory.glance.name:
+ logger.debug("Triggering image scan")
+ request_scan(vf, checklist)
+ elif checklist.template and checklist.template.category == CheckListCategory.heat.name:
+ logger.debug("Triggering heat template validation")
+ get_jenkins_client().build_job(
+ vf.jenkins_job_name(), {
+ 'checklist_uuid': checklist.uuid,
+ 'git_repo_url': vf.git_repo_url,
+ })
def provision_new_vf_callback(vf):
@@ -134,10 +143,8 @@ def provision_new_vf_callback(vf):
def get_list_of_repo_files_callback(vf):
"""Given a vf, return its file list.
-
This function will either succeed (and return a list),
or throw an exception.
-
"""
logger.debug(
"Engagement Manager has signaled that there is a need " +
@@ -159,10 +166,8 @@ def get_list_of_repo_files_callback(vf):
def ssh_key_created_or_updated_callback(user):
if not settings.IS_SIGNAL_ENABLED:
return None
-
logger.debug("Engagement Manager has signaled that a user has " +
"created or updated an ssh key")
-
user_dict = model_to_dict(user)
gitlab = get_gitlab_client()
gitlab_user = gitlab.get_user_by_email(user.email)
@@ -173,9 +178,7 @@ def ssh_key_created_or_updated_callback(user):
if 'id' not in gitlab_user:
err_msg = "coudln't get gitlab user %s " % user.uuid
raise ValueError(err_msg)
-
update_user_ssh_keys(user_dict, gitlab, gitlab_user)
-
logger.debug(
"Successfuly created/updated user in the git in " +
"key_created_or_updated signal")
@@ -228,7 +231,7 @@ def ensure_checklists(vf):
@retry_connection
def ensure_jenkins_job(vf):
- """Given a vf, ensure that its jenkins/TestEngine job exists.
+ """Given a vf, ensure that its jenkins/TestEngine jobs exist.
This function will either succeed (and return None), or throw an exception.
@@ -241,16 +244,19 @@ def ensure_jenkins_job(vf):
jenkins = get_jenkins_client()
job_name = vf.jenkins_job_name()
- # FIXME test-then-set can cause a race condition, so maybe better
- # to attempt to create and ignore "already exists" error.
- if jenkins.job_exists(job_name):
- logger.debug(
- "TestEngine job %s for VF %s already provisioned, skipping.",
- job_name, vf.name)
- return None
+ for namesuffix, xml in config_xml_content.items():
+ name = job_name + namesuffix
- logger.debug("creating TestEngine job %s for VF %s", job_name, vf.name)
- jenkins.create_job(job_name, config_xml_content)
+ # FIXME test-then-set can cause a race condition, so maybe better
+ # to attempt to create and ignore "already exists" error.
+ if jenkins.job_exists(name):
+ logger.debug(
+ "TestEngine job %s for VF %s already provisioned, skipping.",
+ name, vf.name)
+ continue
+
+ logger.debug("creating TestEngine job %s for VF %s", name, vf.name)
+ jenkins.create_job(name, xml)
@retry_connection
@@ -261,7 +267,8 @@ def get_jenkins_build_log(vf, checklistUuid):
"""
if not settings.IS_SIGNAL_ENABLED:
- return jenkins_mock_object.get(vf.engagement.engagement_manual_id, vf.name)
+ return jenkins_mock_object.get(
+ vf.engagement.engagement_manual_id, vf.name)
logger.debug("Retrieving VF's(%s) last Jenkins build log " % (vf.name))
jenkins = get_jenkins_client()
job_name = vf.jenkins_job_name()
@@ -271,35 +278,43 @@ def get_jenkins_build_log(vf, checklistUuid):
logs = ''
for build in vf_builds['builds']:
for parameter in build['actions'][0]['parameters']:
- if parameter['name'] == JenkinsBuildParametersNames.CHECKLIST_UUID:
+ if parameter['name'] == \
+ JenkinsBuildParametersNames.CHECKLIST_UUID:
if parameter['value'] == checklistUuid:
logger.debug(
- "I have succeeded to match the given checklist uuid to one of the VF's builds' checklist_uuid")
+ "I have succeeded to match the given checklist uuid \
+ to one of the VF's builds' checklist_uuid")
build_num = build['number']
if build_num < 0:
logger.error(
- "Failed to match the given checklist uuid to one of the VF's builds' checklist_uuid")
+ "Failed to match the given checklist uuid to one of the VF's \
+ builds' checklist_uuid")
else:
logs = jenkins.server.get_build_console_output(job_name, build_num)
return logs
def get_jenkins_job_config():
- """Return the XML configuration for a Jenkins/TestEngine build job.
+ """Return the XML configurations for the Jenkins/TestEngine build job and
+ the Jenkins/Imagescanner results processing job.
- The configuration is templated, and the context provided will
- include the appropriate webhook endpoint for its notification
- callbacks. It is not cached; do that from a higher level caller.
+ The configurations are templated, and the context provided will include the
+ appropriate webhook endpoint for its notification callbacks. It is not
+ cached; do that from a higher level caller.
"""
# replacing auth in the view name 'jenkins-notification-endpoint'
# (url.py) and appending it to the url from settings
- webhook_endpoint = "http://%s%s" % (
- settings.API_DOMAIN,
- reverse('jenkins-notification-endpoint',
- kwargs={'auth_token': settings.WEBHOOK_TOKEN}))
- return render_to_string('jenkins_job_config.xml',
- {'notification_endpoint': webhook_endpoint})
+ context = {
+ 'notification_endpoint': "http://%s%s" % (
+ settings.API_DOMAIN,
+ reverse(
+ 'jenkins-notification-endpoint',
+ kwargs={'auth_token': settings.WEBHOOK_TOKEN}))}
+ return {
+ '': render_to_string('jenkins_job_config.xml', context),
+ '_scanner': render_to_string('imagescanner_job_config.xml', context),
+ }
@retry_connection
@@ -633,14 +648,14 @@ def ensure_rgwa_entities(vf):
"""
formated_vf = VFModelSerializerForSignal(vf).data
engagement_stage = formated_vf['engagement']['engagement_stage']
+ bucket_name = vf.engagement.engagement_manual_id + "_" + vf.name.lower()
if engagement_stage == EngagementStage.Active.name:
- bucket_name = vf.engagement.engagement_manual_id+"_"+vf.name.lower()
bucket = get_or_create_bucket(bucket_name)
add_bucket_users(bucket, vf)
elif engagement_stage == EngagementStage.Validated.name or\
engagement_stage == EngagementStage.Completed.name or\
engagement_stage == EngagementStage.Archived.name:
- bucket = get_or_create_bucket(vf.engagement.engagement_manual_id)
+ bucket = get_or_create_bucket(bucket_name)
remove_bucket_users_grants(bucket, vf)
@@ -649,13 +664,18 @@ def create_user_rgwa(user):
logger.debug("Engagement Manager has signaled that a user has " +
"created an rgwa")
rgwa = RGWAClientFactory.admin()
- rgwa_user = rgwa.get_user(user.full_name)
+ rgwa_user = rgwa.get_user(user.uuid)
if rgwa_user is None:
logger.debug(
user.full_name + "User does not exist, a new one is created!")
try:
rgwa_user = rgwa.create_user(
- uid=user.full_name, display_name='User "%s"' % user.full_name)
+ uid=user.uuid,
+ display_name=user.full_name,
+ # admin will create and own the buckets users use. note:
+ # radosgw treats 0 as "unlimited", -1 as "none"
+ max_buckets=-1,
+ )
user = IceUserProfile.objects.get(uuid=user.uuid)
access_key = rgwa_user['keys'][0]['access_key']
secret_key = CryptographyText.encrypt(
@@ -669,20 +689,21 @@ def create_user_rgwa(user):
str(rgwa_user))
except Exception as e:
logger.error(str(e))
- err_msg = "coudln't get rgwa user %s " % user.full_name
+ err_msg = "coudln't get rgwa user %s " % user.uuid
raise ValueError(err_msg)
else:
rgwa_user = RGWAKeysService().mock_create_user(
- uid=user.full_name, display_name='User "%s"' % user.full_name)
+ uid=user.uuid, display_name=user.full_name)
user = IceUserProfile.objects.get(uuid=user.uuid)
user.rgwa_access_key = rgwa_user['access_key']
- user.rgwa_secret_key = CryptographyText.encrypt(rgwa_user['secret_key'])
+ user.rgwa_secret_key = CryptographyText.encrypt(
+ rgwa_user['secret_key'])
user.save()
-def validate_rgwa_user(full_name, uuid):
+def validate_rgwa_user(uuid):
rgwa = RGWAClientFactory.admin()
- rgwa_user = rgwa.get_user(full_name)
+ rgwa_user = rgwa.get_user(uuid)
if rgwa_user is None:
create_user_rgwa(IceUserProfile.objects.get(uuid=uuid))
@@ -695,14 +716,14 @@ def add_bucket_users(bucket, vf):
def add_bucket_user(user, bucket):
try:
- validate_rgwa_user(user.full_name, user.uuid)
+ validate_rgwa_user(user.uuid)
bucket_acl = bucket.get_acl()
grants = set((grant.id, grant.permission)
for grant in bucket_acl.acl.grants)
for permission in [RGWApermission.READ, RGWApermission.WRITE]:
- if (user.full_name, permission) in grants:
+ if (user.uuid, permission) in grants:
continue
- bucket_acl.acl.add_user_grant(permission, user.full_name)
+ bucket_acl.acl.add_user_grant(permission, user.uuid)
bucket.set_acl(bucket_acl)
except Exception as e:
err_msg = "Failed: Engagement team user with uuid " + \
@@ -735,5 +756,6 @@ def remove_bucket_users_grants(bucket, vf):
def remove_bucket_user_grants(bucket, user):
bucket_acl = bucket.get_acl()
bucket_acl.acl.grants = [
- grant for grant in bucket_acl.acl.grants if not grant.id == user.full_name]
+ grant for grant in bucket_acl.acl.grants if not grant.id ==
+ user.uuid]
bucket.set_acl(bucket_acl)
diff --git a/django/validationmanager/git/__init__.py b/django/validationmanager/git/__init__.py
index 1726c13..16f81cb 100644
--- a/django/validationmanager/git/__init__.py
+++ b/django/validationmanager/git/__init__.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/validationmanager/git/gitlab_client.py b/django/validationmanager/git/gitlab_client.py
index 66d4177..4cce73a 100644
--- a/django/validationmanager/git/gitlab_client.py
+++ b/django/validationmanager/git/gitlab_client.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -104,12 +104,14 @@ class GitlabClient(object):
def create_project(self, name, **kwargs):
"""
- Function creates a new project with specified parameters. The following parameters are
- understood:
+ Function creates a new project with specified parameters.
+ The following parameters are understood:
name: The name of the new project
- path: Custom repository name for new project. default: based on name
- namespace_id: Namespace for the new project. default: current user's namespace
+ path: Custom repository name for new project.
+ default: based on name
+ namespace_id: Namespace for the new project.
+ default: current user's namespace
description
issues_enabled
merge_requests_enabled
@@ -132,9 +134,12 @@ class GitlabClient(object):
# filter kwargs to known parameters and non-optional args
parameters = dict({k: kwargs[k] for k in kwargs if k in [
- 'path', 'namespace_id', 'description', 'issues_enabled', 'merge_requests_enabled',
- 'builds_enabled', 'wiki_enabled', 'snippets_enabled', 'container_registry_enabled',
- 'shared_runners_enabled', 'public', 'visibility_level', 'import_url',
+ 'path', 'namespace_id', 'description',
+ 'issues_enabled', 'merge_requests_enabled',
+ 'builds_enabled', 'wiki_enabled',
+ 'snippets_enabled', 'container_registry_enabled',
+ 'shared_runners_enabled', 'public',
+ 'visibility_level', 'import_url',
'public_builds', 'only_allow_merge_if_build_succeeds',
'only_allow_merge_if_all_discussions_are_resolved', 'lfs_enabled',
'request_access_enabled',
@@ -206,7 +211,8 @@ class GitlabClient(object):
logger.info("didnt find project: %s", logEncoding(resp.content))
else:
for project in resp.json():
- if (project_name == project['name'] and group_id == project['namespace']['id']):
+ if (project_name == project['name'] and
+ group_id == project['namespace']['id']):
project_found = project
break
@@ -219,7 +225,8 @@ class GitlabClient(object):
email = email.lower()
url = "%s?username=%s" % (self.users_url, str(username))
resp = requests.get(url, headers=self.headers)
- # logger.debug("get_user_by_email response: %s" % resp.content+". Response code: %s" % resp.status_code)
+ # logger.debug("get_user_by_email response: %s" % resp.content+".
+ # Response code: %s" % resp.status_code)
if not resp.json():
logger.info("didnt find user: %s", logEncoding(resp.content))
else:
@@ -300,7 +307,8 @@ class GitlabClient(object):
else:
user_created = resp.json()
-# logger.debug("create_user response: %s" % resp.content + ", Response code: %s" % resp.status_code)
+# logger.debug("create_user response: %s" % resp.content + ",
+# Response code: %s" % resp.status_code)
return user_created
@@ -322,7 +330,8 @@ class GitlabClient(object):
"""
Function removes a user from a gitlab project, using a given user id
"""
- url = self.projects_url + '/' + str(project_id) + '/members/' + str(int(uid))
+ url = self.projects_url + '/' + \
+ str(project_id) + '/members/' + str(int(uid))
return requests.delete(url, headers=self.headers)
def list_users(self):
@@ -469,22 +478,28 @@ class GitlabClient(object):
def get_repository_files(self, project_id):
"""
- Function retrieves all files for a given repository by project id (In ICE projectId is 1:1 with repo_id)
+ Function retrieves all files for a given repository by project id
+ (In VVP projectId is 1:1 with repo_id)
GET /projects/:id/repository/tree
Doc: https://docs.gitlab.com/ce/api/repositories.html
"""
-# endpoint = self.url+self.BASE_CTX+"projects/"+str(project_id)+"/repository/tree"
+# endpoint = self.url+self.BASE_CTX+"projects/"+str(project_id)+
+# "/repository/tree"
endpoint = "%s%sprojects/%s/repository/tree" % (
self.url, self.BASE_CTX, str(project_id))
logger.debug("get_repository_files endpoint=" + endpoint)
resp = requests.get(endpoint, headers=self.headers)
- if resp.status_code == 404 and resp.json()['message'] == '404 Tree Not Found':
- # When no initial commit has been created and there are no files in the repo, the
- # response is not an empty list but "404 Tree Not Found." Intercept this and return
+ if resp.status_code == 404 and resp.json()['message'] == \
+ '404 Tree Not Found':
+ # When no initial commit has been created and there are
+ # no files in the repo, the response is not an empty list
+ # but "404 Tree Not Found." Intercept this and return
# empty list instead.
- logger.info("get_repository_files: Looks like there are no associated file to project %s. Response : %s, status = %s", logEncoding(
- project_id), logEncoding(resp.content), 404)
+ logger.info("get_repository_files: Looks like there are" +
+ "no associated file to project %s." +
+ "Response : %s, status = %s", logEncoding(
+ project_id), logEncoding(resp.content), 404)
return []
return resp.json()
@@ -534,8 +549,9 @@ class GitlabClient(object):
https://docs.gitlab.com/ce/api/projects.html
"""
parameters = dict({k: kwargs[k] for k in kwargs if k in [
- 'push_events', 'issues_events', 'merge_requests_events', 'tag_push_events',
- 'note_events', 'build_events', 'pipeline_events', 'wiki_events',
+ 'push_events', 'issues_events', 'merge_requests_events',
+ 'tag_push_events', 'note_events', 'build_events',
+ 'pipeline_events', 'wiki_events',
'enable_ssl_verification', 'token']},
id=project_id,
url=url,
@@ -544,13 +560,15 @@ class GitlabClient(object):
if hook_id is None:
# New hook
endpoint = "%s/api/v3/projects/%s/hooks" % (self.url, project_id)
- return requests.post(endpoint, json=parameters, headers=self.headers)
+ return requests.post(endpoint, json=parameters,
+ headers=self.headers)
else:
# Update existing hook
parameters['hook_id'] = hook_id
endpoint = "%s/api/v3/projects/%s/hooks/%s" % (
self.url, project_id, hook_id)
- return requests.put(endpoint, json=parameters, headers=self.headers)
+ return requests.put(endpoint, json=parameters,
+ headers=self.headers)
def delete_project_hook(self, project_id, hook_id):
endpoint = "%s/api/v3/projects/%s/hooks/%s" % (
diff --git a/django/validationmanager/jenkins/__init__.py b/django/validationmanager/jenkins/__init__.py
index 1726c13..16f81cb 100644
--- a/django/validationmanager/jenkins/__init__.py
+++ b/django/validationmanager/jenkins/__init__.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/validationmanager/jenkins/jenkins_client.py b/django/validationmanager/jenkins/jenkins_client.py
index d8d383e..9ee929b 100644
--- a/django/validationmanager/jenkins/jenkins_client.py
+++ b/django/validationmanager/jenkins/jenkins_client.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/validationmanager/migrations/0001_initial.py b/django/validationmanager/migrations/0001_initial.py
index 4cb1430..15de079 100644
--- a/django/validationmanager/migrations/0001_initial.py
+++ b/django/validationmanager/migrations/0001_initial.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -58,11 +58,18 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='ActiveJob',
fields=[
- ('uuid', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
+ ('uuid', models.UUIDField(
+ default=uuid.uuid4, editable=False,
+ primary_key=True, serialize=False)),
('url', models.URLField(
- help_text=b' The jenkins job URL, which should uniquely identify one\n execution of the TestEngine.')),
- ('checklist', models.ForeignKey(help_text=b' The checklist associated with this job.',
- on_delete=django.db.models.deletion.CASCADE, to='engagementmanager.Checklist')),
+ help_text=b' The jenkins job URL, which should \
+ uniquely identify one\n \
+ execution of the TestEngine.')),
+ ('checklist', models.ForeignKey(
+ help_text=b' \
+ The checklist associated with this job.',
+ on_delete=django.db.models.deletion.CASCADE,
+ to='engagementmanager.Checklist')),
],
options={
'db_table': 'ice_vm_active_job',
@@ -71,10 +78,13 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='ValidationTest',
fields=[
- ('uuid', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
+ ('uuid', models.UUIDField(default=uuid.uuid4,
+ editable=False,
+ primary_key=True, serialize=False)),
('name', models.CharField(max_length=128)),
('line_items', models.ManyToManyField(
- to='engagementmanager.ChecklistLineItem', verbose_name=b'Satisfies Line Items')),
+ to='engagementmanager.ChecklistLineItem',
+ verbose_name=b'Satisfies Line Items')),
],
options={
'db_table': 'ice_vm_validation_test',
diff --git a/django/validationmanager/migrations/0002_auto_20161019_2056.py b/django/validationmanager/migrations/0002_auto_20161019_2056.py
index 653f5f4..d2213c7 100644
--- a/django/validationmanager/migrations/0002_auto_20161019_2056.py
+++ b/django/validationmanager/migrations/0002_auto_20161019_2056.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/validationmanager/migrations/0003_auto_20170423_0531.py b/django/validationmanager/migrations/0003_auto_20170423_0531.py
index bcc716a..6707a10 100644
--- a/django/validationmanager/migrations/0003_auto_20170423_0531.py
+++ b/django/validationmanager/migrations/0003_auto_20170423_0531.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -53,6 +53,8 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='validationtest',
name='line_items',
- field=models.ManyToManyField(to='engagementmanager.ChecklistLineItem', verbose_name='Satisfies Line Items'),
+ field=models.ManyToManyField(
+ to='engagementmanager.ChecklistLineItem',
+ verbose_name='Satisfies Line Items'),
),
]
diff --git a/django/validationmanager/migrations/__init__.py b/django/validationmanager/migrations/__init__.py
index 1726c13..16f81cb 100644
--- a/django/validationmanager/migrations/__init__.py
+++ b/django/validationmanager/migrations/__init__.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/validationmanager/models.py b/django/validationmanager/models.py
index dab60ce..03ef18f 100644
--- a/django/validationmanager/models.py
+++ b/django/validationmanager/models.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -52,7 +52,8 @@ class ValidationTest(models.Model):
as the first word in the TAP description.
"""
- uuid = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
+ uuid = models.UUIDField(primary_key=True, default=uuid.uuid4,
+ editable=False)
name = models.CharField(max_length=128)
line_items = models.ManyToManyField(ChecklistLineItem,
verbose_name="Satisfies Line Items")
diff --git a/django/validationmanager/rados/__init__.py b/django/validationmanager/rados/__init__.py
index 1726c13..16f81cb 100644
--- a/django/validationmanager/rados/__init__.py
+++ b/django/validationmanager/rados/__init__.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/validationmanager/rados/rgwa_client.py b/django/validationmanager/rados/rgwa_client.py
index 232b900..9b72290 100644
--- a/django/validationmanager/rados/rgwa_client.py
+++ b/django/validationmanager/rados/rgwa_client.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -94,11 +94,12 @@ class RGWAClient(object):
"""
valid_args = {
- 'quota_type': ['user', 'bucket'],
- 'key_type': ['s3', 'swift'],
- },
+ 'quota_type': ['user', 'bucket'],
+ 'key_type': ['s3', 'swift'],
+ },
- def __init__(self, base_url, access_key=None, secret_key=None, verify='/etc/ssl/certs/ca-certificates.crt',
+ def __init__(self, base_url, access_key=None, secret_key=None,
+ verify='/etc/ssl/certs/ca-certificates.crt',
return_raw_response=False):
"""
@@ -259,7 +260,8 @@ class RGWAClient(object):
# http://docs.ceph.com/docs/master/radosgw/adminops/
#
- def get_usage(self, uid=None, start=None, end=None, show_entries=False, show_summary=False):
+ def get_usage(self, uid=None, start=None, end=None, show_entries=False,
+ show_summary=False):
"""Request bandwidth usage information.
Note: this feature is disabled by default, can be enabled by setting
@@ -353,7 +355,8 @@ class RGWAClient(object):
purge_data=purge_data,
)
- def create_subuser(self, uid, subuser=None, secret_key=None, access_key=None,
+ def create_subuser(self, uid, subuser=None,
+ secret_key=None, access_key=None,
key_type=None, access=None, generate_secret=False):
"""Create a new subuser.
@@ -374,8 +377,8 @@ class RGWAClient(object):
generate_secret=generate_secret,
)
- def modify_subuser(self, uid, subuser, secret=None, key_type='swift', access=None,
- generate_secret=False):
+ def modify_subuser(self, uid, subuser, secret=None,
+ key_type='swift', access=None, generate_secret=False):
"""Modify an existing subuser."""
return self._request(
'post', 'user', 'subuser',
@@ -569,7 +572,8 @@ class RGWAClient(object):
def get_user_quota(self, uid):
return self.get_quota(uid=uid, quota_type='user')
- def set_user_quota(self, uid, max_size_kb=None, max_objects=None, enabled=None):
+ def set_user_quota(self, uid, max_size_kb=None,
+ max_objects=None, enabled=None):
return self.set_quota(
uid=uid,
quota_type='user',
@@ -581,7 +585,8 @@ class RGWAClient(object):
def get_user_bucket_quota(self, uid):
return self.get_quota(uid=uid, quota_type='bucket')
- def set_user_bucket_quota(self, uid, bucket, max_size_kb=None, max_objects=None,
+ def set_user_bucket_quota(self, uid, bucket,
+ max_size_kb=None, max_objects=None,
enabled=None):
return self.set_quota(
uid=uid,
diff --git a/django/validationmanager/rados/rgwa_client_factory.py b/django/validationmanager/rados/rgwa_client_factory.py
index ff29897..ba29b32 100644
--- a/django/validationmanager/rados/rgwa_client_factory.py
+++ b/django/validationmanager/rados/rgwa_client_factory.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/validationmanager/rest/__init__.py b/django/validationmanager/rest/__init__.py
index 1726c13..16f81cb 100644
--- a/django/validationmanager/rest/__init__.py
+++ b/django/validationmanager/rest/__init__.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/validationmanager/rest/git_webhook_endpoint.py b/django/validationmanager/rest/git_webhook_endpoint.py
index 4aeb5d4..1931e7d 100644
--- a/django/validationmanager/rest/git_webhook_endpoint.py
+++ b/django/validationmanager/rest/git_webhook_endpoint.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/validationmanager/rest/http_response_custom.py b/django/validationmanager/rest/http_response_custom.py
index 0a22551..d6f69b5 100644
--- a/django/validationmanager/rest/http_response_custom.py
+++ b/django/validationmanager/rest/http_response_custom.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -52,7 +52,8 @@ class InvalidGitlabEventException(APIException):
class InvalidJenkinsPhaseException(APIException):
status_code = HTTP_400_BAD_REQUEST
- default_detail = 'Jenkins job build notification phase was missing or invalid.'
+ default_detail = 'Jenkins job build notification phase \
+ was missing or invalid.'
class InvalidPayloadException(APIException):
diff --git a/django/validationmanager/rest/jenkins_webhook_endpoint.py b/django/validationmanager/rest/jenkins_webhook_endpoint.py
index 21b3760..6b0f312 100644
--- a/django/validationmanager/rest/jenkins_webhook_endpoint.py
+++ b/django/validationmanager/rest/jenkins_webhook_endpoint.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -272,18 +272,23 @@ class JenkinsWebhookEndpoint(APIView):
}}
logger.debug('sending test_finished with payload %s', payload)
- # The Validation Engine suite will always include a successful result with the description
- # "test_this_sentinel_always_succeeds'. If it is not present, we assume something has gone
+ # The Validation Engine suite will always include a successful
+ # result with the description.
+ # "test_this_sentinel_always_succeeds'. If it is not present,
+ # we assume something has gone
# wrong with the Validation Engine itself.
# if 'test_this_sentinel_always_succeeds' not in test_results:
- # logger.error('Validation Engine failed to include sentinel. Assuming it failed. Full log: %s',
+ # logger.error('Validation Engine failed to include sentinel.
+ # Assuming it failed. Full log: %s',
# logEncoding(request.data['build']['log']))
- # payload['checklist']['error'] = 'The Validation Engine encountered an error.'
- # # If possible, identify what specifically went wrong and provide a message to return to
- # # the user.
- # if 'fatal: Could not read from remote repository' in request.data['build']['log']:
- # payload['checklist']['error'] += " There was a problem cloning a git repository."
-
+ # payload['checklist']['error'] = 'The Validation Engine \
+ # encountered an error.'
+ # If possible, identify what specifically went wrong and
+ # provide a message to return to the user.
+ # if 'fatal: Could not read from remote repository'
+ # in request.data['build']['log']:
+ # payload['checklist']['error'] += " There was a problem \
+ # cloning a git repository."
# Send Signal
em_client.test_finished(checklist_test_results=payload['checklist'])
diff --git a/django/validationmanager/tasks.py b/django/validationmanager/tasks.py
new file mode 100644
index 0000000..5d7b0d2
--- /dev/null
+++ b/django/validationmanager/tasks.py
@@ -0,0 +1,49 @@
+from celery import Celery
+from django.conf import settings
+from engagementmanager.models import CheckListState
+
+celery_app = Celery(
+ broker='redis://redis',
+ backend='redis://redis',
+ )
+
+# Celery signatures allow us to invoke the imagescanner celery task without
+# importing or depending upon imagescanner's code here. (Because doing so would
+# make all of imagescanner's dependencies get added to this Django project.)
+#
+# FIXME for some reason, requests submitted in this way do not show their
+# arguments in the simple frontend's "Executing" and "Pending" lists. It
+# appears only as "()"
+_request_scan = celery_app.signature(
+ 'imagescanner.tasks.request_scan',
+ queue='scans',
+ ignore_result=True)
+
+
+def request_scan(vf, checklist):
+ """Issue a request (using Celery and Redis) for the imagescanner to run.
+
+ This function issues the request asynchronously and returns quickly.
+
+ vf:
+ the VF corresponding to the image to be scanned. we use this to
+ determine the radosgw bucket name to search for images and the jenkins
+ job name to trigger with the image scan results.
+
+ checklist:
+ the checklist to be updated with the results of the scan.
+ """
+ # we can't necessarily look this up from the vf because there might be two
+ # available at the time this method runs (the new one, and the old one
+ # which will get changed to archive state)
+
+ return _request_scan.delay(
+ source="https://%s/%s_%s/" % (
+ settings.AWS_S3_HOST, vf.engagement.engagement_manual_id, vf.name),
+ path='',
+ recipients=[],
+ # this suffix should match the one in
+ # validationmanager.em_integration.vm_api.get_jenkins_job_config
+ jenkins_job_name=vf.jenkins_job_name() + '_scanner',
+ checklist_uuid=checklist.uuid,
+ )
diff --git a/django/validationmanager/templates/imagescanner_job_config.xml b/django/validationmanager/templates/imagescanner_job_config.xml
new file mode 100644
index 0000000..19d5eb5
--- /dev/null
+++ b/django/validationmanager/templates/imagescanner_job_config.xml
@@ -0,0 +1,54 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<project>
+ <actions/>
+ <description>Handler for ImageScanner results</description>
+ <keepDependencies>false</keepDependencies>
+ <properties>
+ <com.tikal.hudson.plugins.notification.HudsonNotificationProperty plugin="notification@1.11">
+ <endpoints>
+ <com.tikal.hudson.plugins.notification.Endpoint>
+ <protocol>HTTP</protocol>
+ <format>JSON</format>
+ <url>{{ notification_endpoint }}</url>
+ <event>finalized</event>
+ <timeout>30000</timeout>
+ <loglines>-1</loglines>
+ </com.tikal.hudson.plugins.notification.Endpoint>
+ </endpoints>
+ </com.tikal.hudson.plugins.notification.HudsonNotificationProperty>
+ <hudson.model.ParametersDefinitionProperty>
+ <parameterDefinitions>
+ <hudson.model.StringParameterDefinition>
+ <name>checklist_uuid</name>
+ <description>The UUID of the checklist to be validated.</description>
+ <defaultValue></defaultValue>
+ </hudson.model.StringParameterDefinition>
+ <hudson.model.StringParameterDefinition>
+ <name>status</name>
+ <description>The UNIX exit status of the scanner (0=success)</description>
+ <defaultValue></defaultValue>
+ </hudson.model.StringParameterDefinition>
+ <hudson.model.StringParameterDefinition>
+ <name>logurl</name>
+ <description>A URL to the imagescanner log file, which will be retrieved and parsed</description>
+ <defaultValue></defaultValue>
+ </hudson.model.StringParameterDefinition>
+ </parameterDefinitions>
+ </hudson.model.ParametersDefinitionProperty>
+ </properties>
+ <scm class="hudson.scm.NullSCM"/>
+ <canRoam>true</canRoam>
+ <disabled>false</disabled>
+ <blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
+ <blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
+ <triggers/>
+ <concurrentBuild>false</concurrentBuild>
+ <builders>
+ <hudson.tasks.Shell>
+ <command><![CDATA[#!/bin/sh
+exec imagescanner-results-processor]]></command>
+ </hudson.tasks.Shell>
+ </builders>
+ <publishers/>
+ <buildWrappers/>
+</project>
diff --git a/django/validationmanager/tests/__init__.py b/django/validationmanager/tests/__init__.py
index 1726c13..16f81cb 100644
--- a/django/validationmanager/tests/__init__.py
+++ b/django/validationmanager/tests/__init__.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/validationmanager/tests/testFinishedSignal.py b/django/validationmanager/tests/testFinishedSignal.py
index bca44c1..5c1bd48 100644
--- a/django/validationmanager/tests/testFinishedSignal.py
+++ b/django/validationmanager/tests/testFinishedSignal.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -42,7 +42,8 @@ from uuid import uuid4
from django.conf import settings
from rest_framework.status import HTTP_200_OK
-from engagementmanager.models import Vendor, ChecklistSection, ChecklistDecision, ChecklistLineItem
+from engagementmanager.models import Vendor, ChecklistSection, \
+ ChecklistDecision, ChecklistLineItem
from engagementmanager.tests.test_base_entity import TestBaseEntity
from engagementmanager.utils.constants import CheckListLineType,\
CheckListDecisionValue, Constants
@@ -51,46 +52,67 @@ from engagementmanager.utils.constants import CheckListLineType,\
class TestTestFinishedSignalCase(TestBaseEntity):
def childSetup(self):
- self.createVendors([Constants.service_provider_company_name, 'Amdocs'])
+ self.createVendors([Constants.service_provider_company_name,
+ 'Amdocs'])
self.createDefaultRoles()
self.el_user = self.creator.createUser(Vendor.objects.get(
name=Constants.service_provider_company_name),
- self.randomGenerator("main-vendor-email"), '55501000199', 'el user', self.el, True)
+ self.randomGenerator("main-vendor-email"), '55501000199',
+ 'el user', self.el, True)
self.user = self.creator.createUser(Vendor.objects.get(
name=Constants.service_provider_company_name),
- self.randomGenerator("main-vendor-email"), '55501000199', 'user', self.standard_user, True)
+ self.randomGenerator("main-vendor-email"), '55501000199', 'user',
+ self.standard_user, True)
self.peer_reviewer = self.creator.createUser(Vendor.objects.get(
name=Constants.service_provider_company_name),
- self.randomGenerator("main-vendor-email"), '55501000199', 'peer-reviewer user', self.el, True)
+ self.randomGenerator("main-vendor-email"), '55501000199',
+ 'peer-reviewer user', self.el, True)
token = settings.WEBHOOK_TOKEN
self.urlStr = "/v/hook/test-complete/" + token
self.req = dict()
self.token = self.loginAndCreateSessionToken(self.el_user)
self.template = self.creator.createDefaultCheckListTemplate()
- self.engagement = self.creator.createEngagement('just-a-fake-uuid', 'Validation', None)
+ self.engagement = self.creator.createEngagement(
+ 'just-a-fake-uuid', 'Validation', None)
self.engagement.engagement_team.add(self.el_user, self.user)
self.checklist = self.creator.createCheckList(
- 'some-checklist', 'Automation', 1, '{}', self.engagement, self.template, self.el_user, self.peer_reviewer)
- self.section = ChecklistSection.objects.create(uuid=uuid4(), name=self.randomGenerator("randomString"), weight=1.0, description=self.randomGenerator(
- "randomString"), validation_instructions=self.randomGenerator("randomString"), template=self.template)
- self.line_item = ChecklistLineItem.objects.create(uuid=uuid4(), name=self.randomGenerator("randomString"), weight=1.0, description=self.randomGenerator(
- "randomString"), line_type=CheckListLineType.auto.name, validation_instructions=self.randomGenerator("randomString"), template=self.template, section=self.section) # @UndefinedVariable
+ 'some-checklist', 'Automation', 1, '{}', self.engagement,
+ self.template, self.el_user, self.peer_reviewer)
+ self.section = ChecklistSection.objects.create(
+ uuid=uuid4(), name=self.randomGenerator("randomString"),
+ weight=1.0, description=self.randomGenerator(
+ "randomString"),
+ validation_instructions=self.randomGenerator("randomString"),
+ template=self.template)
+ self.line_item = ChecklistLineItem.objects.create(
+ uuid=uuid4(), name=self.randomGenerator("randomString"),
+ weight=1.0, description=self.randomGenerator(
+ "randomString"), line_type=CheckListLineType.auto.name,
+ validation_instructions=self.randomGenerator("randomString"),
+ template=self.template, section=self.section)
self.decision = ChecklistDecision.objects.create(
- uuid=uuid4(), checklist=self.checklist, template=self.template, lineitem=self.line_item)
- self.vendor = Vendor.objects.get(name=Constants.service_provider_company_name)
+ uuid=uuid4(), checklist=self.checklist, template=self.template,
+ lineitem=self.line_item)
+ self.vendor = Vendor.objects.get(
+ name=Constants.service_provider_company_name)
self.deploymentTarget = self.creator.createDeploymentTarget(
- self.randomGenerator("randomString"), self.randomGenerator("randomString"))
- self.vf = self.creator.createVF(self.randomGenerator("randomString"),
- self.engagement, self.deploymentTarget, False, self.vendor)
+ self.randomGenerator("randomString"),
+ self.randomGenerator("randomString"))
+ self.vf = self.creator.createVF(
+ self.randomGenerator("randomString"),
+ self.engagement,
+ self.deploymentTarget,
+ False, self.vendor)
def initBody(self):
self.req['checklist'] = dict()
self.req['checklist']['checklist_uuid'] = str(self.checklist.uuid)
decisionData = dict()
decisionData['line_item_id'] = str(self.line_item.uuid)
- decisionData['value'] = CheckListDecisionValue.approved.name # @UndefinedVariable
+ # @UndefinedVariable
+ decisionData['value'] = CheckListDecisionValue.approved.name
decisionData['audit_log_text'] = "audiot text blah blaj"
self.req['checklist']['decisions'] = [decisionData]
self.req['build'] = dict()
@@ -98,14 +120,14 @@ class TestTestFinishedSignalCase(TestBaseEntity):
self.req['build']['url'] = "http://samplejob"
self.req['build']['log'] = "Jenkins Log Example"
- ### TESTS ###
def testFinishedSignalPositive(self):
if not settings.IS_SIGNAL_ENABLED:
return
self.initBody()
datajson = json.dumps(self.req, ensure_ascii=False)
- response = self.c.post(self.urlStr, datajson, content_type='application/json',
+ response = self.c.post(self.urlStr, datajson,
+ content_type='application/json',
**{'HTTP_AUTHORIZATION': "token " + self.token})
print('Got response : ' + str(response.status_code) +
diff --git a/django/validationmanager/tests/test_git_push.py b/django/validationmanager/tests/test_git_push.py
index e3798f3..acbb8f3 100644
--- a/django/validationmanager/tests/test_git_push.py
+++ b/django/validationmanager/tests/test_git_push.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -44,7 +44,8 @@ from rest_framework.status import HTTP_200_OK
from engagementmanager.models import Vendor, ChecklistSection, Checklist
from engagementmanager.tests.test_base_entity import TestBaseEntity
-from engagementmanager.utils.constants import CheckListState, EngagementType, Constants
+from engagementmanager.utils.constants import CheckListState, \
+ EngagementType, Constants
class TestGitPushSignalCase(TestBaseEntity):
@@ -57,33 +58,48 @@ class TestGitPushSignalCase(TestBaseEntity):
self.fileAdded = "CHANGELOG"
self.fileModified = "app/controller/application.rb"
# self.associatedFiles = [self.fileAdded, self.fileModified]
- self.associatedFiles = "[\"" + self.fileAdded + "\",\"" + self.fileModified + "\"]"
+ self.associatedFiles = "[\"" + self.fileAdded + \
+ "\",\"" + self.fileModified + "\"]"
# Create full engagement:
- self.createVendors([Constants.service_provider_company_name, 'Amdocs'])
+ self.createVendors([Constants.service_provider_company_name,
+ 'Amdocs'])
self.createDefaultRoles()
self.el_user = self.creator.createUser(Vendor.objects.get(
name=Constants.service_provider_company_name),
- self.randomGenerator("main-vendor-email"), '55501000199', 'el user', self.el, True)
+ self.randomGenerator("main-vendor-email"), '55501000199',
+ 'el user', self.el, True)
self.user = self.creator.createUser(Vendor.objects.get(
name=Constants.service_provider_company_name),
- self.randomGenerator("main-vendor-email"), '55501000199', 'user', self.standard_user, True)
+ self.randomGenerator("main-vendor-email"), '55501000199',
+ 'user', self.standard_user, True)
self.peer_reviewer = self.creator.createUser(Vendor.objects.get(
name=Constants.service_provider_company_name),
- self.randomGenerator("main-vendor-email"), '55501000199', 'peer-reviewer user', self.el, True)
+ self.randomGenerator("main-vendor-email"), '55501000199',
+ 'peer-reviewer user', self.el, True)
self.template = self.creator.createDefaultCheckListTemplate()
self.engagement = self.creator.createEngagement(
- 'just-a-fake-uuid', EngagementType.Validation.name, None) # @UndefinedVariable
+ 'just-a-fake-uuid', EngagementType.Validation.name, None)
self.engagement.engagement_team.add(self.el_user, self.user)
- self.checklist = self.creator.createCheckList('some-checklist', CheckListState.review.name, 1,
- self.associatedFiles, self.engagement, self.template, self.el_user, self.el_user) # @UndefinedVariable
- self.section = ChecklistSection.objects.create(uuid=uuid4(), name=self.randomGenerator("randomString"), weight=1.0, description=self.randomGenerator(
- "randomString"), validation_instructions=self.randomGenerator("randomString"), template=self.template)
- self.vendor = Vendor.objects.get(name=Constants.service_provider_company_name)
+ self.checklist = self.creator.createCheckList(
+ 'some-checklist', CheckListState.review.name, 1,
+ self.associatedFiles, self.engagement, self.template,
+ self.el_user, self.el_user)
+ self.section = ChecklistSection.objects.create(
+ uuid=uuid4(), name=self.randomGenerator("randomString"),
+ weight=1.0,
+ description=self.randomGenerator(
+ "randomString"), validation_instructions=self.randomGenerator(
+ "randomString"), template=self.template)
+ self.vendor = Vendor.objects.get(
+ name=Constants.service_provider_company_name)
self.deploymentTarget = self.creator.createDeploymentTarget(
- self.randomGenerator("randomString"), self.randomGenerator("randomString"))
+ self.randomGenerator("randomString"), self.randomGenerator(
+ "randomString"))
self.vf = self.creator.createVF("TestVF-GitPush", self.engagement,
- self.deploymentTarget, False, self.vendor, git_repo_url=self.gitRepoURL)
+ self.deploymentTarget, False,
+ self.vendor,
+ git_repo_url=self.gitRepoURL)
def initBody(self): # Create JSON for body REST request.
self.data['object_kind'] = "push"
@@ -101,13 +117,13 @@ class TestGitPushSignalCase(TestBaseEntity):
commitsData['modified'] = [self.fileModified]
commitsData['removed'] = []
commitsList.append(commitsData)
- for a in commitsData.values(): # Count number of commits in commitsData.
+ # Count number of commits in commitsData.
+ for a in commitsData.values():
if a != []:
totalCommits += 1
self.data['commits'] = commitsList
self.data['total_commits_count'] = totalCommits
- ### TESTS ###
def test_git_push_event_positive(self):
if not settings.IS_SIGNAL_ENABLED:
return
@@ -119,11 +135,14 @@ class TestGitPushSignalCase(TestBaseEntity):
print(datajson)
headers = {'HTTP_X_GITLAB_EVENT': "Push Hook"}
- response = self.c.post(self.urlStr, datajson, content_type='application/json', **headers)
+ response = self.c.post(self.urlStr, datajson,
+ content_type='application/json', **headers)
print("Got response: " + str(response.status_code) +
", Expecting 200. Response body: " + response.reason_phrase)
self.assertEqual(response.status_code, HTTP_200_OK)
checklistState = Checklist.objects.get(uuid=self.checklist.uuid)
- print("Checklist state (final, should be 'archive'): " + checklistState.state)
- self.assertEqual(checklistState.state, CheckListState.archive.name) # @UndefinedVariable
+ print("Checklist state (final, should be 'archive'): "
+ + checklistState.state)
+ # @UndefinedVariable
+ self.assertEqual(checklistState.state, CheckListState.archive.name)
diff --git a/django/validationmanager/tests/test_rgwa_client_factory.py b/django/validationmanager/tests/test_rgwa_client_factory.py
index 0280fd0..dc38aa5 100644
--- a/django/validationmanager/tests/test_rgwa_client_factory.py
+++ b/django/validationmanager/tests/test_rgwa_client_factory.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -40,7 +40,9 @@ from boto.s3.connection import S3Connection
from engagementmanager.tests.test_base_entity import TestBaseEntity
from validationmanager.rados.rgwa_client import RGWAClient
-from validationmanager.rados.rgwa_client_factory import RGWAClientFactory as RGWAClientFactorySing
+from validationmanager.rados.rgwa_client_factory import \
+ RGWAClientFactory as RGWAClientFactorySing
+
class TestRGWAClientFactory(TestBaseEntity):
def childSetup(self):
@@ -52,4 +54,5 @@ class TestRGWAClientFactory(TestBaseEntity):
def testStandardClientCreation(self):
client = RGWAClientFactorySing.standard()
- self.assertTrue(client is not None and isinstance(client, S3Connection))
+ self.assertTrue(
+ client is not None and isinstance(client, S3Connection))
diff --git a/django/validationmanager/urls.py b/django/validationmanager/urls.py
index 5c6edb8..50ec791 100644
--- a/django/validationmanager/urls.py
+++ b/django/validationmanager/urls.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -38,12 +38,15 @@
# ECOMP is a trademark and service mark of AT&T Intellectual Property.
from django.conf.urls import url
-from validationmanager.rest import git_webhook_endpoint, jenkins_webhook_endpoint
+from validationmanager.rest import git_webhook_endpoint,\
+ jenkins_webhook_endpoint
urlpatterns = [
url(r'^hook/test-complete(?:/(?P<auth_token>[^/]+)/?)?$',
- jenkins_webhook_endpoint.JenkinsWebhookEndpoint.as_view(), name='jenkins-notification-endpoint'),
+ jenkins_webhook_endpoint.JenkinsWebhookEndpoint.as_view(),
+ name='jenkins-notification-endpoint'),
url(r'^hook/git-push(?:/(?P<auth_token>[^/]+)/?)?$',
- git_webhook_endpoint.GitWebhookEndpoint.as_view(), name='git-push-endpoint'),
+ git_webhook_endpoint.GitWebhookEndpoint.as_view(),
+ name='git-push-endpoint'),
]
diff --git a/django/validationmanager/utils/__init__.py b/django/validationmanager/utils/__init__.py
index 1726c13..16f81cb 100644
--- a/django/validationmanager/utils/__init__.py
+++ b/django/validationmanager/utils/__init__.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/validationmanager/utils/clients.py b/django/validationmanager/utils/clients.py
index 0a6a34d..766f1b7 100644
--- a/django/validationmanager/utils/clients.py
+++ b/django/validationmanager/utils/clients.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/validationmanager/utils/constants.py b/django/validationmanager/utils/constants.py
index b110f23..32bf95d 100644
--- a/django/validationmanager/utils/constants.py
+++ b/django/validationmanager/utils/constants.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/validationmanager/utils/keyawaredefaultdict.py b/django/validationmanager/utils/keyawaredefaultdict.py
index b9a8254..2d0e6a2 100644
--- a/django/validationmanager/utils/keyawaredefaultdict.py
+++ b/django/validationmanager/utils/keyawaredefaultdict.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -40,14 +40,16 @@ from collections import defaultdict
class KeyAwareDefaultDict(defaultdict):
- """A defaultdict whose missing-key factory is passed the missing key as its only argument.
+ """A defaultdict whose missing-key factory
+ is passed the missing key as its only argument.
See https://docs.python.org/3/library/collections.html#defaultdict-objects
"""
def __missing__(self, key):
- # This code is modified copypasta from help(collections.defaultdict.__missing__).
+ # This code is modified copypasta from help
+ # (collections.defaultdict.__missing__).
# Unfortunately there is no simpler way to override its behavior.
if self.default_factory is None:
raise KeyError((key,))
diff --git a/django/vvp/__init__.py b/django/vvp/__init__.py
index 1726c13..16f81cb 100644
--- a/django/vvp/__init__.py
+++ b/django/vvp/__init__.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/django/vvp/settings/tox_settings.py b/django/vvp/settings/tox_settings.py
index 530bd7a..7e9f950 100644
--- a/django/vvp/settings/tox_settings.py
+++ b/django/vvp/settings/tox_settings.py
@@ -57,7 +57,8 @@ EMAIL_USE_SSL = True
REST_FRAMEWORK = {
# Use Django's standard `django.contrib.auth` permissions,
# or allow read-only access for unauthenticated users.
- 'EXCEPTION_HANDLER': 'engagementmanager.utils.exception_handler.ice_exception_handler',
+ 'EXCEPTION_HANDLER': \
+ 'engagementmanager.utils.exception_handler.ice_exception_handler',
'PAGE_SIZE': 10,
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticated',
@@ -78,7 +79,8 @@ JWT_AUTH = {
'JWT_AUTH_HEADER_PREFIX': 'token',
'JWT_ALGORITHM': 'HS256',
'JWT_EXPIRATION_DELTA': datetime.timedelta(days=1),
- 'JWT_DECODE_HANDLER': 'engagementmanager.utils.authentication.ice_jwt_decode_handler',
+ 'JWT_DECODE_HANDLER':
+ 'engagementmanager.utils.authentication.ice_jwt_decode_handler',
}
APPEND_SLASH = False
@@ -101,7 +103,8 @@ MIDDLEWARE_CLASSES = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
- 'django.contrib.auth.middleware.AuthenticationMiddleware', # required by d.c.admin
+ # required by d.c.admin
+ 'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
@@ -119,8 +122,10 @@ TEMPLATES = [
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
- 'django.contrib.auth.context_processors.auth', # required by d.c.admin
- 'django.contrib.messages.context_processors.messages', # required by d.c.admin
+ # required by d.c.admin
+ 'django.contrib.auth.context_processors.auth',
+ # required by d.c.admin
+ 'django.contrib.messages.context_processors.messages',
],
},
},
@@ -155,7 +160,7 @@ AUTH_PASSWORD_VALIDATORS = [
'MinimumLengthValidator',
'CommonPasswordValidator',
'NumericPasswordValidator',
- ]]
+ ]]
# Internationalization
@@ -176,9 +181,12 @@ STATIC_ROOT = os.environ['STATIC_ROOT']
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
- 'formatters': { # All possible attributes are: https://docs.python.org/3/library/logging.html#logrecord-attributes
+ # All possible attributes are:
+ # https://docs.python.org/3/library/logging.html#logrecord-attributes
+ 'formatters': {
'verbose': {
- 'format': '%(asctime)s %(levelname)s %(name)s %(module)s %(lineno)d %(process)d %(thread)d %(message)s'
+ 'format': '%(asctime)s %(levelname)s %(name)s %(module)s \
+ %(lineno)d %(process)d %(thread)d %(message)s'
},
'simple': {
'format': '%(asctime)s %(levelname)s %(name)s %(message)s'
@@ -190,7 +198,9 @@ LOGGING = {
'formatter': 'simple'
},
'vvp-info.log': {
- 'level': 'INFO', # handler will ignore DEBUG (only process INFO, WARN, ERROR, CRITICAL, FATAL)
+ # handler will ignore DEBUG (only process INFO, WARN, ERROR,
+ # CRITICAL, FATAL)
+ 'level': 'INFO',
'class': 'logging.FileHandler',
'filename': os.path.join(LOGS_PATH, 'vvp-info.log'),
'formatter': 'verbose'
@@ -216,7 +226,8 @@ LOGGING = {
},
'loggers': {
'vvp.logger': {
- 'handlers': ['vvp-info.log', 'vvp-debug.log', 'vvp-requests.log', 'vvp-db.log', 'console'],
+ 'handlers': ['vvp-info.log', 'vvp-debug.log', 'vvp-requests.log',
+ 'vvp-db.log', 'console'],
'level': 'DEBUG' if DEBUG else 'INFO',
},
'django': {
@@ -247,7 +258,8 @@ LOGGING = {
# VVP Related Configuration
#############################
CONTACT_FROM_ADDRESS = os.getenv('CONTACT_FROM_ADDRESS', 'dummy@example.com')
-CONTACT_EMAILS = [s.strip() for s in os.getenv('CONTACT_EMAILS', 'dummy@example.com').split(',') if s]
+CONTACT_EMAILS = [s.strip() for s in os.getenv(
+ 'CONTACT_EMAILS', 'dummy@example.com').split(',') if s]
DOMAIN = os.getenv('EM_DOMAIN_NAME', 'http://localhost:8080')
TOKEN_EXPIRATION_IN_HOURS = 48
DAILY_SCHEDULED_JOB_HOUR = 20
@@ -266,7 +278,8 @@ API_DOMAIN = 'em'
# threat model
WEBHOOK_TOKEN = os.environ['SECRET_WEBHOOK_TOKEN']
-# The authentication token and URL needed for us to issue requests to the GitLab API.
+# The authentication token and URL needed for us to issue requests to the
+# GitLab API.
GITLAB_TOKEN = os.environ['SECRET_GITLAB_AUTH_TOKEN']
GITLAB_URL = "http://gitlab/"
@@ -284,7 +297,8 @@ CMS_APP_CLIENT_SECRET = os.environ['SECRET_CMS_APP_CLIENT_SECRET']
# slack integration
SLACK_API_TOKEN = os.environ['SLACK_API_TOKEN']
ENGAGEMENTS_CHANNEL = os.getenv('ENGAGEMENTS_CHANNEL', '')
-ENGAGEMENTS_NOTIFICATIONS_CHANNEL = os.getenv('ENGAGEMENTS_NOTIFICATIONS_CHANNEL:', '')
+ENGAGEMENTS_NOTIFICATIONS_CHANNEL = os.getenv(
+ 'ENGAGEMENTS_NOTIFICATIONS_CHANNEL:', '')
DEVOPS_CHANNEL = os.getenv('DEVOPS_CHANNEL', '')
DEVOPS_NOTIFICATIONS_CHANNEL = os.getenv('DEVOPS_NOTIFICATIONS_CHANNEL', '')
diff --git a/django/vvp/urls.py b/django/vvp/urls.py
index c9fd8f8..a24f9aa 100644
--- a/django/vvp/urls.py
+++ b/django/vvp/urls.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -48,7 +48,8 @@ Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home')
Including another URLconf
- 1. Import the include() function: from django.conf.urls import url, include
+ 1. Import the include() function:
+ from django.conf.urls import url, include
2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls'))
"""
from django.conf.urls import include, url
@@ -58,7 +59,9 @@ from django.conf import settings
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
- url(r'^%s/v1/engmgr/' % settings.PROGRAM_NAME_URL_PREFIX, include('engagementmanager.urls')),
+ url(r'^%s/v1/engmgr/' % settings.PROGRAM_NAME_URL_PREFIX,
+ include('engagementmanager.urls')),
url(r'^v/', include('validationmanager.urls')),
- url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),
+ url(r'^api-auth/', include('rest_framework.urls',
+ namespace='rest_framework')),
]
diff --git a/django/vvp/wsgi.py b/django/vvp/wsgi.py
index e584b2d..bea050e 100644
--- a/django/vvp/wsgi.py
+++ b/django/vvp/wsgi.py
@@ -1,5 +1,5 @@
-#
-# ============LICENSE_START==========================================
+#
+# ============LICENSE_START==========================================
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
diff --git a/tox.ini b/tox.ini
index b3fb5aa..60c12e3 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,15 +1,14 @@
[tox]
-envlist = py36
-; py36-django1-10-6 ,style
+envlist = py36-django1-10-6, style
skipsdist = True
[testenv]
changedir = {toxinidir}/django
envlogdir = {toxinidir}/django/logs
-setenv =
+setenv =
DJANGO_SETTINGS_MODULE=vvp.settings.tox_settings
PYTHONPATH={toxinidir}/django
- SECRET_KEY=6mo22&_gtjf#wktqf1#ve^7=w6kx)uq0u*4ksk^aq8lte&)yul
+ SECRET_KEY=aaa049575840-SOME-FAKE-SECRET-KEY-aaa049575840
ENVIRONMENT=development
PROGRAM_NAME_URL_PREFIX=vvp
EMAIL_HOST=localhost
@@ -21,16 +20,16 @@ setenv =
PGPASSWORD=Aa123456
PGHOST=localhost
PGPORT=5433
- SECRET_WEBHOOK_TOKEN=Aiwi8se4ien0foW6eimahch2zahshaGi
- SECRET_GITLAB_AUTH_TOKEN=ieNgathapoo4zohvee9a
- SECRET_JENKINS_PASSWORD=xaiyie0wuoqueuBu
- SECRET_CMS_APP_CLIENT_ID=MHmJo0ccDheVVsIiQHZnY6LXPAC6H6HAMzhCCM16
- SECRET_CMS_APP_CLIENT_SECRET=nI8QCFrKMpnw5nTs
+ SECRET_WEBHOOK_TOKEN=aaa049575840-FAKE-TOKEN-aaa049575840
+ SECRET_GITLAB_AUTH_TOKEN=aaa049-FAKE-SECRET-575840
+ SECRET_JENKINS_PASSWORD=aaa0495-FAKE-PASSWORD-75840
+ SECRET_CMS_APP_CLIENT_ID=aaa049575840-FAKE-CLIENT-ID-aaa049575840
+ SECRET_CMS_APP_CLIENT_SECRET=aaa049-FAKE-SECRET-575840
SLACK_API_TOKEN=
- S3_HOST=dev-s3.d2ice.att.io
+ S3_HOST=dev-s3.vvp
S3_PORT=443
- AWS_ACCESS_KEY_ID=FD21HBU2KRN3UVD1MWRN
- AWS_SECRET_ACCESS_KEY=TKoiwxziUWG9cTYUknUkFGmmyuQ27nP2lCiutEsD
+ AWS_ACCESS_KEY_ID=aaa049-FAKE-ACCESS-KEY-575840
+ AWS_SECRET_ACCESS_KEY=aaa049575840-SOME-FAKE-SECRET-KEY-aaa049575840
STATIC_ROOT=/app/htdocs
[testenv:py36-django1-10-6]
@@ -47,6 +46,3 @@ commands = flake8
[flake8]
show-source = True
exclude=venv-tox,.git,.tox,dist,doc,*openstack/common*,*lib/python*,*egg,build
-
-[testenv:py36]
-commands = python --version