Git Product home page Git Product logo

geneapro's Introduction

This is GeneaProve, a web-based genealogical software. This README is organized as a FAQ, hopefully this will make it more readable.

Q. What do I need to install first ?

Compiling and running geneaprove requires the following packages: python 3.6 django >= 1.10.x sqlite >= 3.6 nodejs >= 7.7.3 npm >= 4.2.0 tmux

We know that things will not work as well with older versions, and the current priority of the project is to implement new features rather than support obsolete versions of these tools.

The only database backend that has been tested so far is sqlite, although Django is such that it might work with other backends.

Q. How do I start the server ?

Run the following:

   sh ./setup.sh

This command will download required nodejs and python dependencies (which might take a while the first time), and then start the server.

This command also creates an empty database if none exists yet.

Once the second window shows that all web resources have been compiled, open a web browser and connect to:

  http://127.0.0.1:8000/

Tested web browers include Safari, Firefox and Chrome.

Q. How do I import my GEDCOM data ?

Currently, GeneaProve is a read-only view. You should therefore have a GEDCOM file created by another genealogy software.

Once you have this file, you can click on "Import" in your web browser to import it into GeneaProve.

Q. Why did you implement this as a web server ?

A traditional GUI (based on a native API like gtk+, QT or Win32) provide greater efficiency and flexibility in a lot of cases. However, web technologies are far more portable. In particular, since the server is written using a standard python framework (django), you could install it at your ISP, and then access your genealogy from anywhere using a mobile device. Since GeneaProve is implemented using standard web technologies (as opposed to Flash), this also increases its portability.

Q. What is the data model used in the database ?

Although this should be transparent to the end user, the data model is almost a 1-to-1 mapping of the GenTech datamodel, which is based on assertions and avoids any limitations like a unique birth date per person for instance. Technically, you could also store negative assertions ("this person is not born on that date"), which might be useful later on.

Q. What is the license ?

This is GPL version 2 software, copyright Emmanuel Briot.

(we kept version 2 for compatibility with Gramps, so that code from GeneaProve could eventually be of interest there)

geneapro's People

Contributors

briot avatar changeling avatar dependabot[bot] avatar sam-m888 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

geneapro's Issues

Failure upon launch with fresh install.

Receiving this when browser launches. I've tried node from 7.7.2 to v10.13.0, clearing everything to scratch each time:

Failed to compile
./src/Server/Stats.tsx 18:16
Module parse failed: Identifier 'fetchCountFromServer' has already been declared (18:16)
You may need an appropriate loader to handle this file type.
|     });
| }
> export function fetchCountFromServer() {
|     return window.fetch('/data/stats/count')
|         .then(resp => {
This error occurred during the build time and cannot be dismissed.

On fresh install, before database has been loaded with data, endless stream of stacktrack.

Fresh install.
No database created yet.
Run setup.sh.
When setup.sh is complete, browser window launched, no other actions taken.

Console fills with endless stream of:

2019-02-17 00:30:59,954 log_message "GET /data/pedigree/1?gens=7&descendant_gens=0&theme=undefined HTTP/1.1" 500 27
2019-02-17 00:31:00,099 get geneaprove.views.pedigree.PedigreeData.get(<JSONViewParams: {'gens': ['7'], 'descendant_gens': ['0'], 'theme': ['undefined']}>)
2019-02-17 00:31:00,099 get_json get pedigree data
2019-02-17 00:31:00,100 handle_uncaught_exception Internal Server Error: /data/pedigree/1
Traceback (most recent call last):
  File "/Users/clarson/Desktop/ged_files/geneapro-master/python_env/lib/python3.6/site-packages/django/core/handlers/exception.py", line 42, in inner
    response = get_response(request)
  File "/Users/clarson/Desktop/ged_files/geneapro-master/python_env/lib/python3.6/site-packages/django/core/handlers/base.py", line 187, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/Users/clarson/Desktop/ged_files/geneapro-master/python_env/lib/python3.6/site-packages/django/core/handlers/base.py", line 185, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/Users/clarson/Desktop/ged_files/geneapro-master/python_env/lib/python3.6/site-packages/django/views/generic/base.py", line 68, in view
    return self.dispatch(request, *args, **kwargs)
  File "/Users/clarson/Desktop/ged_files/geneapro-master/python_env/lib/python3.6/site-packages/django/views/generic/base.py", line 88, in dispatch
    return handler(request, *args, **kwargs)
  File "/Users/clarson/Desktop/ged_files/geneapro-master/backend/geneaprove/views/to_json.py", line 173, in get
    return self.__internal(self.get_json, params, *args, **kwargs)
  File "/Users/clarson/Desktop/ged_files/geneapro-master/backend/geneaprove/views/to_json.py", line 158, in __internal
    resp = method(params, *args, **kwargs) or {"success": True}
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/contextlib.py", line 52, in inner
    return func(*args, **kwds)
  File "/Users/clarson/Desktop/ged_files/geneapro-master/backend/geneaprove/views/pedigree.py", line 45, in get_json
    decujus = global_graph.node_from_id(id)
  File "/Users/clarson/Desktop/ged_files/geneapro-master/backend/geneaprove/views/graph.py", line 107, in node_from_id
    return self.__nodes[id]
KeyError: 1
2019-02-17 00:31:00,101 log_message "GET /data/pedigree/1?gens=7&descendant_gens=0&theme=undefined HTTP/1.1" 500 27

GeneaProve could not import your file: None

Hi, I'm trying to import a gedcom file that has been generated by Reunion on OS X. There were many tags not recognised which I removed. Finally all tags left passed and I got the following message:

"GeneaProve could not import your file. This is either because your file does not contain correct GEDCOM data, or more likely because of limitations in GeneaProve. Please Report this issue to the GeneaProve developers. If your GEDCOM data contains information you wish to keep private, you can use the script gedcom_anon.py to anonymize the data before you send it to us.
None"

It is the "None" in the last line that puzzles me. Any idea where I should look to correct my input file myself, before I anonymise and send it to you? I am aware that you are not supporting Reunion, but I can live with that for now.

Thanks.

Feature Request: Handle NOTE Tags

Display the contents of 'NOTE' tags rather than just the @address@ of the notes themselves. In order to make this practical on the 'show all persons' list, that field would need to be made scrollable (probably best), or multiple rows would be required in some cases (probably not so good).

Reports > Statistics does not display any statistics

Test on the Gramps sample GEDCOM the Reports > Statistics does not display any statistics. The charts are broken in that the numbers from the left of the chart are displayed over the menus and you can not zoom in or out.
stats broken charts

Parser fails on invalid '1 DEAT 2 DATE Deceased' entry.

There's an invalid pattern that shows up occasionally in data from different sources:

1 DEAT
2 DATE Deceased

This triggers parse Unexpected Exception during parsing.

It's probably best to simply skip any 2 DATE Deceased. It's simply a bad entry without any real DATE information.

Clean checkout doesn't work

Version: trunk

Steps that will reproduce the problem?

  1. git clone --recursive https://github.com/briot/geneapro.git
  2. cd geneapro
  3. ./manage.py runserver

What is the expected result?
According to the README the server should start.

What happens instead?
Error: "Error: Could not import settings 'geneapro.settings' (Is it on sys.path?): No module named settings"

Possible workaround:
Move settings.py to the geneapro directory. But afterwards "mysites" are not found.

Any additional information:

  • Python 2.7.2
  • Django 1.3
  • Sqlite 3.7.7
  • OS X 10.6.8

metadata.py doesn't exist.

backend/geneaprove/urls.py has an import statement for .views/metadata, which doesn't (yet) exist.

ImportError: cannot import name 'metadata'

Import fails when CHAN doesn't exist in GEDCOM file or is None/Null.

Note that the failure occurs on the first INDI without a CHAN tag:

2019-02-08 23:13:01,300 (0.000) INSERT INTO "persona" ("name", "description", "last_change") VALUES ('Individual Middle /Tester1/', NULL, '2019-01-28 22:43:37'); args=['Individual Middle /Tester1/', None, '2019-01-28 22:43:37']
2019-02-08 23:13:01,301 (0.000) INSERT INTO "persona" ("name", "description", "last_change") VALUES ('Father Middle /Tester1/', NULL, '2019-01-28 22:43:37'); args=['Father Middle /Tester1/', None, '2019-01-28 22:43:37']
2019-02-08 23:13:01,303 (0.000) INSERT INTO "persona" ("name", "description", "last_change") VALUES ('Mother Middle /Tester2/', NULL, '2019-01-28 22:43:37'); args=['Mother Middle /Tester2/', None, '2019-01-28 22:43:37']
2019-02-08 23:13:01,303 (0.000) INSERT INTO "persona" ("name", "description", "last_change") VALUES ('Mother Middle /Tester3/', NULL, NULL); args=['Mother Middle /Tester3/', None, None]
2019-02-08 23:13:01,305 parse Unexpected Exception during parsing

Using the following test file:
test_short.ged.zip

If a CHAN tag is added to that INDI, the import then fails on source.last_change instead of persona.last_change

2019-02-08 23:17:22,651 (0.000) INSERT INTO "persona" ("name", "description", "last_change") VALUES ('Individual Middle /Tester1/', NULL, '2019-01-28 22:43:37'); args=['Individual Middle /Tester1/', None, '2019-01-28 22:43:37']
2019-02-08 23:17:22,652 (0.000) INSERT INTO "persona" ("name", "description", "last_change") VALUES ('Father Middle /Tester1/', NULL, '2019-01-28 22:43:37'); args=['Father Middle /Tester1/', None, '2019-01-28 22:43:37']
2019-02-08 23:17:22,653 (0.000) INSERT INTO "persona" ("name", "description", "last_change") VALUES ('Mother Middle /Tester2/', NULL, '2019-01-28 22:43:37'); args=['Mother Middle /Tester2/', None, '2019-01-28 22:43:37']
2019-02-08 23:17:22,655 (0.000) INSERT INTO "persona" ("name", "description", "last_change") VALUES ('Mother Middle /Tester3/', NULL, '2019-01-28 22:43:37'); args=['Mother Middle /Tester3/', None, '2019-01-28 22:43:37']
2019-02-08 23:17:22,658 (0.001) INSERT INTO "source" ("higher_source_id", "subject_place_id", "jurisdiction_place_id", "researcher_id", "subject_date", "subject_date_sort", "medium", "title", "abbrev", "biblio", "comments", "last_change") VALUES (NULL, NULL, NULL, 1, NULL, NULL, NULL, '"test_short.ged", , exported from unknown, created on None, imported on 2019-02-08 23:17:22 CET', '"test_short.ged",
, exported from unknown, created on None, imported on 2019-02-08 23:17:22 CET', '"test_short.ged", , exported from unknown, created on None, imported on 2019-02-08 23:17:22 CET', NULL, NULL); args=[None, None, None, 1, None, None, None, '"test_short.ged", , exported from unknown, created on None, imported on 2019-02-08 23:17:22 CET', '"test_short.ged", , exported from unknown, created on None, imported on 2019-02-08 23:17:22 CET', '"test_short.ged", , exported from unknown, created on None, imported on 2019-02-08 23:17:22 CET', None, None]
2019-02-08 23:17:22,661 parse Unexpected Exception during parsing

Can not run geneapro continued

Hi Emmanuel,
Tried your commands and does not work.

I have tested geneapro each time with the sample GEDCOM file from Gramps trunk.

Any other advice please?
Thank you for fixing the other errors :)
-Pat

Import details:

pat@pat-LinuxMintBox ~/git/geneapro $ ./manage.py import ~/Gramps/example/gedcom/sample.ged
Importing /home/pat/Gramps/example/gedcom/sample.ged
/home/pat/Gramps/example/gedcom/sample.ged:430 Invalid tag _DEG inside INDI

Done importing (0.015 s)

New Error details

Environment:

Request Method: GET
Request URL: http://127.0.0.1:8000/

Django Version: 1.4.1
Python Version: 2.7.3
Installed Applications:
('django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'geneapro')
Installed Middleware:
('mysites.middleware.simple_exception.AJAXSimpleExceptionResponse',
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware')

Traceback:
File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response

  1.                     response = callback(request, _callback_args, *_callback_kwargs)
    
    File "/home/pat/git/geneapro/geneapro/views/pedigree.py" in pedigree_view
  2.    {"pedigree_data": compute_data(graph, gens, False, decujus),
    
    File "/home/pat/git/geneapro/geneapro/views/pedigree.py" in compute_data
  3.                        last_gen_known=last_gen_known)
    
    File "/home/pat/git/geneapro/geneapro/views/pedigree.py" in get_sosa_tree
  4. decujus = graph.node_from_id(id)
    File "/home/pat/git/geneapro/geneapro/views/graph.py" in node_from_id
  5.     return self.__nodes[id]
    

Exception Type: KeyError at /
Exception Value: 1

"Show all sources" with no GEDCOM loaded and with a GEDCOM loaded both give an error.

selecting the "Show all sources" icon with no GEDCOM loaded gives the following error:

Environment:

Request Method: GET
Request URL: http://127.0.0.1:8000/sources

Django Version: 1.4.1
Python Version: 2.7.3
Installed Applications:
('django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'geneapro')
Installed Middleware:
('mysites.middleware.simple_exception.AJAXSimpleExceptionResponse',
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware')

Traceback:
File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response

  1.                 raise ValueError("The view %s.%s didn't return an HttpResponse object." % (callback.**module**, view_name))
    

Exception Type: ValueError at /sources
Exception Value: The view geneapro.views.sources.source_list didn't return an HttpResponse object.

selecting the "Show all sources" icon with With a GEDCOM loaded gives the following error:

Environment:

Request Method: GET
Request URL: http://127.0.0.1:8000/sources

Django Version: 1.4.1
Python Version: 2.7.3
Installed Applications:
('django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'geneapro')
Installed Middleware:
('mysites.middleware.simple_exception.AJAXSimpleExceptionResponse',
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware')

Traceback:
File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response

  1.                 raise ValueError("The view %s.%s didn't return an HttpResponse object." % (callback.**module**, view_name))
    

Exception Type: ValueError at /sources
Exception Value: The view geneapro.views.sources.source_list didn't return an HttpResponse object.

Import Gedcom fails after file selection with 403 Forbidden.

Attempting to import a .ged file fails. There seems to be a problem exchanging the csrf token.

(On the upside, the error is correctly reported with the proposed fixes to src/Server/Import.tsx changing:

error: 'Upload failed with error {resp.status}, {resp.statusText}',

to:

error: `Upload failed with error ${resp.status}, ${resp.statusText}`,

Previously, the browser error message was:

Upload failed with {resp.status}, {resp.statusText}

instead of:

Upload failed with error 403, Forbidden

)

See logs for error below here:

browser message on import:

Geneaprove could not import your file

This is either because your file does not contain correct GEDCOM data, or more likely because of limitations in Geneaprove. Please report this issue to the geneaprove developers on github. If your GEDCOM data contains information you wish to keep private, you can use the gedcom_anon.py script to anonymize the data before you send it.

Upload failed with error 403, Forbidden

geneaprove.log:

2018-04-19 22:26:03,450 send_csrf Sending csrf

geneaprove_django.log:

2018-04-19 22:26:03,459 log_message "GET /data/csrf HTTP/1.1" 200 127
2018-04-19 22:26:04,417 handle_uncaught_exception Internal Server Error: /invalid
Traceback (most recent call last):
  File "/Users/clarson/Desktop/python_playground/geneapro.compare/python_env/lib/python3.6/site-packages/django/core/handlers/exception.py", line 42, in inner
    response = get_response(request)
  File "/Users/clarson/Desktop/python_playground/geneapro.compare/python_env/lib/python3.6/site-packages/django/core/handlers/base.py", line 187, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/Users/clarson/Desktop/python_playground/geneapro.compare/python_env/lib/python3.6/site-packages/django/core/handlers/base.py", line 185, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/Users/clarson/Desktop/python_playground/geneapro.compare/backend/geneaprove/urls.py", line 57, in static
    return index(request)
  File "/Users/clarson/Desktop/python_playground/geneapro.compare/backend/geneaprove/urls.py", line 36, in index
    return render_to_response('index.html', c)
  File "/Users/clarson/Desktop/python_playground/geneapro.compare/python_env/lib/python3.6/site-packages/django/shortcuts.py", line 21, in render_to_response
    content = loader.render_to_string(template_name, context, using=using)
  File "/Users/clarson/Desktop/python_playground/geneapro.compare/python_env/lib/python3.6/site-packages/django/template/loader.py", line 67, in render_to_string
    template = get_template(template_name, using=using)
  File "/Users/clarson/Desktop/python_playground/geneapro.compare/python_env/lib/python3.6/site-packages/django/template/loader.py", line 25, in get_template
    raise TemplateDoesNotExist(template_name, chain=chain)
django.template.exceptions.TemplateDoesNotExist: index.html
2018-04-19 22:26:04,567 log_message "GET /invalid HTTP/1.1" 500 87361
2018-04-19 22:29:01,000 _reject Forbidden (CSRF token missing or incorrect.): /data/import
2018-04-19 22:29:01,004 log_message "POST /data/import HTTP/1.1" 403 2502

The Create database portion of setup.sh is missing makemigrations.

setup.sh fails to handle up to date migrations. the following code:

###################
# Create database #
###################

(
   cd backend
   dir=`./manage.py showconf | grep dir= | cut -d= -f2`
   mkdir -p "$dir"
   ./manage.py migrate
)

Should read:

###################
# Create database #
###################

(
   cd backend
   dir=`./manage.py showconf | grep dir= | cut -d= -f2`
   mkdir -p "$dir"
   ./manage.py makemigrations
   ./manage.py migrate
)

to avoid migration problems.

Getting a type error on `npm start`

I'm getting the following error whenever I run either setup.sh or npm start.

I've tried the following node installs:
v7.7.3
v7.10.1
v8.0.0
v8.1.0
v7.7.3
v9.11.1

Failed to compile.

./src/Stats/Page.tsx
(101,3): error TS2345: Argument of type 'typeof StatsPageConnected' is not assignable to parameter of type 'ComponentType<{ persons: PersonSet; decujusid: number; } & { dispatch: Dispatch<AppState>; } & Ro...'.
  Type 'typeof StatsPageConnected' is not assignable to type 'StatelessComponent<{ persons: PersonSet; decujusid: number; } & { dispatch: Dispatch<AppState>; }...'.
    Type 'typeof StatsPageConnected' provides no match for the signature '(props: { persons: PersonSet; decujusid: number; } & { dispatch: Dispatch<AppState>; } & RouteComponentProps<PropsFromRoute> & { children?: ReactNode; }, context?: any): ReactElement<any> | null'.

Add some capability to reset project folder to scratch.

Perhaps a --reset option in setup.sh, or a separate reset.sh script.

Functionality to remove node_modules and python_env. Either rotate or remove backend/geneaprove.log. Perhaps strip the various __pycache__ directories.

Fix for invalid DATE import appears to have introduced new fails for import.

Previously, when the code that failed on invalid DATE tag line was in place, other tags with similar issues were gracefully handled without aborting import.

On my last attempt to import my primary testing file, which has many invalid RESI tag lines like:

1 RESI abt 1950

the import process would log the anomaly and continue. Here's a snippet from a previous run:

Line 12894576 Unexpected text value after RESI
Line 12894594 Unexpected text value after RESI
Line 6657850 Unexpected text value after RESI
Line 6657857 Unexpected text value after RESI
Line 6657886 Unexpected text value after RESI
Line 6657888 Unexpected text value after RESI
Line 6657894 Unexpected text value after RESI
Line 6660096 Unexpected text value after RESI
Line 6660099 Unexpected text value after RESI
Line 12903734 Unexpected text value after RESI
Line 12903765 Unexpected text value after RESI
Line 12903771 Unexpected text value after RESI

With the latest fix, it errors out upon the first encounter:

2019-02-12 05:29:43,652 parse Exception while parsing GEDCOM:<stdin>:2908 Line 2906 Unexpected text value after RESI

During Stats generation, the following exception occurs. Seems to continue OK.

Seeing this error occur during process generated by clicking on Stats, though it appears to continue processing:

2019-02-16 01:18:56,546 exception 24931 123145453756416 Internal Server Error: /data/stats/1
Traceback (most recent call last):
  File "/Users/clarson/Desktop/geneapro-test-django-branch/python_env/lib/python3.6/site-packages/django/core/handlers/exception.py", line 42, in inner
    response = get_response(request)
  File "/Users/clarson/Desktop/geneapro-test-django-branch/python_env/lib/python3.6/site-packages/django/core/handlers/base.py", line 187, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/Users/clarson/Desktop/geneapro-test-django-branch/python_env/lib/python3.6/site-packages/django/core/handlers/base.py", line 185, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/Users/clarson/Desktop/geneapro-test-django-branch/python_env/lib/python3.6/site-packages/django/views/generic/base.py", line 68, in view
    return self.dispatch(request, *args, **kwargs)
  File "/Users/clarson/Desktop/geneapro-test-django-branch/python_env/lib/python3.6/site-packages/django/views/generic/base.py", line 88, in dispatch
    return handler(request, *args, **kwargs)
  File "/Users/clarson/Desktop/geneapro-test-django-branch/backend/geneaprove/views/to_json.py", line 173, in get
    return self.__internal(self.get_json, params, *args, **kwargs)
  File "/Users/clarson/Desktop/geneapro-test-django-branch/backend/geneaprove/views/to_json.py", line 158, in __internal
    resp = method(params, *args, **kwargs) or {"success": True}
  File "/Users/clarson/Desktop/geneapro-test-django-branch/backend/geneaprove/views/stats.py", line 68, in get_json
    b_year = int(p.birthISODate[0:4]) if p.birthISODate else None
ValueError: invalid literal for int() with base 10: '960-'

public/asset files are developer-local links rather than files.

The following files are developer-machine local links rather than files:

public/assets/jacques_LE_TEXIER.jpg ->
/Users/briot/genealogy/scans/le_texier_jacques/jacques_LE_TEXIER.jpg

public/assets/roland.jpg ->
/Users/briot/genealogy/scans/briot_roland/roland.jpg

With a fresh install, fresh import of very large file, PersonaList fails.

On a fresh install, with an import of the ManyMany... ged file, geneaprove fails on ValueError: invalid literal for int() with base 10: '[object Object]' when requesting All persons. Stack trace follows.

2019-02-19 16:59:35,881 get geneaprove.views.persona.PersonaList.get(<JSONViewParams: {'theme': ['[object Object]']}>)
2019-02-19 16:59:35,942 get geneaprove.views.themelist.ThemeList.get(<JSONViewParams: {}>)
2019-02-19 16:59:35,945 __internal convert to json
2019-02-19 16:59:35,946 __internal send response
2019-02-19 16:59:35,917 handle_uncaught_exception Internal Server Error: /data/persona/list
Traceback (most recent call last):
  File "/Users/clarson/Desktop/geneapro-test-django-branch/python_env/lib/python3.6/site-packages/django/core/handlers/exception.py", line 42, in inner
    response = get_response(request)
  File "/Users/clarson/Desktop/geneapro-test-django-branch/python_env/lib/python3.6/site-packages/django/core/handlers/base.py", line 187, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/Users/clarson/Desktop/geneapro-test-django-branch/python_env/lib/python3.6/site-packages/django/core/handlers/base.py", line 185, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/Users/clarson/Desktop/geneapro-test-django-branch/python_env/lib/python3.6/site-packages/django/views/generic/base.py", line 68, in view
    return self.dispatch(request, *args, **kwargs)
  File "/Users/clarson/Desktop/geneapro-test-django-branch/python_env/lib/python3.6/site-packages/django/views/generic/base.py", line 88, in dispatch
    return handler(request, *args, **kwargs)
  File "/Users/clarson/Desktop/geneapro-test-django-branch/backend/geneaprove/views/to_json.py", line 173, in get
    return self.__internal(self.get_json, params, *args, **kwargs)
  File "/Users/clarson/Desktop/geneapro-test-django-branch/backend/geneaprove/views/to_json.py", line 158, in __internal
    resp = method(params, *args, **kwargs) or {"success": True}
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/contextlib.py", line 52, in inner
    return func(*args, **kwds)
  File "/Users/clarson/Desktop/geneapro-test-django-branch/backend/geneaprove/views/persona.py", line 254, in get_json
    styles = Styles(theme_id, graph=global_graph, decujus=decujus)
  File "/Users/clarson/Desktop/geneapro-test-django-branch/backend/geneaprove/views/styles.py", line 68, in __init__
    .get(id=theme_id)
  File "/Users/clarson/Desktop/geneapro-test-django-branch/python_env/lib/python3.6/site-packages/django/db/models/query.py", line 376, in get
    clone = self.filter(*args, **kwargs)
  File "/Users/clarson/Desktop/geneapro-test-django-branch/python_env/lib/python3.6/site-packages/django/db/models/query.py", line 796, in filter
    return self._filter_or_exclude(False, *args, **kwargs)
  File "/Users/clarson/Desktop/geneapro-test-django-branch/python_env/lib/python3.6/site-packages/django/db/models/query.py", line 814, in _filter_or_exclude
    clone.query.add_q(Q(*args, **kwargs))
  File "/Users/clarson/Desktop/geneapro-test-django-branch/python_env/lib/python3.6/site-packages/django/db/models/sql/query.py", line 1227, in add_q
    clause, _ = self._add_q(q_object, self.used_aliases)
  File "/Users/clarson/Desktop/geneapro-test-django-branch/python_env/lib/python3.6/site-packages/django/db/models/sql/query.py", line 1253, in _add_q
    allow_joins=allow_joins, split_subq=split_subq,
  File "/Users/clarson/Desktop/geneapro-test-django-branch/python_env/lib/python3.6/site-packages/django/db/models/sql/query.py", line 1187, in build_filter
    condition = self.build_lookup(lookups, col, value)
  File "/Users/clarson/Desktop/geneapro-test-django-branch/python_env/lib/python3.6/site-packages/django/db/models/sql/query.py", line 1083, in build_lookup
    return final_lookup(lhs, rhs)
  File "/Users/clarson/Desktop/geneapro-test-django-branch/python_env/lib/python3.6/site-packages/django/db/models/lookups.py", line 19, in __init__
    self.rhs = self.get_prep_lookup()
  File "/Users/clarson/Desktop/geneapro-test-django-branch/python_env/lib/python3.6/site-packages/django/db/models/lookups.py", line 59, in get_prep_lookup
    return self.lhs.output_field.get_prep_value(self.rhs)
  File "/Users/clarson/Desktop/geneapro-test-django-branch/python_env/lib/python3.6/site-packages/django/db/models/fields/__init__.py", line 946, in get_prep_value
    return int(value)
ValueError: invalid literal for int() with base 10: '[object Object]'
2019-02-19 16:59:35,947 log_message "GET /data/themelist HTTP/1.1" 200 18
2019-02-19 16:59:36,232 log_message "GET /data/persona/list?theme=[object%20Object] HTTP/1.1" 500 27

Feature Request: Ability to Resize Graph Font Sizes

In some cases, the font size used for display graphs is a nice visual size, but the label text 'bumps into' the container boxes. In other cases, the font is automatically made too tiny to view (perhaps the font size should be kept the same for the entire graph, and let the vertical/horizontal spacing take care of the display?).

Clicking on 'All persons' returns error in console, fails.

Clicking on All persons returns error in console, fails.

A request sent to http://localhost:3000/persona/list/ in the browser results in the following:

Log:

2019-02-22 19:38:58,407 to_json 61678 123145347530752 geneaprove.views.persona.PersonaList.get(<JSONViewParams: {'theme': ['[object Object]']}>)

Console:

[22/Feb/2019 19:39:12] "GET /data/persona/list?theme=[object%20Object] HTTP/1.1" 500 148036

Full stacktrace:

[22/Feb/2019 19:49:30] "GET /data/csrf HTTP/1.1" 200 127
2019-02-22 19:49:32,256 get geneaprove.views.persona.PersonaList.get(<JSONViewParams: {'theme': ['[object Object]']}>)
Internal Server Error: /data/persona/list
Traceback (most recent call last):
  File "/Users/clarson/Desktop/geneapro-test-django-branch/python_env/lib/python3.6/site-packages/django/core/handlers/exception.py", line 42, in inner
    response = get_response(request)
  File "/Users/clarson/Desktop/geneapro-test-django-branch/python_env/lib/python3.6/site-packages/django/core/handlers/base.py", line 187, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/Users/clarson/Desktop/geneapro-test-django-branch/python_env/lib/python3.6/site-packages/django/core/handlers/base.py", line 185, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/Users/clarson/Desktop/geneapro-test-django-branch/python_env/lib/python3.6/site-packages/django/views/generic/base.py", line 68, in view
    return self.dispatch(request, *args, **kwargs)
  File "/Users/clarson/Desktop/geneapro-test-django-branch/python_env/lib/python3.6/site-packages/django/views/generic/base.py", line 88, in dispatch
    return handler(request, *args, **kwargs)
  File "/Users/clarson/Desktop/geneapro-test-django-branch/backend/geneaprove/views/to_json.py", line 173, in get
    return self.__internal(self.get_json, params, *args, **kwargs)
  File "/Users/clarson/Desktop/geneapro-test-django-branch/backend/geneaprove/views/to_json.py", line 158, in __internal
    resp = method(params, *args, **kwargs) or {"success": True}
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/contextlib.py", line 52, in inner
    return func(*args, **kwds)
  File "/Users/clarson/Desktop/geneapro-test-django-branch/backend/geneaprove/views/persona.py", line 254, in get_json
    styles = Styles(theme_id, graph=global_graph, decujus=decujus)
  File "/Users/clarson/Desktop/geneapro-test-django-branch/backend/geneaprove/views/styles.py", line 68, in __init__
    .get(id=theme_id)
  File "/Users/clarson/Desktop/geneapro-test-django-branch/python_env/lib/python3.6/site-packages/django/db/models/query.py", line 376, in get
    clone = self.filter(*args, **kwargs)
  File "/Users/clarson/Desktop/geneapro-test-django-branch/python_env/lib/python3.6/site-packages/django/db/models/query.py", line 796, in filter
    return self._filter_or_exclude(False, *args, **kwargs)
  File "/Users/clarson/Desktop/geneapro-test-django-branch/python_env/lib/python3.6/site-packages/django/db/models/query.py", line 814, in _filter_or_exclude
    clone.query.add_q(Q(*args, **kwargs))
  File "/Users/clarson/Desktop/geneapro-test-django-branch/python_env/lib/python3.6/site-packages/django/db/models/sql/query.py", line 1227, in add_q
    clause, _ = self._add_q(q_object, self.used_aliases)
  File "/Users/clarson/Desktop/geneapro-test-django-branch/python_env/lib/python3.6/site-packages/django/db/models/sql/query.py", line 1253, in _add_q
    allow_joins=allow_joins, split_subq=split_subq,
  File "/Users/clarson/Desktop/geneapro-test-django-branch/python_env/lib/python3.6/site-packages/django/db/models/sql/query.py", line 1187, in build_filter
    condition = self.build_lookup(lookups, col, value)
  File "/Users/clarson/Desktop/geneapro-test-django-branch/python_env/lib/python3.6/site-packages/django/db/models/sql/query.py", line 1083, in build_lookup
    return final_lookup(lhs, rhs)
  File "/Users/clarson/Desktop/geneapro-test-django-branch/python_env/lib/python3.6/site-packages/django/db/models/lookups.py", line 19, in __init__
    self.rhs = self.get_prep_lookup()
  File "/Users/clarson/Desktop/geneapro-test-django-branch/python_env/lib/python3.6/site-packages/django/db/models/lookups.py", line 59, in get_prep_lookup
    return self.lhs.output_field.get_prep_value(self.rhs)
  File "/Users/clarson/Desktop/geneapro-test-django-branch/python_env/lib/python3.6/site-packages/django/db/models/fields/__init__.py", line 946, in get_prep_value
    return int(value)
ValueError: invalid literal for int() with base 10: '[object Object]'
2019-02-22 19:49:32,455 get geneaprove.views.themelist.ThemeList.get(<JSONViewParams: {}>)
2019-02-22 19:49:32,483 __internal convert to json
2019-02-22 19:49:32,488 __internal send response
Total time: 0.040783s  /  queries time (1 queries): 0.017000s
[22/Feb/2019 19:49:32] "GET /data/themelist HTTP/1.1" 200 18
Total time: 18.451111s  /  queries time (5 queries): 0.003000s
[22/Feb/2019 19:49:51] "GET /data/persona/list?theme=[object%20Object] HTTP/1.1" 500 148036

"Quilt" report gives an error

Selecting the "quilt" report gives the following error:

Environment:

Request Method: GET
Request URL: http://127.0.0.1:8000/quilts/15

Django Version: 1.4.1
Python Version: 2.7.3
Installed Applications:
('django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'geneapro')
Installed Middleware:
('mysites.middleware.simple_exception.AJAXSimpleExceptionResponse',
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware')

Traceback:
File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response

  1.                     response = callback(request, _callback_args, *_callback_kwargs)
    
    File "/home/pat/git/geneapro/geneapro/views/graph.py" in quilts_view
  2. data = graph.json(subset)
    
    File "/home/pat/git/geneapro/geneapro/views/graph.py" in json
  3.     families = self.sort_families(layers, families)
    
    File "/home/pat/git/geneapro/geneapro/views/graph.py" in sort_families
  4.         byLayer[rightMostLayer + 1].append(family)
    

Exception Type: KeyError at /quilts/15
Exception Value: 5

Problems with 'npm start' and missing template

Hi,
This project looks super interesting, so I wanted to try it out.
However, I'm having trouble installing the JS libraries with npm (that's what I'm guessing 'npm start' does), and starting the server with npm run server gives a TemplateDoesNotExist exception.

What I did
I cloned the repository, made sure I had the required packages installed, ran npm start.

System: Arch Linux 64-bit using Firefox
(Since the repositories of Arch Linux is mostly bleeding-edge/rolling release, python is Python3 per default. I took this into account, however I changed the first line of geneaprove.py to

#!/usr/bin/env python2

Output of npm start:

> [email protected] start /home/xirov/geneapro
> npm install && npm run webpack && ./geneaprove.py

npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules/chokidar/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm WARN @angular/[email protected] requires a peer of rxjs@^5.0.1 but none was installed.
npm WARN @angular/[email protected] requires a peer of zone.js@^0.7.2 but none was installed.
npm WARN @angular/[email protected] requires a peer of rxjs@^5.0.1 but none was installed.
npm WARN @angular/[email protected] requires a peer of rxjs@^5.0.1 but none was installed.

> [email protected] webpack /home/xirov/geneapro
> webpack -d --colors

Hash: 607106db77d8a16b9701
Version: webpack 1.13.3
Time: 8989ms
                             Asset       Size  Chunks             Chunk Names
          fontawesome-webfont.woff      98 kB          [emitted]  
  glyphicons-halflings-regular.eot    20.1 kB          [emitted]  
 glyphicons-halflings-regular.woff    23.4 kB          [emitted]  
  glyphicons-halflings-regular.ttf    45.4 kB          [emitted]  
  glyphicons-halflings-regular.svg     109 kB          [emitted]  
           fontawesome-webfont.eot     166 kB          [emitted]  
         fontawesome-webfont.woff2    77.2 kB          [emitted]  
glyphicons-halflings-regular.woff2      18 kB          [emitted]  
           fontawesome-webfont.ttf     166 kB          [emitted]  
           fontawesome-webfont.svg     444 kB          [emitted]  
              geneaprove.bundle.js     332 kB       0  [emitted]  geneaprove
                  vendor.bundle.js    4.04 MB       1  [emitted]  vendor
                    geneaprove.map     445 kB       0  [emitted]  geneaprove
                        vendor.map    4.79 MB       1  [emitted]  vendor
                        index.html  569 bytes          [emitted]  
    + 490 hidden modules

ERROR in [default] /home/xirov/geneapro/resources/ts/d3.service.ts:41:21 
Property 'behavior' does not exist on type 'typeof "/home/xirov/geneapro/node_modules/@types/d3/index"'.

ERROR in [default] /home/xirov/geneapro/resources/ts/d3.service.ts:42:15 
Generic type 'Selection<GElement, Datum, PElement, PDatum>' requires 4 type argument(s).

ERROR in [default] /home/xirov/geneapro/resources/ts/d3.service.ts:56:26 
Module '"/home/xirov/geneapro/node_modules/@types/d3/index"' has no exported member 'ZoomEvent'.

ERROR in [default] /home/xirov/geneapro/resources/ts/d3.service.ts:186:15 
Property 'svg' does not exist on type 'typeof "/home/xirov/geneapro/node_modules/@types/d3/index"'.

ERROR in [default] /home/xirov/geneapro/resources/ts/d3.service.ts:212:14 
Generic type 'Selection<GElement, Datum, PElement, PDatum>' requires 4 type argument(s).

ERROR in [default] /home/xirov/geneapro/resources/ts/d3.service.ts:220:21 
Parameter 'gen' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/d3.service.ts:245:17 
Generic type 'Selection<GElement, Datum, PElement, PDatum>' requires 4 type argument(s).

ERROR in [default] /home/xirov/geneapro/resources/ts/d3.service.ts:261:14 
Generic type 'Selection<GElement, Datum, PElement, PDatum>' requires 4 type argument(s).

ERROR in [default] /home/xirov/geneapro/resources/ts/d3.service.ts:270:15 
Parameter 'd' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/d3.service.ts:274:19 
Parameter 'd' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/d3.service.ts:278:18 
Parameter 'd' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/d3.service.ts:288:18 
Parameter 'd' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/d3.service.ts:292:19 
Parameter 'd' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/d3.service.ts:318:14 
Generic type 'Selection<GElement, Datum, PElement, PDatum>' requires 4 type argument(s).

ERROR in [default] /home/xirov/geneapro/resources/ts/fanchart.ts:354:21 
Property 'svg' does not exist on type 'typeof "/home/xirov/geneapro/node_modules/@types/d3/index"'.

ERROR in [default] /home/xirov/geneapro/resources/ts/fanchart.ts:355:21 
Parameter 'd' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/fanchart.ts:356:19 
Parameter 'd' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/fanchart.ts:357:22 
Parameter 'd' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/fanchart.ts:358:22 
Parameter 'd' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/fanchart.ts:361:30 
Property 'svg' does not exist on type 'typeof "/home/xirov/geneapro/node_modules/@types/d3/index"'.

ERROR in [default] /home/xirov/geneapro/resources/ts/fanchart.ts:362:21 
Parameter 'd' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/fanchart.ts:363:19 
Parameter 'd' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/fanchart.ts:364:22 
Parameter 'd' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/fanchart.ts:365:22 
Parameter 'd' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/fanchart.ts:399:24 
Parameter 'd' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/fanchart.ts:412:21 
Generic type 'Selection<GElement, Datum, PElement, PDatum>' requires 4 type argument(s).

ERROR in [default] /home/xirov/geneapro/resources/ts/fanchart.ts:423:29 
Parameter 'd' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/fanchart.ts:530:27 
Parameter 'd' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/fanchart.ts:582:24 
Parameter 'd' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/fanchart.ts:588:15 
Parameter 'd' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/pedigree.ts:352:25 
Module '"/home/xirov/geneapro/node_modules/@types/d3/index"' has no exported member 'selection'.

ERROR in [default] /home/xirov/geneapro/resources/ts/pedigree.ts:410:34 
Parameter 'd' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/pedigree.ts:439:34 
Parameter 'd' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/pedigree.ts:459:21 
Parameter 'd' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/pedigree.ts:469:24 
Parameter 'd' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/pedigree.ts:476:28 
Parameter 'd' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/pedigree.ts:480:24 
Parameter 'd' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/pedigree.ts:481:25 
Parameter 'd' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/pedigree.ts:542:25 
Parameter 'd' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/pedigree.ts:543:25 
Parameter 'd' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/pedigree.ts:544:24 
Parameter 'd' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/pedigree.ts:548:23 
Parameter 'd' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/pedigree.ts:552:20 
Parameter 'd' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/pedigree.ts:552:23 
Parameter 'i' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/pedigree.ts:553:26 
Parameter 'd' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/pedigree.ts:553:29 
Parameter 'i' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/pedigree.ts:555:15 
Parameter 'd' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/pedigree.ts:557:27 
Parameter 'd' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/pedigree.ts:557:30 
Parameter 'i' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/pedigree.ts:559:27 
Parameter 'd' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/pedigree.ts:559:30 
Parameter 'i' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/pedigree.ts:565:37 
Parameter 'd' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/pedigree.ts:570:17 
Parameter 'd' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/pedigree.ts:576:28 
Parameter 'd' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/pedigree.ts:577:18 
Parameter 'd' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/pedigree.ts:578:18 
Parameter 'd' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/quilts.service.ts:81:15 
Module '"/home/xirov/geneapro/node_modules/@types/d3/index"' has no exported member 'scale'.

ERROR in [default] /home/xirov/geneapro/resources/ts/quilts.service.ts:91:23 
Property 'scale' does not exist on type 'typeof "/home/xirov/geneapro/node_modules/@types/d3/index"'.

ERROR in [default] /home/xirov/geneapro/resources/ts/quilts.ts:66:29 
Parameter 'personList' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/quilts.ts:66:41 
Parameter 'layer' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/quilts.ts:70:25 
Parameter 'personList' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/quilts.ts:70:37 
Parameter 'layer' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/quilts.ts:71:26 
Parameter 'personList' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/quilts.ts:71:38 
Parameter 'layer' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/quilts.ts:75:15 
Parameter 'personList' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/quilts.ts:98:15 
Parameter 'personList' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/quilts.ts:133:18 
Parameter 'personList' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/quilts.ts:133:30 
Parameter 'layer' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/quilts.ts:134:18 
Parameter 'personList' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/quilts.ts:134:30 
Parameter 'layer' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/quilts.ts:135:22 
Parameter 'personList' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/quilts.ts:135:34 
Parameter 'layer' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/quilts.ts:152:29 
Parameter 'f' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/quilts.ts:152:32 
Parameter 'layer' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/radial.ts:67:22 
Property 'layout' does not exist on type 'typeof "/home/xirov/geneapro/node_modules/@types/d3/index"'.

ERROR in [default] /home/xirov/geneapro/resources/ts/radial.ts:100:27 
Property 'svg' does not exist on type 'typeof "/home/xirov/geneapro/node_modules/@types/d3/index"'.

ERROR in [default] /home/xirov/geneapro/resources/ts/stats.generations.ts:12:15 
Module '"/home/xirov/geneapro/node_modules/@types/d3/index"' has no exported member 'scale'.

ERROR in [default] /home/xirov/geneapro/resources/ts/stats.generations.ts:15:23 
Property 'scale' does not exist on type 'typeof "/home/xirov/geneapro/node_modules/@types/d3/index"'.

ERROR in [default] /home/xirov/geneapro/resources/ts/stats.generations.ts:36:19 
Property 'scale' does not exist on type 'typeof "/home/xirov/geneapro/node_modules/@types/d3/index"'.

ERROR in [default] /home/xirov/geneapro/resources/ts/stats.generations.ts:40:19 
Property 'scale' does not exist on type 'typeof "/home/xirov/geneapro/node_modules/@types/d3/index"'.

ERROR in [default] /home/xirov/geneapro/resources/ts/stats.generations.ts:46:19 
Property 'svg' does not exist on type 'typeof "/home/xirov/geneapro/node_modules/@types/d3/index"'.

ERROR in [default] /home/xirov/geneapro/resources/ts/stats.generations.ts:49:19 
Property 'svg' does not exist on type 'typeof "/home/xirov/geneapro/node_modules/@types/d3/index"'.

ERROR in [default] /home/xirov/geneapro/resources/ts/stats.generations.ts:76:18 
Argument of type '{ fill: (d: any) => any; title: (d: any) => any; x: (d: any) => any; width: (d: any) => number; y...' is not assignable to parameter of type 'string'.

ERROR in [default] /home/xirov/geneapro/resources/ts/stats.generations.ts:77:24 
Parameter 'd' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/stats.generations.ts:78:24 
Parameter 'd' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/stats.generations.ts:79:24 
Parameter 'd' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/stats.generations.ts:80:24 
Parameter 'd' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/stats.generations.ts:81:24 
Parameter 'd' implicitly has an 'any' type.

ERROR in [default] /home/xirov/geneapro/resources/ts/stats.lifespan.ts:12:15 
Module '"/home/xirov/geneapro/node_modules/@types/d3/index"' has no exported member 'scale'.

ERROR in [default] /home/xirov/geneapro/resources/ts/stats.lifespan.ts:15:23 
Property 'scale' does not exist on type 'typeof "/home/xirov/geneapro/node_modules/@types/d3/index"'.

ERROR in [default] /home/xirov/geneapro/resources/ts/stats.lifespan.ts:37:37 
Module '"/home/xirov/geneapro/node_modules/@types/d3/index"' has no exported member 'layout'.

ERROR in [default] /home/xirov/geneapro/resources/ts/stats.lifespan.ts:55:41 
Property 'layout' does not exist on type 'typeof "/home/xirov/geneapro/node_modules/@types/d3/index"'.

ERROR in [default] /home/xirov/geneapro/resources/ts/stats.lifespan.ts:59:19 
Property 'scale' does not exist on type 'typeof "/home/xirov/geneapro/node_modules/@types/d3/index"'.

ERROR in [default] /home/xirov/geneapro/resources/ts/stats.lifespan.ts:62:19 
Property 'scale' does not exist on type 'typeof "/home/xirov/geneapro/node_modules/@types/d3/index"'.

ERROR in [default] /home/xirov/geneapro/resources/ts/stats.lifespan.ts:71:19 
Property 'svg' does not exist on type 'typeof "/home/xirov/geneapro/node_modules/@types/d3/index"'.

ERROR in [default] /home/xirov/geneapro/resources/ts/stats.lifespan.ts:74:19 
Property 'svg' does not exist on type 'typeof "/home/xirov/geneapro/node_modules/@types/d3/index"'.

ERROR in [default] /home/xirov/geneapro/resources/ts/stats.lifespan.ts:113:15 
Argument of type '{ title: (d: ILifeSpan) => string; x: (d: ILifeSpan) => any; y: (d: ILifeSpan) => number; height:...' is not assignable to parameter of type 'string'.
Child html-webpack-plugin for "index.html":
        + 1 hidden modules
Performing system checks...

System check identified no issues (0 silenced).
[utils 2017-02-16 20:49:47,475] DEBUG (0.000) 
            SELECT name, type FROM sqlite_master
            WHERE type in ('table', 'view') AND NOT name='sqlite_sequence'
            ORDER BY name; args=None
[utils 2017-02-16 20:49:47,503] DEBUG (0.000) SELECT "django_migrations"."app", "django_migrations"."name" FROM "django_migrations"; args=()
February 16, 2017 - 20:49:47
Django version 1.10.3, using settings 'mysites.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
Internal Server Error: /favicon.ico
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/django/core/handlers/exception.py", line 39, in inner
    response = get_response(request)
  File "/usr/lib/python2.7/site-packages/django/core/handlers/base.py", line 249, in _legacy_get_response
    response = self._get_response(request)
  File "/usr/lib/python2.7/site-packages/django/core/handlers/base.py", line 187, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/usr/lib/python2.7/site-packages/django/core/handlers/base.py", line 185, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/home/xirov/geneapro/geneaprove/urls.py", line 37, in static
    return index(request)
  File "/home/xirov/geneapro/geneaprove/urls.py", line 28, in index
    return render_to_response('index.html', c)
  File "/usr/lib/python2.7/site-packages/django/shortcuts.py", line 21, in render_to_response
    content = loader.render_to_string(template_name, context, using=using)
  File "/usr/lib/python2.7/site-packages/django/template/loader.py", line 67, in render_to_string
    template = get_template(template_name, using=using)
  File "/usr/lib/python2.7/site-packages/django/template/loader.py", line 25, in get_template
    raise TemplateDoesNotExist(template_name, chain=chain)
TemplateDoesNotExist: index.html
[16/Feb/2017 20:50:03] "GET /favicon.ico HTTP/1.1" 500 107800

Hope I didn't skip through any important part which lead to this, otherwise my apologies. Also I hope that someone can help me get this working.

I've been interested in Genealogy for years, however I haven't found a tool that I really enjoy to use yet. I actually stumpled upon this repo, because I was considering developing something myself.

Cheers!

Reseting the database

Once I have loaded a GEDCOM from Firefox etc how do I load or reset geneapro to load another GEDCOM with out going to the command line?

PS:A liitle feedback. I like geneapro and that you can now load the GEDCOM from Firefox. The Fan chart look really good. The pedigree chart is too small when it loads better if it uses more of the screen. The quilt chart is different but after reading about it I believe it to be very interesting and full of potential. I suggest that you include those help files etc from http://briot.github.com/geneapro/index.html and add a help button.

Zoom is not zooming.

On a MacBook Pro, zooming of the various charts was working with two-finger gestures on the trackpad (I assume it's read as a mouse-wheel. With the latest changes, that is no longer happening.

Also, is there a way to zoom with a mouse that has no wheel? The code doesn't seem to have this, but my javascript-foo is weak, so I thought I'd ask.

Can not run geneapro

Wanting to try it out. received the First error below. Had a look in the file and can see you mention "# Experimental, does not work yet" for the geneapro.views.merge.view so I made lines 10 and 38 commented lines. Then I tried again and received the Second Error not sure what to do now?

Please help, I am just learning python and interested in trying geneapro

-Pat

First error:

Environment:

Request Method: GET
Request URL: http://127.0.0.1:8000/

Django Version: 1.4.1
Python Version: 2.7.3
Installed Applications:
('django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'geneapro')
Installed Middleware:
('mysites.middleware.simple_exception.AJAXSimpleExceptionResponse',
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware')

Traceback:
File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response

  1.                         request.path_info)
    
    File "/usr/lib/python2.7/dist-packages/django/core/urlresolvers.py" in resolve
  2.         for pattern in self.url_patterns:
    
    File "/usr/lib/python2.7/dist-packages/django/core/urlresolvers.py" in url_patterns
  3.     patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
    
    File "/usr/lib/python2.7/dist-packages/django/core/urlresolvers.py" in urlconf_module
  4.         self._urlconf_module = import_module(self.urlconf_name)
    
    File "/usr/lib/python2.7/dist-packages/django/utils/importlib.py" in import_module
  5. **import**(name)
    
    File "/home/pat/git/geneapro/mysites/urls.py" in
  6. import geneapro.urls
    File "/home/pat/git/geneapro/geneapro/urls.py" in
  7. import geneapro.views.merge

Exception Type: ImportError at /
Exception Value: No module named merge


Second Error

Environment:

Request Method: GET
Request URL: http://127.0.0.1:8000/

Django Version: 1.4.1
Python Version: 2.7.3
Installed Applications:
('django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'geneapro')
Installed Middleware:
('mysites.middleware.simple_exception.AJAXSimpleExceptionResponse',
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware')

Traceback:
File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response

  1.                     response = callback(request, _callback_args, *_callback_kwargs)
    
    File "/home/pat/git/geneapro/geneapro/views/pedigree.py" in pedigree_view
  2.    {"pedigree_data": compute_data(graph, gens, False, decujus),
    
    File "/home/pat/git/geneapro/geneapro/views/pedigree.py" in compute_data
  3.                        last_gen_known=last_gen_known)
    
    File "/home/pat/git/geneapro/geneapro/views/pedigree.py" in get_sosa_tree
  4. decujus = graph.node_from_id(id)
    File "/home/pat/git/geneapro/geneapro/views/graph.py" in node_from_id
  5.     return self.__nodes[id]
    

Exception Type: KeyError at /
Exception Value: 1

There should be a bit longer delay in onchange events, particular for ancestor/descendant selections.

It seems that onchange is on a very short delay, triggering updates as soon as a new value is hit, when mouse or arrow-key changes are made to the selected number of ancestors/desc.

Perhaps a second or so at least, or perhaps a Set button to commit the choice, rather than triggering a sequence of pedigree updates.

By way of example, as I rapidly type the right arrow key to reach a higher number, in console I see:

2019-03-24 21:26:06,198 get geneaprove.views.pedigree.PedigreeData.get(<JSONViewParams: {'gens': ['14'], 'descendant_gens': ['1'], 'theme': ['-5']}>)
2019-03-24 21:26:06,198 get_json get pedigree data
2019-03-24 21:26:06,310 get geneaprove.views.pedigree.PedigreeData.get(<JSONViewParams: {'gens': ['15'], 'descendant_gens': ['1'], 'theme': ['-5']}>)
2019-03-24 21:26:06,311 get_json get pedigree data
2019-03-24 21:26:06,361 get geneaprove.views.pedigree.PedigreeData.get(<JSONViewParams: {'gens': ['16'], 'descendant_gens': ['1'], 'theme': ['-5']}>)
2019-03-24 21:26:06,362 get_json get pedigree data
2019-03-24 21:26:06,425 get geneaprove.views.pedigree.PedigreeData.get(<JSONViewParams: {'gens': ['17'], 'descendant_gens': ['1'], 'theme': ['-5']}>)
2019-03-24 21:26:06,426 get_json get pedigree data
2019-03-24 21:26:06,480 get geneaprove.views.pedigree.PedigreeData.get(<JSONViewParams: {'gens': ['18'], 'descendant_gens': ['1'], 'theme': ['-5']}>)
2019-03-24 21:26:06,481 get_json get pedigree data
2019-03-24 21:26:06,587 get geneaprove.views.pedigree.PedigreeData.get(<JSONViewParams: {'gens': ['19'], 'descendant_gens': ['1'], 'theme': ['-5']}>)
2019-03-24 21:26:06,588 get_json get pedigree data

Problem during GEDCOM import: Surety_Scheme matching query does not exist.

Turned on debugging and got this while trying to import my GEDCOM:

[27/Nov/2013 20:22:10] "GET /personas HTTP/1.1" 200 5128
[util 2013-11-27 20:22:55,932] DEBUG (0.002) INSERT INTO "researcher" ("name", "comment") VALUES (unknown, ); args=['unknown', '']
[util 2013-11-27 20:22:55,933] DEBUG (0.000) SELECT "surety_scheme"."id", "surety_scheme"."name", "surety_scheme"."description" FROM "surety_scheme" WHERE "surety_scheme"."id" = 1 ; args=(1,)
Unexpected Exception Surety_Scheme matching query does not exist.
Traceback (most recent call last):
File "/mnt/sda6/download/geneapro-master/geneaprove/importers/gedcomimport.py", line 1027, in parse
parser = GedcomImporterCumulate(parsed)
File "/mnt/sda6/download/geneapro-master/geneaprove/importers/gedcomimport.py", line 993, in init
super(GedcomImporterCumulate, self).init(_args, *_kwargs)
File "/usr/lib/python2.7/dist-packages/django/db/transaction.py", line 223, in inner
return func(_args, *_kwargs)
File "/mnt/sda6/download/geneapro-master/geneaprove/importers/gedcomimport.py", line 71, in init
prj = self._create_project(self._researcher)
File "/mnt/sda6/download/geneapro-master/geneaprove/importers/gedcomimport.py", line 936, in _create_project
scheme=models.Surety_Scheme.objects.get(id=1))
File "/usr/lib/python2.7/dist-packages/django/db/models/manager.py", line 143, in get
return self.get_query_set().get(_args, *_kwargs)
File "/usr/lib/python2.7/dist-packages/django/db/models/query.py", line 404, in get
self.model._meta.object_name)
DoesNotExist: Surety_Scheme matching query does not exist.

The message on the server webpage is:

GeneaProve could not import your file. This is either because your file does not contain correct GEDCOM data, or more likely because of limitations in GeneaProve.

Feature Request: Option to Suppress Dates of Living Individuals

Present an option to suppress the date display of living individuals. Presence of death date is a good way, but it is best to also include some arbitrary limit (e.g. 100 years) to handle cases of missing death dates. This feature would make it easier to put a GEDCOM on a public display webserver using Geneapro without the generation of a special GEDCOM for that purpose.

Migration fails on 0005_MIL_to_MILT.py after model changes.

Stacktrace:

Running migrations:
  Applying geneaprove.0005_MIL_to_MILT...Traceback (most recent call last):
  File "./manage.py", line 22, in <module>
    execute_from_command_line(sys.argv)
  File "/Users/clarson/Desktop/ged_files/geneapro-master/python_env/lib/python3.6/site-packages/django/core/management/__init__.py", line 367, in execute_from_command_line
    utility.execute()
  File "/Users/clarson/Desktop/ged_files/geneapro-master/python_env/lib/python3.6/site-packages/django/core/management/__init__.py", line 359, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/Users/clarson/Desktop/ged_files/geneapro-master/python_env/lib/python3.6/site-packages/django/core/management/base.py", line 294, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/Users/clarson/Desktop/ged_files/geneapro-master/python_env/lib/python3.6/site-packages/django/core/management/base.py", line 345, in execute
    output = self.handle(*args, **options)
  File "/Users/clarson/Desktop/ged_files/geneapro-master/python_env/lib/python3.6/site-packages/django/core/management/commands/migrate.py", line 204, in handle
    fake_initial=fake_initial,
  File "/Users/clarson/Desktop/ged_files/geneapro-master/python_env/lib/python3.6/site-packages/django/db/migrations/executor.py", line 115, in migrate
    state = self._migrate_all_forwards(state, plan, full_plan, fake=fake, fake_initial=fake_initial)
  File "/Users/clarson/Desktop/ged_files/geneapro-master/python_env/lib/python3.6/site-packages/django/db/migrations/executor.py", line 145, in _migrate_all_forwards
    state = self.apply_migration(state, migration, fake=fake, fake_initial=fake_initial)
  File "/Users/clarson/Desktop/ged_files/geneapro-master/python_env/lib/python3.6/site-packages/django/db/migrations/executor.py", line 244, in apply_migration
    state = migration.apply(state, schema_editor)
  File "/Users/clarson/Desktop/ged_files/geneapro-master/python_env/lib/python3.6/site-packages/django/db/migrations/migration.py", line 129, in apply
    operation.database_forwards(self.app_label, schema_editor, old_state, project_state)
  File "/Users/clarson/Desktop/ged_files/geneapro-master/python_env/lib/python3.6/site-packages/django/db/migrations/operations/special.py", line 189, in database_forwards
    self.code(from_state.apps, schema_editor)
  File "/Users/clarson/Desktop/ged_files/geneapro-master/backend/geneaprove/migrations/0005_MIL_to_MILT.py", line 12, in forward
    m = EType.objects.get(gedcom='_MIL')
  File "/Users/clarson/Desktop/ged_files/geneapro-master/python_env/lib/python3.6/site-packages/django/db/models/manager.py", line 85, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/Users/clarson/Desktop/ged_files/geneapro-master/python_env/lib/python3.6/site-packages/django/db/models/query.py", line 385, in get
    self.model._meta.object_name
__fake__.DoesNotExist: Event_Type matching query does not exist.

You have 2 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): geneaprove.
Run 'python manage.py migrate' to apply them.

Feature Request: Surname +Given Name Sort on Show All Persons List

It appears as though the default sort order on the 'Show all persons' list is 'surname', which is perfectly valid and good. However, it probably would be good if the 2nd column (i.e. 'given name') would automatically be the 2nd sort column when that is done e.g. so that 'Darren Enns' is display after 'Bob Enns'.

setup.sh for distribution.

The setup.sh script is calling for deps that aren't relevant except to development. In addition, pyinstaller is causing a failure on my end that prevents the python session from continuing:

pip install django==1.10.6 pillow pylint pylint-django pep8 autopep8 grandalf \
   django-prepared-query cprofilev pyinstaller appdirs

I've shortened the lines on my local copy to:

pip install django==1.10.6 pillow grandalf django-prepared-query appdirs

And all is right with the world. (Well, maybe not the world. The code.)

Launching Django yields django.db.utils.OperationalError: no such table: event_type

I haven't had time to look yet, so I'm simply posting the error.

Launching Django yields the following:

Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0x107ddad90>
Traceback (most recent call last):
  File "/Users/clarson/Desktop/workroom/geneapro-NEW/python_env/lib/python3.6/site-packages/django/db/backends/utils.py", line 85, in _execute
    return self.cursor.execute(sql, params)
  File "/Users/clarson/Desktop/workroom/geneapro-NEW/python_env/lib/python3.6/site-packages/django/db/backends/sqlite3/base.py", line 298, in execute
    return Database.Cursor.execute(self, query, params)
sqlite3.OperationalError: no such table: event_type

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/Users/clarson/Desktop/workroom/geneapro-NEW/python_env/lib/python3.6/site-packages/django/utils/autoreload.py", line 225, in wrapper
    fn(*args, **kwargs)
  File "/Users/clarson/Desktop/workroom/geneapro-NEW/python_env/lib/python3.6/site-packages/django/core/management/commands/runserver.py", line 109, in inner_run
    autoreload.raise_last_exception()
  File "/Users/clarson/Desktop/workroom/geneapro-NEW/python_env/lib/python3.6/site-packages/django/utils/autoreload.py", line 248, in raise_last_exception
    raise _exception[1]
  File "/Users/clarson/Desktop/workroom/geneapro-NEW/python_env/lib/python3.6/site-packages/django/core/management/__init__.py", line 337, in execute
    autoreload.check_errors(django.setup)()
  File "/Users/clarson/Desktop/workroom/geneapro-NEW/python_env/lib/python3.6/site-packages/django/utils/autoreload.py", line 225, in wrapper
    fn(*args, **kwargs)
  File "/Users/clarson/Desktop/workroom/geneapro-NEW/python_env/lib/python3.6/site-packages/django/__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/Users/clarson/Desktop/workroom/geneapro-NEW/python_env/lib/python3.6/site-packages/django/apps/registry.py", line 112, in populate
    app_config.import_models()
  File "/Users/clarson/Desktop/workroom/geneapro-NEW/python_env/lib/python3.6/site-packages/django/apps/config.py", line 198, in import_models
    self.models_module = import_module(models_module_name)
  File "/Users/clarson/Desktop/workroom/geneapro-NEW/python_env/lib/python3.6/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 994, in _gcd_import
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 678, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/Users/clarson/Desktop/workroom/geneapro-NEW/backend/geneaprove/models/__init__.py", line 27, in <module>
    from .theme import Theme, Rule, RulePart
  File "/Users/clarson/Desktop/workroom/geneapro-NEW/backend/geneaprove/models/theme/__init__.py", line 4, in <module>
    from .rules import RuleChecker
  File "/Users/clarson/Desktop/workroom/geneapro-NEW/backend/geneaprove/models/theme/rules.py", line 5, in <module>
    from geneaprove.views.queries import PersonSet
  File "/Users/clarson/Desktop/workroom/geneapro-NEW/backend/geneaprove/views/queries.py", line 21, in <module>
    class PersonSet(object):
  File "/Users/clarson/Desktop/workroom/geneapro-NEW/backend/geneaprove/views/queries.py", line 28, in PersonSet
    BMD = (models.Event_Type.PK_birth,
  File "/Users/clarson/Desktop/workroom/geneapro-NEW/backend/geneaprove/models/base.py", line 45, in __get__
    self._cached = klass.objects.get(**self.kwargs).pk
  File "/Users/clarson/Desktop/workroom/geneapro-NEW/python_env/lib/python3.6/site-packages/django/db/models/manager.py", line 82, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/Users/clarson/Desktop/workroom/geneapro-NEW/python_env/lib/python3.6/site-packages/django/db/models/query.py", line 393, in get
    num = len(clone)
  File "/Users/clarson/Desktop/workroom/geneapro-NEW/python_env/lib/python3.6/site-packages/django/db/models/query.py", line 250, in __len__
    self._fetch_all()
  File "/Users/clarson/Desktop/workroom/geneapro-NEW/python_env/lib/python3.6/site-packages/django/db/models/query.py", line 1186, in _fetch_all
    self._result_cache = list(self._iterable_class(self))
  File "/Users/clarson/Desktop/workroom/geneapro-NEW/python_env/lib/python3.6/site-packages/django/db/models/query.py", line 54, in __iter__
    results = compiler.execute_sql(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size)
  File "/Users/clarson/Desktop/workroom/geneapro-NEW/python_env/lib/python3.6/site-packages/django/db/models/sql/compiler.py", line 1065, in execute_sql
    cursor.execute(sql, params)
  File "/Users/clarson/Desktop/workroom/geneapro-NEW/python_env/lib/python3.6/site-packages/django/db/backends/utils.py", line 100, in execute
    return super().execute(sql, params)
  File "/Users/clarson/Desktop/workroom/geneapro-NEW/python_env/lib/python3.6/site-packages/django/db/backends/utils.py", line 68, in execute
    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
  File "/Users/clarson/Desktop/workroom/geneapro-NEW/python_env/lib/python3.6/site-packages/django/db/backends/utils.py", line 77, in _execute_with_wrappers
    return executor(sql, params, many, context)
  File "/Users/clarson/Desktop/workroom/geneapro-NEW/python_env/lib/python3.6/site-packages/django/db/backends/utils.py", line 85, in _execute
    return self.cursor.execute(sql, params)
  File "/Users/clarson/Desktop/workroom/geneapro-NEW/python_env/lib/python3.6/site-packages/django/db/utils.py", line 89, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "/Users/clarson/Desktop/workroom/geneapro-NEW/python_env/lib/python3.6/site-packages/django/db/backends/utils.py", line 85, in _execute
    return self.cursor.execute(sql, params)
  File "/Users/clarson/Desktop/workroom/geneapro-NEW/python_env/lib/python3.6/site-packages/django/db/backends/sqlite3/base.py", line 298, in execute
    return Database.Cursor.execute(self, query, params)
django.db.utils.OperationalError: no such table: event_type

Running under Windows

I followed a link here from geneaquilts and was curious to install geneapro to see what it looked like. Although I have used computers since punched card days and know Windows and macos pretty well and have used Solaris, VAX/VMS, and other systems at work (including for software testing), I never have really had to master installing packages or python etc. So in summary in experience terms I am a bit of a mixed bag and I am very low priority user as I am not likely to have time or ability to contribute to the project... but I don't like to be defeated.

I installed Python 3.8 with some difficulty. Installing for all users it is in
C:\Program Files (x86)\Python38-32\
and I am launching it with the py Python Launcher so I didn't lose v2.7 and the system and user env var have no Python paths.

I installed pip and Django 3.0.7, again with some difficulty (took some time before I realized I needed to run pip from the CMD window and not from within Python!)

I got the geneapro download and (rightly or wrongly) placed it in
C:\Program Files (x86)\Python38-32\Scripts\geneapro-master
(Need Admin privilege to write anything there and that could be a problem?)

Now I find instructions in README.md telling me to run settings.sh... which seems to be unix only, So I am wondering what I would do if I wanted to install on Windows.

I started stepping through it and used pip to install npm and appdirs but then quit that as it seemed to be leading me to install an older version of Django which I already have.

The Wiki seems to have alternative install instructions and just tells me to
"Run geneaprove.py, which creates an empty database and starts the server. You can import your existing GEDCOM data directly by connecting to that server with a web browser."

When I try running it it fails with

C:\Program Files (x86)\Python38-32\Scripts\geneapro-master>py geneaprove.py
File "geneaprove.py", line 16
print(f"Creating a new database {db}")
____________________________________^
SyntaxError: invalid syntax

I guessed the "f" might be an error in the code so edited it out.

Next attempt gets me:

C:\Program Files (x86)\Python38-32\Scripts\geneapro-master>py geneaprove.py
Traceback (most recent call last):
File "geneaprove.py", line 8, in
from django.core.management import execute_from_command_line
ImportError: No module named django.core.management

At which point it is probably pretty obvious I don't know what I am doing.

Any suggestions welcome.

(I am running Windows 7 Pro)

Stats continuously reload, without ever displaying.

With a database of >200,000, clicking on Stats never completes. Watching the console, the process loops without ever completing to browser.

I added completion lines to the logging for stats.py, resutling in an ongoing seequence of:

2019-02-18 00:27:01,009 stats 85485 123145370824704 refresh graph
2019-02-18 00:27:01,009 stats 85485 123145370824704 compute birth and death for people
2019-02-18 00:29:01,026 stats 85485 123145376079872 refresh graph
2019-02-18 00:29:01,027 stats 85485 123145376079872 compute birth and death for people
2019-02-18 00:31:01,046 stats 85485 123145381335040 refresh graph
2019-02-18 00:31:01,053 stats 85485 123145381335040 compute birth and death for people
2019-02-18 00:32:03,305 stats 85485 123145370824704 compute birth and death for people COMPLETED
2019-02-18 00:32:03,305 stats 85485 123145370824704 count persons in tree
2019-02-18 00:32:03,936 stats 85485 123145370824704 count persons in tree COMPLETED.
2019-02-18 00:32:03,937 stats 85485 123145370824704 group by generation
2019-02-18 00:32:03,958 stats 85485 123145370824704 group by generation COMPLETED.
2019-02-18 00:32:03,959 stats 85485 123145370824704 parse dates
2019-02-18 00:32:08,444 stats 85485 123145370824704 parse dates COMPLETED.
2019-02-18 00:32:08,446 stats 85485 123145370824704 compute timespans
2019-02-18 00:32:08,532 stats 85485 123145370824704 compute timespans COMPLETED.
2019-02-18 00:32:08,533 stats 85485 123145370824704 group by age
2019-02-18 00:32:08,638 stats 85485 123145370824704 group by age COMPLETED.
2019-02-18 00:32:08,639 stats 85485 123145370824704 RETURN STATS.
2019-02-18 00:33:01,043 stats 85485 123145370824704 refresh graph
2019-02-18 00:33:01,043 stats 85485 123145370824704 compute birth and death for people
2019-02-18 00:35:01,053 stats 85485 123145386590208 refresh graph
2019-02-18 00:35:01,055 stats 85485 123145386590208 compute birth and death for people
2019-02-18 00:37:01,774 stats 85485 123145391845376 refresh graph
2019-02-18 00:37:01,778 stats 85485 123145391845376 compute birth and death for people
2019-02-18 00:39:01,087 stats 85485 123145397100544 refresh graph
2019-02-18 00:39:01,112 stats 85485 123145397100544 compute birth and death for people
2019-02-18 00:41:01,079 stats 85485 123145402355712 refresh graph
2019-02-18 00:41:01,080 stats 85485 123145402355712 compute birth and death for people
2019-02-18 00:42:44,085 stats 85485 123145376079872 compute birth and death for people COMPLETED
2019-02-18 00:42:44,086 stats 85485 123145376079872 count persons in tree
2019-02-18 00:42:44,795 stats 85485 123145376079872 count persons in tree COMPLETED.
2019-02-18 00:42:44,797 stats 85485 123145376079872 group by generation
2019-02-18 00:42:44,833 stats 85485 123145376079872 group by generation COMPLETED.
2019-02-18 00:42:44,833 stats 85485 123145376079872 parse dates
2019-02-18 00:42:49,943 stats 85485 123145376079872 parse dates COMPLETED.
2019-02-18 00:42:49,944 stats 85485 123145376079872 compute timespans
2019-02-18 00:42:50,058 stats 85485 123145376079872 compute timespans COMPLETED.
2019-02-18 00:42:50,060 stats 85485 123145376079872 group by age
2019-02-18 00:42:50,209 stats 85485 123145376079872 group by age COMPLETED.
2019-02-18 00:42:50,210 stats 85485 123145376079872 RETURN STATS.
2019-02-18 00:43:01,169 stats 85485 123145376079872 refresh graph
2019-02-18 00:43:01,171 stats 85485 123145376079872 compute birth and death for people

Charting issues and thoughts.

The ManyMany file is around 220,000 people, but many generations, and no descendants, only ancestors. I'm actually no longer sure how many generations (This would be a neat feature for the dashboard, deepest generation in the tree). It might also be a good idea to set the bounds for zooming in the different graphics to the selected generation level. When I have extreme charts, the zoom level is insufficient to get the entire image onscreen.

The GrandSchemeTree, with ~million people, doesn't seem to have any problems, though it's only about 8 generations deep, with 8 generations of descendants.

Pedigree is no problem with the preset themes, one of the ~30 second queries, as are all the others, set to their max. I've even tweaked the various Side.tsx files to go way, way out, and they run fine. I'll try them with custom themes (very cool feature, by the way).

Radial can get weird at the later generations, likely due to problems in the data, or descendants that overlap, as do the Fan charts.

Here are examples of deep Radial and Fan charts:

Radial:
Screen Shot Radial

Fan:
Screen Shot Fanchart

Originally posted by @changeling in #56 (comment)

Errors before importing a GEDCOM (should instead ask/show screen asking to import a GEDCOM)

I turned on Debug in settings so I could give you more feedback on geneapro.

If you click on Reports>Fan Chart before importing a GEDCOM you get the correct screen asking to import a GEDCOM

If you click on Reports>Fan Chart before importing a GEDCOM you get a blank screen

If you click on People before importing a GEDCOM you get the following error

Environment:

Request Method: GET
Request URL: http://127.0.0.1:8000/personas

Django Version: 1.4.1
Python Version: 2.7.3
Installed Applications:
('django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'geneapro')
Installed Middleware:
('mysites.middleware.simple_exception.AJAXSimpleExceptionResponse',
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware')

Traceback:
File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response

  1.                     response = callback(request, _callback_args, *_callback_kwargs)
    
    File "/home/pat/git/geneapro/geneapro/views/persona.py" in view_list
  2. styles = Styles(style_rules, graph=graph, decujus=1) # ??? Why "1"
    
    File "/home/pat/git/geneapro/geneapro/views/styles.py" in init
  3.               build_implex(counts, graph.node_from_id(decujus).main_id)
    
    File "/home/pat/git/geneapro/geneapro/views/graph.py" in node_from_id
  4.     return self.__nodes[id]
    

Exception Type: KeyError at /personas
Exception Value: 1

If you click on Sources before importing a GEDCOM you get the following error

Environment:

Request Method: GET
Request URL: http://127.0.0.1:8000/sources

Django Version: 1.4.1
Python Version: 2.7.3
Installed Applications:
('django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'geneapro')
Installed Middleware:
('mysites.middleware.simple_exception.AJAXSimpleExceptionResponse',
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware')

Traceback:
File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response

  1.                 raise ValueError("The view %s.%s didn't return an HttpResponse object." % (callback.**module**, view_name))
    

Exception Type: ValueError at /sources
Exception Value: The view geneapro.views.sources.source_list didn't return an HttpResponse object.

If you click on Reports>Fan Chart before importing a GEDCOM you get the following error

Environment:

Request Method: GET
Request URL: http://127.0.0.1:8000/fanchart/1

Django Version: 1.4.1
Python Version: 2.7.3
Installed Applications:
('django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'geneapro')
Installed Middleware:
('mysites.middleware.simple_exception.AJAXSimpleExceptionResponse',
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware')

Traceback:
File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response

  1.                     response = callback(request, _callback_args, *_callback_kwargs)
    
    File "/home/pat/git/geneapro/geneapro/views/pedigree.py" in fanchart_view
  2.     "pedigree_data":compute_data(graph, gens, True, decujus)},
    
    File "/home/pat/git/geneapro/geneapro/views/pedigree.py" in compute_data
  3.                        last_gen_known=last_gen_known)
    
    File "/home/pat/git/geneapro/geneapro/views/pedigree.py" in get_sosa_tree
  4. decujus = graph.node_from_id(id)
    File "/home/pat/git/geneapro/geneapro/views/graph.py" in node_from_id
  5.     return self.__nodes[id]
    

Exception Type: KeyError at /fanchart/1
Exception Value: 1

If you click on Reports>Statistics before importing a GEDCOM you get the following

Environment:

Request Method: GET
Request URL: http://127.0.0.1:8000/stats/1

Django Version: 1.4.1
Python Version: 2.7.3
Installed Applications:
('django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'geneapro')
Installed Middleware:
('mysites.middleware.simple_exception.AJAXSimpleExceptionResponse',
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware')

Traceback:
File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response

  1.                     response = callback(request, _callback_args, *_callback_kwargs)
    
    File "/home/pat/git/geneapro/geneapro/views/stats.py" in view
  2.    id=decujus, maxdepthDescendants=0, distance=distance)
    
    File "/home/pat/git/geneapro/geneapro/views/graph.py" in people_in_tree
  3.         ids = set([self.node_from_id(id)])
    
    File "/home/pat/git/geneapro/geneapro/views/graph.py" in node_from_id
  4.     return self.__nodes[id]
    

Exception Type: KeyError at /stats/1
Exception Value: 1

Once a GEDCOM is loaded selecting Sources gives the following error:

Environment:

Request Method: GET
Request URL: http://127.0.0.1:8000/sources

Django Version: 1.4.1
Python Version: 2.7.3
Installed Applications:
('django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'geneapro')
Installed Middleware:
('mysites.middleware.simple_exception.AJAXSimpleExceptionResponse',
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware')

Traceback:
File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response

  1.                 raise ValueError("The view %s.%s didn't return an HttpResponse object." % (callback.**module**, view_name))
    

Exception Type: ValueError at /sources
Exception Value: The view geneapro.views.sources.source_list didn't return an HttpResponse object.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.