bowtie 0.1 → 0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.rdoc ADDED
@@ -0,0 +1,44 @@
1
+ = Bowtie for Sinatra.
2
+
3
+ Zeroconf admin generator for DataMapper models, written in Sinatra.
4
+
5
+ = What it does
6
+
7
+ Reads the information on your models and creates a nice panel in which you can view, edit and destroy records easily.
8
+
9
+ = Installation
10
+
11
+ $ sudo gem install bowtie
12
+
13
+ = Configuration
14
+
15
+ Mount Bowtie wherever you want by editing your config.ru file, optionally including the admin/pass combination for the panel.
16
+
17
+ require 'myapp'
18
+ require 'bowtie'
19
+
20
+ BOWTIE_AUTH = {:user => 'admin', :pass => '12345' }
21
+
22
+ app = Rack::Builder.new {
23
+ map "/admin" do
24
+ run Bowtie::Admin
25
+ end
26
+
27
+ map '/' do
28
+ run MyApp
29
+ end
30
+ }
31
+
32
+ run app
33
+
34
+ Now you can go to /admin in your app's path and try out Bowtie using your user/pass combination. If not set, it defaults to admin/bowtie.
35
+
36
+ = TODO
37
+
38
+ * Better handling of types (Text, JSON, IPAddress) in #show
39
+ * Better handling of relationships in #show
40
+
41
+ = Copyright
42
+
43
+ (c) 2010 - Tomás Pollak for Fork Ltd.
44
+ Released under the MIT license.
data/bowtie.gemspec CHANGED
@@ -1,15 +1,15 @@
1
1
 
2
2
  Gem::Specification.new do |s|
3
3
  s.name = %q{bowtie}
4
- s.version = "0.1"
4
+ s.version = "0.2"
5
5
 
6
6
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
7
7
  s.authors = ["Tomás Pollak"]
8
- s.date = %q{2010-02-14}
9
- s.description = %q{Sinatra scaffold for DataMapper models.}
8
+ s.date = %q{2010-06-06}
9
+ s.description = %q{Admin scaffold for DataMapper models, on Sinatra.}
10
10
  s.email = %q{tomas@usefork.com}
11
11
  s.extra_rdoc_files = ["lib/bowtie.rb", "lib/bowtie/admin.rb", "lib/bowtie/core_extensions.rb", "lib/bowtie/helpers.rb"]
12
- s.files = ["README", "bowtie.gemspec", "lib/bowtie.rb", "lib/bowtie/admin.rb", "lib/bowtie/core_extensions.rb", "lib/bowtie/helpers.rb", "lib/bowtie/views/errors.erb", "lib/bowtie/views/field.erb", "lib/bowtie/views/flash.erb", "lib/bowtie/views/form.erb", "lib/bowtie/views/index.erb", "lib/bowtie/views/layout.erb", "lib/bowtie/views/new.erb", "lib/bowtie/views/search.erb", "lib/bowtie/views/search.erb", "lib/bowtie/views/show.erb", "lib/bowtie/views/subtypes.erb", "lib/bowtie/views/table.erb", "lib/bowtie/views/row.erb", "lib/bowtie/public/css/bowtie.css", "lib/bowtie/public/js/bowtie.js", "lib/bowtie/public/js/jquery.tablesorter.pack.js", "lib/bowtie/public/js/jquery.jeditable.pack.js"]
12
+ s.files = ["README.rdoc", "bowtie.gemspec", "lib/bowtie.rb", "lib/bowtie/admin.rb", "lib/bowtie/core_extensions.rb", "lib/bowtie/helpers.rb", "lib/bowtie/views/errors.erb", "lib/bowtie/views/field.erb", "lib/bowtie/views/flash.erb", "lib/bowtie/views/form.erb", "lib/bowtie/views/index.erb", "lib/bowtie/views/layout.erb", "lib/bowtie/views/new.erb", "lib/bowtie/views/search.erb", "lib/bowtie/views/search.erb", "lib/bowtie/views/show.erb", "lib/bowtie/views/subtypes.erb", "lib/bowtie/views/table.erb", "lib/bowtie/views/row.erb", "lib/bowtie/public/css/bowtie.css", "lib/bowtie/public/js/bowtie.js", "lib/bowtie/public/js/jquery.tablesorter.pack.js", "lib/bowtie/public/js/jquery.jeditable.pack.js"]
13
13
  s.homepage = %q{http://github.com/tomas/bowtie}
14
14
  s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Bowtie", "--main", "README"]
15
15
  s.require_paths = ["lib"]
data/lib/bowtie/admin.rb CHANGED
@@ -4,9 +4,15 @@ module Bowtie
4
4
 
5
5
  PER_PAGE = 25
6
6
 
7
- # TODO: make this easily modifiable
8
7
  use Rack::Auth::Basic do |username, password|
9
- username == 'admin' && password == 'bowtie'
8
+ begin
9
+ user = ::BOWTIE_AUTH[:user]
10
+ pass = ::BOWTIE_AUTH[:pass]
11
+ rescue NameError
12
+ user = 'admin'
13
+ pass = 'bowtie'
14
+ end
15
+ username == user && password == pass
10
16
  end
11
17
 
12
18
  use Rack::MethodOverride
@@ -88,7 +94,6 @@ module Bowtie
88
94
  end
89
95
 
90
96
  put "/:model/:id" do
91
- puts params[:resource].inspect
92
97
  if resource.update(params[:resource].normalize)
93
98
  request.xhr? ? resource.to_json : redirect("/#{model.pluralize}/#{params[:id]}?notice=saved")
94
99
  else
@@ -25,7 +25,12 @@ class Class
25
25
  end
26
26
 
27
27
  def subtypes
28
- self.validators.first.last.map{|a,b| b = {a.field_name => a.options[:set]} if a.class == DataMapper::Validate::WithinValidator}.compact
28
+ begin
29
+ self.validators.first.last.map{|a,b| b = {a.field_name => a.options[:set]} if a.class == DataMapper::Validate::WithinValidator}.compact
30
+ rescue NoMethodError
31
+ # puts ' -- dm-validations gem not included. Cannot check subtypes for class.'
32
+ []
33
+ end
29
34
  end
30
35
 
31
36
  def options_for_subtype(field)
@@ -2,6 +2,12 @@ module Bowtie
2
2
 
3
3
  module Helpers
4
4
 
5
+ def base_path
6
+ env['SCRIPT_NAME']
7
+ end
8
+
9
+ # requests, redirects
10
+
5
11
  def deliver_file
6
12
  file = File.expand_path(File.dirname(__FILE__)) + "/public/#{@env['PATH_INFO']}"
7
13
  return false unless File.exist?(file)
@@ -9,19 +15,16 @@ module Bowtie
9
15
  File.read(file)
10
16
  end
11
17
 
12
- def base_path
13
- env['SCRIPT_NAME']
14
- end
15
-
16
- # Sinatra's redirect is not adding path prefix. Seems like a bug to me.
17
18
  def redirect(uri, *args)
18
19
  super base_path + uri.downcase, *args
19
20
  end
20
21
 
21
- def partial(name, *args)
22
- erb(name, :layout => false, *args)
22
+ def clean_params
23
+ @env['rack.request.query_hash'].delete_if{|a,b| %w(model page notice error q).include?(a) }
23
24
  end
24
25
 
26
+ # models, resources
27
+
25
28
  def get_model_class
26
29
  begin
27
30
  Kernel.const_get(params[:model].singularize.capitalize)
@@ -30,10 +33,6 @@ module Bowtie
30
33
  end
31
34
  end
32
35
 
33
- def clean_params
34
- @env['rack.request.query_hash'].delete_if{|a,b| %w(model page notice error q).include?(a) }
35
- end
36
-
37
36
  def model
38
37
  @model ||= get_model_class
39
38
  end
@@ -46,6 +45,12 @@ module Bowtie
46
45
  model
47
46
  end
48
47
 
48
+ # views, paths
49
+
50
+ def partial(name, *args)
51
+ erb(name, :layout => false, *args)
52
+ end
53
+
49
54
  def model_path(m = current_model)
50
55
  string = m.name ||= m
51
56
  base_path + '/' + string.to_s.pluralize.downcase
metadata CHANGED
@@ -1,7 +1,11 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bowtie
3
3
  version: !ruby/object:Gem::Version
4
- version: "0.1"
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 2
8
+ version: "0.2"
5
9
  platform: ruby
6
10
  authors:
7
11
  - "Tom\xC3\xA1s Pollak"
@@ -9,50 +13,66 @@ autorequire:
9
13
  bindir: bin
10
14
  cert_chain: []
11
15
 
12
- date: 2010-02-14 00:00:00 -03:00
16
+ date: 2010-06-06 00:00:00 -04:00
13
17
  default_executable:
14
18
  dependencies:
15
19
  - !ruby/object:Gem::Dependency
16
20
  name: sinatra
17
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
21
+ prerelease: false
22
+ requirement: &id001 !ruby/object:Gem::Requirement
20
23
  requirements:
21
24
  - - ">="
22
25
  - !ruby/object:Gem::Version
26
+ segments:
27
+ - 0
28
+ - 9
29
+ - 4
23
30
  version: 0.9.4
24
- version:
31
+ type: :runtime
32
+ version_requirements: *id001
25
33
  - !ruby/object:Gem::Dependency
26
34
  name: dm-core
27
- type: :runtime
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
35
+ prerelease: false
36
+ requirement: &id002 !ruby/object:Gem::Requirement
30
37
  requirements:
31
38
  - - ">="
32
39
  - !ruby/object:Gem::Version
40
+ segments:
41
+ - 0
42
+ - 10
43
+ - 2
33
44
  version: 0.10.2
34
- version:
45
+ type: :runtime
46
+ version_requirements: *id002
35
47
  - !ruby/object:Gem::Dependency
36
48
  name: dm-aggregates
37
- type: :runtime
38
- version_requirement:
39
- version_requirements: !ruby/object:Gem::Requirement
49
+ prerelease: false
50
+ requirement: &id003 !ruby/object:Gem::Requirement
40
51
  requirements:
41
52
  - - ">="
42
53
  - !ruby/object:Gem::Version
54
+ segments:
55
+ - 0
56
+ - 10
57
+ - 2
43
58
  version: 0.10.2
44
- version:
59
+ type: :runtime
60
+ version_requirements: *id003
45
61
  - !ruby/object:Gem::Dependency
46
62
  name: dm-pager
47
- type: :runtime
48
- version_requirement:
49
- version_requirements: !ruby/object:Gem::Requirement
63
+ prerelease: false
64
+ requirement: &id004 !ruby/object:Gem::Requirement
50
65
  requirements:
51
66
  - - ">="
52
67
  - !ruby/object:Gem::Version
68
+ segments:
69
+ - 1
70
+ - 0
71
+ - 1
53
72
  version: 1.0.1
54
- version:
55
- description: Sinatra scaffold for DataMapper models.
73
+ type: :runtime
74
+ version_requirements: *id004
75
+ description: Admin scaffold for DataMapper models, on Sinatra.
56
76
  email: tomas@usefork.com
57
77
  executables: []
58
78
 
@@ -64,7 +84,7 @@ extra_rdoc_files:
64
84
  - lib/bowtie/core_extensions.rb
65
85
  - lib/bowtie/helpers.rb
66
86
  files:
67
- - README
87
+ - README.rdoc
68
88
  - bowtie.gemspec
69
89
  - lib/bowtie.rb
70
90
  - lib/bowtie/admin.rb
@@ -104,18 +124,21 @@ required_ruby_version: !ruby/object:Gem::Requirement
104
124
  requirements:
105
125
  - - ">="
106
126
  - !ruby/object:Gem::Version
127
+ segments:
128
+ - 0
107
129
  version: "0"
108
- version:
109
130
  required_rubygems_version: !ruby/object:Gem::Requirement
110
131
  requirements:
111
132
  - - ">="
112
133
  - !ruby/object:Gem::Version
134
+ segments:
135
+ - 1
136
+ - 2
113
137
  version: "1.2"
114
- version:
115
138
  requirements: []
116
139
 
117
140
  rubyforge_project: bowtie
118
- rubygems_version: 1.3.5
141
+ rubygems_version: 1.3.6
119
142
  signing_key:
120
143
  specification_version: 3
121
144
  summary: Bowtie Admin
data/README DELETED
@@ -1,20 +0,0 @@
1
- Bowtie for Sinatra.
2
-
3
- Seems to work but need to do a lot of testing yet.
4
-
5
- To try out, download and put in /lib in your app. Then in your config.ru do something like:
6
-
7
- require 'app'
8
- require 'bowtie'
9
-
10
- app = Rack::Builder.new {
11
- map "/admin" do
12
- run Bowtie::Admin
13
- end
14
-
15
- map '/' do
16
- run MyApp
17
- end
18
- }
19
-
20
- run app