def main(): print 'Are you sure you want to run this?' return db.command('dropDatabase') print 'Creating indices' print ' leden' Es.ensure_indices() print ' moderation' Es_mod.ensure_indices() print ' planning' Es_plan.ensure_indices() print ' poll' Es_poll.ensure_indices() print ' regl' Es_regl.ensure_indices() print ' subscriptions' Es_subscr.ensure_indices() print print 'Restoring data' print ' entities' for e in bson.decode_all(open('entities.bsons').read()): db['entities'].save(e) print ' relations' for e in bson.decode_all(open('relations.bsons').read()): db['relations'].save(e) print ' events' for e in bson.decode_all(open('events.bsons').read()): db['events'].save(e)
def search(self, q, user): required_visibility = self.required_visibility(user) query_filter = {"path": self.mongo_path_prefix, "effectiveVisibility": {"$in": tuple(required_visibility)}} if q.startswith("album:"): album = q[len("album:") :] query_filter["type"] = "album" query_filter = { "$and": [ query_filter, { "$or": [ {"name": {"$regex": re.compile(re.escape(album), re.IGNORECASE)}}, {"title": {"$regex": re.compile(re.escape(album), re.IGNORECASE)}}, ] }, ] } elif q.startswith("tag:"): _id = Es.id_by_name(q[len("tag:") :]) if _id is None: return query_filter["type"] = {"$ne": "album"} query_filter["tags"] = _id else: # do a full-text search for result in db.command( "text", "fotos", search=q, filter=query_filter, limit=96 # dividable by 2, 3 and 4 )["results"]: yield entity(result["obj"]) return # search for album or tag for o in fcol.find(query_filter).sort("date", -1): yield entity(o)
def search(self, q, user): required_visibility = self.required_visibility(user) query_filter = {'path': self.mongo_path_prefix, 'effectiveVisibility': {'$in': tuple(required_visibility)}} if q.startswith('album:'): album = q[len('album:'):] query_filter['type'] = 'album' query_filter = {'$and': [ query_filter, {'$or': [ {'name': {'$regex': re.compile(re.escape(album), re.IGNORECASE)}}, {'title': {'$regex': re.compile(re.escape(album), re.IGNORECASE)}} ]}]} elif q.startswith('tag:'): _id = Es.id_by_name(q[len('tag:'):]) if _id is None: return query_filter['type'] = {'$ne': 'album'} query_filter['tags'] = _id else: # do a full-text search for result in db.command('text', 'fotos', search=q, filter=query_filter, limit=96, # dividable by 2, 3 and 4 )['results']: yield entity(result['obj']) return # search for album or tag for o in fcol.find(query_filter).sort('date', -1): yield entity(o)