Skip to main content

Jmbo Neo Web Services integration app.

Project description

jmbo-neo
========

jmbo-neo provides integration with Neo Web Services for jmbo and jmbo-foundry. It syncs jmbo-foundry's Member objects with consumers
in the Neo data hubs. Syncing refers to the creation, modification and deactivation of Neo consumers as Member objects are created, modified
and deactivated.

Authentication-related actions are also performed via Neo Web Services. These include logging in and out and changing passwords. jmbo-neo also
supports a number of other Neo API calls. These, in addition to the above mentioned, can be invoked as necessary in other jmbo apps.

Requirements
------------

System libraries
****************
- libxml2-dev
- libxslt-dev

Python packages
***************
- python-lxml
- requests

*jmbo-neo uses generateDS.py (http://cutter.rexx.com/~dkuhlman/generateDS.html) to generate Python classes from Neo XML schemas.*

Usage
-----

`neo.api` contains functions for all the supported Neo API calls. Consumer calls require either a consumer ID or consumer object (or both).
If a consumer has been created for a particular Member, a corresponding NeoProfile object will be stored in the database. So to obtain the
consumer ID, use `neo.models.NeoProfile(user=member.id).consumer_id`.

A consumer object is an instance of `neo.xml.Consumer`. Consumer should not be instantiated directly. Internally, jmbo-neo uses `neo.xml.parseString(response.content)`
to create a consumer object from the XML return by Neo Web Services. This object will be returned when calling, for instance, `neo.api.get_consumer`.
To access this consumer object, you should use the wrapper class `neo.utils.ConsumerWrapper`. It has all the necessary getter and setter methods to correctly
manipulate the consumer object, ensuring the resulting XML is valid.

**When using jmbo-neo, all non-required Member fields will be null, or set to their default values. Queries on Member objects
will return incorrect results.**

Settings
********
The following settings must be added to settings.py::

NEO = {
'URL': 'neowebservices.com/service/'
'APP_ID': '1',
'VERSION_ID': '1.3',
'PROMO_CODE': 'testPromo', # if there is a single promo code for the website
'BRAND_ID': 35, # if there is a single brand for the website
'PASSWORD': 'password', # http basic auth password
}

AUTHENTICATION_BACKENDS = ('neo.backends.NeoBackend',)

To-do
-----

1. Replace generateDS.py with `lxml.objectify`.
2. Mock testing calls to Neo API using `mock`.
Authors
=======

Praekelt Foundation
-------------------

* Rizmari VersfeldChangelog
=========

0.4.5 (23-10-2013)
------------------
#. Log all API calls. Uses `neo.api` logger.

0.4.4.1 (28-09-2013)
--------------------
#. Add `ModifyFlag` to empty `Answer` element. Invalid otherwise.

0.4.4 (28-09-2013)
------------------
#. Add `answer_set` to `QuestionAnswerWrapper` for adding answers in bulk.

0.4.3 (18-06-2013)
------------------
#. Don't create consumer on member load - issue for views with many members and unmigrated accounts.

0.4.2 (14-06-2013)
------------------
#. Normalize login_alias, removing bad characters and padding it.
#. Add a validation module with validators for email, mobile_number and login_alias - to be expanded.
#. Fix error on `user_logged_out` if there is no authenticated user.

0.4.1 (06-06-2013)
------------------
#. Only clean via Neo if no local errors in join form.

0.4 (23-05-2013)
----------------
#. Use random password for Neo auth instead of actual user password.
#. Only `Member.full_clean` throws ValidationError, not `Member.save` anymore.
#. Remove auth backend and middleware. The user's plain text password isn't stashed in the session or on the `member` object anymore.
#. Add `created` field to `NeoProfile` - useful for checking consumer creation limit (10 000 per day at the moment).
#. Reduce test time by re-using an immutable member where possible.

0.3 (03-05-2013)
----------------
#. Add a new management command to export members for bulk upload:
``members_to_cidb_dataloadtool``
#. Automatically create consumers on CIDB for members on login.
#. Consumer creation deferred until a member is complete according to `RegistrationPreferences.required_fields`.
#. Consumer fields are kept in sync with member fields over MCAL.
#. Use `login_alias` instead of `Member.username` for CIDB communications.

0.2 (09-11-2012)
----------------
#. Create member if credentials are valid and the member does not exist.
#. Fix bug in logout.

0.1 (18-10-2012)
----------------
#. Initial release

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jmbo-neo-0.4.5.tar.gz (54.7 kB view details)

Uploaded Source

Built Distribution

jmbo_neo-0.4.5-py2.7.egg (154.4 kB view details)

Uploaded Source

File details

Details for the file jmbo-neo-0.4.5.tar.gz.

File metadata

  • Download URL: jmbo-neo-0.4.5.tar.gz
  • Upload date:
  • Size: 54.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for jmbo-neo-0.4.5.tar.gz
Algorithm Hash digest
SHA256 2d154bec22f9d37ade7566345a0e5ffbcc5d2a6e7f5c5b835b626d1608ffd15a
MD5 54a2db711e3fb019adee086184f3f809
BLAKE2b-256 6983d64b06060aa2cc770defe78a9b7762a1938cef294107e8726d28df1fcdc4

See more details on using hashes here.

File details

Details for the file jmbo_neo-0.4.5-py2.7.egg.

File metadata

  • Download URL: jmbo_neo-0.4.5-py2.7.egg
  • Upload date:
  • Size: 154.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for jmbo_neo-0.4.5-py2.7.egg
Algorithm Hash digest
SHA256 f50abd7f02268b8ae99027baa149131e96b7f77c352fe5d90edb46f5140ada72
MD5 28be623e1ed33d1c150a93c09a822cea
BLAKE2b-256 9fbf78a17795e4ddd1e139ab7a21e60a83bc4ab51a8c7f94df56b6e3b806858a

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page