Merge lp:~ken-vandine/gwibber-service-sohu/fix_logger into lp:gwibber-service-sohu

Proposed by Ken VanDine
Status: Needs review
Proposed branch: lp:~ken-vandine/gwibber-service-sohu/fix_logger
Merge into: lp:gwibber-service-sohu
Diff against target: 228 lines (+47/-35)
3 files modified
__init__.py (+10/-7)
gtk/sohu/__init__.py (+34/-25)
setup.py (+3/-3)
To merge this branch: bzr merge lp:~ken-vandine/gwibber-service-sohu/fix_logger
Reviewer Review Type Date Requested Status
An Yang Approve
Review via email: mp+98248@code.launchpad.net

Description of the change

* ported to logger module from gwibber 3.3.90
* ported accounts dialog to gtk3

To post a comment you must log in.
18. By Ken VanDine

install icons in the gwibber hicolor theme dir

19. By Ken VanDine

Ported to gtk3

Revision history for this message
An Yang (euroford) :
review: Approve
20. By Ken VanDine

remove import of gnomekeyring

21. By Ken VanDine

Don't crash on unicode characters in a username

22. By Ken VanDine

fixed missing import

Unmerged revisions

22. By Ken VanDine

fixed missing import

21. By Ken VanDine

Don't crash on unicode characters in a username

20. By Ken VanDine

remove import of gnomekeyring

19. By Ken VanDine

Ported to gtk3

18. By Ken VanDine

install icons in the gwibber hicolor theme dir

17. By Ken VanDine

ported to logger module from gwibber 3.3.90

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file '__init__.py'
--- __init__.py 2011-04-29 10:54:30 +0000
+++ __init__.py 2012-04-24 18:35:29 +0000
@@ -1,12 +1,15 @@
1from gwibber.microblog import network, util1from gwibber.microblog import network, util
2from htmlentitydefs import name2codepoint2from htmlentitydefs import name2codepoint
3import re3import re
4import gnomekeyring
5from oauth import oauth4from oauth import oauth
6from gwibber.microblog.util import log, resources5from gwibber.microblog.util import resources
6
7from gettext import lgettext as _7from gettext import lgettext as _
8import sohu.utils8import sohu.utils
9log.logger.name = "Sohu"9
10import logging
11logger = logging.getLogger("Sohu")
12logger.debug("Initializing.")
1013
11PROTOCOL_INFO = {14PROTOCOL_INFO = {
12 "name": "Sohu",15 "name": "Sohu",
@@ -107,7 +110,7 @@
107 m["images"] = images110 m["images"] = images
108 m["type"] = "photo"111 m["type"] = "photo"
109 except: 112 except:
110 log.logger.error("%s failure - %s", PROTOCOL_INFO["name"], data)113 logger.error("%s failure - %s", PROTOCOL_INFO["name"], data)
111 return {}114 return {}
112 115
113 return m116 return m
@@ -219,7 +222,7 @@
219 if isinstance(data, dict) and data.get("errors", 0):222 if isinstance(data, dict) and data.get("errors", 0):
220 if "authenticate" in data["errors"][0]["message"]:223 if "authenticate" in data["errors"][0]["message"]:
221 logstr = """%s: %s - %s""" % (PROTOCOL_INFO["name"], _("Authentication failed"), error["message"])224 logstr = """%s: %s - %s""" % (PROTOCOL_INFO["name"], _("Authentication failed"), error["message"])
222 log.logger.error("%s", logstr)225 logger.error("%s", logstr)
223 return [{"error": {"type": "auth", "account": self.account, "message": data["errors"][0]["message"]}}]226 return [{"error": {"type": "auth", "account": self.account, "message": data["errors"][0]["message"]}}]
224 else:227 else:
225 for error in data["errors"]:228 for error in data["errors"]:
@@ -228,11 +231,11 @@
228 elif isinstance(data, dict) and data.get("error", 0):231 elif isinstance(data, dict) and data.get("error", 0):
229 if "Incorrect signature" in data["error"]:232 if "Incorrect signature" in data["error"]:
230 logstr = """%s: %s - %s""" % (PROTOCOL_INFO["name"], _("Request failed"), data["error"])233 logstr = """%s: %s - %s""" % (PROTOCOL_INFO["name"], _("Request failed"), data["error"])
231 log.logger.error("%s", logstr)234 logger.error("%s", logstr)
232 return [{"error": {"type": "auth", "account": self.account, "message": data["error"]}}]235 return [{"error": {"type": "auth", "account": self.account, "message": data["error"]}}]
233 elif isinstance(data, str):236 elif isinstance(data, str):
234 logstr = """%s: %s - %s""" % (PROTOCOL_INFO["name"], _("Request failed"), data)237 logstr = """%s: %s - %s""" % (PROTOCOL_INFO["name"], _("Request failed"), data)
235 log.logger.error("%s", logstr)238 logger.error("%s", logstr)
236 return [{"error": {"type": "request", "account": self.account, "message": data}}]239 return [{"error": {"type": "request", "account": self.account, "message": data}}]
237 240
238 if parse == "list":241 if parse == "list":
239242
=== modified file 'gtk/sohu/__init__.py'
--- gtk/sohu/__init__.py 2011-04-15 06:31:07 +0000
+++ gtk/sohu/__init__.py 2012-04-24 18:35:29 +0000
@@ -1,9 +1,11 @@
1import gtk, pango, webkit, gnomekeyring1from gi.repository import Gdk, Gtk, WebKit, Pango
2from gi.repository.Gtk import Builder
3
2import urllib, urllib2, json, urlparse, uuid4import urllib, urllib2, json, urlparse, uuid
3from oauth import oauth5from oauth import oauth
46
5from gtk import Builder
6from gwibber.microblog.util import resources7from gwibber.microblog.util import resources
8from gwibber.microblog.util.keyring import get_from_keyring
7import gettext9import gettext
8from gettext import gettext as _10from gettext import gettext as _
9if hasattr(gettext, 'bind_textdomain_codeset'):11if hasattr(gettext, 'bind_textdomain_codeset'):
@@ -11,33 +13,33 @@
11gettext.textdomain('gwibber-service-sohu')13gettext.textdomain('gwibber-service-sohu')
12import sohu.utils14import sohu.utils
1315
14gtk.gdk.threads_init()16Gdk.threads_init()
1517
16sigmeth = oauth.OAuthSignatureMethod_HMAC_SHA1()18sigmeth = oauth.OAuthSignatureMethod_HMAC_SHA1()
1719
18class AccountWidget(gtk.VBox):20class AccountWidget(Gtk.VBox):
19 """AccountWidget: A widget that provides a user interface for configuring sohu accounts in Gwibber21 """AccountWidget: A widget that provides a user interface for configuring sohu accounts in Gwibber
20 """22 """
21 23
22 def __init__(self, account=None, dialog=None):24 def __init__(self, account=None, dialog=None):
23 """Creates the account pane for configuring Sohu accounts"""25 """Creates the account pane for configuring Sohu accounts"""
24 gtk.VBox.__init__( self, False, 20 )26 Gtk.VBox.__init__( self, False, 20 )
25 self.ui = gtk.Builder()27 self.ui = Gtk.Builder()
26 self.ui.set_translation_domain ("gwibber")28 self.ui.set_translation_domain ("gwibber")
27 self.ui.add_from_file (resources.get_ui_asset("gwibber-accounts-sohu.ui"))29 self.ui.add_from_file (resources.get_ui_asset("gwibber-accounts-sohu.ui"))
28 self.ui.connect_signals(self)30 self.ui.connect_signals(self)
29 self.vbox_settings = self.ui.get_object("vbox_settings")31 self.vbox_settings = self.ui.get_object("vbox_settings")
30 self.pack_start(self.vbox_settings, False, False)32 self.pack_start(self.vbox_settings, False, False, 0)
31 self.show_all()33 self.show_all()
3234
33 self.account = account or {}35 self.account = account or {}
34 self.dialog = dialog36 self.dialog = dialog
35 has_secret_key = True37 self.window = dialog.dialog
38 has_access_token = False
39
40 has_secret_key = False
36 if self.account.has_key("id"):41 if self.account.has_key("id"):
37 try:42 has_secret_key = get_from_keyring(self.account['id'], 'secret_token') is not None
38 value = gnomekeyring.find_items_sync(gnomekeyring.ITEM_GENERIC_SECRET, {"id": str("%s/%s" % (self.account["id"], "secret_token"))})[0].secret
39 except gnomekeyring.NoMatchError:
40 has_secret_key = False
4143
42 try:44 try:
43 if self.account.has_key("access_token") and self.account.has_key("secret_token") and self.account.has_key("username") and has_secret_key and not self.dialog.condition:45 if self.account.has_key("access_token") and self.account.has_key("secret_token") and self.account.has_key("username") and has_secret_key and not self.dialog.condition:
@@ -57,8 +59,9 @@
57 def on_sohu_auth_clicked(self, widget, data=None):59 def on_sohu_auth_clicked(self, widget, data=None):
58 self.winsize = self.window.get_size()60 self.winsize = self.window.get_size()
5961
60 web = webkit.WebView()62 web = WebKit.WebView()
61 web.get_settings().set_property("enable-plugins", False)63 web.get_settings().set_property("enable-plugins", False)
64 web.get_settings().set_property("enable-developer-extras", False)
62 web.load_html_string(_("<p>Please wait...</p>"), "file:///")65 web.load_html_string(_("<p>Please wait...</p>"), "file:///")
6366
64 self.consumer = oauth.OAuthConsumer(*sohu.utils.get_sohu_keys())67 self.consumer = oauth.OAuthConsumer(*sohu.utils.get_sohu_keys())
@@ -79,15 +82,17 @@
79 web.set_size_request(550, 400)82 web.set_size_request(550, 400)
80 web.connect("title-changed", self.on_sohu_auth_title_change)83 web.connect("title-changed", self.on_sohu_auth_title_change)
8184
82 self.scroll = gtk.ScrolledWindow()85 self.scroll = Gtk.ScrolledWindow()
83 self.scroll.add(web)86 self.scroll.add(web)
87 self.scroll.set_size_request(550, 400)
8488
85 self.pack_start(self.scroll, True, True, 0)89 self.pack_start(self.scroll, True, True, 0)
86 self.show_all()90 self.show_all()
91 self.dialog.infobar.hide()
8792
88 self.ui.get_object("vbox1").hide()93 self.ui.get_object("vbox1").hide()
89 self.ui.get_object("vbox_advanced").hide()94 self.ui.get_object("vbox_advanced").hide()
90 self.dialog.infobar.set_message_type(gtk.MESSAGE_INFO)95 self.dialog.infobar.set_message_type(Gtk.MessageType.INFO)
9196
92 def on_sohu_auth_title_change(self, web=None, title=None, data=None):97 def on_sohu_auth_title_change(self, web=None, title=None, data=None):
93 saved = False98 saved = False
@@ -99,12 +104,12 @@
99 self.dialog.infobar_content_area.show()104 self.dialog.infobar_content_area.show()
100 self.dialog.infobar.show()105 self.dialog.infobar.show()
101106
102 message_label = gtk.Label(_("Verifying"))107 message_label = Gtk.Label(_("Verifying"))
103 message_label.set_use_markup(True)108 message_label.set_use_markup(True)
104 message_label.set_ellipsize(pango.ELLIPSIZE_END)109 message_label.set_ellipsize(Pango.EllipsizeMode.END)
105 self.dialog.infobar_content_area.add(message_label)110 self.dialog.infobar_content_area.add(message_label)
106 self.dialog.infobar.show_all()111 self.dialog.infobar.show_all()
107 self.scroll.hide()112 self.scroll.destroy()
108 url = web.get_main_frame().get_uri()113 url = web.get_main_frame().get_uri()
109 data = urlparse.parse_qs(url.split("?", 1)[1])114 data = urlparse.parse_qs(url.split("?", 1)[1])
110115
@@ -137,7 +142,7 @@
137142
138 account_data = json.loads(urllib2.urlopen(apireq.to_url()).read())143 account_data = json.loads(urllib2.urlopen(apireq.to_url()).read())
139144
140 self.account["username"] = account_data["screen_name"]145 self.account["username"] = account_data["screen_name"].encode("utf-8")
141 self.account["user_id"] = account_data["id"]146 self.account["user_id"] = account_data["id"]
142147
143 if isinstance(account_data, dict):148 if isinstance(account_data, dict):
@@ -145,16 +150,16 @@
145 saved = self.dialog.on_edit_account_save()150 saved = self.dialog.on_edit_account_save()
146 else:151 else:
147 print "Failed"152 print "Failed"
148 self.dialog.infobar.set_message_type(gtk.MESSAGE_ERROR)153 self.dialog.infobar.set_message_type(Gtk.MessageType.ERROR)
149 message_label.set_text(_("Authorization failed. Please try again.")) 154 message_label.set_text(_("Authorization failed. Please try again."))
150 else:155 else:
151 print "Failed"156 print "Failed"
152 self.dialog.infobar.set_message_type(gtk.MESSAGE_ERROR)157 self.dialog.infobar.set_message_type(Gtk.MessageType.ERROR)
153 message_label.set_text(_("Authorization failed. Please try again."))158 message_label.set_text(_("Authorization failed. Please try again."))
154159
155 if saved: 160 if saved:
156 message_label.set_text(_("Successful"))161 message_label.set_text(_("Successful"))
157 self.dialog.infobar.set_message_type(gtk.MESSAGE_INFO)162 self.dialog.infobar.set_message_type(Gtk.MessageType.INFO)
158 #self.dialog.infobar.hide()163 #self.dialog.infobar.hide()
159164
160 self.ui.get_object("hbox_sohu_auth").hide()165 self.ui.get_object("hbox_sohu_auth").hide()
@@ -168,11 +173,15 @@
168 self.window.resize(*self.winsize)173 self.window.resize(*self.winsize)
169174
170 if title.get_title() == "Failure":175 if title.get_title() == "Failure":
171 web.hide()176 self.dialog.infobar.set_message_type(Gtk.MessageType.ERROR)
172 self.dialog.infobar.set_message_type(gtk.MESSAGE_ERROR)177 message_label = Gtk.Label (_("Authorization failed. Please try again."))
173 message_label.set_text(_("Authorization failed. Please try again."))178 message_label.set_use_markup(True)
179 message_label.set_ellipsize(Pango.EllipsizeMode.END)
180 self.dialog.infobar_content_area.add(message_label)
174 self.dialog.infobar.show_all()181 self.dialog.infobar.show_all()
175182
176 self.ui.get_object("vbox1").show()183 self.ui.get_object("vbox1").show()
177 self.ui.get_object("vbox_advanced").show()184 self.ui.get_object("vbox_advanced").show()
185 self.scroll.destroy()
178 self.window.resize(*self.winsize)186 self.window.resize(*self.winsize)
187 self.dialog.select_account ()
179188
=== modified file 'setup.py'
--- setup.py 2011-06-06 19:00:34 +0000
+++ setup.py 2012-04-24 18:35:29 +0000
@@ -16,9 +16,9 @@
16 ('share/gwibber/plugins/sohu/gtk', glob("gtk/*.*")),16 ('share/gwibber/plugins/sohu/gtk', glob("gtk/*.*")),
17 ('share/gwibber/plugins/sohu/gtk/sohu', glob("gtk/sohu/*.*")),17 ('share/gwibber/plugins/sohu/gtk/sohu', glob("gtk/sohu/*.*")),
18 ('share/gwibber/plugins/sohu/ui', glob("ui/*.*")),18 ('share/gwibber/plugins/sohu/ui', glob("ui/*.*")),
19 ('share/gwibber/plugins/sohu/ui/icons/16x16', glob("ui/icons/16x16/*.*")),19 ('share/gwibber/ui/icons/hicolor/16x16/apps', glob("ui/icons/16x16/*.*")),
20 ('share/gwibber/plugins/sohu/ui/icons/22x22', glob("ui/icons/22x22/*.*")),20 ('share/gwibber/ui/icons/hicolor/22x22/apps', glob("ui/icons/22x22/*.*")),
21 ('share/gwibber/plugins/sohu/ui/icons/scalable', glob("ui/icons/scalable/*.*")),21 ('share/gwibber/ui/icons/hicolor/scalable/apps', glob("ui/icons/scalable/*.*")),
22 ('share/gwibber/plugins/sohu/data', glob("data/*.*")),22 ('share/gwibber/plugins/sohu/data', glob("data/*.*")),
23 ],23 ],
24 cmdclass = { "build" : build_extra.build_extra,24 cmdclass = { "build" : build_extra.build_extra,

Subscribers

People subscribed via source and target branches

to all changes: