Skip to content

Instantly share code, notes, and snippets.

@Heimdell
Created September 17, 2012 09:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Heimdell/3736297 to your computer and use it in GitHub Desktop.
Save Heimdell/3736297 to your computer and use it in GitHub Desktop.
User domain
class User
+ For anyone
def create_project :from => params
project = Project.new :from => params
become_owner! :of => project
end
+ For project.owner
def invite_unregistered :email => email,
:to => project
user = create_with_invitation :email => email
invite user, :to => project
end
+ For project.owner
def users_to_invite :to => project
User.select :not => { |user| user.participant? :of => project }
end
+ For project.owner
def invite user, :to => project
Invitation.new :for => user,
:to => project
end
+ For project.owner
def invite_list :of => users,
:to => project
users.every { |user| invite user, :to => project }
end
+ For anyone
def accept_invitation invitation
become_translator! :of => invitation.project
invitation.delete
end
+ For project.translators
def make_translation_version :of => key,
:in => project,
:for => locale,
:version => data
Translation.new :of => key,
:in => project,
:for => locale,
:version => data,
:made_by => self
end
+ For project.participants
def get_translations :in => project,
[:for => locale],
[:with_status => status]
result = Translation.select :in => project
result = result.select :for => locale if locale.given?
result = result.select :with_status => status if status.given?
return result
end
+ For version.project.owner
def accept_translation_version version
version.become_accepted!
end
+ For version.project.owner
def reject_translation_version version
version.become_rejected!
end
+ For project.participants
def get_statistics :of => project, [:for => locale]
project_keys = Keys.select :of => project
project_keys = project_keys.select :for => locale if locale.given?
project_keys_count = project_keys.count
predicate = proc { |key| key.has_no_accepted_translation }
untranslated_keys = project_keys.select :which => predicate
untranslated_keys_count = untranslated_keys.count
1 - Rational(untranslated_keys_count / project_keys_count)
end
private
def participates? :in => project
end
def owner? :of => project
end
def translator? :of => project
end
def become_owner :of => project
end
def become_translator :of => project
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment