liquid_feedback_frontend
annotate model/member.lua @ 2:5c601807d397
Version alpha3
Dark green part of issue supporter bargraph represents all satisfied supporters, regardless of having seen the latest draft
Wiki formatting for drafts
Showing differences between two drafts of the same initiative
Display of outgoing delegation chains
Many other improvements
Dark green part of issue supporter bargraph represents all satisfied supporters, regardless of having seen the latest draft
Wiki formatting for drafts
Showing differences between two drafts of the same initiative
Display of outgoing delegation chains
Many other improvements
author | bsw |
---|---|
date | Mon Nov 23 12:00:00 2009 +0100 (2009-11-23) |
parents | 3bfb2fcf7ab9 |
children | 80c215dbf076 |
rev | line source |
---|---|
bsw/jbe@0 | 1 Member = mondelefant.new_class() |
bsw/jbe@0 | 2 Member.table = 'member' |
bsw/jbe@0 | 3 |
bsw/jbe@0 | 4 Member:add_reference{ |
bsw@2 | 5 mode = '11', |
bsw@2 | 6 to = "MemberImage", |
bsw@2 | 7 this_key = 'id', |
bsw@2 | 8 that_key = 'member_id', |
bsw@2 | 9 ref = 'image', |
bsw@2 | 10 back_ref = 'member' |
bsw@2 | 11 } |
bsw@2 | 12 |
bsw@2 | 13 Member:add_reference{ |
bsw/jbe@0 | 14 mode = '1m', |
bsw/jbe@0 | 15 to = "Contact", |
bsw/jbe@0 | 16 this_key = 'id', |
bsw/jbe@0 | 17 that_key = 'member_id', |
bsw/jbe@0 | 18 ref = 'contacts', |
bsw/jbe@0 | 19 back_ref = 'member', |
bsw/jbe@0 | 20 default_order = '"other_member_id"' |
bsw/jbe@0 | 21 } |
bsw/jbe@0 | 22 |
bsw/jbe@0 | 23 Member:add_reference{ |
bsw/jbe@0 | 24 mode = '1m', |
bsw/jbe@0 | 25 to = "Contact", |
bsw/jbe@0 | 26 this_key = 'id', |
bsw/jbe@0 | 27 that_key = 'member_id', |
bsw/jbe@0 | 28 ref = 'foreign_contacts', |
bsw/jbe@0 | 29 back_ref = 'other_member', |
bsw/jbe@0 | 30 default_order = '"member_id"' |
bsw/jbe@0 | 31 } |
bsw/jbe@0 | 32 |
bsw/jbe@0 | 33 Member:add_reference{ |
bsw/jbe@0 | 34 mode = '1m', |
bsw/jbe@0 | 35 to = "Session", |
bsw/jbe@0 | 36 this_key = 'id', |
bsw/jbe@0 | 37 that_key = 'member_id', |
bsw/jbe@0 | 38 ref = 'sessions', |
bsw/jbe@0 | 39 back_ref = 'member', |
bsw/jbe@0 | 40 default_order = '"ident"' |
bsw/jbe@0 | 41 } |
bsw/jbe@0 | 42 |
bsw/jbe@0 | 43 Member:add_reference{ |
bsw/jbe@0 | 44 mode = '1m', |
bsw/jbe@0 | 45 to = "Draft", |
bsw/jbe@0 | 46 this_key = 'id', |
bsw/jbe@0 | 47 that_key = 'author_id', |
bsw/jbe@0 | 48 ref = 'drafts', |
bsw/jbe@0 | 49 back_ref = 'author', |
bsw/jbe@0 | 50 default_order = '"id"' |
bsw/jbe@0 | 51 } |
bsw/jbe@0 | 52 |
bsw/jbe@0 | 53 Member:add_reference{ |
bsw/jbe@0 | 54 mode = '1m', |
bsw/jbe@0 | 55 to = "Suggestion", |
bsw/jbe@0 | 56 this_key = 'id', |
bsw/jbe@0 | 57 that_key = 'author_id', |
bsw/jbe@0 | 58 ref = 'suggestions', |
bsw/jbe@0 | 59 back_ref = 'author', |
bsw/jbe@0 | 60 default_order = '"id"' |
bsw/jbe@0 | 61 } |
bsw/jbe@0 | 62 |
bsw/jbe@0 | 63 Member:add_reference{ |
bsw/jbe@0 | 64 mode = '1m', |
bsw/jbe@0 | 65 to = "Membership", |
bsw/jbe@0 | 66 this_key = 'id', |
bsw/jbe@0 | 67 that_key = 'member_id', |
bsw/jbe@0 | 68 ref = 'memberships', |
bsw/jbe@0 | 69 back_ref = 'member', |
bsw/jbe@0 | 70 default_order = '"area_id"' |
bsw/jbe@0 | 71 } |
bsw/jbe@0 | 72 |
bsw/jbe@0 | 73 Member:add_reference{ |
bsw/jbe@0 | 74 mode = '1m', |
bsw/jbe@0 | 75 to = "Interest", |
bsw/jbe@0 | 76 this_key = 'id', |
bsw/jbe@0 | 77 that_key = 'member_id', |
bsw/jbe@0 | 78 ref = 'interests', |
bsw/jbe@0 | 79 back_ref = 'member', |
bsw/jbe@0 | 80 default_order = '"id"' |
bsw/jbe@0 | 81 } |
bsw/jbe@0 | 82 |
bsw/jbe@0 | 83 Member:add_reference{ |
bsw/jbe@0 | 84 mode = '1m', |
bsw/jbe@0 | 85 to = "Initiator", |
bsw/jbe@0 | 86 this_key = 'id', |
bsw/jbe@0 | 87 that_key = 'member_id', |
bsw/jbe@0 | 88 ref = 'initiators', |
bsw/jbe@0 | 89 back_ref = 'member', |
bsw/jbe@0 | 90 default_order = '"id"' |
bsw/jbe@0 | 91 } |
bsw/jbe@0 | 92 |
bsw/jbe@0 | 93 Member:add_reference{ |
bsw/jbe@0 | 94 mode = '1m', |
bsw/jbe@0 | 95 to = "Supporter", |
bsw/jbe@0 | 96 this_key = 'id', |
bsw/jbe@0 | 97 that_key = 'member_id', |
bsw/jbe@0 | 98 ref = 'supporters', |
bsw@2 | 99 back_ref = 'member' |
bsw/jbe@0 | 100 } |
bsw/jbe@0 | 101 |
bsw/jbe@0 | 102 Member:add_reference{ |
bsw/jbe@0 | 103 mode = '1m', |
bsw/jbe@0 | 104 to = "Opinion", |
bsw/jbe@0 | 105 this_key = 'id', |
bsw/jbe@0 | 106 that_key = 'member_id', |
bsw/jbe@0 | 107 ref = 'opinions', |
bsw/jbe@0 | 108 back_ref = 'member', |
bsw/jbe@0 | 109 default_order = '"id"' |
bsw/jbe@0 | 110 } |
bsw/jbe@0 | 111 |
bsw/jbe@0 | 112 Member:add_reference{ |
bsw/jbe@0 | 113 mode = '1m', |
bsw/jbe@0 | 114 to = "Delegation", |
bsw/jbe@0 | 115 this_key = 'id', |
bsw/jbe@0 | 116 that_key = 'truster_id', |
bsw/jbe@0 | 117 ref = 'outgoing_delegations', |
bsw/jbe@0 | 118 back_ref = 'truster', |
bsw/jbe@0 | 119 default_order = '"id"' |
bsw/jbe@0 | 120 } |
bsw/jbe@0 | 121 |
bsw/jbe@0 | 122 Member:add_reference{ |
bsw/jbe@0 | 123 mode = '1m', |
bsw/jbe@0 | 124 to = "Delegation", |
bsw/jbe@0 | 125 this_key = 'id', |
bsw/jbe@0 | 126 that_key = 'trustee_id', |
bsw/jbe@0 | 127 ref = 'incoming_delegations', |
bsw/jbe@0 | 128 back_ref = 'trustee', |
bsw/jbe@0 | 129 default_order = '"id"' |
bsw/jbe@0 | 130 } |
bsw/jbe@0 | 131 |
bsw/jbe@0 | 132 Member:add_reference{ |
bsw/jbe@0 | 133 mode = '1m', |
bsw/jbe@0 | 134 to = "DirectVoter", |
bsw/jbe@0 | 135 this_key = 'id', |
bsw/jbe@0 | 136 that_key = 'member_id', |
bsw/jbe@0 | 137 ref = 'direct_voter', |
bsw/jbe@0 | 138 back_ref = 'member', |
bsw/jbe@0 | 139 default_order = '"issue_id"' |
bsw/jbe@0 | 140 } |
bsw/jbe@0 | 141 |
bsw/jbe@0 | 142 Member:add_reference{ |
bsw/jbe@0 | 143 mode = '1m', |
bsw/jbe@0 | 144 to = "Vote", |
bsw/jbe@0 | 145 this_key = 'id', |
bsw/jbe@0 | 146 that_key = 'member_id', |
bsw/jbe@0 | 147 ref = 'vote', |
bsw/jbe@0 | 148 back_ref = 'member', |
bsw/jbe@0 | 149 default_order = '"issue_id", "initiative_id"' |
bsw/jbe@0 | 150 } |
bsw/jbe@0 | 151 |
bsw/jbe@0 | 152 Member:add_reference{ |
bsw/jbe@0 | 153 mode = 'mm', |
bsw/jbe@0 | 154 to = "Member", |
bsw/jbe@0 | 155 this_key = 'id', |
bsw/jbe@0 | 156 that_key = 'id', |
bsw/jbe@0 | 157 connected_by_table = 'contact', |
bsw/jbe@0 | 158 connected_by_this_key = 'member_id', |
bsw/jbe@0 | 159 connected_by_that_key = 'other_member_id', |
bsw/jbe@0 | 160 ref = 'saved_members', |
bsw/jbe@0 | 161 } |
bsw/jbe@0 | 162 |
bsw/jbe@0 | 163 Member:add_reference{ |
bsw/jbe@0 | 164 mode = 'mm', |
bsw/jbe@0 | 165 to = "Member", |
bsw/jbe@0 | 166 this_key = 'id', |
bsw/jbe@0 | 167 that_key = 'id', |
bsw/jbe@0 | 168 connected_by_table = 'contact', |
bsw/jbe@0 | 169 connected_by_this_key = 'other_member_id', |
bsw/jbe@0 | 170 connected_by_that_key = 'member_id', |
bsw/jbe@0 | 171 ref = 'saved_by_members', |
bsw/jbe@0 | 172 } |
bsw/jbe@0 | 173 |
bsw/jbe@0 | 174 Member:add_reference{ |
bsw/jbe@0 | 175 mode = 'mm', |
bsw/jbe@0 | 176 to = "Area", |
bsw/jbe@0 | 177 this_key = 'id', |
bsw/jbe@0 | 178 that_key = 'id', |
bsw/jbe@0 | 179 connected_by_table = 'membership', |
bsw/jbe@0 | 180 connected_by_this_key = 'member_id', |
bsw/jbe@0 | 181 connected_by_that_key = 'area_id', |
bsw/jbe@0 | 182 ref = 'areas' |
bsw/jbe@0 | 183 } |
bsw/jbe@0 | 184 |
bsw/jbe@0 | 185 Member:add_reference{ |
bsw/jbe@0 | 186 mode = 'mm', |
bsw/jbe@0 | 187 to = "Issue", |
bsw/jbe@0 | 188 this_key = 'id', |
bsw/jbe@0 | 189 that_key = 'id', |
bsw/jbe@0 | 190 connected_by_table = 'interest', |
bsw/jbe@0 | 191 connected_by_this_key = 'member_id', |
bsw/jbe@0 | 192 connected_by_that_key = 'issue_id', |
bsw/jbe@0 | 193 ref = 'issues' |
bsw/jbe@0 | 194 } |
bsw/jbe@0 | 195 |
bsw/jbe@0 | 196 Member:add_reference{ |
bsw/jbe@0 | 197 mode = 'mm', |
bsw/jbe@0 | 198 to = "Initiative", |
bsw/jbe@0 | 199 this_key = 'id', |
bsw/jbe@0 | 200 that_key = 'id', |
bsw/jbe@0 | 201 connected_by_table = 'initiator', |
bsw/jbe@0 | 202 connected_by_this_key = 'member_id', |
bsw/jbe@0 | 203 connected_by_that_key = 'initiative_id', |
bsw/jbe@0 | 204 ref = 'initiated_initiatives' |
bsw/jbe@0 | 205 } |
bsw/jbe@0 | 206 |
bsw/jbe@0 | 207 Member:add_reference{ |
bsw/jbe@0 | 208 mode = 'mm', |
bsw/jbe@0 | 209 to = "Initiative", |
bsw/jbe@0 | 210 this_key = 'id', |
bsw/jbe@0 | 211 that_key = 'id', |
bsw/jbe@0 | 212 connected_by_table = 'supporter', |
bsw/jbe@0 | 213 connected_by_this_key = 'member_id', |
bsw/jbe@0 | 214 connected_by_that_key = 'initiative_id', |
bsw/jbe@0 | 215 ref = 'supported_initiatives' |
bsw/jbe@0 | 216 } |
bsw/jbe@0 | 217 |
bsw/jbe@0 | 218 function Member.object:set_password(password) |
bsw/jbe@0 | 219 local hash = os.crypt( |
bsw/jbe@0 | 220 password, |
bsw/jbe@0 | 221 "$1$" .. multirand.string( |
bsw/jbe@0 | 222 8, |
bsw/jbe@0 | 223 "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz./" |
bsw/jbe@0 | 224 ) |
bsw/jbe@0 | 225 ) |
bsw/jbe@0 | 226 assert(hash, "os.crypt failed") |
bsw/jbe@0 | 227 self.password = hash |
bsw/jbe@0 | 228 end |
bsw/jbe@0 | 229 |
bsw/jbe@0 | 230 function Member.object:check_password(password) |
bsw/jbe@0 | 231 if type(password) == "string" and type(self.password) == "string" then |
bsw/jbe@0 | 232 return os.crypt(password, self.password) == self.password |
bsw/jbe@0 | 233 else |
bsw/jbe@0 | 234 return false |
bsw/jbe@0 | 235 end |
bsw/jbe@0 | 236 end |
bsw/jbe@0 | 237 |
bsw/jbe@0 | 238 function Member.object_get:published_contacts() |
bsw/jbe@0 | 239 return Member:new_selector() |
bsw/jbe@0 | 240 :join('"contact"', nil, '"contact"."other_member_id" = "member"."id"') |
bsw/jbe@0 | 241 :add_where{ '"contact"."member_id" = ?', self.id } |
bsw/jbe@0 | 242 :add_where("public") |
bsw/jbe@0 | 243 :exec() |
bsw/jbe@0 | 244 end |
bsw/jbe@0 | 245 |
bsw/jbe@0 | 246 function Member:by_login_and_password(login, password) |
bsw/jbe@0 | 247 local selector = self:new_selector() |
bsw/jbe@0 | 248 selector:add_where{'"login" = ?', login, password } |
bsw/jbe@0 | 249 selector:add_where('"active"') |
bsw/jbe@0 | 250 selector:optional_object_mode() |
bsw/jbe@0 | 251 local member = selector:exec() |
bsw/jbe@0 | 252 if member and member:check_password(password) then |
bsw/jbe@0 | 253 return member |
bsw/jbe@0 | 254 else |
bsw/jbe@0 | 255 return nil |
bsw/jbe@0 | 256 end |
bsw/jbe@0 | 257 end |
bsw/jbe@0 | 258 |
bsw@2 | 259 function Member:get_search_selector(search_string) |
bsw/jbe@0 | 260 return self:new_selector() |
bsw@2 | 261 :add_field( {'"highlight"("member"."name", ?)', search_string }, "name_highlighted") |
bsw@2 | 262 :add_where{ '"member"."text_search_data" @@ "text_search_query"(?)', search_string } |
bsw/jbe@0 | 263 :add_where("active") |
bsw/jbe@0 | 264 end |
bsw@2 | 265 |