[FIX] Fix according to APR's Review
authorjke-openerp <jke@openerp.com>
Fri, 20 Dec 2013 14:18:55 +0000 (15:18 +0100)
committerjke-openerp <jke@openerp.com>
Fri, 20 Dec 2013 14:18:55 +0000 (15:18 +0100)
- 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

addons/calendar/security/ir.model.access.csv
addons/calendar/static/src/css/calendar.css
addons/email_template/email_template.py
addons/email_template/tests/test_ir_actions.py
addons/google_calendar/google_calendar.py
addons/hr_holidays/hr_holidays.py
addons/hr_holidays/hr_holidays_view.xml

index 7814b10..76c5f1a 100644 (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\r
 access_crm_meeting_all,crm.meeting_all,model_crm_meeting,base.group_user,1,1,1,1\r
 access_crm_meeting_partner_manager,crm.meeting.partner.manager,model_crm_meeting,base.group_partner_manager,1,1,1,1\r
+access_crm_meeting_type_all,crm.meeting.type.all,model_crm_meeting_type,,1,0,0,0\r
 access_crm_meeting_type_sale_manager,crm.meeting.type.manager,model_crm_meeting_type,base.group_sale_manager,1,1,1,0\r
 access_crm_meeting_type_sale_user,crm.meeting.type.user,model_crm_meeting_type,base.group_user,1,0,0,0\r
 access_crm_meeting_type_sale_user,crm.meeting.type.salesman,model_crm_meeting_type,base.group_sale_salesman,1,0,0,0\r
index a930244..f3ee714 100644 (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;
index 19c360f..bfcec95 100644 (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
index d323ee3..9b408a4 100644 (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>',
index 7670d79..f1d3c06 100644 (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)        
index 78de6f7..38fc36e 100644 (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})
index a6f64c7..f3758d2 100644 (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>