PyconUA - How to build ERP application having fun?

Preview:

Citation preview

How to build ERP

application having fun?Saturday, 22 October 2011

How to build ERP

application having fun?Saturday, 22 October 2011

the teamSaturday, 22 October 2011

the teamSaturday, 22 October 2011

WHY this talk?

Saturday, 22 October 2011

My Reasons to be here

★ Building complex web applications could be

should be fun

★ Promote

and

Saturday, 22 October 2011

Saturday, 22 October 2011

This is

★ truly open source CMS

★ built on top of

★ more than 340 active core developers

Saturday, 22 October 2011

This is

developed since 2001

Saturday, 22 October 2011

★ among the top 2% of all open source projects

★ version 4.1.1 released 12 days ago

★ the best security track record of any major CMS

This is

Saturday, 22 October 2011

This is

great for web publishing

and enterprise ready

Saturday, 22 October 2011

This is

great for web publishing

and enterprise ready

Saturday, 22 October 2011

This is

Saturday, 22 October 2011

This is

Saturday, 22 October 2011

This is

Saturday, 22 October 2011

This is

Saturday, 22 October 2011

This is

Saturday, 22 October 2011

Saturday, 22 October 2011

Saturday, 22 October 2011

SMALL “Roughly 5000 lines of code”

Saturday, 22 October 2011

SMALL

FAST

“Roughly 5000 lines of code”

Saturday, 22 October 2011

SMALL

FAST

STABLE

“Roughly 5000 lines of code”

Saturday, 22 October 2011

SMALL

TESTED

FAST

STABLE

“Roughly 5000 lines of code”

“100% statement coverage via unit and

integration tests”

Saturday, 22 October 2011

SMALL

DOCUMENTED

TESTED

FAST

STABLE

“Roughly 5000 lines of code”

“100% statement coverage via unit and

integration tests”

“Literally nothingin Pyramid

is undocumented”

Saturday, 22 October 2011

★ Decorator-based

configuration

★ Debug Toolbar

★ Event system

★ Configuration extensibility

Saturday, 22 October 2011

the projectSaturday, 22 October 2011

The Customer

★ .

★ Born as a startup

★ Offices in Miami,

New York and Los Angeles

Saturday, 22 October 2011

Water today

★ U.S. - the largest consumer market

for bottled water in the world

★ in 2011, the market is forecast to have

a value of $86,421.2 billion

“Bottled water has become the second largest commercial beverage category”

Saturday, 22 October 2011

Saturday, 22 October 2011

Saturday, 22 October 2011

project requirementsSaturday, 22 October 2011

Saturday, 22 October 2011

paperless sale

Saturday, 22 October 2011

paperless sale

CRM

Sales

1 2 3 4 5

Warehouse

E-commerce

Support

Saturday, 22 October 2011

paperless saleCRM

Sales

1

2

3

4

5

Warehouse

E-commerce

Support

Saturday, 22 October 2011

paperless saleCRM

Sales

1

2

3

4

5

Warehouse

E-commerce

Support

Saturday, 22 October 2011

paperless saleCRM

Sales

1

2

3

4

5

Warehouse

E-commerce

Support

★ Customer’s management (satisfaction, order status, etc.)

★ Reports (machine statistics, etc.)

★ Campaigns

Saturday, 22 October 2011

paperless saleCRM

Sales

1

2

3

4

5

Warehouse

E-commerce

Support

★ Sales network management

★ Invoicing / accountancy

★ Revenue counter

★ Discount management

Saturday, 22 October 2011

paperless saleCRM

Sales

1

2

3

4

5

Warehouse

E-commerce

Support

★ Catalog management

★ Warehouse management

★ Logistic tracking

Saturday, 22 October 2011

★ Online shop (for beverages and accessories)

★ Machine configurator (interactive wizard)

★ Online payments

paperless saleCRM

Sales

1

2

3

4

5

Warehouse

E-commerce

Support

Saturday, 22 October 2011

paperless saleCRM

Sales

1

2

3

4

5

Warehouse

E-commerce

Support

★ Machine maintenance (filter change)

★ Emergency services

★ Order / installation process

Saturday, 22 October 2011

paperless saleCRM

Sales

1

2

3

4

5

Warehouse

E-commerce

Support

★ Machine maintenance (filter change)

★ Emergency services

★ Order / installation process

Saturday, 22 October 2011

Support

CRM

Sales

Warehouse

E-commerce

paperless sale

Saturday, 22 October 2011

Support

CRM

Sales

Warehouse

E-commerce

Intranet Extranet

paperless sale

Saturday, 22 October 2011

Totally paperless ERPSaturday, 22 October 2011

project gotchas

Saturday, 22 October 2011

project gotchas

★ Requirements are not rock solid (it’s a startup) - project will

grow with the customer

★ Customer is in U.S. - planning

regular meetings is essential

★ We need to find new framework

★ Only 5 months to delivery

Saturday, 22 October 2011

Arch i tectural dec i s ionsSaturday, 22 October 2011

a n d

Saturday, 22 October 2011

a n d

Saturday, 22 October 2011

Saturday, 22 October 2011

★ architecture is not so far

away from Zope

★ it supports SQLAlchemy

out of the box

★ great documentation and

active community

★ add’s some fresh air to your

architecture

why ?

Saturday, 22 October 2011

why ?

★ pyramid_formalchemy CRUD

★ easy pluggable widgets

★ Multi-upload

★ Metric units

★ Autocomplete

★ Multi-relation

★ 75% jQuery code

Saturday, 22 October 2011

why ?

★ pyramid_formalchemy CRUD

★ easy pluggable widgets

★ Multi-upload

★ Metric units

★ Autocomplete

★ Multi-relation

★ 75% jQuery code

Saturday, 22 October 2011

why ?

★ pyramid_formalchemy CRUD

★ easy pluggable widgets

★ Multi-upload

★ Metric units

★ Autocomplete

★ Multi-relation

★ 75% jQuery code

Saturday, 22 October 2011

why ?

★ The Best CMS

★ several years of experience

★ 1595 addons (and counting...)

on plone.org/products

Saturday, 22 October 2011

★ Poi

★ LinguaPlone

★ PloneFormGen

★ The Best CMS

★ several years of experience

★ 1595 addons (and counting...)

on plone.org/products

why ?

★ Diazo (plone.app.theming)

Saturday, 22 October 2011

★ Poi

★ LinguaPlone

★ PloneFormGen

★ The Best CMS

★ several years of experience

★ 1595 addons (and counting...)

on plone.org/products

why ?

★ Diazo (plone.app.theming)

Saturday, 22 October 2011

★ Poi

★ Diazo (plone.app.theming)

★ LinguaPlone

★ PloneFormGen

why ?

★ The Best CMS

★ several years of experience

★ 1595 addons (and counting...)

on plone.org/products

Saturday, 22 October 2011

★ Poi

★ Diazo (plone.app.theming)

★ LinguaPlone

★ PloneFormGen

why ?

★ The Best CMS

★ several years of experience

★ 1595 addons (and counting...)

on plone.org/products

Saturday, 22 October 2011

★ Poi

★ Diazo (plone.app.theming)

★ LinguaPlone

★ PloneFormGen

why ?

★ The Best CMS

★ several years of experience

★ 1595 addons (and counting...)

on plone.org/products

Saturday, 22 October 2011

★ Poi

★ Diazo (plone.app.theming)

★ LinguaPlone

★ PloneFormGen

why ?

★ The Best CMS

★ several years of experience

★ 1595 addons (and counting...)

on plone.org/products

Saturday, 22 October 2011

★ Poi

★ LinguaPlone

★ PloneFormGen

why ?

★ Diazo (plone.app.theming)

★ The Best CMS

★ several years of experience

★ 1595 addons (and counting...)

on plone.org/products

Saturday, 22 October 2011

★ Poi

★ LinguaPlone

★ PloneFormGen

why ?

★ Diazo (plone.app.theming)

★ The Best CMS

★ several years of experience

★ 1595 addons (and counting...)

on plone.org/products

Saturday, 22 October 2011

Integrat ionSaturday, 22 October 2011

SQ LA l chemy

Saturday, 22 October 2011

PostgreSQL

aeterna.models

SQ LA l chemy

Saturday, 22 October 2011

au then t i c a t ion - au thor iza t ion

Saturday, 22 October 2011

auth storage

au then t i c a t ion - au thor iza t ionR

eque

st

PostgreSQL

repoze.who

pas.plugins.sa

Saturday, 22 October 2011

auth storage

au then t i c a t ion - au thor iza t ion

★ users

★ groups

★ roles

PostgreSQL

Saturday, 22 October 2011

auth storage

au then t i c a t ion - au thor iza t ion

★ users

★ groups

★ roles

PostgreSQL

single-sign-on

★ plone.session

★ repoze.who.plugins.auth_tkt

mod_auth_tkt

Saturday, 22 October 2011

bu i l dout

[intranet-plone]

recipe = plone.recipe.zope2instance

eggs =

${intranet-plone:eggs} aeterna.models

[intranet-pyramid]

recipe = zc.recipe.egg

eggs =

${intranet-pyramid:eggs} aeterna.models

Saturday, 22 October 2011

T he b ig p i c ture

PostgreSQL

ZODB

Apa

che

repoze.who

pas.plugins.sa

beaker

Saturday, 22 October 2011

intranetextranet

T he b ig p i c ture

PostgreSQL

ZODB

Apa

che

repoze.who

pas.plugins.sa

beaker

Saturday, 22 October 2011

why not other compet i tors?

Saturday, 22 October 2011

django: no!★ less code more magic

★ not so flexible

(specification is growing)

★ using SQLAlchemy within

could be tricky

Saturday, 22 October 2011

drupal : no!★ security problems

(370 CVE entries)

★ integration is more difficult

(PHP vs. Python)

★ missing features

workflow, complex ACL, etc.

Saturday, 22 October 2011

openerp : hmm★ quite complex: CRM, sales,

accounting and much more

★ not enough time

to fully investigate it

★ not a generic framework

Saturday, 22 October 2011

resultsSaturday, 22 October 2011

Saturday, 22 October 2011

Saturday, 22 October 2011

Saturday, 22 October 2011

Saturday, 22 October 2011

Saturday, 22 October 2011

Saturday, 22 October 2011

Saturday, 22 October 2011

Saturday, 22 October 2011

Saturday, 22 October 2011

Saturday, 22 October 2011

Saturday, 22 October 2011

Saturday, 22 October 2011

Saturday, 22 October 2011

Saturday, 22 October 2011

Saturday, 22 October 2011

What matters?Saturday, 22 October 2011

Proper ToolsSaturday, 22 October 2011

and a good teamSaturday, 22 October 2011

★ it’s always a lot of fun to

Prototype but...

★ be aware of The

Learning Curve Effect

★ Collecting specification and

keeping docs up-to-date

is challenging

Saturday, 22 October 2011

check this out!Saturday, 22 October 2011

pyramid_formalchemy

★ started by Gaël Pasgrimaud

“gawel” supported by

★ using SQLAlchemy,

Formalchemy and fanstatic

★ available on pypi

more then 1720 downloads so far

Saturday, 22 October 2011

pyramid_formalchemy

★ events hooks

★ view and action customizations

★ i18n support

★ paster templates

★ fanstatic integration

Saturday, 22 October 2011

pyramid_formalchemy

def main(global_config, **settings): """ This function returns a Pyramid WSGI application."""

engine = engine_from_config(settings, 'sqlalchemy.') initialize_sql(engine) config = Configurator(settings=settings)

# pyramid_formalchemy's configuration config.include('pyramid_formalchemy')

# register an admin UI config.formalchemy_admin('/admin', package='pyramidapp')

return config.make_wsgi_app()

Saturday, 22 October 2011

pyramid_formalchemy

★ demohttp://docs.formalchemy.org/demo/admin

★ documentationhttp://docs.formalchemy.org/pyramid_formalchemy

★ downloadhttp://pypi.python.org/pypi/pyramid_formalchemy

Saturday, 22 October 2011

★ a pyramid_formalchemy plugin

★ based on twitter bootstrap

★ integrated with fanstatic

★ released on pypi

http://pypi.python.org/pypi/fa.bootstrap

fa.bootstrap

Saturday, 22 October 2011

fa.bootstrapSaturday, 22 October 2011

fa.bootstrapSaturday, 22 October 2011

fa.bootstrapSaturday, 22 October 2011

fa.bootstrapSaturday, 22 October 2011

fa.bootstrapSaturday, 22 October 2011

fa.bootstrapSaturday, 22 October 2011

fa.bootstrapSaturday, 22 October 2011

Quest ions?Saturday, 22 October 2011