##############################################################################
# -*- coding: utf-8 -*-
# Project:     ControlIES
# Module:    LdapUtils.py
# Purpose:     Ldap utils
# Language:    Python 2.5
# Date:        18-Feb-2011.
# Ver:        18-Feb-2011.
# Author:	Manuel Mora Gordillo
#			Francisco Mendez Palma
# Copyright:    2011 - Manuel Mora Gordillo <manuito @no-spam@ gmail.com>
#				2011 - Francisco Mendez Palma <fmendezpalma @no-spam@ gmail.com>
#
# ControlIES is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# ControlIES 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 General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with ControlIES. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################

# Get all users
def getAllUsers(ldap):
	result = ldap.search("ou=People","uid=*",["uid","cn"])

	rows = []
	for u in result:
		rows.append([u[0][1]['uid'][0] , u[0][1]['cn'][0] ]);

	return rows


# Get all groups classified by type
def getAllGroups(ldap):
	result = ldap.search("ou=Group","(|(groupType=school_department)(groupType=school_class))",["cn","groupType"])
	
	departments = []
	classrooms = []		
	for g in result:
		if g[0][1]["groupType"][0] == "school_department":
			departments.append(g[0][1]["cn"][0])
		elif g[0][1]["groupType"][0] == "school_class":
			classrooms.append(g[0][1]["cn"][0])
	
	departments.sort()
	classrooms.sort()
	
	return { "departments":departments, "classrooms":classrooms }


# Get the max ID of the groups and users
def getMaxID(ldap): 
	result = ldap.search("ou=Group","cn=*",["gidNumber"])		
	
	numbers = []
	for i in result:
		numbers.append(int(i[0][1]['gidNumber'][0]))

	result = ldap.search("ou=People","uid=*",["gidNumber","uidNumber"])		
	for i in result:
		numbers.append(int(i[0][1]['gidNumber'][0]))
		numbers.append(int(i[0][1]['uidNumber'][0]))

	numbers.sort()		
	
	maxID = 1		
	if len(numbers) > 0:
		maxID = numbers[len(numbers)-1] + 1

	return maxID

def whatHome(type):
	
	if type == "teacher":
		return "/home/profesor/"
	else:
		return "/home/alumnos/"
