def merge_from(self, base, remote): # This must be updated when new fields are added to the class. merge_attrs = ['subject', 'body', 'start', 'end', 'all_day', 'locked', 'location', 'reminders', 'recurrence', 'time_zone', 'busy', 'raw_data'] for attr in merge_attrs: merge_attr(base, remote, self, attr) self.merge_participants(base.participants_by_email, remote.participants_by_email)
def merge_from(self, base, remote): # This must be updated when new fields are added to the class. merge_attrs = ['title', 'description', 'start', 'end', 'all_day', 'read_only', 'location', 'reminders', 'recurrence', 'busy', 'raw_data', 'owner', 'is_owner', 'calendar_id'] for attr in merge_attrs: merge_attr(base, remote, self, attr) self.merge_participants(base.participants_by_email, remote.participants_by_email)
def merge_participant(self, p_email, base, remote): if p_email not in self.participants_by_email: # Removed locally, so don't add if base and remote: return new_p = {"email_address": p_email} self.participants_by_email[p_email] = new_p else: # Removed by remote, don't add if base and not remote: del self.participants_by_email[p_email] return dest = self.participants_by_email.get(p_email) merge_attrs = ['name', 'status', 'notes'] for attr in merge_attrs: merge_attr(base, remote, dest, attr)
def merge_from(self, base, remote): # This must be updated when new fields are added to the class. merge_attrs = ['name', 'email_address', 'raw_data'] for attr in merge_attrs: merge_attr(base, remote, self, attr)
def merge(base, remote, dest): a = C(base) b = C(remote) c = C(dest) merge_attr(a, b, c, 'attr') return c.attr