diff options
author | Tony Anderson <tony_anderson@usa.net> | 2009-08-30 10:46:03 (GMT) |
---|---|---|
committer | Tony Anderson <tony_anderson@usa.net> | 2009-08-30 10:46:03 (GMT) |
commit | f8bdb8392065afcad419925b64ad8415ba30f095 (patch) | |
tree | 3387bf3a371846ab6953aad2e5a11fa02e08d28e | |
parent | 7011770c01635905f6bf3bdf4a1b81085b4add4c (diff) |
fix problem with close logic
-rw-r--r-- | datamanager.py | 190 | ||||
-rw-r--r-- | icons/stock_delete.svg | 6 |
2 files changed, 117 insertions, 79 deletions
diff --git a/datamanager.py b/datamanager.py index 4732e72..95fc039 100644 --- a/datamanager.py +++ b/datamanager.py @@ -53,9 +53,11 @@ DEFAULTTOOLBAR = ACTIVITYTOOLBAR class DataManager(activity.Activity): def __init__(self, handle): + global store - print 'activity started' global SERIALNUMBER + global quitflag + activity.Activity.__init__(self, handle) self.set_title("Datamanager") f = open('/ofw/serial-number', 'r') @@ -63,6 +65,7 @@ class DataManager(activity.Activity): f.close() SERIALNUMBER = t[:11] print 'serial-number', SERIALNUMBER + quitflag = False subprocess.call("mkdir -p " + WORKPATH, shell=True) #Create the usage toolbar self.usageTB = UsageToolbar(self) @@ -90,17 +93,24 @@ class DataManager(activity.Activity): global SERIALNUMBER global store global online - action_request = 5 - status = 4 + global quitflag f = open(file_path, 'w') f.write('this is a dummy file') f.close() - if not online: - return True - self.viewer.set_label('closing - online') - print 'can_close online' + if quitflag: + return + else: + quitflag = True + action_request = 5 + status = 4 + today = strftime(DATEFORMAT)[:10] + if online: + self.viewer.set_label('closing - online') + print 'can_close online' #now the real work begins remove_list = [] + wcount = 0 + acount = 0 for row in store: self.viewer.set_label('reviewing status: ' + row[0]) #action_request = 0: no action @@ -108,92 +118,98 @@ class DataManager(activity.Activity): #action_request = +1: upload #action_request = -1: remove if row[status] == 'White': - row[action_request] = -1 + print 'today', today, 'mtime', row[3] + if row[3].find(today) < 0: + row[action_request] = -1 + wcount += 1 if row[status] == 'Red': row[action_request] = +1 if row[action_request] < 0: + acount += 1 remove_list.append(row[0]) - if row[action_request] == 1 and row[status] == 'Red': - #upload it - self.viewer.set_label('reviewing status: ' + row[0] + ' upload') - mname = row[0] + '.metadata' - fname = row[0] - srcm = LOCALPATH / mname - srcf = LOCALPATH / fname - if srcm.exists() and srcf.exists(): + if online: + if row[action_request] == 1 and row[status] == 'Red': + #upload it + self.viewer.set_label('reviewing status: ' + row[0] + ' upload') + mname = row[0] + '.metadata' + fname = row[0] + srcm = LOCALPATH / mname + srcf = LOCALPATH / fname + if srcm.exists() and srcf.exists(): + pfx = SERIALNUMBER + '@schoolserver:' + dst = STOREPATH / SERIALNUMBER + cmd = 'scp ' + srcm + ' ' + pfx + dst + print 'metadata upload', cmd + subprocess.call(cmd, shell=True) + cmd = 'scp ' + srcf + ' ' + pfx + dst + print 'file upload', cmd + subprocess.call(cmd, shell=True) + else: + print 'upload request but no document', row[1], srcf + if row[action_request] > 1 and row[status] == "Green": + #download from schoolserver + self.viewer.set_label('reviewing status: ' + row[0] + ' download') + mname = row[0] + '.metadata' + fname = row[0] + dst = LOCALPATH + pfx = SERIALNUMBER + '@schoolserver:' + src = STOREPATH / SERIALNUMBER / mname + cmd = 'scp ' + pfx + src + ' ' + dst + print 'metadata download', cmd + subprocess.call(cmd, shell=True) + src = STOREPATH / SERIALNUMBER / fname + cmd = 'scp ' + pfx + src + ' ' + dst + print 'file download', cmd + subprocess.call(cmd, shell=True) + if row[action_request] > 1 and row[status] == "cyan": + #download from Commons + self.viewer.set_label('reviewing status: ' + row[0] + ' download') + #if mime_type is activity - install it + mname = row[0] + '.metadata' + fname = row[0] + dst = LOCALPATH + pfx = SERIALNUMBER + '@schoolserver:' + src = COMMONSPATH / mname + cmd = 'scp ' + pfx + src + ' ' + dst + print 'metadata download', cmd + subprocess.call(cmd, shell=True) + src = COMMONSPATH / fname + cmd = 'scp ' + pfx + src + ' ' + dst + print 'file download', cmd + subprocess.call(cmd, shell=True) + if row[action_request] == 1 and row[status] == 'cyan': + #upload entry to Commons + self.viewer.set_label('reviewing status: ' + row[0] + ' upload') + #if mime_type is activity - install it + mname = row[0] + '.metadata' + fname = row[0] + dst = COMMONSPATH / mname pfx = SERIALNUMBER + '@schoolserver:' - dst = STOREPATH / SERIALNUMBER - cmd = 'scp ' + srcm + ' ' + pfx + dst - print 'metadata upload', cmd + src = LOCALPATH / mname + cmd = 'scp ' + src + ' ' + pfx + dst + print 'metadata upload', cmd subprocess.call(cmd, shell=True) - cmd = 'scp ' + srcf + ' ' + pfx + dst + src = LOCALPATH / fname + cmd = 'scp ' + src + ' ' + pfx + dst print 'file upload', cmd subprocess.call(cmd, shell=True) - else: - print 'upload request but no document', row[1], srcf - if row[action_request] > 1 and row[status] == "Green": - #download from schoolserver - self.viewer.set_label('reviewing status: ' + row[0] + ' download') - mname = row[0] + '.metadata' - fname = row[0] - dst = LOCALPATH - pfx = SERIALNUMBER + '@schoolserver:' - src = STOREPATH / SERIALNUMBER / mname - cmd = 'scp ' + pfx + src + ' ' + dst - print 'metadata download', cmd - subprocess.call(cmd, shell=True) - src = STOREPATH / SERIALNUMBER / fname - cmd = 'scp ' + pfx + src + ' ' + dst - print 'file download', cmd - subprocess.call(cmd, shell=True) - if row[action_request] > 1 and row[status] == "cyan": - #download from Commons - self.viewer.set_label('reviewing status: ' + row[0] + ' download') - #if mime_type is activity - install it - mname = row[0] + '.metadata' - fname = row[0] - dst = LOCALPATH - pfx = SERIALNUMBER + '@schoolserver:' - src = COMMONSPATH / mname - cmd = 'scp ' + pfx + src + ' ' + dst - print 'metadata download', cmd - subprocess.call(cmd, shell=True) - src = COMMONSPATH / fname - cmd = 'scp ' + pfx + src + ' ' + dst - print 'file download', cmd - subprocess.call(cmd, shell=True) - if row[action_request] == 1 and row[status] == 'cyan': - #upload entry to Commons - self.viewer.set_label('reviewing status: ' + row[0] + ' upload') - #if mime_type is activity - install it - mname = row[0] + '.metadata' - fname = row[0] - dst = COMMONSPATH / mname - pfx = SERIALNUMBER + '@schoolserver:' - src = LOCALPATH / mname - cmd = 'scp ' + src + ' ' + pfx + dst - print 'metadata upload', cmd - subprocess.call(cmd, shell=True) - src = LOCALPATH / fname - cmd = 'scp ' + src + ' ' + pfx + dst - print 'file upload', cmd - subprocess.call(cmd, shell=True) #now remove self.viewer.set_label('removing files ...') - + print 'removing:' , len(remove_list) + print 'white entries:', wcount + print 'appended:', acount count = 0 for obj in remove_list: - pth = LOCALPATH / obj - if pth.exists(): - pth.remove() - fn = obj + '.metadata' - pth = LOCALPATH / fn - if pth.exists(): - pth.remove() - #datastore.delete(obj) - count += 1 + ds_object = datastore.get(obj) + if ds_object: + ds_object.destroy() + datastore.delete(ds_object.object_id) + count += 1 + else: + print 'obj not found', obj txt = 'done ' + str(count) + ' files deleted' self.viewer.set_label(txt) + print txt def show_properties(self, widget): treeView = self.viewer.get_treeView() @@ -225,6 +241,16 @@ class DataManager(activity.Activity): row[4] = 'cyan' row[5] = 1 + def delete_entry(self, widget): + treeView = self.viewer.get_treeView() + treeselection = treeView.get_selection() + model, selection = treeselection.get_selected() + row = model[selection] + ds_object = datastore.get(row[0]) + ds_object.destroy() + datastore.delete(ds_object.object_id) + model.remove(selection) + # based on PyGTK tutorial by jan bodnar, zetcode.com, February 2009 class Listview(gtk.VBox): def __init__(self): @@ -562,3 +588,9 @@ class UsageToolbar(gtk.Toolbar): self.__uploadbtn.connect('clicked', activity.upload_commons) self.insert(self.__uploadbtn, -1) self.__uploadbtn.show() + + self.__deletebtn = ToolButton('stock_delete') + self.__deletebtn.set_tooltip("Delete entry from local store") + self.__deletebtn.connect('clicked', activity.delete_entry) + self.insert(self.__deletebtn, -1) + self.__deletebtn.show() diff --git a/icons/stock_delete.svg b/icons/stock_delete.svg new file mode 100644 index 0000000..ce092d8 --- /dev/null +++ b/icons/stock_delete.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" ?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd' [ + <!ENTITY stroke_color "#010101"> + <!ENTITY fill_color "#FFFFFF"> +]><svg enable-background="new 0 0 55.125 55" height="55px" version="1.1" viewBox="0 0 55.125 55" width="55.125px" x="0px" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px"><g display="block" id="edit-delete"> + <path d="M43.467,11.644c-8.789-8.79-23.035-8.786-31.818-0.002 c-8.791,8.791-8.792,23.033-0.002,31.823c8.79,8.789,23.031,8.788,31.822-0.003C52.252,34.678,52.257,20.433,43.467,11.644z M16.192,30.623c-0.886-0.001-1.689-0.359-2.271-0.94c-0.582-0.583-0.942-1.388-0.942-2.276c0-1.773,1.439-3.213,3.217-3.211 l22.716,0c1.775-0.005,3.212,1.438,3.213,3.213c0.002,1.775-1.441,3.214-3.215,3.215L16.192,30.623z" display="inline" fill="&fill_color;"/> +</g></svg> |