AtomicPress
===========
AtomicPress is a static blog generator for python developers that don't
want the Wordpress security hassle. It is built in Flask and takes
advantage of it's awesome eco-system such as Flask-Freeze, Flask-Admin,
Flask-Migrations, Flask-SQLAlchemy, to mention a few. It utilizes SQLite
for its database needs.
Features
--------
- Posts, Pages, Categories, Tags and Authors (like WordPress).
- Markdown rendering
- Theme support
- Import from Wordpress
- Gist integration
- A simple admin interface
- Build you own extensions
- Sync your generated blog with either FTP or to Amazon S3
Why not Pelican/Jekyll/Octopress/Hyde?
--------------------------------------
1. AtomicPress is built in Python.
2. It is built upon Flask, which is easy to extend.
3. It's built to make Wordpress import simple.
Installation
------------
AtomicPress can easily be installed through pip.
::
pip install atomicpress
Develop
~~~~~~~
::
pip install git+git://github.com/marteinn/AtomicPress.git@develop
Getting started
---------------
To install AtomicPress you'll need python 2.7, virtualenv and pip.
If you want a quickstart, just copy the example ``base-example``, cd and
type ``make init`` and you are ready to go.
Settings
--------
- ``SQLALCHEMY_DATABASE_URI``: Path to your sqlite database.
- ``DEBUG``: Show errors, should be deactivated for live environments.
- ``SECRET_KEY``: Session key for signing.
- ``STATIC_URL``: Path to the static content, default: ``/static/``
- ``UPLOADS_URL``: Path to the uploads folder, defult ``/uploads/``
- ``THEME``: The theme you want to run, default is
``atomicpress.themes.minimal``.
- ``GIST_BACKEND_RENDERING``: If you want to render a
``<noscript></noscript>`` that contains the gist content as pure
text. Default is ``False``
- ``EXTENSIONS``: A array with the extensions you want to run.
- ``MARKDOWN_EXTENSIONS``: A list with the active `markdown
extensions <https://pythonhosted.org/Markdown/extensions/index.html>`__.
S3
~~
- ``AWS_ACCESS_KEY_ID``: Access key id to aws.
- ``AWS_ACCESS_KEY``: Access key to aws.
- ``AWS_REGION``: The region your bucket is places (optional).
- ``AWS_S3_CALLING_FORMAT``: A boto setting (uses
SubdomainCallingFormat by default) (optional).
- ``S3_BUCKET``: The bucket you want to deploy to.
- ``S3_DESTINATION``: The path within the bucket you want to deploy to.
FTP
~~~
- ``FTP_HOST``: Hostname to your ftp account.
- ``FTP_USERNAME``: Ftp username.
- ``FTP_PASSWORD``: Ftp password.
- ``FTP_DESTINATION``: Ftp sup
Admin
-----
AtomicPress uses Flask-Admin to show a admin interface, you can access
it by running ``runserver`` with the argument ``-a`` (admin). Per
default is located at ``http://localhost:5000/admin/``.
Themes
------
AtomicPress ships with the theme minimal per default, if you would like
to make your own, just specify the path in your settings file.
::
THEME=mytheme
To make your own, just look at the theme
`minimal <https://github.com/marteinn/AtomicPress/tree/develop/atomicpress/themes/minimal>`__
that ships with AtomicPress.
Filters
-------
AtomicPress comes with a couple of filters you can use in the post
content area.
code
~~~~
Render a basic code snippet.
::
[code]var a = 1;[/code]
>>> <pre class="code">var a = 1;</pre>
gist
~~~~
Embeds a more advanced code snippet through a github gist to content.
::
[gist id="asdasd"]
image
~~~~~
Embed image path with the ``[image]`` filter.
::
<img src="[image id="myimage.jpg"]" />
>>> <img src="/uploads/myimage.jpg" />
If you only want the uploads path, you can use the ``[uploads]`` filter.
::
<img src="[uploads]myimage.jpg" />
>>> <img src="/uploads/myimage.jpg" />
Commands
--------
Database
~~~~~~~~
Create database
^^^^^^^^^^^^^^^
Creates the database and stores it according to the
SQLALCHEMY\_DATABASE\_UR path.
::
python mange.py create_db
Remove database
^^^^^^^^^^^^^^^
Removes the sqlite database file.
::
python mange.py drop_db
**Options**
::
-r (remove) Remove the sqlite file when done.
-f (force) Do now show the agreement promp.
Updating from a older version
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Upgrading from a older version? Run this to make sure the schema is up
to date.
::
python manage.py upgrade -d=atomicpress/migrations/
Prefill db with initial data
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Adds initial data to the database, perfect when you want to try out
AtomicPress.
::
python manage.py prefill fill
Server
~~~~~~
Runserver
^^^^^^^^^
Creates a lightweight http server running the web application.
::
python manage.py runserver
**Options**
::
-a (admin) Activate the admin area (do not do this in a production anvironment)
-t (toolbar) Show debug toolbar.
-d (debug) Show debug messages.
Note: Although untested, it is possible to run AtomicPress as a standard
wsgi application.
Import
~~~~~~
AtomicPress uses `wpparser <https://github.com/marteinn/wpparser/>`__ to
import data from wordpress export files. Just specify the path to your
database export and you are ready to go.
::
python manage.py importer import_blog -f=./data/blog.wordpress.2014-09-25.xml
**Options**
::
-f (file) Path to wordpress export file.
Export
~~~~~~
Create a static package of you blog, that are ready to be deployed.
::
python manage.py exporter export
Sync
~~~~
S3
^^
Send the exported static files to a AWS S3 bucket.
::
python manage.py s3 sync
FTP
^^^
Send the files to your ftp account.
::
python manage.py ftp sync
Extensions
----------
Toggle extensions
~~~~~~~~~~~~~~~~~
AtomicPress uses a pluggale extension system, similar to django's
INSTALLED\_APPS. To disable a plugin, define a property in your settings
file and just define the ones you need.
::
EXTENSIONS = (
# "atomicpress.ext.importer",
"atomicpress.ext.exporter",
"atomicpress.ext.ftp",
"atomicpress.ext.s3",
"atomicpress.ext.prefill",
)
Activating you own is also simple, like this extension called
catpictures:
::
EXTENSIONS = (
"atomicpress.ext.importer",
"atomicpress.ext.exporter",
"atomicpress.ext.ftp",
"atomicpress.ext.s3",
"atomicpress.ext.prefill",
"catpictures",
)
Create extension
~~~~~~~~~~~~~~~~
To create a extension, create a module with a function called setup.
Thats all you need.
Contributing
------------
Want to contribute? Awesome. Just send a pull request.
License
-------
AtomicPress is released under the `MIT
License <http://www.opensource.org/licenses/MIT>`__.