odex25_standard/odex25_helpdesk/helpdesk_employee_request/models/helpdesk.py

95 lines
3.5 KiB
Python

# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import api, fields, models, tools, _
from lxml import etree
import json
import simplejson
import logging
from odoo.exceptions import UserError, ValidationError
_logger = logging.getLogger(__name__)
class HelpdeskTicket(models.Model):
_inherit = 'odex25_helpdesk.ticket'
def _default_team_id(self):
team_id = False
if self.user_has_groups('helpdesk_employee_request.group_helpdesk_Secretary'):
if self._context.get('default_ticket_service_type') == 'request':
team_id = self.env['odex25_helpdesk.team'].search([('is_internal_team', '=', False)], limit=1).id
elif self._context.get('default_ticket_service_type') == 'vip':
team_id = self.env['odex25_helpdesk.team'].search([('is_vip_team', '=', True)], limit=1).id
elif self.user_has_groups('helpdesk_employee_request.group_helpdesk_employee'):
team_id = self.env['odex25_helpdesk.team'].search([('is_internal_team', '=', False)], limit=1).id
elif self.user_has_groups('helpdesk_employee_request.group_helpdesk_vip_employee'):
team_id = self.env['odex25_helpdesk.team'].search([('is_vip_team', '=', True)], limit=1).id
return team_id
team_id = fields.Many2one('odex25_helpdesk.team', string='Helpdesk Team', default=_default_team_id, index=True)
requester_id = fields.Many2one('res.users')
is_submitted = fields.Boolean(default=False)
is_vip_team = fields.Boolean(related="team_id.is_vip_team", readonly=True)
is_internal_team = fields.Boolean(related="team_id.is_internal_team", readonly=True)
ticket_service_type = fields.Selection([
('vip', 'VIP'),
('request', 'Request'),
('secretary', 'Secretary')])
# show_button_next = fields.Boolean(related='stage_id.show_button_next', store=True)
# show_button_previous = fields.Boolean(related='stage_id.show_button_previous', store=True)
# show_button_rejection = fields.Boolean(related='stage_id.final_rejection', store=True)
# show_button_draft = fields.Boolean(related='stage_id.final_rejection_stage', store=True)
@api.model
def create(self, vals):
"""
prevent editing after saving the record
"""
record = super(HelpdeskTicket, self).create(vals)
record.is_submitted = True
record.active = True
return record
@api.onchange('partner_id')
def set_requester(self):
"""
get the partner of the user
"""
user = self.env['res.users'].search([('partner_id', '=', self.partner_id.id)], limit=1)
self.requester_id = user.id
def submit_to_user(self):
"""
set the flag to true so fields be readonly and go to next stage
"""
for rec in self:
rec.is_submitted = True
rec.active = True
self.fields_view_get(view_type='form')
@api.model
@api.onchange('requester_id')
def _get_customer_from_requester(self):
"""
setting customer value from requester id
"""
if self._context.get('employee_request'):
self.requester_id = self.env.uid
self.partner_id = self.requester_id.partner_id.id
self.partner_email = self.partner_id.email
res = {'domain': {'partner_id': [('id', '=', [self.requester_id.partner_id.id])]}}
return res
class odex25_helpdeskStage(models.Model):
_inherit = 'odex25_helpdesk.stage'
pass