Get the latest version of Gramps (currently "trunk" from SVN; see Brief introduction to SVN). This will become an easy-to-install package once Gramps 3.5 is released. Below, it is assumed that you have the following installed:
- Latest Gramps, installed in a folder called "trunk"
- Django version 1.4 or 1.3
Once you have built Gramps trunk:
- cd trunk
you are then ready to make and run Gramps-Connect. These are the basic steps for running in a test development:
- cd trunk/src/webapp
- this will build all tables, and populate with default information
- you should also define a superuser ID/Password here when prompted (this will be the account which can edit data, and can create new accounts).
- make run
- this will start-up a testing webserver
- Point your browser to http://localhost:8000/ and begin using Gramps-Connect
You have three options for populating your on-line database:
First, you can enter data on the web. Currently only the add person function works.
Second, you can import data on the web. While running Gramps-Connect:
- Login with superuser ID/Password you created above
- Go to Reports
- Select an Import row
- Enter the Input File Format (iff) and Input URL (i), like so:
- Press the "Run" button
- The data will begin to be imported. (Because, as a default, the data is going into a sqlite3 database backend that has little concurrency, you won't be able to do much until the import is done. Warning: this is a little slower than Gramps import.)
- Once the import is done, you can browse most of the data (it is all there (except tags), which you can verify with an export)
Finally, you can also export data to Django while running the Gramps desktop version. Just select the Django export option.
Running on a real system
Gramps-connect is written using the Django web development framework. You can deploy a Django application using many methods. You can also use many different database backends, such as MySQL and Postgresql. In this example, we will deploy using the simplest options: wsgi and sqlite3, respectively.
Dependencies: Apache we server, mod_wsgi for Apache, Django, and sqlite3.
- Install and start Apache
- Install mod_wsgi, django, and sqlite3
- Edit /etc/httpd/conf/httpd.conf
- Place the Gramps source in a proper location
- Create the wsgi script
- Set the file permissions
- Restart httpd
In this example, I have installed the files in /usr/local/wsgi
The contents are of that directory are:
- scripts - location of the myapp.wsgi script (below)
- static - contents of Django materials for admin views
- trunk - Gramps SVN trunk
Contents of /usr/local/wsgi/scripts/myapp.wsgi:
import os import sys os.environ['DJANGO_SETTINGS_MODULE'] = 'webapp.settings' os.environ['HOME'] = '/usr/local/wsgi' sys.path.append('/usr/local/wsgi/trunk/src') import django.core.handlers.wsgi application = django.core.handlers.wsgi.WSGIHandler()
Create the Gramps-Connect database, as above.
- chmod a+rw trunk/src/webapp/sqlite.db
- chmod a+xw trunk/src/webapp/
Additions to /etc/httpd/conf/httpd.conf, for example:
<Directory /usr/local/wsgi/scripts> Order allow,deny Allow from all </Directory> <VirtualHost XXX.XXX.XX.XXX:80> ServerAdmin email@example.com DocumentRoot /var/www/html/ ServerName somename.org ErrorLog logs/gramps-connect-error_log CustomLog logs/gramps-connect-access_log common WSGIScriptAlias / /usr/local/wsgi/scripts/myapp.wsgi Alias /gramps-media/ /usr/local/wsgi/static/media/ </VirtualHost>
The Gramps-Connect source is defined to match sqlite3 and the above settings. If you would like to change any of this, you'll probably also have to change trunk/src/webapp/settings.py.
One everything is setup, restart the webserver:
service httpd restart
There are a gazillion things that haven't been added yet. But this section lists some conceptual issues that will need to be thought out.
- Privacy: "[Living]" is used, but names still appear in alphabetical order
- Related to patronymic privacy bug 4538? No, this is a different, gramps-connect specific issue. But the issue from #4538 is also a problem in Gramps-Connect, and will have to be solved a different way.
- Import/Export 100% of all data
- Tags missing
- Media missing (need a place to put them)
- Make 100% of data viewable
- Alternate Locations
- Make it internationalized and localized (feature request 3417)
- Make it look nice
- Some items need better CSS (tables)
- Some items need better HTML (buttons)
- Create interfaces for:
- User settings
- Password, email, etc
- Gramps preferences
- Make 100% of data editable
- Add additional functionality
- Advanced search