tree checksum vpatch file split hunks

all signers: lobbes bvt diana_coman asciilifeform

antecedents: search_all_chans.kv

press order:

logotron_genesis.kvasciilifeform diana_coman
multsel_and_datefix.kvasciilifeform diana_coman
raw_line_export.kvasciilifeform diana_coman
rle_errata.kvasciilifeform diana_coman
irssi2tmsr.kvasciilifeform diana_coman
uniturds_etc.kvasciilifeform diana_coman
line_wraps.kvasciilifeform diana_coman
znc2tmsr_etc.kvasciilifeform diana_coman lobbes
uptimefix_bye_cache.kvasciilifeform diana_coman lobbes
raw_line_fix.kvasciilifeform diana_coman lobbes
irssi_format.kvasciilifeform diana_coman
sept_fixes.kvasciilifeform diana_coman
active_disconnect_r3.kvasciilifeform bvt diana_coman
sept_errata.kvasciilifeform
detect_disconnect.kvasciilifeform
shlex_removal.kvasciilifeform
hide_inactive.kvasciilifeform
search_all_chans.kvasciilifeform
navbar_date_auto.kvasciilifeform

patch:

- 9B223E8847A05C7DEE552A786D8290316BF1DBF3DFCA3CE7BC2080EC7B357B5C031FABC47D2586097E8F1BB0100A0E6F6C44C37ACF53AA3D3FE903FF074FCD67
+ 1B16A235827578071C913387D8FE7601D6D0AB67661B6B27EAD056D42CD1E1CA763FF1896F4C02A96551B5B2468801F94EF270176DF5008DF344C02A1281873F
logotron/MANIFEST.TXT
(16 . 3)(16 . 4)
5 598372 shlex_removal asciilifeform "Reverted defective attempt at double-quoted search."
6 640165 hide_inactive asciilifeform "Configurable default-hide of idle chans"
7 641046 search_all_chans asciilifeform "Button to search in all logged chans"
8 641484 navbar_date_auto asciilifeform "Automatically skip empty days in navbar. Handle 'dawn of time' case."
- 0A75AB02402BD83BDA90E41A341753044860EB7E0013943687B0B0797356E8D9E21BA4346A71123357D791CE422ECF789A29AD8EA759BC8799F88C54CA7E66D3
+ 77626555D2A7AC7388C19298A36A8E412B809C6BE8532703F18D1E41C197A41A5B3FBC76E964BBD4627B8BB09E3B98CD3EE31BCFB677EA90C1FB3AD9CA8DAC4F
logotron/README.txt
(151 . 3)(151 . 11)
13
14 (1) Fix unclosed 'table' tag from earlier.
15 (2) 'Search all chans' button.
16
17 ####################
18 Jul. 2020 Update #3:
19 ####################
20
21 (1) Automatically skip empty days in date navigation bar. At the same time, handle empty days correctly when these are requested.
22 (2) Handle 'dawn of time' case for any given channel, to avoid infinite loop insanity from search engines.
23
- 3B5645290A520A3F935B44372A1C98F60A0BC967EA3D6AD4160EF72E455C7C9636847847007334053703765FA80176A2509E3609005E4AB8D2518D27869F8002
+ A56AF711977A55E1332E0A42D8E2ACFDFB7C2D9DB72DC86C276949C337F0E66ACBE6455B19CB156FABB1B242BC7C7F8A69E48987F20D745BCBF44E60D52E9B46
logotron/reader.py
(306 . 31)(306 . 6)
28 app.jinja_env.globals.update(format_logline=format_logline)
29
30
31 # Generate navbar for the given date:
32 def generate_navbar(date, tail, chan):
33 cur_day = datetime.strptime(date, Date_Short_Format)
34 prev_day = cur_day - timedelta(days=1)
35 prev_day_txt = prev_day.strftime(Date_Short_Format)
36
37 s = "<a href='{0}log/{1}/{2}'>← {2}</a>".format(
38 get_base(),
39 chan,
40 prev_day_txt)
41
42 if not tail:
43 next_day = cur_day + timedelta(days=1)
44 next_day_txt = next_day.strftime(Date_Short_Format)
45 s = s + " | <a href='{0}log/{1}/{2}'>{2} →</a>".format(
46 get_base(),
47 chan,
48 next_day_txt)
49
50 return s
51
52 # Make above callable from inside htm templater:
53 app.jinja_env.globals.update(generate_navbar=generate_navbar)
54
55
56 @app.route('/rnd/<chan>')
57 def rnd(chan):
58 # Handle rubbish chan:
(387 . 7)(362 . 7)
60 # Enable 'tail' is day_end is after end of current day
61 if day_end > now:
62 tail = True
63
64
65 # Get the loglines from DB
66 lines = query_db(
67 '''select * from loglines where chan=%s
(397 . 14)(372 . 36)
69 # Optional 'reverse gear' knob:
70 if rev == 1:
71 lines.reverse()
72
73
74 # Generate navbar for the given date:
75 prev_day = ""
76 next_day = ""
77
78 prev_t = query_db(
79 '''select t from loglines where chan=%s
80 and t < %s order by idx desc limit 1;''',
81 [chan, day_start], one=True)
82
83 if prev_t != None:
84 prev_day = prev_t['t'].strftime(Date_Short_Format)
85
86 if not tail:
87 next_t = query_db(
88 '''select t from loglines where chan=%s
89 and t > %s order by idx asc limit 1;''',
90 [chan, day_end], one=True)
91
92 if next_t != None:
93 next_day = next_t['t'].strftime(Date_Short_Format)
94
95 # Return the HTMLized text
96 return render_template('log.html',
97 chan = chan,
98 loglines = lines,
99 sel = (sel_start, sel_end),
100 date = date,
101 tail = tail,
102 prev_day = prev_day,
103 next_day = next_day,
104 rev = not rev,
105 show_all = show_all,
106 idle_day = Days_Hide)
- C65B0971E605CBF05445F2562F4E363BFBFAC914D389D81F946FD534E79FF3BA4B00245536FBFBAA3527127A4DEC005FBE1C3242182C76C47112498CEF0505D6
+ 6812442D036EF3F18CD4F148F2E7FE1B5833AFD87555625293783246B10224E946A7C89FB8B762B82FD02B7A1B1A86ABD6E1B006B095B254AC9EA446F3ACD003
logotron/templates/layout.html
(138 . 8)(138 . 6)
111
112 <form align="center" id="search" method='get' action='/log-search'>
113 <input type='text' name='q' value='{{ query }}' maxlength='2048' spellcheck='false' size='55' value='' />
114 <!-- <input type='hidden' name='chan' value='{{chan}}'> -->
115
116 {% if chan != 'all' %}
117 <button type='submit' name='chan' value='{{chan}}'>search {{chan}}</button>
118 {% endif %}
- 1B71B2BB4CDAFD0561FE834175983923A32C5E91729347E894D77AC283A608F4047FA16638D2A949936F40F3A0B5659100B4D6B7DA5260008970B9F99A1F9C81
+ 0F906A5DB0ED7F390774FCC6F1D3C09DEA5C2924DDB57DCDE22CCBBFF24BF9440820A23F3063058DBC84C14743CD494EEEB90A0C721988B2DBDF4B629290BFD0
logotron/templates/log.html
(7 . 7)(7 . 7)
123 {% block body %}
124
125 <div id="navbarblock">
126 <p class='navbar'>{{ generate_navbar(date, tail, chan) | safe }}</p>
127 <p class='navbar'>{% if prev_day != '' %}<a href='/log/{{ chan }}/{{ prev_day }}'>← {{ prev_day }}</a>{% else %}<i>Dawn of Time</i>{% endif %} {% if next_day != '' %}| <a href='/log/{{ chan }}/{{ next_day }}'>{{ next_day }} →</a>{% endif %}</p>
128 <p class='jump'><a href="#tail">↓</a></p>
129 </div>
130 <div style="clear: both;"></div>
(19 . 7)(19 . 7)
132 </div>
133
134 <div id="navbarblock">
135 <p class='navbar'>{{ generate_navbar(date, tail, chan) | safe }}</p>
136 <p class='navbar'>{% if prev_day != '' %}<a href='/log/{{ chan }}/{{ prev_day }}'>← {{ prev_day }}</a>{% else %}<i>Dawn of Time</i>{% endif %} {% if next_day != '' %}| <a href='/log/{{ chan }}/{{ next_day }}'>{{ next_day }} →</a>{% endif %}</p>
137 <p class='jump'><a href="#head">↑</a></p>
138 </div>
139 <div style="clear: both;"></div>