# Copyright (C) University of Tennessee Health Science Center, Memphis, TN.
#
# This program is free software: you can redistribute it and/or modify it
# under the terms of the GNU Affero General Public License
# as published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU Affero General Public License for more details.
#
# This program is available from Source Forge: at GeneNetwork Project
# (sourceforge.net/projects/genenetwork/).
#
# Contact Drs. Robert W. Williams and Xiaodong Zhou (2010)
# at rwilliams@uthsc.edu and xzhou15@uthsc.edu
#
#
#
# This module is used by GeneNetwork project (www.genenetwork.org)
#
# Created by GeneNetwork Core Team 2010/08/10
#
# Last updated by GeneNetwork Core Team 2010/10/20



import string

from base.templatePage import templatePage
from base.webqtlTrait import webqtlTrait	
from AddToSelectionPage import AddToSelectionPage

#########################################
#      Remove Selection Page
#########################################
class RemoveSelectionPage(AddToSelectionPage):

	def __init__(self, fd):

		templatePage.__init__(self, fd)

		if not self.openMysql():
			return

		if not fd.genotype:
			fd.readGenotype()
		
		self.searchResult = fd.formdata.getvalue('searchResult')
		if self.searchResult:
			pass
		else:
			templatePage.__init__(self, fd)
			heading = 'Remove Selections'
			detail = ['You need to select at least one trait to remove from your selection.']
			self.error(heading=heading,detail=detail)
			return

		self.genSelection(fd=fd)
		self.writeHTML(fd)



	def genSelection(self, fd=None):
		collectionName = '%s_Select' % fd.RISet

		try:
			preSelection = fd.input_session_data[collectionName]
			preSelection = list(string.split(preSelection,','))
		except:
			preSelection = []
		
		if type("1") == type(self.searchResult):
			self.searchResult = [self.searchResult]
		
		if preSelection:
			for item in self.searchResult:
				try:
					preSelection.remove(item)
				except:
					pass
		self.searchResult = preSelection[:]
		
		if not self.searchResult:
			self.session_data_changed[collectionName] = ""
			return
		
		#self.searchResult.sort()
		for item in self.searchResult:
			if not item:
				self.searchResult.remove(item)
				
		searchResult2 = []
		self.theseTraits = []
		for item in self.searchResult:
			try:
				thisTrait = webqtlTrait(fullname=item, cursor=self.cursor)
				thisTrait.retrieveInfo(QTL=1)
				self.theseTraits.append(thisTrait)
				searchResult2.append(item)
			except:
				pass

		allTraitStr = string.join(searchResult2,',')

		self.session_data_changed[collectionName] = allTraitStr