Esempio n. 1
0
		def productProperty_updateObject(self, productProperty):
			if not self._sqlBackendModule:
				raise Exception(u"SQL backend module disabled")

			ConfigDataBackend.productProperty_updateObject(self, productProperty)
			data = self._objectToDatabaseHash(productProperty)
			where = self._uniqueCondition(productProperty)
			possibleValues = data['possibleValues']
			defaultValues = data['defaultValues']
			if possibleValues is None:
				possibleValues = []
			if defaultValues is None:
				defaultValues = []
			del data['possibleValues']
			del data['defaultValues']
			self._sql.update('PRODUCT_PROPERTY', where, data)

			if possibleValues is not None:
				self._sql.delete('PRODUCT_PROPERTY_VALUE', where)

			for value in possibleValues:
				try:
					self._sql.doCommit = False
					logger.debug2(u'doCommit set to false')
					valuesExist = self._sql.getRow(
						u"select * from \"PRODUCT_PROPERTY_VALUE\" where "
						u"\"propertyId\" = '{0}' AND \"productId\" = '{1}' AND "
						u"\"productVersion\" = '{2}' AND \"packageVersion\" = '{3}' "
						u"AND \"value\" = '{4}' AND \"isDefault\" = {5}".format(
							data['propertyId'],
							data['productId'],
							str(data['productVersion']),
							str(data['packageVersion']),
							value,
							str(value in defaultValues)
						)
					)
					if not valuesExist:
						self._sql.doCommit = True
						logger.debug2(u'doCommit set to true')
						self._sql.insert('PRODUCT_PROPERTY_VALUE', {
							'productId': data['productId'],
							'productVersion': data['productVersion'],
							'packageVersion': data['packageVersion'],
							'propertyId': data['propertyId'],
							'value': value,
							'isDefault': (value in defaultValues)
							}
						)
				finally:
					self._sql.doCommit = True
					logger.debug2(u'doCommit set to true')
Esempio n. 2
0
	def productProperty_updateObject(self, productProperty):
		self._requiresEnabledSQLBackendModule()
		ConfigDataBackend.productProperty_updateObject(self, productProperty)
		data = self._objectToDatabaseHash(productProperty)
		where = self._uniqueCondition(productProperty)
		possibleValues = data.pop('possibleValues') or []
		defaultValues = data.pop('defaultValues') or []

		self._sql.update('PRODUCT_PROPERTY', where, data)

		try:
			self._sql.delete('PRODUCT_PROPERTY_VALUE', where)
		except Exception as delError:
			logger.debug2(u"Failed to delete from PRODUCT_PROPERTY_VALUE: {}", delError)

		for value in possibleValues:
			with disableAutoCommit(self._sql):
				valuesExist = self._sql.getRow(
					u"select * from PRODUCT_PROPERTY_VALUE where "
					u"`propertyId` = '{0}' AND `productId` = '{1}' AND "
					u"`productVersion` = '{2}' AND `packageVersion` = '{3}' "
					u"AND `value` = '{4}' AND `isDefault` = {5}".format(
						data['propertyId'],
						data['productId'],
						str(data['productVersion']),
						str(data['packageVersion']),
						value,
						str(value in defaultValues)
					)
				)

				if not valuesExist:
					self._sql.autoCommit = True
					logger.debug2(u'autoCommit set to True')
					self._sql.insert('PRODUCT_PROPERTY_VALUE', {
						'productId': data['productId'],
						'productVersion': data['productVersion'],
						'packageVersion': data['packageVersion'],
						'propertyId': data['propertyId'],
						'value': value,
						'isDefault': bool(value in defaultValues)
						}
					)