1a621409d6138af151d61e38accdaf0d5810faf6
[python-purple] / account.pyx
1 #
2 #  Copyright (c) 2008 INdT - Instituto Nokia de Tecnologia
3 #
4 #  This file is part of python-purple.
5 #
6 #  python-purple is free software: you can redistribute it and/or modify
7 #  it under the terms of the GNU General Public License as published by
8 #  the Free Software Foundation, either version 3 of the License, or
9 #  (at your option) any later version.
10 #
11 #  python-purple is distributed in the hope that it will be useful,
12 #  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 #  GNU General Public License for more details.
15 #
16 #  You should have received a copy of the GNU General Public License
17 #  along with this program.  If not, see <http://www.gnu.org/licenses/>.
18 #
19
20 cimport purple
21
22 from protocol import Protocol
23
24 cdef class Account:
25     """
26     Account class
27     @param username
28     @param protocol_id
29     """
30
31     def __init__(self, username, protocol_id):
32         self.__username = username
33         self.__protocol = Protocol(self, protocol_id)
34
35         if self._get_structure() == NULL:
36             self.__exists = False
37         else:
38             self.__exists = True
39
40     cdef account.PurpleAccount *_get_structure(self):
41         return account.purple_accounts_find(self.username, \
42                 self.protocol_id)
43
44     def __get_exists(self):
45         return self.__exists
46     exists = property(__get_exists)
47
48     def __get_username(self):
49         cdef char *username = NULL
50         if self.__exists:
51             username = <char *> account.purple_account_get_username( \
52                     self._get_structure())
53             if username:
54                 return username
55             else:
56                 return None
57         else:
58             return self.__username
59     username = property(__get_username)
60
61     def __get_protocol_id(self):
62         cdef char *protocol_id = NULL
63         if self.__exists:
64             protocol_id = <char *> account.purple_account_get_protocol_id( \
65                     self._get_structure())
66             if protocol_id:
67                 return protocol_id
68             else:
69                 return None
70         else:
71             return self.protocol_id
72     protocol_id = property(__get_protocol_id)
73
74     def __get_password(self):
75         cdef char *password = NULL
76         if self.__exists:
77             password = <char *> account.purple_account_get_password( \
78                     self._get_structure())
79             if password:
80                 return password
81             else:
82                 return None
83         else:
84             return None
85     password = property(__get_password)
86
87     def __get_alias(self):
88         cdef char *alias = NULL
89         if self.__exists:
90             alias = <char *> account.purple_account_get_alias(self._get_structure())
91             if alias:
92                 return alias
93             else:
94                 return None
95         else:
96             return None
97     alias = property(__get_alias)
98
99     def __get_user_info(self):
100         cdef char *user_info = NULL
101         if self.__exists:
102             user_info = <char *> account.purple_account_get_user_info(self._get_structure())
103             if user_info:
104                 return user_info
105             else:
106                 return None
107         else:
108             return None
109     user_info = property(__get_user_info)
110
111     def __get_remember_password(self):
112         if self.__exists:
113             return account.purple_account_get_remember_password( \
114                     self._get_structure())
115         else:
116             return None
117     remember_password = property(__get_remember_password)
118
119     def set_username(self, username):
120         """
121         Sets the account's username.
122
123         @param username The username
124         @return True if successful, False if account doesn't exists
125         """
126         if self.__exists:
127             account.purple_account_set_username(self._get_structure(), \
128                     username)
129             return True
130         else:
131             return False
132
133     def set_protocol_id(self, protocol_id):
134         """
135         Sets the account's protocol ID.
136
137         @param protocol_id The protocol ID
138         @return True if successful, False if account doesn't exists
139         """
140         if self.__exists:
141             self.__protocol._set_protocol_id(protocol_id)
142             return True
143         else:
144             return False
145
146     def set_password(self, password):
147         """
148         Sets the account's password.
149
150         @param password The password
151         @return True if successful, False if account doesn't exists
152         """
153         if self.__exists:
154             account.purple_account_set_password(self._get_structure(), \
155                     password)
156             return True
157         else:
158             return False
159
160     def set_alias(self, alias):
161         """
162         Sets the account's alias
163
164         @param alias The alias
165         @return True if successful, False if account doesn't exists
166         """
167         if self.__exists:
168             account.purple_account_set_alias(self._get_structure(), \
169                     alias)
170             return True
171         else:
172             return False
173
174     def set_user_info(self, user_info):
175         """
176         Sets the account's user information
177
178         @param user_info The user information
179         @return True if successful, False if account doesn't exists
180         """
181         if self.__exists:
182             account.purple_account_set_user_info(self._get_structure(), \
183                     user_info)
184             return True
185         else:
186             return False
187
188     def set_remember_password(self, remember_password):
189         """
190         Sets whether or not this account should save its password.
191
192         @param remember_password True if should remember the password,
193                                  or False otherwise
194         @return True if successful, False if account doesn't exists
195         """
196         if self.__exists:
197             account.purple_account_set_remember_password( \
198                 self._get_structure(), remember_password)
199             return True
200         else:
201             return False
202
203     def new(self):
204         """
205         Creates a new account.
206
207         @return True if successful, False if account already exists
208         """
209         if self.__exists:
210             return False
211         else:
212             account.purple_account_new(self.username, self.protocol_id)
213             self.__exists = True
214             return True