Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAleksey Lim <alsroot@sugarlabs.org>2013-06-11 13:42:39 (GMT)
committer Aleksey Lim <alsroot@sugarlabs.org>2013-06-11 13:42:39 (GMT)
commitdd7a3136f67de00593ce151d9da94bdb28f28c56 (patch)
treec5c4182ac057e38b8f0bbe57505fff24f43331f9
parente5254ac6d179b13c2aba66a89410ce8d0d95566d (diff)
Process ASLO deletes while in aslo-sync utility
-rwxr-xr-xmisc/aslo-sync43
1 files changed, 38 insertions, 5 deletions
diff --git a/misc/aslo-sync b/misc/aslo-sync
index 90364e0..f76135a 100755
--- a/misc/aslo-sync
+++ b/misc/aslo-sync
@@ -263,6 +263,11 @@ class Application(application.Application):
node.online_sync(no_pull=True)
def sync_activities(self, addon_id=None):
+ directory = self.volume['context']
+ items, __ = directory.find(type='activity', layer='public',
+ limit=db.MAX_LIMIT)
+ existing_activities = set([i.guid for i in items])
+
sql = """
SELECT
id,
@@ -284,8 +289,19 @@ class Application(application.Application):
self.sync_reviews(addon_id, bundle_id)
except Exception, error:
print '-- Cannot sync %r addon: %s' % (addon_id, error)
+ if bundle_id in existing_activities:
+ existing_activities.remove(bundle_id)
+
+ for guid in existing_activities:
+ print '-- Hide %r addon deleted on ASLO' % guid
+ directory.update(guid, {'layer': ['deleted']})
def sync_reviews(self, addon_id, bundle_id):
+ directory = self.volume['review']
+ items, __ = directory.find(context=bundle_id, layer='public',
+ limit=db.MAX_LIMIT)
+ existing_reviews = set([i.guid for i in items])
+
sql = """
SELECT
reviews.id,
@@ -304,13 +320,14 @@ class Application(application.Application):
WHERE
reply_to IS NULL AND versions.addon_id = %s
""" % addon_id
- directory = self.volume['review']
for guid, created, title, content, rating, nickname, author in \
self.sqlexec(sql):
- if directory.exists(str(guid)):
+ guid = str(guid)
+ if directory.exists(guid):
+ existing_reviews.remove(guid)
continue
directory.create({
- 'guid': str(guid),
+ 'guid': guid,
'ctime': int(time.mktime(created.timetuple())),
'mtime': int(time.mktime(created.timetuple())),
'context': bundle_id,
@@ -320,7 +337,16 @@ class Application(application.Application):
'author': self.authors(nickname, author),
})
+ for guid in existing_reviews:
+ print '-- Hide %r review deleted on ASLO' % guid
+ directory.update(guid, {'layer': ['deleted']})
+
def sync_versions(self, addon_id, bundle_id):
+ directory = self.volume['implementation']
+ items, __ = directory.find(context=bundle_id, layer='public',
+ limit=db.MAX_LIMIT)
+ existing_versions = set([i.guid for i in items])
+
sql = """
SELECT
versions.id,
@@ -395,8 +421,11 @@ class Application(application.Application):
(alicense, filename, addon_id)
continue
- if self.volume['implementation'].find(
- context=bundle_id, version=version, limit=1)[1]:
+ items, __ = directory.find(context=bundle_id,
+ version=version, limit=1)
+ if items:
+ for i in items:
+ existing_versions.remove(i.guid)
continue
try:
@@ -419,6 +448,10 @@ class Application(application.Application):
if recent_version:
self.sync_context_metadata(bundle_id, addon_id, recent_filename)
+ for guid in existing_versions:
+ print '-- Hide %s %r version deleted on ASLO' % (bundle_id, guid)
+ directory.update(guid, {'layer': ['deleted']})
+
def sync_context_metadata(self, bundle_id, addon_id, filename):
bundle = Bundle(join(ACTIVITIES_PATH, str(addon_id), filename))
spec = bundle.get_spec()