Design Notes » History » Version 9
Luke Murphey, 08/20/2017 08:02 PM
| 1 | 1 | Luke Murphey | h1. Design Notes |
|---|---|---|---|
| 2 | 1 | Luke Murphey | |
| 3 | 1 | Luke Murphey | h2. AJAX content loading caching system |
| 4 | 1 | Luke Murphey | |
| 5 | 1 | Luke Murphey | The content for the reading pages is cached in order to reduce the loading time of the chapters. This is necessary because rendering is expensive. This works by: |
| 6 | 1 | Luke Murphey | |
| 7 | 1 | Luke Murphey | # Caching the current page on the server |
| 8 | 1 | Luke Murphey | # Pre-loading the next page so that it is pre-cached |
| 9 | 1 | Luke Murphey | |
| 10 | 9 | Luke Murphey | The way that this works is that the template for the page will only return the non-content part of the page if the request is not an AJAX request. This will _not_ be cached. |
| 11 | 1 | Luke Murphey | |
| 12 | 9 | Luke Murphey | On the other hand. if the request is for an AJAX request, then only the content part of the page will be returned. This _will_ be cached. |
| 13 | 1 | Luke Murphey | |
| 14 | 1 | Luke Murphey | h2. ajaxify: what does it do? |
| 15 | 1 | Luke Murphey | |
| 16 | 1 | Luke Murphey | The ajaxify decorator changes the page that will be returned such that it is a shell that will request the actual page. This is useful in order to show content to a user quickly with a progress-bar instead of showing a white screen while the content is prepared. |
| 17 | 2 | Luke Murphey | |
| 18 | 2 | Luke Murphey | h2. How the type-ahead system in the search works |
| 19 | 2 | Luke Murphey | |
| 20 | 2 | Luke Murphey | # The search-query uses the Bootstrap type-ahead component to invoke a call to get_works_search_typeahead_hints() |
| 21 | 2 | Luke Murphey | # get_works_search_typeahead_hints() obtains the type-ahead hints for Bootstrap |
| 22 | 2 | Luke Murphey | # On submitting the search query, jump_to_searched_text() will be used to jump directly to the matching work |
| 23 | 3 | Luke Murphey | |
| 24 | 3 | Luke Murphey | h2. How are related works identified in the importer? |
| 25 | 3 | Luke Murphey | |
| 26 | 3 | Luke Murphey | The RelatedWork model function autodiscover() attempts to find related works and link them. It considers them comparable when: |
| 27 | 3 | Luke Murphey | # The number of authors are the same and the authors names are the same and in the same order |
| 28 | 3 | Luke Murphey | # The number of editors are the same and the editors names are the same and in the same order |
| 29 | 3 | Luke Murphey | # The divisions are the same (same number of them and the descriptors are the same and in the same order) |
| 30 | 4 | Luke Murphey | |
| 31 | 5 | Luke Murphey | h2. How search indexes get re-populated |
| 32 | 4 | Luke Murphey | |
| 33 | 5 | Luke Murphey | There is a built-in command to re-index works. For example: |
| 34 | 4 | Luke Murphey | |
| 35 | 4 | Luke Murphey | <pre> |
| 36 | 4 | Luke Murphey | python manage.py make_search_indexes -w lxx |
| 37 | 4 | Luke Murphey | </pre> |
| 38 | 4 | Luke Murphey | |
| 39 | 4 | Luke Murphey | If you want to clear the existing index for a work before indexing it, then include the -f option: |
| 40 | 4 | Luke Murphey | |
| 41 | 4 | Luke Murphey | <pre> |
| 42 | 4 | Luke Murphey | python manage.py make_search_indexes -f -w lxx |
| 43 | 4 | Luke Murphey | </pre> |
| 44 | 4 | Luke Murphey | |
| 45 | 4 | Luke Murphey | You can clear the index entirely with: |
| 46 | 4 | Luke Murphey | |
| 47 | 4 | Luke Murphey | <pre> |
| 48 | 4 | Luke Murphey | python manage.py make_search_indexes -c |
| 49 | 4 | Luke Murphey | </pre> |
| 50 | 4 | Luke Murphey | |
| 51 | 4 | Luke Murphey | You can re-create the index entirely with: |
| 52 | 4 | Luke Murphey | |
| 53 | 4 | Luke Murphey | <pre> |
| 54 | 4 | Luke Murphey | python manage.py make_search_indexes |
| 55 | 4 | Luke Murphey | </pre> |
| 56 | 6 | Luke Murphey | |
| 57 | 6 | Luke Murphey | h2. How to populate related works |
| 58 | 6 | Luke Murphey | |
| 59 | 6 | Luke Murphey | The following will be compared to see if two works are equivalent: |
| 60 | 6 | Luke Murphey | |
| 61 | 6 | Luke Murphey | # TItles |
| 62 | 6 | Luke Murphey | # Count of authors |
| 63 | 6 | Luke Murphey | # Author names |
| 64 | 6 | Luke Murphey | # Count of editors (optionally) |
| 65 | 6 | Luke Murphey | # Editor names (optionally) |
| 66 | 1 | Luke Murphey | # Divisions (optionally) |
| 67 | 6 | Luke Murphey | |
| 68 | 9 | Luke Murphey | This can be done in code with the following: |
| 69 | 6 | Luke Murphey | <pre> |
| 70 | 1 | Luke Murphey | from reader.models import RelatedWork |
| 71 | 1 | Luke Murphey | RelatedWork.autodiscover() |
| 72 | 9 | Luke Murphey | </pre> |
| 73 | 9 | Luke Murphey | |
| 74 | 9 | Luke Murphey | You can also use the autodiscover_related_works command to link related works. Generally, I suggest starting with the test parameter to see what would be linked: |
| 75 | 9 | Luke Murphey | |
| 76 | 9 | Luke Murphey | <pre> |
| 77 | 9 | Luke Murphey | python manage.py autodiscover_related_works -w the-histories-greek --test |
| 78 | 9 | Luke Murphey | </pre> |
| 79 | 9 | Luke Murphey | |
| 80 | 9 | Luke Murphey | If you want the linkage to be created, then run the command without the test parameter: |
| 81 | 9 | Luke Murphey | |
| 82 | 9 | Luke Murphey | <pre> |
| 83 | 9 | Luke Murphey | python manage.py autodiscover_related_works -w the-histories-greek |
| 84 | 6 | Luke Murphey | </pre> |