diff --git a/passerelle_paris_poc_gru/migrations/0002_auto_20160225_0743.py b/passerelle_paris_poc_gru/migrations/0002_auto_20160225_0743.py new file mode 100644 index 0000000..c8fc37c --- /dev/null +++ b/passerelle_paris_poc_gru/migrations/0002_auto_20160225_0743.py @@ -0,0 +1,32 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import models, migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('passerelle_paris_poc_gru', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='parispocgru', + name='consumer_key', + field=models.CharField(default=b'not provided', max_length=128, verbose_name='Consumer Key'), + preserve_default=True, + ), + migrations.AddField( + model_name='parispocgru', + name='consumer_secret', + field=models.CharField(default=b'not provided', max_length=128, verbose_name='Consumer Secret'), + preserve_default=True, + ), + migrations.AddField( + model_name='parispocgru', + name='url', + field=models.CharField(default=b'not provided', max_length=128, verbose_name='WebService Base Url'), + preserve_default=True, + ), + ] diff --git a/passerelle_paris_poc_gru/models.py b/passerelle_paris_poc_gru/models.py index 61088dd..15f1bdf 100644 --- a/passerelle_paris_poc_gru/models.py +++ b/passerelle_paris_poc_gru/models.py @@ -13,7 +13,10 @@ # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . +import base64 +import requests +from django.db import models from django.core.urlresolvers import reverse from django.utils.translation import ugettext_lazy as _ @@ -21,6 +24,18 @@ from passerelle.base.models import BaseResource class ParisPocGru(BaseResource): + url = models.CharField(max_length=128, blank=False, + default="not provided", verbose_name=_('WebService Base Url') + ) + + consumer_key = models.CharField(max_length=128, blank=False, + default="not provided", verbose_name=_('Consumer Key') + ) + + consumer_secret = models.CharField(max_length=128, blank=False, + default="not provided", verbose_name=_('Consumer Secret') + ) + category = _('Business Process Connectors') class Meta: @@ -40,3 +55,20 @@ class ParisPocGru(BaseResource): @classmethod def get_icon_class(cls): return 'ressources' + + def get_access_token(self): + cred = base64.b64encode('%s:%s' %(self.consumer_key, self.consumer_secret)) + response = requests.post( + self.url+'/token', + headers = { + 'Authorization': 'Basic %s' %cred, + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data = {'grant_type': 'client_credentials'} + ) + + self.access_token = response.json()['access_token'] + self.headers = {'Authorization': 'Bearer %s' %(self.access_token)} + + return self.access_token +