parlement 0.9 → 0.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (52) hide show
  1. data/CHANGES +20 -1
  2. data/MEMORY +51 -0
  3. data/README +11 -38
  4. data/Rakefile +2 -2
  5. data/app/controllers/account_controller.rb +83 -50
  6. data/app/controllers/application.rb +3 -0
  7. data/app/controllers/elt_controller.rb +14 -3
  8. data/app/controllers/subscriber_controller.rb +25 -9
  9. data/app/helpers/elt_helper.rb +1 -1
  10. data/app/models/elt.rb +23 -13
  11. data/app/models/mail.rb +37 -17
  12. data/app/models/mail_notify.rb +6 -5
  13. data/app/models/person.rb +6 -5
  14. data/app/models/person_mail.rb +4 -0
  15. data/app/models/person_notify.rb +13 -0
  16. data/app/models/subscription.rb +4 -0
  17. data/app/views/account/_login.rhtml +9 -12
  18. data/app/views/account/_show.rhtml +35 -16
  19. data/app/views/elt/_elt.rhtml +8 -20
  20. data/app/views/elt/_listByVote.rhtml +9 -9
  21. data/app/views/elt/show.rhtml +6 -33
  22. data/app/views/layouts/top.rhtml +6 -0
  23. data/app/views/person_notify/setEmail.rhtml +24 -0
  24. data/app/views/subscriber/_list.rhtml +18 -0
  25. data/config/environment.rb +6 -4
  26. data/config/environments/development.rb +2 -0
  27. data/db/ROOT/parlement/{news → News}/Version_01.txt +0 -0
  28. data/db/ROOT/parlement/{news → News}/Version_02.txt +0 -0
  29. data/db/ROOT/parlement/{news → News}/Version_03.txt +0 -0
  30. data/db/ROOT/parlement/{news → News}/Version_04.txt +0 -0
  31. data/db/ROOT/parlement/{news → News}/Version_05.txt +0 -0
  32. data/db/ROOT/parlement/{news → News}/Version_06.txt +0 -0
  33. data/db/ROOT/parlement/{news → News}/Version_07.txt +0 -0
  34. data/db/ROOT/parlement/{news → News}/Version_08.txt +0 -0
  35. data/db/ROOT/parlement/{security → Security}/anonymity.txt +0 -0
  36. data/db/ROOT/parlement.txt +1 -1
  37. data/db/development_structure.sql +49 -34
  38. data/db/migrate/003_elt_children_count.rb +1 -1
  39. data/db/migrate/005_filter_mail.rb +22 -0
  40. data/public/javascripts/mybehaviour.js +10 -2
  41. data/public/stylesheets/default.css +21 -15
  42. data/test/unit/choice_test.rb +1 -1
  43. data/test/unit/elt_test.rb +1 -1
  44. data/test/unit/mail_notify_test.rb +24 -8
  45. data/test/unit/mail_test.rb +61 -6
  46. data/test/unit/{notifier_test.rb → person_notify_test.rb} +2 -2
  47. data/test/unit/person_test.rb +1 -1
  48. data/test/unit/subscriber_test.rb +12 -12
  49. metadata +24 -20
  50. data/app/models/notifier.rb +0 -13
  51. data/app/views/notifier/changeEmail.rhtml +0 -10
  52. data/public/images/comments.gif +0 -0
@@ -160,21 +160,23 @@ CREATE SEQUENCE people_id_seq
160
160
 
161
161
 
162
162
  --
163
- -- Name: schema_info; Type: TABLE; Schema: public; Owner: manu; Tablespace:
163
+ -- Name: person_mails; Type: TABLE; Schema: public; Owner: manu; Tablespace:
164
164
  --
165
165
 
166
- CREATE TABLE schema_info (
167
- version integer
166
+ CREATE TABLE person_mails (
167
+ id serial NOT NULL,
168
+ mail_id character varying(255) NOT NULL,
169
+ person_id character varying(255),
170
+ created_on timestamp without time zone NOT NULL
168
171
  );
169
172
 
170
173
 
171
174
  --
172
- -- Name: subscribers; Type: TABLE; Schema: public; Owner: manu; Tablespace:
175
+ -- Name: schema_info; Type: TABLE; Schema: public; Owner: manu; Tablespace:
173
176
  --
174
177
 
175
- CREATE TABLE subscribers (
176
- elt_id text NOT NULL,
177
- person_id text NOT NULL
178
+ CREATE TABLE schema_info (
179
+ version integer
178
180
  );
179
181
 
180
182
 
@@ -189,6 +191,19 @@ CREATE SEQUENCE subscribers_id_seq
189
191
  CACHE 1;
190
192
 
191
193
 
194
+ --
195
+ -- Name: subscriptions; Type: TABLE; Schema: public; Owner: manu; Tablespace:
196
+ --
197
+
198
+ CREATE TABLE subscriptions (
199
+ elt_id text NOT NULL,
200
+ person_id text NOT NULL,
201
+ filter integer DEFAULT 0,
202
+ id serial NOT NULL,
203
+ created_on timestamp with time zone DEFAULT now() NOT NULL
204
+ );
205
+
206
+
192
207
  --
193
208
  -- Name: users; Type: TABLE; Schema: public; Owner: manu; Tablespace:
194
209
  --
@@ -289,6 +304,22 @@ ALTER TABLE ONLY people
289
304
  ADD CONSTRAINT people_pkey PRIMARY KEY (id);
290
305
 
291
306
 
307
+ --
308
+ -- Name: sent_mails_pkey; Type: CONSTRAINT; Schema: public; Owner: manu; Tablespace:
309
+ --
310
+
311
+ ALTER TABLE ONLY person_mails
312
+ ADD CONSTRAINT sent_mails_pkey PRIMARY KEY (id);
313
+
314
+
315
+ --
316
+ -- Name: subscribers_pkey; Type: CONSTRAINT; Schema: public; Owner: manu; Tablespace:
317
+ --
318
+
319
+ ALTER TABLE ONLY subscriptions
320
+ ADD CONSTRAINT subscribers_pkey PRIMARY KEY (id);
321
+
322
+
292
323
  --
293
324
  -- Name: users_pkey; Type: CONSTRAINT; Schema: public; Owner: manu; Tablespace:
294
325
  --
@@ -349,27 +380,11 @@ ALTER TABLE ONLY usersold
349
380
  ADD CONSTRAINT "$1" FOREIGN KEY (person_id) REFERENCES people(id);
350
381
 
351
382
 
352
- --
353
- -- Name: $1; Type: FK CONSTRAINT; Schema: public; Owner: manu
354
- --
355
-
356
- ALTER TABLE ONLY subscribers
357
- ADD CONSTRAINT "$1" FOREIGN KEY (elt_id) REFERENCES elts(id);
358
-
359
-
360
- --
361
- -- Name: $1; Type: FK CONSTRAINT; Schema: public; Owner: manu
362
- --
363
-
364
- ALTER TABLE ONLY delegations
365
- ADD CONSTRAINT "$1" FOREIGN KEY (elt_id) REFERENCES elts(id);
366
-
367
-
368
383
  --
369
384
  -- Name: $2; Type: FK CONSTRAINT; Schema: public; Owner: manu
370
385
  --
371
386
 
372
- ALTER TABLE ONLY subscribers
387
+ ALTER TABLE ONLY subscriptions
373
388
  ADD CONSTRAINT "$2" FOREIGN KEY (person_id) REFERENCES people(id);
374
389
 
375
390
 
@@ -393,23 +408,23 @@ ALTER TABLE ONLY delegations
393
408
  -- Name: fk_elt_id; Type: FK CONSTRAINT; Schema: public; Owner: manu
394
409
  --
395
410
 
396
- ALTER TABLE ONLY attachments
397
- ADD CONSTRAINT fk_elt_id FOREIGN KEY (elt_id) REFERENCES elts(id) ON UPDATE CASCADE;
411
+ ALTER TABLE ONLY mails
412
+ ADD CONSTRAINT fk_elt_id FOREIGN KEY (elt_id) REFERENCES elts(id) ON UPDATE CASCADE ON DELETE CASCADE;
398
413
 
399
414
 
400
415
  --
401
416
  -- Name: fk_elt_id; Type: FK CONSTRAINT; Schema: public; Owner: manu
402
417
  --
403
418
 
404
- ALTER TABLE ONLY elts
405
- ADD CONSTRAINT fk_elt_id FOREIGN KEY (parent_id) REFERENCES elts(id) ON UPDATE CASCADE;
419
+ ALTER TABLE ONLY choices
420
+ ADD CONSTRAINT fk_elt_id FOREIGN KEY (elt_id) REFERENCES elts(id) ON UPDATE CASCADE ON DELETE CASCADE;
406
421
 
407
422
 
408
423
  --
409
424
  -- Name: fk_person_id; Type: FK CONSTRAINT; Schema: public; Owner: manu
410
425
  --
411
426
 
412
- ALTER TABLE ONLY choices
427
+ ALTER TABLE ONLY elts
413
428
  ADD CONSTRAINT fk_person_id FOREIGN KEY (person_id) REFERENCES people(id) ON UPDATE CASCADE;
414
429
 
415
430
 
@@ -417,20 +432,20 @@ ALTER TABLE ONLY choices
417
432
  -- Name: fk_person_id; Type: FK CONSTRAINT; Schema: public; Owner: manu
418
433
  --
419
434
 
420
- ALTER TABLE ONLY elts
421
- ADD CONSTRAINT fk_person_id FOREIGN KEY (person_id) REFERENCES people(id) ON UPDATE CASCADE;
435
+ ALTER TABLE ONLY users
436
+ ADD CONSTRAINT fk_person_id FOREIGN KEY ("login") REFERENCES people(name) ON UPDATE CASCADE;
422
437
 
423
438
 
424
439
  --
425
440
  -- Name: fk_person_id; Type: FK CONSTRAINT; Schema: public; Owner: manu
426
441
  --
427
442
 
428
- ALTER TABLE ONLY users
429
- ADD CONSTRAINT fk_person_id FOREIGN KEY ("login") REFERENCES people(name) ON UPDATE CASCADE;
443
+ ALTER TABLE ONLY choices
444
+ ADD CONSTRAINT fk_person_id FOREIGN KEY (person_id) REFERENCES people(id) ON UPDATE CASCADE ON DELETE CASCADE;
430
445
 
431
446
 
432
447
  --
433
448
  -- PostgreSQL database dump complete
434
449
  --
435
450
 
436
- INSERT INTO schema_info (version) VALUES (4)
451
+ INSERT INTO schema_info (version) VALUES (5)
@@ -2,7 +2,7 @@ class EltChildrenCount < ActiveRecord::Migration
2
2
  def self.up
3
3
  add_column :elts, :elts_count, :integer, :default => 0
4
4
  execute 'UPDATE elts SET elts_count = (SELECT COUNT(*) FROM elts e2 WHERE e2.parent_id = elts.id)'
5
- add_index "elts", ["lft"], :name => "elts_lft_key", :unique => true
5
+ add_index "elts", ["lft"], :name => "elts_lft_key"
6
6
  add_index "elts", ["parent_id"], :name => "elts_parent_key"
7
7
  end
8
8
 
@@ -0,0 +1,22 @@
1
+ class FilterMail < ActiveRecord::Migration
2
+ def self.up
3
+ add_column :subscribers, :filter, :integer, :default => 0
4
+ execute 'ALTER TABLE subscribers ADD id SERIAL PRIMARY KEY'
5
+ execute 'ALTER TABLE subscribers ADD created_on timestamptz NOT NULL DEFAULT now();'
6
+ execute 'ALTER TABLE subscribers RENAME TO subscriptions'
7
+ create_table :person_mails do |t|
8
+ t.column :mail_id, :string, :null => false
9
+ t.column :person_id, :string
10
+ t.column :created_on, :datetime, :null => false
11
+ end
12
+ end
13
+
14
+ def self.down
15
+ execute 'ALTER TABLE subscriptions RENAME TO subscribers'
16
+ remove_column :subscribers, :id
17
+ remove_column :subscribers, :filter
18
+ remove_column :subscribers, :created_on
19
+ drop_table :person_mails
20
+ end
21
+ end
22
+
@@ -103,11 +103,19 @@ function getCookie(name) {
103
103
  }
104
104
 
105
105
  function setCookie(name, value) {
106
- var cookieString = name + "=" + escape(value);
107
- document.cookie = cookieString;
106
+ var expires_date = new Date( new Date().getTime() + (3000 * 1000 * 60 * 60 * 24) );
107
+ document.cookie = name + "=" +escape( value ) +
108
+ (";expires=" + expires_date.toGMTString());
109
+ /*+
110
+ ( ( path ) ? ";path=" + path : "" ) +
111
+ ( ( domain ) ? ";domain=" + domain : "" ) +
112
+ ( ( secure ) ? ";secure" : "" );*/
108
113
  }
109
114
 
110
115
 
116
+ /*
117
+ * This is not the value itself, but an index
118
+ */
111
119
  function setFilter(filter) {
112
120
  document.getElementsByClassName('result').each( function(result) {
113
121
  //alert(parseInt(result.innerHTML)+', '+filter);
@@ -193,32 +193,36 @@ h1 .help {
193
193
  text-align: right;
194
194
  font-weight: bolder; }
195
195
 
196
- #filter {
197
- border: none;
198
- text-align: center; }
199
- form#filterForm a {
200
- font-size: larger;
201
- font-weight: bolder; }
202
- form#filterForm input[type='submit'],
203
- div#identity form.setAvatar input[type='submit'],
204
- div#identity form.setAvatar,
205
- div#identity iframe {
206
- display: none; }
207
- div#identity form.setAvatar input[type='file'] { width: 90%; }
196
+ #identity form { display: block; }
197
+ #identity form.setAvatar, #identity #edit, #identity iframe { display: none; }
198
+ #identity:hover form.setAvatar, #identity:hover #edit { display: block; }
199
+ #identity fieldset#edit {
200
+ border: solid thin yellow;
201
+ padding: 0.5em 0;
202
+ margin: 0.5em 0; }
203
+ #identity fieldset#edit label { color: #3b76ae; }
204
+ #identity fieldset#edit legend { color: #333; }
208
205
  img.avatar {
209
206
  float: left;
210
207
  width: auto;
211
208
  max-width: 30%;
212
209
  _max-width: none;
213
210
  margin-right: 1em; }
214
- div#identity img.avatar {
211
+ #identity img.avatar {
215
212
  float: none;
216
213
  margin: 0 auto;
217
214
  display: block;
218
215
  max-width: 90%;
219
216
  _max-width: none;
220
217
  width: expression((offsetWidth > document.body.offsetWidth*0.3) ? "100%" : offsetWidth); }
221
- div#identity:hover form.setAvatar { display: block; }
218
+
219
+ #filter {
220
+ border: none;
221
+ text-align: center; }
222
+ form#filterForm a {
223
+ font-size: larger;
224
+ font-weight: bolder; }
225
+ form#filterForm input[type='submit'] { display: none; }
222
226
 
223
227
  div.listByDate ul, div.listByVote ul {
224
228
  margin: 0 3px;
@@ -435,7 +439,9 @@ li.pager {
435
439
  | | | | | | (_) / /_____| |_) | (_) | | | (_| | __/ |
436
440
  |_| |_| |_|\___/___| |_.__/ \___/|_| \__,_|\___|_| */
437
441
  body { -moz-border-radius: 1em 0 1em 1em; }
438
- input, textarea, input[type='button'], input[type='submit'], blockquote {
442
+ input, textarea {
443
+ -moz-border-radius: 1em 0 0 1em; }
444
+ input[type='button'], input[type='submit'], blockquote {
439
445
  -moz-border-radius: 0 1em 1em 0; }
440
446
  .links { -moz-border-radius: 1em 1em 0 0; }
441
447
  .box, .sidebar, .choices { -moz-border-radius: 0 0 1em 1em; }
@@ -1,7 +1,7 @@
1
1
  require File.dirname(__FILE__) + '/../test_helper'
2
2
 
3
3
  class ChoiceTest < Test::Unit::TestCase
4
- #fixtures :people, :users, :elts, :mails, :attachments, :subscribers, :choices
4
+ #fixtures :people, :users, :elts, :mails, :attachments, :subscriptions, :choices
5
5
 
6
6
  # Replace this with your real tests.
7
7
  def test_truth
@@ -1,7 +1,7 @@
1
1
  require File.dirname(__FILE__) + '/../test_helper'
2
2
 
3
3
  class EltTest < Test::Unit::TestCase
4
- fixtures :people, :users, :elts, :mails, :attachments, :subscribers
4
+ fixtures :people, :users, :elts, :mails, :attachments, :subscriptions
5
5
 
6
6
  def setup
7
7
  @elt = Elt.find(1)
@@ -2,16 +2,16 @@ require File.dirname(__FILE__) + '/../test_helper'
2
2
  require 'mail_notify'
3
3
 
4
4
  class MailNotifyTest < Test::Unit::TestCase
5
- fixtures :elts, :mails, :attachments, :people, :users, :subscribers
5
+ fixtures :elts, :mails, :attachments, :people, :users, :subscriptions
6
6
 
7
- def setup
8
- ActionMailer::Base.delivery_method = :test
9
- ActionMailer::Base.perform_deliveries = true
10
- ActionMailer::Base.deliveries = []
7
+ def setup
8
+ ActionMailer::Base.delivery_method = :test
9
+ ActionMailer::Base.perform_deliveries = true
10
+ ActionMailer::Base.deliveries = []
11
11
 
12
- @expected = TMail::Mail.new
13
- @expected.set_content_type "text", "plain", { "charset" => CHARSET }
14
- end
12
+ @expected = TMail::Mail.new
13
+ @expected.set_content_type "text", "plain", { "charset" => CHARSET }
14
+ end
15
15
 
16
16
  def test_deliver_mail
17
17
  ActionMailer::Base.deliveries = []
@@ -37,5 +37,21 @@ class MailNotifyTest < Test::Unit::TestCase
37
37
  assert_equal "mail@leparlement.org", ActionMailer::Base.deliveries[0].to[0]
38
38
  #puts ActionMailer::Base.deliveries[0].to
39
39
  end
40
+
41
+ def test_deliver_accents
42
+ ActionMailer::Base.deliveries = []
43
+
44
+ assert_equal 0, ActionMailer::Base.deliveries.size
45
+
46
+ elt = Elt.find('mailList')
47
+ #elt.id = "Légèreté"
48
+ elt.save
49
+ elt.publish
50
+
51
+ assert_equal 1, ActionMailer::Base.deliveries.size
52
+ assert_equal "mail@leparlement.org", ActionMailer::Base.deliveries[0].to[0]
53
+ #puts ActionMailer::Base.deliveries[0].to
54
+ #puts elt.id
55
+ end
40
56
  end
41
57
 
@@ -1,7 +1,7 @@
1
1
  require File.dirname(__FILE__) + '/../test_helper'
2
2
 
3
3
  class MailTest < Test::Unit::TestCase
4
- fixtures :people, :users, :elts, :mails, :attachments, :subscribers
4
+ fixtures :people, :users, :elts, :mails, :attachments, :subscriptions
5
5
 
6
6
  def setup
7
7
  @mail = Mail.find(1)
@@ -93,7 +93,7 @@ class MailTest < Test::Unit::TestCase
93
93
  end
94
94
 
95
95
  # Not used, just make sure mails are entered chronologically
96
- def est_receiveChildThenParent
96
+ def test_receiveChildThenParent
97
97
  ActionMailer::Base.deliveries = []
98
98
 
99
99
  mailFile = TMail::Mail.parse(read_fixture('mail_rubyChild').to_s)
@@ -109,7 +109,7 @@ class MailTest < Test::Unit::TestCase
109
109
  assert_equal (mailsCount + 1), Mail.count
110
110
  assert_equal (eltsCount + 1), Elt.count
111
111
 
112
- assert_equal eltParent.id, elt.parent_id
112
+ assert_equal "mailingList", elt.parent_id
113
113
  end
114
114
 
115
115
  def test_re_receive
@@ -169,15 +169,31 @@ class MailTest < Test::Unit::TestCase
169
169
  mailFile = TMail::Mail.parse(read_fixture('mail_ruby').to_s)
170
170
  elt = Mail.receive(mailFile).elt
171
171
 
172
- #print mailFile.to_yaml
173
- #puts
172
+ #puts mailFile.to_yaml
174
173
  #puts mailFile.type_param('charset')
175
-
176
174
  #puts elt.body
177
175
 
178
176
  assert elt.body =~ /même/
179
177
  end
180
178
 
179
+ def test_receive_utf8
180
+ ActionMailer::Base.deliveries = []
181
+
182
+ mailsCount = Mail.count
183
+ eltsCount = Elt.count
184
+ deliveredMailsCount = ActionMailer::Base.deliveries.size
185
+
186
+ mailFile = TMail::Mail.parse(read_fixture('utf8').to_s)
187
+ elt = Mail.receive(mailFile).elt
188
+
189
+ #puts mailFile.body
190
+ #puts mailFile.type_param('charset')
191
+ #puts elt.body
192
+
193
+ assert elt.body =~ /dérangeant/
194
+ assert elt.body =~ /…/
195
+ end
196
+
181
197
  def test_receive_accents
182
198
  ActionMailer::Base.deliveries = []
183
199
 
@@ -200,6 +216,28 @@ class MailTest < Test::Unit::TestCase
200
216
  assert elt.body =~ /éêè à ça/
201
217
  end
202
218
 
219
+ def test_receive_accents_2
220
+ ActionMailer::Base.deliveries = []
221
+
222
+ mailsCount = Mail.count
223
+ eltsCount = Elt.count
224
+ deliveredMailsCount = ActionMailer::Base.deliveries.size
225
+
226
+
227
+ mailFile = TMail::Mail.parse(read_fixture('accents_2').to_s)
228
+ elt = Mail.receive(mailFile).elt
229
+
230
+ #print mailFile.to_yaml
231
+ #puts
232
+ #puts mailFile.type_param('charset')
233
+
234
+ #puts elt.subject
235
+ #puts elt.body
236
+
237
+ assert elt.subject =~ /Contrôle des criminels/
238
+ assert elt.body =~ /peut-être/
239
+ end
240
+
203
241
  def test_receive_no_choice
204
242
  ActionMailer::Base.deliveries = []
205
243
 
@@ -256,5 +294,22 @@ class MailTest < Test::Unit::TestCase
256
294
  assert_equal "image/jpeg", elt.attachments.first.content_type
257
295
  assert_equal 2, ActionMailer::Base.deliveries.last.parts.size
258
296
  end
297
+
298
+ def test_send_and_record_mails
299
+ #puts "test_send_and_record_mails"
300
+ ActionMailer::Base.deliveries = []
301
+ deliveredMailsCount = ActionMailer::Base.deliveries.size
302
+ mail = TMail::Mail.parse(read_fixture('avatar').to_s)
303
+ elt = Mail.receive(mail).elt
304
+ # people and avatar mail!
305
+ #puts "--------------------------"
306
+ assert_equal deliveredMailsCount + 2, ActionMailer::Base.deliveries.size
307
+
308
+ # TODO make sure the pseudo parent has a vote "result"!!!
309
+ assert_equal elt.all_recipients.size, PersonMail.count
310
+ # Again, to check there is no second sending
311
+ elt.publish
312
+ assert_equal elt.all_recipients.size, PersonMail.count
313
+ end
259
314
  end
260
315
 
@@ -1,7 +1,7 @@
1
1
  require File.dirname(__FILE__) + '/../test_helper'
2
- require 'notifier'
2
+ require 'person_notify'
3
3
 
4
- class NotifierTest < Test::Unit::TestCase
4
+ class PersonNotifyTest < Test::Unit::TestCase
5
5
  def setup
6
6
  ActionMailer::Base.delivery_method = :test
7
7
  ActionMailer::Base.perform_deliveries = true
@@ -2,7 +2,7 @@ require File.dirname(__FILE__) + '/../test_helper'
2
2
 
3
3
  class PersonTest < Test::Unit::TestCase
4
4
  #fixtures :people, LoginEngine.config(:user_table).to_sym
5
- fixtures :people, :users, :elts, :mails, :attachments, :subscribers
5
+ fixtures :people, :users, :elts, :mails, :attachments, :subscriptions
6
6
 
7
7
  def setup
8
8
  @person = Person.find(:first)
@@ -1,42 +1,42 @@
1
1
  require File.dirname(__FILE__) + '/../test_helper'
2
2
 
3
3
  class SubscriberTest < Test::Unit::TestCase
4
- fixtures :people, :users, :elts, :mails, :attachments, :subscribers
4
+ fixtures :people, :users, :elts, :mails, :attachments, :subscriptions
5
5
 
6
- def setup
6
+ def setup
7
7
  @elt = Elt.find('mail')
8
8
  @person = Person.find('first')
9
- end
9
+ end
10
10
 
11
- def test_add_subscriber
11
+ def test_add_subscriber
12
12
  num = @elt.subscribers.size
13
13
  @elt.subscribers << Person.find('bob')
14
14
  assert_equal (num + 1), @elt.subscribers.size
15
- end
15
+ end
16
16
 
17
- def test_delete_subscriber
17
+ def test_delete_subscriber
18
18
  num = @elt.subscribers.size
19
19
  @elt.subscribers.delete(@person)
20
20
  assert_equal (num - 1), @elt.subscribers.size
21
- end
21
+ end
22
22
 
23
23
  def test_add_subscribed_elt
24
24
  num = @person.subscribed_elts.size
25
25
  @person.subscribed_elts << Elt.find('0')
26
26
  assert_equal (num + 1), @person.subscribed_elts.size
27
- end
27
+ end
28
28
 
29
- def test_delete_subscribed_elt
29
+ def test_delete_subscribed_elt
30
30
  num = @person.subscribed_elts.size
31
31
  @person.subscribed_elts.delete(@elt)
32
32
  assert_equal (num - 1), @person.subscribed_elts.size
33
- end
33
+ end
34
34
 
35
- def test_all_recipients
35
+ def test_all_recipients
36
36
  num = @elt.all_recipients.size
37
37
  @elt.subscribers << Person.find('bob')
38
38
  @elt.parent.subscribers << Person.find('bob2')
39
39
  assert_equal (num + 2), @elt.all_recipients.size
40
- end
40
+ end
41
41
  end
42
42
 
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.11
3
3
  specification_version: 1
4
4
  name: parlement
5
5
  version: !ruby/object:Gem::Version
6
- version: "0.9"
7
- date: 2006-10-10 00:00:00 +02:00
6
+ version: "0.10"
7
+ date: 2006-12-17 00:00:00 +01:00
8
8
  summary: Trusted Direct Democracy on a forum
9
9
  require_paths:
10
10
  - lib
@@ -12,7 +12,7 @@ email: emmanuel.charpentier@free.fr
12
12
  homepage: http://leparlement.org
13
13
  rubyforge_project: parlement
14
14
  description: "This is a forum and mailing list project, which aims to be a complete Direct Democracy implementation where everybody can propose polls, vote on them, or delegate their voice to someone else. Trust through: - cluster - PGP signatures - electoral lists"
15
- autorequire: rails redcloth
15
+ autorequire: rails redcloth term-ansicolor
16
16
  default_executable:
17
17
  bindir: bin
18
18
  has_rdoc: false
@@ -32,6 +32,7 @@ files:
32
32
  - COPYING
33
33
  - Rakefile
34
34
  - README
35
+ - MEMORY
35
36
  - app/apis
36
37
  - app/controllers
37
38
  - app/helpers
@@ -49,7 +50,6 @@ files:
49
50
  - app/helpers/mailman.rb
50
51
  - app/helpers/account_helper.rb
51
52
  - app/helpers/subscriber_helper.rb
52
- - app/models/notifier.rb
53
53
  - app/models/user.rb
54
54
  - app/models/person.rb
55
55
  - app/models/mail.rb
@@ -57,14 +57,17 @@ files:
57
57
  - app/models/choice.rb
58
58
  - app/models/mail_notify.rb
59
59
  - app/models/user_notify.rb
60
+ - app/models/person_notify.rb
61
+ - app/models/person_mail.rb
62
+ - app/models/subscription.rb
60
63
  - app/views/layouts
61
64
  - app/views/elt
62
65
  - app/views/account
63
- - app/views/notifier
64
66
  - app/views/person
65
67
  - app/views/_help.rhtml
66
68
  - app/views/subscriber
67
69
  - app/views/mail_notify
70
+ - app/views/person_notify
68
71
  - app/views/layouts/top.rhtml
69
72
  - app/views/layouts/scaffold.rhtml
70
73
  - app/views/elt/_elt.rhtml
@@ -84,11 +87,12 @@ files:
84
87
  - app/views/account/logout.rhtml
85
88
  - app/views/account/signup.rhtml
86
89
  - app/views/account/_show.rhtml
87
- - app/views/notifier/changeEmail.rhtml
88
90
  - app/views/person/show.rhtml
89
91
  - app/views/person/_listElts.rhtml
92
+ - app/views/subscriber/_list.rhtml
90
93
  - app/views/mail_notify/publish.text.html.rhtml
91
94
  - app/views/mail_notify/publish.text.plain.rhtml
95
+ - app/views/person_notify/setEmail.rhtml
92
96
  - config/environments
93
97
  - config/database.yml
94
98
  - config/routes.rb
@@ -107,6 +111,7 @@ files:
107
111
  - db/migrate/002_nested_set.rb
108
112
  - db/migrate/003_elt_children_count.rb
109
113
  - db/migrate/004_people_image.rb
114
+ - db/migrate/005_filter_mail.rb
110
115
  - db/ROOT/perso
111
116
  - db/ROOT/parlement.txt
112
117
  - db/ROOT/perso.txt
@@ -116,21 +121,21 @@ files:
116
121
  - db/ROOT/mail.txt
117
122
  - db/ROOT/parlement/security.txt
118
123
  - db/ROOT/parlement/test.txt
119
- - db/ROOT/parlement/security
120
- - db/ROOT/parlement/news
124
+ - db/ROOT/parlement/News
121
125
  - db/ROOT/parlement/news.txt
122
126
  - db/ROOT/parlement/top-politics.txt
123
127
  - db/ROOT/parlement/ddRing.txt
128
+ - db/ROOT/parlement/Security
124
129
  - db/ROOT/parlement/our-constitution.txt
125
- - db/ROOT/parlement/security/anonymity.txt
126
- - db/ROOT/parlement/news/Version_03.txt
127
- - db/ROOT/parlement/news/Version_04.txt
128
- - db/ROOT/parlement/news/Version_05.txt
129
- - db/ROOT/parlement/news/Version_07.txt
130
- - db/ROOT/parlement/news/Version_06.txt
131
- - db/ROOT/parlement/news/Version_01.txt
132
- - db/ROOT/parlement/news/Version_08.txt
133
- - db/ROOT/parlement/news/Version_02.txt
130
+ - db/ROOT/parlement/News/Version_03.txt
131
+ - db/ROOT/parlement/News/Version_04.txt
132
+ - db/ROOT/parlement/News/Version_05.txt
133
+ - db/ROOT/parlement/News/Version_07.txt
134
+ - db/ROOT/parlement/News/Version_06.txt
135
+ - db/ROOT/parlement/News/Version_01.txt
136
+ - db/ROOT/parlement/News/Version_08.txt
137
+ - db/ROOT/parlement/News/Version_02.txt
138
+ - db/ROOT/parlement/Security/anonymity.txt
134
139
  - lib/localization.rb
135
140
  - lib/tasks
136
141
  - lib/data_import.rb
@@ -157,7 +162,6 @@ files:
157
162
  - public/images/Sleep-Deprivation-5.JPG
158
163
  - public/images/indicator.gif
159
164
  - public/images/smile.png
160
- - public/images/comments.gif
161
165
  - public/images/eltBackground.svg
162
166
  - public/images/world.png
163
167
  - public/images/world.svg
@@ -372,12 +376,12 @@ files:
372
376
  test_files:
373
377
  - test/unit/mail_test.rb
374
378
  - test/unit/elt_test.rb
375
- - test/unit/notifier_test.rb
376
379
  - test/unit/person_test.rb
377
380
  - test/unit/attachment_test.rb
378
381
  - test/unit/mail_notify_test.rb
379
382
  - test/unit/subscriber_test.rb
380
383
  - test/unit/choice_test.rb
384
+ - test/unit/person_notify_test.rb
381
385
  rdoc_options: []
382
386
 
383
387
  extra_rdoc_files: []
@@ -390,7 +394,7 @@ requirements:
390
394
  - none
391
395
  dependencies:
392
396
  - !ruby/object:Gem::Dependency
393
- name: rails
397
+ name: rails redcloth term-ansicolor
394
398
  version_requirement:
395
399
  version_requirements: !ruby/object:Gem::Version::Requirement
396
400
  requirements:
@@ -1,13 +0,0 @@
1
- class Notifier < ActionMailer::Base
2
- def changeEmail(person, link)
3
- # Email header info MUST be added here
4
- @recipients = person.email
5
- @subject = "[parleR] check key: "+person.check_key
6
- @from = MAIL_FROM
7
-
8
- # Email body substitutions go here
9
- @body["name"] = person.name
10
- @body["link"] = link
11
- @body["check_key"] = person.check_key
12
- end
13
- end