[FIX] website: use public user for sitemap making
The current user was used to generate the sitemap. So if a user with more permissions than `public user` goes on the sitemap, he could generate it (if he is the first to see it or the last generation was more than 12 hours ago (by default)) and have pages unavailables for a user with lower permission in the sitemap (until the sitemap is generated again). The issue was solved in 8.0 withd08facdcbbut was introduced back in 10.0 withfd09ddb6fbecause the `uid` argument was dropped from `generate` method on `ModelConverter`. Ths fix add the `uid` parameter back. opw-708456
This commit is contained in:
@@ -361,8 +361,8 @@ class ModelConverter(ir.ir_http.ModelConverter):
|
||||
record_id = abs(record_id)
|
||||
return env[self.model].browse(record_id)
|
||||
|
||||
def generate(self, query=None, args=None):
|
||||
Model = request.env[self.model]
|
||||
def generate(self, uid, query=None, args=None):
|
||||
Model = request.env[self.model].sudo(uid)
|
||||
domain = safe_eval(self.domain, (args or {}).copy())
|
||||
if query:
|
||||
domain.append((Model._rec_name, 'ilike', '%' + query + '%'))
|
||||
@@ -374,8 +374,8 @@ class ModelConverter(ir.ir_http.ModelConverter):
|
||||
class PageConverter(werkzeug.routing.PathConverter):
|
||||
""" Only point of this converter is to bundle pages enumeration logic """
|
||||
|
||||
def generate(self, query=None, args={}):
|
||||
View = request.env['ir.ui.view']
|
||||
def generate(self, uid, query=None, args={}):
|
||||
View = request.env['ir.ui.view'].sudo(uid)
|
||||
domain = [('page', '=', True)]
|
||||
query = query and query.startswith('website.') and query[8:] or query
|
||||
if query:
|
||||
|
||||
@@ -550,7 +550,7 @@ class Website(models.Model):
|
||||
newval = []
|
||||
for val in values:
|
||||
query = i == len(convitems)-1 and query_string
|
||||
for value_dict in converter.generate(query=query, args=val):
|
||||
for value_dict in converter.generate(uid=self.env.uid, query=query, args=val):
|
||||
newval.append(val.copy())
|
||||
value_dict[name] = value_dict['loc']
|
||||
del value_dict['loc']
|
||||
|
||||
Reference in New Issue
Block a user