Skip to main content

A lightweight, modular, and extensible content management system based on Flask.

Project description

Build Status

Oy content management system

Oy is a lightweight, modular, and extensible content management system (CMS) based on the Flask micro-framework.

oy provides you with a flexible, full-fledged CMS engine with the following features:

  • A base Page model containing comprehensive metadata fields
  • Pages are managed in a tree using nested sets which allows for faster querying for descendants and ancestors
  • Routing to any page type is handled transparently using the familiar decorator syntax
  • The ability to apply middlewares to modify page responses
  • Model Mixins, a lot of them, to easily build your custom content types
  • Editable settings that users can edit in runtime (e.g, through the admin dashboard) which the developer can use in code or templates.
  • An optional module system which augment Flask Blueprints with additional behavior
  • Makes use of some of the best flask extensions out there (Flask-Admin, Flask-SQLAlchemy, Flask-Security...)

Additional Features

In addition to the core, oy provides extra functionality through several packages under the oy.contrib package, including:

    • oy.contrib.admin providing the administration dashboard (based on Flask-Admin).
  • oy.contrib.media manage user uploads (images, and documents) through an intuitive interface, and attach them to models (uses the excellent file depot package).
  • oy.contrib.form easily design forms and publish them as pages, and view and download submissions through the admin
  • oy.contrib.redirects setup custom redirects
  • oy.contrib.users provides user management with an extensible user profiles.

Quick Start

First things first, install oy via pip:

$ pip install oy

Oy supplies you with a command to scaffold your projects. To create a project with the default template, navigate to your projects directory and run:

$ oyinit mysite
Creating project mysite...
Using project template: /home/.../oy/project_templates/default...

.........................

New project created at /home/projects/mysite

Then cd to the project directory and create the database with some demo content:

$ cd mysite
$ oy createall
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Creating database tables...
Database tables created.
Creating a new super user account...

super User created successfully.


^^^^^^^^^^^^^^^^^^^^^^^^
Superuser account details: (username=admin) (password=adminpass)
Please change the default password
^^^^^^^^^^^^^^^^^^^^^^^^

Installing fixtures in the database
~~~~~~~~~~~~~~~~~

Installing fixtures for module: oy.contrib.form
Installing fixtures for module: oy.contrib.demo_content
Installing fixtures for module: my.home_page

===============
Finished installing all available fixtures.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Finally run the server:

$ flask run

Then visit your newly created site at http://127.0.0.1:5000 you will be greeted with the default home page. To edit the site content visit the administration dashboard at http://127.0.0.1:5000/admin/ and use the default account details: username=admin, password=adminpass.

Why is it called oy?

I thought you already know. But in case you don't, here is a hint:

The Midwest, a deserted village, an already dead boy, another junky boy, a black woman with two faces, and a serious man whom you don't want to mess with.

Contributing

oy content management system is still in alpha status, contributions are more than wellcome. Help needed in perfecting existing features as well as adding new ones.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

oy-0.1.4.tar.gz (1.9 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

oy-0.1.4-py3-none-any.whl (2.1 MB view details)

Uploaded Python 3

File details

Details for the file oy-0.1.4.tar.gz.

File metadata

  • Download URL: oy-0.1.4.tar.gz
  • Upload date:
  • Size: 1.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.2

File hashes

Hashes for oy-0.1.4.tar.gz
Algorithm Hash digest
SHA256 bad0d5d054b1698a730c0a5199529bcdf5f2f715ec2cab3ac04c4b9643bd123c
MD5 f29f0184995d7c91db50c2b29c032553
BLAKE2b-256 e9e750a034e46482e869791c7203407acaf75bc6f0b3f69248993b54b731ee40

See more details on using hashes here.

File details

Details for the file oy-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: oy-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 2.1 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.2

File hashes

Hashes for oy-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 51ceae79ff5ad7ec2ae3de91f4c48b0a2d2d000756778db95fbb061bebb35fe7
MD5 0d358cba7312b67e709aaba92469c446
BLAKE2b-256 f59dda8d466cf39cc233e24dd15559ada2f7de6473df11767b869ef05b36c660

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page