[pkg-fso-commits] [SCM] FSO frameworkd Debian packaging branch, debian, updated. upstream/0.9.5.5-717-g0f98819
Sebastian Krzyszkowiak
seba.dos1 at gmail.com
Sat Aug 6 08:18:01 UTC 2011
The following commit has been merged in the debian branch:
commit 7ad30ed37960bc64974fa9610f9aa94a0b39f65a
Author: Sebastian Krzyszkowiak <seba.dos1 at gmail.com>
Date: Mon Aug 24 22:11:54 2009 +0200
opimd: Fix updating multiple fields
diff --git a/framework/subsystems/opimd/pimb_sqlite_calls.py b/framework/subsystems/opimd/pimb_sqlite_calls.py
index 99c2d5a..c052aca 100644
--- a/framework/subsystems/opimd/pimb_sqlite_calls.py
+++ b/framework/subsystems/opimd/pimb_sqlite_calls.py
@@ -167,11 +167,14 @@ class SQLiteCallBackend(Backend):
for (field, value) in call_data:
if field=='_backend_entry_id':
callId=value
+ deleted = []
for (field, value) in call_data:
if field in reqfields:
cur.execute('UPDATE calls SET '+field+'=? WHERE id=?',(value,callId))
elif not field.startswith('_'):
- cur.execute('DELETE FROM call_values WHERE callId=? AND field=?',(callId,field))
+ if not field in deleted:
+ cur.execute('DELETE FROM call_values WHERE callId=? AND field=?',(callId,field))
+ deleted.append(field)
if isinstance(value, Array) or isinstance(value, list):
for val in value:
cur.execute('INSERT INTO call_values (field,value,callId) VALUES (?,?,?)',(field,val,callId))
diff --git a/framework/subsystems/opimd/pimb_sqlite_contacts.py b/framework/subsystems/opimd/pimb_sqlite_contacts.py
index 6eb5f3c..3b818b5 100644
--- a/framework/subsystems/opimd/pimb_sqlite_contacts.py
+++ b/framework/subsystems/opimd/pimb_sqlite_contacts.py
@@ -204,11 +204,14 @@ class SQLiteContactBackend(Backend):
for (field, value) in contact_data:
if field=='_backend_entry_id':
contactId=value
+ deleted = []
for (field, value) in contact_data:
if field in reqfields:
cur.execute('UPDATE contacts SET '+field+'=? WHERE id=?',(value,contactId))
elif not field.startswith('_'):
- cur.execute('DELETE FROM contact_values WHERE contactId=? AND field=?',(contactId,field))
+ if not field in deleted:
+ cur.execute('DELETE FROM contact_values WHERE contactId=? AND field=?',(contactId,field))
+ deleted.append(field)
if isinstance(value, Array) or isinstance(value, list):
for val in value:
cur.execute('INSERT INTO contact_values (field,value,contactId) VALUES (?,?,?)',(field,val,contactId))
diff --git a/framework/subsystems/opimd/pimb_sqlite_dates.py b/framework/subsystems/opimd/pimb_sqlite_dates.py
index 45c6acb..10b16c0 100644
--- a/framework/subsystems/opimd/pimb_sqlite_dates.py
+++ b/framework/subsystems/opimd/pimb_sqlite_dates.py
@@ -158,11 +158,14 @@ class SQLiteDatesBackend(Backend):
for (field, value) in date_data:
if field=='_backend_entry_id':
dateId=value
+ deleted = []
for (field, value) in date_data:
if field in reqfields:
cur.execute('UPDATE dates SET '+field+'=? WHERE id=?',(value,dateId))
elif not field.startswith('_'):
- cur.execute('DELETE FROM date_values WHERE dateId=? AND field=?',(dateId,field))
+ if not field in deleted:
+ cur.execute('DELETE FROM date_values WHERE dateId=? AND field=?',(dateId,field))
+ deleted.append(field)
if isinstance(value, Array) or isinstance(value, list):
for val in value:
cur.execute('INSERT INTO date_values (field,value,dateId) VALUES (?,?,?)',(field,val,dateId))
diff --git a/framework/subsystems/opimd/pimb_sqlite_messages.py b/framework/subsystems/opimd/pimb_sqlite_messages.py
index ea21820..d978cc0 100644
--- a/framework/subsystems/opimd/pimb_sqlite_messages.py
+++ b/framework/subsystems/opimd/pimb_sqlite_messages.py
@@ -192,11 +192,14 @@ class SQLiteMessagesBackend(Backend):
for (field, value) in message_data:
if field=='_backend_entry_id':
messageId=value
+ deleted = []
for (field, value) in message_data:
if field in reqfields:
cur.execute('UPDATE messages SET '+field+'=? WHERE id=?',(value,messageId))
elif not field.startswith('_'):
- cur.execute('DELETE FROM message_values WHERE messageId=? AND field=?',(messageId,field))
+ if not field in deleted:
+ cur.execute('DELETE FROM message_values WHERE messageId=? AND field=?',(messageId,field))
+ deleted.append(field)
if isinstance(value, Array) or isinstance(value, list):
for val in value:
cur.execute('INSERT INTO message_values (field,value,messageId) VALUES (?,?,?)',(field,val,messageId))
diff --git a/framework/subsystems/opimd/pimb_sqlite_notes.py b/framework/subsystems/opimd/pimb_sqlite_notes.py
index 36faaa8..f660387 100644
--- a/framework/subsystems/opimd/pimb_sqlite_notes.py
+++ b/framework/subsystems/opimd/pimb_sqlite_notes.py
@@ -157,11 +157,14 @@ class SQLiteNotesBackend(Backend):
for (field, value) in entry_data:
if field=='_backend_entry_id':
entryId=value
+ deleted = []
for (field, value) in entry_data:
if field in reqfields:
cur.execute('UPDATE notes SET '+field+'=? WHERE id=?',(value,entryId))
elif not field.startswith('_'):
- cur.execute('DELETE FROM note_values WHERE noteId=? AND field=?',(entryId,field))
+ if not field in deleted:
+ cur.execute('DELETE FROM note_values WHERE noteId=? AND field=?',(entryId,field))
+ deleted.append(field)
if isinstance(value, Array) or isinstance(value, list):
for val in value:
cur.execute('INSERT INTO note_values (field,value,noteId) VALUES (?,?,?)',(field,val,entryId))
diff --git a/framework/subsystems/opimd/pimb_sqlite_tasks.py b/framework/subsystems/opimd/pimb_sqlite_tasks.py
index 6e10149..6a5b50c 100644
--- a/framework/subsystems/opimd/pimb_sqlite_tasks.py
+++ b/framework/subsystems/opimd/pimb_sqlite_tasks.py
@@ -159,11 +159,14 @@ class SQLiteTasksBackend(Backend):
for (field, value) in entry_data:
if field=='_backend_entry_id':
entryId=value
+ deleted = []
for (field, value) in entry_data:
if field in reqfields:
cur.execute('UPDATE tasks SET '+field+'=? WHERE id=?',(value,entryId))
elif not field.startswith('_'):
- cur.execute('DELETE FROM task_values WHERE taskId=? AND field=?',(entryId,field))
+ if not field in deleted:
+ cur.execute('DELETE FROM task_values WHERE taskId=? AND field=?',(entryId,field))
+ deleted.append(field)
if isinstance(value, Array) or isinstance(value, list):
for val in value:
cur.execute('INSERT INTO task_values (field,value,taskId) VALUES (?,?,?)',(field,val,entryId))
diff --git a/framework/subsystems/opimd/pimd_generic.py b/framework/subsystems/opimd/pimd_generic.py
index eedd8db..69ac320 100644
--- a/framework/subsystems/opimd/pimd_generic.py
+++ b/framework/subsystems/opimd/pimd_generic.py
@@ -11,13 +11,15 @@ GPLv2 or later
Generic Domain
-From this domain class others inherit.
+From those domain classes others inherit.
"""
DBUS_BUS_NAME_FSO = "org.freesmartphone.opimd"
DBUS_PATH_BASE_FSO = "/org/freesmartphone/PIM"
DIN_BASE_FSO = "org.freesmartphone.PIM"
+import dbus
+
from dbus.service import FallbackObject as DBusFBObject
from dbus.service import signal as dbus_signal
from dbus.service import method as dbus_method
@@ -640,8 +642,22 @@ class GenericDomain():
else:
raise InvalidBackend( "There is no backend which can store new field" )
elif not field_name.startswith('_'):
- for field_nr in entryif._field_idx[field_name]:
- if entry[field_name]!=data[field_name]:
+ if not data[field_name] or isinstance(data[field_name], list) or isinstance(data[field_name], dbus.Array):
+ field_idx = entryif._field_idx[field_name]
+ field_idx.reverse()
+ for field_nr in field_idx:
+ del entryif._fields[field_nr]
+ del entryif._field_idx[field_name]
+ if data[field_name]:
+ entryif._field_idx[field_name] = []
+ for value in data[field_name]:
+ #newfieldid = len(entryif._fields)-1
+ #entryif._field_idx[field_name].append(newfieldid)
+ entryif._fields.append([field_name, value, value, backend])
+ entryif.rebuild_index()
+ else:
+ for field_nr in entryif._field_idx[field_name]:
+ #if entry[field_name]!=data[field_name]:
entryif._fields[field_nr][1]=data[field_name]
for backend_name in entryif._used_backends:
@@ -676,18 +692,7 @@ class GenericDomain():
raise InvalidBackend( "Backend does not feature del_entry" )
#del self._entries[num_id]
- # Experimental: it may introduce some bugs.
-# entry = self._entries[num_id]
self._entries[num_id] = None
-# del entry
-
- # update Path fields, as IDs may be changed - UGLYYYY!!! */me spanks himself*
- # Not needed with that "experimental" code above.
- #for id in range(0,len(self._entries)):
- # path = _DBUS_PATH_ENTRIES+ '/' + str(id)
- # for field in self._entries[id]._fields:
- # if field[0]=='Path':
- # field[1]=path
for backend_name in backends:
backend = self._backends[backend_name]
--
FSO frameworkd Debian packaging
More information about the pkg-fso-commits
mailing list