From 208a68e451635883d0c6f58e56c8308bafe8b16c Mon Sep 17 00:00:00 2001 From: Walter Bender Date: Sun, 09 Jun 2013 22:06:54 +0000 Subject: refactoring based on lasted commits upstream --- (limited to 'extensions/web/twitter/account.py') diff --git a/extensions/web/twitter/account.py b/extensions/web/twitter/account.py index a2e4bf0..934396d 100644 --- a/extensions/web/twitter/account.py +++ b/extensions/web/twitter/account.py @@ -35,6 +35,7 @@ from gi.repository import GObject from sugar3.datastore import datastore from sugar3.graphics.alert import NotifyAlert from sugar3.graphics.icon import Icon +from sugar3.graphics.menuitem import MenuItem from jarabe.journal import journalwindow from jarabe.web import account @@ -51,7 +52,7 @@ COMMENT_IDS = 'twr_comment_ids' COMMENT_LAST_ID = 'last_comment_id' -class TwitterAccount(account.Account): +class Account(account.Account): CONSUMER_TOKEN_KEY = "/desktop/sugar/collaboration/twitter_consumer_token" CONSUMER_SECRET_KEY = "/desktop/sugar/collaboration/twitter_consumer_secret" @@ -62,37 +63,56 @@ class TwitterAccount(account.Account): self._client = GConf.Client.get_default() ctoken, csecret, atoken, asecret = self._access_tokens() TwrAccount.set_secrets(ctoken, csecret, atoken, asecret) - self._alert = None + self._shared_journal_entry = None def get_description(self): return ACCOUNT_NAME - def is_configured(self): - return None not in self._access_tokens() + def get_token_state(self): + if None in self._access_tokens(): + return self.STATE_NONE + else: + # No expiration date + return self.STATE_VALID + + def _access_tokens(self): + return (self._client.get_string(self.CONSUMER_TOKEN_KEY), + self._client.get_string(self.CONSUMER_SECRET_KEY), + self._client.get_string(self.ACCESS_TOKEN_KEY), + self._client.get_string(self.ACCESS_SECRET_KEY)) - def is_active(self): - # No expiration date - return None not in self._access_tokens() + def get_shared_journal_entry(self): + if self._shared_journal_entry is None: + self._shared_journal_entry = _SharedJournalEntry(self) + return self._shared_journal_entry + +class _SharedJournalEntry(account.SharedJournalEntry): + __gsignals__ = { + 'transfer-state-changed': (GObject.SignalFlags.RUN_FIRST, None, + ([str])), + } + def __init__(self, twaccount): + self._account = twaccount + self._alert = None def get_share_menu(self, journal_entry_metadata): - twr_share_menu = _TwitterShareMenu(journal_entry_metadata, - self.is_active()) - self._connect_transfer_signals(twr_share_menu) - return twr_share_menu + menu = _ShareMenu( + journal_entry_metadata, + self._account.get_token_state() == self._account.STATE_VALID) + self._connect_transfer_signals(menu) + return menu def get_refresh_menu(self): - twr_refresh_menu = _TwitterRefreshMenu(self.is_active()) - self._connect_transfer_signals(twr_refresh_menu) - return twr_refresh_menu + menu = _RefreshMenu( + self._account.get_token_state() == self._account.STATE_VALID) + self._connect_transfer_signals(menu) + return menu def _connect_transfer_signals(self, transfer_widget): transfer_widget.connect('transfer-state-changed', self._transfer_state_changed_cb) def _transfer_state_changed_cb(self, widget, state_message): - logging.debug('_transfer_state_changed_cb') - - # First, remove any existing alert if self._alert is None: self._alert = NotifyAlert() self._alert.props.title = ACCOUNT_NAME @@ -107,18 +127,11 @@ class TwitterAccount(account.Account): journalwindow.get_journal_window().remove_alert(alert) self._alert = None - def _access_tokens(self): - return (self._client.get_string(self.CONSUMER_TOKEN_KEY), - self._client.get_string(self.CONSUMER_SECRET_KEY), - self._client.get_string(self.ACCESS_TOKEN_KEY), - self._client.get_string(self.ACCESS_SECRET_KEY)) - -class _TwitterShareMenu(account.MenuItem): - __gtype_name__ = 'JournalTwitterMenu' +class _ShareMenu(MenuItem): def __init__(self, metadata, is_active): - account.MenuItem.__init__(self, ACCOUNT_NAME) + MenuItem.__init__(self, ACCOUNT_NAME) if is_active: icon_name = 'twitter-share' @@ -183,9 +196,9 @@ class _TwitterShareMenu(account.MenuItem): pixbuf.savev(image_path, 'png', [], []) -class _TwitterRefreshMenu(account.MenuItem): +class _RefreshMenu(MenuItem): def __init__(self, is_active): - account.MenuItem.__init__(self, ACCOUNT_NAME) + MenuItem.__init__(self, ACCOUNT_NAME) self._is_active = is_active self._metadata = None @@ -217,11 +230,14 @@ class _TwitterRefreshMenu(account.MenuItem): logging.debug('_twr_refresh_menu_clicked_cb') if self._metadata is None: - logging.debug('_twr_refresh_menu_clicked_cb called without metadata') + logging.debug( + '_twr_refresh_menu_clicked_cb called without metadata') return if 'twr_object_id' not in self._metadata: - logging.debug('_twr_refresh_menu_clicked_cb called without twr_object_id in metadata') + logging.debug( + '_twr_refresh_menu_clicked_cb called without twr_object_id \ +in metadata') return self.emit('transfer-state-changed', _('Download started')) @@ -234,7 +250,8 @@ class _TwitterRefreshMenu(account.MenuItem): status_id = ds_object.metadata[COMMENT_LAST_ID] timeline = TwrTimeline() - timeline.connect('mentions-downloaded', self._twr_mentions_downloaded_cb) + timeline.connect('mentions-downloaded', + self._twr_mentions_downloaded_cb) timeline.mentions_timeline(since_id=status_id) def _twr_mentions_downloaded_cb(self, timeline, comments): @@ -254,7 +271,8 @@ class _TwitterRefreshMenu(account.MenuItem): new_comment = False for comment in comments: # XXX hope for a better API - if comment['in_reply_to_status_id_str'] != self._metadata['twr_object_id']: + if comment['in_reply_to_status_id_str'] != \ + self._metadata['twr_object_id']: continue if comment['id_str'] not in ds_comment_ids: @@ -280,4 +298,4 @@ class _TwitterRefreshMenu(account.MenuItem): logging.debug('_twr_comments_download_failed_cb: %s' % (failed_reason)) def get_account(): - return TwitterAccount() + return Account() -- cgit v0.9.1