README.md 2.16 KB
Newer Older
1
2
Debian NM Front Desk web application
====================================
Enrico Zini's avatar
Enrico Zini committed
3

4
5
## Running this code on your own machine
### Dependencies
6

Enrico Zini's avatar
Enrico Zini committed
7
    apt-get install python3-markdown python3-ldap3 python3-psycopg2 python3-xapian \
8
     python3-django python3-django-housekeeping \
9
10
     python3-debian python3-debiancontributors \
     python3-djangorestframework
Gianfranco Costamagna's avatar
Gianfranco Costamagna committed
11

12
### Configuration
Enrico Zini's avatar
Enrico Zini committed
13

14
    mkdir data # required by default settings
15
    cd nm2
Enrico Zini's avatar
Enrico Zini committed
16
17
    ln -s local_settings.py.devel local_settings.py
    edit local_settings.py as needed
Enrico Zini's avatar
Enrico Zini committed
18

19
20
### First setup
    
Gianfranco Costamagna's avatar
Gianfranco Costamagna committed
21
    ./manage.py migrate
Enrico Zini's avatar
Enrico Zini committed
22

23
### Fill in data
24
Visit https://nm.debian.org/am/db-export to download nm-mock.json; for privacy,
Enrico Zini's avatar
Enrico Zini committed
25
26
27
28
29
sensitive information are replaced with mock strings.

If you cannot login to the site, you can ask any DD to download it for you.
There is nothing secret in the file, but I am afraid of giving out convenient
email databases to anyone.
Enrico Zini's avatar
Enrico Zini committed
30

31
    ./manage.py import nm-mock.json
Enrico Zini's avatar
Enrico Zini committed
32

33
34
If you are a Front Desk member or a DAM, you can use
https://nm.debian.org/am/db-export?full for a full database export.
Enrico Zini's avatar
Enrico Zini committed
35

36
37
### Sync keyrings
    rsync -az --progress keyring.debian.org::keyrings/keyrings/  ./data/keyrings/
38

39
40
### Run database maintenance
    
41
    ./manage.py housekeeping
Enrico Zini's avatar
Enrico Zini committed
42

43
44
45
### Run the web server
    
    ./manage.py runserver
Enrico Zini's avatar
Enrico Zini committed
46
47


48
## Periodic updates
Enrico Zini's avatar
Enrico Zini committed
49
50
51
You need to run periodic maintenance to check/regenerate the denormalised
fields:

52
    ./manage.py housekeeping
Enrico Zini's avatar
Enrico Zini committed
53
54


55
## Development
Enrico Zini's avatar
Enrico Zini committed
56
Development targets Django 1.8, although the codebase has been created with
Enrico Zini's avatar
Enrico Zini committed
57
Django 1.2 and it still shows in some places. Feel free to cleanup.
Enrico Zini's avatar
Enrico Zini committed
58
59
60
61
62
63
64
65
66
67
68
69

Unusual things in the design:

* `backend/` has the core models. Note that `backend.models.Process` is the
  old-style workflow, and `process.model.Process` is the new style workflow.
* there is a custom permission system with a class hierarchy that starts at
  `backend.models.VisitorPermissions`, and that generates a set of permission
  strings that get tested in views and templates with things like `if
  "edit_bio" in visit_perms: …`.
* `backend.mixins.VisitorMixin` is the root of a class hierarchy of mixins used
  by most views in the site; those mixins implement the basis of resource
  instantiation and permission checking.