Changes

Jump to: navigation, search

GEPS 013: Gramps Webapp

873 bytes added, 23:03, 22 September 2019
no edit summary
{{man warn|This has been abandoned|Please see https://github.com/gramps-project/gramps-online for future attempts}}
 
Many Gramps users would like to collaborate or share their genealogy data on the web. This GEP describes a webapp, a web-based application that runs in your browser, and requires a server.
A prototype is was on-line from Nov.2009 to Sept.2016 at http://gramps-connect.org/ {{Dead link|url=http://gramps-connect.org/}} which is was running trunk on a sample database. You can could log into the site, as a:
*superuser (id=admin, password=gramps) or a
*regular user (id=admin1, password=gramps)
or just view as an anonymous user.
 
There are two additional pages on this project:
 
* [[Gramps-Connect]] - getting started
* [[Gramps-Connect: Developer Introduction]] - introduction for developers
== Motivation ==
Here is a small list of goals:
# Create a fullscale GRAMPS Gramps web framework
# Allow multiple users via the standard web browser
## Users will log in and have various levels of permissions
# Build on GRAMPS Gramps codebase and wealth of resources
## Reports
## Tools
=== Models/Views ===
Here is the model that defines the Person table from [http://{{Code Base}}gramps.svn.sourceforge.net/viewvc/gramps/trunk/src/webapp/grampsdb/models.py?view=markup srcgramps/webapp/grampsdb/models.py]:
<pre>
</pre>
The first retrieves all of the rows for the Person table; the second retrieves just the one record that has the unique, primary key 1, and the third retrieves the single record that has the unique handle of 'gh71234dhf3746347734'. Note that we never connected onto a database... Django is (currently) define to connect on to one database, and it does it on import. The database is set in srcgramps/webapp/settings.py.
An alternative method of interactively talking to the database is to use ''manage.py'':
<pre>
% cd trunkmaster/srcgramps/webapp % PYTHONPATH=../../src gramps python manage.py shell
>>>
</pre>
</pre>
The double-underscore in the keyword "gender_type__name" of the filter method is a Django convention. It means "replace wth with the correct syntax". If Python allowed it, it would be written as '''Person.objects.filter(gender_type.name="Male")''' but that is not legal syntax.
==== Model overview ====
Here is an overview of all of the models and how they are related:
[[Image:all-tables.gif]]
{{stub}}{{man tip| 1=To update this (Gramps 3.x and earlier) |2=To see more graphical representations of the data, run "make docs" in the src/webapp/ directory, and then look in src/webapp/docs/.}} * [https://gramps-project.org/docs/gen/gen_db.html#dbdjango Gramps DbDjango]
=== Templates ===
Templates are used to describe ''what'' to display. Here is a template from [http://gramps.svn.sourceforge.net/viewvc/gramps/trunk/src/{{Code Base}}data/templates/main_page.html?view=markup src/data/templates/main_page.html]:
<pre>
=== Getting Started with Gramps in Django ===
A prototype of a GRAMPS Gramps Django webapp is now in trunk and gramps32. To run it, do the following:
# Download Django. You'll need version 1.13 or greater
## On yum-based systems, try "yum install Django"
## On apt-based systems, try "sudo apt-get install python-django"
## Other systems: get the sources from http://www.djangoproject.com/download/
# get clone the gramps trunk Git repository and checkout either the gramps32 or master branch/gramps32 from SVN# cd trunk/src/web/ (or gramps32)
# Build the database, and load with default data:
## make clean
## python src/gramps.py
# Run the Django Importer
## Select Family Tree -> Import [[Image:DjangoImportExport.jpg|thumb|right|150px]]
## Select the "import.django" (from above) as the file to import
There are two subdirectories and two files of interest to the Gramps webapp:
# http://gramps.svn.sourceforge.net/viewvc/gramps/trunk/src/{{Code Base}}data/templates/ - HTML templates# http://gramps.svn.sourceforge.net/viewvc/{{Code Base}}gramps/trunk/src/webapp/ - Webapp main directory## http://{{Code Base}}gramps.svn.sourceforge.net/viewvc/gramps/trunk/src/webapp/libdjango.py?view=markup - library interface## http://gramps.svn.sourceforge.net/viewvc/{{Code Base}}gramps/trunk/src/webapp/grampsdb - gramps table models
# http://gramps-addons.svn.sourceforge.net/viewvc/gramps-addons/trunk/contrib/Django/ExportDjango.py?view=markup - Exporter
# http://gramps-addons.svn.sourceforge.net/viewvc/gramps-addons/trunk/contrib/Django/ImportDjango.py?view=markup - Importer
=== Concurrent Edits ===
Concurrent access for write and read imply several problems when people by accident change the same objects at the same time. GRAMPS Gramps itself has an elaborate signal handling for cases when dialogs are open with no longer current information. In a web environment, this becomes more difficult however. This is not built into Django.
For discussion on this issue in Django, see:
: Note here: the intro page is a collection of gadgets/controls, which then link into the real data.
* http://webtrees.net/demo/next (webtrees)
* http://12.46.127.86/bgr/BGR-o/p316.htm* http://beck.org.il/humogen/ (humogenHuMogen)
* http://genealogies.geneamania.net/servin/ (Généamania)
* http://www.geneotree.com/geneotree/index.php (Geneotree)
* http://ancestorsnow.com/ancestors
* http://www.phpmyfamily.net/demo/
* http://www.frog.za.net/family/surname-list.php ([[Other_genealogy_tools#Gramps-php-exporter|gramps-php-exporter]])
Collaborative database (user/wizard/password):
* http://roglo.eu/roglo?lang=en (GeneWeb)
* http://gennus.org ([http://beta.gennus.org/en/page/about.html beta][http://beta.gennus.org/en/page/releasenotes.html])
* http://brozer.fr (alpha[http://www.innovup.com/evenement/124/89-actualites-agenda.htm])
 
Source oriented:
 
* http://solumslekt.org/forays/yggdrasil.php [http://code.google.com/p/yggdrasil-genealogy/][http://solumslekt.org/blog/]
==See also==

Navigation menu