foreman_users 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. data/LICENSE +619 -0
  2. data/README.md +38 -0
  3. data/Rakefile +47 -0
  4. data/app/controllers/foreman_users/hosts_controller.rb +11 -0
  5. data/app/controllers/foreman_users/users_controller.rb +94 -0
  6. data/app/helpers/concerns/foreman_users/hosts_helper_extensions.rb +13 -0
  7. data/app/helpers/users_helper.rb +4 -0
  8. data/app/models/concerns/foreman_users/host_extensions.rb +19 -0
  9. data/app/models/group.rb +6 -0
  10. data/app/models/user.rb +67 -0
  11. data/app/overrides/dashboard/index/sample_override.html.erb.deface +4 -0
  12. data/app/views/dashboard/_foreman_users_widget.html.erb +2 -0
  13. data/app/views/foreman_users/hosts/hosts/new_action.html.erb +1 -0
  14. data/app/views/foreman_users/hosts/new_action.html.erb +1 -0
  15. data/app/views/foreman_users/layouts/layouts/new_layout.html.erb +0 -0
  16. data/app/views/foreman_users/layouts/new_layout.html.erb +0 -0
  17. data/app/views/foreman_users/users/_form.html.erb +94 -0
  18. data/app/views/foreman_users/users/_list.html.erb +57 -0
  19. data/app/views/foreman_users/users/_sub.html.erb +19 -0
  20. data/app/views/foreman_users/users/edit.html.erb +1 -0
  21. data/app/views/foreman_users/users/index.html.erb +5 -0
  22. data/app/views/foreman_users/users/new.html.erb +1 -0
  23. data/app/views/foreman_users/users/show.html.erb +77 -0
  24. data/config/routes.rb +9 -0
  25. data/db/migrate/20150918022411_create_syusers.rb +17 -0
  26. data/db/migrate/20150918050239_create_sygroups.rb +12 -0
  27. data/db/migrate/20150918055455_add_syuser_id_to_sygroup.rb +5 -0
  28. data/lib/foreman_users/engine.rb +99 -0
  29. data/lib/foreman_users/version.rb +3 -0
  30. data/lib/foreman_users.rb +4 -0
  31. data/lib/tasks/foreman_users_tasks.rake +49 -0
  32. data/locale/Makefile +62 -0
  33. data/locale/en/foreman_users.po +19 -0
  34. data/locale/foreman_users.pot +19 -0
  35. data/locale/gemspec.rb +2 -0
  36. data/test/factories/foreman_users_factories.rb +5 -0
  37. data/test/test_plugin_helper.rb +6 -0
  38. data/test/unit/foreman_users_test.rb +11 -0
  39. metadata +134 -0
@@ -0,0 +1,99 @@
1
+ require 'deface'
2
+
3
+ module ForemanUsers
4
+ class Engine < ::Rails::Engine
5
+ engine_name 'foreman_users'
6
+
7
+ config.autoload_paths += Dir["#{config.root}/app/controllers/concerns"]
8
+ config.autoload_paths += Dir["#{config.root}/app/helpers/concerns"]
9
+ config.autoload_paths += Dir["#{config.root}/app/models/concerns"]
10
+ config.autoload_paths += Dir["#{config.root}/app/overrides"]
11
+
12
+ # Add any db migrations
13
+ initializer 'foreman_users.load_app_instance_data' do |app|
14
+ app.config.paths['db/migrate'] += ForemanUsers::Engine.paths['db/migrate'].existent
15
+ end
16
+
17
+ initializer 'foreman_users.register_plugin', after: :finisher_hook do |_app|
18
+ Foreman::Plugin.register :foreman_users do
19
+ requires_foreman '>= 1.4'
20
+
21
+ # Add permissions
22
+ security_block :foreman_users do
23
+ permission :view_foreman_users, :'foreman_users/users' => [:index]
24
+ permission :view_foreman_users, :'foreman_users/users' => [:show]
25
+ permission :view_foreman_users, :'foreman_users/users' => [:new]
26
+ permission :view_foreman_users, :'foreman_users/users' => [:edit]
27
+ permission :view_foreman_users, :'foreman_users/users' => [:create]
28
+ permission :view_foreman_users, :'foreman_users/users' => [:update]
29
+ permission :view_foreman_users, :'foreman_users/users' => [:destroy]
30
+ end
31
+
32
+ # Add a new role called 'Discovery' if it doesn't exist
33
+ role 'ForemanUsers', [:view_foreman_users]
34
+
35
+
36
+ sub_menu :top_menu, :forema_user_menu, :caption=> N_('UserManage'), :after=> :infrastructure_menu do
37
+ menu :top_menu, :level1, :caption=>N_('User List'), :url_hash => { :controller => 'foreman_users/users', :action => :index }
38
+ menu :top_menu, :level1, :caption=>N_('New User'), :url_hash => { :controller => 'foreman_users/users', :action => :new }
39
+ # menu :top_menu, :level2, :url_hash => {:controller=> :example, :action=>:index}
40
+ # menu :top_menu, :level3, :url_hash => {:controller=> :example, :action=>:index}
41
+ # sub_menu :top_menu, :inner_level, :caption=> N_('Inner level') do
42
+ # menu :top_menu, :level41, :url_hash => {:controller=> :example, :action=>:index}
43
+ # menu :top_menu, :level42, :url_hash => {:controller=> :example, :action=>:index}
44
+ # end
45
+ # menu :top_menu, :level5, :url_hash => {:controller=> :example, :action=>:index}
46
+ end
47
+
48
+
49
+ # add menu entry
50
+ menu :top_menu, :template,
51
+ url_hash: { controller: :'foreman_users/hosts', action: :new_action },
52
+ caption: 'ForemanUsers',
53
+ parent: :hosts_menu,
54
+ after: :hosts
55
+
56
+ # add dashboard widget
57
+ widget 'foreman_users_widget', name: N_('Foreman plugin template widget'), sizex: 4, sizey: 1
58
+ end
59
+ end
60
+
61
+ # Precompile any JS or CSS files under app/assets/
62
+ # If requiring files from each other, list them explicitly here to avoid precompiling the same
63
+ # content twice.
64
+ assets_to_precompile =
65
+ Dir.chdir(root) do
66
+ Dir['app/assets/javascripts/**/*', 'app/assets/stylesheets/**/*'].map do |f|
67
+ f.split(File::SEPARATOR, 4).last
68
+ end
69
+ end
70
+ initializer 'foreman_users.assets.precompile' do |app|
71
+ app.config.assets.precompile += assets_to_precompile
72
+ end
73
+ initializer 'foreman_users.configure_assets', group: :assets do
74
+ SETTINGS[:foreman_users] = { assets: { precompile: assets_to_precompile } }
75
+ end
76
+
77
+ # Include concerns in this config.to_prepare block
78
+ config.to_prepare do
79
+ begin
80
+ Host::Managed.send(:include, ForemanUsers::HostExtensions)
81
+ HostsHelper.send(:include, ForemanUsers::HostsHelperExtensions)
82
+ rescue => e
83
+ Rails.logger.warn "ForemanUsers: skipping engine hook (#{e})"
84
+ end
85
+ end
86
+
87
+ rake_tasks do
88
+ Rake::Task['db:seed'].enhance do
89
+ ForemanUsers::Engine.load_seed
90
+ end
91
+ end
92
+
93
+ initializer 'foreman_users.register_gettext', after: :load_config_initializers do |_app|
94
+ locale_dir = File.join(File.expand_path('../../..', __FILE__), 'locale')
95
+ locale_domain = 'foreman_users'
96
+ Foreman::Gettext::Support.add_text_domain locale_domain, locale_dir
97
+ end
98
+ end
99
+ end
@@ -0,0 +1,3 @@
1
+ module ForemanUsers
2
+ VERSION = '0.0.1'
3
+ end
@@ -0,0 +1,4 @@
1
+ require 'foreman_users/engine'
2
+
3
+ module ForemanUsers
4
+ end
@@ -0,0 +1,49 @@
1
+ # Tasks
2
+ namespace :foreman_users do
3
+ namespace :example do
4
+ desc 'Example Task'
5
+ task task: :environment do
6
+ # Task goes here
7
+ end
8
+ end
9
+ end
10
+
11
+ # Tests
12
+ namespace :test do
13
+ desc 'Test ForemanUsers'
14
+ Rake::TestTask.new(:foreman_users) do |t|
15
+ test_dir = File.join(File.dirname(__FILE__), '../..', 'test')
16
+ t.libs << ['test', test_dir]
17
+ t.pattern = "#{test_dir}/**/*_test.rb"
18
+ t.verbose = true
19
+ end
20
+ end
21
+
22
+ namespace :foreman_users do
23
+ task :rubocop do
24
+ begin
25
+ require 'rubocop/rake_task'
26
+ RuboCop::RakeTask.new(:rubocop_foreman_users) do |task|
27
+ task.patterns = ["#{ForemanUsers::Engine.root}/app/**/*.rb",
28
+ "#{ForemanUsers::Engine.root}/lib/**/*.rb",
29
+ "#{ForemanUsers::Engine.root}/test/**/*.rb"]
30
+ end
31
+ rescue
32
+ puts 'Rubocop not loaded.'
33
+ end
34
+
35
+ Rake::Task['rubocop_foreman_users'].invoke
36
+ end
37
+ end
38
+
39
+ Rake::Task[:test].enhance do
40
+ Rake::Task['test:foreman_users'].invoke
41
+ end
42
+
43
+ load 'tasks/jenkins.rake'
44
+ if Rake::Task.task_defined?(:'jenkins:unit')
45
+ Rake::Task['jenkins:unit'].enhance do
46
+ Rake::Task['test:foreman_users'].invoke
47
+ Rake::Task['foreman_users:rubocop'].invoke
48
+ end
49
+ end
data/locale/Makefile ADDED
@@ -0,0 +1,62 @@
1
+ #
2
+ # Makefile for PO merging and MO generation. More info in the README.
3
+ #
4
+ # make all-mo (default) - generate MO files
5
+ # make check - check translations using translate-tool
6
+ # make tx-update - download and merge translations from Transifex
7
+ # make clean - clean everything
8
+ #
9
+ DOMAIN = foreman_users
10
+ VERSION = $(shell ruby -e 'require "rubygems";spec = Gem::Specification::load(Dir.glob("../*.gemspec")[0]);puts spec.version')
11
+ POTFILE = $(DOMAIN).pot
12
+ MOFILE = $(DOMAIN).mo
13
+ POFILES = $(shell find . -name '*.po')
14
+ MOFILES = $(patsubst %.po,%.mo,$(POFILES))
15
+ POXFILES = $(patsubst %.po,%.pox,$(POFILES))
16
+
17
+ %.mo: %.po
18
+ mkdir -p $(shell dirname $@)/LC_MESSAGES
19
+ msgfmt -o $(shell dirname $@)/LC_MESSAGES/$(MOFILE) $<
20
+
21
+ # Generate MO files from PO files
22
+ all-mo: $(MOFILES)
23
+
24
+ # Check for malformed strings
25
+ %.pox: %.po
26
+ msgfmt -c $<
27
+ pofilter --nofuzzy -t variables -t blank -t urls -t emails -t long -t newlines \
28
+ -t endwhitespace -t endpunc -t puncspacing -t options -t printf -t validchars --gnome $< > $@
29
+ cat $@
30
+ ! grep -q msgid $@
31
+
32
+ check: $(POXFILES)
33
+ msgfmt -c ${POTFILE}
34
+
35
+ # Merge PO files
36
+ update-po:
37
+ for f in $(shell find ./ -name "*.po") ; do \
38
+ msgmerge -N --backup=none -U $$f ${POTFILE} ; \
39
+ done
40
+
41
+ # Unify duplicate translations
42
+ uniq-po:
43
+ for f in $(shell find ./ -name "*.po") ; do \
44
+ msguniq $$f -o $$f ; \
45
+ done
46
+
47
+ tx-pull:
48
+ tx pull -f
49
+ for f in $(POFILES) ; do \
50
+ sed -i 's/^\("Project-Id-Version: \).*$$/\1$(DOMAIN) $(VERSION)\\n"/' $$f; \
51
+ done
52
+ -git commit -a -m "i18n - pulling from tx"
53
+
54
+ reset-po:
55
+ # merging po files is unnecessary when using transifex.com
56
+ git checkout -- ../locale/*/*po
57
+
58
+ tx-update: tx-pull reset-po $(MOFILES)
59
+ # amend mo files
60
+ git add ../locale/*/LC_MESSAGES
61
+ git commit -a --amend -m "i18n - pulling from tx"
62
+ -echo Changes commited!
@@ -0,0 +1,19 @@
1
+ # foreman_users
2
+ #
3
+ # This file is distributed under the same license as foreman_users.
4
+ #
5
+ #, fuzzy
6
+ msgid ""
7
+ msgstr ""
8
+ "Project-Id-Version: version 0.0.1\n"
9
+ "Report-Msgid-Bugs-To: \n"
10
+ "POT-Creation-Date: 2014-08-20 08:46+0100\n"
11
+ "PO-Revision-Date: 2014-08-20 08:54+0100\n"
12
+ "Last-Translator: Foreman Team <foreman-dev@googlegroups.com>\n"
13
+ "Language-Team: Foreman Team <foreman-dev@googlegroups.com>\n"
14
+ "Language: \n"
15
+ "MIME-Version: 1.0\n"
16
+ "Content-Type: text/plain; charset=UTF-8\n"
17
+ "Content-Transfer-Encoding: 8bit\n"
18
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
19
+
@@ -0,0 +1,19 @@
1
+ # foreman_users
2
+ #
3
+ # This file is distributed under the same license as foreman_users.
4
+ #
5
+ #, fuzzy
6
+ msgid ""
7
+ msgstr ""
8
+ "Project-Id-Version: version 0.0.1\n"
9
+ "Report-Msgid-Bugs-To: \n"
10
+ "POT-Creation-Date: 2014-08-20 08:46+0100\n"
11
+ "PO-Revision-Date: 2014-08-20 08:46+0100\n"
12
+ "Last-Translator: Foreman Team <foreman-dev@googlegroups.com>\n"
13
+ "Language-Team: Foreman Team <foreman-dev@googlegroups.com>\n"
14
+ "Language: \n"
15
+ "MIME-Version: 1.0\n"
16
+ "Content-Type: text/plain; charset=UTF-8\n"
17
+ "Content-Transfer-Encoding: 8bit\n"
18
+ "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
19
+
data/locale/gemspec.rb ADDED
@@ -0,0 +1,2 @@
1
+ # Matches foreman_users.gemspec
2
+ _('TODO: Description of ForemanUsers.')
@@ -0,0 +1,5 @@
1
+ FactoryGirl.define do
2
+ factory :host do
3
+ name 'foreman_users'
4
+ end
5
+ end
@@ -0,0 +1,6 @@
1
+ # This calls the main test_helper in Foreman-core
2
+ require 'test_helper'
3
+
4
+ # Add plugin to FactoryGirl's paths
5
+ FactoryGirl.definition_file_paths << File.join(File.dirname(__FILE__), 'factories')
6
+ FactoryGirl.reload
@@ -0,0 +1,11 @@
1
+ require 'test_plugin_helper'
2
+
3
+ class ForemanUsersTest < ActiveSupport::TestCase
4
+ setup do
5
+ User.current = User.find_by_login 'admin'
6
+ end
7
+
8
+ test 'the truth' do
9
+ assert true
10
+ end
11
+ end
metadata ADDED
@@ -0,0 +1,134 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: foreman_users
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - jijianbo
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2015-09-27 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: deface
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: rubocop
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: rdoc
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ description: 创建用户,/etc/puppet/environments/production/modules/users
63
+ email:
64
+ - jijianbo@shinyinfo.com.cn
65
+ executables: []
66
+ extensions: []
67
+ extra_rdoc_files: []
68
+ files:
69
+ - app/models/group.rb
70
+ - app/models/concerns/foreman_users/host_extensions.rb
71
+ - app/models/user.rb
72
+ - app/overrides/dashboard/index/sample_override.html.erb.deface
73
+ - app/helpers/users_helper.rb
74
+ - app/helpers/concerns/foreman_users/hosts_helper_extensions.rb
75
+ - app/views/dashboard/_foreman_users_widget.html.erb
76
+ - app/views/foreman_users/users/new.html.erb
77
+ - app/views/foreman_users/users/show.html.erb
78
+ - app/views/foreman_users/users/_sub.html.erb
79
+ - app/views/foreman_users/users/index.html.erb
80
+ - app/views/foreman_users/users/_form.html.erb
81
+ - app/views/foreman_users/users/edit.html.erb
82
+ - app/views/foreman_users/users/_list.html.erb
83
+ - app/views/foreman_users/layouts/layouts/new_layout.html.erb
84
+ - app/views/foreman_users/layouts/new_layout.html.erb
85
+ - app/views/foreman_users/hosts/new_action.html.erb
86
+ - app/views/foreman_users/hosts/hosts/new_action.html.erb
87
+ - app/controllers/foreman_users/hosts_controller.rb
88
+ - app/controllers/foreman_users/users_controller.rb
89
+ - config/routes.rb
90
+ - db/migrate/20150918050239_create_sygroups.rb
91
+ - db/migrate/20150918055455_add_syuser_id_to_sygroup.rb
92
+ - db/migrate/20150918022411_create_syusers.rb
93
+ - lib/foreman_users.rb
94
+ - lib/foreman_users/engine.rb
95
+ - lib/foreman_users/version.rb
96
+ - lib/tasks/foreman_users_tasks.rake
97
+ - locale/gemspec.rb
98
+ - locale/en/foreman_users.po
99
+ - locale/foreman_users.pot
100
+ - locale/Makefile
101
+ - LICENSE
102
+ - Rakefile
103
+ - README.md
104
+ - test/factories/foreman_users_factories.rb
105
+ - test/unit/foreman_users_test.rb
106
+ - test/test_plugin_helper.rb
107
+ homepage: https://github.com/stdtnt/foreman-users
108
+ licenses: []
109
+ post_install_message:
110
+ rdoc_options: []
111
+ require_paths:
112
+ - lib
113
+ required_ruby_version: !ruby/object:Gem::Requirement
114
+ none: false
115
+ requirements:
116
+ - - ! '>='
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ required_rubygems_version: !ruby/object:Gem::Requirement
120
+ none: false
121
+ requirements:
122
+ - - ! '>='
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ requirements: []
126
+ rubyforge_project:
127
+ rubygems_version: 1.8.23
128
+ signing_key:
129
+ specification_version: 3
130
+ summary: 创建用户,/etc/puppet/environments/production/modules/users
131
+ test_files:
132
+ - test/factories/foreman_users_factories.rb
133
+ - test/unit/foreman_users_test.rb
134
+ - test/test_plugin_helper.rb