def create(self, vals_list): vals_list = [vals.copy() for vals in vals_list] for vals in vals_list: if 'url' not in vals: raise ValueError( _('Creating a Link Tracker without URL is not possible')) vals['url'] = tools.validate_url(vals['url']) if not vals.get('title'): vals['title'] = self._get_title_from_url(vals['url']) # Prevent the UTMs to be set by the values of UTM cookies for (__, fname, __) in self.env['utm.mixin'].tracking_fields(): if fname not in vals: vals[fname] = False links = super(LinkTracker, self).create(vals_list) link_tracker_codes = self.env[ 'link.tracker.code']._get_random_code_strings(len(vals_list)) self.env['link.tracker.code'].sudo().create([{ 'code': code, 'link_id': link.id, } for link, code in zip(links, link_tracker_codes)]) return links
def create(self, vals): create_vals = vals.copy() if 'url' not in create_vals: raise ValueError('URL field required') else: create_vals['url'] = tools.validate_url(vals['url']) search_domain = [] for fname, value in create_vals.items(): search_domain.append((fname, '=', value)) result = self.search(search_domain, limit=1) if result: return result if not create_vals.get('title'): create_vals['title'] = self._get_title_from_url(create_vals['url']) # Prevent the UTMs to be set by the values of UTM cookies for (key, fname, cook) in self.env['utm.mixin'].tracking_fields(): if fname not in create_vals: create_vals[fname] = False link = super(LinkTracker, self).create(create_vals) code = self.env['link.tracker.code'].get_random_code_string() self.env['link.tracker.code'].sudo().create({ 'code': code, 'link_id': link.id }) return link
def search_or_create(self, vals): if 'url' not in vals: raise ValueError( _('Creating a Link Tracker without URL is not possible')) vals['url'] = tools.validate_url(vals['url']) search_domain = [ (fname, '=', value) for fname, value in vals.items() if fname in ['url', 'campaign_id', 'medium_id', 'source_id'] ] result = self.search(search_domain, limit=1) if result: return result return self.create(vals)