Remove use of python3-future
This commit is contained in:
		
							parent
							
								
									6c83c6289f
								
							
						
					
					
						commit
						60010999d2
					
				
					 8 changed files with 37 additions and 26 deletions
				
			
		
							
								
								
									
										42
									
								
								README.md
									
										
									
									
									
								
							
							
						
						
									
										42
									
								
								README.md
									
										
									
									
									
								
							|  | @ -1,13 +1,18 @@ | ||||||
|  | Software Freedom Conservancy website | ||||||
|  | ==================================== | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| Contributing | Contributing | ||||||
| ============ | ------------ | ||||||
| 
 | 
 | ||||||
| The canonical location for this repository is [on Conservancy’s | The canonical location for this repository is [on Conservancy’s | ||||||
| Kallithea instance](http://k.sfconservancy.org/website).  Copies of | Kallithea instance](https://k.sfconservancy.org/website).  Copies of | ||||||
| this repository elsewhere, such as Github, are for backup purposes | this repository elsewhere, such as Github, are for backup purposes | ||||||
| only.. | only.. | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
| License | License | ||||||
| ======= | ------- | ||||||
| 
 | 
 | ||||||
| The software included herein, such as the Python source files, are generally | The software included herein, such as the Python source files, are generally | ||||||
| licensed [AGPLv3](AGPLv3)-or-later.  The Javascript is a hodgepodge of | licensed [AGPLv3](AGPLv3)-or-later.  The Javascript is a hodgepodge of | ||||||
|  | @ -17,22 +22,37 @@ the notices at the top of each Javascript file for licensing details. | ||||||
| The content and text (such as the HTML files) is currently | The content and text (such as the HTML files) is currently | ||||||
| [CC-BY-SA-3.0](CC-By-SA-3.0). | [CC-BY-SA-3.0](CC-By-SA-3.0). | ||||||
| 
 | 
 | ||||||
| Server Configuration |  | ||||||
| ==================== |  | ||||||
| 
 | 
 | ||||||
| conservancy's webserver runs on a machine called | Server configuration | ||||||
| dogwood.sfconservancy.org, which is a standard Debian installation. | -------------------- | ||||||
|  | 
 | ||||||
|  | conservancy's webserver runs on a machine called aspen.sfconservancy.org, which | ||||||
|  | is a standard Debian installation. | ||||||
| 
 | 
 | ||||||
| The following packages are installed to make Django and Apache work on a | The following packages are installed to make Django and Apache work on a | ||||||
| squeeze install: | squeeze install: | ||||||
| 
 | 
 | ||||||
|     $ aptitude install python-django apache2 sqlite3 python2.5-sqlite libapache2-mod-python |     $ aptitude install python-django apache2 sqlite3 python3-sqlite libapache2-mod-wsgi-py3 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | Django setup | ||||||
| Django Setup | ------------ | ||||||
| ============ |  | ||||||
| 
 | 
 | ||||||
| 0. Make sure the Python module 'djangopw', with the global variable | 0. Make sure the Python module 'djangopw', with the global variable | ||||||
|    'djangoadmin_password' is somewhere importable in the default |    'djangoadmin_password' is somewhere importable in the default | ||||||
|    PYTHON_PATH. |    PYTHON_PATH. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Local development | ||||||
|  | --------- | ||||||
|  | 
 | ||||||
|  |     python3 -m pip install -r requirements.txt | ||||||
|  |     cd www | ||||||
|  |     python manage.py runserver | ||||||
|  | 
 | ||||||
|  | Deploying | ||||||
|  | --------- | ||||||
|  | 
 | ||||||
|  | Changes pushed to the https://k.sfconservancy.org/website repository are | ||||||
|  | automatically deployed to the production website by the `conservancy-www-update` | ||||||
|  | SystemD timer. See `systemd/conservancy-www-update.timer` for details. | ||||||
|  |  | ||||||
|  | @ -2,6 +2,5 @@ beautifulsoup4==4.9.3 | ||||||
| Django==1.11.29 | Django==1.11.29 | ||||||
| soupsieve==1.9.6 | soupsieve==1.9.6 | ||||||
| html5lib==0.999999999 | html5lib==0.999999999 | ||||||
| future |  | ||||||
| 
 | 
 | ||||||
| django_countries==5.5  # Supports both Python 2 and 3. | django_countries==5.5  # Supports both Python 2 and 3. | ||||||
|  |  | ||||||
|  | @ -1,14 +1,13 @@ | ||||||
| from past.builtins import basestring |  | ||||||
| from builtins import object | from builtins import object | ||||||
| import hashlib | import hashlib | ||||||
| 
 | 
 | ||||||
| from django.conf import settings | from django.conf import settings | ||||||
| from django.template import RequestContext |  | ||||||
| 
 | 
 | ||||||
| # This is backwards compatibilty support for a custom function we wrote | # This is backwards compatibilty support for a custom function we wrote | ||||||
| # ourselves that is no longer necessary in modern Django. | # ourselves that is no longer necessary in modern Django. | ||||||
| from django.shortcuts import render as render_template_with_context | from django.shortcuts import render as render_template_with_context | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
| class ParameterValidator(object): | class ParameterValidator(object): | ||||||
|     def __init__(self, given_hash_or_params, params_hash_key=None): |     def __init__(self, given_hash_or_params, params_hash_key=None): | ||||||
|         if params_hash_key is None: |         if params_hash_key is None: | ||||||
|  | @ -17,7 +16,7 @@ class ParameterValidator(object): | ||||||
|             self.given_hash = given_hash_or_params.get(params_hash_key) |             self.given_hash = given_hash_or_params.get(params_hash_key) | ||||||
|         seed = getattr(settings, 'CONSERVANCY_SECRET_KEY', '').encode('utf-8') |         seed = getattr(settings, 'CONSERVANCY_SECRET_KEY', '').encode('utf-8') | ||||||
|         self.hasher = hashlib.sha256(seed) |         self.hasher = hashlib.sha256(seed) | ||||||
|         if isinstance(self.given_hash, basestring): |         if isinstance(self.given_hash, str): | ||||||
|             self.hash_type = type(self.given_hash) |             self.hash_type = type(self.given_hash) | ||||||
|         else: |         else: | ||||||
|             self.hash_type = type(self.hasher.hexdigest()) |             self.hash_type = type(self.hasher.hexdigest()) | ||||||
|  |  | ||||||
|  | @ -1,5 +1,3 @@ | ||||||
| from future import standard_library |  | ||||||
| standard_library.install_aliases() |  | ||||||
| from builtins import object | from builtins import object | ||||||
| from django.db import models | from django.db import models | ||||||
| from django.conf import settings | from django.conf import settings | ||||||
|  |  | ||||||
|  | @ -1,10 +1,10 @@ | ||||||
| from __future__ import division | from __future__ import division | ||||||
| from past.utils import old_div |  | ||||||
| from builtins import object | from builtins import object | ||||||
| import random | import random | ||||||
| 
 | 
 | ||||||
| from django.db import models | from django.db import models | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
| class FundraisingGoal(models.Model): | class FundraisingGoal(models.Model): | ||||||
|     """Conservancy fundraiser Goal""" |     """Conservancy fundraiser Goal""" | ||||||
| 
 | 
 | ||||||
|  | @ -19,8 +19,8 @@ class FundraisingGoal(models.Model): | ||||||
|         return self.fundraiser_code_name |         return self.fundraiser_code_name | ||||||
| 
 | 
 | ||||||
|     def percentage_there(self): |     def percentage_there(self): | ||||||
|         return (old_div(self.fundraiser_so_far_amount, self.fundraiser_goal_amount) ) * 100 |         return self.fundraiser_so_far_amount / self.fundraiser_goal_amount * 100 | ||||||
|      | 
 | ||||||
|     class Meta(object): |     class Meta(object): | ||||||
|         ordering = ('fundraiser_code_name',) |         ordering = ('fundraiser_code_name',) | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,5 +1,3 @@ | ||||||
| from future import standard_library |  | ||||||
| standard_library.install_aliases() |  | ||||||
| from builtins import object | from builtins import object | ||||||
| from django.db import models | from django.db import models | ||||||
| from django.conf import settings | from django.conf import settings | ||||||
|  |  | ||||||
|  | @ -1,5 +1,3 @@ | ||||||
| from future import standard_library |  | ||||||
| standard_library.install_aliases() |  | ||||||
| from builtins import zip | from builtins import zip | ||||||
| import urllib.parse | import urllib.parse | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,5 +1,4 @@ | ||||||
| from builtins import object | from builtins import object | ||||||
| from future.utils import raise_ |  | ||||||
| from django import http | from django import http | ||||||
| from django.conf import settings | from django.conf import settings | ||||||
| from django.utils.cache import patch_response_headers | from django.utils.cache import patch_response_headers | ||||||
|  | @ -29,7 +28,7 @@ class ForceCanonicalHostnameMiddleware(object): | ||||||
|         if settings.APPEND_SLASH and (old_url[1][-1] != '/') and ('.' not in old_url[1].split('/')[-1]): |         if settings.APPEND_SLASH and (old_url[1][-1] != '/') and ('.' not in old_url[1].split('/')[-1]): | ||||||
|             new_url[1] = new_url[1] + '/' |             new_url[1] = new_url[1] + '/' | ||||||
|             if settings.DEBUG and request.method == 'POST': |             if settings.DEBUG and request.method == 'POST': | ||||||
|                 raise_(RuntimeError, "You called this URL via POST, but the URL doesn't end in a slash and you have APPEND_SLASH set. Django can't redirect to the slash URL while maintaining POST data. Change your form to point to %s%s (note the trailing slash), or set APPEND_SLASH=False in your Django settings." % (new_url[0], new_url[1])) |                 raise(RuntimeError, "You called this URL via POST, but the URL doesn't end in a slash and you have APPEND_SLASH set. Django can't redirect to the slash URL while maintaining POST data. Change your form to point to %s%s (note the trailing slash), or set APPEND_SLASH=False in your Django settings." % (new_url[0], new_url[1])) | ||||||
|         # Strip trailing index.html |         # Strip trailing index.html | ||||||
|         if new_url[1].endswith('/index.html'): |         if new_url[1].endswith('/index.html'): | ||||||
|             new_url[1] = new_url[1][:new_url[1].rfind('index.html')] |             new_url[1] = new_url[1][:new_url[1].rfind('index.html')] | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue