Design Notes » History » Version 10
Luke Murphey, 08/20/2017 08:05 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> |
85 | 10 | Luke Murphey | |
86 | 10 | Luke Murphey | h2. How can I import Perseus works? |
87 | 10 | Luke Murphey | |
88 | 10 | Luke Murphey | You can batch import Perseus works by running the batch_import_perseus command against a directory of Perseus works: |
89 | 10 | Luke Murphey | |
90 | 10 | Luke Murphey | <pre> |
91 | 10 | Luke Murphey | python manage.py batch_import_perseus -d var/import_queue/ |
92 | 10 | Luke Murphey | </pre> |
93 | 10 | Luke Murphey | |
94 | 10 | Luke Murphey | The command above will import the work according to the import policy (thus using the recommended settings). |
95 | 10 | Luke Murphey | |
96 | 10 | Luke Murphey | h2. What is the purpose of the Perseus import policy? |
97 | 10 | Luke Murphey | |
98 | 10 | Luke Murphey | The import policy indicates if a work will be imported and what settings will be used. Here is how the importer uses the policy: |
99 | 10 | Luke Murphey | |
100 | 10 | Luke Murphey | # Gets import policy. Stop is there is no matching import policy. |
101 | 10 | Luke Murphey | # The PerseusTextImporter is called with the import policy |
102 | 10 | Luke Murphey | # The is imported unless the file doesn't already exist or is directed to force update |
103 | 10 | Luke Murphey | |
104 | 10 | Luke Murphey | Similar works are linked using the autodiscover() function in the RelatedWork class. This needs to be called manually since the import process doesn't do this automatically. |