#! /usr/bin/env python import sys try: import pygtk pygtk.require("2.0") except: pass try: import gtk import gtk.glade except: sys.exit(1) import sys import gobject import gnomeapplet import ldap import urllib class Personne: def __init__(self, recherche): self.recherche = recherche def check_search(recherche): search_type=type(recherche) return search_type def getResult(self): return self.result def query_ldap(self): """query-ldap prend comme argument une recherche et renvoie toutes les infos sur la personne ou un groupe de personnes""" if self.recherche.isdigit(): critere='mailNickname='+self.recherche else: nom = '' prenom = '' for i in self.recherche.split(): if i.upper() == i: if nom == '': nom = i else: nom = nom+' '+i else: if prenom == '': prenom = i else: prenom = prenom+' '+i if ( nom == '' and prenom == '' ): self.error=3 exit else: if nom == '': critere = 'givenName='+prenom elif prenom == '': critere = 'sn='+nom else: critere='name='+nom+' '+prenom #print 'nom='+nom+'\nprenom='+prenom+'\n'+critere+'\n' try: #path = 'DC=esi-supinfo,DC=com' #l = ldap.initialize('ldap://ray.esi-supinfo.com:389') l = ldap.initialize('ldap://10.20.40.1:389') l.simple_bind_s('42586@esi-supinfo.com','') res = l.search_s("OU=SUPINFO,DC=esi-supinfo,DC=com", ldap.SCOPE_SUBTREE, critere,['mailNickname','sn','givenName','mail','memberOf']) #print res if res == []: self.error=1 else: self.error=0 self.lastname=res[0][1]['sn'][0] self.firsname=res[0][1]['givenName'][0] self.mail=res[0][1]['mail'][0] self.member=res[0][1]['memberOf'] self.result=res #for r in res: #print r[0]+'\nicjkdb' except ldap.LDAPError, error: self.error=2 print 'problem with ldap',error class CampusApplet(gtk.EventBox): def __init__(self, applet=None): gtk.EventBox.__init__(self) self.applet = applet self.containBox = gtk.HBox() self.icon = gtk.Image() self.icon.set_from_file('contact-new.png') self.containBox.pack_start(self.icon) self.add(self.containBox) self.connect("button-press-event", self.openResult) #self.connect("button-press-event", self.openResult) #self.connect("activate",self.pechoTouche) #self.connect("backspace",self.flushEntry) self.result = ResultGlade() self.result.wTree.get_widget("fenetre").hide() self.show_result=0 def openResult(self, event, toto): if self.show_result == 0: self.result.wTree.get_widget("fenetre").show() self.show_result=1 else: self.result.wTree.get_widget("fenetre").hide() self.show_result=0 def flushEntry(self, event): #if self.entry.get_text() == "": print "rien dedans" def giveEntryFocus(self, widget, event): try: pass #self.applet.request_focus(long(event.time)) except AttributeError: pass return False def pechoTouche(self, event): #print self.entry.get_text() #self.recherche = Personne(self.entry.get_text()) #self.recherche.query_ldap() #ResultMoz().populate(self.recherche.getResult()) #print self.recherche.getResult() #Reponse().show_all() pass def button_pressed_cb(self, button): print "Hello again - the button was pressed" class ResultGlade: def __init__(self): #Set the Glade file self.gladefile = "gui/gui.glade" self.wTree = gtk.glade.XML(self.gladefile) self.wTree.get_widget("fenetre").move(850, 28) # recuperer ce tuple depuis http://www.pygtk.org/pygtk2reference/class-gdkwindow.html#method-gdkwindow--get-origin voir deskbar avec alignerlawindow.png dans le rep #Get the Main Window, and connect the "destroy" event self.window = self.wTree.get_widget("fenetre") self.wTree.get_widget("infos_content").set_text("Nom : BLOT\nPrenom : Sylvain\nSite : Alsace\nPromo : IS2\nMail: sylvain.blot@supinfo.com\nCampusID : 42586") if (self.window): self.window.connect("destroy", gtk.main_quit) self.wTree.get_widget("searchbar").connect("button-press-event", self.giveEntryFocus) def populate(self, infos): print "-----------------\npopulate triggered\n" self.contenu1=gtk.TextBuffer() self.contenu1.set_text("Nom\n"+infos[0][1]['sn'][0]+"\nPrenom\n"+infos[0][1]['givenName'][0]+"\nEmail\n"+infos[0][1]['mail'][0]) self.wTree.get_widget("contenu1").set_buffer(self.contenu1) self.PhotoUrl = 'http://www.campus-booster.net/actorpictures/'+infos[0][1]['mailNickname'][0]+'.jpg' urllib.urlretrieve(self.PhotoUrl, "/tmp/"+infos[0][1]['mailNickname'][0]+'.jpg') self.wTree.get_widget("Photo").set_from_file("/tmp/"+infos[0][1]['mailNickname'][0]+'.jpg') self.wTree.get_widget("fenetre").show() def giveEntryFocus(self, widget, event): try: pass self.wTree.get_widget("searchbar").request_focus(long(event.time)) except AttributeError: pass return False def createApplet(applet, iid): foo = CampusApplet(applet) applet.add(foo) applet.show_all() return True def main_applet(): gnomeapplet.bonobo_factory( "OAFIID:CampusApplet_Factory", gnomeapplet.Applet.__gtype__, "Campus Applet", "1.0", createApplet ) main_applet()