aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJochen Topf <jochen@topf.org>2014-09-07 21:11:31 +0200
committerJochen Topf <jochen@topf.org>2014-09-07 21:11:31 +0200
commit026bc7cf6cb062254054c70a46bbf4169cf60be0 (patch)
tree63a2bcbba52e90fc9b8b9e43cb8401f2e61558e2
parent6c223d609bb05d1f889f08b0a7031bf62845d1e4 (diff)
downloadtaginfo-026bc7cf6cb062254054c70a46bbf4169cf60be0.tar
taginfo-026bc7cf6cb062254054c70a46bbf4169cf60be0.tar.gz
Add an error log that captures parsing problems of project files.
-rwxr-xr-xsources/projects/parse.rb29
-rw-r--r--sources/projects/pre.sql2
-rw-r--r--web/lib/ui/taginfo.rb14
-rw-r--r--web/public/img/error.pngbin0 -> 937 bytes
-rw-r--r--web/views/taginfo/project_error_log.erb8
-rw-r--r--web/views/taginfo/projects.erb9
6 files changed, 58 insertions, 4 deletions
diff --git a/sources/projects/parse.rb b/sources/projects/parse.rb
index 679d9de..1dcbfda 100755
--- a/sources/projects/parse.rb
+++ b/sources/projects/parse.rb
@@ -40,8 +40,10 @@ projects = db.execute("SELECT id, fetch_json FROM projects WHERE status='OK' ORD
projects.each do |id, json|
puts " #{id}..."
+ error_log = ''
begin
data = JSON.parse(json, { :symbolize_names => true, :create_additions => false })
+
db.transaction do |db|
db.execute("UPDATE projects SET data_format=?, data_url=? WHERE id=?", data[:data_format], data[:data_url], id)
@@ -51,6 +53,27 @@ projects.each do |id, json|
if data[:project]
p = data[:project]
+
+ if ! p[:name]
+ error_log += "ERROR: MISSING project.name\n"
+ end
+
+ if ! p[:description]
+ error_log += "ERROR: MISSING project.description\n"
+ end
+
+ if ! p[:project_url]
+ error_log += "ERROR: MISSING project.project_url\n"
+ end
+
+ if ! p[:contact_name]
+ error_log += "ERROR: MISSING project.contact_name\n"
+ end
+
+ if ! p[:contact_email]
+ error_log += "ERROR: MISSING project.contact_email\n"
+ end
+
db.execute("UPDATE projects SET name=?, description=?, project_url=?, doc_url=?, icon_url=?, contact_name=?, contact_email=? WHERE id=?",
p[:name],
p[:description],
@@ -61,6 +84,8 @@ projects.each do |id, json|
p[:contact_email],
id
)
+ else
+ error_log += "ERROR: MISSING project\n"
end
if data[:tags]
@@ -86,7 +111,11 @@ projects.each do |id, json|
on['area'],
);
end
+ else
+ error_log += "ERROR: MISSING tags\n"
end
+
+ db.execute("UPDATE projects SET error_log=? WHERE id=?", error_log, id)
end
rescue JSON::ParserError
db.execute("UPDATE projects SET status='PARSE_ERROR' WHERE id=?", id)
diff --git a/sources/projects/pre.sql b/sources/projects/pre.sql
index ae55fbf..6f521cd 100644
--- a/sources/projects/pre.sql
+++ b/sources/projects/pre.sql
@@ -18,10 +18,10 @@ CREATE TABLE projects (
fetch_status TEXT, -- HTTP status code
fetch_json TEXT, -- HTTP body
status TEXT, -- 'OK', 'FETCH ERROR', 'PARSE ERROR'
+ error_log TEXT,
data_format INTEGER,
data_updated DATE,
data_url TEXT,
- icon BLOB,
name TEXT,
description TEXT,
project_url TEXT,
diff --git a/web/lib/ui/taginfo.rb b/web/lib/ui/taginfo.rb
index 2f7451b..702f6e7 100644
--- a/web/lib/ui/taginfo.rb
+++ b/web/lib/ui/taginfo.rb
@@ -111,9 +111,21 @@ class Taginfo < Sinatra::Base
@section = 'taginfo'
@section_title = t.taginfo.meta
- @projects = @db.select("SELECT * FROM projects.projects ORDER BY name").execute();
+ @projects = @db.select("SELECT * FROM projects.projects ORDER BY name").execute()
erb :'taginfo/projects'
end
+ get %r{/taginfo/projects/([a-z_]+)/error_log} do |id|
+ @title = "Error log for project #{h(id)}"
+ @section = 'taginfo'
+ @section_title = t.taginfo.meta
+
+ @data = @db.select("SELECT name, error_log FROM projects.projects").
+ condition("id = ?", id).
+ execute()[0]
+
+ erb :'taginfo/project_error_log'
+ end
+
end
diff --git a/web/public/img/error.png b/web/public/img/error.png
new file mode 100644
index 0000000..474f63f
--- /dev/null
+++ b/web/public/img/error.png
Binary files differ
diff --git a/web/views/taginfo/project_error_log.erb b/web/views/taginfo/project_error_log.erb
new file mode 100644
index 0000000..5417905
--- /dev/null
+++ b/web/views/taginfo/project_error_log.erb
@@ -0,0 +1,8 @@
+<div class="pre">
+ <h1 class="section">Error log for project <%= h(@data['name']) %></h1>
+</div>
+<div class="box">
+ <pre>
+<%= h(@data['error_log']) %>
+ </pre>
+</div>
diff --git a/web/views/taginfo/projects.erb b/web/views/taginfo/projects.erb
index bca034d..d889aeb 100644
--- a/web/views/taginfo/projects.erb
+++ b/web/views/taginfo/projects.erb
@@ -4,7 +4,7 @@
<tr>
<th>Icon</th>
<th>Project ID<br/>Project Name</th>
- <th>Fetch Date<br/>Updated</th><th>Code</th><th>Res</th>
+ <th>Fetch Date<br/>Updated</th><th>Code</th><th>Status</th>
<th>JSON URL<br/>Data URL</th><th>Fmt<br/>Vers</th>
<th>Project URL<br/>Doc URL</th><th>Contact</th>
<th>Description</th>
@@ -23,7 +23,12 @@
<%= h(project['data_updated']) %>
</td>
<td class="tc<%= c %> nowrap"><%= h(project['fetch_status']) %></td>
- <td class="tc<%= c %> nowrap"><%= h(project['status']) %></td>
+ <td class="tc<%= c %> nowrap">
+ <%= h(project['status']) %></br>
+ <% if project['error_log'] != '' %>
+ <a href="projects/<%= project['id'] %>/error_log"><img src="/img/error.png" width="16" height="16" alt="ERROR" title="Show warnings/errors"/></a>
+ <% end %>
+ </td>
<td class="<%= c %> nowrap">
<a href="<%= h(project['json_url']) %>"><%= h(project['json_url']) %></a><br/>
<a href="<%= h(project['data_url']) %>"><%= h(project['data_url']) %></a>