Projet

Général

Profil

0001-cmis-add-cmis-connector-to-upload-file-12876.patch

Jean-Baptiste Jaillet, 19 août 2016 17:52

Télécharger (5,02 ko)

Voir les différences:

Subject: [PATCH] cmis: add cmis connector to upload file (#12876)

 passerelle/apps/cmis/__init__.py                |  0
 passerelle/apps/cmis/migrations/0001_initial.py | 31 ++++++++++++++++++++
 passerelle/apps/cmis/migrations/__init__.py     |  0
 passerelle/apps/cmis/models.py                  | 39 +++++++++++++++++++++++++
 passerelle/apps/cmis/views.py                   |  3 ++
 passerelle/settings.py                          |  1 +
 6 files changed, 74 insertions(+)
 create mode 100644 passerelle/apps/cmis/__init__.py
 create mode 100644 passerelle/apps/cmis/migrations/0001_initial.py
 create mode 100644 passerelle/apps/cmis/migrations/__init__.py
 create mode 100644 passerelle/apps/cmis/models.py
 create mode 100644 passerelle/apps/cmis/views.py
passerelle/apps/cmis/migrations/0001_initial.py
1
# -*- coding: utf-8 -*-
2
from __future__ import unicode_literals
3

  
4
from django.db import models, migrations
5

  
6

  
7
class Migration(migrations.Migration):
8

  
9
    dependencies = [
10
        ('base', '0002_auto_20151009_0326'),
11
    ]
12

  
13
    operations = [
14
        migrations.CreateModel(
15
            name='CmisConnector',
16
            fields=[
17
                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
18
                ('title', models.CharField(max_length=50)),
19
                ('slug', models.SlugField()),
20
                ('description', models.TextField()),
21
                ('log_level', models.CharField(default=b'NOTSET', max_length=10, verbose_name='Log Level', choices=[(b'NOTSET', b'NOTSET'), (b'DEBUG', b'DEBUG'), (b'INFO', b'INFO'), (b'WARNING', b'WARNING'), (b'ERROR', b'ERROR'), (b'CRITICAL', b'CRITICAL'), (b'FATAL', b'FATAL')])),
22
                ('cmis_endpoint', models.CharField(help_text='URL of the CMIS endpoint', max_length=250, verbose_name='CMIS endpoint')),
23
                ('login', models.CharField(help_text='Login for user on platform', max_length=128, verbose_name='Service login')),
24
                ('password', models.CharField(help_text='Password for user on plateform', max_length=128, verbose_name='Password')),
25
                ('users', models.ManyToManyField(to='base.ApiUser', blank=True)),
26
            ],
27
            options={
28
                'abstract': False,
29
            },
30
        ),
31
    ]
passerelle/apps/cmis/models.py
1
from cmislib import CmisClient
2
import json
3
import base64
4

  
5
from django.db import models
6
from passerelle.base.models import BaseResource
7
from passerelle.utils.api import endpoint
8
from django.utils.translation import ugettext_lazy as _
9

  
10

  
11
class CmisConnector(BaseResource):
12
    cmis_endpoint = models.CharField(max_length=250, verbose_name=_('CMIS endpoint'),
13
                                     help_text=_('URL of the CMIS endpoint'))
14
    login = models.CharField(max_length=128, verbose_name=_('Service login'), help_text=_('Login for user on platform'))
15
    password = models.CharField(max_length=128,
16
                                verbose_name=_('Password'), help_text=_('Password for user on plateform'))
17

  
18
    category = _('Business Process Connectors')
19

  
20
    @classmethod
21
    def get_icon_class(cls):
22
        return 'ressources'
23

  
24
    @endpoint()
25
    def upload_file(self, request, **kwargs):
26
        data = json.loads(request.body)
27

  
28
        cmisClient = CmisClient(self.cmis_endpoint, self.login, self.password)
29

  
30
        title = data['filename']
31
        path = data['path']
32
        content = base64.decode(data['content'])
33
        content_type = data['contentType']
34

  
35
        repo = cmisClient.defaultRepository
36
        folder = repo.getObjectByPath(path)
37

  
38
        folder.createDocumentFromString(title, contentString=content, contentType=content_type)
39
    
passerelle/apps/cmis/views.py
1
from django.shortcuts import render
2

  
3
# Create your views here.
passerelle/settings.py
112 112
    'base_adresse',
113 113
    'csvdatasource',
114 114
    'orange',
115
    'cmis',
115 116
    # backoffice templates and static
116 117
    'gadjo',
117 118
)
118
-