Simple alternative to Doodle polls and scheduling (Python 3, Django 3, JavaScript)

Overview

What is jawanndenn?

Screenshot of poll creation in jawanndenn

jawanndenn is a simple web application to schedule meetings and run polls, a libre alternative to Doodle. It is using the following technology:

jawanndenn is libre software developed by Sebastian Pipping. The server code is licensed under the GNU Affero GPL license version 3 or later whereas the client code is licensed under the GNU GPL license version 3 or later.

Please report bugs and let me know if you like it.

Poll Setup Format

The textarea titled "Setup (JSON)" uses a simple JSON-based format that knows the following keys:

  • equal_width — a bool to control whether all options are pumped up to the same width (true or false) to counter potential voter bias
  • lifetime — duration after which this poll will be deleted; can be "week" or "month"; an enum-like string
  • options — a list of strings, one for each option; supports Markdown-like syntax for: bold, italic, inline code
  • title — the title or headline of the poll to run; supports Markdown-like syntax for: bold, italic, inline code

Installation

To install the latest release without cloning the Git repository:

# pip3 install jawanndenn --user

To install from a Git clone:

# ./setup.py install --user

Deployment with docker-compose

Create a simple file .env like this one:

JAWANNDENN_POSTGRES_NAME=jawanndenn
JAWANNDENN_POSTGRES_USER=jawanndenn
JAWANNDENN_POSTGRES_PASSWORD=dEb2PIcinemA8poH
JAWANNDENN_SECRET_KEY=606ea88f183a27919d5c27ec7f948906d23fdd7821684eb59e8bcf7377e3853b

Make sure to use your own values!

You can then build and run a docker image using docker-compose up --build.

PostgreSQL data is saved to ~/.jawanndenn-docker-pgdata/ on the host system. The app is served on localhost:54080.

Command line usage

When installed, invocation is as simple as

# jawanndenn

During development, you may want to run jawanndenn from the Git clone using

# PYTHONPATH=. python3 -m jawanndenn --debug

Currently supported arguments are:

# jawanndenn --help
usage: jawanndenn [-h] [--debug] [--host HOST] [--port PORT]
                  [--url-prefix PATH] [--database-sqlite3 FILE]
                  [--django-secret-key-file FILE] [--max-polls COUNT]
                  [--max-votes-per-poll COUNT] [--dumpdata]
                  [--loaddata FILE.json]

optional arguments:
  -h, --help            show this help message and exit
  --debug               Enable debug mode (default: disabled)
  --host HOST           Hostname or IP address to listen at (default:
                        127.0.0.1)
  --port PORT           Port to listen at (default: 8080)
  --url-prefix PATH     Path to prepend to URLs (default: "")
  --database-sqlite3 FILE
                        File to write the database to (default:
                        ~/jawanndenn.sqlite3)
  --django-secret-key-file FILE
                        File to use for Django secret key data (default:
                        ~/jawanndenn.secret_key)

limit configuration:
  --max-polls COUNT     Maximum number of polls total (default: 1000)
  --max-votes-per-poll COUNT
                        Maximum number of votes per poll (default: 40)

data import/export arguments:
  --dumpdata            Dump a JSON export of the database to standard output,
                        then quit.
  --loaddata FILE.json  Load a JSON export of the database from FILE.json,
                        then quit.

Migrating data from jawanndenn 1.x to 2.x

Migration takes four steps:

  1. Update to the latest version of jawanndenn 1.x, e.g. by running: pip2 install --upgrade 'jawanndenn<2'; the JSON data export was first introduced with release 1.6.3.
  2. Export existing polls:
    1. If you're using the commend line app: python2 -m jawanndenn --dumpdata > dump.json
    2. If you're using docker-compose: docker-compose run -T jawanndenn --database-pickle /data/polls.pickle --dumpdata > dump.json
  3. Deploy latest jawanndenn 2.x somewhere (as described above) or just pip3 install 'jawanndenn>=2' it somewhere
  4. Import the JSON dump created in step (2):
    1. If you're using the commend line app: python3 -m jawanndenn --loaddata dump.json
    2. If you're using docker-compose: docker-compose run -T jawanndenn sh -c 'cat > /tmp/dump.json && DJANGO_SETTINGS_MODULE=jawanndenn.settings python3 -m django loaddata /tmp/dump.json' < dump.json

Goals

Please check out the list of upcoming features.

Non-goals

  • Use of heavy frontend frameworks: building blocks only
  • Read availability from calendars

Thanks

Special thanks to Arne Maier (@KordonDev) for reporting an XSS vulnerability, responsibly.

Comments
  • Domain Subfolder

    Domain Subfolder

    Hi,

    I have installed jawanndenn under docker. As each web application, I access it throw an nginx web proxy (running on another docker container). There is SSL till the nginx proxy, then there is no SSL anymore.

    All web application have their specific unique subfolder. So, I want to access the jawanndenn application via the following URL: https://mydomain.com/jawanndenn. For other applications, I used to change the server (nginx, apache, tomcat, etc) root folder into the application container. Since jawanndenn is using bottle python which I am not familiar with, I have difficulties to configure the root folder. The application is not working as excepted since it cannot load other resources such as css and js files: see screenshot with a black square to hide my domain.

    image

    According the bottle documentation, it is possible to define a route somewhere inside the application. Is it really possible? If yes, where do I need to add the statement? I can edit the code when creating the docker image, it is fine for me...

    Thank you

    enhancement question 
    opened by JayBeeDe 7
  • Detailed Installation Instructions

    Detailed Installation Instructions

    Hi,

    there are a few environment variables in the docker-compose file which need to be filled. I can not find an explanation in the documentation, for example:

    JAWANNDENN_SENTRY_DSN JAWANNDENN_ALLOWED_HOSTS JAWANNDENN_URL_PREFIX JAWANNDENN_DEBUG

    Furthermore the cron container is not mentioned anywhere in the documentation.

    Thanks!

    opened by floari 4
  • Scroll?

    Scroll?

    The current https://jawanndenn.de/poll/858dd89c4f336eb4469391068e00ca363119204ff0cc58d194668d6e15aae4d7

    Doesn't scroll and there is no chance to add answers

    duplicate 
    opened by cquiroga95-zz 3
  • docker-compose installation results in 'ImportError: No module named main'

    docker-compose installation results in 'ImportError: No module named main'

    After trying for an hour I would like to ask for your help here: I was trying to install jawanndenn via docker-compose. Because of a proxy I had to change my docker-compose.yml like following:

    version: '2'
    
    services:
      jawanndenn:
        restart: always
        networks:
          - proxy
        build: .
        volumes:
          - '/data/docker/jawanndenn:/data'
        environment:
          - 'VIRTUAL_HOST=jawanndenn.mydomain.com'
          - 'LETSENCRYPT_HOST=jawanndenn.mydomain.com'
          - '[email protected]'
          - 'LETSENCRYPT_TEST=true'
    
    networks:
      proxy:
        external:
          name: proxy_proxy
    

    Running dc up -d && dc logs -f --tail=100 always gives me following log messages:

    Creating jawanndenn_jawanndenn_1
    Attaching to jawanndenn_jawanndenn_1
    jawanndenn_1  | Traceback (most recent call last):
    jawanndenn_1  |   File "/root/.local/bin/jawanndenn", line 11, in <module>
    jawanndenn_1  |     load_entry_point('jawanndenn==1.5', 'console_scripts', 'jawanndenn')()
    jawanndenn_1  |   File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 480, in load_entry_point
    jawanndenn_1  |     return get_distribution(dist).load_entry_point(group, name)
    jawanndenn_1  |   File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2691, in load_entry_point
    jawanndenn_1  |     return ep.load()
    jawanndenn_1  |   File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2322, in load
    jawanndenn_1  |     return self.resolve()
    jawanndenn_1  |   File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2328, in resolve
    jawanndenn_1  |     module = __import__(self.module_name, fromlist=['__name__'], level=0)
    jawanndenn_1  | ImportError: No module named main
    jawanndenn_1  | Traceback (most recent call last):
    jawanndenn_1  |   File "/root/.local/bin/jawanndenn", line 11, in <module>
    jawanndenn_1  |     load_entry_point('jawanndenn==1.5', 'console_scripts', 'jawanndenn')()
    jawanndenn_1  |   File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 480, in load_entry_point
    jawanndenn_1  |     return get_distribution(dist).load_entry_point(group, name)
    jawanndenn_1  |   File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2691, in load_entry_point
    jawanndenn_1  |     return ep.load()
    jawanndenn_1  |   File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2322, in load
    jawanndenn_1  |     return self.resolve()
    jawanndenn_1  |   File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2328, in resolve
    jawanndenn_1  |     module = __import__(self.module_name, fromlist=['__name__'], level=0)
    jawanndenn_1  | ImportError: No module named main
    jawanndenn_jawanndenn_1 exited with code 1
    

    Am I doing something wrong?

    opened by ghost 3
  • requirements(deps): bump sqlparse from 0.4.2 to 0.4.3

    requirements(deps): bump sqlparse from 0.4.2 to 0.4.3

    Bumps sqlparse from 0.4.2 to 0.4.3.

    Changelog

    Sourced from sqlparse's changelog.

    Release 0.4.3 (Sep 23, 2022)

    Enhancements

    • Add support for DIV operator (pr664, by chezou).
    • Add support for additional SPARK keywords (pr643, by mrmasterplan).
    • Avoid tokens copy (pr622, by living180).
    • Add REGEXP as a comparision (pr647, by PeterSandwich).
    • Add DISTINCTROW keyword for MS Access (issue677).
    • Improve parsing of CREATE TABLE AS SELECT (pr662, by chezou).

    Bug Fixes

    • Fix spelling of INDICATOR keyword (pr653, by ptld).
    • Fix formatting error in EXTRACT function (issue562, issue670, pr676, by ecederstrand).
    • Fix bad parsing of create table statements that use lower case (issue217, pr642, by mrmasterplan).
    • Handle backtick as valid quote char (issue628, pr629, by codenamelxl).
    • Allow any unicode character as valid identifier name (issue641).

    Other

    • Update github actions to test on Python 3.10 as well (pr661, by cclaus).
    Commits
    • fba15d3 Bump version.
    • b72a8ff Allow any unicode character as identifier name (fixes #641).
    • 07a2e81 Add docstring and comments.
    • 4235eb8 Add tests for utils.remove_quotes.
    • e269881 Update Changelog and authors.
    • c1a597e add backtick to remove_quotes character list
    • 893d7b2 Update CHANGELOG.
    • 403de6f Fixed bad parsing of create table statements that use lower case
    • a172486 Update Changelog.
    • 7de1999 CREATE TABLE tbl AS SELECT should return get_alias() for its column
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    enhancement dependencies 
    opened by dependabot[bot] 2
  • requirements(deps): bump faker from 14.0.0 to 14.1.0

    requirements(deps): bump faker from 14.0.0 to 14.1.0

    Bumps faker from 14.0.0 to 14.1.0.

    Release notes

    Sourced from faker's releases.

    Release v14.1.0

    See CHANGELOG.md.

    Changelog

    Sourced from faker's changelog.

    v14.1.0 - 2022-08-17

    • Add providers for bn_BD: address, automotive, bank, color, company, currency, date_time, geo, internet, job, person, phone_number and ssn. Thanks @​saanpritom.
    Commits
    • e0c2d8f Bump version: 14.0.0 → 14.1.0
    • ce60a34 :pencil: update CHANGELOG.md
    • 598b31a Add providers for bn_BD: address, automotive, bank, color, company, currenc...
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    enhancement dependencies 
    opened by dependabot[bot] 2
  • requirements(deps): bump tomli from 1.2.3 to 2.0.0

    requirements(deps): bump tomli from 1.2.3 to 2.0.0

    Bumps tomli from 1.2.3 to 2.0.0.

    Changelog

    Sourced from tomli's changelog.

    1.2.3

    • Fixed
      • Backport: Allow lower case "t" and "z" in datetimes

    2.0.0

    • Removed
      • Python 3.6 support
      • Support for text file objects as load input. Use binary file objects instead.
      • First argument of load and loads can no longer be passed by keyword.
    • Fixed
      • Allow lower case "t" and "z" in datetimes
    • Improved
      • Raise an error when dotted keys define values outside the "current table". Technically speaking TOML v1.0.0 does allow such assignments but that isn't intended by specification writers, and will change in a future specification version (see the pull request).

    1.2.2

    • Fixed
      • Illegal characters in error messages were surrounded by two pairs of quotation marks
    • Improved
      • TOMLDecodeError.__module__ is now the public import path (tomli) instead of private import path (tomli._parser)
      • Eliminated an import cycle when typing.TYPE_CHECKING is True. This allows sphinx-autodoc-typehints to resolve type annotations.

    1.2.1

    • Fixed
      • Raise an error if a carriage return (without a following line feed) is found in a multi-line basic string
    • Type annotations
      • Type annotate load input as typing.BinaryIO only to discourage use of deprecated text file objects.
    • Packaging
      • Remove legacy setup.py from PyPI source distribution. If you're a packager and absolutely need this file, please create an issue.

    1.2.0

    • Deprecated
      • Text file objects as input to load. Binary file objects should be used instead to avoid opening a TOML file with universal newlines or with an encoding other than UTF-8.

    1.1.0

    • Added
      • load can now take a binary file object

    1.0.4

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    enhancement dependencies 
    opened by dependabot[bot] 2
  • Where can ALLOWED_HOSTS be changed for testing?

    Where can ALLOWED_HOSTS be changed for testing?

    I am trying out jawanndenn on own server, but I cannot quite get it to work.

    I set up jawanndenn inside a virtualenv, where it was installed with pip3 install jawanndenn; then, I try to test it with:

    $ JAWANNDENN_ALLOWED_HOSTS="mysite.com" jawanndenn --host 0.0.0.0 --port 6789
    

    Then, when I fire up the browser at mysite.com:6789, I get Bad Request (400) in the browser, and the server terminal reports:

    Invalid HTTP_HOST header: 'mysite.com:6789'. You may need to add 'mysite.com' to ALLOWED_HOSTS (['0.0.0.0', '127.0.0.1', '0.0.0.0', 'localhost']).
    XX.YY.ZZ.WW- - [30/Nov/2021:11:37:59 +0000] "GET / HTTP/1.1" 400 143 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:94.0) Gecko/20100101 Firefox/94.0"
    

    Eh, however, I added it here in ALLOWED_HOSTS already:

    jawanndenn/lib/python3.8/site-packages/jawanndenn/settings.py:    'mysite.com',
    jawanndenn/lib/python3.8/site-packages/django/conf/global_settings.py:ALLOWED_HOSTS = [ "mysite.com" ]
    

    ... and I still get the above message.

    Any suggestions how can I get this running for testing?

    question 
    opened by sdbbs 2
  • requirements(deps): bump packaging from 21.0 to 21.2

    requirements(deps): bump packaging from 21.0 to 21.2

    Bumps packaging from 21.0 to 21.2.

    Release notes

    Sourced from packaging's releases.

    21.2

    • Update changelog entry for 21.1

    Full Changelog: https://github.com/pypa/packaging/compare/21.1...21.2

    21.1

    What's Changed

    New Contributors

    Full Changelog: https://github.com/pypa/packaging/compare/21.0...21.1

    Changelog

    Sourced from packaging's changelog.

    21.2 - 2021-10-29

    
    * Update documentation entry for 21.1.
    

    21.1 - 2021-10-29

    • Update pin to pyparsing to exclude 3.0.0.
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    enhancement dependencies 
    opened by dependabot[bot] 2
  • use valid value for X-Frame-Options

    use valid value for X-Frame-Options

    SAMESITE is not a valid value for the X-Frame-Options header.

    This is also causing an error in the Firefox developer console:

    Invalid X-Frame-Options: “SAMESITE” header from “https://jawanndenn.de/static/3rdparty/github-buttons-4.0.1/d…-btn.html?user=hartwork&repo=jawanndenn&type=star&count=true” loaded into “https://jawanndenn.de/”.
    

    The intention was probably to set it to sameorigin, see: https://developer.mozilla.org/de/docs/Web/HTTP/Headers/X-Frame-Options

    bug 
    opened by hannob 2
  • Image now needs no root privilege

    Image now needs no root privilege

    Hi, I've change the dockerfile so runs with a non-root user. To resolve issue https://github.com/hartwork/jawanndenn/issues/37 and to help myself. Thanks for your work.

    opened by flusile 2
  • "docker-compose up --build" fails with docker-compose 2.x.x (but not 1.x.x)

    [[email protected] jawanndenn]# docker-compose up --build
    WARN[0000] The "JAWANNDENN_DEBUG" variable is not set. Defaulting to a blank string.
    WARN[0000] The "JAWANNDENN_URL_PREFIX" variable is not set. Defaulting to a blank string.
    WARN[0000] The "JAWANNDENN_SENTRY_DSN" variable is not set. Defaulting to a blank string.
    WARN[0000] The "JAWANNDENN_ALLOWED_HOSTS" variable is not set. Defaulting to a blank string.
    WARN[0000] The "JAWANNDENN_SENTRY_DSN" variable is not set. Defaulting to a blank string.
    WARN[0000] The "JAWANNDENN_URL_PREFIX" variable is not set. Defaulting to a blank string.
    WARN[0000] The "JAWANNDENN_ALLOWED_HOSTS" variable is not set. Defaulting to a blank string.
    WARN[0000] The "JAWANNDENN_DEBUG" variable is not set. Defaulting to a blank string.
    WARN[0000] The "JAWANNDENN_SENTRY_DSN" variable is not set. Defaulting to a blank string.
    [+] Running 0/3
     ⠿ postgres Error                                                                                                                                        1.4s
     ⠿ redis Error                                                                                                                                           1.4s
     ⠿ cron Error                                                                                                                                            1.4s
    Error response from daemon: pull access denied for jawanndenn_jawanndenn, repository does not exist or may require 'docker login': denied: requested access to the resource is denied
    [[email protected] jawanndenn]#
    
    question 
    opened by beppe9000 2
  • Footer should include an possibility to insert an impressum

    Footer should include an possibility to insert an impressum

    Great small piece of software. Works like a charm. I miss a possibility to insert a Impressum which is obligatory for public web services in Germany in my opinion all over the in the EU

    How can I insert such a Impressum or a link to a Impressum?

    opened by elearningdienst 1
  • Add ternary choice

    Add ternary choice "maybe/dunno"

    Really cool project, I feeled desperate to find a nice meetings scheduler!

    Would be nice to have a three possible vote values: yes, no but also dunno/possible if really needed.

    Doodle provides that (as well as framadate), I think that's somehow the only choice you can answer sometimes.

    enhancement 
    opened by bagage 4
Releases(2.4.5)
A simple Django dev environment setup with docker for demo purposes for GalsenDev community

GalsenDEV Docker Demo This is a basic Django dev environment setup with docker and docker-compose for a GalsenDev Meetup. The main purposes was to mak

3 Jul 03, 2021
Realworld - Realworld using Django and HTMX

Realworld - Realworld using Django and HTMX

Dan Jacob 53 Jan 05, 2023
PicoStyle - Advance market place website written in django

Advance market place website written in django :) Online fashion store for whole

AminAli Mazarian 26 Sep 10, 2022
Sistema administrador de contranas desarrollador en Django

Sistema Contrasenas Desarrolado en Django Proyecto sistema de administracion de contraseñas, de la experiencia educativa Programacion Segura Descripci

Ibrain Rodriguez Espinoza 1 Sep 24, 2022
Django Livre Bank

Django Livre Bank Projeto final da academia Construdelas. API de um banco fictício com clientes, contas e transações. Integrantes da equipe Bárbara Sa

Cecília Costa 3 Dec 22, 2021
Coltrane - A simple content site framework that harnesses the power of Django without the hassle.

coltrane A simple content site framework that harnesses the power of Django without the hassle. Features Can be a standalone static site or added to I

Adam Hill 58 Jan 02, 2023
Easy thumbnails for Django

Easy Thumbnails A powerful, yet easy to implement thumbnailing application for Django 1.11+ Below is a quick summary of usage. For more comprehensive

Chris Beaven 1.3k Dec 30, 2022
Adding Firebase Cloud Messaging Service into a Django Project

Adding Firebase Cloud Messaging Service into a Django Project The aim of this repository is to provide a step-by-step guide and a basic project sample

Seyyed Ali Ayati 11 Jan 03, 2023
Django API creation with signed requests utilizing forms for validation.

django-formapi Create JSON API:s with HMAC authentication and Django form-validation. Version compatibility See Travis-CI page for actual test results

5 Monkeys 34 Apr 04, 2022
Improved Django model inheritance with automatic downcasting

Polymorphic Models for Django Django-polymorphic simplifies using inherited models in Django projects. When a query is made at the base model, the inh

1.4k Jan 03, 2023
Declarative model lifecycle hooks, an alternative to Signals.

Django Lifecycle Hooks This project provides a @hook decorator as well as a base model and mixin to add lifecycle hooks to your Django models. Django'

Robert Singer 1k Dec 31, 2022
A pickled object field for Django

django-picklefield About django-picklefield provides an implementation of a pickled object field. Such fields can contain any picklable objects. The i

Gintautas Miliauskas 167 Oct 18, 2022
django-compat-lint

django_compat_lint -- check Django compatibility of your code Django's API stability policy is nice, but there are still things that change from one v

James Bennett 40 Sep 30, 2021
Transparently use webpack with django

Looking for maintainers This repository is unmaintained as I don't have any free time to dedicate to this effort. If you or your organisation are heav

Owais Lone 2.4k Jan 06, 2023
GameStop clone with Django

GameStop clone with Django This is my side project with GameStop clone Author: HackerApe GitHub Profile: View Profile LinkedIn Profile: View Profile

Dmitriy Shin 2 Dec 26, 2021
Location field and widget for Django. It supports Google Maps, OpenStreetMap and Mapbox

django-location-field Let users pick locations using a map widget and store its latitude and longitude. Stable version: django-location-field==2.1.0 D

Caio Ariede 481 Dec 29, 2022
A Blog Management System Built with django

Blog Management System Backend use: Django Features Enhanced Ui

Vishal Goswami 1 Dec 06, 2021
django-tables2 - An app for creating HTML tables

django-tables2 - An app for creating HTML tables django-tables2 simplifies the task of turning sets of data into HTML tables. It has native support fo

Jan Pieter Waagmeester 1.6k Jan 03, 2023
Django-shared-app-isolated-databases-example - Django - Shared App & Isolated Databases

Django - Shared App & Isolated Databases An app that demonstrates the implementa

Ajai Danial 5 Jun 27, 2022
Media-Management with Grappelli

Django FileBrowser Media-Management with Grappelli. The FileBrowser is an extension to the Django administration interface in order to: browse directo

Patrick Kranzlmueller 913 Dec 28, 2022