#!/usr/bin/python
# -*- coding: utf8 -*-


#=========================================
# (c) Alfredo Barrainkua. Lizentzia: GPLv3
#=========================================

# Filename: ordu2ewb+dae2014-example.py




__module_name__ = "Ordutegiak E.E.D.(D.A.E.)-ra"
__module_version__ = "3.3"
__module_description__ = "Peñalara Software-ren GCH fitxategietatik oinarriturik, irakasleen, eta ikasle taldeen ordutegi \
fitxategiak sortu D.A.E. inportazio formatuan. Sqlite datu-base bat erabiltzen du."
__module_author__ = "Alfredo Barrainkua"


###############################################################################################################

#						Ordutegiak to D.A.E (Sqlite-tik pasatuz)

###############################################################################################################

# (c) Alfredo Barrainkua. Lizentzia: GPLv3

###############################################################################################################
#
# 3.3 - 2014-11-18
#	Txantiloiaren kodea HARD-WIRED zegoen kodean. Orain definiziotik hartzen da.
# 3.2 - 2013-10-07
#	Tutoreak zuzendu
# 3.1 - 2013-09-05
#	Irakasleak, asignaturak eta gelak egokitu
#	Programari izena aldatzen zaio. Lehen, "ordu2dae2013-iurreta" zen.
# 3.0 - 2013-05-15
#	Irakasleen izen osoa jartzen da eremu bezala datu-basean, eta horrela, web-gunerako ere balio du
# 2.4 - 2012-09-13
#	Ziklo berrien lehen mailako asignaturak gehitu
# 2.3 - 2012-09-04
#	2012-2013 ikasturtera egokitu
#	Datu-basearen luzapena .sqlite da
#	unicode kodeatzaileak gehitu
#	Irakaslearen izen laburra (IRAKASLEAK zerrendan gakoa izango dena) ASCII bihurtzen da
# 2.2 - 2011-11-03
#	A29 -> "Formakuntza / Hobekuntza"
#	A32 -> "Kreditu Orduak"
#	Ordutergien fitxategia sortzean hainbat zuzenketa
#	Jardueren kodeetan hainbat zuzenketa
# 2.1 - 2011-10-02
#	Gelen fitxategia ateratzen du
# 2.0 - 2010-10-25
#	2010. urteko DAE berrira egokitua
# 1.0 - 2009-12-23
#	Hasierako bertsioa DAE zaharrekoarena oinarritzat hartuaz.
#	MySQL-tik -> Sqlite-ra pasatu, eta fitxategi batean dena
###############################################################################################################
#
# Aginte lerroko parametroak:
# GCH aplikazioaren fitxategia. Jartzen bada, datu-basea sortzen da. Ez bada jartzen, dagoen datu-basea erabiltzen da.
#
###############################################################################################################

# NOLA:
# - Programaren izena aldatu (behar bada)
# - EED20xx direktorio berria sortu eta FILEPATH aldagaia eguneratu.
# - IKASTURTEA aldagaia eguneratu
# - Deskargatu hezkuntzako fitxategiak
# - Begiratu txantiloia berdina den
# - Lan kode berririk badago, gehitu.
# - Asignetura / moduluen kodeak gehitu berririk badago (Aurton denak dira LOE, beraz ....)
# - Tutoreak aldatu
# - Ikasgela erreferentziak aldatu taldeentzat
# - Irakasle berrrien datuak gehitu
# - 

import string, readline
import sys, os, commands
import subprocess
import codecs
from datetime import date
from time import time, localtime, strftime
import sqlite3

# Scriptaren izena
PRGNAME = "ordu2web+dae2014-example"
DBFILE = PRGNAME + ".db3"

# Kopiatu datu-base fitxategia web gunera
KOPITOWEB = 1



IKASTETXE_KODEA = "014950"
IKASTURTEA = "2014"
IR_BERTSIOA = "1"
TA_BERTSIOA = "1"
OR_BERTSIOA = "0"


TXANTILOIA = "00031778"
GELA_OFFSET = ""
FILEPATH = "EED" + IKASTURTEA + "/"


# GCH programarentzat
EGUNAK = {"L" : "1", "M" : "2", "X" : "3", "J" : "4", "V" : "5"}
SAIOAK = {"1" : "01", "2" : "02", "3" : "03", "4" : "04", "5" : "05", "6" : "06", "7" : "07", "8" : "08", "9" : "09", "10" : "10", "11" : "11", "12" : "12"}
# Zereginen hasiera eta bukaera orduak
H_ORDUA = {"1" : "08:15", "2" : "09:15", "3" : "10:15", "4" : "11:15", "5" : "11:45", "6" : "12:45", "7" : "13:45", "8" : "17:00", "9" : "18:00", "10" : "19:00", "11" : "20:00"}
B_ORDUA = {"1" : "09:15", "2" : "10:15", "3" : "11:15", "4" : "11:45", "5" : "12:45", "6" : "13:45", "7" : "14:45", "8" : "18:00", "9" : "19:00", "10" : "20:00", "11" : "21:00"}


# Taldeen ordutegiak sortzeko
EGUNAK_T = {0 : "1", 1 : "2", 2 : "3", 3 : "4", 4 : "5"}
SAIOAK_T = {0 : "01", 1 : "02", 2 : "03", 3 : "04", 4 : "05", 5 : "06", 6 : "07", 7 : "08", 8 : "09", 9 : "10", 10 : "11", 11 : "12"}
# Klaseen hasiera eta bukaera orduak
H_ORDUA_T = {0 : "08:15", 1 : "09:15", 2 : "10:15", 3 : "11:15", 4 : "11:45", 5 : "12:45", 6 : "13:45", 7 : "17:00", 8 : "18:00", 9 : "19:00", 10 : "20:00"}
B_ORDUA_T = {0 : "09:15", 1 : "10:15", 2 : "11:15", 3 : "11:45", 4 : "12:45", 5 : "13:45", 6 : "14:45", 7 : "18:00", 8 : "19:00", 9 : "20:00", 10 : "21:00"}


# Irakasleen identifikatzailea.
# Dokumentu mota: 0001 -> NANa; 0002 -> Egoitza baimena; 0003 -> beste batzuk (4 karaktere), NAN + letra (15 karaktere), Izena (20), Abizena 1 (40), Abizena 2 (40)
# Kargua (3), Kargua2 (3), Kargua3 (3), Mintegia (100), Izenpe maila (2), Jornada mota (2), Orduak guztira (5, OO:MM), Ordu lektiboak guztira (5, OO:MM)
# 60 urteko murrizketa (1) (0 = EZ / 1= BAI), Osasun murrizketa (1, 0=EZ / 1=BAI), Oharrak (250)
# Ikastetxe publikoetan.....
# Kobrantza (1) (S/N), Kargu izenpe data (EEHHUUUU)
IRAKASLEAK = {
		"Arbeo" :		["1", "11111111Q", "Alfonso", "Arbeo", "",
						"", "", "", "Fabrikazio Mekanikoa", "", "", "", "30:00",
						"0", "0", "",
						"", ""],
		"Arkarazo" :		["1", "22222222S", "Adán", "Arkarazo", "",
						"", "", "", "FOL", "", "", "", "30:00",
						"0", "0", "",
						"", ""],
		"Arregi" :		["1", "33333333N", "Angel", "Arregi", "",
						"", "", "", "Automozioa", "", "", "", "30:00",
						"0", "0", "",
						"", ""],
		"Arrizabalaga" :	["1", "44444444E", "Amagoia", "Arrizabalaga", "",
						"", "", "", "FOL", "", "", "", "30:00",
						"0", "0", "",
						"", ""],
		"Arroitajaure" :	["1", "55555555G", "Andoni", "Arroitajauregi", "",
						"", "", "", "Fabrikazio Mekanikoa", "", "", "", "30:00",
						"0", "0", "",
						"", ""],
		"Barrainkua" :		["1", "66666666K", "Ander", "Barrainkua", "", \
						"", "", "", "Informatika", "", "", "", "30:00", \
						"0", "0", "",
						"", ""],
		"Belaustegi" :		["1", "77777777C", "Bego", "Belaustegi", "",
						"", "", "", "Administraritza", "", "", "", "30:00",
						"0", "0", "",
						"", ""],
		"Bengoetxea" :		["1", "88888888H", "Bego", "Bengoetxea", "",
						"", "", "", "Fabrikazio Mekanikoa", "", "", "", "30:00",
						"0", "0", "",
						"", ""],
		"Berriozabalg" :	["1", "99999999T", "Belén", "Berriozabalgoitia", "",
						"", "", "", "Automozioa", "", "", "", "30:00",
						"0", "0", "",
						"", ""],
		"Corpion" :		["1", "00000000E", "Carlos", "Corpión", "",
						"", "", "", "Fabrikazio Mekanikoa", "", "", "", "30:00",
						"0", "0", "",
						"", ""],
		"Elejabarriet" :	["1", "12121212Q", "Edurne", "Elejabarrieta", "",
						"", "", "", "Fabrikazio Mekanikoa", "", "", "", "30:00",
						"0", "0", "",
						"", ""],
		"Elordieta" :		["1", "13131313Y", "Edén", "Elordieta", "",
						"", "", "", "Informatika", "", "", "", "30:00",
						"0", "0", "",
						"", ""],
		"Elorza" :		["1", "14141414M", "Eduardo", "Elorza", "",
						"", "", "", "Administraritza", "", "", "", "30:00",
						"0", "0", "",
						"", ""],
		"Errasti" :		["1", "15151515L", "Edurne", "Errasti", "",
						"", "", "", "Elektronika", "", "", "", "30:00",
						"0", "0", "",
						"", ""],
		"Gallastegi A" :	["1", "16161616C", "Gaioa", "Gallastegi", "",
						"", "", "", "Informatika", "", "", "", "30:00",
						"0", "0", "",
						"", ""],
		"Gallastegi J" :	["1", "17171717F", "Gurutz", "Gallastegi", "",
						"", "", "", "Elektronika", "", "", "", "30:00",
						"0", "0", "",
						"", ""],
		"Gomez" :		["1", "18181818B", "Gorosti", "Gómez", "",
						"", "", "", "Fabrikazio Mekanikoa", "", "", "", "30:00",
						"0", "0", "",
						"", ""],
		"Gutierrez L" :		["1", "19191919B", "Gotzon", "Gutiérrez", "",
						"", "", "", "Automozioa", "", "", "", "",
						"0", "0", "",
						"", ""],
		"Jimenez" :		["1", "20202020J", "Juan", "Jiménez", "",
						"", "", "", "Fabrikazio Mekanikoa", "", "", "", "",
						"0", "0", "",
						"", ""],
		"Lopez" :		["1", "21212121J", "Luis", "López", "",
						"", "", "", "Elektronika", "", "", "", "",
						"0", "0", "",
						"0", ""],
		"Maguregi" :		["1", "23232323P", "Maider", "Maguregi", "",
						"", "", "", "Fabrikazio Mekanikoa", "", "", "", "",
						"0", "0", "",
						"", ""],
		"Mendia" :		["1", "24242424Z", "Mirari", "Mendia", "",
						"", "", "", "Administraritza", "", "", "", "",
						"0", "0", "",
						"", ""],
		"Odiaga" :		["1", "25252525Z", "Oier", "Odiaga", "",
						"", "", "", "Elektronika", "", "", "", "",
						"0", "0", "",
						"", ""],
		"Onaindia" :		["1", "26262626F", "Oier", "Onaindia", "",
						"", "", "", "Automozioa", "", "", "", "",
						"0", "0", "",
						"", ""],
		"Pena" :		["1", "27272727V", "Pepe", "Peña", "",
						"", "", "", "Elektronika", "", "", "", "",
						"0", "0", "",
						"", ""],
		"Sarduy" :		["1", "28282828L", "Sabino", "Sarduy", "",
						"", "", "", "Fabrikazio Mekanikoa", "", "", "", "",
						"0", "0", "",
						"", ""],
		"Serrano" :		["1", "29292929Y", "Salvador", "Serrano", "",
						"", "", "", "Automozioa", "", "", "", "",
						"0", "0", "",
						"", ""],

# Bakanteak 2013

		"Urionaguena" :		["1", "30303030D", "Unai", "Urionaguena", "",
						"", "", "", "Administraritza", "", "", "", "",
						"0", "0", "",
						"", ""],
		"Urresti" :		["1", "31313131G", "Uhon", "Urresti", "",
						"", "", "", "Automozioa", "", "", "", "",
						"0", "0", "",
						"", ""],
		"Urrutxi" :		["1", "32323232P", "Unai", "Urrutxi", "",
						"", "", "", "Administraritza", "", "", "", "",
						"0", "0", "",
						"", ""],
		"Vitoria" :		["1", "34343434W", "Vanessa", "Vitoria", "",
						"", "", "", "Administraritza", "", "", "", "",
						"0", "0", "",
						"", ""],
		"Ibabe" :		["1", "35353535Y", "Igor", "Ibabe", "",
						"", "", "", "", "", "", "", "",
						"0", "0", "",
						"", ""],
		"Aranburu" :		["1", "36363636T", "Adán", "Aranburu", "",
						"", "", "", "FOL", "", "", "", "",
						"0", "0", "",
						"", ""],
		"Arroitajaur M" :	["1", "37373737Q", "Amagoia", "Arroitajauregi", "",
						"", "", "", "", "", "", "", "",
						"0", "0", "",
						"", ""],
		"Ormaza" :		["1", "38383838B", "Oihana", "Ormaza", "",
						"", "", "", "", "", "", "", "",
						"0", "0", "",
						"", ""],
		"Gutierrez Y" :		["1", "39393939W", "Gotzon", "Gutiérrez", "",
						"", "", "", "FOL", "", "", "", "",
						"0", "0", "",
						"", ""],
		"Aldazabal" :		["1", "40404040P", "Ander", "Aldazabal", "",
						"", "", "", "Automozioa", "", "", "", "",
						"0", "0", "",
						"", ""],
		"Zubiaga" :		["1", "41414141F", "Zahira", "Zubiaga", "",
						"", "", "", "Fabrikazio Mekanikoa", "", "", "", "",
						"0", "0", "",
						"", ""],
		"Galdos" :		["1", "42424242W", "Gonzalo", "Galdós", "",
						"", "", "", "Elektronika", "", "", "", "",
						"0", "0", "",
						"", ""],
		"Ibarluzea" :		["1", "43434343K", "Ibon", "Ibarluzea", "",
						"", "", "", "", "", "", "", "",
						"0", "0", "",
						"", ""],
		"Asurmendi" :		["1", "45454545K", "Aitor", "Asurmendi", "",
						"", "", "", "Informatika", "", "", "", "",
						"0", "0", "",
						"", ""],
# Bakanteak 2014
		"Iribar" :		["1", "46464646Z", "Iraioz", "Iribar", "",
						"", "", "", "", "", "", "", "",
						"0", "0", "",
						"", ""],
		"Laka" :		["1", "47474747J", "Lander", "Laka", "",
						"", "", "", "Automozioa", "", "", "", "",
						"0", "0", "",
						"", ""],
		"Lores" :		["1", "48484848R", "Luis", "Lores", "",
						"", "", "", "", "", "", "", "",
						"0", "0", "",
						"", ""],
		"Oiartzabal" :		["1", "49494949M", "Oier", "Oiartzabal", "",
						"", "", "", "Automozioa", "", "", "", "",
						"0", "0", "",
						"", ""],
		"Uriarte" :		["1", "50505050T", "Unai", "Uriarte", "",
						"", "", "", "Fabrikazio Mekanikoa", "", "", "", "",
						"0", "0", "",
						"", ""],
		"Astoreka" :		["1", "51515151T", "Ander", "Astoreka", "",
						"", "", "", "Fabrikazio Mekanikoa", "", "", "", "",
						"0", "0", "",
						"", ""],
		"Gonzalez" :		["1", "52525252T", "Gotzon", "González", "",
		        			"", "", "", "Informatika", "", "", "", "",
						"0", "0", "",
						"", ""],
		}


# Ikastetxeko ikasgelak. 2010 bertsioan, ikasle taldeek ikasgela bat daukate esleituta, erreferentzia gisa
# DAE: Kodea (8), ezizena (50), kapazitatea (3)
# Taulan: Peñalara kodea, Kodea (1 -> 00000001), Kapazitatea
IKASGELAK = {
	    "NA103_Inform" : ["00080099", "30"],
	    "NA104_e-gela" : ["00080081", "24"],
	    "NA105" : ["00080075", "28"],
	    "NA106_Inform" : ["00080105", "30"],
	    "NA107_Bideo" : ["00080100", "24"],
	    "NA109_EnpSim" : ["00080084", "12"],
	    "NA110" : ["00080076", "24"],
	    "NA111" : ["00080098", "24"],
	    "NA112-FOL-PC" : ["00080093", "20"],
	    "NA113" : ["00080097", "24"],
	    "NA114" : ["00102749", "24"],
	    "IM001_Ele-M1" : ["00080080", "28"],		# ????
	    "IM003" : ["00080090", "28"],
	    "IM006_Ele-M2" : ["00080073", "28"],
	    "IM007_Askota" : ["00080108", "28"],
	    "IM010_Margok" : ["00080083", "28"],
	    "IM101_Elektr" : ["00080085", "28"],
	    "IM102" : ["00080092", "20"],
	    "IM103" : ["00080094", "20"],
	    "EG001_Arreta" : ["00102730", "30"],
	    "EG002_AS2-T2" : ["00080089", "30"],
	    "EG004_AS2-T1" : ["00080079", "30"],
	    "EG009_AS2" : ["00080088", "30"],
	    "EG101_I-Mod" : ["00080102", "24"],
	    "EG102_II-Mod" : ["00080087", "24"],
	    "EG104_III-Mo" : ["00080106", "24"],
	    "EG109_IV-Mod" : ["00080078", "24"],
	    "FS008" : ["00080071", "20"],
	    "FS009" : ["00080072", "20"],
	    "FS010" : ["00080095", "20"],
	    "FS011" : ["00080074", "20"],
	    "FS012_Soldad" : ["00080101", "12"],
	    "FS013" : ["00102719", "25"],
	    "FS014_CNC-2" : ["00080077", "20"],
	    "FM000_Tailer" : ["00080096", "30"],
	    "FM003_CNC-1" : ["00080103", "24"],
	    "FM004_Ikasge" : ["00102759", "24"],
	    "FM103_Metrol" : ["00080086", "30"],
	    "FM104_Hidrau" : ["00080082", "20"],
	    "FM105_Automa" : ["00080104", "24"],
#	    "FM14B_Ikasge" : ["00080107", "30"],
	}


# !!!!!!!!!!!!!!!!! Hezkuntzako taulen interpretazioa !!!!!!!!!!!!!!!!!!!
#Espezialitatea: V55T14 xxxx Espezialitate kodea + izena gazteleraz + izena euskaraz
#Moduluen kodeak: V55T15W18T54_2 xxxx maila (11 -> EM, 12->GM) + xxxx plana (1 = LOGSE, 3 = LOE) + xxxx Espezialitatea + xxxxxxxx Asignatura
#Moduluen izenak: V55T14W18T54_1 xxxxxxxx Asignatura + Asignaturaren izena



# Taldeen kodeak
# Talde kodea, Egunekoa / Matutino (0001) / Arratsaldez / Vespertino (0002), Eredua (0001 -> A / 0003 -> D / 0004 -> Ingelesez),
# Plana (LOGSE = 1; LOE=3), Maila (11=ErdiMaila; 12=GoiMaila), Espezialitatea (V55T14), Kurtso kodea (V55T12), Talde mota (1= Ofiziala),
# Ordutegi txantiloiaren kodea (8karaktere), Erreferentziako Ikasgela, Ikasle kopurua, Tutorearen NANa (programak ateratzen du izenarekin), 
TALDEAK =  {
	    # ADMINISTRARITZA
	    "AK3-1D" : ["502043", "1", "3", "3", "12", "1486", "0003", "0001", TXANTILOIA, "NA111", "20", "Mendia"],
	    "AK3-2D" : ["668065", "1", "3", "3", "12", "1486", "0014", "0001", TXANTILOIA, "NA113", "24", "Ibarluzea"],

	    "GA2-1A" : ["00502047", "1", "001", "003", "11", "0808", "0003", "0001", TXANTILOIA, "NA110", "21", "Barturen"],
	    "GA2-2A" : ["539281", "1", "001", "003", "11", "0808", "0014", "0001", TXANTILOIA, "NA107_Bideo", "16", "Urionaguena"],

	    # AUTOMOZIOA
	    "AT3-1D" : ["502045", "1", "003", "003", "12", "0096", "0003", "0001", TXANTILOIA, "FS013", "19", "Barroeta"],
	    "AT3-2D" : ["502046", "1", "003", "003", "12", "0096", "0014", "0001", TXANTILOIA, "IM001_Ele-M1", "17", "Uribelarrea"],

	    "IE2-1D" : ["502049", "1", "003", "003", "11", "1400", "0003", "0001", TXANTILOIA, "IM101_Elektr", "24", "Aldazabal"],
	    "IE2-2D" : ["539265", "1", "003", "003", "11", "1400", "0014", "0001", TXANTILOIA, "IM103", "15", "Urresti"],

	    # ELEKTRONIKA
	    "ME3-1D" : ["502053", "1", "003", "3", "12", "1499", "0003", "0001", TXANTILOIA, "EG109_IV-Mod", "13", "Errasti"],
	    "ME3-2D" : ["668075", "1", "003", "3", "12", "1499", "0014", "0001", TXANTILOIA, "EG102_II-Mod", "14", "Gallastegi J"],

	    # FABRIKAZIO MEKANIKOA
	    "PP3-1D" : ["502057", "1", "003", "003", "12", "0542", "0003", "0001", TXANTILOIA, "FM103_Metrol", "23", "Zubiaga"],
	    "PP3-2D" : ["502058", "1", "003", "003", "12", "0542", "0014", "0001", TXANTILOIA, "FM003_CNC-1", "16", "Arroitajaure"],

	    "MT2-1D" : ["502054", "1", "003", "003", "11", "0457", "0003", "0001", TXANTILOIA, "FM104_Hidrau", "20", "Gortazar"],
	    "MT2-2D" : ["502055", "1", "003", "003", "11", "0457", "0014", "0001", TXANTILOIA, "FS014_CNC-2", "20", "Gomez"],

	    # INFORMATIKA
	    "SI3-1D" : ["502059", "1", "003", "003", "12", "0812", "0003", "0001", TXANTILOIA, "NA106_Inform", "15", "Elordieta"],
	    "SI3-2D" : ["502060", "1", "003", "003", "12", "0812", "0014", "0001", TXANTILOIA, "NA103_Inform", "10", "Madariaga"],

	    # GIZA ZERBITZUAK
	    "MA2-1D" : ["502052", "1", "003", "3", "11", "1518", "0003", "0001", TXANTILOIA, "EG002_AS2-T2", "21", "Gondra"],
	    "MA2-2D" : ["668077", "1", "003", "3", "11", "1518", "0014", "0001", TXANTILOIA, "EG001_Arreta", "16", "Apraiz"],

	    # Oinarriko Formakuntza (Sarbide Proba)
	    "SP3" : ["21", "2", "1", "003", "320", "0288", "0002", "0001", "00016928", "NA107_Bideo", "28", "Mondragon"],
	}



# !!!!!!!!!!!!!!!!! Hezkuntzako taulen interpretazioa ASIGNATURAK ATERATZEKO !!!!!!!!!!!!!!!!!!!
#Espezialitatea: V55T14 xxxx Espezialitate kodea + izena gazteleraz + izena euskaraz
#Moduluen kodeak: V55T15W18T54_2 xxxx maila (11 -> EM, 12->GM) + xxxx plana (1 = LOGSE, 3 = LOE) + xxxx Espezialitatea + xxxxxxxx Asignatura
#Moduluen izenak: V55T15W18T54_1 xxxxxxxx Asignatura + Asignaturaren izena


# Moduluak
# Modulu kodea, Modulu mota (T = Transbertsala / O = Aukerazkoa / ' ' = Defektuzkoa)
ASIGNATURAK = {
		# ADMINISTRARITZA
		# AK3(1486): 00406491 -> 00406504 (LOE)
		# 1. maila
		"AK3-GBES" : ["406492", " "],
		"AK3-BIPr" : ["406493", " "],
		"AK3-MJPI" : ["406494", " "],
		"AK3-KBAr" : ["406495", " "],
		"AK3-GBKu" : ["406496", " "],

		"AK3-LPOr" : ["406497", " "],
		"AK3-ITek" : ["406491", " "],
		# 2. maila
		"AK3-DJEK" : ["406498", " "],
		"AK3-FKud" : ["406499", " "],
		"AK3-KFis" : ["406500", " "],
		"AK3-LMKu" : ["406501", " "],
		"AK3-ESim" : ["406502", " "],

		"AK3-LPre" : ["406504", " "],

		# GA2(0808): 5036 -> 5047 (LOE)
		# 1. maila
		"GA2-EKBA" : ["5036", " "],
		"GA2-SAEr" : ["5037", " "],
		"GA2-IITr" : ["5039", " "],
		"GA2-KTek" : ["5040", " "],
		"GA2-GBAE" : ["5041", " "],

		"GA2-ITek" : ["5043", " "],
		# 2. maila
		"GA2-EAdm" : ["5038", ""],
		"GA2-KDTr" : ["5042", ""],
		"GA2-EIka" : ["5044", ""],
		"GA2-DKEO" : ["5045", ""],

		"GA2-LPOr" : ["5046", ""],

		"GA2-LPre" : ["5047", ""],


		# AUTOMOZIOA
		# AT3(0096): 402449 -> 402461 (LOE)
		# 1. maila
		"AT3-SESE" : ["402449", " "],
		"AT3-MTBS" : ["402451", " "],
		"AT3-EEMF" : ["402452", " "],
		"AT3-IEgi" : ["402454", " "],
		"AT3-KHTe" : ["402456", " "],

		"AT3-LPOr" : ["402458", " "],
		# 2. maila
		"AT3-ITET" : ["402450", " "],
		"AT3-GTEs" : ["402453", " "],
		"AT3-IMKL" : ["402455", " "],

		"AT3-EESo" : ["402459", " "],
		"AT3-ITek" : ["402461", " "],

		"AT3-LPre" : ["", " "],

# 2013 berriak ?????????
		"AT3-MTSO" : ["402459", " "],



		# IE2(1400): 405946 -> 405957 (LOE)
		# 1. maila
		"IE2-OMek" : ["405946", " "],
		"IE2-Moto" : ["405947", " "],
		"IE2-TBSi" : ["405948", " "],
		"IE2-KASi" : ["405949", " "],
		"IE2-IZEO" : ["405950", " "],
		"IE2-SESi" : ["405951", " "],

		"IE2-ITek" : ["405952", " "],
		# 2. maila
		"IE2-MSOs" : ["405953", " "],
		"IE2-FZED" : ["405954", " "],

		"IE2-LPOr" : ["405955", " "],
		"IE2-EESo" : ["405956", " "],

		"IE2-LPre" : ["405957", " "],


		# FABRIKAZIO MEKANIKOA
		# PP3(542): 2473 -> 2486 (LOE)
		# 1. maila
		"PP3-PEgi" : ["2486", " "],
		"PP3-FPGa" : ["2478", " "],
		"PP3-IGra" : ["2483", " "],
		"PP3-MKMD" : ["2475", " "],
		"PP3-KLPB" : ["2481", " "],

		"PP3-LPOr" : ["2473", " "],
		# 2. maila
		"PP3-OLFa" : ["2480", " "],
		"PP3-FMSA" : ["2476", " "],
		"PP3-PPro" : ["2477", " "],
		"PP3-ZKBM" : ["2484", " "],

		"PP3-EESo" : ["2479", " "],
		"PP3-ITek" : ["2482", " "],

		"PP3-LPre" : ["2474", " "],

#		"PP3-LTHa" : ["", "T"],
#		"PP3-KLPB" : ["2479", " "],

		# MT2(457): 1326 -> 1336 (LOE)
		# 1. maila
		"MT2-MSai" : ["1334", " "],
		"MT2-THBP" : ["1328", " "],
		"MT2-MPro" : ["1335", " "],
		"MT2-IGra" : ["1332", " "],
		"MT2-SAut" : ["1336", " "],

		"MT2-ITek" : ["1331", " "],
		# 2. maila
		"MT2-ZKBM" : ["1333", " "],
		"MT2-UEEK" : ["1329", " "],

		"MT2-LPOr" : ["1326", " "],
		"MT2-EESo" : ["1330", " "],

		"MT2-LPre" : ["1327", " "],


		# ELEKTRONIKA
		# ME3(1499): 00406937 -> 00406950 (LOE)
		# 1. maila
		"ME3-ZEAn" : ["406937", ""],
		"ME3-TMik" : ["406938", ""],
		"ME3-ADTM" : ["406939", ""],
		"ME3-EITM" : ["406940", ""],

		"ME3-LPOr" : ["406941", ""],
		# 2. maila
		"ME3-IKTM" : ["406943", ""],
		"ME3-ATML" : ["406944", ""],
		"ME3-BTML" : ["406945", ""],
		"ME3-TEMM" : ["406946", ""],
		"ME3-MLEA" : ["406947", ""],

		"ME3-EESo" : ["406949", ""],
		"ME3-ITek" : ["406942", ""],

		"ME3-LPre" : ["406950", ""],


		# INFORMATIKA
		# SI3(0812): 402462 -> 402476 (LOE)
		# 1. maila
		"SI3-SEEz" : ["402462", "T"],
    		"SI3-SPAd" : ["402463", "T"],
		"SI3-HOin" : ["402464", "T"],
		"SI3-DBKu" : ["402465", "T"],
		"SI3-MLIK" : ["402466", "T"],

		"SI3-LPOr" : ["402473", "T"],
		# 2. maila
		"SI3-SEAd" : ["402467", "T"],
		"SI3-SZIn" : ["402468", "T"],
		"SI3-WAEz" : ["402469", "T"],
		"SI3-DKSA" : ["402470", "T"],
		"SI3-SEHa" : ["402471", "T"],
		"SI3-SIAP" : ["402472", "T"],

		"SI3-EESo" : ["402474", "T"],
		"SI3-ITek" : ["402476", "T"],

		"SI3-LPre" : ["", "T"],


		# GIZA ZERBITZUAK
		# MA2(1518): 00406697 -> 00406710 (LOE)
		# 1. maila
		"MA2-MEPA" : ["406699", ""],
		"MA2-TSoz" : ["406700", ""],
		"MA2-MEPE" : ["406701", ""],
		"MA2-EELa" : ["406702", ""],
		"MA2-OArr" : ["406703", ""],
		"MA2-AHig" : ["406704", ""],
		"MA2-LLag" : ["406698", ""],

		"MA2-ITek" : ["406697", ""],
		# 2. maila
		"MA2-ALPs" : ["406705", ""],
		"MA2-KLag" : ["406706", ""],
		"MA2-Tele" : ["406710", ""],

		"MA2-LPOr" : ["406707", ""],
		"MA2-EESo" : ["406708", ""],

		"MA2-LPre" : ["406709", ""],


		# GIZA ZIENTZIAK
		"SP3-Mate" : ["", "T"],
		"SP3-Gazt" : ["", "T"],
		}


# Jarduera mota, ekintza mota, Lanen deskripzioa SUMMARY / LOCATION / DESCRPTION
LANAK = {
	"A01" : ["212", "", "Asistentzia","",""],
	"A02" : ["213", "005", "Ekoskan","",""],
	"A03" : ["213", "022", "Eleanitza","",""],
	"A04" : ["213", "016", "e-learning","",""],
	"A05" : ["213", "024", "Enpresan egonaldia","",""],
	"A06" : ["213", "021", "Erasmus / Leonardo","",""],
	"A07" : ["304", "", "Familiekin harremanak","",""],
	"A08" : ["213", "036", "Lantokiko prestakuntza","",""],
	"A09" : ["204", "", "Zaintza irakasle gelan","Irakasle gela","Irakasle gelan egon behar da. Ez ahaztu zaintza liburuan sinatzea."],
	"A10" : ["213", "015", "Guneka","",""],
	"A11" : ["213", "025", "Hizkuntza normalkuntza","",""],
	"A12" : ["213", "018", "Kalitatea","",""],
	"A13" : ["213", "029", "Lan arriskuen prebentzioa","",""],
	"A14" : ["213", "019", "Lanbide","",""],
	"A15" : ["101", "", "","",""],
	"A16" : ["213", "004", "Mantentzea","",""],
	"A17" : ["213", "005", "Marketting","",""],
	"A18" : ["213", "035", "IKT Administrazioa","",""],
	"A19" : ["213", "036", "Proba libreak","",""],
	"A20" : ["210", "", "Alorgune bilera","Alorgunea","\\nAlorreko bilerak: Alorgunean\\nTutore bilerak: Irakasle gelan\\nAlorburu bilerak: NA104 gelan "],
	"A21" : ["213", "035", "TKNIKA","",""],
	"A22" : ["213", "036", "Txukun 5S","",""],
	"A23" : ["213", "020", "UrratsBat","",""],
	"A24" : ["213", "005", "Web mantentzea","",""],
	"A25" : ["201", "", "Zuzendaritza","",""],
	"A26" : ["213", "005", "Zuzendaritzari laguntza","",""],
	"A27" : ["213", "024", "Enpresekin harremanak","",""], # Ekintza 036????  Ez da erabiltzen
	"A28" : ["213", "036", "Irakaskuntza ez arautua","",""],
	"A29" : ["305", "028", "Formakuntza / Prestakuntza","",""],
	"A30" : ["201", "", "Zaintza zuzendaritzan","Zuzendaritza",""],
	"A31" : ["301", "036", "Klaustroa","",""],
	"A32" : ["213", "036", "Kreditu Orduak","",""],
	"A33" : ["102", "036", "Indartze klaseak","",""], # Ekintzaren beharrik dago???
	"A34" : ["213", "015", "Adigune bilera","",""],
	"A35" : ["203", "036", "Alorburu bilera","Irakasle gela","Aurretiaz abisatuko da bilera dagoen ala ez."],
	"A36" : ["201", "", "Gidagune bilera","",""],
	"A37" : ["213", "036", "Ikasburu bilera","Irakasle gela",""],
	"A38" : ["206", "013", "Tutore bilera","Irakasle gela",""],
	"A39" : ["213", "035", "Elkarnet","",""],
	"A40" : ["213", "018", "Kalitate prozesua","",""],
	"A41" : ["213", "036", "Sarbide Proba","",""],
	"A42" : ["213", "002", "Elkartuz","",""],
	"A43" : ["213", "009", "Hobetuz","",""],
	"A44" : ["213", "035", "IKT Sustatzailea","",""],
	"A45" : ["401", "", "Eskeinitako ez ohiko orduak","",""],
	"A46" : ["213", "028", "Trebakuntza-Berrikuntza","",""],
	"A47" : ["213", "036", "ZerBehar","",""],
	"A48" : ["213", "036", "HeziBi","",""],
	"A49" : ["213", "036", "Gallanda Proiektua","",""],
	"A50" : ["213", "036", "Proiektu Ferrobiarioa","",""],
	"A51" : ["213", "036", "Serious-Game Proiektua","",""],
	"A52" : ["213", "036", "European-SchoolNet","",""],
}


#-----------------------------------------------------------------------------------------------------------------

# Erregistro eta datuen fitxategiak...
gaur_d = date.today()


LOGFILE = FILEPATH + PRGNAME + "-" + gaur_d.strftime("%Y%m%d") + "-" + strftime("%H%M%S", localtime()) + ".log"
DAEFILE_IRAKASLEAK = FILEPATH + PRGNAME + "-" + gaur_d.strftime("%Y%m%d") + "-" + strftime("%H%M%S", localtime()) + "-iraka.txt"
DAEFILE_TALDEAK = FILEPATH + PRGNAME + "-" + gaur_d.strftime("%Y%m%d") + "-" + strftime("%H%M%S", localtime()) + "-talde.txt"
DAEFILE_TXANTILOIAK = FILEPATH + PRGNAME + "-" + gaur_d.strftime("%Y%m%d") + "-" + strftime("%H%M%S", localtime()) + "-txant.txt"
DAEFILE_ORDUTEGIAK = FILEPATH + PRGNAME + "-" + gaur_d.strftime("%Y%m%d") + "-" + strftime("%H%M%S", localtime()) + "-ordut.txt"
DAEFILE_GELAK = FILEPATH + PRGNAME + "-" + gaur_d.strftime("%Y%m%d") + "-" + strftime("%H%M%S", localtime()) + "-gelak.txt"

logfile = open (LOGFILE, "w")
daeirakafile = open (DAEFILE_IRAKASLEAK, "w")
daetaldefile = open (DAEFILE_TALDEAK, "w")
daetxantifile = open (DAEFILE_TXANTILOIAK, "w")
daeordufile = open (DAEFILE_ORDUTEGIAK, "w")
daegelafile = open (DAEFILE_GELAK, "w")


# Erregistro fitxategiko goiburua idatzi
logfile.write ("**********************************************************************************\n")
logfile.write ("** 				LOG FITXATEGIA					**\n")
logfile.write ("**********************************************************************************\n")

# Momentuko data VCALENDAR formatuan
TSTAMP = gaur_d.strftime("%Y%m%d") + "T" + strftime("%H%M%S", localtime()) + "Z"
logfile.write("Sortze data: " + TSTAMP + "\n")


########### HASI ################## FUNTZIOAK ######################################
def kendu_datubasea () :
    print "Ordutegi datu-basea ezabatzen\n"
    db = sqlite3.connect(DBFILE)
    cursor = db.cursor()
    cursor.execute("DROP TABLE IF EXISTS ordutegiak")
    db.commit()
    cursor.close()
    db.close()
    return 0

def sortu_datubasea () :
    print "Ordutegi datu-basea sortzen\n"
    db = sqlite3.connect(DBFILE)
    cursor = db.cursor()
    cursor.execute("PRAGMA encoding='UTF-8'")
    cursor.execute("PRAGMA synchronous=OFF")
    cursor.execute("CREATE TABLE ordutegiak (Irakaslea VARCHAR(20), Eguna VARCHAR(2), Ordua VARCHAR(2), Asignatura VARCHAR(12), Taldea VARCHAR(12), Gela VARCHAR(12), Jarduera VARCHAR(8), IrakasleIzenOsoa VARCHAR(80))")
    db.commit()
    cursor.close()
    db.close()
    return 0

def sartu_lerroa_sqlite (irakaslea, eguna, ordua, asignatura, taldea, gela, jarduera, izenosoa) :
    print "Ordutegi datu-basea populatzen\n"
    db = sqlite3.connect(DBFILE)
    cursor = db.cursor()
    cursor.execute("INSERT INTO ordutegiak(Irakaslea, Eguna, Ordua, Asignatura, Taldea, Gela, Jarduera, IrakasleIzenOsoa) VALUES (?, ?, ?, ?, ?, ?, ?, ?)", (irakaslea, eguna, ordua, asignatura, taldea, gela, jarduera, izenosoa))
    db.commit()
    cursor.close()
    db.close()
    return 0

def hartu_irakasle_zerrenda_sqlite () :
    print "Irakasle zerrenda hartzen"
    db = sqlite3.connect(DBFILE)
    cursor = db.cursor()
    cursor.execute("SELECT DISTINCT Irakaslea FROM ordutegiak ORDER BY Irakaslea", ())
    lines = cursor.fetchall()
    cursor.close()
    db.close()
    return lines

def hartu_talde_zerrenda_sqlite () :
    print "Talde zerrenda hartzen"
    l_kop = 0
    db = sqlite3.connect(DBFILE)
    cursor = db.cursor()
    cursor.execute("SELECT DISTINCT Taldea FROM ordutegiak ORDER BY Taldea", ())
    lines = cursor.fetchall()
    cursor.close()
    db.close()
    return lines

def hartu_irakasle_ordutegia_sqlite (Izena) :
    print Izena + "-(r)en ordutegia hartzen"
    db = sqlite3.connect(DBFILE)
    cursor = db.cursor()
    cursor.execute("SELECT * FROM ordutegiak WHERE Irakaslea = '" + Izena + "'")
    lines = cursor.fetchall()
    cursor.close()
    db.close()
    return lines

def hartu_talde_ordutegia_sqlite (Taldea) :
    print Taldea + " taldearen ordutegia hartzen"
    db = sqlite3.connect(DBFILE)
    cursor = db.cursor()
    cursor.execute("SET NAMES 'utf8'")
    cursor.execute("SELECT * FROM ordutegiak WHERE Taldea = '" + Taldea + "'")
    lines = cursor.fetchall()
    cursor.close()
    db.close()
    return lines

# Bilaketa gakoa (Irakaslearen lehen abizena, normalean) ASCII bihurtzen da
def egin_ascii(in_str) :
    out_str = in_str
    out_str = out_str.replace("ç", "z")
    out_str = out_str.replace("ñ", "n")
    out_str = out_str.replace("º", ".")
    out_str = out_str.replace("ª", ".")
    out_str = out_str.replace("á", "a")
    out_str = out_str.replace("é", "e")
    out_str = out_str.replace("í", "i")
    out_str = out_str.replace("ó", "o")
    out_str = out_str.replace("ú", "u")
    out_str = out_str.replace("ü", "u")
    return out_str

########### BUKATU ################ FUNTZIOAK ######################################

### ======= HASI ==================== Datu-basea sortzen ===========================


# Datu-basea ez bada existitzen, sortu

print sys.argv

# Aginte lerroan, GCHren irteerako fitxategi bat adierazten badugu,
# datu-base berria sortu eta datuak kargatu
if len(sys.argv) > 1 :
    if os.path.exists (DBFILE) :
        print "Datubasea badago jada...."
        kendu_datubasea()
        sortu_datubasea()
    else :
        sortu_datubasea()

    # Pasatu ordutegi fitxategia UTF-8 kodera
    commands.getstatusoutput ("recode cp1252..utf8 " + sys.argv[1])

    # Fitxategia zabaldu
    INFILE = sys.argv[1]
    gch_file = open(INFILE)

    # Datuak inportatu datu-basera
    for line in gch_file.readlines() :
        lerroa = line.split("	", 7)
        print lerroa[0] + " - " + lerroa[1] + " - " + lerroa[2]

        # Adibidez, Peña -> Pena bihurtu
        irakasle_gakoa = egin_ascii(lerroa[0].strip())    
        irakasle_izen_osoa = IRAKASLEAK[irakasle_gakoa][2] + " " + IRAKASLEAK[irakasle_gakoa][3]
        u_irakasle_izen_osoa = unicode(irakasle_izen_osoa, "utf8")
        sartu_lerroa_sqlite(irakasle_gakoa, lerroa[1].strip(), lerroa[2].strip(), lerroa[3].strip(), lerroa[4].strip(), lerroa[5].strip(), lerroa[6].strip(), u_irakasle_izen_osoa)

### ======= BUKATU ================== Datu-basea sortzen ===========================

# Kopiatu datu-basea web-gunera
if KOPITOWEB:
    subprocess.check_output(['cp', '-p', DBFILE, '/var/www/ordutegiak-sqlite/ordutegiak.db'])


### ======= HASI ================= Irakasleen fitxategia ===========================

logfile.write("\n======= IRAKASLEEN FITXATEGIA SORTZEN =======\n")

# Sortu datu fitxategiaren goiburua (Irakasle fitxategi mota)
# 1 -> Erregistro mota, PR -> Fitxategi mota, 014950 -> Ikastetxe kodea, 2009 -> Ikasturtea, 1 -> Bertsioa
daeirakafile.write("1PR" + IKASTETXE_KODEA + IKASTURTEA + IR_BERTSIOA + "\n")

# Hartu irakasleen zerrenda
zerrenda = hartu_irakasle_zerrenda_sqlite ()
# Sortu irakasleen erregistro guztiak
for lerroa in zerrenda :
	irakaslea = lerroa[0]
#	u_irakaslea = unicode(irakaslea, "utf8")
	print irakaslea
	logfile.write("\nIrakaslea: " + irakaslea.encode("cp1252") + "\n")
#	irakasle_gakoa = egin_ascii(irakaslea)
	irakasle_gakoa = irakaslea

    	# Erregistro mota (2)
	daeirakafile.write("2")
    	# Operazio mota (M) (Existitzen bada, aldatu egiten da. Bestela, sortu)
	daeirakafile.write("M")
	# Irakaslea identifikazio dokumentu mota (NANa = 1) -> 405 taula
	# ALDATUA. 4 karaktere
	daeirakafile.write(IRAKASLEAK[irakasle_gakoa][0].zfill(4))
	# Dokumentua (15 karaktere)
	# ALDATUA. 9 karaktere? Ez dirudi.
	daeirakafile.write(IRAKASLEAK[irakasle_gakoa][1].zfill(15))
	# Lehenengo deitura (40 karaktere)
	daeirakafile.write(IRAKASLEAK[irakasle_gakoa][3].ljust(40))
	# Bigarren deitura (40 karaktere)
	daeirakafile.write(IRAKASLEAK[irakasle_gakoa][4].ljust(40))
	# Izen propioa (20 karaktere)
	daeirakafile.write(IRAKASLEAK[irakasle_gakoa][2].ljust(20))

	# Kargua
	daeirakafile.write(IRAKASLEAK[irakasle_gakoa][5].ljust(3))
	# Kargua 2
	daeirakafile.write(IRAKASLEAK[irakasle_gakoa][6].ljust(3))
	# Beste karguak
	daeirakafile.write(IRAKASLEAK[irakasle_gakoa][7].ljust(3))

	# Mintegia (100)
	daeirakafile.write(IRAKASLEAK[irakasle_gakoa][8].ljust(100))
	# Izenpe maila (2)
	daeirakafile.write(IRAKASLEAK[irakasle_gakoa][9].ljust(2))
	# Jornada mota (2)
	daeirakafile.write(IRAKASLEAK[irakasle_gakoa][10].ljust(2))

	# Orduak guztira (5)
	daeirakafile.write(IRAKASLEAK[irakasle_gakoa][11].ljust(5))
	# Ordu lektiboak guztira (5)
	daeirakafile.write(IRAKASLEAK[irakasle_gakoa][12].ljust(5))

	# 60 urteko murrizketa (1)
	daeirakafile.write(IRAKASLEAK[irakasle_gakoa][13].ljust(1))
	# Osasun murrizketa (1)
	daeirakafile.write(IRAKASLEAK[irakasle_gakoa][14].ljust(1))
	# Oharrak (250)
	daeirakafile.write(IRAKASLEAK[irakasle_gakoa][15].ljust(250))

	# Kobrantza (1)
	daeirakafile.write(IRAKASLEAK[irakasle_gakoa][16].ljust(1))
	# Izenpe data (EEHHUUUU)
	daeirakafile.write(IRAKASLEAK[irakasle_gakoa][17].ljust(8))

	# Bukatu lerroa
	daeirakafile.write("\n")


# itxi fitxategia
daeirakafile.close ()

### ======= BUKATU =============== Irakasleen fitxategia ===========================


### ======= HASI ================= Taldeen fitxategia eta txantiloiak ===========================

logfile.write("\n======= TALDEEN ETA TXANTILOIEN FITXATEGIA SORTZEN =======\n")

# 2010 bertsioan, bananduta dago informazioa bi fitxategitan.
# Taldearen ezaugarriak talde fitxategian, eta ordutegia txantiloi fitxategian

# Sortu datu fitxategiaren goiburua (Talde fitxategi mota)
# 1 -> Erregistro mota, GR -> Fitxategi mota, 014950 -> Ikastetxe kodea, 2009 -> Ikasturtea, 1 -> Bertsioa (Deskargak ez dauka. Eskuliburuan agertu egiten da).
daetaldefile.write("1GR" + IKASTETXE_KODEA + IKASTURTEA + TA_BERTSIOA + "\n")
#daetaldefile.write("1GR" + IKASTETXE_KODEA + IKASTURTEA + "\n")

# Hartu talde zerrenda
zerrenda = hartu_talde_zerrenda_sqlite ()
# Sortu taldearen erregistroa eta saioen erregitroak
for lerroa in zerrenda :
	taldea = lerroa[0]
	if taldea == "-" :
	    continue
	logfile.write("\nTaldea: " + taldea + "\n")

	print taldea

	# Jarri taldearen datuak
    	# Erregistro mota (2)
	daetaldefile.write("2")
	# Taldearen kodea (5)
	# ALDATUA-2010 8 karaktere.
	daetaldefile.write(TALDEAK[taldea][0].zfill(8))
	# Taldearen izena (30 karatere)
	# ALDATUA-2010. 50 karaktere
	daetaldefile.write(taldea.ljust(50))
	# Plana (4 karaktere: 0001 -> LOGSE; 0003-> LOE). Ez dago dokumentatuta (2010-2011 txostenean)
	daetaldefile.write(TALDEAK[taldea][3].zfill(4))
	# Maila (3 karaktere, 172 taula)
	# ALDATUA-2010. 4 karaktere (V55T11)
	daetaldefile.write(TALDEAK[taldea][4].zfill(4))
	# Espezialitatea (6 karaktere, 063 taula)
	# ALDATUA-2010. 4 karektere (V55T14)
	daetaldefile.write(TALDEAK[taldea][5].zfill(4))
	# Turno (Egunez (D0), Gauez(N0))
	# ALDATUA-2010. 4 karaktere (V55T32)
	daetaldefile.write(TALDEAK[taldea][1].zfill(4))
	# Kurtsoa (01 / 02)
	# ALDATUA-2010. 4 karektere (0001/0002)
	daetaldefile.write(TALDEAK[taldea][6].zfill(4))
	# Eredua (A / D)
	# ALDATUA-2010. 4 karaktere (A->0001 / D->0003, V55T35)
	daetaldefile.write(TALDEAK[taldea][2].zfill(4))
	# Talde mota (0001 -> Ofiziala)
	daetaldefile.write(TALDEAK[taldea][7].zfill(4))
	
	# Txantiloi kodea
	daetaldefile.write(TALDEAK[taldea][8])

	# Tutorearen dokumentu mota (NANa = 1, V55T86)
	daetaldefile.write(IRAKASLEAK[TALDEAK[taldea][11]][0].zfill(4))
	# Tutorearen NANa (10 tutorentzat dago lekua. Espazioak jarri hutsunea bete arte
	# (-1, zeren lehenengo dokumentu mota, jarria dago jada)
	daetaldefile.write(IRAKASLEAK[TALDEAK[taldea][11]][1].ljust(15))
	# Beste 9 tutoreak hutsirik. Dokumentu mota = 0000 (Es dago dokumentatuta)
	for k in range (9) :
	    daetaldefile.write("0000".ljust(19))
	# Ikasle kopurua
	daetaldefile.write(TALDEAK[taldea][10].zfill(4))
	# Oharrah (50)
	# DAE 2011 -> 250
	daetaldefile.write(" ".ljust(250))
	# Ikasgela (8)
	daetaldefile.write(IKASGELAK[TALDEAK[taldea][9]][0].zfill(8))
	# Bukatu lerroa
	daetaldefile.write("\n")

	
	# Taldearen ordutegia (ordutegi osoa jarriko dugu)
	# Talde guztiei ordu guztiak, nahiz gero klaserik ez izan.
	# Arazoak eman dizkigu goizekoak eta arratsaldekoak ezberdintzean


	for j in range (5) :
	    for i in range (11) :
	    	# Erregistro mota (3)
		daetaldefile.write("3")
    		# Taldearen kodea
		daetaldefile.write(TALDEAK[taldea][0].zfill(8))
		# Saioa
		daetaldefile.write(SAIOAK_T[i])
		# Asteko eguna
		daetaldefile.write(EGUNAK_T[j])
		# Hasiera ordua
		daetaldefile.write(H_ORDUA_T[i])
		# Bukaera ordua
		daetaldefile.write(B_ORDUA_T[i])
		# Atsedenaldia (0 = EZ / 1 = BAI)
		if i == 3 :
		    daetaldefile.write("1")
		else :
		    daetaldefile.write("0")
		# Bukatu lerroa
		daetaldefile.write("\n")

# --------------------- TXANTILOIA -------------------
# 2010 bertsioan tantiloi fitxategi bat sortu behar da
# Fitxategiaren goiburua: 1 -> Erregistro mota; 00016928 -> Txantiloiaren kodea; "Ordutegia" -> Txantiloiaren ezizena (50 karaktere)
# Erregistro mota (1)
daetxantifile.write("1")
# Txantiloiuaren kodea
##daetxantifile.write("00016928")
daetxantifile.write(TXANTILOIA)
# Txantiloiaren ezizena
daetxantifile.write("Ordutegia".ljust(50))
# Bukatu lerroa
daetxantifile.write("\n")

# 11 ordu (edo zati) egunak
for j in range (11) :
    # Bost egun ditu asteak
    for i in range (5) :
    	# Erregistro mota (2)
	daetxantifile.write("2")
	# Taldearen kodea
#	daetxantifile.write(TALDEAK[taldea][0])
	# Saioa
	daetxantifile.write(SAIOAK_T[j])
	# Asteko eguna
	daetxantifile.write(EGUNAK_T[i])
	# Hasiera ordua
	daetxantifile.write(H_ORDUA_T[j])
	# Bukaera ordua
	daetxantifile.write(B_ORDUA_T[j])
	# Atsedenaldia (0 = EZ / 1 = BAI)
	if j == 3 :
	    daetxantifile.write("1")
	else :
	    daetxantifile.write("0")
	# Bukatu lerroa
	daetxantifile.write("\n")


# itxi fitxategiak
daetaldefile.close ()
daetxantifile.close ()

### ======= BUKATU =============== Taldeen fitxategia eta txantiloiak ===========================



### ======= HASI ================= Ordutegien fitxategia ========================

logfile.write("\n======= ORDUTEGIEN FITXATEGIA SORTZEN =======\n")

# Sortu datu fitxategiaren goiburua (Ordutegi fitxategi mota)
# 1 -> Erregistro mota, CH -> Fitxategi mota, 014950 -> Ikastetxe kodea, 2009 -> Ikasturtea, 1 -> Bertsioa
daeordufile.write("1CH" + IKASTETXE_KODEA + IKASTURTEA + "1\n")

# Hartu irakasleen zerrenda
zerrenda = hartu_irakasle_zerrenda_sqlite ()
# Sortu irakasleen ordutegiaren erregistro guztiak
for lerroa in zerrenda :
	irakaslea = lerroa[0]
	logfile.write("\nIrakaslea: " + irakaslea + "\n")

#	print irakaslea

	# hartu irakasle honen ordu guztiak
	orduak = hartu_irakasle_ordutegia_sqlite (irakaslea)
	# sartu ordutegia
	for ordua in orduak :
#	    print ordua[0] + "*" + ordua[1] + "*" + ordua[2] + "*" + ordua[3] + "*" + ordua[4] + "*" + ordua[5] + "*" + ordua[6] + "*"
	    logfile.write(">>: " + ordua[1] + " - " + ordua[2] + "\n")

	    if (irakaslea == "Corpion") :
		continue

#	    if (ordua[6] == "A15") :
#		continue

    	    # Erregistro mota (2)
	    daeordufile.write("2")
	    # Irakaslearen identifikazio dokumentu mota (NANa = 1) -> 405 taula
	    daeordufile.write(IRAKASLEAK[lerroa[0]][0].zfill(4))
	    # Dokumentua (15 karaktere)
	    daeordufile.write(IRAKASLEAK[lerroa[0]][1].ljust(15))
	    # Saio zenbakia (ordua)
	    daeordufile.write(SAIOAK[ordua[2]])
	    # Eguna (1 -> 5)
	    daeordufile.write(EGUNAK[ordua[1]])
	    # Lan mota -> B01 taula => DAE2010 (4 karaktere, T13)
	    daeordufile.write(LANAK[ordua[6]][0].zfill(4))
	    # Hasiera ordua
	    daeordufile.write(H_ORDUA[ordua[2]])
	    # Bukaera ordua
	    daeordufile.write(B_ORDUA[ordua[2]])
	    # Mailako taldea (Grupo de nivel) -> B26 erlazioa (fGruposNivel taula) Lanbide heziketa = 103
	    # DAE2010: Desagertu egin da.
#	    daeordufile.write("103")
	    if (ordua[6] == "A15") :
		# Berria:: DAE2010 -> IkasGela, 8 karaktere
		daeordufile.write(IKASGELAK[ordua[5]][0].zfill(8))
		# Asignatura / Modulua -> 581 taula / DAE2010: Orain 8 karaktere dira
		daeordufile.write(ASIGNATURAK[ordua[3]][0].zfill(8))
		# Asignatura mota (T = Tronkala / O = aukerazkoa / ' ' = Lehenetsia). DAE2010 -> Denak 'M' ????
#		daeordufile.write(ASIGNATURAK[ordua[3]][1])
		daeordufile.write("M")

		# Hizkuntza -> 591 taula ( "01" = Gaztelera / "02" = Euskara, .... ) (DAE2010 -> berdin: T55)
		if ordua[4] == ("GA-1A" or "AK2-2A" or "GA-2A") :
		    daeordufile.write("01")
		else :
		    daeordufile.write("02")
		# Gela / Oharrak (30 karaktere) (DAE2010 -> Es dago)
#		daeordufile.write(ordua[5].ljust(50))
	        # Bukatu lerroa
		daeordufile.write("\n")
		# Orain, '3' motatako erregistroa sortuko dugu
		daeordufile.write("3")
		# Taldearen kodea
		daeordufile.write(TALDEAK[ordua[4]][0].zfill(8))
    		# Irakaslearen identifikazio dokumentu mota (NANa = 1) -> 405 taula. DAE2010 -> Ez dago
#		daeordufile.write(IRAKASLEAK[lerroa[0]][0].zfill(4))
		# Dokumentua (15 karaktere). DAE2010 -> Ez dago
#		daeordufile.write(IRAKASLEAK[lerroa[0]][1].ljust(15))
	        # Saio zenbakia (ordua) DAE2010 -> 4 karaktere
		daeordufile.write(SAIOAK[ordua[2]].zfill(4))
	        # Eguna (1 -> 5) DAE2010 -> Kendu egin da.
#		daeordufile.write(EGUNAK[ordua[1]])
		# Ikasle kopurua
		daeordufile.write(TALDEAK[ordua[4]][10].zfill(4))
		# BErria DAE2010: Taldea
		daeordufile.write(ordua[4].ljust(50))
		# FAE2010 berria. Berriz ere taldearen kodea (talde ugazaba. Bestea inpartizio taldea izan daiteke)
		daeordufile.write(TALDEAK[ordua[4]][0].zfill(8))
	    else :
		# Lanaren kodea 213 denean, ekintza mota jarri behar da (592 taula)
		if (LANAK[ordua[6]][0] == "213") :
		    # Ekintza mota -> 592 taula. (DAE2010, T07 taula)
		    daeordufile.write(LANAK[ordua[6]][1])
		else :
		    daeordufile.write("   ")

		# Ez dago dokumentatuta baina, Ematen du hurrengo 4 karaktereak Nivel de impartición (0011 / 0012) direla
		daeordufile.write("0012")
		# Ez dago dokumentatuta baina, ematen du hurrengo 4 karaktereak Modelo linguistico (0001 / 0003) direla
		daeordufile.write("0003")

            # Bukatu lerroa
	    daeordufile.write("\n")

# itxi fitxategia
daeordufile.close ()

### ======= BUKATU ================= Ordutegien fitxategia ======================


### ======= HASI ================= Gelen fitxategia ========================
# 2010 bertsioan gelen fitxategi bat sortu behar da
# Fitxategiaren goiburua: Gelaren kodea (8), Gelaren ezizena (50), Gelaren kapazitatea (3)

for gela in IKASGELAK :
    daegelafile.write(IKASGELAK[gela][0].zfill(8))
    daegelafile.write(gela.ljust(50))
    daegelafile.write(IKASGELAK[gela][1].zfill(3))
    daegelafile.write("\n")

# itxi fitxategia
daegelafile.close ()

### ======= BUKATU ================= Gelen fitxategia ======================

# Lerro bukaerak CR + LF (VAX / DOS / Windows erakoak) izan behar dute
#commands.getstatusoutput ("/usr/bin/unix2dos " + DAEFILE_IRAKASLEAK)
commands.getstatusoutput ("recode utf8..cp1252 " + DAEFILE_IRAKASLEAK)
commands.getstatusoutput ("/usr/bin/unix2dos " + DAEFILE_TALDEAK)
commands.getstatusoutput ("/usr/bin/unix2dos " + DAEFILE_ORDUTEGIAK)
commands.getstatusoutput ("/usr/bin/unix2dos " + DAEFILE_GELAK)
commands.getstatusoutput ("/usr/bin/unix2dos " + DAEFILE_TXANTILOIAK)
commands.getstatusoutput ("chmod +r " + DAEFILE_ORDUTEGIAK)


logfile.write("========== Log fitxategiaren amaiera ==========\n")

# Itxi erregistro fitxategia
logfile.close()

sys.exit(0)
