Пример #1
0
 def tags_remote(self):
     """Receive tags from server"""
     tags_ids = []
     for tag in self.note_store.listTags(self.auth_token):
         self.app.log('Tag %s remote' % tag.name)
         try:
             tg = self.sq(models.Tag).filter(
                 models.Tag.guid == tag.guid, ).one()
             tags_ids.append(tg.id)
             if tg.name != tag.name.decode('utf8'):
                 tg.from_api(tag)
         except NoResultFound:
             tg = models.Tag(guid=tag.guid)
             tg.from_api(tag)
             self.session.add(tg)
             self.session.commit()
             tags_ids.append(tg.id)
     ids = filter(lambda id: id not in tags_ids,
                  map(
                      lambda tag: tag.id,
                      self.sq(models.Tag).all(),
                  ))
     if len(ids):
         self.sq(models.Tag).filter(
             and_(
                 models.Tag.id.in_(ids),
                 models.Tag.action != ACTION_CREATE,
             )).delete(synchronize_session='fetch')
     self.session.commit()
Пример #2
0
 def test_tag_delete(self):
     """Test deleting tags"""
     tag = models.Tag(
         name='okok',
         action=models.ACTION_NONE,
     )
     deleting_tag = models.Tag(
         name='deleted',
         action=models.ACTION_NONE,
     )
     self.session.add(tag)
     self.session.add(deleting_tag)
     note = models.Note(
         title='123',
         content='456',
         tags=[tag, deleting_tag],
     )
     self.session.add(note)
     self.session.commit()
     self.service.delete_tag(deleting_tag.id)
     self.assertItemsEqual(note.tags, [tag])
Пример #3
0
 def test_service_find_notes(self):
     note = models.Note(title='q ab cd',
                        content='123',
                        action=ACTION_CREATE)
     tag = models.Tag(name='eee')
     notebook = models.Notebook(name='123')
     self.session.add_all([note, tag, notebook])
     note.tags = [tag]
     note.notebook = notebook
     self.session.commit()
     self.assertEqual(
         self.serv.find_notes('ab cd', [notebook.id], [tag.id]),
         [(note.id, u'q ab cd', u'123', None, None, notebook.id, [u'eee'])],
         'find notes via service',
     )
Пример #4
0
 def test_local_sync(self):
     note = models.Note(
         title='test',
         content='test',
         action=ACTION_CREATE,
     )
     self.session.add(note)
     self.sc.local_changes()
     self.assertEqual(
         'test',
         self.sc.note_store.getNote(
             token,
             note.guid,
             True,
             False,
             False,
             False,
         ).title,
         'sync simple note',
     )
     notebook = models.Notebook(
         name=str(datetime.now()),
         default=False,
         action=ACTION_CREATE,
     )
     self.session.add(notebook)
     note.notebook = notebook
     note.action = ACTION_CHANGE
     self.sc.local_changes()
     self.assertEqual(
         notebook.guid,
         self.sc.note_store.getNote(
             token,
             note.guid,
             True,
             False,
             False,
             False,
         ).notebookGuid,
         'sync note with notebook',
     )
     tag = models.Tag(
         name=str(datetime.now()),
         action=ACTION_CREATE,
     )
     self.session.add(tag)
     note.action = ACTION_CHANGE
     note.tags = [tag]
     self.sc.local_changes()
     self.assertEqual(
         [tag.guid],
         self.sc.note_store.getNote(
             token,
             note.guid,
             True,
             False,
             False,
             False,
         ).tagGuids,
         'sync note with tags',
     )
     notebook.name = str(datetime.now())
     notebook.action = ACTION_CHANGE
     self.sc.local_changes()
     self.assertEqual(
         notebook.name,
         self.sc.note_store.getNotebook(
             token,
             notebook.guid,
         ).name,
         'sync notebook change',
     )
     tag.name = str(datetime.now())
     tag.action = ACTION_CHANGE
     self.sc.local_changes()
     self.assertEqual(
         tag.name,
         self.sc.note_store.getTag(
             token,
             tag.guid,
         ).name,
         'sync tag change',
     )
     note.action = ACTION_DELETE
     self.sc.local_changes()
     self.assertIsNotNone(
         self.sc.note_store.getNote(
             token,
             note.guid,
             True,
             False,
             False,
             False,
         ), 'remove note')
Пример #5
0
 def test_service_list_tags(self):
     tag = models.Tag(name='123')
     self.session.add(tag)
     self.session.commit()
     self.assertEqual(self.serv.list_tags(), [(tag.id, u'123')],
                      'list tags')