manetta
6 years ago
4 changed files with 278 additions and 116 deletions
@ -0,0 +1,98 @@ |
|||
# Distribusi CMS |
|||
|
|||
`distribusi` is a content management system for the web that produces static |
|||
index pages based on folders in the filesystem. It is inspired by the automatic |
|||
index functions featured in several web servers. It works by traversing the |
|||
file system and directory hierarchy to automatically list all the files in the |
|||
directory and providing them with html classes and tags for easy styling. |
|||
|
|||
## Requirements |
|||
|
|||
While a Pip install will pull in Python dependencies, you might need system |
|||
dependencies. This package requires two underlying packages. Those are |
|||
`python-magic`, and `pillow`. Here are the installation documentation for those |
|||
packages: |
|||
|
|||
* [github.com/threatstack/libmagic](https://github.com/threatstack/libmagic) |
|||
* [pillow.readthedocs.io](https://pillow.readthedocs.io/en/5.3.x/installation.html#external-libraries) |
|||
|
|||
## Installation |
|||
|
|||
Using [--user] or [a virtual environment] is recommended: |
|||
|
|||
[--user]: https://packaging.python.org/tutorials/installing-packages/#installing-to-the-user-site |
|||
[a virtual environment]: https://packaging.python.org/tutorials/installing-packages/#creating-virtual-environments |
|||
|
|||
|
|||
```bash |
|||
$ pip install --user distribusi |
|||
``` |
|||
|
|||
Note: check if the path of your local bin is added to your shell path (otherwise you cannot run distribusi from the shell directly). |
|||
|
|||
To check where distribusi is installed: |
|||
|
|||
$ find * | grep distribusi |
|||
|
|||
Add local bin to the $PATH variable: |
|||
|
|||
$ PATH=$PATH:/home/USERNAME/.local/bin/ |
|||
|
|||
## Usage |
|||
|
|||
Get help with: |
|||
|
|||
```bash |
|||
$ distribusi --help |
|||
``` |
|||
|
|||
Make a distribusi of your home folder: |
|||
|
|||
```bash |
|||
$ distribusi -d ~/ |
|||
``` |
|||
|
|||
You will find that you now have an `index.html` in every folder. |
|||
|
|||
Create a quick gallery for the web: |
|||
|
|||
``` |
|||
$ distribusi -d /path/to/my/photos -t |
|||
``` |
|||
|
|||
This creates an `index.html` with `base64` encoded thumbnails. |
|||
|
|||
Generate verbose output: |
|||
|
|||
``` |
|||
$ distribusi -v |
|||
``` |
|||
|
|||
Make an index of the archive page: |
|||
|
|||
``` |
|||
$ distribusi -d /var/www/archive/my_event -t -v |
|||
``` |
|||
|
|||
# ✌ |
|||
|
|||
## Change It |
|||
|
|||
Install [Pipenv] and then run: |
|||
|
|||
[Pipenv]: https://pipenv.readthedocs.io/en/latest/install/#installing-pipenv |
|||
|
|||
``` |
|||
$ pipenv install --dev |
|||
$ pipenv run pip install -e . |
|||
$ pipenv run distribusi --help |
|||
``` |
|||
|
|||
|
|||
## Release It |
|||
|
|||
You'll need a [PyPi](https://pypi.org/) account and to be added as a maintainer. |
|||
|
|||
``` |
|||
$ make publish |
|||
``` |
@ -1,21 +1,72 @@ |
|||
html_head = """ |
|||
def html_head(stylesheet): |
|||
header = """ |
|||
<!DOCTYPE html> |
|||
<html lang="en"> |
|||
<head> |
|||
<!-- Generated with distribusi https://git.vvvvvvaria.org/rra/distribusi --> |
|||
<meta http-equiv="content-type" content="text/html; charset=utf-8"> |
|||
<style> |
|||
.image{max-width: 100%;} |
|||
.pdf {width:100%;} |
|||
div{width: 640px;float:left;padding:1em;} |
|||
video {width:640px;} |
|||
.dir::before{content:"📁";font-size:18px;} |
|||
</style> |
|||
</head> |
|||
<body> |
|||
""" |
|||
<head> |
|||
<!-- Generated with distribusi https://git.vvvvvvaria.org/rra/distribusi --> |
|||
<meta http-equiv="content-type" content="text/html; charset=utf-8"> |
|||
{} |
|||
</head> |
|||
<body> |
|||
""".format(stylesheet) |
|||
return header |
|||
|
|||
html_footer = """ |
|||
</body> |
|||
</body> |
|||
</html> |
|||
""" |
|||
|
|||
styles = """ |
|||
body{ |
|||
position: absolute; |
|||
top:20px; |
|||
} |
|||
|
|||
.stylesheet{ |
|||
display: none; |
|||
} |
|||
|
|||
div{ |
|||
width: 640px; |
|||
float:left; |
|||
padding:1em; |
|||
} |
|||
div.folder, div.README{ |
|||
float: none; |
|||
padding: 0.5em 1em; |
|||
} |
|||
a.dir::before{ |
|||
content:"📁"; |
|||
font-size:18px; |
|||
padding-right: 1em; |
|||
text-decoration:none; |
|||
} |
|||
a.text::before{ |
|||
content:"☛"; |
|||
font-size:18px; |
|||
padding-right: 1em; |
|||
text-decoration:none; |
|||
} |
|||
a.back::before{ |
|||
content:"⮪"; |
|||
font-size:18px; |
|||
padding-right: 1em; |
|||
text-decoration:none; |
|||
} |
|||
a.back{ |
|||
position: fixed; |
|||
top:0; |
|||
left:0; |
|||
padding:0.5em; |
|||
} |
|||
|
|||
.image{ |
|||
max-width: 100%; |
|||
} |
|||
.pdf { |
|||
width:100%; |
|||
} |
|||
video { |
|||
width:640px; |
|||
} |
|||
""" |
Loading…
Reference in new issue