Skip to content
Snippets Groups Projects
Select Git revision
  • b843aa0c4fdcc997dc74ff1a6ae633f139550866
  • main default protected
  • renovate/solid_queue-1.x-lockfile
  • renovate/importmap-rails-2.x-lockfile
  • renovate/redis-5.x-lockfile
  • renovate/ruby
  • renovate/selenium-webdriver-4.x-lockfile
  • renovate/icalendar-2.x-lockfile
  • renovate/debug-1.x-lockfile
  • renovate/turbo-rails-2.x-lockfile
  • renovate/gcr.io-kaniko-project-executor-1.x
  • eh22 protected
  • update-rubocop
13 results

rescheduled

  • Clone with SSH
  • Clone with HTTPS
  • Teal's avatar
    Teal authored
    When adding a new conference, we now automatically run the import job and let the user choose relevant stages. Users can also manage relevant stages from the conference edit view.
    
    Added tracking of import histories. The app now knows when an import has been started and ended, and errors are logged into the DB as well and exposed to the frontend.
    
    Added an interstitial page for fetching conference data, plus a way to manually trigger imports if no data was found.
    b843aa0c
    History

    C3Lingo rescheduled

    Rapid assignment of shifts for chaos events

    Overview

    Features

    • Automatic schedule import for re:publica, Pretalx/Hub
    • Integrations with C3Lingo Filedrop, Engelsystem and more
    • Collaborate live on session changes using websockets
    • One-click assignment of angels
    • Express interest (with optional note) for sessions
    • Stay on top of assignments with My Assignments view and personalized calendar (.ics) feeds
    • Add globally visible notes to sessions
    • Multiple conferences supported
    • Conflict detection even across conferences
    • Self-service account creation with optional invite-token
    • Manage source and target languages per angel and per session
    • Dark mode and (mostly) responsive web app
    • Statistics and leaderboards
    • ... and more 🎁

    Technologies:

    Dev environment

    The project comes with a devcontainer for VSCode and compatible editors. Simply open the project folder in Code (or using devcontainer open <path>) and after a few seconds, a suitable container should be ready.

    Run bin/dev in the integrated terminal to start the dev webserver and the tailwind watch job (see Procfile.dev for details). Access your local rescheduled at http://127.0.0.1:3000.

    Secrets

    The application requires some secrets, as of writing these include:

    • filedrop_user
    • filedrop_password
    • heartbeat_deen
    • heartbeat_more
    • telegram_bot_token

    You can supply the secrets by running rails credentials:edit or pass them as environment variable in upper case (e.g. FILEDROP_USER).

    Preparation for an event

    tbd.

    • talks about seeds
    • set "relevant stages"
      relevant = ["Saal 1", "Saal ZIGZAG", "Saal GLITCH", "Stage HUFF", "Stage YELL", "Canceled talk"]
      conf=Conference.find_by(slug: "38c3")
      conf.relevant_stages=conf.stages.select { |val| relevant.include?(val[:name]) }
    • sort stages
      Stage.where(name: "Saal 1").update(weight: 10)
      Stage.where(name: "Saal GLITCH").update(weight: 20)
      Stage.where(name: "Saal ZIGZAG").update(weight: 30)
      Stage.where(name: "Stage HUFF").update(weight: 40)
      Stage.where(name: "Stage YELL").update(weight: 50)

    In production

    See rescheduled-deploy for a full docker-compose stack and more explanations.

    Colors (darkmode)

    • text: text-slate-300

    • text (overlay): text-slate-200

    • text light: text-slate-400

    • logo: text-white

    • highlight: text-red-500

    • dark background: bg-zinc-700

    • light background: bg-gray-900

    • overlay: bg-gray-600

    • input: bg-zinc-900

    • shadow: gray-400

    Tips and Tricks

    Helpful rails tasks

    By running bin/rails <command> you can trigger some helpful actions, such as

    • rails c[onsole]: Start interactive ruby shell
    • rails db: Start sqlite shell with the currently used DB
    • rails db:migrate: Run pending DB migrations, automatically done by docker image on start
    • rails db:seed (Re-)import DB seeds from db/seeds.rb
    • rails secret generate a random secret, e.g. for secret_key_base
    • rails generate Powerful tool to generate boilerplate, run it to see list of options

    In rails console

    • Manually trigger sync job

      FetchConferenceDataJob.perform_now("38c3")
    • Promote user to shiftcoordinator

      User.find_by(name:"username_here").update(shiftcoordinator: true)
    • Reset user password

      pw = SecureRandom.alphanumeric(12)
      User.find_by(name:"username_here").update(password: pw, password_confirmation: pw)
    • Print differences between local assignments and those in the engelsystem (taking into account assignments in the "variant conferences")

      Conference.find_by(slug:"38c3").compare_engelsystem_shifts([Conference.find_by(slug:"38c3-more"), Conference.find_by(slug: "38c3-orga")])
    • Send a test message to Telegram

      TelegramGroupChatNotificationJob.perform_now(text: "der habicht sieht die gegenwart")
    • List all notes angels put in their candidacies:

      Candidate.includes(:user, :session).where.not(note: [nil, ""]).pluck('sessions.title','users.name', :note)