Exemple #1
0
class ServiceJoplin(ServicesMgr):

    def __init__(self, token=None, **kwargs):
        super(ServiceJoplin, self).__init__(token, **kwargs)
        self.token = settings.TH_JOPLIN_TOKEN
        self.user = kwargs.get('user')
        self.joplin = JoplinApi(token=self.token)

    def read_data(self, **kwargs):
        """
            get the data from the service
            as the pocket service does not have any date
            in its API linked to the note,
            add the triggered date to the dict data
            thus the service will be triggered when data will be found

            :param kwargs: contain keyword args : trigger_id at least
            :type kwargs: dict

            :rtype: list
        """
        trigger_id = kwargs.get('trigger_id')
        data = list()
        cache.set('th_joplin_' + str(trigger_id), data)

    def save_data(self, trigger_id, **data):
        """
            let's save the data
            :param trigger_id: trigger ID from which to save data
            :param data: the data to check to be used and save
            :type trigger_id: int
            :type data:  dict
            :return: the status of the save statement
            :rtype: boolean
        """
        from th_joplin.models import Joplin

        status = False

        data['output_format'] = 'markdown_github'
        title, content = super(ServiceJoplin, self).save_data(trigger_id, **data)

        # get the data of this trigger
        trigger = Joplin.objects.get(trigger_id=trigger_id)
        status = self.joplin.create_note(title=title, body=content, parent_id=trigger.folder).status_code
        if status == 200:
            status = True
        return status
Exemple #2
0
    def create(self, request, *args, **kwargs):
        serializer = NotesSerializer(data=request.data)
        if serializer.is_valid():
            data = {'is_todo': request.data.get('is_todo', 0),
                    'tags': request.data.get('tag', '')}
            joplin = JoplinApi(api_type=settings.JOPLIN_API_TYPE, token=settings.JOPLIN_TOKEN)

            res = joplin.create_note(title=request.data['title'],
                                     body=request.data['body'],
                                     parent_id=request.data['parent_id'],
                                     **data)
            if res.status_code == 200:
                return Response({'status': 'note created'})
            return Response({'status': 'note not created {}'.format(res.status_code)})
        else:
            return Response(serializer.errors,
                            status=status.HTTP_400_BAD_REQUEST)
Exemple #3
0
class TestJoplinApi(unittest.TestCase):
    def setUp(self):
        token = '5fa5a79fdd9feb428297b32b8ebfb92160b95678d6a05b7823df19212046106e89c71e3674df7b8c60ee47c53469cfe3cb4c8b9a174cde5960fabc9186503ae4'
        self.joplin = JoplinApi(token=token)

    def test_create_folder(self):
        folder = 'TEST FOLDER1'
        self.assertIs(type(folder), str)
        res = self.joplin.create_folder(folder=folder)
        self.assertTrue(res.status_code == 200)

    def test_get_folders(self):
        res = self.joplin.get_folders()
        self.assertTrue(res.status_code == 200)
        self.assertIsInstance(res.json(), list)

    def test_get_folder(self):
        res = self.joplin.create_folder(folder='MY FOLDER2')
        data = res.json()
        parent_id = data['id']
        res = self.joplin.get_folder(parent_id)
        self.assertTrue(res.status_code == 200)
        self.assertIsInstance(res.json(), dict)

    def test_create_note(self):
        res = self.joplin.create_folder(folder='MY FOLDER3')
        data = res.json()
        parent_id = data['id']

        self.assertIs(type(parent_id), str)
        body = '# title 1\n ## subtitle \n ```python\npython --version\n```'
        self.assertIs(type(body), str)
        kwargs = {'tags': 'tag1, tag2'}
        res = self.joplin.create_note(title="NOTE TEST",
                                      body=body,
                                      parent_id=parent_id,
                                      **kwargs)
        self.assertTrue(res.status_code == 200)
        note_id = res.json()['id']

        body = '# title 1\n ## subtitle \n ```python\npython --version\n```'
        self.assertIs(type(body), str)
        kwargs = {'tags': 'tag1, tag2, tag11'}
        res = self.joplin.update_note(note_id=note_id,
                                      body=body,
                                      title="NOTE TEST",
                                      parent_id=parent_id,
                                      **kwargs)
        self.assertTrue(res.status_code == 200)

    def test_get_notes(self):
        res = self.joplin.get_notes()
        self.assertTrue(res.status_code == 200)
        self.assertIsInstance(res.json(), list)

    def test_get_note(self):
        res = self.joplin.create_folder(folder='MY FOLDER4')
        data = res.json()
        parent_id = data['id']

        body = '# title 1\n ## subtitle \n ```python\npython --version\n```'
        res = self.joplin.create_note(title="NOTE TEST2",
                                      body=body,
                                      parent_id=parent_id)
        data = res.json()
        note_id = data['id']

        self.assertIs(type(note_id), str)
        res = self.joplin.get_note(note_id)
        self.assertTrue(res.status_code == 200)
        self.assertIsInstance(res.json(), dict)

    def test_get_tags(self):
        res = self.joplin.get_tags()
        self.assertTrue(res.status_code == 200)
        self.assertIsInstance(res.json(), list)