# HG changeset patch # User souliane # Date 1411559383 -7200 # Node ID e6e0ea4dc83539855a69f1492cf847ccee517bbf # Parent 5e5661ab5c817112c343b25167d8a0983b9d064f memory: add Parameter "Chat history limit" diff -r 5e5661ab5c81 -r e6e0ea4dc835 frontends/src/quick_frontend/quick_chat.py --- a/frontends/src/quick_frontend/quick_chat.py Fri Oct 03 12:43:59 2014 +0200 +++ b/frontends/src/quick_frontend/quick_chat.py Wed Sep 24 13:49:43 2014 +0200 @@ -22,7 +22,7 @@ log = getLogger(__name__) from sat_frontends.tools.jid import JID from sat_frontends.quick_frontend.quick_utils import unescapePrivate -from sat_frontends.quick_frontend.constants import Const +from sat_frontends.quick_frontend.constants import Const as C class QuickChat(object): @@ -100,7 +100,7 @@ """Refresh or scroll down the focus after the history is printed""" pass - def historyPrint(self, size=20, profile='@NONE@'): + def historyPrint(self, size=C.HISTORY_LIMIT_DEFAULT, profile='@NONE@'): """Print the current history @param size (int): number of messages @param profile (str): %(doc_profile)s @@ -119,7 +119,7 @@ def onHistoryError(err): log.error(_("Can't get history")) - if self.target.startswith(Const.PRIVATE_PREFIX): + if self.target.startswith(C.PRIVATE_PREFIX): target = unescapePrivate(self.target) else: target = self.target.bare @@ -128,9 +128,9 @@ def _get_nick(self, jid): """Return nick of this jid when possible""" - if self.target.startswith(Const.PRIVATE_PREFIX): + if self.target.startswith(C.PRIVATE_PREFIX): unescaped = unescapePrivate(self.target) - if jid.startswith(Const.PRIVATE_PREFIX) or unescaped.bare == jid.bare: + if jid.startswith(C.PRIVATE_PREFIX) or unescaped.bare == jid.bare: return unescaped.resource return jid.resource if self.type == "group" else (self.host.contact_list.getCache(jid,'nick') or self.host.contact_list.getCache(jid,'name') or jid.node) @@ -166,7 +166,7 @@ def updateChatState(self, state, nick=None): """Set the chat state (XEP-0085) of the contact. Leave nick to None to set the state for a one2one conversation, or give a nickname or - Const.ALL_OCCUPANTS to set the state of a participant within a MUC. + C.ALL_OCCUPANTS to set the state of a participant within a MUC. @param state: the new chat state @param nick: None for one2one, the MUC user nick or ALL_OCCUPANTS """ diff -r 5e5661ab5c81 -r e6e0ea4dc835 src/core/constants.py --- a/src/core/constants.py Fri Oct 03 12:43:59 2014 +0200 +++ b/src/core/constants.py Wed Sep 24 13:49:43 2014 +0200 @@ -44,6 +44,8 @@ NO_SECURITY_LIMIT = -1 INDIVIDUAL = "individual" GENERAL = "general" + # General parameters + HISTORY_LIMIT = "History" # Parameters related to connection FORCE_SERVER_PARAM = "Force server" FORCE_PORT_PARAM = "Force port" @@ -169,6 +171,11 @@ BOOL_FALSE = "false" + ## Special values used in bridge methods calls ## + HISTORY_LIMIT_DEFAULT = -1 + HISTORY_LIMIT_NONE = -2 + + ## Misc ## SAVEFILE_DATABASE = APP_NAME_FILE + ".db" IQ_SET = '/iq[@type="set"]' diff -r 5e5661ab5c81 -r e6e0ea4dc835 src/memory/memory.py --- a/src/memory/memory.py Fri Oct 03 12:43:59 2014 +0200 +++ b/src/memory/memory.py Wed Sep 24 13:49:43 2014 +0200 @@ -350,8 +350,25 @@ extra = {} return self.storage.addToHistory(from_jid, to_jid, message, type_, extra, timestamp, profile) - def getHistory(self, from_jid, to_jid, limit=None, between=True, profile=C.PROF_KEY_NONE): + def getHistory(self, from_jid, to_jid, limit=C.HISTORY_LIMIT_NONE, between=True, profile=C.PROF_KEY_NONE): + """Retrieve messages in history + @param from_jid (JID): source JID (full, or bare for catchall) + @param to_jid (JID): dest JID (full, or bare for catchall) + @param limit (int): maximum number of messages to get: + - 0 for no message (returns the empty list) + - C.HISTORY_LIMIT_NONE or None for unlimited + - C.HISTORY_LIMIT_DEFAULT to use the HISTORY_LIMIT parameter value + @param between (bool): confound source and dest (ignore the direction) + @param profile (str): %(doc_profile)s + @return: list of tuple as in http://wiki.goffi.org/wiki/Bridge_API#getHistory + """ assert profile != C.PROF_KEY_NONE + if limit == C.HISTORY_LIMIT_DEFAULT: + limit = int(self.getParamA(C.HISTORY_LIMIT, 'General', profile_key=profile)) + elif limit == C.HISTORY_LIMIT_NONE: + limit = None + if limit == 0: + return defer.succeed([]) return self.storage.getHistory(jid.JID(from_jid), jid.JID(to_jid), limit, between, profile) def _getLastResource(self, jid_s, profile_key): diff -r 5e5661ab5c81 -r e6e0ea4dc835 src/memory/params.py --- a/src/memory/params.py Fri Oct 03 12:43:59 2014 +0200 +++ b/src/memory/params.py Wed Sep 24 13:49:43 2014 +0200 @@ -17,7 +17,7 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -from sat.core.i18n import _ +from sat.core.i18n import _, D_ from sat.core import exceptions from sat.core.constants import Const as C @@ -44,6 +44,7 @@ + @@ -61,12 +62,14 @@ """ % { - 'category_general': _("General"), - 'category_connection': _("Connection"), - 'label_NewAccount': _("Register new account"), - 'label_autoconnect': _('Connect on frontend startup'), - 'label_autodisconnect': _('Disconnect on frontend closure'), - 'category_misc': _("Misc"), + 'category_general': D_("General"), + 'category_connection': D_("Connection"), + 'history_param': C.HISTORY_LIMIT, + 'label_history': D_('Chat history limit'), + 'label_NewAccount': D_("Register new account"), + 'label_autoconnect': D_('Connect on frontend startup'), + 'label_autodisconnect': D_('Disconnect on frontend closure'), + 'category_misc': D_("Misc"), 'force_server_param': C.FORCE_SERVER_PARAM, 'force_port_param': C.FORCE_PORT_PARAM, } diff -r 5e5661ab5c81 -r e6e0ea4dc835 src/memory/sqlite.py --- a/src/memory/sqlite.py Fri Oct 03 12:43:59 2014 +0200 +++ b/src/memory/sqlite.py Wed Sep 24 13:49:43 2014 +0200 @@ -265,10 +265,15 @@ return d def getHistory(self, from_jid, to_jid, limit=None, between=True, profile=None): - """Store a new message in history - @param from_jid: source JID (full, or bare for catchall - @param to_jid: dest JID (full, or bare for catchall - @param size: maximum number of messages to get, or None for unlimited + """Retrieve messages in history + @param from_jid (JID): source JID (full, or bare for catchall) + @param to_jid (JID): dest JID (full, or bare for catchall) + @param limit (int): maximum number of messages to get: + - 0 for no message (returns the empty list) + - None for unlimited + @param between (bool): confound source and dest (ignore the direction) + @param profile (str): %(doc_profile)s + @return: list of tuple as in http://wiki.goffi.org/wiki/Bridge_API#getHistory """ assert(profile) if limit == 0: