Graveyard is an attempt at open-source reimplementation of DraciDoupe.cz

Overview

Graveyard: Place for Dead (and Undead)

Documentation Status

Graveyard is an attempt at open-source reimplementation of DraciDoupe.cz (referred to as DDCZ in this text).

Developer's documentation is at Read the Docs.

Production is running at http://nove.dracidoupe.cz/ . But be warned, we are heading for the root domain soon!

Contributions

Contributions are welcome provided you agree your work will be shared under the same license as Graveyard (MIT). Please use black for code formatting.

If you don't know where to start, take a look at the roadmap or ask Almad on development Slack or in Pošta on DraciDoupe.cz.

Please install EditorConfig support for your editor (plugin for VS Code, plugin for PyCharm/WebStorm/IDEAJ)

Installation

You can run Graveyard either directly on your machine or inside Docker. Arm64 systems (like M1 Mac) are supported.

Installing and running Graveyard directly is faster (on some systems) and removes one lever of indirection, but it makes the setup more complicated.

Running in Docker requires familiarity with it, but it makes setup easier and guarantees consistency with the testing environment (and hopefully in the future, production environment as well).

In both cases, first clone this repository and run all commands in its directory.

Installing in Docker

Requirements:

Verify you have everything ready by running the test suite:

  • docker-compose run web python3 manage.py test

If you see output like this:

(graveyard-venv) [email protected]:~/projects/graveyard$ docker-compose run web python3 manage.py test
Starting graveyard_db_1 ... done
Creating test database for alias 'default'...
System check identified no issues (0 silenced).
....
----------------------------------------------------------------------
Ran 4 tests in 0.000s

OK
Destroying test database for alias 'default'...
(graveyard-venv) [email protected]:~/projects/graveyard$

You are all set. Afterwards, install database schema by running

  • docker-compose run web python3 manage.py migrate

and load data about pages

  • docker-compose run web python3 manage.py loaddata pages

You are done! Now you can just run the project and develop using

  • docker-compose start

Verify your application works and open http://localhost:8000 (localhost may be a different host if you are not working on linux). If so, create yourself a superuser.

For all commands in the manual that ask for python manage.py command, run docker-compose run web python3 manage.py command instead

Installing on your machine

Graveyard is currently written in Django. Requirements to develop it:

  • You have working Python 3 installation on your machine
  • You have working MySQL installation on your machine

To use the project, clone this repository, enter its directory with cd graveyard and:

  • Create a virtual environment: python3 -m venv gvenv
    • If this fails and you are on Ubuntu, you may need to sudo apt-get update && sudo apt-get install python3-pip && sudo pip3 install virtualenv
  • Enter it (on Mac OS X or Linux): source gvenv/bin/activate
  • Install dependencies within the pip install -r requirements.txt
  • Copy settings template: cp graveyard/settings/local.example.py graveyard/settings/local.py
  • Edit the settings above, especially enter credentials to your local MySQL (see Stack Overflow on how to do that)
    • When creating database, for compatibility, use latin2 as default charset: CREATE DATABASE dracidoupe_cz DEFAULT CHARACTER SET latin2;
  • Verify you have correct installation and run tests with python manage.py test. You should see output like this:
(graveyard-venv) [email protected]:~/projects/graveyard$ python manage.py test
Creating test database for alias 'default'...
System check identified no issues (0 silenced).
...........
----------------------------------------------------------------------
Ran 11 tests in 0.031s

OK
Destroying test database for alias 'default'...
(graveyard-venv) [email protected]:~/projects/graveyard$
  • If you see error like selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH. Please see https://sites.google.com/a/chromium.org/chromedriver/home, you have to go to the linked page and download the chromedriver to your computer. Place it somewhere in $PATH like /usr/local/bin
  • Create the database schema: python manage.py migrate
  • Load data about pages to see what's on production: python manage.py loaddata pages
  • Run the thing! python manage.py runserver
  • Observe if you have contact at http://localhost:8000

Installing on Windows

Follow the list above, except:

  • It is strongly recommended to use Python 3.7 and MySQL 8, otherwise you'll have to compile mysqlclient manually
  • Activate virtualenv using gvenv\Scripts\activate instaed of source gvenv/bin/activate

After Installation

  • Load initial version of editorial articles: python manage.py loaddata editorarticles
  • Create a superuser for yourself: python manage.py createsuperuser
  • Look around the administration interface at http://localhost:8000/admin/

Installation issues

  • Installation failes with "mysql_config not found"

If you get something like this:

    File "/tmp/pip-install-wfhe9zue/mysqlclient/setup_posix.py", line 29, in mysql_config
        raise EnvironmentError("%s not found" % (_mysql_config_path,))
    OSError: mysql_config not found

you may be using MariaDB fork of MySQL that the Python client is not equipped to talk to, installation-wise. You need to manually symlink the appropriate command:

ln -s /usr/bin/mariadb_config /usr/bin/mysql_config

If even mysql_config is not there, you have to install development headers for the database. That's apt-get install libmariadbclient-dev on Debian.

  • error: invalid command 'bdist_wheel'

Old setuptools: pip install setuptools -U

Setup

Create user account

Use python manage.py registeruser command, see manage.py registeruser --help for parameters.

Debugging with Django Debug Toolbar

  • pip install django-debug-toolbar==2.2.1
  • Add to local.py:
from .base import INSTALLED_APPS, MIDDLEWARE

INSTALLED_APPS.append("debug_toolbar")
MIDDLEWARE.insert(
    0,
    "debug_toolbar.middleware.DebugToolbarMiddleware",
)

INTERNAL_IPS = ["127.0.0.1", "::1"]
Minimal, super readable string pattern matching for python.

simplematch Minimal, super readable string pattern matching for python. import simplematch simplematch.match("He* {planet}!", "Hello World!") {"p

Thomas Feldmann 147 Dec 01, 2022
Do you need a screensaver for CircuitPython? Of course you do

circuitpython_screensaver Do you need a screensaver for CircuitPython? Of course you do Demo video of dvdlogo screensaver: screensaver_dvdlogo.mp4 Dem

Tod E. Kurt 8 Sep 02, 2021
These are After Effects and Python files that were made in the process of creating the video for the contest.

spirograph These are After Effects and Python files that were made in the process of creating the video for the contest. In the python file you can qu

91 Dec 07, 2022
Is a polybar module that will show you your progress in Hack The Box

HTB-Status for Polybar Is a polybar module that will show you your progress in Hack The Box indicating your current rank, global rank, points and resp

bitc0de 8 Jan 14, 2022
Python module to work with Magneto Database directly without using broken Magento 2 core

Python module to work with Magneto Database directly without using broken Magento 2 core

Egor Shitikov 13 Nov 10, 2022
Calculate the efficient frontier

关于 代码主要参考Fábio Neves的文章,你可以在他的文章中找到一些细节性的解释

Wyman Lin 104 Nov 11, 2022
Python Excuse Generator

Excuse Generator Python Excuse Generator This project is an excuse generator that provides the user with an excuse as to why they weren't paying atten

Collin Sanders 5 Jul 07, 2022
Release for Improved Denoising Diffusion Probabilistic Models

improved-diffusion This is the codebase for Improved Denoising Diffusion Probabilistic Models. Usage This section of the README walks through how to t

OpenAI 1.2k Dec 30, 2022
Сервис служит прокси между cервисом регистрации ошибок платформы и системой сбора ошибок Sentry

Sentry Reg Service Сервис служит прокси между Cервисом регистрации ошибок платформы и системой сбора ошибок Sentry. Как развернуть Sentry onpremise. С

Ingvar Vilkman 13 May 24, 2022
A simple method to create strong password.

A simple method to create strong password.

1 Jan 23, 2022
Web app for keeping track of buildings in danger of collapsing in the event of an earthquake

Bulina Roșie 🇷🇴 Un cutremur în București nu este o situație ipotetică. Este o certitudine că acest lucru se va întâmpla. În acest context, la mai bi

Code for Romania 27 Nov 29, 2022
Google Scholar App Using Python

Google Scholar App Watch the tutorial video How to build a Google Scholar App | Streamlit #30 Demo Launch the web app: Reproducing this web app To rec

Chanin Nantasenamat 4 Jun 05, 2022
x-tools is a collection of tools developed in Python

x-tools X-tools is a collection of tools developed in Python Commands\

5 Jan 24, 2022
YunoHost is an operating system aiming to simplify as much as possible the administration of a server.

YunoHost is an operating system aiming to simplify as much as possible the administration of a server. This repository corresponds to the core code, written mostly in Python and Bash.

YunoHost 1.5k Jan 09, 2023
Daily knowledge pills to get better in Python.

Python daily pills Daily knowledge pills to get better Python code. Why Does your Python code suffers of any of this symptoms? Incorrect Indentation I

Jeferson Vaz dos Santos 35 Sep 19, 2022
Check COVID locations of interest against Google location history

Location of Interest Checker Script to compare COVID locations of interest to Google location history. The script produces a map plot (as shown below)

9 Mar 30, 2022
simple password manager.

simple password manager.

1 Nov 18, 2021
Werkzeug has a debug console that requires a pin. It's possible to bypass this with an LFI vulnerability or use it as a local privilege escalation vector.

Werkzeug Debug Console Pin Bypass Werkzeug has a debug console that requires a pin by default. It's possible to bypass this with an LFI vulnerability

Wyatt Dahlenburg 23 Dec 17, 2022
Information about a signed UEFI Shell that can be used when Secure Boot is enabled.

SignedUEFIShell During our research of the BootHole vulnerability last year, we tried to find as many signed bootloaders as we could. We searched all

Mickey 61 Jan 03, 2023
Logo DYS (Doküman Yönetim Sitemi) API Python Implementation

dys-connector Logo DYS (Dokuman Yonetim Sistemi) API Python Implementation Python Package: https://pypi.org/project/dys-connector Quick Start from dys

Logo Group 8 Mar 19, 2022