Ella is a CMS based on Python web framework Django with a main focus on high-traffic news websites and Internet magazines.

Related tags

CMS ella
Overview

Ella CMS

Ella is opensource CMS based on Django framework, designed for flexibility.

It is composed from several modules:

  • Ella core is the main module which links the rest together. It defines architecture on which other modules are built but doesn't do anything really usefull all alone.
  • Ella core plugins are plugins that are shipped in one package together with Ella. There are articles and positions which we consider to be a basic toolbox for each Ella site.
  • Other Ella plugins are standalone applications (and therfore not shipped with the core) that provide some specific functionality using Ella's architecture. We can mention polls, galleries, quizes and many more.

Feature highlights:

  • Simple organization of content based on categories
  • Efficent implementation of the published content
  • In-build photo formating backend
  • Django-admin ready
  • Plugin system
  • Flexibile
  • Scalable
  • Extensible
  • Caching-friendly
  • Well tested
  • Proven in production environment

News

Currently, we released the 3.x version which features a major cleanup of the code a removal of unneeded dependencies.

More news are on the way as we are going to make a nicely-tailored admin specifically made for the need of news writers and editors.

Docs

Docs are hosted on readthedocs.org, go to http://ella.rtfd.org.

Community

Quickstart

Have a look at the docs: http://readthedocs.org/docs/ella/en/latest/quickstart.html.

Build status

Master branch: Travis CI - Distributed build platform for the open source community
Comments
  • Ella -> core + plugins

    Ella -> core + plugins

    We need to decide on conventions for ella plugins and which modules will be kept in core after the process. Seems like the only module with direct ties to core should be photos (where I would highly appreciate to use some interface to allow for sorl-thumbnail as I stated before).

    Moreover, it is needed to decide on who will do the thing. In Fragaria, we would like to handle polls, since we use them quite often. Major refactoring will be most likely included even though we originally proposed to postpone it.

    @whit said, he would like to keep following naming convention for all ella plugins: ella_[PLUGIN_NAME].

    So there would be ella_articles, ella_polls etc.

    This leads to some minor troubles with DB table names and references in the code itself. There will have to be migrations to rename all the tables.

    Please, share your opinions here. We would like to start working on this next week.

    cleanup plugins 
    opened by xaralis 24
  • Simple admin interface for writers/editors

    Simple admin interface for writers/editors

    There should be simple interface for writers/editors. Not newman, but something forged specifically for them. Lightweight, not build on Django admin, customized only for them.

    Newman is not sufficent, because it's just way too puffy. Most of writers use only articles + photos/galleries.

    We need to discuss the basis of implementation though. In my point of view, it has to be javascript-heavy frontend as user-friendly as possible.

    nice-to-have proposal new administration 
    opened by xaralis 17
  • Data migration script from Ella 2.x to cleanup branch (3.x)

    Data migration script from Ella 2.x to cleanup branch (3.x)

    When models in cleanup branch to be a bit stable, create external script to migrate data.

    • aricle contents ( and markup source texts update) -> article
    • placement -> publishable (with "published" bool)
    asap cleanup 
    opened by whit 11
  • Final testing before accepting 2.1.0

    Final testing before accepting 2.1.0

    Looks like we have fixed all the issues that were blocking final django-1.3 compatibility release. We have put the changes into proposals/2.1.0 branch (last changes in commit 0b5f605a46). Please, have a look at this version and report any new errors.

    Just to let you know, this has been put into proposals so we are not accepting any new features, only bug fixes related to Django 1.3 compatibility.

    django-1.3 newman 
    opened by xaralis 10
  • Exif rotation

    Exif rotation

    Hey! I am pushing this as a pull request, because it is introducing new functionality.

    If there is some EXIF rotation information Formatter rotates image prior formatting.

    What do you think about it, is it safe to merge?

    opened by kvbik 9
  • IntegrityError: (1062,

    IntegrityError: (1062, "Duplicate entry 'XXX-XXX' for key 'photo_id'")

    When generating photos in format, there are times when integrity error is raised.

    This is probably related to comment:

    use get or create because there is a possible race condition here we don't want to JUST use get_or_create to go through cache 99.9% of the time

    on line 299 in ella/photos/models.py. I assume, it's not a big deal but we should more clever and do not report this as exception then.

    won't fix 
    opened by xaralis 7
  • Provide a way for better URLs for static pages (static articles)

    Provide a way for better URLs for static pages (static articles)

    Very often we struggle with "nice URLs" that categories are blocking. This is mostly the case for static pages like contact page, usage conditions and so on.

    In some other CMS product, we have seen nice solution which allowed to select different behaviours for different categories. Most interesting are: article listing and showing detail of specified article. A feature like this would solve our URL issue.

    So far, there are several ways how to handle such pages in Ella, but none of them is pleasant.

    1. Someone will probably argue that such a function is already available using static articles (or static placements before cleanup started). This is true but static articles' URL just sucks. We don't like having /static/ prefix in URL just because the CMS doesn't know how to do it properly.

    2. Using category description to contain HTML to render the page. This smells on the first sight.

    3. Put all the HTML in category template. This isn't nice too because you cannot alter the HTML from administration, nor you can change the behaviour of this given category if requested without help of developer.

    As you can see, nice solution is missing. This kind of behavior doesn't necessarily need to be in Ella's core, but I would really appreciate if we can find out some nice way how to do this (an app which uses category metadata JSONField and overrides urls file and category detail?).

    proposal cleanup 
    opened by xaralis 7
  • Remove the content_type_name from URL

    Remove the content_type_name from URL

    This is no longer needed, it's not welcome because of SEO and makes the url too long, I believe we should remove it and provide a migration for backwards compatibilty that would create Redirect objects for every instance of this.

    proposal cleanup 
    opened by honzakral 5
  • Uncaught exception in QuizWizard located in ella/polls/views.py

    Uncaught exception in QuizWizard located in ella/polls/views.py

    There is no problem with adding new quiz(test) via newman. But opening url of the quiz raises this exception. The exception is IndexError: list index out of range.

    opened by jezradek 5
  • Newman's responses are shown out of newman app

    Newman's responses are shown out of newman app

    If you add or edit some object e.g. article or photo via newman. A response for this action is shown on your website. The response is gone after refresh.

    See: http://uloz.to/xcycL8b/response-out-newman-png

    django-1.3 
    opened by jezradek 5
  • Add a generic JSONField to Publishable to store project-specific metadata

    Add a generic JSONField to Publishable to store project-specific metadata

    Almost every application I have seen on ella has some need for added flexibility. I propose we add an optional JSONField to Publishable that individual plug-ins and projects can use to store their specific stuff. Some examples:

    • store comment count with publishable
    • tag lists
    • importance
    • source information (commercial, licence)
    • template used to render
    • ....

    I also believe some conventions (a two line note in help_text fo the fields sounds enough) should be in place to provide namespaces (for example store your stuff under "app_name", for example:

    { 'comments': {'count': 12, 'latest': '20120128'}, 'tagging': {'public_tags': ['summer'], 'editorial_tags': ['white bikiny']} }

    nice-to-have proposal cleanup 
    opened by honzakral 5
  • Proposing a PR to fix a few small typos

    Proposing a PR to fix a few small typos

    Issue Type

    [x] Bug (Typo)

    Steps to Replicate and Expected Behaviour

    • Examine doc/reference/models.rst, ella/photos/models.py and observe unformated, however expect to see unformatted.
    • Examine doc/common_gotchas.rst, doc/quickstart.rst and observe sufficent, however expect to see sufficient.
    • Examine ella/photos/models.py and observe formated, however expect to see formatted.
    • Examine ella/photos/formatter.py and observe explicitely, however expect to see explicitly.
    • Examine doc/common_gotchas.rst and observe suprisingly, however expect to see surprisingly.
    • Examine doc/quickstart.rst and observe succesfull, however expect to see successful.
    • Examine doc/quickstart.rst and observe styleseets, however expect to see stylesheets.
    • Examine doc/reference/models.rst and observe peformed, however expect to see performed.
    • Examine ella/photos/formatter.py and observe horizontaly, however expect to see horizontally.
    • Examine doc/features.rst and observe diferrent, however expect to see different.

    Notes

    Semi-automated issue generated by https://github.com/timgates42/meticulous/blob/master/docs/NOTE.md

    To avoid wasting CI processing resources a branch with the fix has been prepared but a pull request has not yet been created. A pull request fixing the issue can be prepared from the link below, feel free to create it or request @timgates42 create the PR. Alternatively if the fix is undesired please close the issue with a small comment about the reasoning.

    https://github.com/timgates42/ella/pull/new/bugfix_typos

    Thanks.

    opened by timgates42 0
  • Make tests pass with PYTHONHASHSEED=random

    Make tests pass with PYTHONHASHSEED=random

    Hello! I believe this is my first patch for a Django-based project, hopefully I'm doing everything right. I installed the code and ran the tests, but found some failures due to my environment.

    Due to CVE-2012-1150, CPython now allows using a random seed for hashes,
    so set/dict order is no longer predictable.
    
    Update tests to pass even if the hash seed is randomized.
    Add a testing-only argument to ella.core.templatetags.pagination._do_paginator
    to sort query params before encoding them.
    

    In test_templatetags.test_params_are_parsed, I didn't find a good way for to sort a dictionary given to a for in a Django template.

    opened by encukou 2
  • fixed Publishable url uniqueness by db check in clean metod and fixed category related finder

    fixed Publishable url uniqueness by db check in clean metod and fixed category related finder

    There are three commits:

    First is only PEP8 fixes.

    Second is for category related finder. Example in current version of ella: I have publishble x and x has set category y and is also listed in this category and I want 4 related objects by category and finder gives me only 3 objects although there is many objects (This situation happens only if position of x in listing query set is less than count specification).

    Last is for Publishable clean method where is check of uniqueness by category, slug, publish_from for non static objects. There is replaced self.class with Publishable, becouse self.class validate uniqueness for specific content type (for example only in articles query set) and not in Publishable qs and it breaks unique url per publishable.

    opened by MichalMaM 0
  • smart_str used in ella cache keys does not work correctly with django 1.5

    smart_str used in ella cache keys does not work correctly with django 1.5

    If I try this test add to ella tests:

    def test_params_parsed_with_national_characters(self):
            template_loader.templates['box/box.html'] = '{% for k,v in box.params.items %}{{k}}:{{v}}|{% endfor %}'
            t = template.Template('''{% box name for sites.site with pk 1 %}
                    title: účes
                    some_other_param: xxx
                {% endbox %}''')
            tools.assert_equals(u'some_other_param:xxx|title:účes|', t.render(template.Context()))
    

    the result is:

    UnicodeDecodeError
    
    opened by MichalMaM 1
  • OverflowError: mktime argument out of range

    OverflowError: mktime argument out of range

    An error is raised when saving publishable object with date which is out of range for mktime. This is however what Ella presets for publishable by default.

    See the stack trace:

    OverflowError: mktime argument out of range
    
    Traceback (most recent call last):
    
      File "django/core/handlers/base.py", line 168, in get_response
        receivers = signals.got_request_exception.send(sender=self.__class__, request=request)
    
      File "ella_newman/options.py", line 203, in wrapper
        return self.admin_site.admin_view(view)(*args, **kwargs)
    
      File "django/utils/decorators.py", line 99, in _wrapped_view
        raise
    
      File "django/views/decorators/cache.py", line 79, in _wrapped_view_func
        response = view_func(request, *args, **kwargs)
    
      File "django/contrib/admin/sites.py", line 197, in inner
        return view(request, *args, **kwargs)
    
      File "django/db/transaction.py", line 220, in inner
        raise
    
      File "ella_newman/options.py", line 798, in change_json_view
        context = self.change_view_prepare_context(request, object_id)
    
      File "ella_newman/options.py", line 762, in change_view_prepare_context
        out = self.change_view_preprocess(request, object_id)
    
      File "ella_newman/xoptions.py", line 144, in change_view_preprocess
        formsets, form = self.get_change_view_formsets(request, obj)
    
      File "ella_newman/xoptions.py", line 91, in get_change_view_formsets
        self.save_formset(request, form, formset, change=True)
    
      File "django/contrib/admin/options.py", line 677, in save_formset
        formset.save()
    
      File "django/forms/models.py", line 482, in save
        return self.save_existing_objects(commit) + self.save_new_objects(commit)
    
      File "django/forms/models.py", line 613, in save_new_objects
        self.new_objects.append(self.save_new(form, commit=commit))
    
      File "django/forms/models.py", line 717, in save_new
        obj.save()
    
      File "django/db/models/base.py", line 460, in save
        self.save_base(using=using, force_insert=force_insert, force_update=force_update)
    
      File "django/db/models/base.py", line 570, in save_base
        created=(not record_exists), raw=raw, using=using)
    
      File "django/dispatch/dispatcher.py", line 172, in send
        response = receiver(signal=self, sender=sender, **named)
    
      File "ella/core/cache/redis.py", line 107, in listing_post_save
        commit=True
    
      File "ella/core/cache/redis.py", line 307, in add_publishable
        score = repr(to_timestamp(publish_from or now()))
    
      File "ella/utils/timezone.py", line 38, in to_timestamp
        return time.mktime(dtime.timetuple()) + float(dtime.microsecond)/1000000
    

    dtime is set to: 'datetime.datetime(3000, 1, 1, 0, 0)'

    opened by xaralis 2
  • Enable custom view for Category using the custom_urls

    Enable custom view for Category using the custom_urls

    simple enough - enable project to register the override view that will be called before listings are retrieved (thus enabling people to not use listings).

    opened by honzakral 0
Kotti is a high-level, Pythonic web application framework based on Pyramid and SQLAlchemy. It includes an extensible Content Management System called the Kotti CMS.

Kotti Kotti is a high-level, Pythonic web application framework based on Pyramid and SQLAlchemy. It includes an extensible Content Management System c

Kotti 394 Jan 7, 2023
CMS framework for Django

Created by Stephen McDonald Overview Mezzanine is a powerful, consistent, and flexible content management platform. Built using the Django framework,

Stephen McDonald 4.6k Dec 29, 2022
An open source CMS, in python and integrable in Django

Python CMS based on the Django Framework

Titouan Bénard 0 Sep 10, 2021
Random tarot card generator + rudimentary Django CMS

TAROT JUICER This is a rudimentary Django-based CMS which dynamically presents tarot-related content placed onto unconventional but familiar contexts

Kyle Rafa Lazaro 7 Apr 26, 2022
Django CMS Project for quicksetup with minimal installation process.

Django CMS Project for quicksetup with minimal installation process.

Dipankar Chowdhury 3 Mar 24, 2022
A python open source CMS scanner that automates the process of detecting security flaws of the most popular CMSs

CMSmap CMSmap is a python open source CMS scanner that automates the process of detecting security flaws of the most popular CMSs. The main purpose of

RazzorBack 1 Oct 31, 2021
The easy-to-use and developer-friendly CMS

django CMS Open source enterprise content management system based on the Django framework and backed by the non-profit django CMS Association. Get inv

django CMS Association 9.1k Jan 4, 2023
The easy-to-use and developer-friendly CMS

django CMS Open source enterprise content management system based on the Django framework and backed by the non-profit django CMS Association. Get inv

django CMS Association 9.1k Jan 8, 2023
The Plone CMS: root integration package

About Plone Plone is a mature, secure and user-friendly Content Management System (CMS). Plone - and the Open Source community behind it - aggregates

Plone Foundation 200 Jan 8, 2023
A plugin for Wagtail CMS, to have Icon Blocks (Fontawesome support)

WAGTAIL ICONIFY Library developed for Wagtail CMS, its purpose is to provide icon blocks from various libraries Special thanks to Alex Gleason, as wel

null 2 Jun 7, 2022
A modular, high performance, headless e-commerce platform built with Python, GraphQL, Django, and ReactJS.

Saleor Commerce Customer-centric e-commerce on a modern stack A headless, GraphQL-first e-commerce platform delivering ultra-fast, dynamic, personaliz

Mirumee Labs 17.8k Jan 7, 2023
Simple yet powerful and really extendable application for managing a blog within your Django Web site.

Django Blog Zinnia Simple yet powerful and really extendable application for managing a blog within your Django Web site. Zinnia has been made for pub

Julien Fache 2.1k Dec 24, 2022
Open Source CRM based on Django

Django-CRM Django CRM is opensource CRM developed on django framework. It has all the basic features of CRM to start with. We welcome code contributio

MicroPyramid 1.4k Dec 31, 2022
wger Workout Manager is a free, open source web application that helps you manage your personal workouts, weight and diet plans and can also be used as a simple gym management utility.

wger (ˈvɛɡɐ) Workout Manager is a free, open source web application that helps you manage your personal workouts, weight and diet plans and can also be used as a simple gym management utility.

wger Project 2k Dec 29, 2022
A Django content management system focused on flexibility and user experience

Wagtail is an open source content management system built on Django, with a strong community and commercial support. It's focused on user experience,

Wagtail 13.8k Jan 1, 2023
django blog - complete customization and ready to use with one click installer

django-blog-it Simple blog package developed with Django. Features: Dynamic blog articles Blog pages Contact us page (configurable) google analytics S

MicroPyramid 220 Sep 18, 2022
A full stack e-learning application, this is the backend using django restframework and docker.

DevsPrime API API Service backing client interfaces Technologies Python 3.9 : Base programming language for development Bash Scripting : Create conven

Nnabue Favour Chukwuemeka 1 Oct 21, 2021
Django e-commerce website with Advanced Features and SEO Friendly

MyTech® - Your Technology Django e-commerce website with Advanced Features and SEO Friendly Images and Prices are only used for Demo purpose and does

null 28 Dec 21, 2022
Indico - A feature-rich event management system, made @ CERN, the place where the Web was born.

Indico Indico is: ? a general-purpose event management tool; ? fully web-based; ? feature-rich but also extensible through the use of plugins; ⚖️ O

Indico 1.4k Dec 31, 2022