Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorValery Sizov <vsv2711@gmail.com>2015-10-14 20:38:54 +0300
committerValery Sizov <vsv2711@gmail.com>2015-10-14 20:38:54 +0300
commitdc9100d1b21e8c76aaa3899411e4978c319b743d (patch)
tree87962d35b5767f0691eaf422b46063c5d29c8dc7 /app/models
parentb83a18a55cd03cfa6d0d631b8d4567ae29b5fe26 (diff)
Invalidate stored service password if the endpoint URL is changed. STEP 2
Diffstat (limited to 'app/models')
-rw-r--r--app/models/project_services/bamboo_service.rb2
-rw-r--r--app/models/project_services/teamcity_service.rb2
-rw-r--r--app/models/service.rb11
3 files changed, 9 insertions, 6 deletions
diff --git a/app/models/project_services/bamboo_service.rb b/app/models/project_services/bamboo_service.rb
index 5f5255ab487..644f2702889 100644
--- a/app/models/project_services/bamboo_service.rb
+++ b/app/models/project_services/bamboo_service.rb
@@ -48,7 +48,7 @@ class BambooService < CiService
end
def reset_password
- if prop_updated?(:bamboo_url)
+ if prop_updated?(:bamboo_url) && !prop_updated?(:password)
self.password = nil
end
end
diff --git a/app/models/project_services/teamcity_service.rb b/app/models/project_services/teamcity_service.rb
index fb11cad352e..3ff02ee75e2 100644
--- a/app/models/project_services/teamcity_service.rb
+++ b/app/models/project_services/teamcity_service.rb
@@ -45,7 +45,7 @@ class TeamcityService < CiService
end
def reset_password
- if prop_updated?(:teamcity_url)
+ if prop_updated?(:teamcity_url) && !prop_updated?(:password)
self.password = nil
end
end
diff --git a/app/models/service.rb b/app/models/service.rb
index 7e845d565b1..af5ce1635a6 100644
--- a/app/models/service.rb
+++ b/app/models/service.rb
@@ -110,7 +110,12 @@ class Service < ActiveRecord::Base
properties['#{arg}']
end
+ def #{arg}_was
+ @#{arg}_was
+ end
+
def #{arg}=(value)
+ @#{arg}_was = self.properties['#{arg}']
self.properties['#{arg}'] = value
end
}
@@ -120,10 +125,8 @@ class Service < ActiveRecord::Base
# ActiveRecord does not provide a mechanism to track changes in serialized keys.
# This is why we need to perform extra query to do it mannually.
def prop_updated?(prop_name)
- relation_name = self.type.underscore
- previous_value = project.send(relation_name).send(prop_name)
- return false if previous_value.nil?
- previous_value != send(prop_name)
+ return false if send("#{prop_name}_was").nil?
+ send("#{prop_name}_was") != send(prop_name)
end
def async_execute(data)