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

Enrico Zini's avatar
Enrico Zini committed
4
5
WARNING: project moved to https://salsa.debian.org/nm-team/nm.debian.org

6
7
## Running this code on your own machine
### Dependencies
8

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

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

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

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

24
### Fill in data
25
Visit https://nm.debian.org/am/db-export to download nm-mock.json; for privacy,
Enrico Zini's avatar
Enrico Zini committed
26
27
28
29
30
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
31

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

34
35
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
36

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

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


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

50
    ./manage.py housekeeping
Enrico Zini's avatar
Enrico Zini committed
51
52


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

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.