Gramps-Connect

From Gramps
Revision as of 07:01, 16 August 2012 by Dsblank (Talk | contribs)

Jump to: navigation, search

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 would be best at this point.

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 "trunk" or "branches/gramps35" from SVN; see Brief introduction to SVN). This will become an easy-to-install package once Gramps 3.5/4.0 are released. Trunk uses Gtk3; Gramps 3.5 uses Gtk2.

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

  • Gramps 3.5 or 4.0 (in examples below, installed in a folder called "trunk")
  • Django version 1.3 or greater
  • Sqlite3

Once you have built Gramps trunk:

  • cd trunk
  • ./autogen.sh

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

  1. cd trunk/src/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 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.

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. Not all items are private and living data protected. Need a security audit.
  2. Many of the secondary level of information (LDS, Location, etc) are accessible for viewing or edit
  3. Tags are not imported nor exported
  4. 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.
  5. Need to be able to delete and move up/move down lists
  6. Import/Export 100% of all data
    1. Import/Export Tags
    2. Import Media (need a place to put them)
  7. 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'] = '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.

Permissions:

  • 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 your@email.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.

Once everything is setup, restart the webserver:

service httpd restart