{ "info": { "author": "George Karakostas", "author_email": "info@9-dev.com", "bugtrack_url": null, "classifiers": [ "Environment :: Web Environment", "Framework :: Django", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Topic :: Internet :: WWW/HTTP", "Topic :: Internet :: WWW/HTTP :: Dynamic Content" ], "description": "=======\nNineCMS\n=======\n\nNine CMS is a Django app to manage content. Users can create content and publish it to paths.\n\n.. image:: https://img.shields.io/travis/Wtower/django-ninecms/devel.svg\n :target: https://travis-ci.org/Wtower/django-ninecms\n\n.. image:: https://img.shields.io/coveralls/Wtower/django-ninecms/devel.svg\n :target: https://coveralls.io/github/Wtower/django-ninecms\n\n.. image:: https://img.shields.io/pypi/v/django-ninecms.svg\n :target: https://pypi.python.org/pypi/django-ninecms\n :alt: Latest PyPI version\n\n.. image:: https://img.shields.io/pypi/dm/django-ninecms.svg\n :target: https://pypi.python.org/pypi/django-ninecms\n :alt: Number of PyPI downloads per month\n\nAdmin screenshot:\n\n.. image:: https://raw.githubusercontent.com/Wtower/django-ninecms/master/docs/screenshots/index1.png\n\nDetailed documentation soon to be published.\n\nObjectives\n----------\n\nIt is the author's opinion that heavyweight content management systems are not so important to Django,\nas much as established CMS are important to other languages such as PHP.\nDjango can be very easily used to build exotic web applications in very short time,\ntherefore too often Django does not need another heavyweight CMS.\nNine CMS is intended to provide a common denominator for simple content when building a Django app or for small sites.\n\nTo sum up:\n\n- Lightweight\n- Easy to start up AND customize a project\n- Inspired by Drupal node model architecture\n- Obviously uses the Django web framework on Python\n- Quality: hate bugs; also test coverage is 100%\n\nFeatures\n--------\n\n- Node modeling inspired by Drupal nodes featuring:\n\n - Dynamic content (obviously) rendered as nodes\n - Revisioning system\n - Internationalisation (i18n) right from the beginning\n - URL aliases that may be automatically generated based on provided patterns\n - Page types that may be used in different templates or views (below)\n - Per page type permissions\n - Sanitize HTML\n\n- Content blocks\n- Menus\n- Media management\n\n - Images, videos, files\n - Image styles\n\n- Views (requires decoupled signals providing context)\n- Taxonomy (terms)\n- Contact form\n- Admin interface with dashboard\n- Utilities\n\n - Character transliteration\n - Custom tags\n - Basic search functionality\n\n- Bootstrap\n\nDependencies\n------------\n\nThe following are needed:\n\n- Python (3.4+)\n- Django (1.7+, 1.9 recommended): Web framework\n- django-guardian (1.4+): provide per-page-type permissions\n- django-mptt (0.8+): provide trees for tags and menus\n- bleach (1.4+): bleach-sanitize user HTML\n- Pillow (3+): create different sizes for user images\n- pytz (2015+): handle user time zones\n\nThe following packages are optional/recommended:\n\n- django-admin-bootstrapped (2.5+): provide a nicer admin interface experience\n- django-admin-bootstrapped-plus: improve the admin interface to use in 9cms\n- django-bootstrap3: improve the admin fields\n- django-debug-toolbar: for obvious reasons\n- mysqlclient: or any other db connector\n- newrelic: or any other monitoring tool\n- python3-memcached: for memory caching\n\nDjango 1.9 notices:\n\n- Getting ``RemovedInDjango110Warning: render() must be called with a dict, not a Context.`` to a couple of places.\n Many other apps get similar warnings. Looking for solution without offending Django <1.9.\n\nNew project guide\n-----------------\n\nThis is a full guide to create a new project. *Soon a Quick Guide will be added*.\n\nThere is also a project that can be used as an\n`Django 9cms web site boilerplate `_.\n\n1. Create a new project\n\n Create a new project, if not existing, and optionally (as a reminder):\n\n - Create new virtualenv\n - Initialize git and initial commit\n\n2. Dependencies\n\n - Add the following to the ``requirements.txt`` file::\n\n Django~=1.9.0\n django-ninecms>=0.5.4\n\n - And optionally::\n\n coverage~=4.0.3\n django-admin-bootstrapped~=2.5.6\n django-admin-bootstrapped-plus>=0.1.1\n django-bootstrap3~=7.0.1\n django-debug-toolbar~=1.4.0\n mysqlclient~=1.3.7\n newrelic~=2.60.0.46\n python3-memcached~=1.51\n sqlparse~=0.1.18\n\n - Then run::\n\n $ pip install -r requirements.txt\n\n - Download CKEditor (optionally) for rich text fields in admin:\n\n - Download from http://ckeditor.com/builder\n - Extract files under ``static/ninecms/ckeditor`` so that ``ckeditor.js`` is in this directory\n - A recommended ``build-config.js`` file is bundled in the above directory\n - Note: the django-ckeditor package requires a similar action too, so it is not used.\n\n3. Settings\n\n All relevant settings sample also exist in ninecms/settings.py as comment.\n From the code samples below remove any settings refer to optional packages that are not installed as above.\n\n - ``INSTALLED_APPS`` setting::\n\n INSTALLED_APPS = (\n 'admin_bootstrapped_plus',\n 'django_admin_bootstrapped',\n 'django.contrib.admin',\n 'django.contrib.auth',\n 'django.contrib.contenttypes',\n 'django.contrib.sessions',\n 'django.contrib.messages',\n 'django.contrib.staticfiles',\n 'mptt',\n 'debug_toolbar',\n 'guardian',\n 'ninecms',\n # ...\n )\n\n - Middleware::\n\n MIDDLEWARE_CLASSES = (\n 'django.middleware.cache.UpdateCacheMiddleware',\n 'django.contrib.sessions.middleware.SessionMiddleware',\n 'django.middleware.locale.LocaleMiddleware',\n 'django.middleware.common.CommonMiddleware',\n 'django.middleware.cache.FetchFromCacheMiddleware',\n 'django.middleware.csrf.CsrfViewMiddleware',\n 'django.contrib.auth.middleware.AuthenticationMiddleware',\n 'django.contrib.auth.middleware.SessionAuthenticationMiddleware',\n 'django.contrib.messages.middleware.MessageMiddleware',\n 'django.middleware.clickjacking.XFrameOptionsMiddleware',\n 'django.middleware.security.SecurityMiddleware',\n )\n\n - Templates\n\n Add ``'debug': True`` only if planning to have a separate live settings file for your project::\n\n TEMPLATES = [\n {\n 'BACKEND': 'django.template.backends.django.DjangoTemplates',\n 'DIRS': [\n os.path.join(BASE_DIR, 'templates'),\n ],\n 'APP_DIRS': True,\n 'OPTIONS': {\n 'context_processors': [\n 'django.template.context_processors.debug',\n 'django.template.context_processors.request',\n 'django.contrib.auth.context_processors.auth',\n 'django.contrib.messages.context_processors.messages',\n ],\n 'debug': True,\n },\n },\n ]\n\n - Languages::\n\n LANGUAGE_CODE = 'en' # or whatever\n LANGUAGES = (\n ('en', 'English'),\n # ('el', 'Greek'),\n # ...\n )\n TIME_ZONE = 'Europe/Athens' # or whatever\n USE_I18N = True\n USE_L10N = True\n USE_TZ = True\n\n - Static and Media::\n\n STATICFILES_DIRS = (\n os.path.join(BASE_DIR, \"static\"),\n )\n MEDIA_ROOT = os.path.join(BASE_DIR, 'media')\n MEDIA_URL = '/media/'\n\n - Error reporting::\n\n ADMINS = (\n (\"Webmaster\", \"web@9-dev.com\"),\n )\n MANAGERS = (\n (\"Webmaster\", \"web@9-dev.com\"),\n )\n EMAIL_HOST = 'mail.9-dev.com'\n EMAIL_HOST_USER = 'do-not-reply@9-dev.com'\n EMAIL_HOST_PASSWORD = ''\n EMAIL_USE_SSL = True\n EMAIL_PORT = 465\n EMAIL_SUBJECT_PREFIX = '[9cms] '\n SERVER_EMAIL = 'do-not-reply@9-dev.com'\n DEFAULT_FROM_EMAIL = 'do-not-reply@9-dev.com'\n\n - Security:\n\n Replace ``myapp``::\n\n LOGIN_URL = '/admin/login/'\n SECURE_CONTENT_TYPE_NOSNIFF = True\n SECURE_BROWSER_XSS_FILTER = True\n X_FRAME_OPTIONS = 'DENY'\n CSRF_COOKIE_HTTPONLY = True\n SESSION_COOKIE_NAME = 'myapp_sessionid'\n\n - Caches::\n\n CACHES = {\n 'default': {\n 'BACKEND': 'django.core.cache.backends.dummy.DummyCache',\n }\n }\n CACHE_MIDDLEWARE_SECONDS = 3 * 60 * 60 # or whatever\n\n - Guardian::\n\n AUTHENTICATION_BACKENDS = (\n 'django.contrib.auth.backends.ModelBackend', # this is default\n 'guardian.backends.ObjectPermissionBackend',\n )\n ANONYMOUS_USER_ID = -1\n\n - Django admin::\n\n DAB_FIELD_RENDERER = 'django_admin_bootstrapped.renderers.BootstrapFieldRenderer'\n\n from django.contrib import messages\n MESSAGE_TAGS = {\n messages.SUCCESS: 'alert-success success',\n messages.WARNING: 'alert-warning warning',\n messages.ERROR: 'alert-danger error'\n }\n\n - CMS settings::\n\n from ninecms.settings import *\n SITE_NAME = \"...\"\n SITE_AUTHOR = \"...\"\n SITE_KEYWORDS = \"...\"\n I18N_URLS = True # False\n\n - Optional settings for testing (separate file eg ``settings_test.py``)::\n\n from myapp.settings import *\n DEBUG = True\n PASSWORD_HASHERS = (\n 'django.contrib.auth.hashers.MD5PasswordHasher',\n )\n TEMPLATES = [\n {\n 'BACKEND': 'django.template.backends.django.DjangoTemplates',\n 'DIRS': [ # disable overriden templates\n ],\n 'APP_DIRS': True,\n 'OPTIONS': {\n 'context_processors': [\n 'django.template.context_processors.debug',\n 'django.template.context_processors.request',\n 'django.contrib.auth.context_processors.auth',\n 'django.contrib.messages.context_processors.messages',\n ],\n 'debug': True,\n },\n },\n ]\n DATABASES = {\n 'default': {\n 'ENGINE': 'django.db.backends.sqlite3',\n 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),\n }\n }\n LANGUAGES = ( # at least 2\n ('el', 'Greek'),\n ('en', 'English'),\n )\n IMAGE_STYLES.update({\n 'thumbnail-upscale': {\n 'type': 'thumbnail-upscale',\n 'size': (150, 150)\n },\n })\n\n - Optional settings for live (separate file eg ``settings_live.py``)::\n\n from myapp.settings import *\n DEBUG = False\n ALLOWED_HOSTS = [\n # ...\n ]\n TEMPLATES = [\n {\n 'BACKEND': 'django.template.backends.django.DjangoTemplates',\n 'DIRS': [\n os.path.join(BASE_DIR, 'templates'),\n ],\n 'APP_DIRS': True,\n 'OPTIONS': {\n 'context_processors': [\n 'django.template.context_processors.debug',\n 'django.template.context_processors.request',\n 'django.contrib.auth.context_processors.auth',\n 'django.contrib.messages.context_processors.messages',\n ],\n },\n },\n ]\n # STATIC_ROOT = ...\n STATICFILES_DIRS = []\n CACHES = {\n 'default': {\n 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',\n 'LOCATION': '127.0.0.1:11211',\n 'TIMEOUT': 3 * 60 * 60, # or whatever\n 'KEY_PREFIX': 'myapp_',\n 'VERSION': 1,\n }\n }\n\n4. Create empty folders in project root:\n\n - ``/static/``\n - ``/media/``\n\n - *Optionally* copy the images from\n https://github.com/Wtower/django-ninecms-starter/tree/master/media/ninecms/basic/image to\n ``/media/ninecms/basic/image`` if you intend to run ninecms tests (see below).\n\n5. Run ``./manage.py migrate`` to create the models.\n\n6. Url configuration\n\n - Include the URL configurations for admin, i18n and 9cms\n - Make sure 9cms URL conf is the last line so the dynamic router catches all URLs.\n - Include ``robots.txt``\n - Include static files for local server\n\n URL Example::\n\n from django.conf import settings\n from django.conf.urls import include, url\n from django.conf.urls.i18n import i18n_patterns\n from django.conf.urls.static import static\n from django.contrib import admin\n from django.views.generic import TemplateView\n\n urlpatterns = [\n url(r'^admin/', include(admin.site.urls)),\n url(r'^i18n/', include('django.conf.urls.i18n')),\n url(r'^robots\\.txt/$', TemplateView.as_view(template_name='ninecms/robots.txt', content_type='text/plain')),\n ]\n\n # static files (images, css, javascript, etc.)\n if settings.DEBUG:\n urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) # pragma: no cover\n\n # Last: all remaining pass to CMS\n if settings.I18N_URLS: # pragma: nocover\n urlpatterns += i18n_patterns(\n url(r'^', include('ninecms.urls', namespace='ninecms')),\n )\n else: # pragma: nocover\n urlpatterns += [\n url(r'^', include('ninecms.urls', namespace='ninecms')),\n ]\n\n7. Start the development server and visit http://127.0.0.1:8000/admin/\n\n You'll need the Admin app enabled and a superuser with ``python manage.py createsuperuser``.\n\n8. Visit http://127.0.0.1:8000/ to view content.\n\n9. Optionally run test with ``python manage.py test --settings=myapp.settings_test ninecms``.\n\n>From here on common tasks include:\n\n- Theming (see below)\n- Add page types\n- Add content\n- Add menus\n- Add blocks\n\nTheming\n-------\n\nTheming is easy and straightforward. Besides from developing a custom theme, it is easy to use any ready-made\nHTML theme from the myriads available on the web.\n\n*(Changes in v0.6.0)*\n\nThere is a ``base.html`` which gets extended by an ``index.html``. The base declares the doc type (HTML5),\nloads scripts, all defined in blocks.\n\nThe index file is the one that most probably needs to be overridden. You can check the base to see where each of\nthe following blocks appears. These are defined by order of appearance:\n\n- ``meta``: define any custom keywords in ````.\n Some defaults are generated based on settings and the node (page) presented.\n- ``head``: define any additional elements at the bottom of the ````.\n Here add favicon and additional stylesheets / head scripts.\n- ``body_attrs``: define any additional attributes to be appended to ````.\n Default is ``class`` only.\n- ``body_top``: a small link to the top of the page. This is used by a small javascript to display by default\n a small fixed top link at the right bottom of the page, after having scrolled down. If it is not overridden,\n then you might need to add a ``static/ninecms/images/toplink.png`` background or custom css for ``#toplink``.\n- ``body_loader``: a convenient page loader (splash screen) is defined.\n Override and leave blank if not suitable.\n- ``content``: this is the main content block that needs to be overridden in index.\n- ``body_bottom``: a small non-visible link at the bottom of the page.\n- ``body_scripts``: define any additional content at the bottom of the ````.\n Here add additional scripts to be loaded in the end of the document.\n\nThe index file is the default template that is used, but it can be extended to be used in page types\n(see theme suggestions below).\n\nThe templates in the ``ninecms/templates`` folder are examples of how to render specific contexts of blocks\nand can be used either with ``{% include %}`` or can be copied into the custom templates directly.\n\nTheme suggestions\n-----------------\n\nEach page type can have its own template. Ninecms chooses template for the page type\nbased in the template filename, in the following order:\n\n- ``page_[page_type.name]``\n- ``[page_type.name]``\n- ``index.html``\n\nwhere ``[page_type.name]`` is the machine name of the page type,\neg. if the page type name is 'Basic Page' then this will be ``basic_page``.\n\nIt is good to extend the template from index and use Django blocks at will.\n\nPage types\n----------\n\nPage types are central to the organisation of a CMS content. In NineCMS, apart from logically organising content\nto relevant page types, which can be done also with taxonomy terms, each page type can have a different page layout,\nwith different blocks.\n\nPage types do not feature custom fields and thus cannot be used as the separation of entity-like models,\nas eg. in Drupal. There is no intention to add such a feature as Django models can be very easily be added\nin code and extend the CMS functionality.\n\nURL aliases\n-----------\n\nEach content type can have a pre-specified default url alias for the nodes under it. If a node of that page type\ndoes not have a url alias specified, the default will be used.\n\nThe following replacement tokens can be used:\n\n- ``[node:id]``: The id of the node.\n- ``[node:title]``: The transliterated slugified title of the node.\n- ``[node:created:format]``: The date of node creation.\n- ``[node:changed:format]``: The date of last node update.\n- Format can be any `PHP date format`_ specifier in form\n ``(specifier)(separator)(specifier)(separator)(specifier)``, eg ``d-m-Y``.\n\n.. _PHP date format: http://www.php.net/date\n\nBlock types\n-----------\n\nThe following block types are supported:\n\n- ``static``: Static content provided by linking to a node.\n Unlike from Drupal concept of block that defines a text fields anyway.\n- ``menu``: Render a menu or submenu by linking to a menu item.\n- ``signal``: Call a site-specific custom view render (see Views below).\n- ``language``: Render a language switch menu.\n- ``user-menu``: Render a user menu with login/logout or register links.\n- ``login``: Render a login form.\n- ``search``: Render a search form.\n- ``search-results``: Render search results. Simple search functionality. For advanced search a proper package\n needs to be used. For a search results page add a new page type and implement the block. Case insensitive\n search cannot be done in Sqlite (see also Important points below).\n- ``contact``: Render a contact form.\n\nViews\n-----\n\nAdd a new Django app in your project with ``signals.py`` to listen to the corresponding signal that is declared with\na new content block in admin.\nLook at the ``ninecms/signals.py`` file on how to code the signals.\n\nPermissions summary\n-------------------\n\nThis is a summary of all applicable permissions:\n\n- Django admin:\n\n - User: is staff (access to admin)\n - User: is superuser (with caution)\n\n - unconditional access everywhere\n - additional fields for nodes\n - dashboard\n - utilities on dashboard\n\n - User: add, change, delete\n - Group: add, change, delete\n - Permission: add, change, delete\n\n- Guardian:\n\n - User-object permissions: add, change, delete\n - Group-object permissions: add, change, delete\n\n- 9cms:\n\n - Per model permissions: add, change, delete\n - Node: can use full HTML\n - Node: view unpublished\n - Per content type group permissions (provided from Guardian, accessible through 'page types' change-list admin page)\n\nExample of configuration of an ``editor`` group perms:\n\n- Node: view unpublished\n- Node: add\n- Node: change\n- Image: add, change, delete\n- Page type specific permissions: add, change\n\nFront-end libraries\n-------------------\n\n*(Changes in v0.6.0)*\n\nFront-end package management is an important aspect of any site.\nIn NineCMS, Libraries had been a minor convenience feature to integrate front-end packages.\nIt has been removed because there are already several existing possibilities than can be easily used.\n\nAn extension to NineCMS will soon be available for this matter. Alternatively, ``django-bower`` is good.\n\nImage styles\n------------\n\nNineCMS allows to display images using specific styles. Some predefined styles can be found in ``ninecms/settings.py``.\nThese can be extended or replaced using the ``IMAGE_STYLES`` in the project's ``settings.py``.\nThis is a dictionary where the index is the defined style name and its value is a dictionary with indexes ``type``\nand ``value``. For example::\n\n IMAGE_STYLES.update({'my_style': {'type': 'thumbnail', 'size': (120, 100)}})\n\nPossible types can be:\n\n- ``thumbnail``: Scales an image to the smallest provided dimension.\n- ``thumbnail-upscale``: Scales an image to the provided dimensions, allowing upscale.\n- ``thumbnail-crop``: Crops an image to the ratio of the provided dimensions and the scales it.\n\nThe in order to use an image style in a template (eg for a ``node`` context::\n\n \n\nNineCMS uses the `Imagemagick`_ library for this matter.\nIn order to use image styles it has to be installed on the server. When an image style for a particular image\nis requested for the first time, NineCMS uses Imagemagick to create a new file in a new directory in the\ninitial file path with the name of the style. To refresh this file cache simply remove the directory with\nthe style name. Be careful not to remove the original file.\n\nPillow has not been used becaue at that time it had multiple issues with Python3. If a large memcache or redis is\navailable, `sorl-thumbnail`_ may be a better solution\nfor high traffic web sites.\n\nImportant points\n----------------\n\n- If i18n urls: menu items for internal pages should always have language [v0.3.1a]\n- Search page requires a search results block in page type and 'search' alias, requires not Sqlite [v0.4.4b]\n- Add LANGUAGES in settings_test when I18N_URLS [v0.4.7b]\n\nFootnote\n--------\n\nAny contribution to the project is highly appreciated and the best will be done to respond to it.", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/Wtower/django-ninecms/", "keywords": "cms content management system", "license": "BSD-3 License", "maintainer": "", "maintainer_email": "", "name": "django-ninecms", "package_url": "https://pypi.org/project/django-ninecms/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/django-ninecms/", "project_urls": { "Homepage": "https://github.com/Wtower/django-ninecms/" }, "release_url": "https://pypi.org/project/django-ninecms/0.6.0/", "requires_dist": [ "Pillow", "Django", "bleach", "django-guardian", "django-mptt", "pytz" ], "requires_python": "", "summary": "Nine CMS is a Django app to manage content.", "version": "0.6.0" }, "last_serial": 2049120, "releases": { "0.5.0": [], "0.5.0.post1": [ { "comment_text": "", "digests": { "md5": "40f33c19d28e8822fdb7153662ef27b3", "sha256": "d7cd2e7527ff2de1a67f47285b3415bb6ec592f33487b364771baa9438522141" }, "downloads": -1, "filename": "django-ninecms-0.5.0.post1.tar.gz", "has_sig": false, "md5_digest": "40f33c19d28e8822fdb7153662ef27b3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1785043, "upload_time": "2015-11-25T12:07:58", "url": "https://files.pythonhosted.org/packages/19/6f/f9ab6d0e0b87383712cd7972806d48a7a971cad458dc53a8f9b2b212863e/django-ninecms-0.5.0.post1.tar.gz" } ], "0.5.1": [], "0.5.2": [ { "comment_text": "", "digests": { "md5": "96f064be4c8020332c66b998fe354290", "sha256": "3f58bde0a2fd926b369c4be66dff5890aa0935a49559f638ef3247764a0975b2" }, "downloads": -1, "filename": "django-ninecms-0.5.2.tar.gz", "has_sig": false, "md5_digest": "96f064be4c8020332c66b998fe354290", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2184500, "upload_time": "2015-11-25T13:45:09", "url": "https://files.pythonhosted.org/packages/64/4d/02d30edf103b7ede2a80e8962e7c0b7430899fe69ececb82d7e51b32b9ee/django-ninecms-0.5.2.tar.gz" } ], "0.5.2.1": [ { "comment_text": "", "digests": { "md5": "878a0f939e51fed7f13da359c24dfc64", "sha256": "287f3990ea27bddf2bca49efb952d1877eae0914b52362c95e669c76c3dfc0df" }, "downloads": -1, "filename": "django-ninecms-0.5.2.1.tar.gz", "has_sig": false, "md5_digest": "878a0f939e51fed7f13da359c24dfc64", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2289794, "upload_time": "2015-11-25T14:45:23", "url": "https://files.pythonhosted.org/packages/e6/a2/e8dde583c76b569f8796da723b0ffaec4048597af7ac1abd966d48f3ac9b/django-ninecms-0.5.2.1.tar.gz" } ], "0.5.2.2": [ { "comment_text": "", "digests": { "md5": "56e1a8d89e03bcce954e5a2b4b186ad2", "sha256": "19f95ce2bca95bb56f92699e63b169d64ef9bc8c14b5ce6b596363c24ef76147" }, "downloads": -1, "filename": "django-ninecms-0.5.2.2.tar.gz", "has_sig": false, "md5_digest": "56e1a8d89e03bcce954e5a2b4b186ad2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2290144, "upload_time": "2015-11-25T16:13:58", "url": "https://files.pythonhosted.org/packages/52/0f/0829588d0a29c5c2984cb6fac600486635877057e4ad2e6fc09bdbd61381/django-ninecms-0.5.2.2.tar.gz" } ], "0.5.3": [ { "comment_text": "", "digests": { "md5": "5ce73aa296685abeef04825379d346d7", "sha256": "a79611e51f8e05aed51b0982337ae81a49b0ddea2faba63103719c62b0b2ef9b" }, "downloads": -1, "filename": "django-ninecms-0.5.3.tar.gz", "has_sig": false, "md5_digest": "5ce73aa296685abeef04825379d346d7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2296914, "upload_time": "2015-12-09T08:09:24", "url": "https://files.pythonhosted.org/packages/dd/6a/735ca96ce51fd6ded8311b5f8bbee86dfec4e7ab584d2820308afe7626a0/django-ninecms-0.5.3.tar.gz" } ], "0.5.3.1": [ { "comment_text": "", "digests": { "md5": "48d27cab6fe2ac1ca866344f71e4b833", "sha256": "18c9397b050be7e12de66a2c2387735043f4e08bece9100cf9672f85a9ecfd26" }, "downloads": -1, "filename": "django-ninecms-0.5.3.1.tar.gz", "has_sig": false, "md5_digest": "48d27cab6fe2ac1ca866344f71e4b833", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2305394, "upload_time": "2015-12-09T18:23:49", "url": "https://files.pythonhosted.org/packages/11/c9/36a4e6b9812d16d5bf83a078f48d996e334774f36a8c3313783aba61ec63/django-ninecms-0.5.3.1.tar.gz" } ], "0.5.4": [ { "comment_text": "", "digests": { "md5": "e73ace17b0ab2c4d24cf899d535029f0", "sha256": "12b5a053d8bd4381dc9adf273b8d3af92b24751cbac32e9fa9aeb0905d6bef01" }, "downloads": -1, "filename": "django-ninecms-0.5.4.tar.gz", "has_sig": false, "md5_digest": "e73ace17b0ab2c4d24cf899d535029f0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2257409, "upload_time": "2016-01-17T08:39:05", "url": "https://files.pythonhosted.org/packages/95/ff/efce54d43d4d9496750be581553afbc9634a32949622c9ec63edeb1d527d/django-ninecms-0.5.4.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "d2ee3c8b68d6b165552e385e24b7a1fd", "sha256": "89f61a28e422d093a650e4c048e793aa595c07b987214af1a0ef67b940b22a8e" }, "downloads": -1, "filename": "django_ninecms-0.6.0-py3-none-any.whl", "has_sig": false, "md5_digest": "d2ee3c8b68d6b165552e385e24b7a1fd", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 1309423, "upload_time": "2016-04-06T13:30:28", "url": "https://files.pythonhosted.org/packages/0a/ef/bda81dc8e7a4f096653a4233178780e236197b34dba4eb3e5924a47d469d/django_ninecms-0.6.0-py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d2ee3c8b68d6b165552e385e24b7a1fd", "sha256": "89f61a28e422d093a650e4c048e793aa595c07b987214af1a0ef67b940b22a8e" }, "downloads": -1, "filename": "django_ninecms-0.6.0-py3-none-any.whl", "has_sig": false, "md5_digest": "d2ee3c8b68d6b165552e385e24b7a1fd", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 1309423, "upload_time": "2016-04-06T13:30:28", "url": "https://files.pythonhosted.org/packages/0a/ef/bda81dc8e7a4f096653a4233178780e236197b34dba4eb3e5924a47d469d/django_ninecms-0.6.0-py3-none-any.whl" } ] }