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


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

# Filename: ordu2dae-sqlite.py




__module_name__ = "Ordutegiak E.E.D.(D.A.E.)-ra"
__module_version__ = "1.0"
__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 pasatuaz)

###############################################################################################################
# 1.0 - 2009-12-23
#	Hasierako bertsioa. MySQL-tik -> Sqlite-ra pasatu, eta fitxategi batean dena
#


import string, readline
import sys, os, commands
from datetime import date
from time import time, localtime, strftime
from pysqlite2 import dbapi2 as sqlite3

# Scriptaren izena
PRGNAME = "ordu2dae-sqlite"
DBFILE = PRGNAME + ".db"

IKASTETXE_KODEA = "014950"
IKASTURTEA = "2009"
ORDUTEGI_BERTSIOA = "1"

# 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"}
# Klaseen 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" : "16:30", "9" : "18:00", "10" : "19:00", "11" : "20:00", "12" : "21: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" : "17:30", "9" : "19:00", "10" : "20:00", "11" : "21:00", "12" : "22: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 : "18:00", 8 : "19:00", 9 : "20:00", 10 : "21: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 : "19:00", 8 : "20:00", 9 : "21:00", 10 : "22:00"}


# Irakasleen identifikatzailea.
# Dokumentu mota, dokumentua -> NANa + 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", "ALFREDO", "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", "CORPION", "", \
						"", "", "", "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", "", \
						"", ""], \
		"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", "", \
						"", ""], \
		"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", "", \
						"", ""], \
		}


# Taldeen kodeak
# Talde kodea, Egunekoa(D0) / Gauekoa (N0), Eredua, Maila, Espezialitatea, Kurtsoa, Ikasle kop., Tutorea
TALDEAK =  { \
	    "AF3-1D" : ["00001", "D0", "D", "320", "812401", "01", "18", "Mendia"], \
	    "AF3-2D" : ["00002", "D0", "D", "320", "812401", "02", "21", "Belaustegi"], \
	    "AK2-1A" : ["00026", "N0", "A", "310", "712401", "01", "14", "Vitoria"], \
	    "AK2-2A" : ["00027", "N0", "A", "310", "712401", "02", "10", "Urrutxi"], \
	    "AU3-1D" : ["00005", "D0", "D", "320", "811902", "01", "23", "Laka"], \
	    "AU3-2D" : ["00006", "D0", "D", "320", "811902", "02", "12", "Onaindia"], \
	    "EM2-1D" : ["00007", "D0", "D", "310", "711901", "01", "19", "Gutierrez L"], \
	    "EM2-1E" : ["00008", "D0", "D", "310", "711901", "01", "19", "Lores"], \
	    "EM2-2D" : ["00009", "D0", "D", "310", "711901", "02", "16", "Aldazabal"], \
	    "EM2-2E" : ["00010", "D0", "D", "310", "711901", "02", "00", ""], \
	    "MP3-1D" : ["00011", "D0", "D", "320", "810401", "01", "00", ""], \
	    "MP3-2D" : ["00012", "D0", "D", "320", "810401", "02", "15", "Gomez"], \
	    "ME2-1D" : ["00013", "D0", "D", "310", "710401", "01", "00", ""], \
	    "ME2-2D" : ["00014", "D0", "D", "310", "710401", "02", "12", "Jimenez"], \
	    "MT2-1D" : ["00025", "D0", "D", "310", "715001", "01", "19", "Arbeo"], \
	    "MT2-2D" : ["00016", "D0", "D", "310", "715001", "02", "00", ""], \
	    "PE3-1D" : ["00017", "D0", "D", "320", "810501", "01", "22", "Errasti"], \
	    "PE3-2D" : ["00018", "D0", "D", "320", "810501", "02", "17", "Gallastegi J"], \
	    "PP3-1D" : ["00019", "D0", "D", "320", "815801", "01", "10", "Arroitajaure"], \
	    "PP3-2D" : ["00020", "D0", "D", "320", "815801", "02", "00", ""], \
	    "SA3-1D" : ["00021", "D0", "D", "320", "812701", "01", "10", "Elordieta"], \
	    "SA3-2D" : ["00022", "D0", "D", "320", "812701", "02", "00", ""], \
	    "SA3-1A" : ["00023", "D0", "A", "320", "812701", "01", "00", ""], \
	    "SA3-2A" : ["00024", "D0", "A", "320", "812701", "02", "05", "Gallastegi A"] \
	    }


# Moduluak
# Modulu kodea, Modulu mota (T = Transbertsala / O = Aukerazkoa / ' ' = Defektuzkoa)
ASIGNATURAK = {	\
		"HTek" : ["9342", "T"], \
		"ITek" : ["7069", "T"], \
		"FOL-LPOr" : ["6033", "T"], \
		"FOL-AKME" : ["6141", "T"], \
		"FOL-LGHa" : ["6105", "T"], \
		"FOL-LTHa" : ["6151", "T"], \
		# ADMINISTRARITZA
		"AF3-IATE" : ["6252", "T"], \
		"AF3-APub" : ["6249", "T"], \
		"AF3-GBal" : ["6246", "T"], \
		"AF3-EPro" : ["6253", "T"], \
		"AF3-KFis" : ["6247", "T"], \
		"AF3-FAZP" : ["6250", "T"], \
		"AF3-Audi" : ["6251", "T"], \
		"AF3-FKud" : ["6245", "T"], \
		"AF3-HKud" : ["6244", "T"], \
		"AF3-MKBA" : ["6248", "T"], \
		"AF3-KEHo" : ["6274", "T"], \
		"AK2-PAKu" : ["6232", "T"], \
		"AK2-KITE" : ["6230", "T"], \
		"AK2-IApl" : ["6236", "T"], \
		"AK2-AKPP" : ["6235", "T"], \
		"AK2-SAKu" : ["6231", "T"], \
		"AK2-KODi" : ["6233", "T"], \
		"AK2-OFAP" : ["6234", "T"], \
		"AK2-KEHo" : ["6274", "T"], \
		# AUTOMOZIOA
		"AU3-EEMF" : ["6586", "T"], \
		"AU3-MTBS" : ["6585", "T"], \
		"AU3-AMKL" : ["6589", "T"], \
		"AU3-GPTL" : ["6587", "T"], \
		"AU3-ITSE" : ["6584", "T"], \
		"AU3-SKSE" : ["6583", "T"], \
		"AU3-SIMa" : ["6590", "T"], \
		"AU3-IEgi" : ["6588", "T"], \
		"AU3-KEHo" : ["6274", "T"], \
		"EM2-IMMT" : ["6565", "T"], \
		"EM2-MSOs" : ["6559", "T"], \
		"EM2-Moto" : ["6558", "T"], \
		"EM2-IZEO" : ["6563", "T"], \
		"EM2-FEDZ" : ["6560", "T"], \
		"EM2-OZEi" : ["6562", "T"], \
		"EM2-SKSi" : ["6564", "T"], \
		"EM2-TBSi" : ["6561", "T"], \
		"EM2-SIMa" : ["6557", "T"], \
		"EM2-KEHo" : ["6274", "T"], \
		# METALA
		"MP3-FMSA" : ["6125", "T"], \
		"MP3-MKMD" : ["6123", "T"], \
		"MP3-FMKK" : ["6128", "T"], \
		"MP3-FMPP" : ["6126", "T"], \
		"MP3-LPre" : ["6124", "T"], \
		"PP3-KLPB" : ["7059", "T"], \
		"PP3-PEgi" : ["7158", "T"], \
		"PP3-FPGa" : ["7036", "T"], \
		"PP3-IGra" : ["7073", "T"], \
		"PP3-MKMD" : ["6123", "T"], \
		"ME2-THBP" : ["6147", "T"], \
		"ME2-FMMP" : ["6145", "T"], \
		"ME2-FMSO" : ["7146", "T"], \
		"ME2-SAut" : ["7146", "T"], \
		"ME2-UKPF" : ["6148", "T"], \
		"MT2-MPro" : ["7115", "T"], \
		"MT2-IGra" : ["7073", "T"], \
		"MT2-SAut" : ["7146", "T"], \
		"MT2-THBP" : ["6147", "T"], \
		"MT2-FMMP" : ["6145", "T"], \
		"MT2-FMSO" : ["6146", "T"], \
		"MT2-MPRO" : ["7115", "T"], \
		"MT2-UKPF" : ["6148", "T"], \
		"MT2-MSai" : ["7088", "T"], \
		# ELEKTRONIKA
		"PE3-EEMA" : ["6058", "T"], \
		"PE3-LDMi" : ["6054", "T"], \
		"PE3-PEGE" : ["6057", "T"], \
		"PE3-PEPG" : ["6056", "T"], \
		"PE3-PTek" : ["6059", "T"], \
		"PE3-KEHo" : ["6409", "T"], \
		"PE3-EAna" : ["6053", "T"], \
		"PE3-SEle" : ["6055", "T"], \
		# INFORMATIKA
		"SA3-EBAS" : ["6513", "T"], \
		"SA3-SLok" : ["6514", "T"], \
		"SA3-POin" : ["6516", "T"], \
		"SA3-KIAE" : ["6515", "T"], \
		"SA3-DBKS" : ["6518", "T"], \
		"SA3-ISFG" : ["6517", "T"], \
		"SA3-KEHo" : ["6274", "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" : ["206", "", "Familiekin harremanak","",""],
	"A08" : ["213", "036", "Lantoki 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 Arduraduna","",""],
	"A19" : ["213", "036", "Proba librea","",""],
	"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","",""],
	"A28" : ["213", "036", "Irakaskuntza ez arautua","",""],
	"A29" : ["213", "028", "Hobekuntza / Prestakuntza","",""],
	"A30" : ["201", "", "Zaintza zuzendaritzan","Zuzendaritza",""],
	"A31" : ["213", "036", "Klaustroa","",""],
	"A32" : ["204", "", "Zaintza alorgunean","Alorgunea","Ordu osoan egon behar da alorgunean."],
	"A33" : ["213", "036", "Indartze klaseak","",""],
	"A34" : ["213", "015", "Adigune bilare","",""],
	"A35" : ["213", "015", "Alorburu bilera","Irakasle gela","Aurretiaz abisatuko da bilera dagoen ala ez."],
	"A36" : ["201", "", "Gidagune bilera","",""],
	"A37" : ["213", "015", "Ikasburu bilera","Irakasle gela",""],
	"A38" : ["213", "013", "Tutore bilera","Irakasle gela",""],
	"A39" : ["213", "002", "Sareko mantentzea","",""],
	"A40" : ["213", "018", "Kalitate prozesua","",""],
	"A41" : ["213", "036", "Eskaintza partziala","",""],
	"A42" : ["213", "002", "Elkartuz","",""],
	"A43" : ["213", "009", "Hobetuz","",""],
	"A44" : ["213", "023", "IKT Sustatzailea","",""],
	"A45" : ["401", "", "Eskeinitako ez ohiko orduak","",""],
	}


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

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

FILEPATH = "EED/"

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.dat"
DAEFILE_TALDEAK = FILEPATH + PRGNAME + gaur_d.strftime("%Y%m%d") + "-" + strftime("%H%M%S", localtime()) + "-talde.dat"
DAEFILE_ORDUTEGIAK = FILEPATH + PRGNAME + gaur_d.strftime("%Y%m%d") + "-" + strftime("%H%M%S", localtime()) + "-ordut.dat"

logfile = open (LOGFILE, "w")
daeirakafile = open (DAEFILE_IRAKASLEAK, "w")
daetaldefile = open (DAEFILE_TALDEAK, "w")
daeordufile = open (DAEFILE_ORDUTEGIAK, "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))")
    db.commit()
    cursor.close()
    db.close()
    return 0

def sartu_lerroa_sqliten(irakaslea, eguna, ordua, asignatura, taldea, gela, jarduera) :
    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) VALUES (?, ?, ?, ?, ?, ?, ?)", (irakaslea, eguna, ordua, asignatura, taldea, gela, jarduera))
    db.commit()
    cursor.close()
    db.close()
    return 0

def hartu_irakasle_zerrenda () :
	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 () :
	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 (Izena) :
	print Izena + "-ren 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 (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
########### 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()

    # 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]
    
        sartu_lerroa_sqliten(lerroa[0].strip(), lerroa[1].strip(), lerroa[2].strip(), lerroa[3].strip(), lerroa[4].strip(), lerroa[5].strip(), lerroa[6].strip())


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


### ======= 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 + ORDUTEGI_BERTSIOA + "\n")

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

	print 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
	daeirakafile.write(IRAKASLEAK[lerroa[0]][0])
	# Dokumentua (15 karaktere)
	daeirakafile.write(IRAKASLEAK[lerroa[0]][1].ljust(15))
	# Lehenengo deitura (40 karaktere)
	daeirakafile.write(IRAKASLEAK[lerroa[0]][3].ljust(40))
	# Bigarren deitura (40 karaktere)
	daeirakafile.write(IRAKASLEAK[lerroa[0]][4].ljust(40))
	# Izen propioa (20 karaktere)
	daeirakafile.write(IRAKASLEAK[lerroa[0]][2].ljust(20))

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

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

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

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

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

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


# itxi fitxategia
daeirakafile.close ()

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


### ======= HASI ================= Taldeen fitxategia ===========================

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

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

# Hartu talde zerrenda
zerrenda = hartu_talde_zerrenda ()
# 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
	daetaldefile.write(TALDEAK[taldea][0])
	# Taldearen izena (30 karatere)
	daetaldefile.write(taldea.ljust(30))
	# Maila (3 karaktere, 172 taula)
	daetaldefile.write(TALDEAK[taldea][3])
	# Espezialitatea (6 karaktere, 063 taula)
	daetaldefile.write(TALDEAK[taldea][4])
	# Turno (Egunez (D0), Gauez(N0))
	daetaldefile.write(TALDEAK[taldea][1])
	# Kurtsoa (01 / 02)
	daetaldefile.write(TALDEAK[taldea][5])
	# Eredua (A / D)
	daetaldefile.write(TALDEAK[taldea][2])
	# Tutorearen dokumentu mota (NANa = 1)
	daetaldefile.write(IRAKASLEAK[TALDEAK[taldea][7]][0])
	# Tutorearen NANa (10 tutorentzat dago lekua. Espazioak jarri hutsunea bete arte
	# (-1, zeren lehenengo dokumentu mota, jarria dago jada)
	daetaldefile.write(IRAKASLEAK[TALDEAK[taldea][7]][1].ljust((10 * 16)-1))
	# Ikasle kopurua
	daetaldefile.write(TALDEAK[taldea][6])
	# Bukatu lerroa
	daetaldefile.write("\n")

	# Taldearen ordutegia (ordutegi osoa jarriko dugu)
	# Talde guztiei ordu guztiak, nahiz gero klaserik ez izan.
	# Arazoak eman dizkigu gizekoak 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])
		# 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")

# itxi fitxategia
daetaldefile.close ()

### ======= BUKATU =============== Taldeen fitxategia ===========================



### ======= 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 ()
# 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 (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")

    	    # Erregistro mota (2)
	    daeordufile.write("2")
	    # Irakaslearen identifikazio dokumentu mota (NANa = 1) -> 405 taula
	    daeordufile.write(IRAKASLEAK[lerroa[0]][0])
	    # 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
	    daeordufile.write(LANAK[ordua[6]][0])
	    # 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
	    daeordufile.write("103")
	    if (ordua[6] == "A15") :
		# Asignatura / Modulua -> 581 taula
		daeordufile.write(ASIGNATURAK[ordua[3]][0])
		# Asignatura mota (T = Tronkala / O = aukerazkoa / ' ' = Defektuzkoa)
		daeordufile.write(ASIGNATURAK[ordua[3]][1])
		# Hizkuntza -> 591 taula ( "01" = Gaztelera / "02" = Euskara )
		if ordua[4] == ("AK2-1A" or "AK2-2A") :
		    daeordufile.write("01")
		else :
		    daeordufile.write("02")
		# Gela / Oharrak (30 karaktere)
		daeordufile.write(ordua[5].ljust(30))
	        # Bukatu lerroa
		daeordufile.write("\n")
		# Orain, '3' motatako erregistroa sortuko dugu
		daeordufile.write("3")
		# Taldearen kodea
		daeordufile.write(TALDEAK[ordua[4]][0])
    		# Irakaslearen identifikazio dokumentu mota (NANa = 1) -> 405 taula
		daeordufile.write(IRAKASLEAK[lerroa[0]][0])
		# 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]])
		# Ikasle kopurua
		daeordufile.write(TALDEAK[ordua[4]][6])

	    # Lanaren kodea 213 denean, ekintza mota jarri behar da (592 taula)
	    if (LANAK[ordua[6]][0] == "213") :
		# Ekintza mota -> 592 taula
		daeordufile.write(LANAK[ordua[6]][1])

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

# itxi fitxategia
daeordufile.close ()

### ======= BUKATU ================= Ordutegien 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 ("chmod +r " + DAEFILE_ORDUTEGIAK)


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

# Itxi erregistro fitxategia
logfile.close()

sys.exit(0)

