15,534
edits
Changes
→Django 1.6
{{out of date}}
= Getting Started =
== 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 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/djangoto 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/src/webapp
# make
## 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
== 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 =
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:
## 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=file://home/id/gramps/trunk/example/gramps/example.gramps
# Press the "Run" button
# The data will begin to be imported. (Because , as a default, the data is going into a sqlite3 database backend as a defaultthat has little concurrency, you won't be able to do much until the import is done. Warning: this is a bit slow at the moment!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. This is also a bit slow at the moment. = Running on a real system =
= 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
#: 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.
# Import/Export 100% of all data
## Import/Export Tags missing## Import Media missing (need a place to put them)# Make 100% of data viewableMissing edit/delete functionality:
## Person
### Events
### References
## 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 look nice
### Password, email, etc
### Gramps preferences
# Add additional functionality
## Bookmarks
## Maps
## 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]]