144 elif isinstance(obj, image.Image) : |
143 elif isinstance(obj, image.Image) : |
145 dir, fname = utils.strip_path(obj.dir.path), obj.name |
144 dir, fname = utils.strip_path(obj.dir.path), obj.name |
146 else : |
145 else : |
147 assert(False, "%r %r" % (obj, id)) |
146 assert(False, "%r %r" % (obj, id)) |
148 |
147 |
149 index.info("img %50s %15s = %d %s", dir, fname, id, key) |
148 log.info("img %50s %15s = %d %s", dir, fname, id, key) |
150 |
149 |
151 def updateDB (root) : |
150 def updateDB (root) : |
152 """ |
151 """ |
153 Update the SQL database |
152 Update the SQL database |
154 |
153 |
160 dirqueue = [root] |
159 dirqueue = [root] |
161 |
160 |
162 # dict of (dir, fname) -> obj |
161 # dict of (dir, fname) -> obj |
163 paths = {} |
162 paths = {} |
164 |
163 |
165 index.info("Processing ShortURLs...") |
|
166 |
|
167 while dirqueue : |
164 while dirqueue : |
168 dir = dirqueue.pop(0) |
165 dir = dirqueue.pop(0) |
169 |
166 |
170 dirqueue.extend(dir.subdirs.itervalues()) |
167 dirqueue.extend(dir.subdirs.itervalues()) |
171 |
168 |
172 if dir.alive : |
169 if dir.alive : |
173 pathtuple = (utils.strip_path(dir.path), '') |
170 pathtuple = (utils.strip_path(dir.path), '') |
174 |
171 |
175 index.debug("dir %50s", pathtuple[0]) |
172 log.debug("dir %50s", pathtuple[0]) |
176 |
173 |
177 paths[pathtuple] = dir |
174 paths[pathtuple] = dir |
178 |
175 |
179 for img in dir.images.itervalues() : |
176 for img in dir.images.itervalues() : |
180 pathtuple = (utils.strip_path(img.dir.path), img.name) |
177 pathtuple = (utils.strip_path(img.dir.path), img.name) |
181 |
178 |
182 index.debug("img %50s %15s", *pathtuple) |
179 log.debug("img %50s %15s", *pathtuple) |
183 |
180 |
184 paths[pathtuple] = img |
181 paths[pathtuple] = img |
185 |
182 |
186 print "%d nodes:" % (len(paths)) |
183 log.info("we have %d nodes", len(paths)) |
187 |
184 |
188 for (id, dir, fname) in db.select("SELECT id, dirpath, filename FROM nodes") : |
185 for (id, dir, fname) in db.select("SELECT id, dirpath, filename FROM nodes") : |
189 try : |
186 try : |
190 obj = paths.pop((dir, fname)) |
187 obj = paths.pop((dir, fname)) |
191 key = int2key(id) |
188 key = int2key(id) |
192 |
189 |
193 obj.shorturl_code = key |
190 obj.shorturl_code = key |
194 |
191 |
195 index.debug("%s %50s %15s -> %d %s", dir and "img" or "dir", dir, fname, id, key) |
192 log.debug("%s %50s %15s -> %d %s", dir and "img" or "dir", dir, fname, id, key) |
196 |
193 |
197 except KeyError : |
194 except KeyError : |
198 pass |
195 pass |
199 # index.warning("non-existant node (%d, %s, %s) in db", id, dir, fname) |
196 # log.warning("non-existant node (%d, %s, %s) in db", id, dir, fname) |
200 |
197 |
201 print "%d NEW nodes:" % (len(paths)) |
198 if paths : |
202 |
199 log.info("allocating shorturls for %d new nodes:", len(paths)) |
203 db.insert_many( |
200 |
204 _got_obj_key, |
201 db.insert_many( |
205 "INSERT INTO nodes (dirpath, filename) VALUES (?, ?)", |
202 _got_obj_key, |
206 ((obj, (path, fname)) for ((path, fname), obj) in paths.iteritems()) |
203 "INSERT INTO nodes (dirpath, filename) VALUES (?, ?)", |
207 ) |
204 ((obj, (path, fname)) for ((path, fname), obj) in paths.iteritems()) |
208 |
205 ) |
|
206 else : |
|
207 log.info("no new images") |
|
208 |