Package: oy
Oy content management systemOyis a lightweight, modular, and extensible content management system (CMS) based on theFlaskmicro-framework.Oyprovides you with a flexible, full-fledged CMS engine, without hiding away the elegant Flask API behind a custom facade.oyimplements the following content management features:A basePagemodel containing comprehensive metadata fieldsPages are managed in a tree using nested sets which allows for faster traversal of the page treeRouting to any page type is handled transparently using the familiar decorator syntaxThe ability to apply middlewares to modify page responsesA wide range ofModel Mixinsto easily build custom content typesEditable settings that users can edit in runtime (e.g, through the admin dashboard) which the developer/designer can use in code or templates.An optional module system which augmentFlask Blueprintswith additional behaviorMakes perfect use of some of the best flask extensions (Flask-Admin, Flask-SQLAlchemy, Flask-Security..etc.)Core ExtensionsBuilding on the top of this powerful core,oyprovides most of it's functionality viacontrib packageswhich use the familiar  flask extension API.Extensions under theoy.contribpackage supplies you with the following additional features:oy.contrib.adminproviding the administration dashboard (based on Flask-Admin).oy.contrib.mediamanage user uploads (images, and documents) through an intuitive interface, and attach them to models  (uses the excellent file depot package).oy.contrib.formeasily design forms and publish them as pages, and view and download  submissions through the adminoy.contrib.redirectssetup custom redirectsoy.contrib.usersprovides user management with an extensible user profiles.Quick StartFirst things first, installoyvia pip:$pipinstalloyOyprovides theoyinitcommand to help you scaffold your new projects. To create a project with the default template, navigate to your projects directory and run:$oyinitmysiteCreatinganewprojectcalled`mysite`from`...`Usingprojecttemplate:default.
~~~~~~~~~~~~
Newprojectcreatedat/home/projects/mysiteThen cd to the project directory and create the database with some demo content:$cdmysite
$oycreateall~~~~~~~~~~~~
Creatingdatabasetables...
Databasetablescreated.
Creatinganewsuperuseraccount...

superUsercreatedsuccessfully.
^^^^^^^^^^^^
Useraccountdetails:theusernameis:adminandthepasswordisthechosenpassword
Pleasechangethedefaultpassword.
^^^^^^^^^^^^


Addingsomedemodatatothedatabase
~~~~~~~~~~~~

Addingdemodatafrommodule:oy.contrib.media
Addingdemodatafrommodule:oy.contrib.form
Addingdemodatafrommodule:oy.contrib.demo_content
Addingdemodatafrommodule:mysite.home_page============Finishedaddingallavailabledemodata.
~~~~~~~~~~~~Finally run the server:$flaskrunThen visit your newly created site athttp://127.0.0.1:5000you will be greeted with the default home page. To edit the site content visit the administration dashboard athttp://127.0.0.1:5000/admin/and use the default account details: username=admin, password=adminpass.DevelopmentTo develop oy locally, first clone the repo:$gitclonehttps://github.com/mush42/oy-cms.git
$cdoy-cmsCreate a virtual environment and install the required packages from PYPI:$virtualenv.venv
$source.venv/bin/activate
$pipinstall-rrequirements-dev.txtThen cd to the frontend directory and install the frontend components:$cdfrontend
$yarninstall# or if you don't have yarn installed$npminstallStatic assets are not pushed to the repository because they are generated automatically usinggulpInstall gulp-cli globally, and then use gulp to build and copy the static files:# install the gulp command line interface globally$yarnglobaladdgulp-cli# or if you don't have yarn installed$npm-g-igulp-cli# Then build and copy the static assets$gulpclean
$gulpbuild
$gulpcopyFinally installoyin editable mode:$cd..
$pipinstall-e.Contributingoycontent management system is still inalpha status, contributions are more than wellcome. Help is needed in perfecting existing features as well as adding new ones.Currently we are workon on the following areas:Increasing test coverageImplementing a RESTFUL API with sensible defaultsMigrating theGutenbergblock editor to oy in order for it to be used  as the default rich-text widgetUsingReact.jsto implement some admin widgets (inline fields, image and document choosers...etc)Translations (i18n)Why is it calledoy?We thought you already know. But in case you don't, here is a hint:The Midwest, a deserted village, an already dead boy, a junky teenager, a black woman with two faces, and a serious man whom you don't want to mess with.LicenceOy CMSis copyright (c) 2019 Musharraf Omer and oy contributers. It is licenced under theMIT License.