Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
edx-platform
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
edx-platform
Commits
c26bb918
Commit
c26bb918
authored
Sep 23, 2015
by
Brian Beggs
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Revert "Upgrade django-pipeline and staticfiles"
parent
4c05fa4f
Show whitespace changes
Inline
Side-by-side
Showing
31 changed files
with
72 additions
and
70 deletions
+72
-70
cms/envs/acceptance.py
+0
-4
cms/envs/bok_choy.py
+1
-1
cms/envs/common.py
+3
-5
cms/envs/devstack.py
+2
-3
cms/envs/devstack_optimized.py
+1
-1
cms/envs/test.py
+1
-0
cms/envs/test_static_optimized.py
+2
-2
common/djangoapps/pipeline_js/views.py
+1
-1
common/djangoapps/pipeline_mako/__init__.py
+2
-2
common/djangoapps/pipeline_mako/templates/static_content.html
+1
-1
common/djangoapps/static_replace/__init__.py
+2
-2
common/djangoapps/terrain/browser.py
+17
-0
docs/en_us/platform_api/source/conf.py
+2
-2
lms/djangoapps/branding/__init__.py
+1
-1
lms/djangoapps/branding/api.py
+1
-1
lms/djangoapps/branding/views.py
+1
-1
lms/djangoapps/verify_student/views.py
+1
-1
lms/envs/acceptance.py
+0
-4
lms/envs/aws.py
+3
-0
lms/envs/bok_choy.py
+1
-4
lms/envs/common.py
+5
-6
lms/envs/devstack.py
+2
-3
lms/envs/devstack_optimized.py
+1
-1
lms/envs/test.py
+1
-5
lms/envs/test_static_optimized.py
+2
-2
lms/templates/main_django.html
+8
-8
lms/templates/wiki/base.html
+2
-2
lms/templates/wiki/preview_inline.html
+3
-3
openedx/core/djangoapps/credit/email_utils.py
+1
-1
openedx/core/djangoapps/user_api/accounts/image_helpers.py
+1
-1
requirements/edx/github.txt
+3
-2
No files found.
cms/envs/acceptance.py
View file @
c26bb918
...
...
@@ -127,7 +127,3 @@ YOUTUBE['TEXT_API']['url'] = "127.0.0.1:{0}/test_transcripts_youtube/".format(YO
# Generate a random UUID so that different runs of acceptance tests don't break each other
import
uuid
SECRET_KEY
=
uuid
.
uuid4
()
.
hex
############################### PIPELINE #######################################
PIPELINE_ENABLED
=
False
cms/envs/bok_choy.py
View file @
c26bb918
...
...
@@ -62,7 +62,7 @@ DEBUG = True
# Note: optimized files for testing are generated with settings from test_static_optimized
STATIC_URL
=
"/static/"
STATICFILES_FINDERS
=
(
'
django.contrib.
staticfiles.finders.FileSystemFinder'
,
'staticfiles.finders.FileSystemFinder'
,
)
STATICFILES_DIRS
=
(
(
TEST_ROOT
/
"staticfiles"
/
"cms"
)
.
abspath
(),
...
...
cms/envs/common.py
View file @
c26bb918
...
...
@@ -456,16 +456,14 @@ EMBARGO_SITE_REDIRECT_URL = None
############################### PIPELINE #######################################
PIPELINE_ENABLED
=
True
# Process static files using RequireJS Optimizer
STATICFILES_STORAGE
=
'openedx.core.lib.django_require.staticstorage.OptimizedCachedRequireJsStorage'
# List of finder classes that know how to find static files in various locations.
# Note: the pipeline finder is included to be able to discover optimized files
STATICFILES_FINDERS
=
[
'
django.contrib.
staticfiles.finders.FileSystemFinder'
,
'
django.contrib.
staticfiles.finders.AppDirectoriesFinder'
,
'staticfiles.finders.FileSystemFinder'
,
'staticfiles.finders.AppDirectoriesFinder'
,
'pipeline.finders.PipelineFinder'
,
]
...
...
@@ -740,7 +738,7 @@ INSTALLED_APPS = (
# For asset pipelining
'edxmako'
,
'pipeline'
,
'
django.contrib.
staticfiles'
,
'staticfiles'
,
'static_replace'
,
'require'
,
...
...
cms/envs/devstack.py
View file @
c26bb918
...
...
@@ -34,13 +34,12 @@ FEATURES['PREVIEW_LMS_BASE'] = "preview." + LMS_BASE
########################### PIPELINE #################################
# Skip packaging and optimization in development
PIPELINE_ENABLED
=
False
STATICFILES_STORAGE
=
'pipeline.storage.NonPackagingPipelineStorage'
# Revert to the default set of finders as we don't want the production pipeline
STATICFILES_FINDERS
=
[
'
django.contrib.
staticfiles.finders.FileSystemFinder'
,
'
django.contrib.
staticfiles.finders.AppDirectoriesFinder'
,
'staticfiles.finders.FileSystemFinder'
,
'staticfiles.finders.AppDirectoriesFinder'
,
]
############################# ADVANCED COMPONENTS #############################
...
...
cms/envs/devstack_optimized.py
View file @
c26bb918
...
...
@@ -36,7 +36,7 @@ REQUIRE_DEBUG = False
# Note: optimized files for testing are generated with settings from test_static_optimized
STATIC_URL
=
"/static/"
STATICFILES_FINDERS
=
(
'
django.contrib.
staticfiles.finders.FileSystemFinder'
,
'staticfiles.finders.FileSystemFinder'
,
)
STATICFILES_DIRS
=
(
(
TEST_ROOT
/
"staticfiles"
/
"cms"
)
.
abspath
(),
...
...
cms/envs/test.py
View file @
c26bb918
...
...
@@ -92,6 +92,7 @@ STATICFILES_DIRS += [
# http://stackoverflow.com/questions/12816941/unit-testing-with-django-pipeline
STATICFILES_STORAGE
=
'pipeline.storage.NonPackagingPipelineStorage'
STATIC_URL
=
"/static/"
PIPELINE_ENABLED
=
False
# Update module store settings per defaults for tests
update_module_store_settings
(
...
...
cms/envs/test_static_optimized.py
View file @
c26bb918
...
...
@@ -28,8 +28,8 @@ STATICFILES_STORAGE = 'openedx.core.lib.django_require.staticstorage.OptimizedCa
# Revert to the default set of finders as we don't want to dynamically pick up files from the pipeline
STATICFILES_FINDERS
=
[
'
django.contrib.
staticfiles.finders.FileSystemFinder'
,
'
django.contrib.
staticfiles.finders.AppDirectoriesFinder'
,
'staticfiles.finders.FileSystemFinder'
,
'staticfiles.finders.AppDirectoriesFinder'
,
]
# Redirect to the test_root folder within the repo
...
...
common/djangoapps/pipeline_js/views.py
View file @
c26bb918
...
...
@@ -4,7 +4,7 @@ Views for returning XModule JS (used by requirejs)
import
json
from
django.conf
import
settings
from
django.http
import
HttpResponse
from
django.contrib.
staticfiles.storage
import
staticfiles_storage
from
staticfiles.storage
import
staticfiles_storage
from
edxmako.shortcuts
import
render_to_response
...
...
common/djangoapps/pipeline_mako/__init__.py
View file @
c26bb918
...
...
@@ -14,7 +14,7 @@ def compressed_css(package_name, raw=False):
package
=
packager
.
package_for
(
'css'
,
package_name
)
if
settings
.
PIPELINE
_ENABLED
:
if
settings
.
PIPELINE
:
return
render_css
(
package
,
package
.
output_filename
,
raw
=
raw
)
else
:
paths
=
packager
.
compile
(
package
.
paths
)
...
...
@@ -48,7 +48,7 @@ def compressed_js(package_name):
package
=
packager
.
package_for
(
'js'
,
package_name
)
if
settings
.
PIPELINE
_ENABLED
:
if
settings
.
PIPELINE
:
return
render_js
(
package
,
package
.
output_filename
)
else
:
paths
=
packager
.
compile
(
package
.
paths
)
...
...
common/djangoapps/pipeline_mako/templates/static_content.html
View file @
c26bb918
<
%!
from
django
.
contrib
.
staticfiles
.
storage
import
staticfiles_storage
from
staticfiles
.
storage
import
staticfiles_storage
from
pipeline_mako
import
compressed_css
,
compressed_js
from
django
.
utils
.
translation
import
get_language_bidi
from
mako
.
exceptions
import
TemplateLookupException
...
...
common/djangoapps/static_replace/__init__.py
View file @
c26bb918
import
logging
import
re
from
django.contrib.
staticfiles.storage
import
staticfiles_storage
from
django.contrib.
staticfiles
import
finders
from
staticfiles.storage
import
staticfiles_storage
from
staticfiles
import
finders
from
django.conf
import
settings
from
xmodule.modulestore.django
import
modulestore
...
...
common/djangoapps/terrain/browser.py
View file @
c26bb918
...
...
@@ -19,6 +19,23 @@ from json import dumps
import
xmodule.modulestore.django
from
xmodule.contentstore.django
import
_CONTENTSTORE
# There is an import issue when using django-staticfiles with lettuce
# Lettuce assumes that we are using django.contrib.staticfiles,
# but the rest of the app assumes we are using django-staticfiles
# (in particular, django-pipeline and our mako implementation)
# To resolve this, we check whether staticfiles is installed,
# then redirect imports for django.contrib.staticfiles
# to use staticfiles.
try
:
import
staticfiles
import
staticfiles.handlers
except
ImportError
:
pass
else
:
import
sys
sys
.
modules
[
'django.contrib.staticfiles'
]
=
staticfiles
sys
.
modules
[
'django.contrib.staticfiles.handlers'
]
=
staticfiles
.
handlers
LOGGER
=
getLogger
(
__name__
)
LOGGER
.
info
(
"Loading the lettuce acceptance testing terrain file..."
)
...
...
docs/en_us/platform_api/source/conf.py
View file @
c26bb918
...
...
@@ -84,9 +84,9 @@ MOCK_MODULES = [
'ratelimitbackend'
,
'analytics'
,
'courseware.courses'
,
'
django.contrib.
staticfiles'
,
'staticfiles'
,
'storage'
,
'
django.contrib.
staticfiles.storage'
,
'staticfiles.storage'
,
'content'
,
'xmodule.contentstore'
,
'xmodule.contentstore.content'
,
...
...
lms/djangoapps/branding/__init__.py
View file @
c26bb918
...
...
@@ -4,7 +4,7 @@ from django.conf import settings
from
opaque_keys.edx.locations
import
SlashSeparatedCourseKey
from
microsite_configuration
import
microsite
from
django.contrib.
staticfiles.storage
import
staticfiles_storage
from
staticfiles.storage
import
staticfiles_storage
def
get_visible_courses
():
...
...
lms/djangoapps/branding/api.py
View file @
c26bb918
...
...
@@ -17,7 +17,7 @@ import urlparse
from
django.conf
import
settings
from
django.utils.translation
import
ugettext
as
_
from
django.contrib.
staticfiles.storage
import
staticfiles_storage
from
staticfiles.storage
import
staticfiles_storage
from
microsite_configuration
import
microsite
from
edxmako.shortcuts
import
marketing_link
...
...
lms/djangoapps/branding/views.py
View file @
c26bb918
...
...
@@ -10,7 +10,7 @@ from django.http import HttpResponse, Http404
from
django.utils
import
translation
from
django.shortcuts
import
redirect
from
django.views.decorators.csrf
import
ensure_csrf_cookie
from
django.contrib.
staticfiles.storage
import
staticfiles_storage
from
staticfiles.storage
import
staticfiles_storage
from
edxmako.shortcuts
import
render_to_response
import
student.views
...
...
lms/djangoapps/verify_student/views.py
View file @
c26bb918
...
...
@@ -57,7 +57,7 @@ from verify_student.image import decode_image_data, InvalidImageData
from
util.json_request
import
JsonResponse
from
util.date_utils
import
get_default_time_display
from
xmodule.modulestore.django
import
modulestore
from
django.contrib.
staticfiles.storage
import
staticfiles_storage
from
staticfiles.storage
import
staticfiles_storage
log
=
logging
.
getLogger
(
__name__
)
...
...
lms/envs/acceptance.py
View file @
c26bb918
...
...
@@ -190,7 +190,3 @@ if FEATURES.get('ENABLE_COURSEWARE_SEARCH') or \
# Generate a random UUID so that different runs of acceptance tests don't break each other
import
uuid
SECRET_KEY
=
uuid
.
uuid4
()
.
hex
############################### PIPELINE #######################################
PIPELINE_ENABLED
=
False
lms/envs/aws.py
View file @
c26bb918
...
...
@@ -131,6 +131,9 @@ if STATIC_URL_BASE:
if
not
STATIC_URL
.
endswith
(
"/"
):
STATIC_URL
+=
"/"
# Enable uglification of JavaScript
PIPELINE_JS_COMPRESSOR
=
'pipeline.compressors.uglifyjs.UglifyJSCompressor'
# DEFAULT_COURSE_ABOUT_IMAGE_URL specifies the default image to show for courses that don't provide one
DEFAULT_COURSE_ABOUT_IMAGE_URL
=
ENV_TOKENS
.
get
(
'DEFAULT_COURSE_ABOUT_IMAGE_URL'
,
DEFAULT_COURSE_ABOUT_IMAGE_URL
)
...
...
lms/envs/bok_choy.py
View file @
c26bb918
...
...
@@ -64,7 +64,7 @@ DEBUG = True
# Note: optimized files for testing are generated with settings from test_static_optimized
STATIC_URL
=
"/static/"
STATICFILES_FINDERS
=
(
'
django.contrib.
staticfiles.finders.FileSystemFinder'
,
'staticfiles.finders.FileSystemFinder'
,
)
STATICFILES_DIRS
=
(
(
TEST_ROOT
/
"staticfiles"
/
"lms"
)
.
abspath
(),
...
...
@@ -74,9 +74,6 @@ DEFAULT_FILE_STORAGE = 'django.core.files.storage.FileSystemStorage'
MEDIA_ROOT
=
TEST_ROOT
/
"uploads"
MEDIA_URL
=
"/static/uploads/"
# Don't use compression during tests
PIPELINE_JS_COMPRESSOR
=
None
################################# CELERY ######################################
CELERY_ALWAYS_EAGER
=
True
...
...
lms/envs/common.py
View file @
c26bb918
...
...
@@ -1210,21 +1210,20 @@ X_FRAME_OPTIONS = 'ALLOW'
############################### PIPELINE #######################################
PIPELINE_ENABLED
=
True
# Process static files using RequireJS Optimizer
STATICFILES_STORAGE
=
'openedx.core.lib.django_require.staticstorage.OptimizedCachedRequireJsStorage'
# List of finder classes that know how to find static files in various locations.
# Note: the pipeline finder is included to be able to discover optimized files
STATICFILES_FINDERS
=
[
'
django.contrib.
staticfiles.finders.FileSystemFinder'
,
'
django.contrib.
staticfiles.finders.AppDirectoriesFinder'
,
'staticfiles.finders.FileSystemFinder'
,
'staticfiles.finders.AppDirectoriesFinder'
,
'pipeline.finders.PipelineFinder'
,
]
# Don't use compression by default
PIPELINE_CSS_COMPRESSOR
=
None
PIPELINE_JS_COMPRESSOR
=
'pipeline.compressors.uglifyjs.UglifyJSCompressor'
PIPELINE_JS_COMPRESSOR
=
None
# Setting that will only affect the edX version of django-pipeline until our changes are merged upstream
PIPELINE_COMPILE_INPLACE
=
True
...
...
@@ -1828,7 +1827,7 @@ INSTALLED_APPS = (
# For asset pipelining
'edxmako'
,
'pipeline'
,
'
django.contrib.
staticfiles'
,
'staticfiles'
,
'static_replace'
,
# Theming
...
...
lms/envs/devstack.py
View file @
c26bb918
...
...
@@ -86,13 +86,12 @@ def should_show_debug_toolbar(_):
########################### PIPELINE #################################
# Skip packaging and optimization in development
PIPELINE_ENABLED
=
False
STATICFILES_STORAGE
=
'pipeline.storage.NonPackagingPipelineStorage'
# Revert to the default set of finders as we don't want the production pipeline
STATICFILES_FINDERS
=
[
'
django.contrib.
staticfiles.finders.FileSystemFinder'
,
'
django.contrib.
staticfiles.finders.AppDirectoriesFinder'
,
'staticfiles.finders.FileSystemFinder'
,
'staticfiles.finders.AppDirectoriesFinder'
,
]
# Disable JavaScript compression in development
...
...
lms/envs/devstack_optimized.py
View file @
c26bb918
...
...
@@ -36,7 +36,7 @@ REQUIRE_DEBUG = False
# Note: optimized files for testing are generated with settings from test_static_optimized
STATIC_URL
=
"/static/"
STATICFILES_FINDERS
=
(
'
django.contrib.
staticfiles.finders.FileSystemFinder'
,
'staticfiles.finders.FileSystemFinder'
,
)
STATICFILES_DIRS
=
(
(
TEST_ROOT
/
"staticfiles"
/
"lms"
)
.
abspath
(),
...
...
lms/envs/test.py
View file @
c26bb918
...
...
@@ -129,8 +129,6 @@ XQUEUE_WAITTIME_BETWEEN_REQUESTS = 5 # seconds
MOCK_STAFF_GRADING
=
True
MOCK_PEER_GRADING
=
True
############################ STATIC FILES #############################
# TODO (cpennington): We need to figure out how envs/test.py can inject things
# into common.py so that we don't have to repeat this sort of thing
STATICFILES_DIRS
=
[
...
...
@@ -148,9 +146,7 @@ STATICFILES_DIRS += [
# find pipelined assets will raise a ValueError.
# http://stackoverflow.com/questions/12816941/unit-testing-with-django-pipeline
STATICFILES_STORAGE
=
'pipeline.storage.NonPackagingPipelineStorage'
# Don't use compression during tests
PIPELINE_JS_COMPRESSOR
=
None
PIPELINE_ENABLED
=
False
update_module_store_settings
(
MODULESTORE
,
...
...
lms/envs/test_static_optimized.py
View file @
c26bb918
...
...
@@ -39,8 +39,8 @@ STATICFILES_STORAGE = 'openedx.core.lib.django_require.staticstorage.OptimizedCa
# Revert to the default set of finders as we don't want to dynamically pick up files from the pipeline
STATICFILES_FINDERS
=
[
'
django.contrib.
staticfiles.finders.FileSystemFinder'
,
'
django.contrib.
staticfiles.finders.AppDirectoriesFinder'
,
'staticfiles.finders.FileSystemFinder'
,
'staticfiles.finders.AppDirectoriesFinder'
,
]
# Redirect to the test_root folder within the repo
...
...
lms/templates/main_django.html
View file @
c26bb918
<!DOCTYPE html>
{% load
pipeline
%}
{% load
compressed
%}
{% load sekizai_tags i18n microsite %}
{% load url from future %}
{% load staticfiles %}
...
...
@@ -10,13 +10,13 @@
<link
rel=
"icon"
type=
"image/x-icon"
href=
"{% favicon_path %}"
/>
{%
stylesheet
'style-vendor' %}
{%
stylesheet
'style-main' %}
{%
stylesheet
'style-course-vendor' %}
{%
stylesheet
'style-course' %}
{%
compressed_css
'style-vendor' %}
{%
compressed_css
'style-main' %}
{%
compressed_css
'style-course-vendor' %}
{%
compressed_css
'style-course' %}
{% block main_vendor_js %}
{%
javascript
'main_vendor' %}
{%
compressed_js
'main_vendor' %}
{% endblock %}
{% block headextra %}{% endblock %}
{% render_block "css" %}
...
...
@@ -50,8 +50,8 @@
</div>
{%
javascript
'application' %}
{%
javascript
'module-js' %}
{%
compressed_js
'application' %}
{%
compressed_js
'module-js' %}
{% render_block "js" %}
</body>
...
...
lms/templates/wiki/base.html
View file @
c26bb918
{% extends "main_django.html" %}
{% load
pipeline
%}{% load sekizai_tags i18n microsite %}{% load url from future %}{% load staticfiles %}
{% load
compressed
%}{% load sekizai_tags i18n microsite %}{% load url from future %}{% load staticfiles %}
{% block title %}
<title>
{% block pagetitle %}{% endblock %} | {% trans "Wiki" %} | {% platform_name %}
</title>
{% endblock %}
...
...
@@ -7,7 +7,7 @@
{% block headextra %}
<script
type=
"text/javascript"
src=
"/i18n.js"
></script>
{%
stylesheet
'course' %}
{%
compressed_css
'course' %}
<script
type=
"text/javascript"
>
function
ajaxError
(){}
...
...
lms/templates/wiki/preview_inline.html
View file @
c26bb918
<!DOCTYPE html>
{% load wiki_tags i18n %}{% load
pipeline
%}
{% load wiki_tags i18n %}{% load
compressed
%}
<html
lang=
"{{LANGUAGE_CODE}}"
>
<head>
{%
stylesheet 'course' %}
{%
javascript
'main_vendor' %}
{%
compressed_css 'course' %}
{%
compressed_js
'main_vendor' %}
</head>
<body
class=
"modal-preview"
>
<section
class=
"container wiki view"
>
...
...
openedx/core/djangoapps/credit/email_utils.py
View file @
c26bb918
...
...
@@ -12,7 +12,7 @@ import HTMLParser
from
django.conf
import
settings
from
django.contrib.auth.models
import
User
from
django.contrib.
staticfiles
import
finders
from
staticfiles
import
finders
from
django.core.cache
import
cache
from
django.core.mail
import
EmailMessage
from
django.core.urlresolvers
import
reverse
...
...
openedx/core/djangoapps/user_api/accounts/image_helpers.py
View file @
c26bb918
...
...
@@ -6,7 +6,7 @@ import hashlib
from
django.conf
import
settings
from
django.core.exceptions
import
ObjectDoesNotExist
from
django.core.files.storage
import
get_storage_class
from
django.contrib.
staticfiles.storage
import
staticfiles_storage
from
staticfiles.storage
import
staticfiles_storage
from
microsite_configuration
import
microsite
...
...
requirements/edx/github.txt
View file @
c26bb918
...
...
@@ -8,7 +8,8 @@
# Python libraries to install directly from github
# Third-party:
-e git+https://github.com/cyberdelia/django-pipeline.git@1.5.3#egg=django-pipeline
git+https://github.com/edx/django-staticfiles.git@031bdeaea85798b8c284e2a09977df3e32d06b5d#egg=django-staticfiles==1.2.1.0003
-e git+https://github.com/edx/django-pipeline.git@88ec8a011e481918fdc9d2682d4017c835acd8be#egg=django-pipeline
-e git+https://github.com/edx/django-wiki.git@cd0b2b31997afccde519fe5b3365e61a9edb143f#egg=django-wiki
-e git+https://github.com/edx/django-oauth2-provider.git@0.2.7-fork-edx-5#egg=django-oauth2-provider
-e git+https://github.com/edx/MongoDBProxy.git@25b99097615bda06bd7cdfe5669ed80dc2a7fed0#egg=mongodb_proxy
...
...
@@ -39,7 +40,7 @@ git+https://github.com/edx/rfc6266.git@v0.0.5-edx#egg=rfc6266==0.0.5-edx
-e git+https://github.com/edx/event-tracking.git@0.2.0#egg=event-tracking
-e git+https://github.com/edx-solutions/django-splash.git@7579d052afcf474ece1239153cffe1c89935bc4f#egg=django-splash
-e git+https://github.com/edx/acid-block.git@e46f9cda8a03e121a00c7e347084d142d22ebfb7#egg=acid-xblock
-e git+https://github.com/edx/edx-ora2.git@
usman/remove-font-import
#egg=edx-ora2
-e git+https://github.com/edx/edx-ora2.git@
release-2015-08-25T16.16
#egg=edx-ora2
-e git+https://github.com/edx/edx-submissions.git@9538ee8a971d04dc1cb05e88f6aa0c36b224455c#egg=edx-submissions
-e git+https://github.com/edx/opaque-keys.git@27dc382ea587483b1e3889a3d19cbd90b9023a06#egg=opaque-keys
git+https://github.com/edx/ease.git@release-2015-07-14#egg=ease==0.1.3
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment