Adds storing note's properties to notes
Adds storing note's description, author_id and author_ip to notes table too when creating new note.
This commit is contained in:
parent
d642adc6e4
commit
fadbee0af0
1 changed files with 22 additions and 8 deletions
|
@ -81,19 +81,22 @@ module Api
|
||||||
# Extract the arguments
|
# Extract the arguments
|
||||||
lon = OSM.parse_float(params[:lon], OSM::APIBadUserInput, "lon was not a number")
|
lon = OSM.parse_float(params[:lon], OSM::APIBadUserInput, "lon was not a number")
|
||||||
lat = OSM.parse_float(params[:lat], OSM::APIBadUserInput, "lat was not a number")
|
lat = OSM.parse_float(params[:lat], OSM::APIBadUserInput, "lat was not a number")
|
||||||
comment = params[:text]
|
description = params[:text]
|
||||||
|
|
||||||
|
# Get note's author info (for logged in users - user_id, for logged out users - IP address)
|
||||||
|
note_author_info = author_info
|
||||||
|
|
||||||
# Include in a transaction to ensure that there is always a note_comment for every note
|
# Include in a transaction to ensure that there is always a note_comment for every note
|
||||||
Note.transaction do
|
Note.transaction do
|
||||||
# Create the note
|
# Create the note
|
||||||
@note = Note.create(:lat => lat, :lon => lon)
|
@note = Note.create(:lat => lat, :lon => lon, :description => description, :user_id => note_author_info[:user_id], :user_ip => note_author_info[:user_ip])
|
||||||
raise OSM::APIBadUserInput, "The note is outside this world" unless @note.in_world?
|
raise OSM::APIBadUserInput, "The note is outside this world" unless @note.in_world?
|
||||||
|
|
||||||
# Save the note
|
# Save the note
|
||||||
@note.save!
|
@note.save!
|
||||||
|
|
||||||
# Add a comment to the note
|
# Add opening comment (description) to the note
|
||||||
add_comment(@note, comment, "opened")
|
add_comment(@note, description, "opened")
|
||||||
end
|
end
|
||||||
|
|
||||||
# Return a copy of the new note
|
# Return a copy of the new note
|
||||||
|
@ -379,17 +382,28 @@ module Api
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
##
|
||||||
|
# Get author's information (for logged in users - user_id, for logged out users - IP address)
|
||||||
|
def author_info
|
||||||
|
if scope_enabled?(:write_notes)
|
||||||
|
{ :user_id => current_user.id }
|
||||||
|
else
|
||||||
|
{ :user_ip => request.remote_ip }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
##
|
##
|
||||||
# Add a comment to a note
|
# Add a comment to a note
|
||||||
def add_comment(note, text, event, notify: true)
|
def add_comment(note, text, event, notify: true)
|
||||||
attributes = { :visible => true, :event => event, :body => text }
|
attributes = { :visible => true, :event => event, :body => text }
|
||||||
|
|
||||||
author = current_user if scope_enabled?(:write_notes)
|
# Get note comment's author info (for logged in users - user_id, for logged out users - IP address)
|
||||||
|
note_comment_author_info = author_info
|
||||||
|
|
||||||
if author
|
if note_comment_author_info[:user_ip].nil?
|
||||||
attributes[:author_id] = author.id
|
attributes[:author_id] = note_comment_author_info[:user_id]
|
||||||
else
|
else
|
||||||
attributes[:author_ip] = request.remote_ip
|
attributes[:author_ip] = note_comment_author_info[:user_ip]
|
||||||
end
|
end
|
||||||
|
|
||||||
comment = note.comments.create!(attributes)
|
comment = note.comments.create!(attributes)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue