Skip to content

Commit

Permalink
[FIX+IMP] helpdesk: 4 things:
Browse files Browse the repository at this point in the history
* Fix tickets and naming conventions (OCA#46)
* Save sequence number in in 'number' field instead of in helpdesk_sequence.
* Also fixed tests and added a small test to check if a number is added in a ticket when we create one.
* Add many views and fix others (OCA#49)
  • Loading branch information
aitorbouzas authored and dalonsod committed Nov 18, 2020
1 parent c0830d4 commit d5b517d
Show file tree
Hide file tree
Showing 10 changed files with 271 additions and 85 deletions.
8 changes: 5 additions & 3 deletions helpdesk_mgmt/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,12 @@
'data/helpdesk_data.xml',
'security/helpdesk_security.xml',
'security/ir.model.access.csv',
'data/helpdesk_ticket_sequence.xml',
'views/helpdesk_team_views.xml',
'views/helpdesk_ticket_menu.xml',
'views/helpdesk_ticket_templates.xml',
'views/helpdesk_ticket_menu.xml',
'views/helpdesk_ticket_team_view.xml',
'views/helpdesk_ticket_stage_view.xml',
'views/helpdesk_ticket_category_view.xml',
'views/helpdesk_ticket_channel_view.xml',
'views/helpdesk_ticket_view.xml',
],
'demo': [
Expand Down
8 changes: 8 additions & 0 deletions helpdesk_mgmt/data/helpdesk_data.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,14 @@

<data noupdate="1">

<!-- Sequence -->
<record id="helpdesk_ticket_sequence" model="ir.sequence">
<field name="name">Helpdesk Ticket Sequence</field>
<field name="code">helpdesk.ticket.sequence</field>
<field name="prefix">HT</field>
<field name="padding">5</field>
</record>

<!-- Stages -->
<record id="helpdesk_ticket_stage_new" model="helpdesk.ticket.stage">
<field name="sequence">1</field>
Expand Down
15 changes: 0 additions & 15 deletions helpdesk_mgmt/data/reservation_initial_sequence.xml

This file was deleted.

18 changes: 9 additions & 9 deletions helpdesk_mgmt/models/helpdesk_ticket.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,15 @@
class HelpdeskTicket(models.Model):

_name = 'helpdesk.ticket'
_rec_name = 'helpdesk_sequence'
_rec_name = 'number'
_order = 'number desc'
_inherit = ['mail.thread', 'mail.activity.mixin']

def _get_default_stage_id(self):
return self.env['helpdesk.ticket.stage'].search([], limit=1).id

number = fields.Char(string='Ticket number', readonly=True)
number = fields.Char(string='Ticket number', default="/",
readonly=True)
name = fields.Char(string='Title', required=True)
description = fields.Text(required=True)
user_id = fields.Many2one(
Expand All @@ -29,7 +30,7 @@ def _get_default_stage_id(self):
string='Last Stage Update',
default=fields.Datetime.now(),
)
assigned_date = fields.Datetime(string='Assinged Date')
assigned_date = fields.Datetime(string='Assigned Date')
closed_date = fields.Datetime(string='Closed Date')

tag_ids = fields.Many2many('helpdesk.ticket.tag')
Expand Down Expand Up @@ -58,15 +59,14 @@ def _get_default_stage_id(self):
'ir.attachment', 'res_id',
domain=[('res_model', '=', 'website.support.ticket')],
string="Media Attachments")
helpdesk_sequence = fields.Char("Reservation reference", default="/")
active = fields.Boolean(default='True')

@api.model
def create(self, vals):
if vals.get('helpdesk_sequence', '/') == '/':
vals['helpdesk_sequence'] = self.env[
'ir.sequence'].next_by_code('helpdesk.ticket.sequence') or '/'
return super(HelpdeskTicket, self).create(vals)
if vals.get('number', '/') == '/':
vals['number'] = self.env['ir.sequence'].next_by_code(
'helpdesk.ticket.sequence'
) or '/'
return super().create(vals)

@api.multi
def write(self, vals):
Expand Down
47 changes: 34 additions & 13 deletions helpdesk_mgmt/tests/test_helpdesk_ticket.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,30 +3,51 @@

class TestHelpdeskTicket(common.SavepointCase):

def setUp(self):
super().setUp()
self.user_admin = self.env.ref('base.user_root')
self.user_demo = self.env.ref('base.user_demo')
self.stage_closed = self.env.ref('helpdesk.helpdesk_ticket_stage_done')

@classmethod
def setUpClass(cls):
super(TestHelpdeskTicket, cls).setUpClass()
Ticket = cls.env['helpdesk.ticket']
cls.ticket = Ticket.create({
helpdesk_ticket = cls.env['helpdesk.ticket']
cls.user_admin = cls.env.ref('base.user_root')
cls.user_demo = cls.env.ref('base.user_demo')
cls.stage_closed = cls.env.ref('helpdesk.helpdesk_ticket_stage_done')

cls.ticket = helpdesk_ticket.create({
'name': 'Test 1',
'description': "This is the first test.",
'description': 'Ticket test',
})

def test_helpdesk_ticket(self):
self.assertTrue(self.ticket.last_stage_update)
def test_helpdesk_ticket_datetimes(self):
old_stage_update = self.ticket.last_stage_update

self.assertTrue(self.ticket.last_stage_update,
'Helpdesk Ticket: Helpdesk ticket should '
'have a last_stage_update at all times.')

self.assertFalse(self.ticket.closed_date,
'Helpdesk Ticket: No closed date '
'should be set for a non closed '
'ticket.')

self.ticket.write({
'stage_id': self.stage_closed.id,
})
self.assertTrue(self.ticket.closed_date)

self.assertTrue(self.ticket.closed_date,
'Helpdesk Ticket: A closed ticket '
'should have a closed_date value.')
self.assertTrue(old_stage_update < self.ticket.last_stage_update,
'Helpdesk Ticket: The last_stage_update '
'should be updated at every stage_id '
'change.')

self.ticket.write({
'user_id': self.user_admin.id,
})
self.assertTrue(self.ticket.assigned_date)
self.assertTrue(self.ticket.assigned_date,
'Helpdesk Ticket: An assigned ticket '
'should contain a assigned_date.')

def test_helpdesk_ticket_number(self):
self.assertNotEquals(self.ticket.number, '/',
'Helpdesk Ticket: A ticket should have '
'a number.')
45 changes: 0 additions & 45 deletions helpdesk_mgmt/views/helpdesk_team_views.xml

This file was deleted.

51 changes: 51 additions & 0 deletions helpdesk_mgmt/views/helpdesk_ticket_category_view.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>

<record id="view_helpdesk_ticket_category_search" model="ir.ui.view">
<field name="name">helpdesk.ticket.category.search</field>
<field name="model">helpdesk.ticket.category</field>
<field name="arch" type="xml">
<search string="Helpdesk Category Search">
<filter string="Archived" name="inactive" domain="[('active','=',False)]"/>
<separator/>
<field name="name" filter_domain="[('name', 'ilike', self)]"/>
</search>
</field>
</record>

<record id="view_helpdesk_category_form" model="ir.ui.view">
<field name="name">view.helpdesk_category.form</field>
<field name="model">helpdesk.ticket.category</field>
<field name="arch" type="xml">
<form string="Stages">
<header>
</header>
<sheet>
<div class="oe_button_box" name="button_box">
<button name="toggle_active" type="object" class="oe_stat_button" icon="fa-check">
<field name="active" widget="boolean_button" options='{"terminology": "active"}'/>
</button>
</div>
<div class="oe_title">
<label for="name" class="oe_edit_only"/>
<h1><field name="name" required="1"/></h1>
</div>
<group name="main">
<field name="company_id" groups="base.group_multi_company"/>
</group>
</sheet>
</form>
</field>
</record>

<record id="view_helpdesk_category_tree" model="ir.ui.view">
<field name="name">view.helpdesk_category.tree</field>
<field name="model">helpdesk.ticket.category</field>
<field name="arch" type="xml">
<tree string="Team">
<field name="name"/>
</tree>
</field>
</record>

</odoo>
51 changes: 51 additions & 0 deletions helpdesk_mgmt/views/helpdesk_ticket_channel_view.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>

<record id="view_helpdesk_ticket_channel_search" model="ir.ui.view">
<field name="name">helpdesk.ticket.channel.search</field>
<field name="model">helpdesk.ticket.channel</field>
<field name="arch" type="xml">
<search string="Helpdesk Category Search">
<filter string="Archived" name="inactive" domain="[('active','=',False)]"/>
<separator/>
<field name="name" filter_domain="[('name', 'ilike', self)]"/>
</search>
</field>
</record>

<record id="view_helpdesk_channel_form" model="ir.ui.view">
<field name="name">view.helpdesk_channel.form</field>
<field name="model">helpdesk.ticket.channel</field>
<field name="arch" type="xml">
<form string="Stages">
<header>
</header>
<sheet>
<div class="oe_button_box" name="button_box">
<button name="toggle_active" type="object" class="oe_stat_button" icon="fa-check">
<field name="active" widget="boolean_button" options='{"terminology": "active"}'/>
</button>
</div>
<div class="oe_title">
<label for="name" class="oe_edit_only"/>
<h1><field name="name" required="1"/></h1>
</div>
<group name="main">
<field name="company_id" groups="base.group_multi_company"/>
</group>
</sheet>
</form>
</field>
</record>

<record id="view_helpdesk_channel_tree" model="ir.ui.view">
<field name="name">view.helpdesk_channel.tree</field>
<field name="model">helpdesk.ticket.channel</field>
<field name="arch" type="xml">
<tree string="Team">
<field name="name"/>
</tree>
</field>
</record>

</odoo>
60 changes: 60 additions & 0 deletions helpdesk_mgmt/views/helpdesk_ticket_stage_view.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>

<record id="view_helpdesk_ticket_stage_search" model="ir.ui.view">
<field name="name">helpdesk.ticket.stage.search</field>
<field name="model">helpdesk.ticket.stage</field>
<field name="arch" type="xml">
<search string="Ticket Stage Search">
<filter string="Archived" name="inactive" domain="[('active','=',False)]"/>
<separator/>
<field name="name" filter_domain="[('name', 'ilike', self)]"/>
</search>
</field>
</record>

<record id="view_helpdesk_ticket_stage_form" model="ir.ui.view">
<field name="name">helpdesk.ticket.stage.form</field>
<field name="model">helpdesk.ticket.stage</field>
<field name="arch" type="xml">
<form string="Stages">
<header>
</header>
<sheet>
<div class="oe_button_box" name="button_box">
<button name="toggle_active" type="object" class="oe_stat_button" icon="fa-check">
<field name="active" widget="boolean_button" options='{"terminology": "active"}'/>
</button>
</div>
<div class="oe_title">
<label for="name" class="oe_edit_only"/>
<h1><field name="name" required="1"/></h1>
</div>
<group name="main">
<group name="main_left">
<field name="sequence"/>
<field name="mail_template_id"/>
<field name="company_id" groups="base.group_multi_company"/>
</group>
<group name="main_right">
<field name="closed"/>
<field name="unattended"/>
</group>
</group>
<field name="description" widget="html"/>
</sheet>
</form>
</field>
</record>

<record id="view_helpdesk_ticket_stage_tree" model="ir.ui.view">
<field name="name">helpdesk.ticket.stage.tree</field>
<field name="model">helpdesk.ticket.stage</field>
<field name="arch" type="xml">
<tree string="Ticket Stages">
<field name="sequence" widget="handle"/>
<field name="name"/>
</tree>
</field>
</record>
</odoo>
Loading

0 comments on commit d5b517d

Please sign in to comment.