Commit a5f45368 by Arturo Jasso Origel

se han agregado permisos y se han acomodado el dashboard para el conteo

parent 431e2cfa
......@@ -8,3 +8,4 @@ from . import helpdesk_team
from . import helpdesk_ticket
from . import helpdesk_settings
from . import helpdesk_sla
from . import ticket_dashboard
......@@ -8,7 +8,7 @@ class HelpdeskTeamInherit(models.Model):
short_name = fields.Char('Nombre corto',copy=False)
sequence_id = fields.Many2one('ir.sequence',string="Sequencia",copy=False)
is_support_team = fields.Boolean('Equipo de soporte')
team_admin_id = fields.Many2one('res.users',string="Administrador del equipo")
@api.onchange(short_name)
def convert_short_name_upper(self):
......
......@@ -45,7 +45,7 @@ class HelpdeskTicket(models.Model):
common_scenery = fields.Char("¿Qué escenarios son comunes a trabajar con esta transacción?")
module_impact = fields.Char("¿Tu solicitud, impacta de algún modo a algún otro Módulo?")
system_id = fields.Many2one('erp.system','Sistema')
team_admin_id = fields.Many2one('res.users',string="Administrador del equipo",related='team_id.team_admin_id')
def _get_color(self):
......
# -*- coding: utf-8 -*-
from odoo import models, fields, api
from odoo.http import request
from datetime import datetime
from dateutil.relativedelta import relativedelta
from odoo.tools import DEFAULT_SERVER_DATE_FORMAT
import json
import logging
_logger = logging.getLogger(__name__)
class TicketDashboardInherit(models.Model):
_inherit = 'ticket.dashboard'
@api.model
def get_team_leader(self):
uid = request.session.uid
user = request.env['res.users'].sudo().browse(uid)
cids = request.httprequest.cookies.get('cids', str(user.company_id.id))
cids = [int(cid) for cid in cids.split(',')]
domain = [
('company_ids', 'in', cids),
('share','=',False)
]
teams = self.env['helpdesk.team'].sudo().search([])
team_heads = list(teams.mapped('team_head').ids+teams.mapped('team_admin_id').ids)
_logger.info(team_heads)
domain.append(('id','in',team_heads))
users = self.env['res.users'].sudo().search_read(domain)
return users
@api.model
def get_ticket_counter_data(self,team_leader,team,assign_user,filter_date,start_date,end_date):
data_dict = {}
ticket_data_dic = {}
ticket_data_list = []
ticket_obj = self.env['helpdesk.ticket'].sudo().search(
[], order='id desc', limit=1)
uid = request.session.uid
user = self.env['res.users'].sudo().browse(uid)
cids = request.httprequest.cookies.get('cids', str(user.company_id.id))
cids = [int(cid) for cid in cids.split(',')]
company_id = self.env.company
id_list = []
for stage in company_id.dashboard_filter:
doman = []
id_list = []
if filter_date == 'today':
dt_flt1 = []
dt_flt1.append('create_date')
dt_flt1.append('>')
dt_flt1.append(
datetime.now().date().strftime("%Y/%m/%d 00:00:00"))
doman.append(tuple(dt_flt1))
dt_flt2 = []
dt_flt2.append('create_date')
dt_flt2.append('<=')
dt_flt2.append(
datetime.now().date().strftime("%Y/%m/%d 23:59:59"))
doman.append(tuple(dt_flt2))
elif filter_date == 'yesterday':
dt_flt1 = []
dt_flt1.append('create_date')
dt_flt1.append('>')
prev_day = (datetime.now().date() -
relativedelta(days=1)).strftime('%Y/%m/%d 00:00:00')
dt_flt1.append(prev_day)
doman.append(tuple(dt_flt1))
dt_flt2 = []
dt_flt2.append('create_date')
dt_flt2.append('<=')
prev_day = (datetime.now().date() -
relativedelta(days=1)).strftime('%Y/%m/%d 23:59:59')
dt_flt2.append(prev_day)
doman.append(tuple(dt_flt2))
elif filter_date == 'weekly': # current week
dt_flt1 = []
dt_flt1.append('create_date')
dt_flt1.append('>')
dt_flt1.append((datetime.now().date(
) - relativedelta(weeks=1, weekday=0)).strftime("%Y/%m/%d 00:00:00"))
doman.append(tuple(dt_flt1))
dt_flt2 = []
dt_flt2.append('create_date')
dt_flt2.append('<=')
dt_flt2.append(
datetime.now().date().strftime("%Y/%m/%d 23:59:59"))
doman.append(tuple(dt_flt2))
elif filter_date == 'prev_week': # Previous week
dt_flt1 = []
dt_flt1.append('create_date')
dt_flt1.append('>')
dt_flt1.append((datetime.now().date(
) - relativedelta(weeks=2, weekday=0)).strftime("%Y/%m/%d 00:00:00"))
doman.append(tuple(dt_flt1))
dt_flt2 = []
dt_flt2.append('create_date')
dt_flt2.append('<=')
dt_flt2.append((datetime.now().date(
) - relativedelta(weeks=1, weekday=6)).strftime("%Y/%m/%d 23:59:59"))
doman.append(tuple(dt_flt2))
elif filter_date == 'monthly': # Current Month
dt_flt1 = []
dt_flt1.append('create_date')
dt_flt1.append('>')
dt_flt1.append(
(datetime.now().date()).strftime("%Y/%m/01 00:00:00"))
doman.append(tuple(dt_flt1))
dt_flt2 = []
dt_flt2.append('create_date')
dt_flt2.append('<=')
dt_flt2.append(
datetime.now().date().strftime("%Y/%m/%d 23:59:59"))
doman.append(tuple(dt_flt2))
elif filter_date == 'prev_month': # Previous Month
dt_flt1 = []
dt_flt1.append('create_date')
dt_flt1.append('>')
dt_flt1.append(
(datetime.now().date() - relativedelta(months=1)).strftime("%Y/%m/01 00:00:00"))
doman.append(tuple(dt_flt1))
dt_flt2 = []
dt_flt2.append('create_date')
dt_flt2.append('<')
dt_flt2.append(
datetime.now().date().strftime("%Y/%m/01 00:00:00"))
doman.append(tuple(dt_flt2))
elif filter_date == 'cur_year': # Current Year
dt_flt1 = []
dt_flt1.append('create_date')
dt_flt1.append('>')
dt_flt1.append(
(datetime.now().date()).strftime("%Y/01/01 00:00:00"))
doman.append(tuple(dt_flt1))
dt_flt2 = []
dt_flt2.append('create_date')
dt_flt2.append('<=')
dt_flt2.append(
datetime.now().date().strftime("%Y/%m/%d 23:59:59"))
doman.append(tuple(dt_flt2))
elif filter_date == 'prev_year': # Previous Year
dt_flt1 = []
dt_flt1.append('create_date')
dt_flt1.append('>')
dt_flt1.append(
(datetime.now().date() - relativedelta(years=1)).strftime("%Y/01/01 00:00:00"))
doman.append(tuple(dt_flt1))
dt_flt2 = []
dt_flt2.append('create_date')
dt_flt2.append('<')
dt_flt2.append(
datetime.now().date().strftime("%Y/01/01 00:00:00"))
doman.append(tuple(dt_flt2))
elif filter_date == 'custom':
if start_date and end_date:
dt_flt1 = []
dt_flt1.append('create_date')
dt_flt1.append('>=')
dt_flt1.append(datetime.strptime(
str(start_date), DEFAULT_SERVER_DATE_FORMAT).strftime("%Y/%m/%d"))
doman.append(tuple(dt_flt1))
dt_flt2 = []
dt_flt2.append('create_date')
dt_flt2.append('<=')
dt_flt2.append(datetime.strptime(
str(end_date), DEFAULT_SERVER_DATE_FORMAT).strftime("%Y/%m/%d"))
doman.append(tuple(dt_flt2))
if team and team not in [None,False,""] and int(team) != 0:
doman.append(('team_id', '=', int(team)))
elif team and team not in [None,False,""] and int(team) == 0:
if self.env.user.has_group('sh_all_in_one_helpdesk.helpdesk_group_team_leader') and self.env.user.has_group('sh_all_in_one_helpdesk.helpdesk_group_user') and not self.env.user.has_group('sh_all_in_one_helpdesk.helpdesk_group_manager'):
team_ids = self.env['helpdesk.team'].sudo().search(
['|',('team_head', '=', self.env.user.id), ('team_members', 'in', [self.env.user.id])])
doman.append(('team_id', 'in', team_ids.ids))
elif not self.env.user.has_group('sh_all_in_one_helpdesk.helpdesk_group_team_leader') and self.env.user.has_group('sh_all_in_one_helpdesk.helpdesk_group_user') and not self.env.user.has_group('sh_all_in_one_helpdesk.helpdesk_group_manager'):
team_ids = self.env['helpdesk.team'].sudo().search(
[('team_members', 'in', [self.env.user.id])])
doman.append(('team_id', 'in', team_ids.ids))
"""
if self.env.user.has_group('helpdesk_morsa.ticket_team_admin'):
doman.append(('|'))
doman.append(('team_admin_id','=',self.env.user.id))
doman.append(('team_admin_id','=',False))
"""
if team_leader and team_leader not in [None,False,""] and int(team_leader) != 0:
doman.append(('team_head', '=', int(team_leader)))
elif team_leader and team_leader not in [None,False,""] and int(team_leader) == 0:
if self.env.user.has_group('sh_all_in_one_helpdesk.helpdesk_group_team_leader') and self.env.user.has_group('sh_all_in_one_helpdesk.helpdesk_group_user') and not self.env.user.has_group('sh_all_in_one_helpdesk.helpdesk_group_manager'):
doman.append(('|'))
doman.append(('|'))
doman.append(('team_head', '=', self.env.user.id))
doman.append(('user_id', '=', self.env.user.id))
doman.append(('sh_user_ids', 'in', [self.env.user.id]))
if assign_user and assign_user not in [None,False,""] and int(assign_user) != 0:
doman.append(('|'))
doman.append(('user_id', '=', int(assign_user)))
doman.append(('sh_user_ids', 'in', [int(assign_user)]))
elif assign_user and assign_user not in [None,False,""] and int(assign_user) == 0:
if self.env.user.has_group('sh_all_in_one_helpdesk.helpdesk_group_team_leader') and self.env.user.has_group('sh_all_in_one_helpdesk.helpdesk_group_user') and not self.env.user.has_group('sh_all_in_one_helpdesk.helpdesk_group_manager'):
doman.append(('|'))
doman.append(('|'))
doman.append(('sh_user_ids', 'in', [self.env.user.id]))
doman.append(('user_id', '=', self.env.user.id))
doman.append(('team_head', '=', self.env.user.id))
elif not self.env.user.has_group('sh_all_in_one_helpdesk.helpdesk_group_team_leader') and self.env.user.has_group('sh_all_in_one_helpdesk.helpdesk_group_user') and not self.env.user.has_group('sh_all_in_one_helpdesk.helpdesk_group_manager'):
doman.append(('|'))
doman.append(('user_id', '=', self.env.user.id))
doman.append(('sh_user_ids', 'in', [self.env.user.id]))
ticket_list = []
doman.append(('stage_id', '=', stage.id))
doman.append(('company_id','in',cids))
#CHANCE DOMAN
if self.env.user.has_group('helpdesk_morsa.ticket_team_admin'):
doman = []
doman.append(('stage_id', '=', stage.id))
doman.append(('company_id','in',cids))
doman.append(('|'))
doman.append(('team_admin_id','=',self.env.user.id))
doman.append(('team_admin_id','=',False))
search_tickets = ticket_obj.search(doman)
_logger.info(search_tickets)
if search_tickets:
for ticket in search_tickets:
create_date = datetime.strftime(ticket.create_date,"%Y-%m-%d %H:%M:%S")
write_date = datetime.strftime(ticket.write_date,"%Y-%m-%d %H:%M:%S")
ticket_dic = {
'ticket_id': ticket.id,
'ticket_no': ticket.name,
'partner_id': ticket.partner_id.name,
'create_date': create_date,
'write_date': write_date,
'user_id': ticket.user_id.name,
}
ticket_list.append(ticket_dic)
id_list.append(ticket.id)
search_stage = self.env['helpdesk.stages'].sudo().search([
('id', '=', stage.id)
], limit=1)
ticket_wrong = 0
if search_stage:
ticket_data_dic.update({search_stage.name: ticket_list})
tickt = self.env['helpdesk.ticket'].sudo().search([('stage_id','=',search_stage.id)])
if tickt.filtered(lambda x: x.color == 9):
ticket_wrong = 1
elif tickt.filtered(lambda x: x.color== 3):
ticket_wrong = 3
list_ids = [id_list,ticket_wrong]
data_dict.update({search_stage.name: [list_ids,ticket_wrong]})
ticket_data_list.append(search_stage.name)
_logger.info(doman)
return self.env['ir.ui.view'].with_context()._render_template('sh_all_in_one_helpdesk.ticket_dashboard_count', {
'ticket_data_dic': ticket_data_dic,
'ticket_data_list': ticket_data_list,
'data_dict': data_dict,
})
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1">
<data>
<record id="ticket_auditor" model="res.groups">
......@@ -8,6 +8,29 @@
<field name="name">Auditor de tickets</field>
</record>
<record id="ticket_team_admin" model="res.groups">
<field name="category_id" ref="sh_all_in_one_helpdesk.module_helpdesk_category"/>
<field name="name">Administrador del equipo</field>
<field name="implied_ids" eval="[(4, ref('sh_all_in_one_helpdesk.helpdesk_group_team_leader'))]"/>
</record>
<record model="ir.rule" id="helpdesk_team_admin">
<field name="name">Helpdesk Administrador del equipo</field>
<field name="model_id" ref="sh_all_in_one_helpdesk.model_helpdesk_team" />
<field name="global" eval="True" />
<field name="domain_force">['|',('team_admin_id','=',user.id),('team_admin_id','=',False)]</field>
<field name="groups" eval="[(4, ref('helpdesk_morsa.ticket_team_admin'))]" />
</record>
<record model="ir.rule" id="helpdesk_ticket_team_admin">
<field name="name">Helpdesk Ticket Team Admin</field>
<field name="model_id" ref="sh_all_in_one_helpdesk.model_helpdesk_ticket" />
<field name="global" eval="True" />
<field name="domain_force">['|',('team_admin_id','=',user.id),('team_admin_id','=',False)]</field>
<field name="groups" eval="[(4, ref('helpdesk_morsa.ticket_team_admin'))]" />
</record>
</data>
</odoo>
\ No newline at end of file
......@@ -9,6 +9,9 @@
<xpath expr="//field[@name='name']" position="after">
<field name="short_name" required="1"/>
</xpath>
<xpath expr="//field[@name='team_head']" position="after">
<field name="team_admin_id"/>
</xpath>
</field>
</record>
</data>
......
......@@ -7,6 +7,9 @@
<field name="inherit_id" ref="sh_all_in_one_helpdesk.helpdesk_ticket_form_view"/>
<field name="priority" eval="17"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='team_head']" position="after">
<field name="team_admin_id"/>
</xpath>
<xpath expr="//field[@name='name']" position="after">
<field name="is_support" invisible="1"/>
<field name="is_erp" invisible="1"/>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment