Giter VIP home page Giter VIP logo

hagrid's Introduction

hagrid

This is a software for merchandise sale at Chaos Communication Congress.

Features

  • Configure Products (Hoodie, Shirt, Zipper, ...) in various sizes (Fitted M, Unisex 5XL, ...).
  • Display product availability in a public dashboard.
  • Allow teams to apply for and edit their reservations.
  • Let c3foc manage reservations.

Design principles

  • All Functionality should not require javascript to be enabled in the user's browser. Javascript is used for bootstrap's responsive menus on small screens and for some cosmetics.

Setup

For now, this is a pretty standard Django Application developed with python3.7. Use pip install -U -r requirements.txt (in a seperate python environment/virtualenv) to install the dependencies.

Development

Setting up hagrid for local development is simple.

  1. Run ./manage.py migrate to setup a test database.
  2. Run ./manage.py createsuperuser to setup a default admin user.
  3. Run ./manage.py runserver to start the local development server.

Production

Make sure to adjust the following settings in a local_settings.py for use in production.

  • ALLOWED_HOSTS
  • DEBUG (should be False)
  • SECRET_KEY (should be random and secret)
  • SITE_URL (URL for building absolute links)
  • MEDIA_ROOT (where to put user-uploaded content)
  • DATABASES

See the Django Docs or the comments in settings.py on what these do.

Run python3 manage.py migrate to initialize the database.

Run python3 manage.py collectstatic to collect all static files into the static.dist folder, from where all files under /static/ should be served from. Also, everything under /media/ should point to the MEDIA_ROOT you configured. You probably want to use a webserver and uwsgi or something similar for the setup.

All configuration/management views are only visible to logged in superusers. Using ./manage.py createsuperuser, create a new superuser and login on the webpage.

hagrid's People

Contributors

dependabot[bot] avatar doralitze avatar felixrindt avatar kaibu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

hagrid's Issues

Images with RGBA format cannot be saved as JPEG

The software saves gallery images as JPEGs. JPEG does not contain an alpha channel and as a consequence an OSError is thrown.

Two approaches possible:

  • convert uploaded PNGs to JPEG by removing alpha channel (degrades quality)
  • save images as PNG

Find a way to provide feedback for cancellations

Reservations might get cancelled, maybe because the applicant is not part of a team or change of plans. There should be a way to provide a cancellation reason. That might be done

  • via phone or email or personally, in which case we don't need additional features
  • through hagrid

Update Python packages

Some python packages (at least django) received some major (security-) updates since the versions pinned inside requirements.txt. These packages need to be updated to the next secure version and one needs to check the functionality of the website after each update. (The last one would also be a great opportunity in order to write some propper unit tests.)

Automatic Pickup reminders

When a reservation is marked as "ready to be picked up", we could send out automatic email/DECT reminders so people can come and pick up their order. There could be additional email notifications for other events aswell.

Clean up QR action view

  • Better styling/UX of the view
  • maybe also allow to set to "ready to be picked up" directly? (related to #9 )
  • redirect to something sensible maybe?
  • do not mix of UUID4s and randomascii strings for secrets
  • absolute URL reversal for QR url

Cache dashboard

It takes a while to render the dashboard, but there are a lot of requests for the dashboard (and gallery maybe aswell).

We should cache the site.

It should be invalidated when availability/variations change. Relates to #13

Reprint table header on packing pdf

The packing table header needs to be reprinted when the packing table reaches a new packing section. It should also be reprinted if there was a page break and a new packing section shouldn't be started when it would only contain the header on the current page.

Some web forms are broken

  • In the Availability config, hovering over one element highlights a different row. Maybe IDs are broken?!
  • Pressing F5 in the Availibility Config might resubmit the form.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.