[pkg-fso-commits] [SCM] FSO frameworkd Debian packaging branch, debian, updated. upstream/0.9.5.5-717-g0f98819

Daniele Ricci daniele.athome at gmail.com
Sat Aug 6 08:20:08 UTC 2011


The following commit has been merged in the debian branch:
commit e595f5c93d5a37e9f4edd28a4ccf0227531fefeb
Author: Daniele Ricci <daniele.athome at gmail.com>
Date:   Fri Oct 15 16:56:45 2010 +0200

    Message(Un)read and MessageSent both converted to New
    
    Signed-off-by: Daniele Ricci <daniele.athome at gmail.com>

diff --git a/framework/subsystems/opimd/db_handler.py b/framework/subsystems/opimd/db_handler.py
index 4dd6007..471e4b7 100644
--- a/framework/subsystems/opimd/db_handler.py
+++ b/framework/subsystems/opimd/db_handler.py
@@ -75,10 +75,6 @@ def regex_matches(string, pattern):
         logger.error("While matching regex (pattern = %s, string = %s) got: %s",unicode(pattern), unicode(string), exp)
     return 0
 
-rootdir = os.path.join( rootdir, 'opim' )
-
-_SQLITE_FILE_NAME = os.path.join(rootdir,'pim.db')
-
 def dict_factory(cursor, row, skip_field = None):
     d = {}
     for idx, col in enumerate(cursor.description):
@@ -86,6 +82,11 @@ def dict_factory(cursor, row, skip_field = None):
             d[col[0]] = row[idx]
     return d
 
+rootdir = os.path.join( rootdir, 'opim' )
+
+_SQLITE_FILE_NAME = os.path.join(rootdir,'pim.db')
+_SQLITE_DATABASE_VERSION = '2.1'
+
 class DbHandler(object):
     con = None
     db_prefix = "generic"
@@ -121,6 +122,10 @@ class DbHandler(object):
                         name TEXT
                     );
 
+                    CREATE TABLE IF NOT EXISTS info (
+                        field_name TEXT PRIMARY KEY,
+                        value TEXT NOT NULL
+                    );
                     
                     CREATE TABLE IF NOT EXISTS """ + self.db_prefix + """_fields (
                         field_name TEXT PRIMARY KEY,
@@ -150,6 +155,15 @@ class DbHandler(object):
 
                     cur.execute(self.get_create_type_index(type))
             self.con.commit()
+
+            cur.execute("select value from info where field_name = 'version'")
+            version_info = cur.fetchone()
+            if version_info == None:
+                cur.execute("insert into info values(?, ?)", ('version', _SQLITE_DATABASE_VERSION))
+                self.con.commit()
+            elif version_info[0] != _SQLITE_DATABASE_VERSION:
+                raise Exception("Database version mismatch, needed %s, current is %s" % (_SQLITE_DATABASE_VERSION, version_info[0]));
+
             cur.close()
         
         except Exception, exp:
diff --git a/framework/subsystems/opimd/pimd_messages.py b/framework/subsystems/opimd/pimd_messages.py
index e779192..10e0b13 100644
--- a/framework/subsystems/opimd/pimd_messages.py
+++ b/framework/subsystems/opimd/pimd_messages.py
@@ -139,12 +139,20 @@ SELECT m.messages_id messages_id,
     ) TotalCount,
     (
         SELECT count(*) FROM
+            (
             messages_boolean b
             OUTER LEFT JOIN
             messages_phonenumber p
             ON b.messages_id = p.messages_id AND
-            b.field_name = 'MessageUnread'
-            WHERE b.value = '1' AND
+            b.field_name = 'New'
+            )
+            OUTER LEFT JOIN
+            messages_text x
+            ON b.messages_id = x.messages_id
+            AND x.field_name = 'Direction'
+            WHERE
+            b.value = '1' AND
+            x.value = 'in' AND
             p.field_name = 'Peer' AND p.value = p1.value
     ) UnreadCount
     FROM (
@@ -277,8 +285,7 @@ class MessageDomain(Domain, GenericDomain):
                         'Peer'          : 'phonenumber',
                         'Source'        : 'text',
                         'Direction'     : 'text',
-                        'MessageSent'   : 'boolean',
-                        'MessageUnread' : 'boolean',
+                        'New'           : 'boolean',
                         'Timestamp'     : 'date',
                         'Timezone'      : 'timezone',
                         'Content'       : 'text'
@@ -303,7 +310,7 @@ class MessageDomain(Domain, GenericDomain):
 
         self.fso_handler = MessagesFSO(self)
 
-        self._unread_messages = len(self.db_handler.query({'Direction': 'in', 'MessageUnread':1}))
+        self._unread_messages = len(self.db_handler.query({'Direction': 'in', 'New':1}))
 
     #---------------------------------------------------------------------#
     # dbus methods and signals                                            #
@@ -323,7 +330,7 @@ class MessageDomain(Domain, GenericDomain):
         @param message_data List of fields; format is [Key:Value, Key:Value, ...]
         @return URI of the newly created d-bus message object"""
 
-        unread = entry_data.get('MessageUnread')
+        unread = entry_data.get('New')
         #Make sure is boolean
         if unread == None:
            unread = 0
@@ -426,7 +433,7 @@ class MessageDomain(Domain, GenericDomain):
         self.check_entry_id(num_id)
 
         message = self.get_content(num_id)
-        unread = message.get('MessageUnread')
+        unread = message.get('New')
         #Make sure is boolean
         if unread == None:
            unread = 0
@@ -458,8 +465,8 @@ class MessageDomain(Domain, GenericDomain):
 
         message = self.get_content(num_id)
 #FIXME: What if it was outgoing and is now incoming?
-        old_unread = message['MessageUnread'] if message.has_key('MessageUnread') else False
-        new_unread = data['MessageUnread'] if data.has_key('MessageUnread') else False
+        old_unread = message['New'] if message.has_key('New') else False
+        new_unread = data['New'] if data.has_key('New') else False
         old_in = message['Direction'] == 'in' if message.has_key('Direction') else False
         new_in = data['Direction'] == 'in' if data.has_key('Direction') else old_in
         if old_unread and old_in and not new_unread:
@@ -528,21 +535,20 @@ class MessagesFSO(object):
 
         logger.debug("Processing entry \"%s\"...", text)
 
+        entry['New'] = 1
         if status in ('read', 'unread'):
             entry['Direction'] = 'in'
-            entry['MessageUnread'] = 1
         else:
             entry['Direction'] = 'out'
-            entry['MessageSent'] = 0
-            
-        if status == 'read': entry['MessageUnread'] = 0
-        if status == 'sent': entry['MessageSent'] = 1
-        
+
+        if status == 'read': entry['New'] = 1
+        if status == 'sent': entry['New'] = 0
+
         entry['Peer'] = number
-        
+
         # TODO Handle text properly, i.e. make it on-demand if >1KiB
         entry['Content'] = text
-              
+
         entry['Source'] = 'SMS'
 
         entry['SMS-combined_message'] = 0
@@ -589,7 +595,7 @@ class MessagesFSO(object):
                     if complete:
                         edit_data['SMS-complete_message']=1
                     edit_data['Content'] = new_content
-                    edit_data['MessageUnread'] = 1
+                    edit_data['New'] = 1
                     self.domain.Update(edit_data, '/' + str(id))
                 else:
                     register = 1
@@ -702,7 +708,7 @@ class MessagesFSO(object):
         entry['Content'] = msg
         entry['Peer'] = number
         entry['Direction'] = 'in'
-        entry['MessageUnread'] = 1
+        entry['New'] = 1
         entry['Source'] = 'SMS'
         # We get number of quarters of an hours, convert to minutes:
         zone = int(timestamp[18:]) * 15
diff --git a/tools/update-db-2.1.sql b/tools/update-db-2.1.sql
new file mode 100644
index 0000000..4fd68ac
--- /dev/null
+++ b/tools/update-db-2.1.sql
@@ -0,0 +1,6 @@
+-- delete deprecated MessageRead values
+DELETE FROM messages_boolean WHERE field_name = 'MessageRead' AND value = '1';
+-- invert MessageRead and MessageSent to be used as New
+UPDATE messages_boolean SET value = NOT value WHERE field_name = 'MessageRead' OR field_name = 'MessageSent';
+-- rename MessageRead and MessageSent to New
+UPDATE messages_boolean SET field_name = 'New' WHERE field_name = 'MessageRead' OR field_name = 'MessageSent';

-- 
FSO frameworkd Debian packaging



More information about the pkg-fso-commits mailing list