Difference between revisions of "Gramps-Connect"

From Gramps
Jump to: navigation, search
(Running on a real system)
(42 intermediate revisions by 4 users not shown)
Line 1: Line 1:
 +
{{man warn|This page is about the old deprecated gramps-connect based on Django|[https://github.com/gramps-project/django-webapp https://github.com/gramps-project/django-webapp]}}
 +
 +
{{man note|The new gramps-connect based on tornado that only works with Gramps master(upcoming Gramps 5.0) can be found at|[https://github.com/gramps-project https://github.com/gramps-project]}}
 +
 +
 
= Getting Started =
 
= Getting Started =
  
Get the latest version of Gramps (currently "trunk" from SVN; see [http://gramps-project.org/wiki/index.php?title=Brief_introduction_to_SVN Brief introduction to SVN]). This will become an easy-to-install package once Gramps 3.5 is released.
+
Without installing Gramps-Connect, you can test it on-line at http://gramps-connect.org/ I'll try to keep that up to date with the current code. It is current as of July 24 2012. You can view the site in three modes:
 +
 
 +
* not logged in - should see data of people dead and public. If either a person is dead, or any data is marked private, you should not be able to see it. Living people are marked with "[Living]" (as determined in Preferences -> Text).
 +
* logged in as regular user, ID: '''admin1''', password: '''gramps'''. You can see all data, run reports, export data, but cannot change the database.
 +
* logged in as super user, ID: '''admin''', password: '''gramps'''. You can edit, delete, add, import, etc.
 +
 
 +
== Status ==
 +
 
 +
Here, we'll update to let you know when you should remake your database, and keep you apprised of other changes.
 +
 
 +
July 27, 2012
 +
 
 +
'''New database format'''. The Database was changed to allow ordered families, parent_families, and tags.
 +
 
 +
'''Verified Import/Output'''. All genealogical data successfully imported and exported. Items missing from XML:
 +
 
 +
* researcher
 +
* name formats
 +
* home person
 +
* bookmarks
 +
* name maps
 +
 
 +
'''Cached Items'''. All items should get a cache when imported.
 +
 
 +
'''Updated SQL Samples'''. both empty.sql and example.sql where updated.
 +
 
 +
'''Speed Improvements'''. Added batch transactions and removed rebuild cache on import.
 +
 
 +
== Functionality ==
 +
 
 +
=== Search ===
 +
 
 +
The search will query the database using some knowledge of the data. Generally, the search above a browse screen will search all of the visible data.
 +
 
 +
The person search has been enhanced some:
 +
 
 +
* Generally it will look for whatever you type, in surname, given, and ID
 +
* If you use a comma, it assumes "Surname, Given" or "field=value, field=value, ..."
 +
** It will match at the start of field
 +
** '''S,G''' will give all people who have a surname that starts with "S" and a given name that starts with "G"
 +
** '''S,''' will give all people who have a surname that starts with "S"
 +
** ''',G''' will give all people who have a given name that starts with "G"
 +
* You can use ^ and $ to signify beginning and end respectively:
 +
** '''id=56''' (match all records that have a gramps_id that conatins 56)
 +
** '''id=^M00''' (match all records that have a gramps_id that starts with M00)
 +
** '''id=00$''' (match all records that have a gramps_id that ends with 00)
 +
** '''id=^M00056$''' (match all records that have a gramps_id that is exactly M00056)
 +
* You can add a period in any search term to search a subpart
 +
** '''father.name.suffix=Jr''' (matches all Jrs on Family Browse view)
 +
* There are some fields that you can also separate with commas:
 +
** '''private=1, surname=Smith, given=Joe, death=1850, birth=2000'''
 +
 
 +
Family search will search spouse names.
 +
 
 +
There is a lot of search refinement that can be added here!
 +
 
 +
=== Admin ===
 +
 
 +
One can also use the Admin functionality if logged in as a superuser. The superuser can:
 +
 
 +
* add new users
 +
* change the name of the site
 +
* view/add/edit/delete all objects
 +
* edit the CSS for each user
 +
 
 +
=== Notes ===
 +
 
 +
Can edit notes with a WYSIWYG editor. Limitations: removes background color tags on editing. You can add font face and font size, but only through manual HTML editing.
 +
 
 +
== Run your own Gramps-Connect in 30 seconds ==
 +
 
 +
=== Windows ===
 +
 
 +
1) Get Gramps from Trunk or Gramps 3.5
 +
 
 +
* https://gramps.svn.sourceforge.net/svnroot/gramps/trunk
 +
* https://gramps.svn.sourceforge.net/svnroot/gramps/branches/gramps35
 +
 
 +
Trunk now uses Gtk3, so use trunk if you can. Gramps 3.5 uses Gtk2.
 +
 
 +
I use Tortoise SVN. I put gramps on the Desktop, but anywhere will work.
 +
 
 +
2) Install pysqlite:
 +
 
 +
http://code.google.com/p/pysqlite/downloads/list
  
Once you have run ./autogen.sh, you are ready to make and run Gramps-Connect. These are the basic steps for running in a test development:
+
Run installer, and make sure you select the version of Python that you have.
  
# cd gramps/src/webapp
+
3) Install Django:
 +
 
 +
svn checkout http://code.djangoproject.com/svn/django/branches/releases/1.3.X/django
 +
to your Python site-packages directory:
 +
 
 +
c:\Python27\Lib\site-packages\
 +
 
 +
Django 1.3 or greater is required. Well tested on Django 1.3.
 +
 
 +
4) Change to trunk\src\webapp
 +
 
 +
And run the following at the command line (cmd):
 +
 
 +
5) c:\Python27\python.exe init.py > grampsdb\fixtures\initial_data.json
 +
 
 +
6) c:\Python27\python.exe manage.py syncdb
 +
 
 +
7) c:\Python27\python.exe manage.py runserver
 +
 
 +
8) Point your webbrowser to http://127.0.0.1:8000
 +
 
 +
=== Linux and Mac ===
 +
 
 +
Get the latest version of Gramps (currently "master" from Git; see [[Brief introduction to Git]]).
 +
 
 +
Below, it is assumed that you have the following installed:
 +
 
 +
* Gramps 4.1 (in examples below, installed in a folder called "trunk")
 +
* Django version 1.5 or greater
 +
* Sqlite3
 +
 
 +
Once you have built Gramps trunk:
 +
 
 +
* cd trunk
 +
* python3 setup.py build
 +
 
 +
you are then ready to make and run Gramps-Connect. These are the basic steps for running in a test development:
 +
 
 +
# cd trunk/gramps/webapp
 
# make
 
# make
 
## this will build all tables, and populate with default information
 
## this will build all tables, and populate with default information
## you should also define a superuser ID/Password here when prompted
+
## 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
 
# make run
## this will start up a testing webserver
+
## this will start-up a testing webserver
 
# Point your browser to http://localhost:8000/ and begin using Gramps-Connect
 
# Point your browser to http://localhost:8000/ and begin using Gramps-Connect
 +
 +
== Django ==
 +
 +
=== Django 1.4 ===
 +
tannooba says:
 +
 +
Since I'm using Django 1.4 I had to do the following tweaks:
 +
 +
# in settings.py, change TEMPLATE_CONTEXT_PROCESSORS from "django.core.context_processors.auth" to "django.contrib.auth.context_processors.auth".
 +
# In settings.py, changed TEMPLATE_LOADERS to say "django.template.loaders.filesystem.Loader" instead of ...loaders.filesystem.Load_template_source.
 +
 +
=== Django 1.6 ===
 +
 +
* [http://sourceforge.net/p/gramps/source/merge-requests/12/ Git Merge Request #12: Gramps-connect: Django compatibility fixes (open)], ''This ought to make Gramps-connect compatible with Django 1.3 on up to Django 1.6.'' - Paul Kilgo 2014-06-16  ( [http://sourceforge.net/u/oneeyedparrot/gramps/ci/c6b0e5713bc5f0e5e84c62840efc00c3e7545f24/log/?path= Patches] )
  
 
= Options =
 
= Options =
Line 17: Line 158:
 
You have three options for populating your on-line database:
 
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.
+
First, you can enter data on the web.  
  
 
Second, you can import data on the web. While running Gramps-Connect:
 
Second, you can import data on the web. While running Gramps-Connect:
Line 27: Line 168:
 
## iff=ged i=http://arborvita.free.fr/Kennedy/Kennedy.ged
 
## iff=ged i=http://arborvita.free.fr/Kennedy/Kennedy.ged
 
## iff=gramps i=http://gramps.svn.sourceforge.net/viewvc/gramps/trunk/example/gramps/example.gramps?revision=18333
 
## iff=gramps i=http://gramps.svn.sourceforge.net/viewvc/gramps/trunk/example/gramps/example.gramps?revision=18333
 +
## iff=gramps i=file://home/id/gramps/trunk/example/gramps/example.gramps
 
# Press the "Run" button
 
# Press the "Run" button
# The data will begin to be imported. (Because the data is going into a sqlite3 database backend as a default, you won't be able to do much until the import is done. Warning: this is a bit slow at the moment!)
+
# 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)
 
# 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. This is also a bit slow at the moment.
+
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 =
+
= Working =
  
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.
+
* It should be the case that you can edit the main parts of all primary data. In fact, for the primary data, you can edit, add, delete, and link references to each (like add notes to a person).  
 +
* You can run reports, exports, and imports from the web. All of these are listed in "Reports" for now, and you have to supply command-line options.
 +
* You can change the CSS theme in Admin -> Profile -> User. Give the name of the CSS file per user.
 +
* You can change the name of the site in Admin -> Config -> sitename.
  
Dependencies: Apache we server, mod_wsgi for Apache, Django, and sqlite3.
+
== Temporary ==
  
# Install and start Apache
+
Now that Gramps trunk has moved to Gtk GObject, Gramps depends on it. For older installs which don't have it, you might not be able to produce certain graphics, or output.
# 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
+
For the moment, I am using the branches/gramps35 repository (which I will mirror the non-gtk changes with trunk).
 
 
The contents are of that directory are:
 
 
 
* /usr/local/wsgi
 
** 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:
 
 
 
<pre>
 
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()
 
</pre>
 
 
 
Create the Gramps-Connect database, as above.
 
 
 
Permissions:
 
 
 
* chmod a+rw trunk/src/webapp/sqlite.db
 
* chmod a+xw trunk/src/webapp/
 
 
 
Additions to /etc/httpd/conf/httpd.conf, for example:
 
 
 
<pre>
 
<Directory /usr/local/wsgi/scripts>
 
    Order allow,deny
 
    Allow from all
 
</Directory>
 
 
 
<VirtualHost XXX.XXX.XX.XXX:80>
 
    ServerAdmin [email protected]
 
    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>
 
</pre>
 
 
 
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
 
  
 
= Bugs =
 
= Bugs =
  
 +
Please list any item that is not listed yet:
 +
# {{bug|7005}} unable to import GRAMPS example DBs
 +
# Not all items are private and living data protected. Need a security audit.
 +
# Many of the secondary level of information (LDS, Location, etc) are accessible for viewing or edit
 +
# Tags are not imported nor exported
 
# Privacy: "[Living]" is used, but names still appear in alphabetical order
 
# Privacy: "[Living]" is used, but names still appear in alphabetical order
 
#: Related to patronymic privacy bug {{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.
 
#: Related to patronymic privacy bug {{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.
 
+
# Need to be able to delete and move up/move down lists
= ToDo =
 
 
 
 
# Import/Export 100% of all data
 
# Import/Export 100% of all data
## Tags missing
+
## Import/Export Tags
## Media missing (need a place to put them)
+
## Import Media (need a place to put them)
# Make 100% of data viewable
+
# Missing edit/delete functionality:
 
## Person
 
## Person
 
### Events
 
### Events
Line 180: Line 269:
 
### References
 
### References
 
## Tag
 
## Tag
 +
 +
= Feature Requests =
 +
 +
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.
 +
 
# Make it internationalized and localized (feature request {{bug|3417}})
 
# Make it internationalized and localized (feature request {{bug|3417}})
 
# Make it look nice
 
# Make it look nice
Line 193: Line 287:
 
### Password, email, etc
 
### Password, email, etc
 
### Gramps preferences
 
### Gramps preferences
# Make 100% of data editable
 
## Edit
 
## Delete
 
 
# Add additional functionality
 
# Add additional functionality
 
## Bookmarks
 
## Bookmarks
 
## Maps
 
## Maps
 
## Advanced search
 
## Advanced search
 +
 +
= 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:
 +
 +
* /usr/local/wsgi
 +
** 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:
 +
 +
<pre>
 +
import os
 +
import sys
 +
 +
os.environ['DJANGO_SETTINGS_MODULE'] = 'gramps.webapp.settings'
 +
os.environ['HOME'] = '/usr/local/wsgi/trunk'
 +
os.environ['GRAMPS_RESOURCES'] = '/usr/local/wsgi/trunk/'
 +
sys.path.append('/usr/local/wsgi/trunk/')
 +
 +
import django.core.handlers.wsgi
 +
application = django.core.handlers.wsgi.WSGIHandler()
 +
</pre>
 +
 +
Create the Gramps-Connect database, as above.
 +
 +
Permissions:
 +
 +
* chmod a+rw trunk/gramps/webapp/sqlite.db
 +
* chmod a+xw trunk/gramps/webapp/
 +
 +
Additions to /etc/httpd/conf/httpd.conf, for example:
 +
 +
<pre>
 +
<Directory /usr/local/wsgi/scripts>
 +
    Order allow,deny
 +
    Allow from all
 +
</Directory>
 +
 +
<VirtualHost XXX.XXX.XX.XXX:80>
 +
    ServerAdmin [email protected]
 +
    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>
 +
</pre>
 +
 +
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 [http://gramps.svn.sourceforge.net/viewvc/gramps/trunk/src/webapp/settings.py?view=markup trunk/src/webapp/settings.py].
 +
 +
Once everything is setup, restart the webserver:
 +
 +
service httpd restart
 +
 +
[[Category:Developers/General]]
 +
[[Category:GEPS]]

Revision as of 08:24, 5 January 2017

Gnome-important.png
This page is about the old deprecated gramps-connect based on Django

https://github.com/gramps-project/django-webapp

Gramps-notes.png
The new gramps-connect based on tornado that only works with Gramps master(upcoming Gramps 5.0) can be found at

https://github.com/gramps-project


Getting Started

Without installing Gramps-Connect, you can test it on-line at http://gramps-connect.org/ I'll try to keep that up to date with the current code. It is current as of July 24 2012. You can view the site in three modes:

  • not logged in - should see data of people dead and public. If either a person is dead, or any data is marked private, you should not be able to see it. Living people are marked with "[Living]" (as determined in Preferences -> Text).
  • logged in as regular user, ID: admin1, password: gramps. You can see all data, run reports, export data, but cannot change the database.
  • logged in as super user, ID: admin, password: gramps. You can edit, delete, add, import, etc.

Status

Here, we'll update to let you know when you should remake your database, and keep you apprised of other changes.

July 27, 2012

New database format. The Database was changed to allow ordered families, parent_families, and tags.

Verified Import/Output. All genealogical data successfully imported and exported. Items missing from XML:

  • researcher
  • name formats
  • home person
  • bookmarks
  • name maps

Cached Items. All items should get a cache when imported.

Updated SQL Samples. both empty.sql and example.sql where updated.

Speed Improvements. Added batch transactions and removed rebuild cache on import.

Functionality

Search

The search will query the database using some knowledge of the data. Generally, the search above a browse screen will search all of the visible data.

The person search has been enhanced some:

  • Generally it will look for whatever you type, in surname, given, and ID
  • If you use a comma, it assumes "Surname, Given" or "field=value, field=value, ..."
    • It will match at the start of field
    • S,G will give all people who have a surname that starts with "S" and a given name that starts with "G"
    • S, will give all people who have a surname that starts with "S"
    • ,G will give all people who have a given name that starts with "G"
  • You can use ^ and $ to signify beginning and end respectively:
    • id=56 (match all records that have a gramps_id that conatins 56)
    • id=^M00 (match all records that have a gramps_id that starts with M00)
    • id=00$ (match all records that have a gramps_id that ends with 00)
    • id=^M00056$ (match all records that have a gramps_id that is exactly M00056)
  • You can add a period in any search term to search a subpart
    • father.name.suffix=Jr (matches all Jrs on Family Browse view)
  • There are some fields that you can also separate with commas:
    • private=1, surname=Smith, given=Joe, death=1850, birth=2000

Family search will search spouse names.

There is a lot of search refinement that can be added here!

Admin

One can also use the Admin functionality if logged in as a superuser. The superuser can:

  • add new users
  • change the name of the site
  • view/add/edit/delete all objects
  • edit the CSS for each user

Notes

Can edit notes with a WYSIWYG editor. Limitations: removes background color tags on editing. You can add font face and font size, but only through manual HTML editing.

Run your own Gramps-Connect in 30 seconds

Windows

1) Get Gramps from Trunk or Gramps 3.5

Trunk now uses Gtk3, so use trunk if you can. Gramps 3.5 uses Gtk2.

I use Tortoise SVN. I put gramps on the Desktop, but anywhere will work.

2) Install pysqlite:

http://code.google.com/p/pysqlite/downloads/list

Run installer, and make sure you select the version of Python that you have.

3) Install Django:

svn checkout http://code.djangoproject.com/svn/django/branches/releases/1.3.X/django to your Python site-packages directory:

c:\Python27\Lib\site-packages\

Django 1.3 or greater is required. Well tested on Django 1.3.

4) Change to trunk\src\webapp

And run the following at the command line (cmd):

5) c:\Python27\python.exe init.py > grampsdb\fixtures\initial_data.json

6) c:\Python27\python.exe manage.py syncdb

7) c:\Python27\python.exe manage.py runserver

8) Point your webbrowser to http://127.0.0.1:8000

Linux and Mac

Get the latest version of Gramps (currently "master" from Git; see Brief introduction to Git).

Below, it is assumed that you have the following installed:

  • Gramps 4.1 (in examples below, installed in a folder called "trunk")
  • Django version 1.5 or greater
  • Sqlite3

Once you have built Gramps trunk:

  • cd trunk
  • python3 setup.py build

you are then ready to make and run Gramps-Connect. These are the basic steps for running in a test development:

  1. cd trunk/gramps/webapp
  2. make
    1. this will build all tables, and populate with default information
    2. 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).
  3. make run
    1. this will start-up a testing webserver
  4. Point your browser to http://localhost:8000/ and begin using Gramps-Connect

Django

Django 1.4

tannooba says:

Since I'm using Django 1.4 I had to do the following tweaks:

  1. in settings.py, change TEMPLATE_CONTEXT_PROCESSORS from "django.core.context_processors.auth" to "django.contrib.auth.context_processors.auth".
  2. In settings.py, changed TEMPLATE_LOADERS to say "django.template.loaders.filesystem.Loader" instead of ...loaders.filesystem.Load_template_source.

Django 1.6

Options

You have three options for populating your on-line database:

First, you can enter data on the web.

Second, you can import data on the web. While running Gramps-Connect:

  1. Login with superuser ID/Password you created above
  2. Go to Reports
  3. Select an Import row
  4. Enter the Input File Format (iff) and Input URL (i), like so:
    1. iff=ged i=http://arborvita.free.fr/Kennedy/Kennedy.ged
    2. iff=gramps i=http://gramps.svn.sourceforge.net/viewvc/gramps/trunk/example/gramps/example.gramps?revision=18333
    3. iff=gramps i=file://home/id/gramps/trunk/example/gramps/example.gramps
  5. Press the "Run" button
  6. 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.)
  7. 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.

Working

  • It should be the case that you can edit the main parts of all primary data. In fact, for the primary data, you can edit, add, delete, and link references to each (like add notes to a person).
  • You can run reports, exports, and imports from the web. All of these are listed in "Reports" for now, and you have to supply command-line options.
  • You can change the CSS theme in Admin -> Profile -> User. Give the name of the CSS file per user.
  • You can change the name of the site in Admin -> Config -> sitename.

Temporary

Now that Gramps trunk has moved to Gtk GObject, Gramps depends on it. For older installs which don't have it, you might not be able to produce certain graphics, or output.

For the moment, I am using the branches/gramps35 repository (which I will mirror the non-gtk changes with trunk).

Bugs

Please list any item that is not listed yet:

  1. 7005 unable to import GRAMPS example DBs
  2. Not all items are private and living data protected. Need a security audit.
  3. Many of the secondary level of information (LDS, Location, etc) are accessible for viewing or edit
  4. Tags are not imported nor exported
  5. 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.
  6. Need to be able to delete and move up/move down lists
  7. Import/Export 100% of all data
    1. Import/Export Tags
    2. Import Media (need a place to put them)
  8. Missing edit/delete functionality:
    1. Person
      1. Events
      2. Names
      3. Citations
      4. Attributes
      5. Addresses
      6. Notes
      7. Gallery
      8. Internet
      9. Associations
      10. LDS
      11. References
    2. Family
      1. Children
      2. Events
      3. Citations
      4. Attributes
      5. Notes
      6. Gallery
      7. LDS
    3. Event
      1. EventRef
        1. General
        2. Notes
        3. Attributes
      2. Shared
        1. General
        2. Citations
        3. Attributes
        4. Notes
        5. Gallery
        6. References
    4. Notes
    5. Media
      1. Citations
      2. Attributes
      3. Notes
      4. References
    6. Citation
      1. General
      2. Notes
      3. Gallery
      4. Data
      5. References
    7. Source
      1. General
      2. Notes
      3. Gallery
      4. Data
      5. Repository
      6. Reference
    8. Place
      1. General
      2. Location
      3. Alternate Locations
      4. Citations
      5. Notes
      6. Gallery
      7. Internet
      8. References
    9. Repository
      1. General
      2. Addresses
      3. Internet
      4. Notes
      5. References
    10. Tag

Feature Requests

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.

  1. Make it internationalized and localized (feature request 3417)
  2. Make it look nice
    1. Some items need better CSS (tables)
    2. Some items need better HTML (buttons)
  3. Create interfaces for:
    1. Reports
      1. Options
    2. Imports
    3. Exports
    4. User settings
      1. CSS
      2. Password, email, etc
      3. Gramps preferences
  4. Add additional functionality
    1. Bookmarks
    2. Maps
    3. Advanced search

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.

  1. Install and start Apache
  2. Install mod_wsgi, django, and sqlite3
  3. Edit /etc/httpd/conf/httpd.conf
  4. Place the Gramps source in a proper location
  5. Create the wsgi script
  6. Set the file permissions
  7. Restart httpd

In this example, I have installed the files in /usr/local/wsgi

The contents are of that directory are:

  • /usr/local/wsgi
    • 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'] = 'gramps.webapp.settings'
os.environ['HOME'] = '/usr/local/wsgi/trunk'
os.environ['GRAMPS_RESOURCES'] = '/usr/local/wsgi/trunk/'
sys.path.append('/usr/local/wsgi/trunk/')

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

Create the Gramps-Connect database, as above.

Permissions:

  • chmod a+rw trunk/gramps/webapp/sqlite.db
  • chmod a+xw trunk/gramps/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 protected]
    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.

Once everything is setup, restart the webserver:

service httpd restart