[MERGE] merge with new trunk
authorMVA <mva@openerp.com>
Tue, 31 Jan 2012 10:34:39 +0000 (11:34 +0100)
committerMVA <mva@openerp.com>
Tue, 31 Jan 2012 10:34:39 +0000 (11:34 +0100)
bzr revid: mva@openerp.com-20120131103439-25rlvdxlm3bq4m8l

1  2 
addons/event/__openerp__.py
addons/event/event_demo.xml
addons/event/event_view.xml
addons/event/report/report_event_registration.py
addons/event/report/report_event_registration_view.xml
addons/event/wizard/__init__.py
addons/event_moodle/__init__.py
addons/event_moodle/__openerp__.py
addons/event_moodle/event_moodle.py
addons/event_moodle/wizard_moodle.xml

@@@ -47,7 -47,7 +47,6 @@@ Note that
          'wizard/event_confirm_view.xml',
          'event_view.xml',
          'report/report_event_registration_view.xml',
--        'wizard/event_make_invoice_view.xml',
          'wizard/partner_event_registration_view.xml',
          'board_association_view.xml',
          'res_partner_view.xml',
                <field name="unit_price">24.00</field>
        </record>
  
--       <function model="event.registration" name="check_confirm" eval="[ref('reg_1_2')]"/> 
++       
  
        <record id="reg_0_1" model="event.registration">
                <field name="event_id" ref="event_0"/>
                <field name="unit_price">15.50</field>
        </record>
  
--       <function model="event.registration" name="check_confirm" eval="[ref('reg_0_1')]"/> 
++
  
      <record id="reg_0_2" model="event.registration">
          <field name="event_id" ref="event_2"/>
          <field name="unit_price">20</field>
      </record>
      
--    <function model="event.registration" name="check_confirm" eval="[ref('reg_0_2')]"/>
++
      
        </data>
  </openerp>
@@@ -5,6 -5,6 +5,7 @@@
          <menuitem name="Association" id="base.menu_association" icon="terp-calendar" sequence="9"/>
          <menuitem name="Marketing" icon="terp-crm" id="base.marketing_menu" sequence="17"/>
  
++
          <menuitem name="Events Organisation" id="base.menu_event_main" parent="base.marketing_menu" />
          <menuitem name="Events" id="base.menu_event_association" parent="base.menu_association" />
  
@@@ -29,8 -29,7 +29,7 @@@ class report_event_registration(osv.osv
      _auto = False
      _rec_name = 'date'
      _columns = {
 -        'date': fields.date('Event Start Date', readonly=True),
 +        'event_date': fields.date('Event Start Date', readonly=True),
-         'price_subtotal':fields.integer('subtotal'),
          'year': fields.char('Year', size=4, readonly=True),
          'month': fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'),
              ('05','May'), ('06','June'), ('07','July'), ('08','August'), ('09','September'),
                  to_char(e.date_begin, 'YYYY') AS year,
                  to_char(e.date_begin, 'MM') AS month,
                  count(e.id) AS nbevent,
 -                t.id AS type,
 -                CASE WHEN c.state IN ('draft') THEN c.nb_register ELSE 0 END AS draft_state,
 -                CASE WHEN c.state IN ('open','done') THEN c.nb_register ELSE 0 END AS confirm_state,
 -                CASE WHEN c.state IN ('done') THEN c.price_subtotal ELSE 0 END AS total,
 +                CASE WHEN r.state IN ('draft') THEN r.nb_register ELSE 0 END AS draft_state,
 +                CASE WHEN r.state IN ('open','done') THEN r.nb_register ELSE 0 END AS confirm_state,
-                 CASE WHEN r.state IN ('done') THEN r.price_subtotal ELSE 0 END AS total,
 +                e.type AS event_type,
-                 r.price_subtotal,
-                 AVG(r.price_subtotal) AS average_subtotal,
                  e.register_max AS register_max,
 -                e.state AS state
 +                e.state AS  event_state,
 +                r.state AS  registration_state
                  FROM
                  event_event e
 +                
                  LEFT JOIN
 -                    event_registration c ON (e.id=c.event_id)
 -                LEFT JOIN
 -                    event_type t ON (e.type=t.id)
 -                WHERE c.active = 'true'
 +                    event_registration r ON (e.id=r.event_id)
 +
 +                WHERE r.active = 'true'
 +               
                 GROUP BY
 -                    to_char(e.date_begin, 'YYYY'),
 -                    to_char(e.date_begin, 'MM'),
 -                    c.state,
 -                    c.nb_register,
 -                    t.id, e.id, e.date_begin, e.main_speaker_id,
 -                    e.register_max, e.type, e.state, c.event_id, e.user_id,e.company_id,e.product_id,e.section_id,
 -                    to_char(e.date_begin, 'YYYY-MM-DD'), c.id, c.price_subtotal )AS foo
 -                GROUP BY
 -                id,
                  event_id,
 -                date,
 -                user_id,
 -                section_id,
 -                company_id,
 -                product_id,
 -                speaker_id,
 +                user_id_registration,
 +                e.id,
 +                r.id,
 +                registration_state,
 +                r.nb_register,
 +                event_type, e.id, e.date_begin, e.main_speaker_id,
-                 e.register_max,event_id, e.user_id,e.company_id,e.section_id, r.price_subtotal,
++                e.register_max,event_id, e.user_id,e.company_id,e.section_id,
 +                e.user_id,
 +                e.section_id,
 +                event_state,
 +                e.company_id,
 +                e.main_speaker_id,
                  year,
                  month,
 -                nbevent,
 -                type,
 -                register_max,
 -                state
 +                e.register_max,
 +                name_registration
 +
                )
                  """)
  
                      <field name="nbevent"/>
                      <field name="draft_state" invisible="context.get('no_of_draft_invisible', False)"/>
                      <field name="confirm_state"/>
 +                    <field name="registration_state" invisible="1"/>
 +                    <field name="name_registration" invisible="1"/>
 +                    <field name="user_id_registration" invisible="1"/>
-                     <field name="price_subtotal"/>
-                     <field name="average_subtotal"/>
                      <field name="register_max" invisible="context.get('max_reg_event_visible', True)"/>
                      <field name="company_id" invisible="1"/>
 -                    <field name="product_id" invisible="1"/>
                      <field name="section_id" invisible="1"/>
                      <field name="total" invisible="context.get('total_invisible', True)" sum="Total"/>
                  </tree>
@@@ -19,7 -19,7 +19,7 @@@
  #
  ##############################################################################
  
--import event_make_invoice
++
  import event_confirm_registration
  import event_confirm
  import partner_event_registration
index 0000000,0000000..87ba4f1
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,26 @@@
++# -*- coding: utf-8 -*-
++##############################################################################
++#
++#    OpenERP, Open Source Management Solution
++#    Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
++#
++#    This program is free software: you can redistribute it and/or modify
++#    it under the terms of the GNU Affero General Public License as
++#    published by the Free Software Foundation, either version 3 of the
++#    License, or (at your option) any later version.
++#
++#    This program is distributed in the hope that it will be useful,
++#    but WITHOUT ANY WARRANTY; without even the implied warranty of
++#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++#    GNU Affero General Public License for more details.
++#
++#    You should have received a copy of the GNU Affero General Public License
++#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
++#
++##############################################################################
++
++import event_moodle
++import wizard
++
++# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
++
index 0000000,0000000..2110094
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,43 @@@
++# -*- coding: utf-8 -*-
++##############################################################################
++#
++#    OpenERP, Open Source Management Solution
++#    Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
++#
++#    This program is free software: you can redistribute it and/or modify
++#    it under the terms of the GNU Affero General Public License as
++#    published by the Free Software Foundation, either version 3 of the
++#    License, or (at your option) any later version.
++#
++#    This program is distributed in the hope that it will be useful,
++#    but WITHOUT ANY WARRANTY; without even the implied warranty of
++#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++#    GNU Affero General Public License for more details.
++#
++#    You should have received a copy of the GNU Affero General Public License
++#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
++#
++##############################################################################
++
++
++{
++    'name': 'Event Moodle',
++    'version': '0.1',
++    'category': 'Tools',
++    'complexity': "easy",
++    'description': """
++""",
++    'author': 'OpenERP SA',
++    'depends': ['event'],
++    'init_xml': [],
++    'data': [
++            'wizard_moodle.xml',
++            ],
++    'demo_xml': [],
++    'test': [],
++    'installable': True,
++    'active': False,
++    'certificate': '',
++    'images': ['images/1_event_type_list.jpeg','images/2_events.jpeg','images/3_registrations.jpeg'],
++}
++# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
index 0000000,0000000..01dea24
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,125 @@@
++# -*- coding: utf-8 -*-
++##############################################################################
++#
++#    OpenERP, Open Source Management Solution
++#    Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
++#
++#    This program is free software: you can redistribute it and/or modify
++#    it under the terms of the GNU Affero General Public License as
++#    published by the Free Software Foundation, either version 3 of the
++#    License, or (at your option) any later version.
++#
++#    This program is distributed in the hope that it will be useful,
++#    but WITHOUT ANY WARRANTY; without even the implied warranty of
++#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++#    GNU Affero General Public License for more details.
++#
++#    You should have received a copy of the GNU Affero General Public License
++#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
++#
++##############################################################################
++
++from osv import fields, osv
++import xmlrpclib
++import string
++from random import sample
++
++class event_moodle(osv.osv):
++    """ Event Type """
++    _name = 'event.moodle'
++    _columns = {
++        'moodle_username' : fields.char('Moodle username', 128),
++        'moodle_password' : fields.char('Moodle password', 128),
++        'moodle_token' : fields.char('Moodle token', 128),
++        'serveur_moodle': fields.char('Moodle server', 128)
++    }
++        
++    def configure_moodle(self,cr,uid,ids,context=None):
++        self.write(cr,uid,ids,{'id':1})
++
++    def make_url(self,cr,uid,ids,context=None):
++        config_moodle = self.browse(cr, uid, ids, context=context)
++        if config_moodle.moodle_username and config_moodle.moodle_password:
++            url='http://'+config_moodle.serveur_moodle+'/moodle/webservice/xmlrpc/simpleserver.php?wsusername='+config_moodle.moodle_username+'&wspassword='+config_moodle.moodle_password
++        if config_moodle.moodle_token:
++            url='http://'+config_moodle.serveur_moodle+'/moodle/webservice/xmlrpc/server.php?wstoken='+config_moodle.moodle_token
++        return url
++
++    def create_moodle_user(self,cr,uid,ids,dic_user):
++        """
++        user is a list of dictionaries with every required datas for moodle
++        """
++        sock = xmlrpclib.ServerProxy(self.make_url())  
++        #connect to moodle
++    
++        return sock.core_user_create_users(dic_user)
++        #add user un moodle
++        #return list of id and username
++
++    def create_moodle_courses(courses):
++        sock = xmlrpclib.ServerProxy(self.make_url())  
++        #connect to moodle
++        sock.core_course_create_courses(courses)
++        #add course un moodle
++                   
++    def moodle_enrolled(enrolled):
++        sock = xmlrpclib.ServerProxy(self.Get_url())  
++        #connect to moodle
++        sock.enrol_manual_enrol_users(enrolled)
++        #add enrolled un moodle
++        
++
++        
++event_moodle()
++
++class event_event(osv.osv):
++    _inherit = "event.event"
++    
++    def button_confirm(self, cr, uid, ids, context=None):
++        event = self.browse(cr, uid, ids, context=context)        
++        name_event = event[0].name
++        dic_courses= [{'fullname' :name_event,'shortname' :'','categoryid':0}]
++        event_moodle.create_moodle_courses()
++        return super(event_event, self).button_confirm(cr, uid, ids, context)
++
++event_event()    
++
++
++class event_registration(osv.osv):
++
++    _inherit = "event.registration"
++    
++    def create_password():
++        pop = string.ascii_letters + string.digits
++        k=200
++        while k > len(pop):
++            pop *= 2
++            passwd = ''.join(sample(pop, k))
++        return passwd
++        trhrthrthtrh
++    def check_confirm(self, cr, uid, ids, context=None):
++        register = self.browse(cr, uid, ids, context=context)
++        users=[{
++        'username' : register[0].name,
++        'password' : create_password(),
++        'firstname' : register[0].name, 
++        'lastname': '',
++        'email': register[0].email
++        }]
++        user=event_moodle.create_moodle_user(users)
++#to do get id of the new user
++
++        enrolled=[{
++        'roleid' :'',
++        'userid' :'',
++        'courseid' :''
++        }]
++        event_moodle.moodle_enrolled(enrolled)
++        print ">>>>>>>>>>>>>>>>>>>>>>>>>>>>"
++        print ">>>>>>>>>>>>>>>>>>>>>>>>>>>>"
++        print ">>>>>>>>>>>>>>>>>>>>>>>>>>>>"
++        print ">>>>>>>>>>>>>>>>>>>>>>>>>>>>"
++        print ">>>>>>>>>>>>>>>>>>>>>>>>>>>>"
++        return super(event_registration, self).check_confirm(cr, uid, ids, context)
++event_registration()        
++      
index 0000000,0000000..dac37f5
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,58 @@@
++<?xml version="1.0" encoding="UTF-8"?>
++<openerp>
++    <data>
++        <record model="ir.ui.view" id="create_moodle_config_view">
++            <field name="name">moodle.config.wizard.form</field>
++            <field name="model">event.moodle</field>
++            <field name="type">form</field>
++            <field name="arch" type="xml">
++                <form string="Configure Moodle">
++                    
++                    <group>
++                     <separator string="serveur" colspan="4"/>    
++                    <field name="serveur_moodle"/>
++                    <newline/>
++                     <separator string="Connexion with password and username" colspan="4"/>  
++                    <field name="moodle_username"/>
++                    <field name="moodle_password"/>
++                    <newline/>
++                     <separator string="Connexion with a token" colspan="4"/>  
++                    <field name="moodle_token"/>
++
++                    </group>
++                    <newline/>
++                    <button type="special" special="cancel"
++                            string="Cancel" icon="gtk-cancel"/>
++                    <button type="object" name="configure_moodle"
++                            string="Configure Moodle" icon="gtk-ok"/>    
++                </form>
++            </field>
++        </record>
++        
++            
++
++              
++        <record model="ir.actions.act_window" id="configure_moodle">
++            <field name="name">Configure Moodle</field>
++            <field name="res_model">event.moodle</field>
++            <field name="view_id" ref="create_moodle_config_view"/>
++            <field name="view_type">form</field>
++            <field name="view_mode">form</field>
++            <field name="target">new</field>
++        </record>
++        
++        <record id="marketing_cat" model="ir.actions.todo.category">
++            <field name="name">Marketing</field>
++        </record>
++        
++        <!-- register configuration wizard -->
++        <record id="config_wizard_config_moodle" model="ir.actions.todo">
++            <field name="action_id" ref="configure_moodle"/>
++            <field name="category_id" ref="marketing_cat" />
++            <field name="type">once</field>
++        </record>
++            
++        <menuitem name="Configure Moodle" parent="base.menu_marketing_config_root" id="wizard_moodle" action="configure_moodle"/>       
++            
++    </data>
++</openerp>