Project

General

Profile

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>