[FIX] Fix according to APR's Review

- Access Right too restrictif for user
- Bug UI between Firefox and Chrome
- Bug UI many2many_tag cursor on bullet
- Temp Fix on email_template to manage partner_to
- Manage attendee from hr_holidays 
- Manage avatar_model in sidebar_items for filter (res.partner was hard coded)
- Remove quick add from HR-holiday, because some field (as day) is calculated on event "onchange"

bzr revid: jke@openerp.com-20131220141855-mbhxtr07fn0sroe0
This commit is contained in:
jke-openerp 2013-12-20 15:18:55 +01:00
parent 5564d4e23e
commit 6bb986a2e5
7 changed files with 26 additions and 21 deletions

View File

@ -6,6 +6,7 @@ access_crm_meeting_manager,crm.meeting.manager,model_crm_meeting,base.group_sale
access_crm_meeting,crm.meeting,model_crm_meeting,base.group_sale_salesman,1,1,1,0
access_crm_meeting_all,crm.meeting_all,model_crm_meeting,base.group_user,1,1,1,1
access_crm_meeting_partner_manager,crm.meeting.partner.manager,model_crm_meeting,base.group_partner_manager,1,1,1,1
access_crm_meeting_type_all,crm.meeting.type.all,model_crm_meeting_type,,1,0,0,0
access_crm_meeting_type_sale_manager,crm.meeting.type.manager,model_crm_meeting_type,base.group_sale_manager,1,1,1,0
access_crm_meeting_type_sale_user,crm.meeting.type.user,model_crm_meeting_type,base.group_user,1,0,0,0
access_crm_meeting_type_sale_user,crm.meeting.type.salesman,model_crm_meeting_type,base.group_sale_salesman,1,0,0,0

1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
6 access_crm_meeting crm.meeting model_crm_meeting base.group_sale_salesman 1 1 1 0
7 access_crm_meeting_all crm.meeting_all model_crm_meeting base.group_user 1 1 1 1
8 access_crm_meeting_partner_manager crm.meeting.partner.manager model_crm_meeting base.group_partner_manager 1 1 1 1
9 access_crm_meeting_type_all crm.meeting.type.all model_crm_meeting_type 1 0 0 0
10 access_crm_meeting_type_sale_manager crm.meeting.type.manager model_crm_meeting_type base.group_sale_manager 1 1 1 0
11 access_crm_meeting_type_sale_user crm.meeting.type.user model_crm_meeting_type base.group_user 1 0 0 0
12 access_crm_meeting_type_sale_user crm.meeting.type.salesman model_crm_meeting_type base.group_sale_salesman 1 0 0 0

View File

@ -3,18 +3,26 @@
height : 13px;
margin-bottom : -4px;
display : inline-block;
}
.openerp .needsAction , .tentative,.text-core .text-tag .custom-edit, .text-core .text-tag .tentative {
background : url(/web/static/src/img/icons/gtk-normal.png) no-repeat;
background-size : 11px 11px;
}
.openerp .accepted , .text-core .text-tag .accepted {
background : url(/web/static/src/img/icons/gtk-yes.png) no-repeat;
background-size : 11px 11px;
}
.openerp .declined , .text-core .text-tag .declined {
background : url(/web/static/src/img/icons/gtk-no.png) no-repeat;
background-size : 11px 11px;
}
.openerp a.oe_invitation {
cursor:default !important;
}
.cal_meeting {
font-size : 24px;

View File

@ -31,7 +31,6 @@ from openerp.osv import osv, fields
from openerp import tools
from openerp.tools.translate import _
from urllib import urlencode, quote as quote
from openerp.tools.safe_eval import safe_eval
_logger = logging.getLogger(__name__)
@ -418,9 +417,7 @@ class email_template(osv.osv):
recipient_ids = []
if 'partner_to' in values:
if values['partner_to']:
partner_to = safe_eval(values['partner_to'])
# if not hasattr(partner_to, '__iter__'):
# partner_to = [partner_to]
partner_to = values['partner_to'].split(',')
for partner_id in partner_to:
recipient_ids.append((4,partner_id))
values['recipient_ids'] = recipient_ids

View File

@ -33,7 +33,7 @@ class TestServerActionsEmail(TestServerActionsBase):
'name': 'TestTemplate',
'email_from': 'myself@example.com',
'email_to': 'brigitte@example.com',
'partner_to': '[%s]' % self.test_partner_id,
'partner_to': '%s' % self.test_partner_id,
'model_id': self.res_partner_model_id,
'subject': 'About ${object.name}',
'body_html': '<p>Dear ${object.name}, your parent is ${object.parent_id and object.parent_id.name or "False"}</p>',

View File

@ -117,11 +117,10 @@ class google_calendar(osv.osv):
'fields': 'items,nextPageToken',
'access_token' : token,
'maxResults':1000
# 'orderBy' : 'id', #Allow to create the main recurrence event, before instance of it ! DOESNT WORK ACTUALLY ON API GMAIL
}
}
headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}
url = "/calendar/v3/calendars/%s/events" % 'primary' #?fields=%s&access_token=%s" % ('primary',urllib.quote('items,nextPageToken'), token)
url = "/calendar/v3/calendars/%s/events" % 'primary'
if nextPageToken:
params['pageToken'] = nextPageToken
@ -166,7 +165,7 @@ class google_calendar(osv.osv):
response = gs_pool._do_request(cr, uid, url, data, headers, type='GET', context=context)
#TODO, il http fail, no event, do DELETE ! ?
#TO_CHECK : , if http fail, no event, do DELETE ?
return response
@ -212,7 +211,7 @@ class google_calendar(osv.osv):
continue
attendee_id = res_partner_obj.search(cr, uid,[('email', '=', google_attendee['email'])], context=context)
if not attendee_id:
attendee_id = [res_partner_obj.create(cr, uid,{'email': google_attendee['email'], 'name': google_attendee.get("displayName",False) or google_attendee['email'] }, context=context)]
attendee_id = [res_partner_obj.create(cr, uid,{'email': google_attendee['email'],'Customer': False, 'name': google_attendee.get("displayName",False) or google_attendee['email'] }, context=context)]
attendee = res_partner_obj.read(cr, uid, attendee_id[0], ['email'], context=context)
partner_record.append((4, attendee.get('id')))
attendee['partner_id'] = attendee.pop('id')
@ -251,7 +250,7 @@ class google_calendar(osv.osv):
'description': single_event_dict.get('description',False),
'location':single_event_dict.get('location',False),
'class':single_event_dict.get('visibility','public'),
'oe_update_date':update_date, #event['GG_event']['update']
'oe_update_date':update_date,
# 'google_internal_event_id': single_event_dict.get('id',False),
})
@ -308,7 +307,6 @@ class google_calendar(osv.osv):
update_date = datetime.strptime(response['updated'],"%Y-%m-%dT%H:%M:%S.%fz")
crm_meeting.write(cr, uid, att.event_id.id, {'oe_update_date':update_date})
att_obj.write(cr, uid, [att.id], {'google_internal_event_id': response['id'], 'oe_synchro_date':update_date})
#Check that response OK and return according to that
cr.commit()
return True
@ -434,10 +432,8 @@ class google_calendar(osv.osv):
event['td_source'] = (event['OE_status'] and "OE") or (event['GG_status'] and "GG")
#If event is not deleted !
elif event['OE_status'] and event['GG_status']:
if not event['GG_update']:
print "### Should never be here : L462"
raise("error L 462")
# if not event['GG_update']:
# print "### Should never be here
if event['OE_update'].split('.')[0] != event['GG_update'].split('.')[0]:
if event['OE_update'] < event['GG_update']:
event['td_source'] = 'GG'
@ -551,7 +547,6 @@ class google_calendar(osv.osv):
meeting = crm_meeting.browse(cr,uid,res,context=context)
attendee_record_id = att_obj.search(cr, uid, [('partner_id','=', myPartnerID), ('event_id','=',res)], context=context)
self.pool.get('calendar.attendee').write(cr,uid,attendee_record_id, {'oe_synchro_date':meeting.oe_update_date,'google_internal_event_id': event['GG_event']['id']},context=context_tmp)
#==> should be = event['GG_event']['updated']
elif actSrc == 'OE':
raise "Should be never here, creation for OE is done before update !"
#Add to batch
@ -665,7 +660,7 @@ class google_calendar(osv.osv):
vals['google_%s_token_validity' % self.STR_SERVICE] = datetime.now() + timedelta(seconds=all_token.get('expires_in'))
vals['google_%s_token' % self.STR_SERVICE] = all_token.get('access_token')
self.pool.get('res.users').write(cr,uid,uid,vals,context=context)
self.pool.get('res.users').write(cr,SUPERUSER_ID,uid,vals,context=context)
def need_authorize(self,cr,uid,context=None):
current_user = self.pool.get('res.users').browse(cr,uid,uid,context=context)

View File

@ -370,8 +370,12 @@ class hr_holidays(osv.osv):
'date': record.date_from,
'end_date': record.date_to,
'date_deadline': record.date_to,
'state': 'open', # to block that meeting date in the calendar
}
'state': 'open', # to block that meeting date in the calendar
}
#Add the partner_id (if exist) as an attendee
if record.user_id and record.user_id.partner_id:
meeting_vals['partner_ids'] = [(4,record.user_id.partner_id.id)]
meeting_id = meeting_obj.create(cr, uid, meeting_vals)
self._create_resource_leave(cr, uid, [record], context=context)
self.write(cr, uid, ids, {'meeting_id': meeting_id})

View File

@ -42,7 +42,7 @@
<field name="arch" type="xml">
<calendar string="Leave Request" color="employee_id"
date_start="date_from" date_stop="date_to"
quick_add="True" quick_create_instance="hr_holidays.QuickCreate">
quick_add="False" avatar_model="hr.employee"> <!--quick_create_instance="hr_holidays.QuickCreate"> -->
<field name="employee_id"/>
<field name="holiday_status_id"/>
</calendar>