0xGA: Check-in [01237bba82]

Yet another PHP framework, but made for org-mode and geeks.

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Fix serious bug in blog path management and sqlite find_all request
Timelines: family | ancestors | descendants | both | narv
Files: files | file ages | folders
SHA1:01237bba8208a745e09c879111b7daee9a917b07
User & Date: milouse 2014-05-21 23:45:36
Context
2014-06-02
11:32
Shiny messages wrapper for start and stop functions check-in: f68d80e7b3 user: milouse tags: narv
2014-05-21
23:45
Fix serious bug in blog path management and sqlite find_all request check-in: 01237bba82 user: milouse tags: narv
23:14
Add sqlite to chroot env and fix sqlite database creation check-in: cef06cebce user: milouse tags: narv
Changes

Changes to README.md.

13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
------------

The code is released under the terms of the [WTFPL v2](http://sam.zoy.org/wtfpl/). Feel free to submit [new tickets or bug reports](tktnew) or share [proposals](tktnew?type=Feature_Request&severity=Cosmetic).

Install
-------

It is as simple as the following command: `wget -O narv_install.sh http://projects.depar.is/0xGA/raw/narv_install.sh?name=1b6d160413 && bash narv_install.sh`

It require the following commands to be present on your system:

- base64
- gzip
- install
- wget







|







13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
------------

The code is released under the terms of the [WTFPL v2](http://sam.zoy.org/wtfpl/). Feel free to submit [new tickets or bug reports](tktnew) or share [proposals](tktnew?type=Feature_Request&severity=Cosmetic).

Install
-------

It is as simple as the following command: `wget -O narv_install.sh http://projects.depar.is/0xGA/raw/narv_install.sh?name=2219042f48 && bash narv_install.sh`

It require the following commands to be present on your system:

- base64
- gzip
- install
- wget

Changes to example/narvblog.py.

181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
                art_date = art.datetime()
                if art_date != None:
                    data = {
                        'url': art.url(),
                        'title': art.title,
                        'abstract': art.abstract,
                        'year': art_date.year,
                        'month': art_date.month,
                        'localized_month': self.monthes[int(art_date.month) - 1],
                        'day': art_date.day,
                        'timestamp': art.date
                    }

                    output += art_format.format(**data)








|







181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
                art_date = art.datetime()
                if art_date != None:
                    data = {
                        'url': art.url(),
                        'title': art.title,
                        'abstract': art.abstract,
                        'year': art_date.year,
                        'month': str(art_date.month).zfill(2),
                        'localized_month': self.monthes[int(art_date.month) - 1],
                        'day': art_date.day,
                        'timestamp': art.date
                    }

                    output += art_format.format(**data)

Changes to narv.py.

144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
                    if 'value' in conditions[option]:
                        opt_val = conditions[option]['value']

                else:
                    opt_val = conditions[option]

                if opt_val != None:
                    values[option] = optval
                    where_clause.append('{0} {1} :{0}'.format(option, cond))

        if len(where_clause) > 0:
            where_str = ' and '.join(where_clause)
        else:
            where_str = ''

        request = '{0}{1}{2}{3}'.format(
            base_select,
            where_str,
            order_clause,







|



|







144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
                    if 'value' in conditions[option]:
                        opt_val = conditions[option]['value']

                else:
                    opt_val = conditions[option]

                if opt_val != None:
                    values[option] = opt_val
                    where_clause.append('{0} {1} :{0}'.format(option, cond))

        if len(where_clause) > 0:
            where_str = ' where ' + ' and '.join(where_clause)
        else:
            where_str = ''

        request = '{0}{1}{2}{3}'.format(
            base_select,
            where_str,
            order_clause,

Changes to narv_install.sh.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
#!/usr/bin/env bash

PAYLOAD="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
WC5RAFAAAA=="

WORKINGREP=`realpath ./narvroot`

echo "$PAYLOAD" | base64 -d > narv.tar.gz
tar xzf narv.tar.gz
rm narv.tar.gz
gzip -d narv.gz narv.py.gz


|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
#!/usr/bin/env bash

PAYLOAD="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
d/8BVOhqAgBQAAA="

WORKINGREP=`realpath ./narvroot`

echo "$PAYLOAD" | base64 -d > narv.tar.gz
tar xzf narv.tar.gz
rm narv.tar.gz
gzip -d narv.gz narv.py.gz