Django Fiber - a simple, user-friendly CMS for all your Django projects

Related tags

CMS python cms django
Overview

Django Fiber

CI Status PyPI version Coverage Status

An important message about this project

Hi Django Fiber enthusiasts! This project was started by the people at Ride The Pony, Leukeleu and Jouw Omgeving. They started Django Fiber in 2011, because they wanted a good, simple Django CMS available. Lots of people felt the same, which was why Django Fiber became pretty popular. And it is still going strong in lots of sites, so we hear :)

Later, they discovered Wagtail, and found it to be even better than their own creation. So they decided to move on. Nevertheless, Django Fiber was popular, used in many websites, and they didn't want to just drop it. At the start of 2017 they handed over control of the project to a new group of maintainers - the discussion about this handover can be found in issue #244.

Currently Django Fiber is in 'maintenance mode'. What this means it that it will be updated to run with the latest releases of Django - and of other packages that Django Fiber depends on. However, no effort will be made to add new features.

If a user really wants a new feature added - then a well-written PR will be reviewed and considered. But other than that, Django Fiber is staying exactly as it is :)

About Django Fiber

Do you want to see a Django Fiber screencast, to get a feel for what it can do for you? Check it out on Vimeo

Convinced? Want to use Django Fiber in your own Django project? Then follow the instructions below.

Requirements

These dependencies are automatically installed:

Pillow>=2.2.1
django-mptt>=0.8
django_compressor>=2.0
djangorestframework>=3.4
easy-thumbnails>=2.2

Installation

We're assuming you are using Django 1.9-2.0. Then simply install Fiber using pip:

$ pip install django-fiber

Setup

Open settings.py and add the following to your INSTALLED_APPS

INSTALLED_APPS = (
     ...
     'mptt',
     'compressor',
     'easy_thumbnails',
     'fiber',
     ...
)

Add Fiber to the MIDDLEWARE_CLASSES list

import django.conf.global_settings as DEFAULT_SETTINGS

MIDDLEWARE_CLASSES = DEFAULT_SETTINGS.MIDDLEWARE_CLASSES + (
    ...
    'fiber.middleware.ObfuscateEmailAddressMiddleware',
    'fiber.middleware.AdminPageMiddleware',
)

(Or, add the same items to MIDDLEWARE if you are using Django 1.10 or later.)

Add the request context processor

TEMPLATES = [
    {
        ...
        'OPTIONS': {
            'context_processors': [
                ...
                'django.template.context_processors.request',
            ]
        }
    },
]

And configure compressor

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/'
STATICFILES_FINDERS = DEFAULT_SETTINGS.STATICFILES_FINDERS + [
    'compressor.finders.CompressorFinder',
]

Edit your urls.py to add the Fiber site to your url-patterns

from django.urls import include, path, re_path
from fiber.views import page

urlpatterns = [
    ...
    path('api/v2/', include('fiber.rest_api.urls')),
    path('admin/fiber/', include('fiber.admin_urls')),
    ...
    re_path('', page),
]

Post-installation

Create database tables:

$ python manage.py migrate

All static Fiber files need to be symlinked in (or copied to) your static files folder if you're not on your dev machine:

$ python manage.py collectstatic --link

Further documentation

For further usage and configuration details take a look at our documentation project at readthedocs.

Changelog

See CHANGELOG.md for the latest changes.

Analytics

Comments
  • fiber.middleware.process_response: DjangoUnicodeDecodeError on non-Unicode responses.

    fiber.middleware.process_response: DjangoUnicodeDecodeError on non-Unicode responses.

    When response contains non-Unicode characters and response isn't Fiber page - middleware crashes on smart_unicode(response.content) without respecting response.encoding.

    And instead of answering that I must add urls to FIBER_EXCLUDE_URLS (I assume that I can't use regex here) you should respect #58 problem.

    opened by mktums 20
  • Too many DB queries

    Too many DB queries

    I have a menu:

    {% show_menu "mainmenu" 1 2 %}
    

    This generates 4 identical SQL queries (seen with django-debug-toolbar):

    SELECT "fiber_page"."id", "fiber_page"."created", "fiber_page"."updated", "fiber_page"."parent_id", "fiber_page"."title", "fiber_page"."url", "fiber_page"."redirect_page_id", "fiber_page"."mark_current_regexes", "fiber_page"."template_name", "fiber_page"."show_in_menu", "fiber_page"."protected", "fiber_page"."metadata", "fiber_page"."lft", "fiber_page"."rght", "fiber_page"."tree_id", "fiber_page"."level" FROM "fiber_page" WHERE "fiber_page"."id" = 3
    

    Let me know if you can't replicate this.

    nice to have 
    opened by vad 12
  • Setup transifex

    Setup transifex

    The current transifex project for django-fiber (https://www.transifex.com/maz/django-fiber/) is not owned by anyone associated with this organisation. So we should look into setting up a django-fiber org on transifex as well. If at all possible it would be nice to transfer the current project to this new org.

    Any volunteers that want to do this?

    opened by jaap3 11
  • Update django-piston to 0.2.3 (stable)

    Update django-piston to 0.2.3 (stable)

    django-fiber setup.py is still requiring piston 0.2.3rc1. I propose to use at least 0.2.3 stable, but i suggest you to change the strict == requirement to a simple >= ... And the same for django-mptt.

    opened by vad 10
  • File upload fails with 401 response and logs out user

    File upload fails with 401 response and logs out user

    If I try to upload an image from the frontend dialog, piston returns a 401 HTTP response (I've only tested with the latest code from git hub).

    From the request I see in console, it seems this is probably caused by a missing sessionid parameter:

    "POST /api/v1/images/?sessionid=null&qqfile=test.jpg HTTP/1.1" 401 0
    

    After this request the user is automatically logged out..

    Obviously it works fine if the image is uploaded using the classical admin.

    I get the same result in Firefox and Chrome, it seems the cookie is never set. After login with the admin, I return to the front site and type this in firebug after a page refresh:

    jQuery.cookie('sessionid') null

    bug 
    opened by h3 10
  • Added coveralls support

    Added coveralls support

    Add coveralls support (https://coveralls.io/).

    Coveralls is a web service to help you track your code coverage over time, and ensure that all your new code is fully covered.

    opened by mbraak 9
  • Porting to REST Framework 2

    Porting to REST Framework 2

    ~~Don't pull this one in yet.~~

    ~~Parking this one here for now until RF2 supports File and Image ModelSerializers (soon). Which means you cannot upload files or images just yet.~~

    Until then feel free to leave comments, test it, or just take a look at the code.

    opened by markotibold 9
  • Re-ordering pages seems to be broken

    Re-ordering pages seems to be broken

    In the /admin/fiber/page/ view, if I try to reorder a page using the up and down arrows in the "Actions" column, I see a 404, and in DEBUG mode, I get the following error:

    page object with primary key u'6/move_up' does not exist.

    It looks to me like the /move_up is getting passed into the id argument set in admin_urls.py, but that doesn't seem to make a lot of sense. The URL string looks fine to me. Can someone else reproduce this?

    Thanks!

    opened by gavinanderegg 9
  • Check support for Django 3.2.

    Check support for Django 3.2.

    An early check as to whether this project works with Django 3.2.

    • The test suite passes with Tox.
    • I haven't tested the app in a browser.

    Dependencies e.g. django-compressor have not been certified "3.2 compatible" yet so it's probably premature to merge this PR and release - I'm just uploading this code to say that it will be (hopefully) a straightforward task.

    When the projects that Fiber depends on are upgraded, either I can take another look at this PR - or if I'm elsewhere someone else can pick it up :-)

    opened by richardbarran 8
  • Fiber admin is called for a non fiber model

    Fiber admin is called for a non fiber model

    On a project using Fiber (1.4.1), I created a model:

    class OrderDetails(models.Model):
        uuid = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
        date_created = models.DateTimeField(auto_now_add=True)
    

    A bulk delete on this model from the admin now fails with invalid literal for int() with base 10: '04139e55-b2eb-4124-8138-fe3a594c950b'

    Fiber is part of the stacktrace for some reason: /site-packages/fiber/admin.py in has_delete_permission

    opened by cho-leukeleu 7
  • New release (django-fiber 1.5.0)

    New release (django-fiber 1.5.0)

    It's probably a good idea to prepare a new release:

    • official support for Django 1.11.
    • ~~Move to new Transifex repo (I'll handle it)~~.
    • ~~Updated README~~.
    • Fix deprecation warnings.
    • Document the release process/guidelines for collaborators in the readthedocs pages?
    • And actually release!
    opened by richardbarran 7
  • Resizing images is broken

    Resizing images is broken

    When we upload an image into a Page Content Item, we can click on the image and resize it. That feature still works in Firefox, but appears broken in Chrome and Safari.

    opened by richardbarran 0
  • Update javascript libraries

    Update javascript libraries

    Inspired by PR #295 - django-fiber bundles a number of javascript libraries, and they are really, really old versions. For example we're on jQuery 1.5.2, which was released in 2011.

    It would be great to update these libraries.

    opened by richardbarran 0
  • Properly warn when trying to delete an image that is joined to another instance

    Properly warn when trying to delete an image that is joined to another instance

    Currently, when trying to delete an image that is already joined to another instance, fiber will return a 500 ISE. We should alert the user about what is happening instead.

    opened by ramonakira 2
A Django-based CMS with a focus on extensibility and concise code

FeinCMS - An extensible Django-based CMS When was the last time, that a pre-built software package you wanted to use got many things right, but in the

FeinCMS 847 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
Ella is a CMS based on Python web framework Django with a main focus on high-traffic news websites and Internet magazines.

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

null 295 Oct 16, 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
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
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 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
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
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
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
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
Set of Web-backend projects to implement micro-blogging site

Mini-Twitter This repository contains a set of projects covered for CPSC-449 Web-Backend development under the guidance of Prof. Kenytt Avery at CSU,

null 1 Nov 7, 2021
A full-stack clone of Instagram, allowing the user to interact with posts and other users.

This project is a full-stack clone of Instagram, allowing the user to interact with posts and other users

Alejandro Carrizosa Grant 4 Feb 14, 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
Oppia a free, online learning platform to make quality education accessible for all.

Oppia is an online learning tool that enables anyone to easily create and share interactive activities (called 'explorations'). These activities simulate a one-on-one conversation with a tutor, making it possible for students to learn by doing while getting feedback.

Oppia 4.8k Dec 28, 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
A Django blog app implemented in Wagtail

Puput Puput is a powerful and simple Django app to manage a blog. It uses the awesome Wagtail CMS as content management system. Puput is the catalan n

APSL 535 Jan 8, 2023