/b-gtk/fix-viz

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/b-gtk/fix-viz

« back to all changes in this revision

Viewing changes to keyring.py

  • Committer: Vincent Ladeuil
  • Date: 2008-05-05 18:16:46 UTC
  • mto: (487.1.1 gtk)
  • mto: This revision was merged to the branch mainline in revision 490.
  • Revision ID: v.ladeuil+lp@free.fr-20080505181646-n95l8ltw2u6jtr26
Fix bug #187283 fix replacing _() by _i18n().

* genpot.sh 
Remove duplication. Add the ability to specify the genrated pot
file on command-line for debugging purposes.

* po/olive-gtk.pot:
Regenerated.

* __init__.py, branch.py, branchview/treeview.py, checkout.py,
commit.py, conflicts.py, diff.py, errors.py, initialize.py,
merge.py, nautilus-bzr.py, olive/__init__.py, olive/add.py,
olive/bookmark.py, olive/guifiles.py, olive/info.py,
olive/menu.py, olive/mkdir.py, olive/move.py, olive/remove.py,
olive/rename.py, push.py, revbrowser.py, status.py, tags.py:
Replace all calls to _() by calls to _i18n(), the latter being
defined in __init__.py and imported in the other modules from
there. This fix the problem encountered countless times when
running bzr selftest and getting silly error messages about
boolean not being callables.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2009 Jelmer Vernooij <jelmer@samba.org>
2
 
 
3
 
# This program is free software; you can redistribute it and/or modify
4
 
# it under the terms of the GNU General Public License as published by
5
 
# the Free Software Foundation; either version 2 of the License, or
6
 
# (at your option) any later version.
7
 
 
8
 
# This program is distributed in the hope that it will be useful,
9
 
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
 
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
 
# GNU General Public License for more details.
12
 
 
13
 
# You should have received a copy of the GNU General Public License
14
 
# along with this program; if not, write to the Free Software
15
 
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
 
 
17
 
import gobject
18
 
try:
19
 
    import gnomekeyring
20
 
except ImportError:
21
 
    gnomekeyring = None
22
 
 
23
 
from bzrlib.config import (
24
 
    CredentialStore,
25
 
    )
26
 
 
27
 
 
28
 
class GnomeKeyringCredentialStore(CredentialStore):
29
 
 
30
 
    def __init__(self):
31
 
        CredentialStore.__init__(self)
32
 
        # Older versions of gobject don't provide get_application_name so we
33
 
        # can't always check.
34
 
        get_app_name = getattr(gobject, 'get_application_name', None)
35
 
        if get_app_name is None or get_app_name() is None:
36
 
            # External applications that load bzrlib may already have set the
37
 
            # application name so we don't contradict them (when we can
38
 
            # determine it that is).
39
 
            gobject.set_application_name("bzr")
40
 
 
41
 
    def decode_password(self, credentials):
42
 
        if gnomekeyring is None:
43
 
            return None
44
 
        attrs = {}
45
 
        if "scheme" in credentials:
46
 
            attrs["protocol"] = credentials["scheme"].encode("utf-8")
47
 
        if "host" in credentials:
48
 
            attrs["server"] = credentials["host"].encode("utf-8")
49
 
        if "user" in credentials:
50
 
            attrs["user"] = credentials["user"].encode("utf-8")
51
 
        if credentials.get("port") is not None:
52
 
            attrs["port"] = credentials["port"]
53
 
        try:
54
 
            items = gnomekeyring.find_items_sync(
55
 
                gnomekeyring.ITEM_NETWORK_PASSWORD, attrs)
56
 
            return items[0].secret
57
 
        except (gnomekeyring.NoMatchError, gnomekeyring.DeniedError):
58
 
            return None
59
 
 
60
 
    def get_credentials(self, scheme, host, port=None, user=None, path=None, 
61
 
                        realm=None):
62
 
        if gnomekeyring is None:
63
 
            return None
64
 
        attrs = {
65
 
            "protocol": scheme.encode("utf-8"),
66
 
            "server": host.encode("utf-8"),
67
 
            }
68
 
        # TODO: realm ?
69
 
        if port is not None:
70
 
            attrs["port"] = port
71
 
        if user is not None:
72
 
            attrs["user"] = user.encode("utf-8")
73
 
        credentials = { "scheme": scheme, "host": host, "port": port, 
74
 
            "realm": realm, "user": user}
75
 
        try:
76
 
            items = gnomekeyring.find_items_sync(
77
 
                gnomekeyring.ITEM_NETWORK_PASSWORD, attrs)
78
 
            credentials["user"] = items[0].attributes["user"]
79
 
            credentials["password"] = items[0].secret
80
 
        except (gnomekeyring.NoMatchError, gnomekeyring.DeniedError, gnomekeyring.NoKeyringDaemonError):
81
 
            return None