import os
from MiscUtils.Funcs import hostName as HostName
from SitePage import SitePage


class SelectModel(SitePage):

	def writeSideBar(self):
		self.writeln('<a href="?showHelp=1" class="SideBarLink">Help</a>')

	def writeContent(self):
		self.writeModelForm()
		self.writeRecentModels()
		self.writeKnownModels()
		if self.request().hasField('showHelp'):
			self.writeHelp()

	def writeModelForm(self, method='get', action='SelectDatabase'):
		self.writeHeading('Enter a model filename:')
		if method:
			method = 'method="%s"' % method
		if action:
			action = 'action="%s"' % action
		value = self.request().value('modelFilename', None)
		if value:
			value = 'value="%s"' % value
		self.writeln('''
<form %(method)s %(action)s>
	<!-- Model filename: -->
	<input type="text" name="modelFilename" size="50" value="%(value)s">
	&nbsp;
	<input type="submit" value="OK">
</form>
''' % locals())

	def writeRecentModels(self):
		wr = self.writeln
		self.writeHeading('Select a recent model:')
		recentModels = self.request().cookie('recentModels', [])
		if recentModels:
			recentModels = recentModels.split(';')
		if recentModels:
			for modelFilename in recentModels:
				self.writeModelLink(modelFilename)
		else:
			wr('<p>None</p>')

	def writeKnownModels(self):
		wr = self.writeln
		self.writeHeading('Select a known model:')
		knownModels = self.setting('KnownModels')
		hostName = HostName()
		if not hostName:
			hostName = '_default_'
		filenames = knownModels.get(hostName, []) + knownModels.get('_all_', [])
		if filenames:
			for filename in filenames:
				self.writeModelLink(filename)
		else:
			wr('<p>None</p>')

	def writeModelLink(self, filename):
		prettyName = os.path.split(filename)
		prettyName = '%s - %s' % (prettyName[1], prettyName[0])
		self.writeln('<p><a href="SelectDatabase?modelFilename=%s">%s</a></p>'
			% (filename, prettyName))
