* portal, web_unsplash, website_* This commit renames the `website.group_website_publisher` into `website.group_website_restricted_editor`. While the change in itself might look unuseful, it will help the dev and tech community figuring which group is related to which feature. Even internally when we discuss specs, we always have to remind which group is the restricted editor: the publisher one or the designer one? While it is probably, after all those years, now anchored in some dev mind, there is no easy way to directly figure which of those 2 groups is the restricted editor one. Note that I myself always got confused about it. Now, the "Restricted Editor" right will be reflected in its technical name `group_website_restricted_editor`. Same as for the "Editor & Designer" which technical name is `group_website_designer`. As we would like to have a fully working and ready system in v17 for the community to be able to build themes easily, removing that dubious part is a nice to have. Part-of: odoo/odoo#98200
43 lines
1.8 KiB
Python
43 lines
1.8 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
import json
|
|
from odoo import _
|
|
from odoo import http
|
|
from odoo.http import request
|
|
|
|
|
|
class Twitter(http.Controller):
|
|
@http.route(['/website_twitter/reload'], type='json', auth="user", website=True)
|
|
def twitter_reload(self):
|
|
return request.website.fetch_favorite_tweets()
|
|
|
|
@http.route(['/website_twitter/get_favorites'], type='json', auth="public", website=True)
|
|
def get_tweets(self, limit=20):
|
|
key = request.website.twitter_api_key
|
|
secret = request.website.twitter_api_secret
|
|
screen_name = request.website.twitter_screen_name
|
|
debug = request.env['res.users'].has_group('website.group_website_restricted_editor')
|
|
if not key or not secret:
|
|
if debug:
|
|
return {"error": _("Please set the Twitter API Key and Secret in the Website Settings.")}
|
|
return []
|
|
if not screen_name:
|
|
if debug:
|
|
return {"error": _("Please set a Twitter screen name to load favorites from, "
|
|
"in the Website Settings (it does not have to be yours)")}
|
|
return []
|
|
TwitterTweets = request.env['website.twitter.tweet']
|
|
tweets = TwitterTweets.search(
|
|
[('website_id', '=', request.website.id),
|
|
('screen_name', '=', screen_name)],
|
|
limit=int(limit), order="tweet_id desc")
|
|
if len(tweets) < 12:
|
|
if debug:
|
|
return {"error": _("Twitter user @%(username)s has less than 12 favorite tweets. "
|
|
"Please add more or choose a different screen name.") % \
|
|
{'username': screen_name}}
|
|
else:
|
|
return []
|
|
return tweets.mapped(lambda t: json.loads(t.tweet))
|