Changeset - 2d078b0004fb
[Not reviewed]
0 10 0
Ben Sturmfels (bsturmfels) - 2 years ago 2021-11-29 20:55:45
ben@sturm.com.au
Apply `futurize --stage-2` Python 2/3 compatibility transformations.

These changes specifically require the use of the "future" library.
10 files changed with 31 insertions and 17 deletions:
0 comments (0 inline, 0 general)
www/conservancy/__init__.py
Show inline comments
 
from past.builtins import basestring
 
from builtins import object
 
import hashlib
 

	
 
from django.conf import settings
 
from django.template import RequestContext
 

	
www/conservancy/apps/blog/models.py
Show inline comments
 
from future import standard_library
 
standard_library.install_aliases()
 
from builtins import object
 
from django.db import models
 
from django.conf import settings
 
from conservancy import bsoup
 
from conservancy.apps.staff.models import Person
 
from datetime import datetime, timedelta
 

	
...
 
@@ -62,18 +65,18 @@ class Entry(models.Model, bsoup.SoupModelMixin):
 

	
 
        blog_name = 'Software Freedom Conservancy Blog'
 
        blog_url =  'http://www.sfconservancy.org/blog/'
 
        post_url = ('http://www.sfconservancy.org'
 
                    + self.get_absolute_url())
 

	
 
        import xmlrpclib
 
        import xmlrpc.client
 

	
 
        # Ping Technorati
 
        j = xmlrpclib.Server('http://rpc.technorati.com/rpc/ping')
 
        j = xmlrpc.client.Server('http://rpc.technorati.com/rpc/ping')
 
        reply = j.weblogUpdates.ping(blog_name, blog_url)
 

	
 
        # Ping Google Blog Search
 
        j = xmlrpclib.Server('http://blogsearch.google.com/ping/RPC2')
 
        j = xmlrpc.client.Server('http://blogsearch.google.com/ping/RPC2')
 
        reply = j.weblogUpdates.ping(blog_name, blog_url, post_url)
 

	
 
        # Call any superclass's method
 
        super(Entry, self).save()
www/conservancy/apps/events/view_helpers.py
Show inline comments
...
 
@@ -12,9 +12,9 @@ def organize_media_by_event(eventmedia_queryset):
 
    media_by_event = {}
 
    for media in eventmedia_queryset:
 
        media_by_event.setdefault(media.event.id, []).append(media)
 
    mbe = [{'event': x[0].event,
 
            'date': max(y.date_created for y in x),
 
            'media_list': ', '.join(set(y.get_format_display() for y in x))}
 
           for x in media_by_event.values()]
 
           for x in list(media_by_event.values())]
 
    mbe.sort(key=(lambda x: x['date']), reverse=True) # sort by date
 
    return mbe
www/conservancy/apps/fundgoal/models.py
Show inline comments
 
from __future__ import division
 
from past.utils import old_div
 
from builtins import object
 
import random
 

	
 
from django.db import models
 

	
 
class FundraisingGoal(models.Model):
...
 
@@ -14,13 +16,13 @@ class FundraisingGoal(models.Model):
 
    fundraiser_endtime = models.DateTimeField(null=True)
 

	
 
    def __unicode__(self):
 
        return self.fundraiser_code_name
 

	
 
    def percentage_there(self):
 
        return (self.fundraiser_so_far_amount / self.fundraiser_goal_amount ) * 100
 
        return (old_div(self.fundraiser_so_far_amount, self.fundraiser_goal_amount) ) * 100
 
    
 
    class Meta(object):
 
        ordering = ('fundraiser_code_name',)
 

	
 
    def providers(self):
 
        return GoalProvider.objects.filter(fundraising_goal=self)
www/conservancy/apps/news/models.py
Show inline comments
 
from future import standard_library
 
standard_library.install_aliases()
 
from builtins import object
 
from django.db import models
 
from django.conf import settings
 
from conservancy import bsoup
 
from conservancy.apps.staff.models import Person
 
from conservancy.apps.events.models import Event
...
 
@@ -51,20 +53,20 @@ class PressRelease(models.Model, bsoup.SoupModelMixin):
 

	
 
        blog_name = 'Software Freedom Conservancy News'
 
        blog_url =  'https://www.sfconservancy.org/news/'
 
        post_url = ('https://www.sfconservancy.org'
 
                    + self.get_absolute_url())
 

	
 
        import xmlrpclib
 
        import xmlrpc.client
 

	
 
        # Ping Technorati
 
        j = xmlrpclib.Server('http://rpc.technorati.com/rpc/ping')
 
        j = xmlrpc.client.Server('http://rpc.technorati.com/rpc/ping')
 
        reply = j.weblogUpdates.ping(blog_name, blog_url)
 

	
 
        # Ping Google Blog Search
 
        j = xmlrpclib.Server('http://blogsearch.google.com/ping/RPC2')
 
        j = xmlrpc.client.Server('http://blogsearch.google.com/ping/RPC2')
 
        reply = j.weblogUpdates.ping(blog_name, blog_url, post_url)
 

	
 
        # Call any superclass's method
 
        super(PressRelease, self).save()
 

	
 
class ExternalArticleTag(models.Model):
www/conservancy/apps/news/templatetags/fill_url.py
Show inline comments
 
import urlparse
 
from future import standard_library
 
standard_library.install_aliases()
 
from builtins import zip
 
import urllib.parse
 

	
 
from django import template
 

	
 
register = template.Library()
 

	
 
@register.filter(name='fill_url')
...
 
@@ -10,11 +13,11 @@ def fill_url(given_url, base_url):
 

	
 
    This function parses the given URL, and if it's missing any pieces
 
    (scheme, netloc, etc.), it fills those in from the base URL.
 
    Typical usage is "/URL/path"|fill_url:"https://hostname/"
 
    to generate "https://hostname/URL/path".
 
    """
 
    given_parts = urlparse.urlsplit(given_url)
 
    base_parts = urlparse.urlsplit(base_url)
 
    return urlparse.urlunsplit(
 
    given_parts = urllib.parse.urlsplit(given_url)
 
    base_parts = urllib.parse.urlsplit(base_url)
 
    return urllib.parse.urlunsplit(
 
        given_part or base_part for given_part, base_part in zip(given_parts, base_parts)
 
    )
www/conservancy/bsoup.py
Show inline comments
 
# -*- encoding: utf-8 -*-
 

	
 
from builtins import filter
 
from builtins import object
 
import io
 
import itertools
 
import re
 

	
 
import bs4
...
 
@@ -141,13 +142,13 @@ class SoupModelMixin(object):
 
    def _elem_pred(self, attr_name=OG_PREVIEW_ATTR, test=lambda n: n > 0):
 
        def elem_pred(elem):
 
            return test(elem[attr_name])
 
        return elem_pred
 

	
 
    def _sort_and_slice_elems(self, elem_seq, elem_key, pred, *slice_args):
 
        seq = itertools.ifilter(pred, sorted(elem_seq, key=elem_key))
 
        seq = filter(pred, sorted(elem_seq, key=elem_key))
 
        if slice_args:
 
            return itertools.islice(seq, *slice_args)
 
        else:
 
            return seq
 

	
 
    def get_description(self):
www/conservancy/local_context_processors.py
Show inline comments
...
 
@@ -19,10 +19,10 @@ def sitefundraiser(request):
 
        'sitefundgoal': fundgoal_lookup(SITE_FUNDGOAL),
 
    }
 

	
 
if conservancy.settings.FORCE_CANONICAL_HOSTNAME:
 
    _HOST_URL_VAR = {'host_url': 'https://' + conservancy.settings.FORCE_CANONICAL_HOSTNAME}
 
    def host_url(request):
 
        return _HOST_URL_VAR
 
        return _HOST_URL_VAR.decode('utf-8')
 
else:
 
    def host_url(request):
 
        return {'host_url': request.build_absolute_uri('/').rstrip('/')}
 
        return {'host_url': request.build_absolute_uri('/').rstrip('/').decode('utf-8')}
www/conservancy/static/views.py
Show inline comments
 
from builtins import str
 
import mimetypes
 
import os.path
 
from django.http import HttpResponse
 
from django.template.response import TemplateResponse
 

	
 
from conservancy.local_context_processors import fundgoal_lookup
www/modpythoncustom.py
Show inline comments
 
from builtins import str
 
from mod_python import apache
 

	
 
# 404 should do NOTHING so apache can handle it.  This view is referenced
 
# in sflc.urls
 
def view404(request):
 
    from django.http import HttpResponseNotFound
...
 
@@ -80,16 +81,16 @@ class ModPythonHandler(BaseHandler):
 
        # SFLC: decline so apache can serve a static file
 
        if response.status_code == 404:
 
            return apache.DECLINED
 

	
 
        # Convert our custom HttpResponse object back into the mod_python req.
 
        req.content_type = response['Content-Type']
 
        for key, value in response.items():
 
        for key, value in list(response.items()):
 
            if key != 'content-type':
 
                req.headers_out[str(key)] = str(value)
 
        for c in response.cookies.values():
 
        for c in list(response.cookies.values()):
 
            req.headers_out.add('Set-Cookie', c.output(header=''))
 
        req.status = response.status_code
 
        try:
 
            for chunk in response:
 
                req.write(chunk)
 
        finally:
0 comments (0 inline, 0 general)