def get_draft(self, node): """ Return most recently edited version of wiki, whether that is the last saved version or the most recent sharejs draft. """ db = wiki_utils.share_db() sharejs_uuid = wiki_utils.get_sharejs_uuid(node, self.page_name) doc_item = db['docs'].find_one({'_id': sharejs_uuid}) if doc_item: sharejs_version = doc_item['_v'] sharejs_timestamp = doc_item['_m']['mtime'] sharejs_timestamp /= 1000 # Convert to appropriate units sharejs_date = datetime.datetime.utcfromtimestamp(sharejs_timestamp) if sharejs_version > 1 and sharejs_date > self.date: return doc_item['_data'] return self.content
def setUp(self): super(TestWikiShareJSMongo, self).setUp() self.user = AuthUserFactory() self.project = ProjectFactory(is_public=True, creator=self.user) self.wname = 'foo.bar' self.wkey = to_mongo_key(self.wname) self.private_uuid = generate_private_uuid(self.project, self.wname) self.sharejs_uuid = get_sharejs_uuid(self.project, self.wname) # Create wiki page self.project.update_node_wiki(self.wname, 'Hello world', Auth(self.user)) self.wiki_page = self.project.get_wiki_page(self.wname) # Insert mongo data for current project/wiki self.db = share_db() example_uuid = EXAMPLE_DOCS[0]['_id'] self.example_docs = deepcopy(EXAMPLE_DOCS) self.example_docs[0]['_id'] = self.sharejs_uuid self.db.docs.insert(self.example_docs) self.example_ops = deepcopy(EXAMPLE_OPS) for item in self.example_ops: item['_id'] = item['_id'].replace(example_uuid, self.sharejs_uuid) item['name'] = item['name'].replace(example_uuid, self.sharejs_uuid) self.db.docs_ops.insert(self.example_ops)
def tearDownClass(cls): share_db().connection.drop_database(settings.SHAREJS_DB_NAME) settings.SHARE_DATABASE_NAME = cls._original_sharejs_db_name