ish_lib 0.0.5 → 0.0.6

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.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +2 -3
  3. data/Gemfile.lock +5 -3
  4. data/Rakefile +3 -0
  5. data/VERSION +1 -1
  6. data/ish_lib.gemspec +50 -7
  7. data/lib/app/models/ability.rb +151 -0
  8. data/lib/app/models/admin_user.rb +113 -0
  9. data/lib/app/models/app_model2.rb +33 -0
  10. data/lib/app/models/auth_token.rb +17 -0
  11. data/lib/app/models/aux_model.rb +22 -0
  12. data/lib/app/models/cities_user.rb +17 -0
  13. data/lib/app/models/city.rb +117 -0
  14. data/lib/app/models/country.rb +13 -0
  15. data/lib/app/models/day.rb +21 -0
  16. data/lib/app/models/decoded_auth_token.rb +6 -0
  17. data/lib/app/models/event.rb +21 -0
  18. data/lib/app/models/feature.rb +38 -0
  19. data/lib/app/models/gallery.rb +57 -0
  20. data/lib/app/models/manager.rb +10 -0
  21. data/lib/app/models/manager_city.rb +4 -0
  22. data/lib/app/models/manager_feature.rb +4 -0
  23. data/lib/app/models/manager_gallery.rb +3 -0
  24. data/lib/app/models/manager_newsitem.rb +5 -0
  25. data/lib/app/models/manager_photo.rb +3 -0
  26. data/lib/app/models/manager_report.rb +4 -0
  27. data/lib/app/models/manager_site.rb +4 -0
  28. data/lib/app/models/manager_tag.rb +6 -0
  29. data/lib/app/models/manager_user.rb +3 -0
  30. data/lib/app/models/manager_venue.rb +4 -0
  31. data/lib/app/models/message.rb +14 -0
  32. data/lib/app/models/newsitem.rb +50 -0
  33. data/lib/app/models/nodeitem.rb +18 -0
  34. data/lib/app/models/photo.rb +68 -0
  35. data/lib/app/models/rate_me.rb +13 -0
  36. data/lib/app/models/report.rb +144 -0
  37. data/lib/app/models/review.rb +4 -0
  38. data/lib/app/models/site.rb +85 -0
  39. data/lib/app/models/tag.rb +78 -0
  40. data/lib/app/models/user.rb +122 -0
  41. data/lib/app/models/user_profile.rb +20 -0
  42. data/lib/app/models/venue.rb +69 -0
  43. data/lib/app/models/video.rb +48 -0
  44. data/lib/app/models/welcome.rb +6 -0
  45. data/lib/app/models/wikitravel_page.rb +19 -0
  46. data/lib/ish_lib.rb +19 -0
  47. data/lib/string.rb +15 -0
  48. metadata +59 -5
@@ -0,0 +1,78 @@
1
+
2
+ class Tag
3
+
4
+ include Mongoid::Document
5
+ include Mongoid::Timestamps
6
+
7
+ field :name, :type => String
8
+ validates :name, :uniqueness => true, :allow_nil => false
9
+
10
+ field :name_seo, :type => String
11
+ validates :name_seo, :uniqueness => true, :allow_nil => false
12
+
13
+ field :descr, :type => String, :default => ''
14
+
15
+ field :is_public, :type => Boolean, :default => true
16
+ field :is_trash, :type => Boolean, :default => false
17
+ field :is_feature, :type => Boolean, :default => false
18
+
19
+ field :weight, :type => Integer, :default => 10
20
+
21
+ has_many :reports
22
+ has_many :galleries
23
+ has_many :videos
24
+
25
+ has_many :children_tags, :class_name => 'Tag', :inverse_of => :parent_tag
26
+ belongs_to :parent_tag, :class_name => 'Tag', :inverse_of => :children_tags
27
+
28
+ embeds_many :features
29
+ embeds_many :newsitems
30
+
31
+ belongs_to :site
32
+ validates :site, :presence => true
33
+
34
+ default_scope ->{
35
+ where({ :is_public => true, :is_trash => false }).order_by({ :name => :asc })
36
+ }
37
+
38
+ before_create do |d|
39
+ if d.name_seo.blank?
40
+ d.name_seo = d.name.to_simple_string
41
+ end
42
+ end
43
+
44
+ def self.clear
45
+ if Rails.env.test?
46
+ Tag.each { |r| r.remove }
47
+ end
48
+ end
49
+
50
+ def self.no_parent
51
+ Tag.where( :parent_tag_id => nil )
52
+ end
53
+
54
+ def self.list
55
+ out = Tag.all.order_by( :name => :desc )
56
+ [['', nil]] + out.map { |item| [ item.name, item.id ] }
57
+ end
58
+
59
+ # @deprecated, there will be no reports or galleries in tags. There will be only features and newsitems
60
+ def self.n_items
61
+ 10
62
+ end
63
+ def self.n_reports
64
+ 4
65
+ end
66
+ def self.n_galleries
67
+ 4
68
+ end
69
+ def self.n_videos
70
+ 4
71
+ end
72
+
73
+ # @deprecated I don't even know why I have this. Should be simplified into non-being.
74
+ def self.n_features
75
+ 4
76
+ end
77
+
78
+ end
@@ -0,0 +1,122 @@
1
+
2
+ class User
3
+ include Mongoid::Document
4
+ include Mongoid::Timestamps
5
+
6
+ # Setup accessible (or protected) attributes for your model
7
+ # attr_accessible :email, :password, :password_confirmation, :remember_me
8
+
9
+ ## Database authenticatable
10
+ field :email, type: String, default: ""
11
+ validates :email, :presence => true, :uniqueness => true
12
+
13
+ field :encrypted_password, type: String, default: ""
14
+
15
+ ## Recoverable
16
+ field :reset_password_token, type: String
17
+ field :reset_password_sent_at, type: Time
18
+
19
+ ## Rememberable
20
+ field :remember_created_at, type: Time
21
+
22
+ ## Trackable
23
+ field :sign_in_count, type: Integer, default: 0
24
+ field :current_sign_in_at, type: Time
25
+ field :last_sign_in_at, type: Time
26
+ field :current_sign_in_ip, type: String
27
+ field :last_sign_in_ip, type: String
28
+
29
+ ## Confirmable
30
+ # field :confirmation_token, type: String
31
+ # field :confirmed_at, type: Time
32
+ # field :confirmation_sent_at, type: Time
33
+ # field :unconfirmed_email, type: String # Only if using reconfirmable
34
+
35
+ ## Lockable
36
+ # field :failed_attempts, type: Integer, default: 0 # Only if lock strategy is :failed_attempts
37
+ # field :unlock_token, type: String # Only if unlock strategy is :email or :both
38
+ # field :locked_at, type: Time
39
+
40
+ # :recoverable, :trackable :rememberable,
41
+ # :token_authenticatable,
42
+ # :lockable, :timeoutable, :confirmable
43
+ devise :registerable, :validatable
44
+ devise :database_authenticatable, :authentication_keys => [ :email ]
45
+ # devise :omniauthable, :omniauth_providers => [ :facebook ]
46
+ # devise :encryptable, :encryptor => :sha1base64
47
+ #
48
+ #
49
+ # field :confirmed_at, :type => DateTime
50
+ # field :confirmation_token, :type => String
51
+ # field :confirmation_sent_at, :type => DateTime
52
+
53
+ field :username, :type => String
54
+ validates :username, :presence => true, :uniqueness => true
55
+
56
+ field :name, :type => String
57
+ validates :name, :presence => true
58
+
59
+ field :group_id, :type => Integer, :default => 3
60
+
61
+ field :scratchpad, :type => String
62
+ field :github_path, :type => String
63
+ field :facebook_path, :type => String
64
+ field :stackoverflow_path, :type => String
65
+
66
+ field :is_feature, :type => Boolean, :default => false
67
+ field :is_trash, :type => Boolean, :default => false
68
+
69
+ field :display_ads, :type => Boolean, :default => true
70
+ field :display_help, :type => Boolean, :default => true
71
+
72
+ has_many :reports
73
+ has_many :photos
74
+ has_many :user_profiles
75
+ has_many :galleries
76
+ has_many :videos
77
+
78
+ has_one :profile_photo, :class_name => 'Photo', :inverse_of => :profile_user
79
+
80
+ has_and_belongs_to_many :viewable_photos, :class_name => 'Photo', :inverse_of => :viewer
81
+
82
+ belongs_to :guide_city, :class_name => 'City', :inverse_of => :guide
83
+ belongs_to :current_city, :class_name => 'City', :inverse_of => :city_users
84
+
85
+ def self.list conditions = { :is_trash => false }
86
+ out = self.where( conditions ).order_by( :name => :asc )
87
+ [['', nil]] + out.map { |item| [ item.name, item.id ] }
88
+ end
89
+
90
+ embeds_many :newsitems
91
+
92
+ def self.all
93
+ self.where( :is_trash => false ).order_by( :created_at => :desc )
94
+ end
95
+
96
+ def create_newsitem args = {}
97
+ unless args[:photo].blank?
98
+ n = Newsitem.new
99
+ n.photo = args[:photo]
100
+ n.descr = 'uploaded new photo on'
101
+ n.username = self.username
102
+ self.newsitems << n
103
+ self.save
104
+ end
105
+ end
106
+
107
+ def self.per_page
108
+ 16
109
+ end
110
+
111
+ def self.clear
112
+ if Rails.env.test?
113
+ User.unscoped.each { |u| u.remove }
114
+ end
115
+ end
116
+
117
+ def generate_auth_token
118
+ payload = { user_id: self.id }
119
+ AuthToken.encode(payload)
120
+ end
121
+
122
+ end
@@ -0,0 +1,20 @@
1
+
2
+ class UserProfile
3
+
4
+ include Mongoid::Document
5
+ include Mongoid::Timestamps
6
+
7
+ field :about, :type => String
8
+ field :education, :type => String
9
+ field :objectives, :type => String
10
+ field :current_employment, :type => String
11
+ field :past_employment, :type => String
12
+
13
+ field :pdf_resume_path, :type => String
14
+ field :doc_resume_path, :type => String
15
+
16
+ field :lang, :type => String
17
+
18
+ belongs_to :user
19
+
20
+ end
@@ -0,0 +1,69 @@
1
+
2
+ require 'string'
3
+
4
+ class Venue
5
+
6
+ include Mongoid::Document
7
+ include Mongoid::Timestamps
8
+
9
+ field :name, :type => String
10
+ validates :name, :uniqueness => true, :allow_nil => false
11
+
12
+ field :name_seo, :type => String
13
+ validates :name_seo, :uniqueness => true, :allow_nil => false
14
+
15
+ field :descr, :type => String
16
+
17
+ field :is_trash, :type => Boolean, :default => false
18
+ scope :fresh, ->{ where({ :is_trash => false }) }
19
+ scope :trash, ->{ where({ :is_trash => true }) }
20
+
21
+ field :is_public, :type => Boolean, :default => true
22
+ scope :public, ->{ where({ :is_public => true }) }
23
+ scope :not_public, ->{ where({ :is_public => false }) }
24
+
25
+ field :is_feature, :type => Boolean, :default => false
26
+
27
+ field :x, :type => Float
28
+ field :y, :type => Float
29
+
30
+ field :lang, :type => String, :default => 'en'
31
+
32
+ belongs_to :city
33
+ belongs_to :owner, :class_name => 'User', :inverse_of => :owned_venue
34
+ validates :city, :allow_nil => false, :presence => true
35
+
36
+ has_and_belongs_to_many :users
37
+
38
+ has_one :profile_photo, :class_name => 'Photo', :inverse_of => :profile_venue
39
+
40
+ has_many :reports
41
+ has_many :galleries
42
+ has_many :photos
43
+
44
+ embeds_many :newsitems
45
+ embeds_many :features
46
+
47
+ def self.list conditions = { :is_trash => false }
48
+ out = self.where( conditions).order_by( :name => :asc )
49
+ [['', nil]] + out.map { |item| [ item.name, item.id ] }
50
+ end
51
+
52
+ set_callback(:create, :before) do |doc|
53
+ doc.name_seo = doc.name.to_simple_string
54
+ end
55
+
56
+ def self.types
57
+ return []
58
+ # if 'en' == @locale
59
+ # [ 'Hotels', 'Restaurants', 'Bars' ]
60
+ # else
61
+ # [ 'Hotels', 'Restaurants', 'Bars' ]
62
+ # end
63
+ end
64
+
65
+ def self.n_features
66
+ 6
67
+ end
68
+
69
+ end
@@ -0,0 +1,48 @@
1
+
2
+ class Video
3
+
4
+ include Mongoid::Document
5
+ include Mongoid::Timestamps
6
+
7
+ PER_PAGE = 6
8
+
9
+ field :name, :type => String
10
+ field :descr, :type => String
11
+
12
+ default_scope ->{ where({ :is_public => true, :is_trash => false }).order_by({ :created_at => :desc }) }
13
+
14
+ field :is_trash, :type => Boolean, :default => false
15
+ field :is_public, :type => Boolean, :default => true
16
+ field :is_feature, :type => Boolean, :default => false
17
+
18
+ field :x, :type => Float
19
+ field :y, :type => Float
20
+
21
+ field :lang, :type => String, :default => 'en'
22
+
23
+ field :youtube_id, :type => String
24
+ validates :youtube_id, :uniqueness => true, :presence => true
25
+
26
+ belongs_to :tag
27
+ belongs_to :city
28
+ belongs_to :site
29
+ validates :site, :presence => true
30
+ belongs_to :user
31
+ validates :user, :presence => true
32
+
33
+ accepts_nested_attributes_for :site, :tag, :city
34
+
35
+
36
+ def self.list
37
+ [['', nil]] + Video.all.order_by( :name => :desc ).map { |item| [ item.name, item.id ] }
38
+ end
39
+
40
+ set_callback( :create, :before ) do |doc|
41
+ if doc.is_public
42
+ doc.city.add_newsitem( doc ) unless doc.city.blank?
43
+ doc.site.add_newsitem( doc ) unless doc.site.blank?
44
+ end
45
+
46
+ end
47
+
48
+ end
@@ -0,0 +1,6 @@
1
+
2
+
3
+ class Welcome
4
+ # for Ability
5
+
6
+ end
@@ -0,0 +1,19 @@
1
+ class WikitravelPage
2
+ include Mongoid::Document
3
+ include Mongoid::Timestamps
4
+
5
+ field :title, :type => String
6
+ validates :title, :presence => true, :uniqueness => true
7
+
8
+ field :url, :type => String
9
+ validates :url, :presence => true, :uniqueness => true
10
+
11
+ def self.clear
12
+ if Rails.env.test?
13
+ self.each { |r| r.remove }
14
+ end
15
+ end
16
+
17
+ DOMAIN = 'http://wikitravel.org'
18
+
19
+ end
data/lib/ish_lib.rb CHANGED
@@ -0,0 +1,19 @@
1
+
2
+ #
3
+ # microsites
4
+ #
5
+ require 'app/models/gallery'
6
+ require 'app/models/site'
7
+ require 'app/models/tag'
8
+ require 'app/models/user_profile'
9
+ require 'app/models/video'
10
+
11
+ #
12
+ # travel
13
+ #
14
+ require 'app/models/venue'
15
+ require 'app/models/review'
16
+
17
+ #
18
+ # manager
19
+ #
data/lib/string.rb ADDED
@@ -0,0 +1,15 @@
1
+
2
+ class String
3
+
4
+ def to_simple_string
5
+ a = self.gsub("\.", '-')
6
+ a = a.gsub(':', '-').gsub('%20', '-')
7
+ a = a.downcase.strip.gsub(' ', '-')
8
+ while a.include? '--'
9
+ a = a.sub("--", '-')
10
+ end
11
+ a = a.gsub(/-$/, '')
12
+ a
13
+ end
14
+
15
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ish_lib
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Victor Piousbox
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-05-01 00:00:00.000000000 Z
11
+ date: 2016-05-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: shoulda
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 2.0.1
61
+ version: 2.1.1
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 2.0.1
68
+ version: 2.1.1
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: simplecov
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -80,6 +80,20 @@ dependencies:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: kaminari
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
83
97
  description: models and assets for piousbox.com
84
98
  email: piousbox@gmail.com
85
99
  executables: []
@@ -96,7 +110,47 @@ files:
96
110
  - Rakefile
97
111
  - VERSION
98
112
  - ish_lib.gemspec
113
+ - lib/app/models/ability.rb
114
+ - lib/app/models/admin_user.rb
115
+ - lib/app/models/app_model2.rb
116
+ - lib/app/models/auth_token.rb
117
+ - lib/app/models/aux_model.rb
118
+ - lib/app/models/cities_user.rb
119
+ - lib/app/models/city.rb
120
+ - lib/app/models/country.rb
121
+ - lib/app/models/day.rb
122
+ - lib/app/models/decoded_auth_token.rb
123
+ - lib/app/models/event.rb
124
+ - lib/app/models/feature.rb
125
+ - lib/app/models/gallery.rb
126
+ - lib/app/models/manager.rb
127
+ - lib/app/models/manager_city.rb
128
+ - lib/app/models/manager_feature.rb
129
+ - lib/app/models/manager_gallery.rb
130
+ - lib/app/models/manager_newsitem.rb
131
+ - lib/app/models/manager_photo.rb
132
+ - lib/app/models/manager_report.rb
133
+ - lib/app/models/manager_site.rb
134
+ - lib/app/models/manager_tag.rb
135
+ - lib/app/models/manager_user.rb
136
+ - lib/app/models/manager_venue.rb
137
+ - lib/app/models/message.rb
138
+ - lib/app/models/newsitem.rb
139
+ - lib/app/models/nodeitem.rb
140
+ - lib/app/models/photo.rb
141
+ - lib/app/models/rate_me.rb
142
+ - lib/app/models/report.rb
143
+ - lib/app/models/review.rb
144
+ - lib/app/models/site.rb
145
+ - lib/app/models/tag.rb
146
+ - lib/app/models/user.rb
147
+ - lib/app/models/user_profile.rb
148
+ - lib/app/models/venue.rb
149
+ - lib/app/models/video.rb
150
+ - lib/app/models/welcome.rb
151
+ - lib/app/models/wikitravel_page.rb
99
152
  - lib/ish_lib.rb
153
+ - lib/string.rb
100
154
  - test/helper.rb
101
155
  - test/test_ish_lib.rb
102
156
  homepage: http://github.com/piousbox/ish_lib
@@ -119,7 +173,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
119
173
  version: '0'
120
174
  requirements: []
121
175
  rubyforge_project:
122
- rubygems_version: 2.2.2
176
+ rubygems_version: 2.5.1
123
177
  signing_key:
124
178
  specification_version: 4
125
179
  summary: ish_lib, powering piousbox.com