Skip to content
Snippets Groups Projects
README.org 3.99 KiB
Newer Older
* Dependencies

  - werkzeug
  - jinja
  - python2
  - python-pdfminer (for pdf2txt, used in metadata reading)

* Setup
** Base config

   see config/__init__.py. The variables should be self explanatory and you
   shouldn't have to modify them.

** Site config

   Create config/local.py. You will have to define the following variables there:

Christoph's avatar
Christoph committed
   - admins :: A dictionary username -> mailadress for the people
               moderating the evaluations. The mailaddresses are
               notified on emails to the admins alias and on new
               submission
Christoph's avatar
Christoph committed
   - groups :: A list of (regex, [username]). If the subject (=course) is
               matched by regex, all users in the list are selected,
               e.g are displayed the moderation request or sent the
               relevant mail
   - root :: A list of mailadresses of people who should get error message in
             case something goes wrong.
   - triggered :: A list of tuples (address, port, secret), that should get a
                  UDP-datagram if an evaluation gets accepted (see below)
   - mailfrom :: E-Mail address to use for all sent mails
Christoph's avatar
Christoph committed
   - weburl :: base URL of the web service

   The following variables are optional:

   - sendmails :: Set this to false in config.local if you want to see errors on
                  stderr and don't want send any mails to admins or submitters.
   - moddataurl :: Base URL of the PDF files that are to be moderated. This
                   should point to 'moddir' from the config.
   - modurl :: Base URL of the moderation interface.
   - pdfurl :: Base URL of the public pdfs. This should point to 'pdfdir' from
               the config.
Hans-Peter Deifel's avatar
Hans-Peter Deifel committed
   - delurl :: Base URL of the trashbin
   - pdf2txt :: Path to pdf2txt executable (default: "pdf2txt")
   - default_theme :: The name of the theme to use if the hostname of a request
                      is not matched by ~themes_by_url~. (type: String)
   - themes_by_url :: A list of tuples (hostname, theme) that specifies which
                      theme to use for request to a given hostname. This
                      overwrites ~default_theme~. See also [[file:themes.txt]].
                      (type: [(String, String)])
   - local_networks :: A list of network ranges (as strings) in the
                       format '10.0.0.0/8' or any format described at
                       https://pythonhosted.org/netaddr/ that should be
                       considered "internal" addresses. only these are
                       allowed to access files with the
                       `internal_net_only` meta value set to True
   Note, that the various *url config options are acutal URLs, while the *dir
   configs are filesystem paths.

   Example:

   #+BEGIN_EXAMPLE
Christoph's avatar
Christoph committed
     admins = {'foo': 'foo@example.com', 'bar': 'bar@example.com'}
Christoph's avatar
Christoph committed
     groups = [('INF-.*', [foo]),
               ('.*', [bar])]

     triggered = [('127.0.0.1', 6666, '\xc0\xff\xee\xba\xbe')]
     weburl = 'http://eva.example.com/'
     moddataurl = '/moderation/files'
     modurl = '/moderation'
     pdfurl = '/public_pdf'
     delurl = '/moderation/del'

     local_networks = [ '131.188.0.0/16',
                        '2001:638:a000::/45',
                        '192.168.0.0/16',
                        '10.0.0.0/8',
                        '172.16.0.0/12' ]
   #+END_EXAMPLE

* Hosting
** Mail handler

   The mailhandler script expects an email on stdin. This email has to be sent
Sebastian Hahn's avatar
Sebastian Hahn committed
   to ~something+{submit_full, submit-trimmed, admins}@something~ and contain
   a PDF attachment.

** Web application

   The file 'wsgi' defines a WSGI application for your webserver's pleasure.

   You can execute the script 'run_testserver.py' for testing purposes.

** Maintenance

   During Maintenance write a explanatory text into the file
   `UPGRADE_IN_PROGRESS` in your base directory. This will disable the
   website and should still work during maintenance work.

** TODO Sending push notifications