This question has been flagged
2243 Views

I want that When we select any group from Group field then  "Assign To" field should be take only those users, those are in the selected group only.

Here is python code:-


class assign_case(osv.osv):

    _name = "assign.case"

    _description = "assign Assign"


    _columns = {


        'group_id': fields.many2one('res.groups', string='Group', required=True),

        'assign_to': fields.many2one('hr.employee', 'Assigned to:', required=True),

    }



    def assign_case(self, cr, uid, ids, context=None):


        sunarc_obj = self.pool.get('sun.helpdesk')

        record_id = context.get('active_id')

        print "rec:", record_id

        data = self.read(cr, uid, ids)[0]

        #print data

        assign_to = data['assign_to'] and data['assign_to'][0]

        group_id = data['group_id'] and data['group_id'][0]

        print sunarc_obj.write(cr, uid, [record_id], {'assign_to': assign_to, 'state': 'assign'})


        sunarc_obj.write(cr, uid, [record_id],

                     {'assign_to': assign_to, 'group_id':group_id, 'state': 'assign', 'update_date': fields.datetime.now()})

        try:

            mail_message_obj = self.pool.get('mail.message')

            mail_ids = []

            mail_mail = self.pool.get('mail.mail')

            base_url = self.pool.get('ir.config_parameter').get_param(cr, uid, 'web.base.url')

            for val in sunarc_obj.browse(cr, uid, record_id):

                    print "Employee Email"

                    subject = "Ticket ID-%s Assigned" % ids[0]

                    # subject = "Issue Escalate"

                    body = _("Hello,\n\n" )

                    body += _("Message from Helpdesk \n\n")


                    body += _("Ticket:%s\n\n" % val.name)

                    body += _("Description:%s\n\n" % val.description)

                    body += _("Priority:%s\n\n" % val.priority)

                    footer = _("Kind regards.\n")

                    # footer += _("%s\n\n" %val.user_id.name)


                    mail_message_id = mail_message_obj.search(cr, SUPERUSER_ID,

                                                              [('model', '=', 'sun.helpdesk'),

                                                               ('subject', '=', subject),

                                                               ('type', '=', 'email')], context=context)

                    if mail_message_id:

                        mail_message_id = mail_message_id[0]

                    print "mail_message_id", mail_message_id

                    mail_ids.append(mail_mail.create(cr, uid, {

                        'mail_message_id': mail_message_id,

                                                'subject': subject,

                        'body_html': '<pre><span class="inner-pre" style="font-size: 15px">%s<a href=%s>To Login and View Issue Reported</a><br><br>%s</span></pre>' % (

                        body, base_url, footer)

                    }, context=context))

                    print "mail_ids:", mail_ids

                    mail_mail.send(cr, uid, mail_ids, context=context)


        except Exception, e:

            print "Exception", e

        return True


    def onchange_assign(self, cr, uid, ids, group_id, context=None):

        if not context:

            context = {}

        res = {}

        groups_obj = self.pool.get('res.groups')

        sunarc_obj = self.pool.get('sun.helpdesk')

        record_id = context.get('active_id')

        print "rec:", record_id

        data = sunarc_obj.read(cr, uid, record_id)

        print data

        group_id = data['group_id'] and data['group_id'][0]

        groups_ids = []


        groups = groups_obj.browse(cr, uid, group_id, context=context)

        print group_id, groups, groups.users.ids


        if group_id:

            res['domain'] = {'assign_to': [('id', 'in', groups.users.ids)]}

        print "group_id"

        return res assign_case()


Here is xml code:-


<?xml version="1.0" encoding="utf-8"?>

<openerp>

    <data>

        <record id="view_assign_case" model="ir.ui.view">

            <field name="name">Assigned</field>

            <field name="model">assign.case</field>

            <field name="arch" type="xml">

                <form string="Assigned" version="7.0">

    <group col="4">

                <field name="group_id" on_change="onchange_assign(group_id)"/>

                <field name="assign_to"/>

    </group>

    <footer>

    <button string="OK" type="object" name="assign_case" class="oe_highlight" />

    <button string="Cancel" class="oe_link" special="cancel"/>

                    </footer>

                </form>

            </field>

        </record>


  <record id="action_view_assign_case" model="ir.actions.act_window">

            <field name="name">Assigned</field>

            <field name="type">ir.actions.act_window</field>

            <field name="res_model">assign.case</field>

            <field name="view_type">form</field>

            <field name="view_mode">form</field>

            <field name="target">new</field>

        </record>

  </data>

  </openerp>


Avatar
Discard