~leo.robol/lum/trunk

« back to all changes in this revision

Viewing changes to src/lum/interface/new_user_dialog.py

  • Committer: Leonardo Robol
  • Date: 2010-09-19 15:31:17 UTC
  • Revision ID: git-v1:281ceece5234622daba78fabf0efaf6cc893693c
Moved source to better suit setup.py

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#
 
2
# -*- coding: utf-8 -*-
 
3
 
 
4
import gtk, os
 
5
from lum.ldap_protocol import UserModel
 
6
from utilities import _, show_error_dialog, ask_question, create_builder
 
7
 
 
8
class lumNewUserDialog():
 
9
    
 
10
    def __init__(self, datapath, connection):
 
11
        
 
12
        signals = {
 
13
            'on_username_entry_focus_out_event':     self.guess_params,
 
14
        }
 
15
        
 
16
        self.__builder = create_builder("LumNewUserDialog.ui")
 
17
        
 
18
        self.__window = self.__builder.get_object("new_user_dialog")
 
19
        self.__connection = connection
 
20
        self.usermodel = None
 
21
        
 
22
        self.__builder.connect_signals(signals)
 
23
        
 
24
    def guess_params(self, widget = None, event_data = None):
 
25
        """Guess parameters"""
 
26
        if widget is None:
 
27
            widget = self.__builder.get_object("username_entry")
 
28
        
 
29
        username = widget.get_text()
 
30
        
 
31
        # Guess Surname
 
32
        sn = self.__builder.get_object("sn_entry")
 
33
        if sn.get_text() == "":
 
34
            sn.set_text(username.split(".")[-1].capitalize())
 
35
        
 
36
        # Guess user home
 
37
        home = self.__builder.get_object("home_entry")
 
38
        if home.get_text() == "" and username != "":
 
39
            home.set_text("/home/" + username)
 
40
        
 
41
    def run(self):
 
42
        """Run dialog"""
 
43
        
 
44
        # Check if the user says "save"...
 
45
        if self.__window.run() == 1:
 
46
            
 
47
            # And then retrieve data
 
48
            username = self.__builder.get_object("username_entry").get_text()
 
49
            givenName = self.__builder.get_object("givenName_entry").get_text()
 
50
            sn = self.__builder.get_object("sn_entry").get_text()
 
51
            home = self.__builder.get_object("home_entry").get_text()
 
52
            shell = self.__builder.get_object("shell_entry").get_text()
 
53
            
 
54
            # Set uid to 0 so ldap_protocol will autodetermine the first free uid
 
55
            # when creating the user
 
56
            uid = 0
 
57
            
 
58
            group = self.__builder.get_object("group_entry").get_text()
 
59
            gid = self.__connection.gid_from_group(group)
 
60
            
 
61
            # Check if this is an existent user
 
62
            if self.__connection.is_present("uid=%s" % username):
 
63
                show_error_dialog(_("User %s is present, not overwriting it!") % username)
 
64
                self.__window.destroy()
 
65
                return None
 
66
            
 
67
            # Ask the user if he intended to create the group
 
68
            if gid is None:
 
69
                if ask_question(_("The group %s doesn't exists, create it now?") % group):
 
70
                    self.__connection.add_group(group)
 
71
                    gid = self.__connection.gid_from_group(group)
 
72
                else:
 
73
                    self.__window.destroy()
 
74
                    return None
 
75
                
 
76
            self.usermodel = UserModel()
 
77
            self.usermodel.set_username(username)
 
78
            self.usermodel.set_gid(gid)
 
79
            self.usermodel.set_surname(sn)
 
80
            self.usermodel.set_given_name(givenName)
 
81
            self.usermodel.set_home(home)
 
82
            self.usermodel.set_shell(shell)
 
83
            
 
84
        self.__window.destroy()
 
85
        
 
86