Loading deb-server/db/notif.sqlite +4 KiB (16 KiB) File changed.No diff preview for this file type. View original file View changed file deb-server/lib/dict/tecu.rb +25 −0 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ class TeCu < DictSedna @list_thes = list_thesaurus @notif_db = SQLite3::Database.new("/var/lib/deb-server/db/notif.sqlite") @notif_db.results_as_hash = true @lock_timeout = 20*60 end def list_thesaurus Loading Loading @@ -1272,4 +1273,28 @@ Subject: #{subject} #smtp.send_message(message, from, to) #smtp.send_message(message, from, copy) if copy != '' end def who_locked(entry) query = "SELECT * FROM locks WHERE entry=?" res = false @notif_db.execute(query, [entry]).each{|row| $stderr.puts row if row['time'].to_i < (Time.now.to_i - @lock_timeout) query2 = "DELETE FROM locks WHERE entry=? AND time=?" @notif_db.execute(query2, [entry, row['time']]) else res = row['login'] end } return res end def lock_entry(entry, user, time) time = Time.now.to_i if time == nil query = "INSERT INTO locks values (?,?,?)" @notif_db.execute(query, [user, entry, time]) end def unlock_entry(entry, user) query = "DELETE FROM locks WHERE entry=? AND login=?" @notif_db.execute(query, [entry,user]) end end deb-server/lib/servlets/tecu.rb +11 −0 Original line number Diff line number Diff line Loading @@ -874,6 +874,16 @@ def do_GET(request, response) when 'del' res = @dict_array['tecudel'].get(key) when 'edit' locked_by = @dict_array['notification'].who_locked(key) $stderr.puts 'LOCKED BY '+locked_by.to_s if locked_by != false and locked_by != user response.body = '{"entry":{"terms":{"term":[]},"error_msg":"'+locked_by.to_s+'"}}' response['Content-Type'] = 'application/json; charset=utf-8' return response end if locked_by == false @dict_array['notification'].lock_entry(key, user, Time.now.to_i) end res = @dict_array['tecuwork'].get_doc(key) if res == '' res = @dict.get_doc(key) Loading Loading @@ -1299,6 +1309,7 @@ def do_GET(request, response) return response end id = request.query['id'].to_s.force_encoding('UTF-8') @dict_array['notification'].unlock_entry(id, user) diffnotes = [] diffchanges = [] new_entry = false Loading Loading
deb-server/db/notif.sqlite +4 KiB (16 KiB) File changed.No diff preview for this file type. View original file View changed file
deb-server/lib/dict/tecu.rb +25 −0 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ class TeCu < DictSedna @list_thes = list_thesaurus @notif_db = SQLite3::Database.new("/var/lib/deb-server/db/notif.sqlite") @notif_db.results_as_hash = true @lock_timeout = 20*60 end def list_thesaurus Loading Loading @@ -1272,4 +1273,28 @@ Subject: #{subject} #smtp.send_message(message, from, to) #smtp.send_message(message, from, copy) if copy != '' end def who_locked(entry) query = "SELECT * FROM locks WHERE entry=?" res = false @notif_db.execute(query, [entry]).each{|row| $stderr.puts row if row['time'].to_i < (Time.now.to_i - @lock_timeout) query2 = "DELETE FROM locks WHERE entry=? AND time=?" @notif_db.execute(query2, [entry, row['time']]) else res = row['login'] end } return res end def lock_entry(entry, user, time) time = Time.now.to_i if time == nil query = "INSERT INTO locks values (?,?,?)" @notif_db.execute(query, [user, entry, time]) end def unlock_entry(entry, user) query = "DELETE FROM locks WHERE entry=? AND login=?" @notif_db.execute(query, [entry,user]) end end
deb-server/lib/servlets/tecu.rb +11 −0 Original line number Diff line number Diff line Loading @@ -874,6 +874,16 @@ def do_GET(request, response) when 'del' res = @dict_array['tecudel'].get(key) when 'edit' locked_by = @dict_array['notification'].who_locked(key) $stderr.puts 'LOCKED BY '+locked_by.to_s if locked_by != false and locked_by != user response.body = '{"entry":{"terms":{"term":[]},"error_msg":"'+locked_by.to_s+'"}}' response['Content-Type'] = 'application/json; charset=utf-8' return response end if locked_by == false @dict_array['notification'].lock_entry(key, user, Time.now.to_i) end res = @dict_array['tecuwork'].get_doc(key) if res == '' res = @dict.get_doc(key) Loading Loading @@ -1299,6 +1309,7 @@ def do_GET(request, response) return response end id = request.query['id'].to_s.force_encoding('UTF-8') @dict_array['notification'].unlock_entry(id, user) diffnotes = [] diffchanges = [] new_entry = false Loading