# anything, we just push them right in there!
fullmsg = models.TextField(null=False, blank=False)
- def __unicode__(self):
+ def __str__(self):
return "%s: %s -> %s" % (self.pk, self.sender, self.receiver)
return qs[:30]
def item_title(self, item):
- return u"{0}: {1}".format(item.feed.name, item.title)
+ return "{0}: {1}".format(item.feed.name, item.title)
def item_link(self, item):
if not item.shortlink:
send_simple_mail(settings.EMAIL_SENDER,
feed.user.email,
"Your blog at Planet PostgreSQL redirected",
- u"The blog aggregator at Planet PostgreSQL has picked up a redirect for your blog.\nOld URL: {0}\nNew URL: {1}\n\nThe database has been updated, and new entries will be fetched from the secure URL in the future.\n".format(feed.feedurl, results.url),
+ "The blog aggregator at Planet PostgreSQL has picked up a redirect for your blog.\nOld URL: {0}\nNew URL: {1}\n\nThe database has been updated, and new entries will be fetched from the secure URL in the future.\n".format(feed.feedurl, results.url),
sendername="Planet PostgreSQL",
- receivername=u"{0} {1}".format(feed.user.first_name, feed.user.last_name),
+ receivername="{0} {1}".format(feed.user.first_name, feed.user.last_name),
)
send_simple_mail(settings.EMAIL_SENDER,
settings.NOTIFICATION_RECEIVER,
"Blog redirect detected on Planet PostgreSQL",
- u"The blog at {0} by {1}\nis returning a redirect to a https version of itself.\n\nThe database has automatically been updated, and will start fetching using https in the future,\n\n".format(feed.feedurl, feed.user),
+ "The blog at {0} by {1}\nis returning a redirect to a https version of itself.\n\nThe database has automatically been updated, and will start fetching using https in the future,\n\n".format(feed.feedurl, feed.user),
sendername="Planet PostgreSQL",
receivername="Planet PostgreSQL Moderators",
)
send_simple_mail(settings.EMAIL_SENDER,
feed.user.email,
"Many posts found at your blog at Planet PostgreSQL",
- u"The blog aggregator at Planet PostgreSQL has just picked up the following\nposts from your blog at {0}:\n\n{1}\n\nSince this is a large number of posts, they have been fetched\nand marked as hidden, to avoid possible duplicates.\n\nPlease go to https://planet.postgresql.org/register/edit/{2}\nand confirm (by unhiding) which of these should be posted.\n\nThank you!\n\n".format(
+ "The blog aggregator at Planet PostgreSQL has just picked up the following\nposts from your blog at {0}:\n\n{1}\n\nSince this is a large number of posts, they have been fetched\nand marked as hidden, to avoid possible duplicates.\n\nPlease go to https://planet.postgresql.org/register/edit/{2}\nand confirm (by unhiding) which of these should be posted.\n\nThank you!\n\n".format(
feed.blogurl,
"\n".join(["* " + t for t in titles]),
feed.id),
sendername="Planet PostgreSQL",
- receivername=u"{0} {1}".format(feed.user.first_name, feed.user.last_name),
+ receivername="{0} {1}".format(feed.user.first_name, feed.user.last_name),
)
send_simple_mail(settings.EMAIL_SENDER,
settings.NOTIFICATION_RECEIVER,
"Excessive posts from feed on Planet PostgreSQL",
- u"The blog at {0} by {1}\nreceived {2} new posts in a single fetch.\nAs this may be incorect, the posts have been marked as hidden.\nThe author may individually mark them as visible depending on\nprevious posts, and has been sent a notification about this.".format(feed.feedurl, feed.user, len(ids)),
+ "The blog at {0} by {1}\nreceived {2} new posts in a single fetch.\nAs this may be incorect, the posts have been marked as hidden.\nThe author may individually mark them as visible depending on\nprevious posts, and has been sent a notification about this.".format(feed.feedurl, feed.user, len(ids)),
sendername="Planet PostgreSQL",
receivername="Planet PostgreSQL Moderators",
)
send_simple_mail(settings.EMAIL_SENDER,
feed.user.email,
"Posts found at your blog at Planet PostgreSQL",
- u"The blog aggregator at Planet PostgreSQL has just picked up the following\nposts from your blog at {0}:\n\n{1}\n\nIf these entries are correct, you don't have to do anything.\nIf any entry should not be there, head over to\n\nhttps://planet.postgresql.org/register/edit/{2}/\n\nand click the 'Hide' button for those entries as soon\nas possible.\n\nThank you!\n\n".format(
+ "The blog aggregator at Planet PostgreSQL has just picked up the following\nposts from your blog at {0}:\n\n{1}\n\nIf these entries are correct, you don't have to do anything.\nIf any entry should not be there, head over to\n\nhttps://planet.postgresql.org/register/edit/{2}/\n\nand click the 'Hide' button for those entries as soon\nas possible.\n\nThank you!\n\n".format(
feed.blogurl,
"\n".join(["* " + t for t in titles]),
feed.id),
sendername="Planet PostgreSQL",
- receivername=u"{0} {1}".format(feed.user.first_name, feed.user.last_name),
+ receivername="{0} {1}".format(feed.user.first_name, feed.user.last_name),
)
if entries > 0 and not had_entries:
send_simple_mail(settings.EMAIL_SENDER,
settings.NOTIFICATION_RECEIVER,
"A blog was added to Planet PostgreSQL",
- u"The blog at {0} by {1}\nwas added to Planet PostgreSQL, and has now received entries.\n\nTo moderate: https://planet.postgresql.org/register/moderate/\n\n".format(feed.feedurl, feed.user),
+ "The blog at {0} by {1}\nwas added to Planet PostgreSQL, and has now received entries.\n\nTo moderate: https://planet.postgresql.org/register/moderate/\n\n".format(feed.feedurl, feed.user),
sendername="Planet PostgreSQL",
receivername="Planet PostgreSQL Moderators",
)
send_simple_mail(settings.EMAIL_SENDER,
settings.NOTIFICATION_RECEIVER,
"A blog url changed on Planet PostgreSQL",
- u"When checking the blog at {0} by {1}\nthe blog URL was updated to:\n{2}\n(from previous value {3})\n\nTo moderate: https://planet.postgresql.org/register/moderate/\n\n".format(feed.feedurl, feed.user, feed.new_blogurl, feed.blogurl),
+ "When checking the blog at {0} by {1}\nthe blog URL was updated to:\n{2}\n(from previous value {3})\n\nTo moderate: https://planet.postgresql.org/register/moderate/\n\n".format(feed.feedurl, feed.user, feed.new_blogurl, feed.blogurl),
sendername="Planet PostgreSQL",
receivername="Planet PostgreSQL Moderators",
)
send_simple_mail(settings.EMAIL_SENDER,
feed.user.email,
"URL of your blog at Planet PostgreSQL updated",
- u"The blog aggregator at Planet PostgreSQL has update the URL of your blog\nwith the feed at {0} to:\n{1} (from {2})\nIf this is correct, you don't have to do anything.\nIf not, please contact planet@postgresql.org\n".format(
+ "The blog aggregator at Planet PostgreSQL has update the URL of your blog\nwith the feed at {0} to:\n{1} (from {2})\nIf this is correct, you don't have to do anything.\nIf not, please contact planet@postgresql.org\n".format(
feed.feedurl,
feed.new_blogurl,
feed.blogurl,
),
sendername="Planet PostgreSQL",
- receivername=u"{0} {1}".format(feed.user.first_name, feed.user.last_name),
+ receivername="{0} {1}".format(feed.user.first_name, feed.user.last_name),
)
feed.blogurl = feed.new_blogurl
feed.save()
send_simple_mail(settings.EMAIL_SENDER,
feed.user.email,
"Errors retreiving your feed for Planet PostgreSQL",
- u"""Your blog aggregated to Planet PostgreSQL with feed URL
+ """Your blog aggregated to Planet PostgreSQL with feed URL
{0}
feed.id,
THRESHOLD),
sendername="Planet PostgreSQL",
- receivername=u"{0} {1}".format(feed.user.first_name, feed.user.last_name),
+ receivername="{0} {1}".format(feed.user.first_name, feed.user.last_name),
)
name = models.CharField(max_length=255, blank=False)
manager = models.ForeignKey(User, null=True, blank=True)
- def __unicode__(self):
+ def __str__(self):
return "%s (%s)" % (self.name, self.teamurl)
class Meta:
# Things that may change
new_blogurl = None
- def __unicode__(self):
+ def __str__(self):
return "%s (%s)" % (self.name, self.feedurl)
@property
twittered = models.BooleanField(default=False)
shortlink = models.CharField(max_length=255)
- def __unicode__(self):
+ def __str__(self):
return self.title
class Meta:
self.user = username
self.logtxt = txt
- def __unicode__(self):
+ def __str__(self):
return "%s (%s): %s" % (self.logtime, self.user, self.logtxt)
class Meta:
db_table = 'aggregatorlog'
ordering = ['-ts']
- def __unicode__(self):
+ def __str__(self):
return "Log entry for %s (%s)" % (self.feed.name, self.ts)
else:
blog = get_object_or_404(Blog, id=id, user=request.user)
else:
- blog = Blog(user=request.user, name = u"{0} {1}".format(request.user.first_name, request.user.last_name))
+ blog = Blog(user=request.user, name = "{0} {1}".format(request.user.first_name, request.user.last_name))
if request.method == 'POST':
saved_url = blog.feedurl
send_simple_mail(settings.EMAIL_SENDER,
settings.NOTIFICATION_RECEIVER,
"A blog was edited on Planet PostgreSQL",
- u"The blog at {0}\nwas edited by {1} in a way that needs new moderation.\n\nTo moderate: https://planet.postgresql.org/register/moderate/\n\n".format(blog.feedurl, blog.user),
+ "The blog at {0}\nwas edited by {1} in a way that needs new moderation.\n\nTo moderate: https://planet.postgresql.org/register/moderate/\n\n".format(blog.feedurl, blog.user),
sendername="Planet PostgreSQL",
receivername="Planet PostgreSQL Moderators",
)
send_simple_mail(settings.EMAIL_SENDER,
obj.team.manager.email,
"A blog joined your team on Planet PostgreSQL",
- u"The blog at {0} by {1} {2}\nhas been added to yor team {3} on Planet PostgreSQL\n\nIf this is correct, you do not need to do anything.\n\nIf this is incorrect, please go to\n\nhttps://planet.postgresql.org/register/\n\nand click the button to remove the blog from your team.\nWe apologize if this causes work for you.\n\n".format(
+ "The blog at {0} by {1} {2}\nhas been added to yor team {3} on Planet PostgreSQL\n\nIf this is correct, you do not need to do anything.\n\nIf this is incorrect, please go to\n\nhttps://planet.postgresql.org/register/\n\nand click the button to remove the blog from your team.\nWe apologize if this causes work for you.\n\n".format(
obj.feedurl,
obj.user.first_name, obj.user.last_name,
obj.team.name),
sendername="Planet PostgreSQL",
- receivername=u"{0} {1}".format(obj.team.manager.first_name, obj.team.manager.last_name),
+ receivername="{0} {1}".format(obj.team.manager.first_name, obj.team.manager.last_name),
)
return HttpResponseRedirect("/register/edit/{0}/".format(obj.id))
send_simple_mail(settings.EMAIL_SENDER,
settings.NOTIFICATION_RECEIVER,
"A blog was deleted on Planet PostgreSQL",
- u"The blog at {0} by {1}\nwas deleted by {2}\n\n".format(blog.feedurl, blog.name, request.user.username),
+ "The blog at {0} by {1}\nwas deleted by {2}\n\n".format(blog.feedurl, blog.name, request.user.username),
sendername="Planet PostgreSQL",
receivername="Planet PostgreSQL Moderators",
)
send_simple_mail(settings.EMAIL_SENDER,
settings.NOTIFICATION_RECEIVER,
"A blog was archived on Planet PostgreSQL",
- u"The blog at {0} by {1}\nwas archived by {2}\n\n".format(blog.feedurl, blog.name, request.user.username),
+ "The blog at {0} by {1}\nwas archived by {2}\n\n".format(blog.feedurl, blog.name, request.user.username),
sendername="Planet PostgreSQL",
receivername="Planet PostgreSQL Moderators",
)
send_simple_mail(settings.EMAIL_SENDER,
settings.NOTIFICATION_RECEIVER,
"A blog was removed from a team on Planet PostgreSQL",
- u"The blog at {0} by {1} {2}\nwas removed from team {3} by {4}.\n".format(
+ "The blog at {0} by {1} {2}\nwas removed from team {3} by {4}.\n".format(
blog.feedurl, blog.user.first_name, blog.user.last_name, team.name, request.user.username),
sendername="Planet PostgreSQL",
receivername="Planet PostgreSQL Moderators",
send_simple_mail(settings.EMAIL_SENDER,
blog.user.email,
"Your blog on Planet PostgreSQL was removed from the team",
- u"Your blog at {0} has been removed\nfrom the team {1} on Planet PostgreSQL.\n\nIf you believe this to be in error, please contact\nthe team administrator.\n\n".format(blog.feedurl, team.name),
+ "Your blog at {0} has been removed\nfrom the team {1} on Planet PostgreSQL.\n\nIf you believe this to be in error, please contact\nthe team administrator.\n\n".format(blog.feedurl, team.name),
sendername="Planet PostgreSQL",
- receivername=u"{0} {1}".format(blog.user.first_name, blog.user.last_name),
+ receivername="{0} {1}".format(blog.user.first_name, blog.user.last_name),
)
messages.info(request, "Blog {0} removed from team {1}".format(blog.feedurl, team.name))
send_simple_mail(settings.EMAIL_SENDER,
settings.NOTIFICATION_RECEIVER,
"A blog was rejected on Planet PostgreSQL",
- u"The blog at {0} by {1} {2}\nwas marked as rejected by {3}. The message given was:\n\n{4}\n\n".format(blog.feedurl, blog.user.first_name, blog.user.last_name, request.user.username, form.cleaned_data['message']),
+ "The blog at {0} by {1} {2}\nwas marked as rejected by {3}. The message given was:\n\n{4}\n\n".format(blog.feedurl, blog.user.first_name, blog.user.last_name, request.user.username, form.cleaned_data['message']),
sendername="Planet PostgreSQL",
receivername="Planet PostgreSQL Moderators",
)
- messages.info(request, u"Blog {0} rejected, notification sent to moderators".format(blog.feedurl))
+ messages.info(request, "Blog {0} rejected, notification sent to moderators".format(blog.feedurl))
if not form.cleaned_data['modsonly']:
send_simple_mail(settings.EMAIL_SENDER,
blog.user.email,
"Your blog submission to Planet PostgreSQL",
- u"The blog at {0} that you submitted to Planet PostgreSQL has\nunfortunately been rejected. The reason given was:\n\n{1}\n\n".format(blog.feedurl, form.cleaned_data['message']),
+ "The blog at {0} that you submitted to Planet PostgreSQL has\nunfortunately been rejected. The reason given was:\n\n{1}\n\n".format(blog.feedurl, form.cleaned_data['message']),
sendername="Planet PostgreSQL",
- receivername = u"{0} {1}".format(blog.user.first_name, blog.user.last_name),
+ receivername = "{0} {1}".format(blog.user.first_name, blog.user.last_name),
)
- messages.info(request, u"Blog {0} rejected, notification sent to blog owner".format(blog.feedurl))
+ messages.info(request, "Blog {0} rejected, notification sent to blog owner".format(blog.feedurl))
blog.delete()
return HttpResponseRedirect("/register/moderate/")
blog = get_object_or_404(Blog, id=blogid)
if blog.approved:
- messages.info(request, u"Blog {0} was already approved.".format(blog.feedurl))
+ messages.info(request, "Blog {0} was already approved.".format(blog.feedurl))
return HttpResponseRedirect("/register/moderate/")
send_simple_mail(settings.EMAIL_SENDER,
settings.NOTIFICATION_RECEIVER,
"A blog was approved on Planet PostgreSQL",
- u"The blog at {0} by {1} {2}\nwas marked as approved by {3}.\n\n".format(blog.feedurl, blog.user.first_name, blog.user.last_name, request.user.username),
+ "The blog at {0} by {1} {2}\nwas marked as approved by {3}.\n\n".format(blog.feedurl, blog.user.first_name, blog.user.last_name, request.user.username),
sendername="Planet PostgreSQL",
receivername="Planet PostgreSQL Moderators",
)
send_simple_mail(settings.EMAIL_SENDER,
blog.user.email,
"Your blog submission to Planet PostgreSQL",
- u"The blog at {0} that you submitted to Planet PostgreSQL has\nbeen approved.\n\n".format(blog.feedurl),
+ "The blog at {0} that you submitted to Planet PostgreSQL has\nbeen approved.\n\n".format(blog.feedurl),
sendername="Planet PostgreSQL",
- receivername = u"{0} {1}".format(blog.user.first_name, blog.user.last_name),
+ receivername = "{0} {1}".format(blog.user.first_name, blog.user.last_name),
)
blog.approved = True
AuditEntry(request.user.username, 'Approved blog %s at %s' % (blog.id, blog.feedurl)).save()
- messages.info(request, u"Blog {0} approved, notification sent to moderators and owner.".format(blog.feedurl))
+ messages.info(request, "Blog {0} approved, notification sent to moderators and owner.".format(blog.feedurl))
purge_root_and_feeds()
purge_url('/feeds.html')
def purge_url(url):
if not settings.VARNISH_URL:
- print "Not purging {0}".format(url)
+ print("Not purging {0}".format(url))
else:
try:
request = urllib2.Request(settings.VARNISH_URL, headers={
# in case it's needed.
try:
short = self.shortid(post[0])
- except Exception, e:
- print "Failed to shorten URL %s: %s" % (post[2], e)
+ except Exception as e:
+ print("Failed to shorten URL %s: %s" % (post[2], e))
continue
c.execute("UPDATE posts SET shortlink=%(short)s WHERE id=%(id)s", {
# Set up the string to twitter
if post[5] and len(post[5])>1:
# Twitter username registered
- msg = unicode("%s (@%s): %s %s") % (
+ msg = "%s (@%s): %s %s" % (
post[4],
post[5],
self.trimpost(post[1],len(post[4])+len(post[5])+len(short)+7),
short,
)
else:
- msg = unicode("%s: %s %s") % (
+ msg = "%s: %s %s" % (
post[4],
self.trimpost(post[1],len(post[4])+len(short)+3),
short,
# Now post it to twitter
try:
self.do_post(msg)
- except Exception, e:
- print "Error posting to twitter (post %s): %s" % (post[0], e)
+ except Exception as e:
+ print("Error posting to twitter (post %s): %s" % (post[0], e))
# We'll just try again with the next one
continue
c.execute("UPDATE posts SET twittered='t' WHERE id=%(id)s", { 'id': post[0] })
self.db.commit()
- print unicode("Twittered: %s" % msg).encode('utf8')
+ print("Twittered: %s" % msg)
# Trim a post to the length required by twitter, so we don't fail to post
cfg.read('planet.ini')
if not cfg.has_option('twitter', 'consumer') or not cfg.has_option('twitter', 'consumersecret'):
- print "Before you can run this, you need to register an application at"
- print "developer.twitter.com and put the consumer and consumersecret values"
- print "in the [twitter] section of planet.ini."
+ print("Before you can run this, you need to register an application at")
+ print("developer.twitter.com and put the consumer and consumersecret values")
+ print("in the [twitter] section of planet.ini.")
sys.exit(1)
oauth = requests_oauthlib.OAuth1Session(cfg.get('twitter', 'consumer'), cfg.get('twitter', 'consumersecret'))
fetch_response = oauth.fetch_request_token('https://api.twitter.com/oauth/request_token')
auth_url = oauth.authorization_url('https://api.twitter.com/oauth/authorize')
-print "Please go to {0} and log in".format(auth_url)
-pin = raw_input('Enter the PIN received here:')
+print("Please go to {0} and log in".format(auth_url))
+pin = input('Enter the PIN received here:')
oauth2 = requests_oauthlib.OAuth1Session(cfg.get('twitter', 'consumer'),
cfg.get('twitter', 'consumersecret'),
tokens = oauth2.fetch_access_token('https://api.twitter.com/oauth/access_token')
-print "Access token received."
-print "Register the following two valuesi n planet.ini under [twitter]:"
-print "token={0}".format(tokens.get('oauth_token'))
-print "secret={0}".format(tokens.get('oauth_token_secret'))
+print("Access token received.")
+print("Register the following two valuesi n planet.ini under [twitter]:")
+print("token={0}".format(tokens.get('oauth_token')))
+print("secret={0}".format(tokens.get('oauth_token_secret')))
if not self.add_subscriber(s):
# Most likely it's things like it doesn't exist or we don't have permissions
# to follow it.
- print "Failed to add twitter subscriber {0}, removing from feed record".format(s)
+ print("Failed to add twitter subscriber {0}, removing from feed record".format(s))
# To be on the safe side, store the old twitter username. In case the twitter APIs
# go bonkers on us and we end up removing too much.
'cursor': cursor,
})
if response.status_code != 200:
- print response.json()
+ print(response.json())
raise Exception("Received status {0} when listing users".format(response.status_code))
j = response.json()
handles.extend([x['screen_name'].lower() for x in j['users']])
return handles
def remove_subscriber(self, name):
- print "Removing twitter user %s from list." % name
+ print("Removing twitter user %s from list." % name)
r = self.tw.post('{0}lists/members/destroy.json'.format(self.twitter_api), data={
'owner_screen_name': self.twittername,
'slug': self.twitterlist,
err = r.json()['errors'][0]['message']
except:
err = 'Response does not contain error messages with json'
- print "Failed to remove subscriber {0}: {1}".format(name, err)
+ print("Failed to remove subscriber {0}: {1}".format(name, err))
return False
return True
def add_subscriber(self, name):
- print "Adding twitter user %s to list." % name
+ print("Adding twitter user %s to list." % name)
r = self.tw.post('{0}lists/members/create.json'.format(self.twitter_api), data={
'owner_screen_name': self.twittername,
'slug': self.twitterlist,
err = r.json()['errors'][0]['message']
except:
err = 'Response does not contain error messages with json'
- print "Failed to add subscriber {0}: {1}".format(name, err)
+ print("Failed to add subscriber {0}: {1}".format(name, err))
return False
return True