--- /dev/null
+# -*- coding: utf-8 -*-
+from osv import fields, osv
+
+
+class Studies(osv.osv):
+ _name = 'bikecoop.studies'
+ _description = 'If partner is student, what is his school.'
+
+ _columns = {
+ 'code': fields.char('Code', size=8, help='Code of the school'),
+ 'name': fields.char('Name', size=128, help='Name of the school.', required=True),
+ 'active': fields.boolean('Active', help='If check, this object is always available'),
+ }
+
+ _defaults = {
+ 'active': lambda *a: 1,
+ }
+
+Studies()
+
+
+class Partner(osv.osv):
+ _inherit = 'res.partner'
+
+ _columns = {
+ 'studies_id': fields.many2one('bikecoop.studies', 'School', help='If partner is student, school where he is studing.'),
+ }
+
+ _defaults = {
+ 'studies_id': lambda *a: 1,
+ }
+
+Partner()
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+ <data>
+ <record id="bikecoop_studies_upmf" model="bikecoop.studies">
+ <field name="code">upmf</field>
+ <field name="name">Université Pierre Mendès France</field>
+ </record>
+ <record id="bikecoop_studies_stendhal" model="bikecoop.studies">
+ <field name="code">us</field>
+ <field name="name">Université Stendhal</field>
+ </record>
+ <record id="bikecoop_studies_ujf" model="bikecoop.studies">
+ <field name="code">ujf</field>
+ <field name="name">Université Joseph Fourrier</field>
+ </record>
+ <record id="bikecoop_studies_inpg" model="bikecoop.studies">
+ <field name="code">inpg</field>
+ <field name="name">INPG</field>
+ </record>
+ </data>
+</openerp>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+ <data>
+ <record id="view_bikecoop_members_tree" model="ir.ui.view">
+ <field name="name">res.partner.tree</field>
+ <field name="model">res.partner</field>
+ <field name="type">tree</field>
+ <field name="priority" eval="8"/>
+ <field name="arch" type="xml">
+ <tree string="Bikecoop members">
+ <field name="name"/>
+ <field name="membership_state"/>
+ <field name="membership_start"/>
+ <field name="membership_stop"/>
+ </tree>
+ </field>
+ </record>
+
+ <record id="view_bikecoop_members_form" model="ir.ui.view">
+ <field name="name">res.partner.form</field>
+ <field name="model">res.partner</field>
+ <field name="type">form</field>
+ <field name="priority" eval="8"/>
+ <field name="arch" type="xml">
+ <form string="Bikecoop member">
+ <group colspan="4" col="6">
+ <field name="name" select="1"/>
+ <newline/>
+ <field name="membership_state"/>
+ <field name="membership_start"/>
+ <field name="membership_stop"/>
+ </group>
+ <group colspan="2" col="2">
+ <separator string="Postal address" colspan="4" col="4"/>
+ <field name="address" nolabel="1" colspan="4" mode="form">
+ <form string="Address">
+ <field name="street" colspan="4"/>
+ <field name="street2" colspan="4"/>
+ <field name="zip" colspan="4"/>
+ <field name="city" colspan="4"/>
+ <field name="email" colspan="4"/>
+ </form>
+ </field>
+ </group>
+ <group colspan="2" col="2">
+ <separator string="Other informations" colspan="4" col="4"/>
+ <field name="date" string="Birthdate"/>
+ <field name="title" domain="[('domain', '=', 'contact')]" string="Sex" required="1"/>
+ <field name="studies_id" required="1"/>
+ </group>
+ </form>
+ </field>
+ </record>
+
+ <record id="view_bikecoop_members_search" model="ir.ui.view">
+ <field name="name">res.partner.search</field>
+ <field name="model">res.partner</field>
+ <field name="type">search</field>
+ <field name="priority" eval="8"/>
+ <field name="arch" type="xml">
+ <search string="Bikecoop members">
+ <field name="name" select="True"/>
+ <filter string="All bikecoop members" name="all_bikecoop_members" domain="[('membership_state','in', ['invoiced','paid','free'])]"/>
+ </search>
+ </field>
+ </record>
+
+ <record model="ir.actions.act_window" id="act_open_bikecoop_members_view">
+ <field name="name">Bikecoop members</field>
+ <field name="type">ir.actions.act_window</field>
+ <field name="res_model">res.partner</field>
+ <field name="view_type">form</field>
+ <field name="view_mode">tree,form</field>
+ <field name="search_view_id" ref="view_bikecoop_members_search"/>
+ <field name="domain">[]</field>
+ <field name="context">{"search_default_all_bikecoop_members": 1}</field>
+ </record>
+
+ <record model="ir.actions.act_window.view" id="act_open_bikecoop_members_view_form">
+ <field name="act_window_id" ref="act_open_bikecoop_members_view"/>
+ <field name="sequence" eval="20"/>
+ <field name="view_mode">form</field>
+ <field name="view_id" ref="view_bikecoop_members_form"/>
+ </record>
+
+ <record model="ir.actions.act_window.view" id="act_open_bikecoop_members_view_tree">
+ <field name="act_window_id" ref="act_open_bikecoop_members_view"/>
+ <field name="sequence" eval="10"/>
+ <field name="view_mode">tree</field>
+ <field name="view_id" ref="view_bikecoop_members_tree"/>
+ </record>
+
+ <menuitem id="menu_bikecoop_members"
+ parent="membership.menu_membership"
+ sequence="20"
+ action="act_open_bikecoop_members_view"/>
+ </data>
+</openerp>