aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGareth Rees <gareth@mysociety.org>2014-10-20 10:47:47 +0100
committerGareth Rees <gareth@mysociety.org>2014-10-29 13:01:11 +0000
commit42108be8fe73a61b979c38b687e32bc420232da6 (patch)
treeeb27def93cb1d38eef1fa1aa14cfa101b2b5aa31
parent3d1f4dcbab13e08743be48c541298b4f71d93446 (diff)
Tidy ProfilePhoto
Remove self. Use inline if Line length
-rw-r--r--app/models/profile_photo.rb54
1 files changed, 26 insertions, 28 deletions
diff --git a/app/models/profile_photo.rb b/app/models/profile_photo.rb
index 3c0be222c..61f88faf3 100644
--- a/app/models/profile_photo.rb
+++ b/app/models/profile_photo.rb
@@ -15,87 +15,84 @@
# Email: hello@mysociety.org; WWW: http://www.mysociety.org/
class ProfilePhoto < ActiveRecord::Base
+ # deliberately don't strip_attributes, so keeps raw photo properly
+
WIDTH = 96
HEIGHT = 96
-
MAX_DRAFT = 500 # keep even pre-cropped images reasonably small
belongs_to :user
validate :data_and_draft_checks
- # deliberately don't strip_attributes, so keeps raw photo properly
-
attr_accessor :x, :y, :w, :h
-
attr_accessor :image
after_initialize :convert_data_to_image
# make image valid format and size
def convert_image
- if self.data.nil?
- return
- end
- if self.image.nil?
- return
- end
+ return if data.nil?
+ return if image.nil?
# convert to PNG if it isn't, and to right size
altered = false
- if self.image.format != 'PNG'
+ if image.format != 'PNG'
self.image.format = 'PNG'
altered = true
end
+
# draft images are before the user has cropped them
- if !self.draft && (image.columns != WIDTH || image.rows != HEIGHT)
+ if !draft && (image.columns != WIDTH || image.rows != HEIGHT)
# do any exact cropping (taken from Jcrop interface)
- if self.w && self.h
- image.crop!(self.x.to_i, self.y.to_i, self.w.to_i, self.h.to_i)
+ if w && h
+ image.crop!(x.to_i, y.to_i, w.to_i, h.to_i)
end
# do any further cropping
image.resize_to_fill!(WIDTH, HEIGHT)
altered = true
end
- if self.draft && (image.columns > MAX_DRAFT || image.rows > MAX_DRAFT)
+
+ if draft && (image.columns > MAX_DRAFT || image.rows > MAX_DRAFT)
image.resize_to_fit!(MAX_DRAFT, MAX_DRAFT)
altered = true
end
+
if altered
- write_attribute(:data, self.image.to_blob)
+ write_attribute(:data, image.to_blob)
end
end
private
def data_and_draft_checks
- if self.data.nil?
+ if data.nil?
errors.add(:data, _("Please choose a file containing your photo."))
return
end
- if self.image.nil?
+ if image.nil?
errors.add(:data, _("Couldn't understand the image file that you uploaded. PNG, JPEG, GIF and many other common image file formats are supported."))
return
end
- if self.image.format != 'PNG'
+ if image.format != 'PNG'
errors.add(:data, _("Failed to convert image to a PNG"))
end
- if !self.draft && (self.image.columns != WIDTH || self.image.rows != HEIGHT)
+ if !draft && (image.columns != WIDTH || image.rows != HEIGHT)
errors.add(:data, _("Failed to convert image to the correct size: at {{cols}}x{{rows}}, need {{width}}x{{height}}",
- :cols => self.image.columns,
- :rows => self.image.rows,
+ :cols => image.columns,
+ :rows => image.rows,
:width => WIDTH,
:height => HEIGHT))
end
- if self.draft && self.user_id
+ if draft && user_id
raise "Internal error, draft pictures must not have a user"
end
- if !self.draft && !self.user_id
+ if !draft && !user_id
raise "Internal error, real pictures must have a user"
end
end
@@ -108,6 +105,7 @@ class ProfilePhoto < ActiveRecord::Base
end
image_list = Magick::ImageList.new
+
begin
image_list.from_blob(data)
rescue Magick::ImageMagickError
@@ -115,9 +113,9 @@ class ProfilePhoto < ActiveRecord::Base
return
end
- self.image = image_list[0] # TODO: perhaps take largest image or somesuch if there were multiple in the file?
- self.convert_image
+ # TODO: perhaps take largest image or somesuch if there were multiple
+ # in the file?
+ self.image = image_list[0]
+ convert_image
end
end
-
-