Files
reddit/r2/setup.py
KeyserSosa bf9f43ccac Messaging/commenting
===
 - add confidence sorting to comments
   * common values are precomputed for speedier response
   * best is made the default sort on comment pages
 - messages will now be delivered once one is moderator/contributor/banned
 - UI updates to messaging page, including added show parent functionality to messages
 - Remove the rate-limit on comments on your own self-posts
 - Give users some leeway in editing their comments: don't show an edit star if the edit is within the first few minutes of a comment's lifetime
 - Office Assistant will help users when they write to admins

Backend
===
 - Replace the postgres-based query_queue with an AMQP based one
   * Set up amqp queues for async tasks such as search updates and the scrapers
   * service monitor updates, adding queue-tracking support
 - Allow find_recent_broken_things to specify both from_time and to_time
 - add a ini file parameter to disallow db writes (to create read-only reddit instances for crawlers)

New features
===
 - self-serve advertisement:
   * complete overhaul of sponsored link code
   * functions for talking with authorize.net
   * added pay domain and https support
   * added ability to share traffic from sponsored links
   * auto-reject promotions that are too old and unpaid for
 - awards
 - allow widget to have its links to have a target (in case it is iframed)
 - automatic_reddits:
   * Don't show automatic_reddits in the horizontal topbar
 - Listing numbers are always in order with no gaps
 - add support for sprites for common (r2.lib.contrib.nymph)

Admin
===
 - added a takedown page for dealing with DMCA requests properly
   * status code 404 on takedown pages
   * JSON returns same string as in the explanation text
   * nofollow on markdown in explanation
   * title and image optional
 - Added /c/(comment_id) for admins
 - updates to JS to rate-limit voting, commenting, and anything else that could be just as easily done by a script-kiddie to cheat.
 - make ad frame dynamic and add tracking pixel
 - add the ability to add a sponsored banner to the rightbox of a reddit
 - add the ability to show custom css on cnamed and/or non-cnamed versions of a reddit
 - allow us to ignore reports from report-spammers.

Bugfixes
===
 - Fix sorting of duplicate links (patch by Chromakode)
 - fix traffic bug on main traffic page when it is the first of the month.
 - toolbar redirects to comments page on self posts rather than generating the frame
 - half-assed unicode handling in menus giving us bugs again.  Switched to the whole-ass approach
 - added Thing._byID36
 - Support /help/foo/bar
2009-12-01 13:42:06 -08:00

124 lines
4.2 KiB
Python

#!/usr/bin/env python
# The contents of this file are subject to the Common Public Attribution
# License Version 1.0. (the "License"); you may not use this file except in
# compliance with the License. You may obtain a copy of the License at
# http://code.reddit.com/LICENSE. The License is based on the Mozilla Public
# License Version 1.1, but Sections 14 and 15 have been added to cover use of
# software over a computer network and provide for limited attribution for the
# Original Developer. In addition, Exhibit A has been modified to be consistent
# with Exhibit B.
#
# Software distributed under the License is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
# the specific language governing rights and limitations under the License.
#
# The Original Code is Reddit.
#
# The Original Developer is the Initial Developer. The Initial Developer of the
# Original Code is CondeNet, Inc.
#
# All portions of the code written by CondeNet are Copyright (c) 2006-2009
# CondeNet, Inc. All Rights Reserved.
################################################################################
from ez_setup import use_setuptools
use_setuptools()
from setuptools import find_packages#, setup
try:
from babel.messages import frontend as babel
except:
class null(): pass
babel = null()
babel.compile_catalog = None
babel.extract_messages = None
babel.init_catalog = None
babel.update_catalog = None
from distutils.core import setup, Extension
from setuptools.command.easy_install import main as easy_install
# check the PIL is installed; since its package name isn't the same as
# the distribution name, setuptools can't manage it as a dependency
try:
import Image
except ImportError:
print "Installing the Python Imaging Library"
easy_install(["http://effbot.org/downloads/Imaging-1.1.6.tar.gz"])
# same with the captcha library
try:
import Captcha
except ImportError:
print "Installing the PyCaptcha Module"
easy_install(["http://svn.navi.cx/misc/trunk/pycaptcha"])
# ditto for pylons
try:
import pylons
vers = pylons.__version__
assert vers.startswith('0.9.6.') or vers == '0.9.6', \
("reddit is only compatible with pylons 0.9.6, not '%s'" % vers)
except ImportError:
print "Installing Pylons 0.9.6.2 from the cheese shop"
easy_install(["http://pypi.python.org/packages/source/P/Pylons/Pylons-0.9.6.2.tar.gz"])
#install the devel version of py-amqplib until the cheesehop version is updated
try:
import amqplib
except ImportError:
print "Installing the py-amqplib"
easy_install(["http://addons.reddit.com/amqp/py-amqplib-0.6.1-devel.tgz"])
filtermod = Extension('Cfilters',
sources = ['r2/lib/c/filters.c'])
setup(
name='r2',
version="",
#description="",
#author="",
#author_email="",
#url="",
install_requires=["Routes<=1.8",
"Pylons<=0.9.6.2",
"pytz",
"pycrypto",
"Babel>=0.9.1",
"flup",
"simplejson",
"SQLAlchemy==0.5.3",
"BeautifulSoup == 3.0.7a", # last version to use the good parser
"cssutils==0.9.5.1",
"chardet",
"psycopg2",
"py_interface",
"pycountry"],
packages=find_packages(),
include_package_data=True,
test_suite = 'nose.collector',
package_data={'r2': ['i18n/*/LC_MESSAGES/*.mo']},
cmdclass = {'compile_catalog': babel.compile_catalog,
'extract_messages': babel.extract_messages,
'init_catalog': babel.init_catalog,
'update_catalog': babel.update_catalog,
},
ext_modules = [filtermod],
entry_points="""
[paste.app_factory]
main=r2:make_app
[paste.app_install]
main=pylons.util:PylonsInstaller
[paste.paster_command]
run = r2.commands:RunCommand
shell = pylons.commands:ShellCommand
controller = pylons.commands:ControllerCommand
restcontroller = pylons.commands:RestControllerCommand
""",
)