diff options
| author | Anand Kansagra <aka@openerp.com> | 2015-08-25 14:51:34 +0530 |
|---|---|---|
| committer | Jérome Maes <jem@openerp.com> | 2016-05-03 16:59:19 +0200 |
| commit | e7007ba3f3d09d8c57afdec892fba1b58c21e7db (patch) | |
| tree | dc860e0f0ac690c64f97615e25d91b1c48b9d2e7 /addons/note/note.py | |
| parent | d115c24d6b7377f792f8b5a1075377991b680dc7 (diff) | |
[MOV] note: Re-organised file structure.
Diffstat (limited to 'addons/note/note.py')
| -rw-r--r-- | addons/note/note.py | 186 |
1 files changed, 0 insertions, 186 deletions
diff --git a/addons/note/note.py b/addons/note/note.py deleted file mode 100644 index 0818d03d471..00000000000 --- a/addons/note/note.py +++ /dev/null @@ -1,186 +0,0 @@ -# -*- coding: utf-8 -*- -# Part of Odoo. See LICENSE file for full copyright and licensing details. - -from openerp import _, SUPERUSER_ID -from openerp.osv import osv, fields -from openerp.tools import html2plaintext - -class note_stage(osv.osv): - """ Category of Note """ - _name = "note.stage" - _description = "Note Stage" - _columns = { - 'name': fields.char('Stage Name', translate=True, required=True), - 'sequence': fields.integer('Sequence', help="Used to order the note stages"), - 'user_id': fields.many2one('res.users', 'Owner', help="Owner of the note stage.", required=True, ondelete='cascade'), - 'fold': fields.boolean('Folded by Default'), - } - _order = 'sequence asc' - _defaults = { - 'fold': 0, - 'user_id': lambda self, cr, uid, ctx: uid, - 'sequence' : 1, - } - -class note_tag(osv.osv): - _name = "note.tag" - _description = "Note Tag" - _columns = { - 'name': fields.char('Tag Name', required=True), - 'color': fields.integer('Color Index'), - } - _sql_constraints = [ - ('name_uniq', 'unique (name)', "Tag name already exists !"), - ] - -class note_note(osv.osv): - """ Note """ - _name = 'note.note' - _inherit = ['mail.thread'] - _description = "Note" - - #writing method (no modification of values) - def name_create(self, cr, uid, name, context=None): - rec_id = self.create(cr, uid, {'memo': name}, context=context) - return self.name_get(cr, uid, [rec_id], context)[0] - - #read the first line (convert hml into text) - def _get_note_first_line(self, cr, uid, ids, name="", args={}, context=None): - res = {} - for note in self.browse(cr, uid, ids, context=context): - res[note.id] = (note.memo and html2plaintext(note.memo) or "").strip().replace('*','').split("\n")[0] - - return res - - def onclick_note_is_done(self, cr, uid, ids, context=None): - return self.write(cr, uid, ids, {'open': False, 'date_done': fields.date.today()}, context=context) - - def onclick_note_not_done(self, cr, uid, ids, context=None): - return self.write(cr, uid, ids, {'open': True}, context=context) - - #return the default stage for the uid user - def _get_default_stage_id(self,cr,uid,context=None): - ids = self.pool.get('note.stage').search(cr,uid,[('user_id','=',uid)], context=context) - return ids and ids[0] or False - - def _set_stage_per_user(self, cr, uid, id, name, value, args=None, context=None): - note = self.browse(cr, uid, id, context=context) - if not value: return False - stage_ids = [value] + [stage.id for stage in note.stage_ids if stage.user_id.id != uid ] - return self.write(cr, uid, [id], {'stage_ids': [(6, 0, set(stage_ids))]}, context=context) - - def _get_stage_per_user(self, cr, uid, ids, name, args, context=None): - result = dict.fromkeys(ids, False) - for record in self.browse(cr, uid, ids, context=context): - for stage in record.stage_ids: - if stage.user_id.id == uid: - result[record.id] = stage.id - return result - - _columns = { - 'name': fields.function(_get_note_first_line, - string='Note Summary', - type='text', store=True), - 'user_id': fields.many2one('res.users', 'Owner'), - 'memo': fields.html('Note Content'), - 'sequence': fields.integer('Sequence'), - 'stage_id': fields.function(_get_stage_per_user, - fnct_inv=_set_stage_per_user, - string='Stage', - type='many2one', - relation='note.stage'), - 'stage_ids': fields.many2many('note.stage','note_stage_rel','note_id','stage_id','Stages of Users'), - 'open': fields.boolean('Active', track_visibility='onchange'), - 'date_done': fields.date('Date done'), - 'color': fields.integer('Color Index'), - 'tag_ids' : fields.many2many('note.tag','note_tags_rel','note_id','tag_id','Tags'), - } - _defaults = { - 'user_id': lambda self, cr, uid, ctx=None: uid, - 'open' : 1, - 'stage_id' : _get_default_stage_id, - } - _order = 'sequence' - - def read_group(self, cr, uid, domain, fields, groupby, offset=0, limit=None, context=None, orderby=False, lazy=True): - if groupby and groupby[0]=="stage_id": - - #search all stages - current_stage_ids = self.pool.get('note.stage').search(cr,uid,[('user_id','=',uid)], context=context) - - if current_stage_ids: #if the user have some stages - stages = self.pool['note.stage'].browse(cr, uid, current_stage_ids, context=context) - - result = [{ #notes by stage for stages user - '__context': {'group_by': groupby[1:]}, - '__domain': domain + [('stage_ids.id', '=', stage.id)], - 'stage_id': (stage.id, stage.name), - 'stage_id_count': self.search(cr,uid, domain+[('stage_ids', '=', stage.id)], context=context, count=True), - '__fold': stage.fold, - } for stage in stages] - - #note without user's stage - nb_notes_ws = self.search(cr,uid, domain+[('stage_ids', 'not in', current_stage_ids)], context=context, count=True) - if nb_notes_ws: - # add note to the first column if it's the first stage - dom_not_in = ('stage_ids', 'not in', current_stage_ids) - if result and result[0]['stage_id'][0] == current_stage_ids[0]: - dom_in = result[0]['__domain'].pop() - result[0]['__domain'] = domain + ['|', dom_in, dom_not_in] - result[0]['stage_id_count'] += nb_notes_ws - else: - # add the first stage column - result = [{ - '__context': {'group_by': groupby[1:]}, - '__domain': domain + [dom_not_in], - 'stage_id': (stages[0].id, stages[0].name), - 'stage_id_count':nb_notes_ws, - '__fold': stages[0].name, - }] + result - - else: # if stage_ids is empty - - #note without user's stage - nb_notes_ws = self.search(cr,uid, domain, context=context, count=True) - if nb_notes_ws: - result = [{ #notes for unknown stage - '__context': {'group_by': groupby[1:]}, - '__domain': domain, - 'stage_id': False, - 'stage_id_count':nb_notes_ws - }] - else: - result = [] - return result - - else: - return super(note_note, self).read_group(cr, uid, domain, fields, groupby, - offset=offset, limit=limit, context=context, orderby=orderby,lazy=lazy) - - def _notification_get_recipient_groups(self, cr, uid, ids, message, recipients, context=None): - res = super(note_note, self)._notification_get_recipient_groups(cr, uid, ids, message, recipients, context=context) - new_action_id = self.pool['ir.model.data'].xmlid_to_res_id(cr, uid, 'note.action_note_note') - new_action = self._notification_link_helper(cr, uid, ids, 'new', context=context, action_id=new_action_id) - res['user'] = { - 'actions': [{'url': new_action, 'title': _('New Note')}] - } - return res - - -class res_users(osv.Model): - _name = 'res.users' - _inherit = ['res.users'] - def create(self, cr, uid, data, context=None): - user_id = super(res_users, self).create(cr, uid, data, context=context) - note_obj = self.pool['note.stage'] - data_obj = self.pool['ir.model.data'] - is_employee = self.has_group(cr, user_id, 'base.group_user') - if is_employee: - for n in range(5): - xmlid = 'note_stage_%02d' % (n,) - try: - _model, stage_id = data_obj.get_object_reference(cr, SUPERUSER_ID, 'note', xmlid) - except ValueError: - continue - note_obj.copy(cr, SUPERUSER_ID, stage_id, default={'user_id': user_id}, context=context) - return user_id |
