Package: pyade
pyadeA minimal Python class to use ADE Web API for ADE Planning fromAdesoft.This is an unofficial development. I am in no way related to this
company. Use it at your own risk.WORK IN PROGRESSUsageCommand Line Interface scriptYou might first define 3 environment variables.export ADE_WEB_API_URL="https://server/jsp/webapi"
export ADE_WEB_API_LOGIN="user_login"
export ADE_WEB_API_PASSWORD="user_password"Than you can run sample using:$ python sample/main.pyYou can also pass url, login, password as optional parameters of command
line interface using:$ python sample/main.py --url https://server/jsp/webapi --user user_login --password user_passwordInteractive usageRun IPython using:$ ipythonYou can use interactively this classIn [1]: from pyade import ADEWebAPI, ConfigImport logging module and set level tologging.DEBUGIn [2]: import logging
In [3]: logging.basicConfig(level=logging.DEBUG)Get a config (etiher from environment variables)In [4]: config = Config.create()or passing parameter toConfig.createmethodIn [4]: config = Config.create(url='server', login='user_login', password='user_password')You can safely display config in a console, your password will not
appear.In [5]: config
Out[5]:
<Config {'url': 'https://server/jsp/webapi', 'login': 'user_login', 'password': '*********'}>But you can access to any key like a dict. For example:In [6]: config['url']
Out[6]: 'https://server/jsp/webapi'So caution, your password is not in a safe place, as it’s in memory.Config can be unpacked using**operator and use as parameter forADEWebAPIconstructor.In [7]: myade = ADEWebAPI(**config)You can display methods of ADEWebAPI using “.” and tab keyIn [8]: myade.
myade.connect                 myade.getActivities           myade.getProjects             myade.opt_params
myade.create_list_of_objects  myade.getCaracteristics       myade.getResources            myade.password
myade.disconnect              myade.getCosts                myade.hide_dict_values        myade.sessionId
myade.exception_factory       myade.getDate                 myade.logger                  myade.setProject
myade.factory                 myade.getEvents               myade.login                   myade.urlMethod signature, docstring, … can be printed using “?”In [8]: ?myade.connect
Signature: myade.connect()
Docstring: Connect to server
File:      ~/pyade/pyade/__init__.py
Type:      instancemethodLet’s connect to server (using url, login and password saved inmyadeinstance ofADEWebAPI)In [9]: myade.connect()
DEBUG:ADEWebAPI:send {'function': 'connect', 'login': 'user_login', 'password': '*********', 'sessionId': '14cef8679e2'}
INFO:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (1): server
DEBUG:requests.packages.urllib3.connectionpool:"GET /jsp/webapi?function=connect&login=user_login&password=user_password&sessionId=14cef8679e2 HTTP/1.1" 200 None
DEBUG:ADEWebAPI:<Response [200]>
DEBUG:ADEWebAPI:<?xml version="1.0" encoding="UTF-8"?>
<session id="14cef878c17"/>

Out[9]: TrueA list of dict describing projects can be returned using:In [10]: myade.getProjects()
DEBUG:ADEWebAPI:send {'function': 'getProjects', 'sessionId': '14cef8679e2'}
INFO:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (1): server
DEBUG:requests.packages.urllib3.connectionpool:"GET /jsp/webapi?function=getProjects&sessionId=14cef8679e2 HTTP/1.1" 200 None
DEBUG:ADEWebAPI:<Response [200]>
DEBUG:ADEWebAPI:<?xml version="1.0" encoding="UTF-8"?>
<projects>
    <project id="6"/>
    <project id="5"/>
</projects>

Out[10]: [{'id': '6'}, {'id': '5'}]You can also use optional parameters such asdetailto get more
details about each project.In [11]: myade.getProjects(detail=4)
DEBUG:ADEWebAPI:send {'function': 'getProjects', 'sessionId': '14cef8679e2', 'detail': 4}
INFO:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (1): server
DEBUG:requests.packages.urllib3.connectionpool:"GET /jsp/webapi?function=getProjects&sessionId=14cef8679e2&detail=4 HTTP/1.1" 200 None
DEBUG:ADEWebAPI:<Response [200]>
DEBUG:ADEWebAPI:<?xml version="1.0" encoding="UTF-8"?>
<projects>
    <project id="6" name="2015-2016" uid="1428406688761" version="600" loaded="true"/>
    <project id="5" name="2014-2015" uid="1364884711514" version="520" loaded="true"/>
</projects>

Out[11]:
[{'id': '6',
  'loaded': 'true',
  'name': '2015-2016',
  'uid': '1428406688761',
  'version': '600'},
 {'id': '5',
  'loaded': 'true',
  'name': '2014-2015',
  'uid': '1364884711514',
  'version': '520'}]You can setmyadeinstance of classADEWebAPIin order methods
output list of objects instead of list of dictionariesIn [12]: myade.create_list_of_objects(True)

In [13]: myade.getProjects()
DEBUG:ADEWebAPI:send {'function': 'getProjects', 'sessionId': '14cef8679e2'}
INFO:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (1): server
DEBUG:requests.packages.urllib3.connectionpool:"GET /jsp/webapi?function=getProjects&sessionId=14cef8679e2 HTTP/1.1" 200 None
DEBUG:ADEWebAPI:<Response [200]>
DEBUG:ADEWebAPI:<?xml version="1.0" encoding="UTF-8"?>
<projects>
    <project id="6"/>
    <project id="5"/>
</projects>

Out[13]:
[Project({'id': '6'}),
 Project({'id': '5'})]You need to set current project. You probably won’t be able to call most
of methods without this.In [14]: myade.setProject(5)
Out[14]: True…Don’t forget to disconnect from server before quitting.In [15]: myade.disconnect()
DEBUG:ADEWebAPI:send {'function': 'disconnect', 'sessionId': '14cef8679e2'}
INFO:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (1): server
DEBUG:requests.packages.urllib3.connectionpool:"GET /jsp/webapi?function=disconnect&sessionId=14cef8679e2 HTTP/1.1" 200 None
DEBUG:ADEWebAPI:<Response [200]>
DEBUG:ADEWebAPI:<?xml version="1.0" encoding="UTF-8"?>
<disconnected sessionId="14cef8679e2"/>

Out[15]: True