spiderfw 0.6.16 → 0.6.17
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/CHANGELOG +9 -0
- data/Rakefile +8 -5
- data/VERSION +1 -1
- data/apps/core/auth/data/locale/it/LC_MESSAGES/spider_auth.mo +0 -0
- data/apps/core/auth/po/it/spider_auth.po +3 -3
- data/apps/core/auth/po/spider_auth.pot +3 -3
- data/apps/core/components/data/locale/it/LC_MESSAGES/spider_components.mo +0 -0
- data/apps/core/components/po/it/spider_components.po +7 -7
- data/apps/core/components/po/spider_components.pot +7 -7
- data/apps/core/components/public/js/spider.js +4 -2
- data/apps/core/forms/data/locale/it/LC_MESSAGES/spider_forms.mo +0 -0
- data/apps/core/forms/po/it/spider_forms.po +2 -2
- data/apps/core/forms/po/spider_forms.pot +2 -2
- data/apps/core/forms/widgets/form/form.rb +20 -6
- data/apps/master/_init.rb +0 -1
- data/apps/master/data/locale/it/LC_MESSAGES/master.mo +0 -0
- data/apps/master/master.rb +4 -0
- data/apps/master/po/it/master.po +62 -25
- data/apps/master/po/master.pot +45 -20
- data/apps/messenger/_init.rb +2 -21
- data/apps/messenger/backends/sms/test.rb +25 -0
- data/apps/messenger/config/test.config.yml +6 -1
- data/apps/messenger/controllers/mixins/messenger_helper.rb +30 -5
- data/apps/messenger/data/locale/it/LC_MESSAGES/spider_messenger.mo +0 -0
- data/apps/messenger/messenger.rb +40 -2
- data/apps/servant/lib/commands_processor.rb +1 -1
- data/apps/worker/worker.rb +15 -10
- data/data/locale/it/LC_MESSAGES/spider.mo +0 -0
- data/lib/spiderfw/app.rb +3 -3
- data/lib/spiderfw/cache/template_cache.rb +4 -0
- data/lib/spiderfw/cmd/cmd.rb +0 -2
- data/lib/spiderfw/cmd/commands/app.rb +89 -6
- data/lib/spiderfw/cmd/commands/setup.rb +13 -40
- data/lib/spiderfw/config/configuration.rb +1 -0
- data/lib/spiderfw/config/options/spider.rb +9 -8
- data/lib/spiderfw/controller/mixins/http_mixin.rb +9 -0
- data/lib/spiderfw/env.rb +3 -1
- data/lib/spiderfw/i18n/cldr.rb +39 -13
- data/lib/spiderfw/i18n/i18n.rb +9 -0
- data/lib/spiderfw/i18n/javascript_parser.rb +1 -1
- data/lib/spiderfw/i18n/shtml_parser.rb +1 -1
- data/lib/spiderfw/model/base_model.rb +1 -1
- data/lib/spiderfw/model/inline_model.rb +13 -1
- data/lib/spiderfw/model/mappers/db_mapper.rb +5 -0
- data/lib/spiderfw/model/mappers/mapper.rb +9 -4
- data/lib/spiderfw/model/migrations/drop_element.rb +26 -0
- data/lib/spiderfw/model/migrations/irreversible_migration.rb +9 -0
- data/lib/spiderfw/model/migrations/migration.rb +7 -0
- data/lib/spiderfw/model/migrations/replace.rb +32 -0
- data/lib/spiderfw/model/migrations.rb +21 -0
- data/lib/spiderfw/model/model.rb +4 -1
- data/lib/spiderfw/model/storage/db/db_storage.rb +1 -1
- data/lib/spiderfw/setup/app_manager.rb +281 -200
- data/lib/spiderfw/setup/setup_task.rb +80 -35
- data/lib/spiderfw/spider.rb +28 -13
- data/lib/spiderfw/templates/layout.rb +40 -8
- data/lib/spiderfw/templates/resources/sass.rb +21 -0
- data/lib/spiderfw/test.rb +1 -1
- data/lib/spiderfw/utils/events/event_source.rb +1 -2
- data/lib/spiderfw/utils/gems.rb +5 -1
- metadata +11 -4
data/lib/spiderfw/i18n/i18n.rb
CHANGED
@@ -125,6 +125,15 @@ module Spider
|
|
125
125
|
end
|
126
126
|
|
127
127
|
end
|
128
|
+
|
129
|
+
def list(enumerable, locale=Spider.locale)
|
130
|
+
return enumerable.first.to_s if enumerable.length < 2
|
131
|
+
p = provider(locale)
|
132
|
+
unless p && p.respond_to?(:list)
|
133
|
+
return enumerable.join(', ')
|
134
|
+
end
|
135
|
+
return p.list(enumerable)
|
136
|
+
end
|
128
137
|
|
129
138
|
# from Rails
|
130
139
|
def distance_of_time_in_words(from_time, to_time = 0, include_seconds = false)
|
@@ -1592,7 +1592,7 @@ module Spider; module Model
|
|
1592
1592
|
element = self.class.elements[name]
|
1593
1593
|
element.type.check(val) if (element.type.respond_to?(:check))
|
1594
1594
|
if (checks = element.attributes[:check])
|
1595
|
-
checks = {(
|
1595
|
+
checks = {("'%s' is not in the correct format") => checks} unless checks.is_a?(Hash)
|
1596
1596
|
checks.each do |msg, check|
|
1597
1597
|
test = case check
|
1598
1598
|
when Regexp
|
@@ -49,7 +49,19 @@ module Spider; module Model
|
|
49
49
|
return self.class.mapper
|
50
50
|
end
|
51
51
|
|
52
|
-
|
52
|
+
def ==(val)
|
53
|
+
return super unless self.class.primary_keys.length == 1
|
54
|
+
pk = self.class.primary_keys.first
|
55
|
+
if pk.type == String || pk.type == Symbol
|
56
|
+
if val.is_a?(String) || val.is_a?(Symbol)
|
57
|
+
return val.to_s == self.get(pk).to_s
|
58
|
+
end
|
59
|
+
elsif val.is_a?(pk.type)
|
60
|
+
return val == self.get(pk)
|
61
|
+
end
|
62
|
+
return super
|
63
|
+
|
64
|
+
end
|
53
65
|
|
54
66
|
end
|
55
67
|
|
@@ -973,6 +973,11 @@ module Spider; module Model; module Mappers
|
|
973
973
|
return schema
|
974
974
|
end
|
975
975
|
|
976
|
+
# Resets the schema, so that it is regenerated on the next call
|
977
|
+
def reset_schema
|
978
|
+
@schema = nil
|
979
|
+
end
|
980
|
+
|
976
981
|
def storage_column_type(type, attributes)
|
977
982
|
@storage.column_type(type, attributes)
|
978
983
|
end
|
@@ -281,14 +281,14 @@ module Spider; module Model
|
|
281
281
|
|
282
282
|
# Deletes all associations from the given object to the element.
|
283
283
|
def delete_element_associations(obj, element, associated=nil)
|
284
|
-
if
|
284
|
+
if element.attributes[:junction]
|
285
285
|
condition = {element.attributes[:reverse] => obj.primary_keys}
|
286
286
|
condition[element.attributes[:junction_their_element]] = associated if associated
|
287
287
|
element.mapper.delete(condition)
|
288
288
|
else
|
289
|
-
if
|
289
|
+
if element.multiple?
|
290
290
|
condition = Condition.and
|
291
|
-
if
|
291
|
+
if associated
|
292
292
|
condition = associated.keys_to_condition
|
293
293
|
else
|
294
294
|
condition[element.reverse] = obj
|
@@ -298,7 +298,7 @@ module Spider; module Model
|
|
298
298
|
# element.model.primary_keys.each{ |el| condition_row.set(el.name, '<>', child.get(el))}
|
299
299
|
# condition << condition_row
|
300
300
|
# end
|
301
|
-
if
|
301
|
+
if element.owned? || (element.reverse && element.model.elements[element.reverse].primary_key?)
|
302
302
|
element.mapper.delete(condition)
|
303
303
|
else
|
304
304
|
element.mapper.bulk_update({element.reverse => nil}, condition)
|
@@ -1175,6 +1175,7 @@ module Spider; module Model
|
|
1175
1175
|
obj.define_schema &@schema_define_proc if @schema_define_proc
|
1176
1176
|
obj.with_schema &@schema_proc if @schema_proc
|
1177
1177
|
obj.no_map(*@no_map_elements.keys) if @no_map_elements
|
1178
|
+
@model_proc.call(obj.model) if @model_proc
|
1178
1179
|
end
|
1179
1180
|
|
1180
1181
|
def no_map(*els)
|
@@ -1190,6 +1191,10 @@ module Spider; module Model
|
|
1190
1191
|
def with_schema(&proc)
|
1191
1192
|
@schema_proc = proc
|
1192
1193
|
end
|
1194
|
+
|
1195
|
+
def with_model(&proc)
|
1196
|
+
@model_proc = proc
|
1197
|
+
end
|
1193
1198
|
|
1194
1199
|
end
|
1195
1200
|
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Spider; module Migrations
|
2
|
+
|
3
|
+
class DropElement < IrreversibleMigration
|
4
|
+
|
5
|
+
def initialize(model, element, options={})
|
6
|
+
@model = model
|
7
|
+
@element = element
|
8
|
+
@options = options
|
9
|
+
end
|
10
|
+
|
11
|
+
def run
|
12
|
+
field = @options[:field_name]
|
13
|
+
if !field
|
14
|
+
schema_field = @model.mapper.schema.field(@element)
|
15
|
+
field = schema_field.name
|
16
|
+
end
|
17
|
+
field ||= @model.mapper.storage.column_name(@element)
|
18
|
+
desc = @model.mapper.storage.describe_table(@model.mapper.schema.table)
|
19
|
+
if desc[:columns][field]
|
20
|
+
@model.mapper.storage.drop_field(@model.mapper.schema.table, field)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
end; end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module Spider; module Migrations
|
2
|
+
|
3
|
+
class Replace < Migration
|
4
|
+
|
5
|
+
def initialize(model, element, values)
|
6
|
+
@model = model
|
7
|
+
@element = element
|
8
|
+
@values = values
|
9
|
+
end
|
10
|
+
|
11
|
+
def run
|
12
|
+
field = @model.mapper.schema.field(@model.get_element(@element).name)
|
13
|
+
table = @model.mapper.schema.table
|
14
|
+
raise "Table #{table} does not have a field #{field}" unless field
|
15
|
+
@values.each do |from, to|
|
16
|
+
save = {
|
17
|
+
:table => table,
|
18
|
+
:values => {field => to},
|
19
|
+
:condition => {:values => [[field, '=', from]]}
|
20
|
+
}
|
21
|
+
sql, bind_vars = @model.storage.sql_update(save)
|
22
|
+
return @model.storage.execute(sql, *bind_vars)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def undo
|
27
|
+
Replace.new(@model, @element, @values.invert).run
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
end; end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'spiderfw/model/migrations/migration'
|
2
|
+
require 'spiderfw/model/migrations/irreversible_migration'
|
3
|
+
require 'spiderfw/model/migrations/replace'
|
4
|
+
require 'spiderfw/model/migrations/drop_element'
|
5
|
+
|
6
|
+
module Spider
|
7
|
+
|
8
|
+
module Migrations
|
9
|
+
|
10
|
+
def self.replace(model, element, values)
|
11
|
+
Spider::Migrations::Replace.new(model, element, values)
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.drop_element!(model, element, options={})
|
15
|
+
Spider::Migrations::DropElement.new(model, element, options={})
|
16
|
+
end
|
17
|
+
|
18
|
+
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
data/lib/spiderfw/model/model.rb
CHANGED
@@ -328,7 +328,7 @@ module Spider; module Model; module Storage; module Db
|
|
328
328
|
sql_condition_value(v[0], v[1], v[2])
|
329
329
|
end
|
330
330
|
end
|
331
|
-
return mapped.select{ |p| p != nil}.join(' '+condition[:conj]+' '), bind_vars
|
331
|
+
return mapped.select{ |p| p != nil}.join(' '+(condition[:conj] || 'and')+' '), bind_vars
|
332
332
|
end
|
333
333
|
|
334
334
|
# Returns the SQL for a condition comparison.
|