#!/usr/bin/python


import os,sys,shutil


def docSortOrder(docType):
	if docType.find('Script') != -1:	return 10;
	if docType.find('Info') != -1: 		return 20;
	if docType.find('Übung') != -1: 	return 30;
	if docType.find('Rechen') != -1: 	return 40;
	if docType.find('Text') != -1: 		return 50;
	if docType.find('Dokument') != -1:	return 60;

def versionSortByYear(version):
	year=version[version.find('_')+1:-4]
	if year.find('_') != -1:
		addInfo=year[year.find('_')+1:]
		year=year[0:year.find('_')]
	if len(year) == 4:
		return float(year)*1000
	if len(year) == 5:
		return float(year)*1000+ord(year[4])
	return -1


def writeTopicFull(topic,indexFile):
	indexFile.write('<u><b>'+topic+'</b></u><br>\n<ul>\n')
	
def writeTopicCurrent(topic,indexFile):
	indexFile.write('  <li>\n    <u>'+topic+'</u><br>\n')
	
	
	
def writeDocItem(docType,title,indexFileFull,indexFileCurrent):
	if docSortOrder(docType)==10: docType='Script';
	if docSortOrder(docType)==20: docType='Info';
	if docSortOrder(docType)==30: docType='Übungsaufgaben';
	if docSortOrder(docType)==40: docType='Rechenaufgaben';
	if docSortOrder(docType)==50: docType='Textaufgaben';
	if docSortOrder(docType)==60: docType='Dokument';
	indexFileFull.write('  <li>\n    <u>'+docType+': '+title+'</u><br>\n')
	indexFileCurrent.write('    '+docType+': '+title+' ')	

	
	

def makeLinkToDoc(docType,title,version):
	baseDir=os.path.abspath(os.getcwd()+'/..')
	baseDir=baseDir[baseDir.rindex('/'):]
	return '<a href="/Documents'+baseDir+docType[1:]+'/'+title+'/'+version+'" target="_blank">'+version+'</a>'
	
def getMainVersions(versions):
	mainVersions=list()
	while len(versions)>0:
		if versions[0].count('_')>1:
			versions.pop(0)
		else:
			mainVersions.append(versions.pop(0))
	mainVersions.sort(key=versionSortByYear, reverse=True)
	return mainVersions
	
def getAlternativeVersions(versions):
	return versions
	
def getCustomParentInfo(docType,title):
	parentInfo='---'
	if os.path.exists(iDocType+'/'+iTitle+'/Quellen/parent.txt'):
		parentFile = open(iDocType+'/'+iTitle+'/Quellen/parent.txt', 'r')
		parentInfo = parentFile.read()
		parentFile.close()
	return parentInfo
	
def writeVersions(docType,title,versions,indexFileFull,indexFileCurrent):
	mainVersions=getMainVersions(versions)
	alternateVersions=getAlternativeVersions(versions)
	if mainVersions:
		indexFileFull.write('    Aktuelle Version: '+makeLinkToDoc(docType,title,mainVersions[0])+'<br>\n')
		indexFileCurrent.write(makeLinkToDoc(docType,title,mainVersions.pop(0))+'<br>\n')
	else:
		indexFileFull.write('    Aktuelle Version nicht verfügbar')
		indexFileCurrent.write('(Aktuelle Version nicht verfügbar)<br>\n')
	
	indexFileFull.write('    Vorherige Version: ')
	parentInfo=getCustomParentInfo(docType,title)
	if mainVersions and parentInfo=='---':
		parentInfo=''
	while mainVersions:
		indexFileFull.write(makeLinkToDoc(docType,title,mainVersions.pop(0)))
		if mainVersions:
			indexFileFull.write(' ; ')
	indexFileFull.write(parentInfo+'<br>\n')
	


fileCounter=0
folderCounter=0

sourceDir=os.path.abspath(os.getcwd())
sectionDir=sourceDir[sourceDir.rfind('/'):]
sourceDir=sourceDir[0:sourceDir.rfind('/')]
fakultasDir=sourceDir[sourceDir.rfind('/'):]
sourceDir=sourceDir+sectionDir
print('\nKopiere Dateien von: '+sourceDir)
onlineDir='/media/ludos-disciplinarum-misi/strato/Documents'+fakultasDir+sectionDir
print('nach: '+onlineDir+'\n')


sourceFile='./fullIndex.php'
targetFile=onlineDir+'/fullIndex.php'
print('Kopiere: '+sourceFile+'  -->  '+targetFile)
shutil.copyfile(sourceFile, targetFile)
fileCounter+=1

sourceFile='./currentIndex.php'
targetFile=onlineDir+'/currentIndex.php'
print('Kopiere: '+sourceFile+'  -->  '+targetFile+'\n')
shutil.copyfile(sourceFile, targetFile)
fileCounter+=1


#Hauptverzeichnisse erstellen
topicsFile = open('./Themenliste.txt', 'r')
topicsList = topicsFile.readlines()
topicsFile.close()
for i in range(len(topicsList)): #Zeilenumbruch entfernen
	topicsList[i]=topicsList[i].strip()

print('Erzeuge:')
#Jedes Themengebiet durchlaufen
for iTopic in topicsList:
	print(onlineDir+'/'+iTopic)
	os.mkdir(onlineDir+'/'+iTopic)
	folderCounter+=1
	#Liste der zur Verfügung stehenden Dokumenttypen für dieses Themengebiet erstellen
	folderContent = os.scandir('./'+iTopic)
	for iContent in folderContent: #Nur Ordner, Dateien ignorieren
		if iContent.is_dir() and iContent.name in ['Script','Info','Übung','Rechen','Text','Dokument']:
			docType=iContent.name
	
			print('   '+onlineDir[3:]+'/'+iTopic+'/'+docType)
			os.mkdir(onlineDir+'/'+iTopic+'/'+docType)
			folderCounter+=1
			
			titlesFile = open('./'+iTopic+'/'+docType+'/Dokumentenliste.txt', 'r')
			titlesList = titlesFile.readlines()
			titlesFile.close()
			for i in range(len(titlesList)): #Zeilenumbruch entfernen
				titlesList[i]=titlesList[i].strip()
			for iTitle in titlesList:
				print('      '+onlineDir[6:]+'/'+iTopic+'/'+docType+'/'+iTitle)
				os.mkdir(onlineDir+'/'+iTopic+'/'+docType+'/'+iTitle)
				folderCounter+=1
				
				folderContent = os.scandir('./'+iTopic+'/'+docType+'/'+iTitle)
				for iContent in folderContent: #Nur Dateien, Ordner ignorieren
					if iContent.is_file() and iContent.name[-4:]=='.pdf':
						version=iContent.name
						print('         kopiere: ...'+sourceDir[29:]+'/'+iTopic+'/'+docType+'/'+iTitle+'/'+version)
						print('         nach: ...'+onlineDir[9:]+'/'+iTopic+'/'+docType+'/'+iTitle+'/'+version)
						shutil.copyfile(sourceDir+'/'+iTopic+'/'+docType+'/'+iTitle+'/'+version, onlineDir+'/'+iTopic+'/'+docType+'/'+iTitle+'/'+version)
	
			
			print('\n')
				

		
		
		
	
	

