'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>
<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" />
_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>
#
##############################################################################
--import event_make_invoice
++
import event_confirm_registration
import event_confirm
import partner_event_registration
--- /dev/null
--- /dev/null
++# -*- 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:
++
--- /dev/null
--- /dev/null
++# -*- 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:
--- /dev/null
--- /dev/null
++# -*- 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()
++
--- /dev/null
--- /dev/null
++<?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>