diff options
author | Struan Donald <struan@exo.org.uk> | 2011-05-11 14:55:39 +0100 |
---|---|---|
committer | Struan Donald <struan@exo.org.uk> | 2011-05-11 14:55:39 +0100 |
commit | c3adef1dea602a181521f2bc0848ec47d67198d0 (patch) | |
tree | e65bb2ac57e92d8501dff147516855c4853ac873 /perllib/FixMyStreet | |
parent | a20a64f50fa01c7e3604c5dc329db2c4a607682d (diff) |
moving alerts to use users instead of email in table
Diffstat (limited to 'perllib/FixMyStreet')
-rw-r--r-- | perllib/FixMyStreet/App/Controller/Alert.pm | 15 | ||||
-rw-r--r-- | perllib/FixMyStreet/DB/Result/Alert.pm | 75 | ||||
-rw-r--r-- | perllib/FixMyStreet/DB/Result/User.pm | 51 |
3 files changed, 83 insertions, 58 deletions
diff --git a/perllib/FixMyStreet/App/Controller/Alert.pm b/perllib/FixMyStreet/App/Controller/Alert.pm index 742aa6c1d..595f6d252 100644 --- a/perllib/FixMyStreet/App/Controller/Alert.pm +++ b/perllib/FixMyStreet/App/Controller/Alert.pm @@ -243,8 +243,11 @@ sub subscribe_email : Private { # return alert_front_page($q, @errors); } - my $alert; my $email = $c->req->param('rznvy'); + $c->stash->{email} = $email; + $c->forward( 'process_user' ); + + my $alert; # my $cobrand = Page::get_cobrand($q); # my $cobrand_data = Cobrand::extra_alert_data($cobrand, $q); @@ -286,7 +289,7 @@ sub subscribe_email : Private { } my $options = { - email => $email, + user => $c->stash->{alert_user}, alert_type => $type }; @@ -440,6 +443,14 @@ sub council_options : Private { } } +sub process_user : Private { + my ( $self, $c ) = @_; + + my $email = $c->stash->{email}; + my $alert_user = $c->model('DB::User')->find_or_new( { email => $email } ); + $c->stash->{alert_user} = $alert_user; +} + sub choose : Private { my ( $self, $c ) = @_; $c->stash->{template} = 'alert/choose.html'; diff --git a/perllib/FixMyStreet/DB/Result/Alert.pm b/perllib/FixMyStreet/DB/Result/Alert.pm index 9b71e16a8..2d5867050 100644 --- a/perllib/FixMyStreet/DB/Result/Alert.pm +++ b/perllib/FixMyStreet/DB/Result/Alert.pm @@ -11,42 +11,49 @@ use base 'DBIx::Class::Core'; __PACKAGE__->load_components("FilterColumn"); __PACKAGE__->table("alert"); __PACKAGE__->add_columns( - "id", - { - data_type => "integer", - is_auto_increment => 1, - is_nullable => 0, - sequence => "alert_id_seq", - }, - "alert_type", - { data_type => "text", is_foreign_key => 1, is_nullable => 0 }, - "parameter", - { data_type => "text", is_nullable => 1 }, - "parameter2", - { data_type => "text", is_nullable => 1 }, - "email", - { data_type => "text", is_nullable => 0 }, - "confirmed", - { data_type => "integer", default_value => 0, is_nullable => 0 }, - "lang", - { data_type => "text", default_value => "en-gb", is_nullable => 0 }, - "cobrand", - { data_type => "text", default_value => "", is_nullable => 0 }, - "cobrand_data", - { data_type => "text", default_value => "", is_nullable => 0 }, - "whensubscribed", - { - data_type => "timestamp", - default_value => \"ms_current_timestamp()", - is_nullable => 0, - }, - "whendisabled", - { data_type => "timestamp", is_nullable => 1 }, + "id", + { + data_type => "integer", + is_auto_increment => 1, + is_nullable => 0, + sequence => "alert_id_seq", + }, + "alert_type", + { data_type => "text", is_foreign_key => 1, is_nullable => 0 }, + "parameter", + { data_type => "text", is_nullable => 1 }, + "parameter2", + { data_type => "text", is_nullable => 1 }, + "confirmed", + { data_type => "integer", default_value => 0, is_nullable => 0 }, + "lang", + { data_type => "text", default_value => "en-gb", is_nullable => 0 }, + "cobrand", + { data_type => "text", default_value => "", is_nullable => 0 }, + "cobrand_data", + { data_type => "text", default_value => "", is_nullable => 0 }, + "whensubscribed", + { + data_type => "timestamp", + default_value => \"ms_current_timestamp()", + is_nullable => 0, + }, + "whendisabled", + { data_type => "timestamp", is_nullable => 1 }, + "user_id", + { data_type => "integer", is_foreign_key => 1, is_nullable => 0 }, ); __PACKAGE__->set_primary_key("id"); +__PACKAGE__->belongs_to( + "user", + "FixMyStreet::DB::Result::User", + { id => "user_id" }, + { is_deferrable => 1, on_delete => "CASCADE", on_update => "CASCADE" }, +); + -# Created by DBIx::Class::Schema::Loader v0.07010 @ 2011-05-10 12:36:15 -# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:tfT1PBeEOwcLsQaX+HXSKA +# Created by DBIx::Class::Schema::Loader v0.07010 @ 2011-05-11 14:21:33 +# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:6MMiFASvNi/pG74uxcspuQ # You can replace this text with custom code or comments, and it will be preserved on regeneration @@ -65,7 +72,7 @@ sub is_from_abuser { my $self = shift; # get the domain - my $email = $self->email; + my $email = $self->user->email; my ($domain) = $email =~ m{ @ (.*) \z }x; # search for an entry in the abuse table diff --git a/perllib/FixMyStreet/DB/Result/User.pm b/perllib/FixMyStreet/DB/Result/User.pm index 32361ca48..7bb2bfcff 100644 --- a/perllib/FixMyStreet/DB/Result/User.pm +++ b/perllib/FixMyStreet/DB/Result/User.pm @@ -11,33 +11,40 @@ use base 'DBIx::Class::Core'; __PACKAGE__->load_components("FilterColumn"); __PACKAGE__->table("users"); __PACKAGE__->add_columns( - "id", - { - data_type => "integer", - is_auto_increment => 1, - is_nullable => 0, - sequence => "users_id_seq", - }, - "email", - { data_type => "text", is_nullable => 0 }, - "name", - { data_type => "text", is_nullable => 1 }, - "phone", - { data_type => "text", is_nullable => 1 }, - "password", - { data_type => "text", default_value => "", is_nullable => 0 }, + "id", + { + data_type => "integer", + is_auto_increment => 1, + is_nullable => 0, + sequence => "users_id_seq", + }, + "email", + { data_type => "text", is_nullable => 0 }, + "name", + { data_type => "text", is_nullable => 1 }, + "phone", + { data_type => "text", is_nullable => 1 }, + "password", + { data_type => "text", default_value => "", is_nullable => 0 }, ); __PACKAGE__->set_primary_key("id"); -__PACKAGE__->add_unique_constraint( "users_email_key", ["email"] ); +__PACKAGE__->add_unique_constraint("users_email_key", ["email"]); +__PACKAGE__->has_many( + "alerts", + "FixMyStreet::DB::Result::Alert", + { "foreign.user_id" => "self.id" }, + { cascade_copy => 0, cascade_delete => 0 }, +); __PACKAGE__->has_many( - "problems", - "FixMyStreet::DB::Result::Problem", - { "foreign.user_id" => "self.id" }, - { cascade_copy => 0, cascade_delete => 0 }, + "problems", + "FixMyStreet::DB::Result::Problem", + { "foreign.user_id" => "self.id" }, + { cascade_copy => 0, cascade_delete => 0 }, ); -# Created by DBIx::Class::Schema::Loader v0.07010 @ 2011-03-24 17:36:08 -# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:36KVfhjrygEEmpmWm/vZBg + +# Created by DBIx::Class::Schema::Loader v0.07010 @ 2011-05-11 14:21:33 +# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:Qaw6SZ5my5MnH7B5sB9NDw use mySociety::EmailUtil; |