From 6d5059cb001e2ee8f220c9e9493a8c0f9c1bd358 Mon Sep 17 00:00:00 2001 From: Moncef Belyamani Date: Sat, 8 Nov 2014 17:04:16 -0500 Subject: [PATCH] Convert Location urls field to singular website. --- app/models/concerns/search.rb | 4 +- app/models/location.rb | 16 ++--- app/serializers/location_serializer.rb | 2 +- app/serializers/locations_serializer.rb | 2 +- .../admin/locations/forms/_fields.html.haml | 2 +- .../locations/forms/_url_fields.html.haml | 4 -- .../admin/locations/forms/_urls.html.haml | 17 ----- .../organizations/forms/_fields.html.haml | 2 +- .../admin/services/forms/_fields.html.haml | 2 +- .../admin/services/forms/_website.html.haml | 7 --- .../forms/_website.html.haml | 2 +- data/ohana_api_development.dump | Bin 91010 -> 91000 bytes data/sample_data.txt | 16 ++--- ...4838_replace_location_urls_with_website.rb | 7 +++ ...08214741_add_website_index_to_locations.rb | 9 +++ db/structure.sql | 12 ++-- script/reset_test_db | 7 +++ spec/api/get_locations_spec.rb | 4 +- spec/api/get_organization_locations_spec.rb | 6 +- spec/api/patch_location_spec.rb | 19 ------ spec/api/search_spec.rb | 14 ++--- spec/factories/locations.rb | 4 +- .../admin/locations/create_location_spec.rb | 5 +- .../admin/locations/update_urls_spec.rb | 59 ------------------ .../admin/locations/update_website_spec.rb | 23 +++++++ .../admin/locations/visit_location_spec.rb | 4 +- .../organizations/visit_organization_spec.rb | 4 +- ...te_urls_spec.rb => update_website_spec.rb} | 2 +- spec/models/location_spec.rb | 15 +++-- 29 files changed, 103 insertions(+), 167 deletions(-) delete mode 100644 app/views/admin/locations/forms/_url_fields.html.haml delete mode 100644 app/views/admin/locations/forms/_urls.html.haml delete mode 100644 app/views/admin/services/forms/_website.html.haml rename app/views/admin/{organizations => shared}/forms/_website.html.haml (74%) create mode 100644 db/migrate/20141108194838_replace_location_urls_with_website.rb create mode 100644 db/migrate/20141108214741_add_website_index_to_locations.rb create mode 100755 script/reset_test_db delete mode 100644 spec/features/admin/locations/update_urls_spec.rb create mode 100644 spec/features/admin/locations/update_website_spec.rb rename spec/features/admin/services/{update_urls_spec.rb => update_website_spec.rb} (95%) diff --git a/app/models/concerns/search.rb b/app/models/concerns/search.rb index 1f0837b32..927923ffd 100644 --- a/app/models/concerns/search.rb +++ b/app/models/concerns/search.rb @@ -32,9 +32,9 @@ module Search Location.where(locations[:admin_emails].matches("%#{email}%"). or(locations[:emails].matches("%#{email}%"))) else - # where('urls ilike :q or emails ilike :q or admin_emails @@ :p', q: "%#{domain}%", p: email) + # where('website ilike :q or emails ilike :q or admin_emails @@ :p', q: "%#{domain}%", p: email) Location.where(locations[:admin_emails].matches("%#{email}%"). - or(locations[:urls].matches("%#{domain}%")). + or(locations[:website].matches("%#{domain}%")). or(locations[:emails].matches("%#{domain}%"))) end end) diff --git a/app/models/location.rb b/app/models/location.rb index 814486c91..9a8c525ec 100644 --- a/app/models/location.rb +++ b/app/models/location.rb @@ -1,7 +1,7 @@ class Location < ActiveRecord::Base attr_accessible :accessibility, :active, :admin_emails, :alternate_name, :description, :emails, :languages, :latitude, - :longitude, :name, :short_desc, :transportation, :urls, + :longitude, :name, :short_desc, :transportation, :website, :virtual, :address_attributes, :contacts_attributes, :mail_address_attributes, :phones_attributes, :services_attributes, :regular_schedules_attributes, @@ -58,11 +58,7 @@ class Location < ActiveRecord::Base ## displayed in the ohana-web-search client to suit your needs. # validates :short_desc, length: { maximum: 200 } - # Custom validation for values within arrays. - # For example, the urls field is an array that can contain multiple URLs. - # To be able to validate each URL in the array, we have to use a - # custom array validator. See app/validators/array_validator.rb - validates :urls, array: { url: true } + validates :website, url: true validates :languages, pg_array: true @@ -88,12 +84,10 @@ class Location < ActiveRecord::Base serialize :emails, Array - serialize :urls, Array + auto_strip_attributes :description, :name, :short_desc, :transportation, + :website - auto_strip_attributes :description, :name, :short_desc, - :transportation - - auto_strip_attributes :admin_emails, :emails, :urls, + auto_strip_attributes :admin_emails, :emails, reject_blank: true, nullify: false extend FriendlyId diff --git a/app/serializers/location_serializer.rb b/app/serializers/location_serializer.rb index 31a3a86d4..7f2d2fb75 100644 --- a/app/serializers/location_serializer.rb +++ b/app/serializers/location_serializer.rb @@ -2,7 +2,7 @@ class LocationSerializer < ActiveModel::Serializer attributes :id, :active, :accessibility, :admin_emails, :alternate_name, :coordinates, :description, :emails, :languages, :latitude, :longitude, :name, :short_desc, :slug, :transportation, - :updated_at, :urls, :url + :website, :updated_at, :url has_one :address has_many :contacts diff --git a/app/serializers/locations_serializer.rb b/app/serializers/locations_serializer.rb index e2ee2063a..57ef542d5 100644 --- a/app/serializers/locations_serializer.rb +++ b/app/serializers/locations_serializer.rb @@ -1,7 +1,7 @@ class LocationsSerializer < ActiveModel::Serializer attributes :id, :active, :admin_emails, :alternate_name, :coordinates, :description, :latitude, :longitude, :name, :short_desc, :slug, - :updated_at, :urls, :contacts_url, :services_url, :url + :website, :updated_at, :contacts_url, :services_url, :url has_one :address has_one :organization, serializer: LocationsOrganizationSerializer diff --git a/app/views/admin/locations/forms/_fields.html.haml b/app/views/admin/locations/forms/_fields.html.haml index b00d432aa..69d5ace16 100644 --- a/app/views/admin/locations/forms/_fields.html.haml +++ b/app/views/admin/locations/forms/_fields.html.haml @@ -22,5 +22,5 @@ = render 'admin/shared/forms/hours', f: f = render 'admin/shared/forms/holiday_hours', f: f = render 'admin/locations/forms/transportation', f: f -= render 'admin/locations/forms/urls', f: f += render 'admin/shared/forms/website', f: f = render 'admin/locations/forms/accessibility', f: f \ No newline at end of file diff --git a/app/views/admin/locations/forms/_url_fields.html.haml b/app/views/admin/locations/forms/_url_fields.html.haml deleted file mode 100644 index 7b60f3269..000000000 --- a/app/views/admin/locations/forms/_url_fields.html.haml +++ /dev/null @@ -1,4 +0,0 @@ -= field_set_tag do - = url_field_tag 'location[urls][]', '', class: 'form-control' - = link_to 'Delete this website permanently', '#', class: 'btn btn-danger delete_attribute' - %hr diff --git a/app/views/admin/locations/forms/_urls.html.haml b/app/views/admin/locations/forms/_urls.html.haml deleted file mode 100644 index 71a7cbdb6..000000000 --- a/app/views/admin/locations/forms/_urls.html.haml +++ /dev/null @@ -1,17 +0,0 @@ -.inst-box.urls - %header - %strong - Websites - %p.desc - What websites are associated with the location? - %em - Must include "http://" or "https://" - - if @location.urls.present? - - @location.urls.each_with_index do |url, i| - = field_set_tag do - .row - %div{ class: "col-sm-6 #{error_class_for(@location, :urls, url)}" } - = url_field_tag 'location[urls][]', url, class: 'form-control', id: "location_urls_#{i}" - = link_to 'Delete this website permanently', '#', class: 'btn btn-danger delete_attribute' - %hr - = link_to_add_array_fields 'Add a new website', :locations, :url diff --git a/app/views/admin/organizations/forms/_fields.html.haml b/app/views/admin/organizations/forms/_fields.html.haml index 193d90f33..edfd5c5ab 100644 --- a/app/views/admin/organizations/forms/_fields.html.haml +++ b/app/views/admin/organizations/forms/_fields.html.haml @@ -16,5 +16,5 @@ = render 'admin/organizations/forms/licenses', f: f = render 'admin/organizations/forms/tax_id', f: f = render 'admin/organizations/forms/tax_status', f: f -= render 'admin/organizations/forms/website', f: f += render 'admin/shared/forms/website', f: f = render 'admin/locations/forms/phones', f: f diff --git a/app/views/admin/services/forms/_fields.html.haml b/app/views/admin/services/forms/_fields.html.haml index ac57754d5..80947d07a 100644 --- a/app/views/admin/services/forms/_fields.html.haml +++ b/app/views/admin/services/forms/_fields.html.haml @@ -23,7 +23,7 @@ = render 'admin/services/forms/required_documents', f: f = render 'admin/services/forms/service_areas', f: f = render 'admin/services/forms/status', f: f -= render 'admin/services/forms/website', f: f += render 'admin/shared/forms/website', f: f = render 'admin/services/forms/wait', f: f = render 'admin/services/forms/categories', f: f = render 'admin/services/forms/keywords', f: f diff --git a/app/views/admin/services/forms/_website.html.haml b/app/views/admin/services/forms/_website.html.haml deleted file mode 100644 index 93c3feffd..000000000 --- a/app/views/admin/services/forms/_website.html.haml +++ /dev/null @@ -1,7 +0,0 @@ -.inst-box - %header - = f.label :website, 'Service Website' - = field_set_tag do - .row - .col-sm-6 - = f.url_field :website, required: false, maxlength: 255, class: 'form-control' \ No newline at end of file diff --git a/app/views/admin/organizations/forms/_website.html.haml b/app/views/admin/shared/forms/_website.html.haml similarity index 74% rename from app/views/admin/organizations/forms/_website.html.haml rename to app/views/admin/shared/forms/_website.html.haml index 0e7809748..34cec91a7 100644 --- a/app/views/admin/organizations/forms/_website.html.haml +++ b/app/views/admin/shared/forms/_website.html.haml @@ -1,6 +1,6 @@ .inst-box %header - = f.label :website, 'Organization Website' + = f.label :website, "#{f.object.class} Website" = field_set_tag do .row .col-sm-6 diff --git a/data/ohana_api_development.dump b/data/ohana_api_development.dump index 35bdea4f090a0fcd5bbb2b14125e8704b5550842..075a89122829e1138496b86b87c5c0bbb77943f2 100644 GIT binary patch delta 18509 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 WA!R(jKhN|00obpHa<`dB0qGmSnsTxL delta 18573 zcmXtfQ;;rD4rbf7ZQHhOo40NLjoY?u+wR-8ZQC|?W_C9ZsY<@eiK_CD)Oi~L4;lr> zQ<4;uR|19u0)qku1_t^MVg8pP{Es!@p&%y-;X(j2B^6+zH_0F?K_vANfhQ3nfP*q~ zvNV-p(m?(X=lCCfO)w0W#8e9TKVgP68wyya$(BwP7|hN2k4w@Jo^uj8LjVK}H7^Vh zeo_H7deafZI!uz1I|MNI|4i1oBOsIJ#36uL|0ntj8^HWeRcFpSIpR|8c3A61egC|J@QCPLDLHAWMTl^Za~%1Tp$buBQ+<4TjTZ3-}O zeADV5NMMkf>!v-sGGLJV`=$toWnhrTrzRsOVqoB>q#)<){~Iu#i*%wnchYPPBnSvX zQ@zU`Fz|3wf*U;uFmY3_2N(!Upz!|+1_adb|2^Xh{9n&7-nzgruoC|dZv1boe|-{w zVW|GUswpYK0lSII&kh(S=l|i{J(TzgHNQB>T|%*Ik^7UzdsJ9#;(>5_AZA1tN(5jankPu%>T`8 zz8)>fu@*c@aEb)xzbN&8n?jQ0l#ZShFa-nR=A6VhF5kp314l`Ttfr15HZdo)ItG?u zZDnK*B$6F!fdr8TEyb;b>c46F)ZX3>q(G5m{EPvxb=h1?xwbsk%vZ^%x}i}S`J8`8 z8NbfG$@Fjkqp0FSsj7+utsE{L1T0jMqW1H-ZF}v9Af(;6Ee&W_#cqQN>hrq!_p%X( znkQ~KdHgW@Y3>NvWZPV}+kOG;9O~Td{*nT^Z@RkNx8eHNR!NtO zY}je#ysjkJv=`I^OZ&;Xp$I>?+P&KaC14f++dQdVKSG=j=aKeA_cQ#jzE??gx;eFUIu69K+2H)BT z>3l39ZVO;#T5y7GzW6oy3FX!KeIDmLPg8v-`}kl->UY(BhV40SUS}DpJFH)Hxm%5j zJ8td`68)~@Lt@7(;A}>-n0)37;I(pK2-6RG)B0W6n|WqN?Oki_Zh^hl@Y!yT^TPvf zZn{Kw4;%zBH!ywTef9Dg(}ldOX?HgV&DA=;oxAN)&tArtRtD!}x^6b_IohpXZ4FM( zTt}Vyl8!9>|C)^u6eEuQn^N4}yZram;K1S5d%`yUbso-0P#3Z34Rx^$!#Qp=L(sXm zxsra3AX=A1wR`yB_7A}5u#J#&iM;~omtTB+PDRwQD}nS|y|#G#kzc*dG_bh-?&(Uq zLG0&zu1%SB$of$T;FXHNvI;bwMT&q2?1pET7CpX=9 z;pFdz5f>gi9bOH8-0y35mNxC1-t3dnHE%H;5TASS?SGwKTD9F+1Q;)StQBrODKH&I9g5z*&-|*7y+KICl8}-{Y>s*fwT%Y zu|c-ld$*YVlasf{m$&|W-#mcTy0V5|{Lw*8MuV;0T|-~jFUZ(M=V2!u1rif$dETf& zDt(E4mfE25HyXO$$igV5xI`wuk187a!;34u;-z;@CwJ^@%LmD11BODTM8JX`!+HAH zF%sv}<)M2rqPQXa~+?TjR*_ZMdPMXdWQtGz}0%vI@KPb!vzX zE#SPE3s67cjb`vqpV&nbI5ji}{}r1psnLw0nk)vVh&o=8!HE}dAGIU+>KOn>SA4J# zfY%k-(KdewCQGJmm389vPLO=it0vPEs+;4&zkIAqtP&p}9P!lmKkn(L>voJ%^-oWE zKrgEw)-n=9ZN^-X>I7&_kh=Mew{hPdzl{7l109ZWRoy_HyrWp?h{TV6FEPwy{CWWF zgFz9bkAa%UOhhqYRx~#!TdJMuhKD&0sJOEyJ54dCdqo1Azf{NLs7>dvx*aCZPnDGY zq`T()sS+ORRHB(mI^;-iIKD}D$v!IjVZxnoo6ElR3rRh3k^x~;FgHb!@x4yEZTc=` zFmgj=2PK?u2^T_TMS$|A2z0Hxq($)sfqy{Lj7cQ=vZ4laPC}NUnW|y;*qNP%+db)Sj5GtZ zdSOHfiffY8jBIBiKM(lFRSyltimjL&2@zlECSEbimbItwC=;y#+ zyHI4^FRv*N?5)+!SJ{MC+Vi$C4HreCzh5os;3YtT&hzI z9hy4rsr-i^%q-muOYD|wV*!s1{+wg$$~)Ne0UeIkZqZO%%HWtPJeM49Wh~KP0{NPw zCJT82`?#WN_KY@%=P)EOzki13aQ5cE_NR!6=NYB9AHYU!wy&fgj>x{d)gwjKj!*3f zHvq8>Hd3eUYGuyrcFkgEE6q-V;=zS4d%+zTs$@67_V~ZLm#i8gx}TA~l|Rmkx&G~b zSYVD0-%Y&MYJw*ITuM#icCZ>6m-pVte6CsE$l*8$8g17iBX3l126K7UvYbF}iyo_1 z<+{(f$Z{+jrXGxnJnLz3f%h?1zPt4O@_=oemvN%OO|W1&hSwN2#Uo2W6rxM{tZS!b z_%CbT$OWb;D^srT#KF2y_?vY?pX%Q{vsd62NKK*Pe)WG&T4z%3)(kMF*`nnD~L|~4ttr9zYK~ zhg~z4wUNISbhmrvZGwD#{Hz_}ms&4j&@B--cozG=Bm+ijtUPamxtk|hR)XB#Z%izb zym+-c2DM)+0hoRa1tBryyB$ zSi}{Sd1Bsamzo+uCF@`0jp?cv2IEew8xsFAN(J#^-whV7t zFPJbROraZJPCEpU8qg&PhEZd2pAly?17}ygo9IW`HMKpfe0VucUIi!nzr z7^)2H92ZzMY%+rAV2n__1CUFAoPcMeQ2C-5T5CoM;wovm9s!w%S@-Ee=OLWqR6gI0ucIR@tbm^z_p?U!$lbqBT` zt4oXoEH02XmqMhRnlb?=OnFMr|FZOC(v_nmZI$b=Xkn*O*N_wG0ECO3!Xf%#V%7`z za@SRy#xC)6<*LWzs}1>{N{=h4(aQ#k2gpX%d06XAuqv4?X$p~79$&R5dIRI9c$DBN z@ng^$Wm)Ig&*)vTd)47VePBUNRR~_>YYC0PhQS?cY4EY}kdb zC5VusqcI&&$VqK60i}AwaSN)oBzyQBquO%7w9m684s;e#`I@0(0Qfono#d3HckHBSB&#s! zerKSGqGc-msO!f&69C>P#spMV>7IF6-aJwB@*Efi|4Q6p&Bizp*%8bgXio{TZZD-e za+sDN@(6b+U*EuRZfOc^SGYt@laFajocW{FXJWiYy)d&*Ygws1-6C-?q2ctD?pi&x zyq*xx7nQ~%z-x`vo!GEdg7(R5;o=1(jhHJRC%E9;a2Owi+U-drfleJQ>PRxaGX|VFPdQoG94@B znd_Crt}KygiApPF>?BwFsR>^+miD~>nko6Qj=*?XKz_eUtyg%Vh?s{S#Tz6n2p1u3 z3PhcWzqZ6#b)RH&_dxyr?LPR+)dDVtmRGuai%`9Y8QPsqqD9}7)+tuGurUk<2v=|< z2X`sJv!TM{VejO$)UXBAaMYMv3Ci&uUa}Ug8=f9nDR#85qZtj4ytEzH@IEOsoJH#W z$@+X4K%86UE>e}8eQ#m$Pm)^)$~MbaRnC7f+Cdw-J!ll<#l+du1ylktk*BoYPpLxY z1!M(GdhKvG#ag zBlRB9`rzA{y%`~L<3JclX>ckWy+S}A1_p-?z(cieX|cXD#Yg-!a~ zrEy^EHROCYR?j+-g6iYtoA=soT2C(~z-a9U`#0wHF|AkMcd3f?@q}+VV0O2WhiU{Q z;@iy6J}k+a#hjBW5Y)x{uecvx+*VpkpJB(nXMBr0t6)r3+t z<%`BY`jfN6tbR(=pF}HM;*r#o5jqFeiOVB&PGwyPHX{sr*B*x}dRz&V5^I41B7lt@ zMrWS2KL``o6={v;Beh*ZOD{kcIAe=_rsx-!`cv@LMa~27Y zF1?%RD80W`#1EQe-+Z1TZ6`(uDl^>>SZ5%b1cd2Uq;S8yGhu~5KxrcrkZ=mTj^3Z@ zC74(R9abP*P$>NTZ`e_as;{V-?P;G_**rJ2_bw;HU!}z4h95DYonpRB`52Yop8#UM zmV*(T|IY$Pre=bHCUlHfiCwIOqRi?aMs?Lt3Q;v|q7Y1b1!ynXG1F+v+n zZJIZqYQ*VZ1KBLIUcu8Vfae7DLqtC2@mlLcy7#r#oPLwN?cYcv+Q3^3S0ErHARr>n z2pM8Y8Wi-JR<6iQqJeruj5Kg7pE2J7rP2}2E4dxv0MYmrq_5!0v=2yTMzV1GOF>LZ?ZfUBuW1kX`b1mgFO zz4s?m^t1wiYu;Zo|I8tn@qtbcqvQ*aEopcVh?CnGsu0mc1?O+IdTHmf7-RxiT#f`o zUMIn2c`MiiW$f)jUvz-iXY4F|^UFuT^q+Vdb}&yYPRT;t#g*8HyhS(0?B=O$z2<4} zwtX2rIVzc{VfDELu>Ah(15W6@X^H4raY}S>;Ppf&=;fnbKs3lzOUaKUAp5b^wt9UY zr1a4f@b;p}i)*J3H^ByK+w(b}`ziett&7nCzLgWR&q%IV8;c9qYsjvo%jt`d#1SNd zn=E~+0B1C5b7FvM`}!_~TvB?gj8a@_96oPvd5^e@-4#Ry>=+vgir)!bJj3b^E_~*= znp+d*iQ#o<1u5S@X=*b#KVSJ~r2o}}p&5rQOE?obVas~;%!vAXLKq?~Un>+fxW~Y> z9|>;a8#E@oVL7>AoHk~{ekY6U4a+2Mek|to*HWC>enehtrqr>%=;+$VgfkU||6nLXSED1&g5EHr z@r=#Ct?kQAs(IeG5`Z$nQX-x*tv;b@s)A#$Gl(-`qY}j(tdkJQpdt!x6*|$Ok@JBw zaRAn^PY2(>hhrUq5=$lH4#xj)Ap&DxxUk6;D`4aA1|Lfy{J>iBl|4$%i1HN`zZo8hu=NO` zAEEuwJ}Q)LjSGkmuEIo3tBOY>Nh7_F1BPI~^R1`7P6|6{z8?G0Y z0JJDem&;9{9Z6jwUM*f(xJ?Bs>8zbE-!&94rd%gat!;OZnDghlFwhJ_Y_nIUO5cv9 z8-!;YFHNPpG3$=>n0Y{+}84#rL}7NS9&O8@L0!l_-t)1@v!lT8xUvd+-op; zy~+A0X$h)A`7m2Op5HFIqd8uTi4kXHz!$^B+ptre0EIRyPQM>=x2rG*97cOe2HI70 zELVBqv}!(!RzP1W5>&J$C94?AY794zkVu?f6dxfGmJkhm61f&S_WnJI6zjX}NxK6F z$r1p(jN9S+u(_PDV`7&u6L`Y$%D?7KAF(0V=e4fo(wulKo;X~8$9WT;RO25#pwEyB z^=I5_>nSg0WZ8DIVsX~zpeU+bW}?#jp^8hPNoFpqn%FHIW^4eigJ=T^PZerC#_d?- z6DVy7S@@_pvZ5!HQt01`G1RQ8h{v}fmNoW#*!~+OxH^BfNwJw4P&m$M@KlvTER62< zAMco9^}e7C>t$}V`OT9(i~|rA0F_oJJU2hwsaVlL6)F;iw*eFIlszz=Z+YkNK4+OF z9UWz^tvSsUs^(p3|1t#Q_;Pfzik`$sm1G}9GSA!`+PSWYo@<737Q;id^0?#hJ}$5U z9y3rO7ua(lR9w77NG`R4jC)jYi@7y(tt)KRP>S+0Vo|4?MfK`(kP&4AAYIi60=ox< zDc0YGr=1oa%V2(1)UeHTj7u~tmWL34q>>5xk=rBftv6jKM^!t8H6J459z2KEg(1pg zIxG{7hY=q{>S%Nuk$)#Lno5pCRUNAbVO_4nk)4CdT1lrI@VG@NHH|I6 zt&2Sb^v_BelR_cdgVgO9AR1^o9D;LA!y47TMd!+fyPdvl%0QnJ28-&UgCt|^)a!x4 z2fIqi--sYtiqTnMz*MI)ovH#J;2vLDi97<_Nj*^}q|Z}RDJ<%gZaLd zpxr0@N5B`!|AH%4MhhfbN4c%Iu^Em?QIW~qTO@yTiFAW%8jkXD8Ow^6lEZVP;e z(T{vlArRYj(+Lg&c+W)y{ox|Go7z2wov+84$AO%WO7HgwJL&pw1M9EFXRZ15=uJjm`9x zN>{f{;3jYz`26X~p6JE)kG8zYM*wZ8sE2k<|DaPr@Dn=b8qXPY&%-|W9p`H;3bW`b zAa&L6NbfI-td0*>XYg&R_hsj^IVX*6UL=#k%-9;=&W{S($>ui4#j@J`Tbf2mZ^aj!dH& z>mxtQ1Ot)}Y>&7M0t3TFRGr?W>~+A!u=wnC63$v}r``{wH-~fQi%~KXRXG~VI<;z5 zPd-?Q28GsOnok!UnT=Z^J`Go>K^j+HD7(%tK1Pvw*2co)IP+6{N2j0BYnNN1ssyWI zJX(eg;1P47&|(*$R3~sM*qAWuMiEQ#2%B$7p^0evH^0=Z=kll2Zv?6$;}CX7CmPZu zOXf>NzqUe!TW(YZ$BJxPB2#^@V+=hsR~Y<*64Z{>5`N-8qfs~t_Ffw1c`lN}Vhrh{ z7?>Av=wrmWQi2?WLSil+FY)hwa;|FjaPHVIAgx=~p%WO)>W)4LV>tv=v)`qIXX>AZ z^Io}Jq?DSNMj)*f0#xZ*9Mm@^tJ604r@ia=yl^%Hc>WXIRaq{Ie)pZ+;GCT;<~r#D zI+7~;hcWC|r+WnnqN)j_|HLQ7Z92`2HVBdw8rgAv%m^|t$Qq@y=Ew!q26yE!9q6(y zpj`=m3+ivaT0Go+pu5ZNbx@4J;Ys^8!>D_ihap(npDChrb9ws9L@OiV$s3z}L1)ua zulWyuo`?7YdZ>Wz1S}>HF}D1FprbDYKVvO~y;he`=& zUvL#Cxx%56H{GWZZcgnu;aEXD0TdqHnD=dh%|6HRfHS7PUh{w9{r~C+f>j$RtBw?> zy%hxvUi4;t$w<-f5jvKpRL@HFzF(i+vw>>k(s0o(>4UTI9|Sg+KTjPBd)eiO%VlzU z*)^f?Qlz!Uf1iE@j{Y8Vqjnz~gPrP11Ykz@o>3R96p&181a-DO2AWCzRG znWYYaGp<2ksrtVt-x9D2th{1{W5$&$yBpiTprVN3X%|xD@*suer0UA+dE1^arD$d2 z1LgaXSVv~E)PM9b*F-9l%i)`A&h^;4Ez6DT-Jm;P^ELn&%T+ z9WmLFf79`y#INJD46Vb(1Vr(^fQ zQPTRnQ%8#h$#=<+y5^Dz<@=?is5-fX%$Te(bQ4+4^-=ZI0DV<46<+$*&N49ru~G_+ z=4`yc^(yq+>F{99N;?KR)e2v{g9pu-BogX62sx#0;0>D!r!uPescu_Pd> zOv;9_3FWy%+E910S@|VXY5b2+>^x1Gqk5y$xq?&0&QqcojqYR;u_EM(g+I36RL3&O zP6m9E%)emBi0fSQJmC6}fEbfBLx#R)q=#K{evbJh>HD0zD`ixRehYiPaKi z9GbY0LzP(8`qfK~I>MJ&_>Q14wqfJuH78VjoMu3Rt1?a+ z)gs;7w4lrhF3|HSrluzYVTL$J8RG9nsK-E{ak9{cN?^{vd)EX-riSOepTDEU)e z*vA^en(W~oL4*3#3)SP`fFq2UWkfq6cWLa(#ET>VW?9-2MqafiBm@vTe>HiL~?c0&6Z$T+#KIDeCONYQ;^04r`2F~Qk71kqK{*q6=AIK~5z7;+B! zv~lIp7PDyO@TkC1lK(j}A4Ilu?HXQ{6*g!tA@=f_)a1*6Nt5did}+d#pj~WRjdT?p zJ1J+L4?`f(t9GcRQSKY%U)?U^VJAf6@lvZiVRk?Zw5;%$l%hloJSj%GL7LaE)5v+r z@~6hcxf$9h*o-{*PJY)7bxH@M7w8Vne8D%-$WcDN27{Hocl%i+gr9cvM|8Mgu-Q+y znmcPZ?YhJDAnfcAybF9GHU8Ol`=0Peh%DLpVe-I@y1RM_%RKmTtnRFP zwcdnXB%-3brJ@$X5JBWHy-0<*l=eH{m_=adcqv%Shgf7u0cARp2W>y%czo(^Es}?6 z6%XUDPML>To^S1n%iJ5lLUtlZThSx_B&8y;(F&RVSV+~vB4FXW8H3r?-s=?O1Wz~L zV_5ETpwN^p%7>!Ds`*e>D%PdymUtuMD(tI77~S<=*uIS+e|&TV$a$1`lCQZa&e!-H zp>?B@6N!|&NX%4T?;SjIX~tKLZvu{$zC528QV2RV>ZE3Ps9OebVn|BhW{$>IZj&lj ziY`y_@*LvhQ!S{v7;mN^r#h&vk{<%Y?PuSy8%d!fyAxblqG(|tL`>QeObdoyqizT4 z-mpOqrnqL2rdk4?>8Bg4$%c!KD_{@ZleBg(79AbJF_E9?o$`T9O=FeflV|c?J`x1c*zrb`ISmm&R}vU70Df7{U8XF} zbiDUzAf^*9%x+#4icZ&<+ItA{Ac1d3>(C{hB9YG1{K8c=#R9#<9TyX=(3njGu%ha$LvTRFVIptL5F6)sekvjJ^0h-5=<;sX zc!zK9vN`wEX})4${*o?ReaPKs+Ap0@%kPIeP-P z119f3jyw9de4cQ8zw1xJlLd-VEU=`f?9{ZH4s__m20BMd?kJ*unT~Jgf%p{hfQ{eN zstDskzYwPBP;ZnubL~{J_eH}L@f4`FM<5uV_slJQ}Vw3omd|!z1+|nFSMt#noR>QaGvSmLe?g3zw>V z+A3_ExkkpM8wlq}#b#S8;8cOh3FZ{*f(BB@3biwNn%_J_`E@05FTEmjQ_VojRG1c~ z;TAWq$4of(OlA>c{ulLg@1%hU64iWUDcy0jUyeB)^Fj)& zY=j+s&f&1YHgi(4gdU<5O$_;Si1nVovGYQ5Y_TvUgLhMLtn)ybTI;zobXuKytm$Wg zJ@xmo2G8M2<*A@5G#Y_l&Bi<&@jM( zc^>(jsVmLH3VkAk7Ve`#f(OLz#NRS1jEE*po7~-bkoLQK>dcLGhjhO~<#R=ZQ~}N? z!L5uLl>ag*s(-Eqx#V%cV6DLA=l_#(e3v*Fy%fbrlp_^>I?iurf8?F zNE(E!KV9`haKS-T>bAf1H#Z&RlXu0qup)0%6kAm;a*uIBQ6Uta-ALJRW~*)ok=UQZ z@})m|H3wk0SuGM!eve8eH1|R!Pi-R;9qL8HTXgq>7wu)sDIrFQ51@Q<`Im?=CRuV)J-=;jnS zgVJrG(wH6Q;)}vX0$4SIVbK5_`6IT`EGaWjK=T9`85h2PZ7Hucn#7syiTQ3&MwqZ#b9uM#8rh^$>+&T!Dkh26pvsJAT3 zNuX|hT~c3-_<;mvs4T{e2tk6>AK*I0U@!Sx4d&8ediXh8UqK17l5N2L7E838Je#z8 z@JoWEj3ol95hM!-0&kNJ1!omF&yj#75yI>PWpnZwBt~Rj?b!E6@9lI>K3PNW{BMB= zciA9{2mR}|O7E8v*brufo@_2mYiga@DCydVcNHWl+7=;I-)ygr>}?>o<8h3;1_Bs; z-vW!yjX+419S7}`Zxf(1;&Dqn^Mf~c`-|c~4%8mJ8uAF$Y^xGlKiei7;o&WU0& z7KOPTmfKUK{YxMv2E#&2y&R4lx`LB2<@X820feqx+b{y?^IKSk+Wqv{amQ=)6+dwr zB;MY7j{1n#69nMdc36JMTdz7aI@>}IoCl|UCxybjt50B_@_@O7Tm7V-x09^fUOlDH z@y0YuP646Yab(B$ggO6L4FEhv3^hO7$dl#deo)=i!i9fbzptv*A*>-d9@hwh?)#3m zwqdvT=XV-rKfq~B5RdlX&kTeWvzub*5VxyR-$#@~kI(n4O3-ZYcaAlUyNkv zxcsbR#R_HbF97k!z(r+=wxwG8YBFYa*xK#b!4YXFv!T^L*?Nk2PJhZ*qRPOdoKZm$ zkz|WKV))>vS_9W!(CdLa7+u*!iedFK4(v!9+b8weACBl_86)Yb4vi;4pUYv4aaV$2 zNrC6hXz}x0|1qLFxeO?g17-WWzU}20Wmf>&HFcs zP*{O(+9akCghImDV#MwnT*9rS#D<`cEjN0h*?>Xqrs>+EE3d;+N23GheXN?0z*UpZ zX7X9J3}}adH_2L7cNeP5fK^&Vo~r#5T2rB2DJ9v->R!*ZCxKoS(M5LR&{}m5fQvf^wY=d>!2-iOGn*31>hj z7XVK!vsDxk3ameEQ$2*OW9XR+!hm@kP@PTmYtly}TV6I{(bY(s5jF+=FA!&pJ;zqG zs$hY{6)t3)fqs3G6*pF5RnLjXtGy0eLuRj1STuog&i;H*z&jj5uHx9s&4D~Em7l$Q zqKMKMnHAYS5(%b;r@LxTMM5V~OVBh@0l>joHBmMp0Qz~3&BKgsW+9nmH$G)y>Wo7Q zto;c-*Y8{`bp+hSma3gXt?CQbAo&KYAJfddC*vs(|`q~&EAa(s;p4e(tm z_Pm_DzQ@^;6Qvu4N=-TnMYb06S7WcFSV=R8(2c64w)P;NdVmH4j?e#P zZIf=?mMh9hSbEy??Y!76$A2wn-gRI9n65TUB{+ys6&;E*R%JMZ8C<@{j6a^uDKQ7I z`RWXn6{5m$(N&Q)snI_!zYNTpVI5FZ8d>|tN`qr!BoU{I;t2@Cyda-nhiN_F4yCE!=E?qt@rBz>p5)A#+_HNSjA z&fv!pQ6m1wiY_{?@57YXT-< z5_l%9QQBFN9MW~;Zy$<@afiZkB*`-d^_Nz1NM#L8vu6sS1b?+fhDPIuYK#5t!L5%N zR<_2oe92K;FXu0*ws_7@eipWarUU!$Lx`(MZfXTe=0oOVwR0%j|CR*AR;^>PJz{^U zItw8U4r&lYNt&nt|G8Xm!0nk)Z@bE;gN<1P@o);Curk6mi1AsKmBbgwI2Dj|yd%@= zk+CxtCe>FY)yKld$juP48AzBvk!g{#^F0oMrIqnlc^Pms7a{j*+;q&DJ>b~H{fw-i zV^I?0AqS`VLP?hAwYDr0)8sY0s>iJt;A+%o9AqG4Zmq@x+F3a?j<|+?K$IVqq3qEE zEs>ibwq}&VXi8&ECjNSIf#zmZ>>ZAIc7}%&Ci$%5Yqn*=1e%+tC+f(}24y3eRTh4^ z*t9U&FV~nR=Y!@v_B6;)1gA%l1`jFnJ29ZHaM2EJ*sj<2q`+4y4-n#Qi|?C5YVs;f z47jil-L5AB9MdlKyDS&3q9qEw-wxzSW7-QEy~rKS9*wj&DJ#t)L4P!+b{XZPtMV>m zm5)DE2?R;tp9HH@=EP*)3jF7U!qUn*df_D31!(48LK=b@r*dA8i^{i4%>%#@NnI^% zg6ND9P7cQ+ISDUFN=H7+8hFQQm+Rqi_ZiLn%>`-!SuIsIYkvp{Fv%4LC%z&b5WkVp zO|>w*_8C?__i+2h-L>3wcDQC9%`?^K(*&H0B2oIcOIuM!yU0yeQzA~cDMnAiY)y1x zDZ?lgHthTp`>*~Ad1MD(-0Twp4m}eV_3Xv8XX7w)R7eSuoIgu%>Iid54o3=h`d*tX z+gr~8PLS7{e2h2Pewg}d#)@DLEwlh zJ{M#j4^0s1Xa%bo%X*d+A&)h~nmzT)#ndi<$ZQRuR??!dmBL{y@Va^t%pNGmeZ5Q@ zW}=H|g#j@yusRMG+FNGT&?jGQVGJ(ye>QS}Ctp6=?>vKP5;s-=&|jA%3Y`Okj(-Kq zbNV&&o%RShxuv3_{}~CxWS0oV2{+HSLvI2TK^oWKq0u-|F9V}CW|We2#WPNv)TSdi zRV?nc{JD*ehpmac4f|Fhx67XQJ(>_|G^&ycXxZ5qiOYv{7Uzi#kAnVKG*zR7@y@6K z?lNv@MvDWOUIvO;jf#`x3ju!ZO@;VS0!H6)RQ~<-Btt0VHmTWv62=cwkf>=RNyXl^ zK~V~=h5a(t>)bj!$(4=LX_Rr-^cO!pRw;q`1CxKiS%tJZcgeK&YC)FtfzE(gBRy>-BiTj1`=;TwPyBPFM4fgeG=yur<`Hf17#rV zqa@%1*K@mqTV;3@FsW81QH5^$?COIdbI+dfoPDt$;YLxDm?F}MDr5|>=%fvzUTCbQ zIpwCKdtr+iBx59TC{l!y(BE@VNb5+s`~F${G|g<1)IAL0z(hFW(mB~5UPt_WKlJEl z34h#+W1rw5F}w*&wOj;qIOd)nQ!QBjSn0$q>$){PcB$fcDdb993Txq++rEcv+x(j&53emmFO*^x%rRL@&e{-gwQh+ z)O+_jReY)+e#Yyay@cIg=oQ1vuoS1=N)-^~ci?jX(g}%~S_}~pJ5n`^n+6U!9??6} z@~VXvIVmU0P=4Eop(xaq0clZ*(ylLnJlJ#;d#|e`e!UX@zuqIj3mWDLXi3+fI+f)< zaeINb`DRZi9VNqXz zavGI53fV`7>M19G7<;v{rsA61w*Q=#OrNwA>1S}Lz2>cdG)zu|4>IlSYQiO>rx%Hn zXaQ4b@1VSPMg`h|1}|88X2ggmZ`{7ce^PmWljL+tY6SrVJz{OfEWng*yOPIn0u`ij zF@c<^NRCE4AuH6;Q2to0HDyv&QE{1T9Wz+z6p>>1Wn;mnJiVRw`L^2$e}=9UR;l+@ z(_wc&AY8At{~lEbF%(glc3G&b@lBdR#_=Tv2S%k3aEAaZSzfz>rK~(0pDLuW+r@5S z3rIU#k5U6z!_{1*+9@We19)i!aNXoX@2K^Q_@){#ePAN`C6M@A69q+x$Qlgyk%3Q5E5R+*t%xcL9_$|Goq0nR@G#plugYRev|->l$>vN^3+2z2@~BFQ#*MlSg>)` z`L+}ntJI8OA}1d4u*HIRG{#4j94G#2nV&hl%&44j|1mhaLW$)bDk$C<*_l z_0}hM)-ep%XVae$n(E53huT9}WgcU^yawm=RIU&VDUnfHGDKCiRdMbJGsp@8AWtD#OKL+1SP0S67*hlsHWw87z2DD3u|6zYF5rYmrhzbw`{_x zs<>il_#c-jdKj z$7)_|JQD3vF?;C`wB)Gl}5xKGnp` zzE(4oBC+w2xi<7MRjFPJH6I#*!=oc?d_|xabM8tK{v;NBHq?TK8@=qSRfsAXy{qkgJuj9!WG7a#KM_!M*cv=L zbgHIE?$cj2#YLjFt>4e*V(F|%ynbT!a4Ke)<7qg?LdVDE-8HDp)702}wXB2BW_32; zr)8JreS0}bGII7}yckI*%AVdJ*w`3}A@zJJ*ng)ecF)*sB-khfW~WV$%M06QI|~nj zpCt%)!_i2HNjnApkHsrPQUEYO)GG635{IUKPEx#Z+RZ}O`WPJZD;p?teSs-|#JWfH z0|nyQNJz-A_l`{)P7vr-MZwgP{-mFDOXglnfPrVXZVW`DQ!w1Mvxr{s;tXvlL zUbD4XrSUHg>2NteQNqYBsEbGyEt7?sR8=QG;ys71c}}R0C%qEq@y^C9RGS_?bm|k( z)YO^LUv0>Nc@L+VGXl}yb$=*ckvO8}3U>=C?tTIW9WRb9pX=J0*-%#O4wtBp!BA)R zg6rmK=TSzEAM|p+U7?(@lBMv;y;P&v-)UBC_+K@`y1Q zkZ2@{`O=h}rb$V#tWk*g2gV=$ONxHt{j*kclxkTbmOA8>!V}BN)Ll))rrDUFmc zplQLEK01}p`&1)qG32ZoedFOBD-#>X&8iL|*Q&E@3^#R5jcpgF53|Dk?129fq5OMtWM0 zn%BNRYJJJK+?cvmf>n;w%g=fb;CLgvZ3P584c|vBDswx9JYH^5xDZd76Q7txQ^aRN z@323GmxJ2A;PC5O|1?^@j7D(t@VT(b)nXD6H{ zQ)z@%9q-JZ|0nAQ6!^-L?p^nX>$*45@ZUfF^zK#g?%VI)2J%1o5L|)_`#$*T&A(s% z_}%}#eD~c?KQ5Pl?uKuEdK0{R_4eJn?|%IE;PrpLdHvJdS8s!#zR@RKe*gO0%i!|$ z>;IA2>ziHB9){yCSa)0a>Dn=nkslX0M`942)`;ODg04M?{Rz-0R?7%>s%{2=(BUYT z4=qys$Kwz*#{fs82HWl$1^rQ>e>EO=2zd=|>s0`jctp^DHwp`mO>N%~^2k57clAyl zad+Gvj^J7rB7=%dA$hrfm-~JMzqbl*WH9J5J@&_8>N65QMjU15M>F^<-rAs>Z;u1&Ot%;V-_<~L z*j8_nzgl^44~Q=ftG75-b(Dc^hh4|OC^k;pDzd%DxlY5v+OU>hGEfd|3w~(>yb#^i zqeZ*=*q=0Uf827=MqaD6B^Wq3nz<&(MdF+WnLcTMc`w^i+SAvg4W|CCtp$ECN^I3G zunt^{|9ZrU9lkxS%)x6MX13iP5!ke{miwX7i3*Uz4LKV$8x)kAa0AbicQR|GJIK?R zr(e*6T0j*>k3FbiRYgAcGCBME%X&X{ds)+qH%C#C^?vdA7=(9qdtdK)3c@RW$t3)q z-Jh?2eth@lzdqcUpV*fl0Fwj&00$IL;fdW!Ri--;V)osmq5ANf*api!eq6q$SzP2U zeKT5yWe`*%9F)ebe}-XNkwz9G5(2r(b1CR zcF{;eiS@Cy0wAPxHEoNA75C1$R_u-$@Z6}AE_Z(5X5V*K2wOh%^tpw(tEW!|$9Bfr9W=aH(_;x4Av^8F0_88A$W!K8E9)D@Oay4M z-xxf`C^>Cnq!rENTP#14u{4Lh#B!OX8bwZF<-E%5x`>r}?+drNl8y8ZQa`FQPkn3D z3Tm3?E?G|fsj7pF&}7`CX$6bWj-2;@l{TdzjhKvSPe#>_@`yCUnCKO%$sKQ@C8v&k ztEZ2|q}+<ihgjlZbXCSgxGMc@Ohi9hQ}TM5F+@a}mIFvbtjQP`Spb(yrf=3un$^ zY@fGEWzq``Pee@GbKhwKqXr|$r^a$rX;VYVXqt3PGX$F3T&8r(drO-I`+4qvo};W6 zJQyQZ4!GX{8CT9h;&i{!qFPDODHj(lp(XSQH;nNlw?egL#s2Agr3Zi$?zN+yTF2?t zhz(5&Q0!yz2ZfezH2R`-Xf4rs>BUHaT zbEZjAt131h6a`OZ=QaQgua#q_!y=4a(r`jCuXi{iJ+!oQOSPVA#Dwail1Eyhm|3=V zW@1}oam?zhpOB|gXqs;iRBEI)gNg1G z5!>OAWQGiZ+UWtzG6Je)H=WgM5N!(&i2J%8%vr=9L)s#bX?o3WmAJ zOWCXGnaknj$*Nl2E7OwMn!}4UF@~0{6=luJJ7!i6a+bbp^$Dzhl9o^7Rc@JSys71v zuJ6|B?a8L3Uec*PsaKQDrrfZ?l6dOoC-fe@q!@&1T2{O zsdiF)EOkV#OC)o7X0udXmmN4u)n)pw)%mrIvdXCRS?(CYoKMwFEU8vgb(M|M zS{)}uvIaESlq;<*agzF#U(IScGVxYxXlbVIlsD!wbzLf+rRIi=B0Hln`18eYe)F6E z2T00t@wcrx0ptvS@c;k-c$`&|%Mrvd2t)5FW(NuIr(_7dd8z%;`tZQ!Qh+1%eD4OcClc%l&vHMO=iS-?Y znJVRTFO+h|HfJF%5{3F8sXgREq>}Mq*9vyxKq(6{Y6YbMQ~s1PeYyGIa=P79EzGd$ z%Oxen!ilbKRqJM8yZgE(iXQwUWFB(vha~K182hIP*W1Y2NT`@)yS|_6x_&?Cfye*= Q000010F4Q^m`4HN8>KXn`v3p{ diff --git a/data/sample_data.txt b/data/sample_data.txt index 5c28a47b3..0010a718a 100644 --- a/data/sample_data.txt +++ b/data/sample_data.txt @@ -1,8 +1,8 @@ -{"name": "Peninsula Family Service", "description": "Peninsula Family Service strengthens the community by providing children, families, and older adults the support and tools to realize their full potential and lead healthy, stable lives.", "locations": [{"name": "Fair Oaks Adult Activity Center", "latitude":37.477227, "longitude":-122.213221, "contacts_attributes": [{"name": "Susan Houston", "title": "Director of Older Adult Services"}, {"name": " Christina Gonzalez", "title": "Center Director"} ], "description": "A walk-in center for older adults that provides social services, wellness, recreational, educational and creative activities including arts and crafts, computer classes and gardening classes. Coffee and healthy breakfasts are available daily. A hot lunch is served Tuesday-Friday for persons age 60 or over and spouse. Provides case management (including in-home assessments) and bilingual information and referral about community services to persons age 60 or over on questions of housing, employment, household help, recreation and social activities, home delivered meals, health and counseling services and services to shut-ins. Health insurance and legal counseling is available by appointment. Lectures on a variety of health and fitness topics are held monthly in both English and Spanish. Provides a variety of physical fitness opportunities, including a garden club, yoga, tai chi, soul line dance and aerobics classes geared toward older adults. Also provides free monthly blood pressure screenings, quarterly blood glucose monitoring and health screenings by a visiting nurse. Offers a Brown Bag Program in which low-income seniors can receive a bag of groceries each week for a membership fee of $10 a year. Offers Spanish lessons. Formerly known as Peninsula Family Service, Fair Oaks Intergenerational Center. Formerly known as the Fair Oaks Senior Center. Formerly known as Family Service Agency of San Mateo County, Fair Oaks Intergenerational Center.", "short_desc": "A multipurpose senior citizens' center serving the Redwood City area.", "address_attributes": {"street_1": "2600 Middlefield Road", "city": "Redwood City", "state": "CA", "postal_code": "94063", "country_code": "US"}, "mail_address_attributes": {"attention": "Fair Oaks Intergenerational Center", "street_1": "2600 Middlefield Road", "city": "Redwood City", "state": "CA", "postal_code": "94063", "country_code": "US"}, "transportation": "SAMTRANS stops in front.", "accessibility": ["ramp", "restroom", "disabled_parking", "wheelchair"], "languages": ["Tagalog", "Spanish"], "emails": ["cgonzalez@peninsulafamilyservice.org"], "phones_attributes": [{"number": "650 780-7525", "number_type": "voice"}, {"number": "650 701-0856", "number_type": "fax"} ], "urls": ["http://www.peninsulafamilyservice.org"], "services_attributes": [{"status": "active", "name": "Fair Oaks Adult Activity Center", "description": "A walk-in center for older adults that provides social services, wellness, recreational, educational and creative activities including arts and crafts, computer classes and gardening classes.", "audience": "Older adults age 55 or over, ethnic minorities and low-income persons", "eligibility": "Age 55 or over for most programs, age 60 or over for lunch program", "fees": "$2.50 suggested donation for lunch for age 60 or over, donations for other services appreciated. Cash and checks accepted.", "how_to_apply": "Walk in or apply by phone.", "service_areas": ["Colma"], "keywords": ["ADULT PROTECTION AND CARE SERVICES", "Meal Sites/Home-delivered Mea", "COMMUNITY SERVICES", "Group Support", "Information and Referral", "EDUCATION SERVICES", "English Language", "RECREATION/LEISURE SERVICES", "Arts and Crafts", "Sports/Games/Exercise", "Brown Bag Food Programs", "Congregate Meals/Nutrition Sites", "Senior Centers", "Older Adults"], "wait": "No wait.", "funding_sources": ["City", "County", "Donations", "Fees", "Fundraising"] } ] }, {"name": "Second Career Employment Program", "latitude":37.5639843, "longitude":-122.3257992, "contacts_attributes": [{"name": "Brenda Brown", "title": "Director, Second Career Services"} ], "description": "Provides training and job placement to eligible people age 55 or over who meet certain income qualifications. An income of 125% of poverty level or less is required for subsidized employment and training. (No income requirements for job matchup program.) If a person seems likely to be qualified after a preliminary phone call or visit, he or she must complete an application at this office. Staff will locate appropriate placements for applicants, provide orientation and on-the-job training and assist with finding a job outside the program. Any county resident, regardless of income, age 55 or over has access to the program, job developers and the job bank. Also provides referrals to classroom training. Formerly known as Family Service Agency of San Mateo County, Senior Employment Services.", "short_desc": "Provides training and job placement to eligible persons age 55 or over. All persons age 55 or over have access to information in the program's job bank.", "address_attributes": {"street_1": "24 Second Avenue", "city": "San Mateo", "state": "CA", "postal_code": "94401", "country_code": "US"}, "mail_address_attributes": {"attention": "PFS Second Career Services", "street_1": "24 Second Avenue", "city": "San Mateo", "state": "CA", "postal_code": "94401", "country_code": "US"}, "transportation": "SAMTRANS stops within 1 block, CALTRAIN stops within 6 blocks.", "accessibility": ["wheelchair"], "languages": ["Chinese (Mandarin)", "Tagalog", "Italian", "Spanish"], "emails": ["bbrown@peninsulafamilyservice.org"], "phones_attributes": [{"number": "650 403-4300", "extension": "4385", "number_type": "voice"}, {"number": "650 403-4302", "number_type": "fax"} ], "urls": ["http://www.peninsulafamilyservice.org"], "services_attributes": [{"status": "active", "name": "Second Career Employment Program", "description": "Provides training and job placement to eligible people age 55 or over who meet certain income qualifications.", "audience": "Residents of San Mateo County age 55 or over", "eligibility": "Age 55 or over, county resident and willing and able to work. Income requirements vary according to program", "fees": "None. Donations requested of clients who can afford it.", "how_to_apply": "Apply by phone for an appointment.", "service_areas": ["San Mateo County"], "keywords": ["EMPLOYMENT/TRAINING SERVICES", "Job Development", "Job Information/Placement/Referral", "Job Training", "Job Training Formats", "Job Search/Placement", "Older Adults"], "wait": "Varies.", "funding_sources": ["County", "Federal", "State"] } ] }, {"name": "Senior Peer Counseling", "latitude":37.5639843, "longitude":-122.3257992, "contacts_attributes": [{"name": "Howard Lader, LCSW", "title": "Manager, Senior Peer Counseling"} ], "description": "Offers supportive counseling services to San Mateo County residents age 55 or over. Volunteer counselors are selected and professionally trained to help their peers face the challenges and concerns of growing older. Training provides topics that include understanding depression, cultural competence, sexuality, community resources, and other subjects that are relevant to working with older adults. After completion of training, weekly supervision groups are provided for the volunteer senior peer counselors, as well as quarterly in-service training seminars. Peer counseling services are provided in English, Spanish, Chinese (Cantonese and Mandarin), Tagalog, and to the lesbian, gay, bisexual, transgender older adult community. Formerly known as Family Service Agency of San Mateo County, Senior Peer Counseling.", "short_desc": "Offers supportive counseling services to older persons.", "address_attributes": {"street_1": "24 Second Avenue", "city": "San Mateo", "state": "CA", "postal_code": "94403", "country_code": "US"}, "mail_address_attributes": {"attention": "PFS Senior Peer Counseling", "street_1": "24 Second Avenue", "city": "San Mateo", "state": "CA", "postal_code": "94403", "country_code": "US"}, "transportation": "Service is provided in person's home or at a mutually agreed upon location.", "accessibility": [], "languages": ["Chinese (Cantonese)", "Chinese (Mandarin)", "Tagalog", "Spanish"], "emails": null, "phones_attributes": [{"number": "650 403-4300", "department": "English", "number_type": "voice"}, {"number": "650 403-4303", "number_type": "fax"} ], "urls": null, "services_attributes": [{"status": "active", "name": "Senior Peer Counseling", "description": "Offers supportive counseling services to San Mateo County residents age 55 or over.", "audience": "Older adults age 55 or over who can benefit from counseling", "eligibility": "Resident of San Mateo County age 55 or over", "fees": "None.", "how_to_apply": "Phone for information (403-4300 Ext. 4322).", "service_areas": ["San Mateo County"], "keywords": ["Geriatric Counseling", "Older Adults", "Gay, Lesbian, Bisexual, Transgender Individuals", "Mentoring Programs"], "wait": "Varies.", "funding_sources": ["County", "Donations", "Grants"] } ] }, {"name": "Family Visitation Center", "latitude":37.5639843, "longitude":-122.3257992, "contacts_attributes": [{"name": "Kimberly Pesavento", "title": "Director of Visitation"} ], "description": "Provides supervised visitation services and a neutral site for parents to carry out supervised exchanges of children in a safe manner. Therapeutic visitation and other counseling services available. Kids in the Middle is an education class for separating or divorcing parents. The goal is to enable parents to focus on their children's needs while the family is going through separation, divorce or other transition. The class explores the psychological aspects of divorce and its impact on children, builds effective communication techniques and points out areas in which outside help may be indicated. The fee is $50 for working parents, $15 for unemployed people. Classes are scheduled on Saturdays and Sundays and held at various sites throughout the county. Call 650-403-4300 ext. 4500 to register. Formerly known as Family Service Agency of San Mateo County, Family Visitation Center.", "short_desc": "Provides supervised visitation services and a neutral site for parents in extremely hostile divorces to carry out supervised exchanges of children.", "address_attributes": {"street_1": "24 Second Avenue", "city": "San Mateo", "state": "CA", "postal_code": "94401", "country_code": "US"}, "mail_address_attributes": {"attention": "PFS Family Visitation Center", "street_1": "24 Second Avenue", "city": "San Mateo", "state": "CA", "postal_code": "94401", "country_code": "US"}, "transportation": "SAMTRANS stops within 1 block, CALTRAIN stops within 4 blocks.", "accessibility": ["wheelchair"], "languages": ["Spanish"], "emails": ["kpesavento@peninsulafamilyservice.org"], "phones_attributes": [{"number": "650 403-4300", "extension": "4500", "number_type": "voice"}, {"number": "650 403-4303", "number_type": "fax"} ], "urls": ["http://www.peninsulafamilyservice.org"], "services_attributes": [{"status": "active", "name": "Family Visitation Center", "description": "Provides supervised visitation services and a neutral site for parents to carry out supervised exchanges of children in a safe manner. Provides counseling for child abuse prevention and domestic violence.", "audience": "Parents, children, families with problems of custody disputes, domestic violence or substance abuse, families going through a separation or divorce", "eligibility": "None", "fees": "Vary according to income ($5-$90). Cash, checks and credit cards accepted.", "how_to_apply": "Apply by phone.", "service_areas": ["San Mateo County"], "keywords": ["INDIVIDUAL AND FAMILY DEVELOPMENT SERVICES", "Growth and Adjustment", "LEGAL AND CRIMINAL JUSTICE SERVICES", "Mediation", "Parental Visitation Monitoring", "Divorce Counseling", "Youth", "Abuse Prevention", "Child Abuse", "Domestic Violence"], "wait": "No wait.", "funding_sources": ["County", "Donations", "Grants"] } ] }, {"name": "Economic Self - Sufficiency Program", "latitude":37.5639843, "longitude":-122.3257992, "contacts_attributes": [{"name": "Joe Bloom", "title": "Financial Empowerment Programs Program Director"} ], "description": "Provides fixed 8% short term loans to eligible applicants for the purchase of a reliable, used autmobile. Loans are up to $6,000 over 2 1/2 years (30 months). Funds must go towards the entire purchase of the automobile. Peninsula Family Service originates loans and collaborates with commercial partner banks to service the loans, helping clients build credit histories. Formerly known as Family Service Agency of San Mateo County, Ways to Work Family Loan Program.", "short_desc": "Makes small loans to working families.", "address_attributes": {"street_1": "24 Second Avenue", "city": "San Mateo", "state": "CA", "postal_code": "94401", "country_code": "US"}, "mail_address_attributes": {"attention": "Economic Self - Sufficiency Program", "street_1": "24 Second Avenue", "city": "San Mateo", "state": "CA", "postal_code": "94401", "country_code": "US"}, "transportation": "SAMTRANS stops within 1 block. CALTRAIN stops within 6 blocks.", "accessibility": ["wheelchair"], "languages": ["Hindi", "Spanish"], "emails": ["waystowork@peninsulafamilyservice.org"], "phones_attributes": [{"number": "650 403-4300", "extension": "4100", "number_type": "voice"}, {"number": "650 403-4303", "number_type": "fax"} ], "urls": ["http://www.peninsulafamilyservice.org"], "services_attributes": [{"status": "active", "name": "Economic Self-Sufficiency Program", "description": "Provides fixed 8% short term loans to eligible applicants for the purchase of a reliable, used autmobile. Loans are up to $6,000 over 2 1/2 years (30 months). Funds must go towards the entire purchase of the automobile. Peninsula Family Service originates loans and collaborates with commercial partner banks to service the loans, helping clients build credit histories. Formerly known as Family Service Agency of San Mateo County, Ways to Work Family Loan Program.", "audience": "Low-income working families with children transitioning from welfare to work and poor or who do not have access to conventional credit", "eligibility": "Eligibility: Low-income family with legal custody of a minor child or an involved parent of a dependent minor child. Must reside and/or work in San Mateo County. Must be working and have verifiable income and ability to pay off loan. No bankruptcies in the past two years and unable to qualify for other funding sources. Loans approved by loan committee.", "fees": "$60 application fee. Cash or checks accepted.", "how_to_apply": "Phone for information.", "service_areas": ["San Mateo County"], "keywords": ["COMMUNITY SERVICES", "Speakers", "Automobile Loans"], "wait": null, "funding_sources": ["County", "Grants", "State"] } ] } ]} -{"name": "Peninsula Volunteers", "description": "Peninsula Volunteers, Inc. (PVI), is a visionary service organization that raises funds to provide seniors with over $5 million annually in services designed to enhance and enrich their lives.", "locations": [{"name": "Little House", "latitude":37.4480204, "longitude":-122.1805905, "contacts_attributes": [{"name": "Peter Olson", "title": "Little House Director"}, {"name": " Bart Charlow", "title": "Executive Director, Peninsula Volunteers"} ], "description": "A multipurpose center offering a wide variety of recreational, education and cultural activities. Lifelong learning courses cover topics such as music, art, languages, etc., are hosted at this location. Little House offers a large variety of classes including arts and crafts, jewelry, languages, current events, lapidary, woodwork, painting, and fitness courses (yoga, strength straining, tai chi). There are monthly art and cultural lectures, movie showings, and a computer center. Recreation activities include mah jong, pinochle, ballroom dancing, bridge, trips and tours. Partners with the Sequoia Adult Education Program. The Alzheimer's Cafe, open the third Tuesday of every month from 2:00 - 4:00 pm, is a place that brings together people liviing with dementia, their families, and their caregivers. Free and no registration is needed. The Little House Community Service Desk offers information and referrals regarding social service issues, such as housing, food, transportation, health insurance counseling, and estate planning. Massage, podiatry, and acupuncture are available by appointment. Lunch is served Monday-Friday, 11:30 am-1:00 pm. Prices vary according to selection.", "short_desc": "A multipurpose senior citizens' center.", "address_attributes": {"street_1": "800 Middle Avenue", "city": "Menlo Park", "state": "CA", "postal_code": "94025-9881", "country_code": "US"}, "mail_address_attributes": {"attention": "Little House", "street_1": "800 Middle Avenue", "city": "Menlo Park", "state": "CA", "postal_code": "94025-9881", "country_code": "US"}, "transportation": "SAMTRANS stops within 3 blocks, RediWheels and Menlo Park Shuttle stop at door.", "accessibility": ["disabled_parking", "wheelchair"], "languages": ["Tagalog", "Spanish"], "emails": ["polson@peninsulavolunteers.org"], "phones_attributes": [{"number": "650 326-2025", "number_type": "voice"}, {"number": "650 326-9547", "number_type": "fax"} ], "urls": ["http://www.penvol.org/littlehouse"], "services_attributes": [{"status": "active", "name": "Little House Recreational Activities", "description": "A multipurpose center offering a wide variety of recreational, education and cultural activities.", "audience": "Any age", "eligibility": "None", "fees": "$55 per year membership dues. Classes have fees. Discounts are available for members. Cash, checks and credit cards accepted.", "how_to_apply": "Walk in or apply by phone for membership application.", "service_areas": ["San Mateo County"], "keywords": ["ADULT PROTECTION AND CARE SERVICES", "In-Home Supportive", "Meal Sites/Home-delivered Meals", "COMMUNITY SERVICES", "Group Support", "Information and Referral", "EDUCATION SERVICES", "Adult", "HEALTH SERVICES", "Education/Information", "Family Support", "Individual/Group Counseling", "Screening/Immunization", "RECREATION/LEISURE SERVICES", "Sports/Games/Exercise", "Community Adult Schools", "Senior Centers", "Older Adults"], "wait": "No wait.", "funding_sources": ["Fees", "Fundraising", "Grants", "Membership dues"] } ] }, {"name": "Rosener House Adult Day Services", "latitude":37.4441785, "longitude":-122.1830931, "contacts_attributes": [{"name": "Bart Charlow", "title": "Executive Director, Peninsula Volunteers"}, {"name": " Barbara Kalt", "title": "Director"} ], "description": "Rosener House is a day center for older adults who may be unable to live independently but do not require 24-hour nursing care, may be isolated and in need of a planned activity program, may need assistance with activities of daily living or are living in a family situation where the caregiver needs respite from giving full-time care. Assists elderly persons to continue to live with family or alone rather than moving to a skilled nursing facility. Activities are scheduled Monday-Friday, 10 am-2:30 pm, and participants may come two to five days per week. The facility is open from 8 am to 5:30 pm for participants who need to remain all day. Small group late afternoon activities are held from 3-5:30 pm. The program provides a noon meal including special diets as required. Services offered include social and therapeutic recreational activities, individual and family counseling and occupational, physical and speech therapy. A registered nurse is available daily. The Dementia and Alzheimer's Services Program provides specialized activities in a supportive environment for participants with Alzheimer's disease and other dementias. Holds a weekly support group for caregivers. An early memory loss class for independent adults, \"Minds in Motion\" meets weekly at Rosener House on Wednesday mornings. Call for more information.", "short_desc": "A day center for adults age 50 or over.", "address_attributes": {"street_1": "500 Arbor Road", "city": "Menlo Park", "state": "CA", "postal_code": "94025", "country_code": "US"}, "mail_address_attributes": {"attention": "Rosener House", "street_1": "500 Arbor Road", "city": "Menlo Park", "state": "CA", "postal_code": "94025", "country_code": "US"}, "transportation": "Transportation can be arranged via Redi-Wheels or Outreach.", "accessibility": ["ramp", "restroom", "disabled_parking", "wheelchair"], "languages": ["Spanish", "Tagalog", "Vietnamese"], "emails": ["bkalt@peninsulavolunteers.org", "fmarchick@peninsulavolunteers.org"], "phones_attributes": [{"number": "650 322-0126", "number_type": "voice"}, {"number": "650 322-4067", "number_type": "fax"} ], "urls": ["http://www.penvol.org/rosenerhouse"], "services_attributes": [{"status": "active", "name": "Rosener House Adult Day Services", "description": "Rosener House is a day center for older adults who may be unable to live independently but do not require 24-hour nursing care, may be isolated and in need of a planned activity program, may need assistance with activities of daily living or are living in a family situation where the caregiver needs respite from giving full-time care. Assists elderly persons to continue to live with family or alone rather than moving to a skilled nursing facility. Activities are scheduled Monday-Friday, 10 am-2:30 pm, and participants may come two to five days per week. The facility is open from 8 am to 5:30 pm for participants who need to remain all day. Small group late afternoon activities are held from 3-5:30 pm. The program provides a noon meal including special diets as required. Services offered include social and therapeutic recreational activities, individual and family counseling and occupational, physical and speech therapy. A registered nurse is available daily.", "audience": "Older adults who have memory or sensory loss, mobility limitations and may be lonely and in need of socialization", "eligibility": "Age 18 or over", "fees": "$85 per day. Vary according to income for those unable to pay full fee. Cash, checks, credit cards, private insurance and vouchers accepted.", "how_to_apply": "Apply by phone or be referred by a doctor, social worker or other professional. All prospective participants are interviewed individually before starting the program. A recent physical examination is required, including a TB test.", "service_areas": ["Belmont", "Burlingame", "East Palo Alto"], "keywords": ["ADULT PROTECTION AND CARE SERVICES", "Adult Day Health Care", "Dementia Management", "Adult Day Programs", "Older Adults"], "wait": "No wait.", "funding_sources": ["Donations", "Fees", "Grants"] } ] }, {"name": "Meals on Wheels - South County", "latitude":37.4480204, "longitude":-122.1805905, "contacts_attributes": [{"name": "Marilyn Baker-Venturini", "title": "Director"}, {"name": " Graciela Hernandez", "title": "Assistant Manager"}, {"name": " Julie Avelino", "title": "Assessment Specialist"} ], "description": "Delivers a hot meal to the home of persons age 60 or over who are primarily homebound and unable to prepare their own meals, and have no one to prepare meals. Also, delivers a hot meal to the home of disabled individuals ages 18-59. Meals are delivered between 9 am-1:30 pm, Monday-Friday. Special diets are accommodated: low fat, low sodium, and low sugar.", "short_desc": "Will deliver a hot meal to the home of persons age 60 or over who are homebound and unable to prepare their own meals. Can provide special diets.", "address_attributes": {"street_1": "800 Middle Avenue", "city": "Menlo Park", "state": "CA", "postal_code": "94025-9881", "country_code": "US"}, "mail_address_attributes": {"attention": "Meals on Wheels - South County", "street_1": "800 Middle Avenue", "city": "Menlo Park", "state": "CA", "postal_code": "94025-9881", "country_code": "US"}, "transportation": "Not necessary for service.", "accessibility": null, "languages": ["Spanish"], "emails": ["mbaker-venturini@peninsulavolunteers.org"], "phones_attributes": [{"number": "650 323-2022", "number_type": "voice"}, {"number": "650 326-9547", "number_type": "fax"} ], "urls": ["http://www.peninsulavolunteers.org"], "services_attributes": [{"status": "active", "name": "Meals on Wheels - South County", "description": "Delivers a hot meal to the home of persons age 60 or over who are primarily homebound and unable to prepare their own meals, and have no one to prepare meals. Also, delivers a hot meal to the home of disabled individuals ages 18-59. Meals are delivered between 9 am-1:30 pm, Monday-Friday. Special diets are accommodated: low fat, low sodium, and low sugar.", "audience": "Senior citizens age 60 or over, disabled individuals age 18-59", "eligibility": "Homebound person unable to cook or shop", "fees": "Suggested donation of $4.25 per meal for seniors 60 or over. Mandatory charge of $2 per meal for disabled individuals ages 18-59.", "how_to_apply": "Apply by phone.", "service_areas": ["Belmont", "East Palo Alto"], "keywords": ["ADULT PROTECTION AND CARE SERVICES", "Meal Sites/Home-delivered Mea", "HEALTH SERVICES", "Nutrition", "Home Delivered Meals", "Older Adults", "Disabilities Issues"], "wait": "No wait.", "funding_sources": ["County", "Donations"] } ] } ]} -{"name": "Redwood City Public Library", "description": "The Redwood City Public Library inspires learning through innovative and visionary programming and services—literacy programs, support for school success, access to technology, safe, inviting spaces for youth and families, and gathering places that connect the members of the community with a love of reading and learning.", "locations": [{"name": "Fair Oaks Branch", "latitude":37.478502, "longitude":-122.2141428, "contacts_attributes": [{"name": "Dave Genesy", "title": "Library Director"}, {"name": " Maria Kramer", "title": "Library Divisions Manager"} ], "description": "Provides general reading material, including bilingual, multi-cultural books, CDs and cassettes, bilingual and Spanish language reference services. School, class and other group visits may be arranged by appointment. The library is a member of the Peninsula Library System.", "short_desc": "Provides general reading materials and reference services.", "address_attributes": {"street_1": "2510 Middlefield Road", "city": "Redwood City", "state": "CA", "postal_code": "94063", "country_code": "US"}, "mail_address_attributes": {"attention": "Fair Oaks Branch", "street_1": "2510 Middlefield Road", "city": "Redwood City", "state": "CA", "postal_code": "94063", "country_code": "US"}, "transportation": "SAMTRANS stops in front.", "accessibility": ["ramp", "restroom", "wheelchair"], "languages": ["Spanish"], "emails": null, "phones_attributes": [{"number": "650 780-7261", "number_type": "voice"}, {"number": "650 569-3371", "number_type": "fax"} ], "urls": null, "services_attributes": [{"status": "active", "name": "Fair Oaks Branch", "description": "Provides general reading material, including bilingual, multi-cultural books, CDs and cassettes, bilingual and Spanish language reference services. School, class and other group visits may be arranged by appointment. The library is a member of the Peninsula Library System.", "audience": "Ethnic minorities, especially Spanish speaking", "eligibility": "Resident of California to obtain a library card", "fees": "None.", "how_to_apply": "Walk in. Proof of residency in California required to receive a library card.", "service_areas": ["San Mateo County"], "keywords": ["EDUCATION SERVICES", "Library", "Libraries", "Public Libraries"], "wait": "No wait.", "funding_sources": ["City", "County"] } ] }, {"name": "Main Library", "latitude":37.4838423, "longitude":-122.2273954, "contacts_attributes": [{"name": "Dave Genesy", "title": "Library Director"}, {"name": " Maria Kramer", "title": "Library Division Manager"} ], "description": "Provides general reading and media materials, literacy and homework assistance, and programs for all ages. Provides public computers, wireless connectivity, a children's room, teen center, and a local history collection. The library is a member of the Peninsula Library System. The Fair Oaks Branch (650-780-7261) is located at 2510 Middlefield Road and is open Monday-Thursday, 10-7; Friday, 10-5. The Schaberg Branch (650-780-7010) is located at 2140 Euclid Avenue and is open Tuesday-Thursday, 1-6; Saturday, 10-3. The Redwood Shores Branch (650-780-5740) is located at 399 Marine Parkway and is open Monday-Thursday, 10-8; Saturday, 10-5; Sunday 12-5.", "short_desc": "Provides general reference and reading materials to adults, teenagers and children.", "address_attributes": {"street_1": "1044 Middlefield Road", "city": "Redwood City", "state": "CA", "postal_code": "94063", "country_code": "US"}, "mail_address_attributes": {"attention": "Main Library", "street_1": "1044 Middlefield Road", "city": "Redwood City", "state": "CA", "postal_code": "94063", "country_code": "US"}, "transportation": "SAMTRANS stops within 1 block; CALTRAIN stops within 1 block.", "accessibility": ["elevator", "tape_braille", "ramp", "restroom", "disabled_parking", "wheelchair"], "languages": ["Spanish"], "emails": ["rclinfo@redwoodcity.org"], "phones_attributes": [{"number": "650 780-7018", "department": "Circulation", "number_type": "voice"}, {"number": "650 780-7069", "number_type": "fax"} ], "urls": ["http://www.redwoodcity.org/library"], "services_attributes": [{"status": "active", "name": "Main Library", "description": "Provides general reading and media materials, literacy and homework assistance, and programs for all ages. Provides public computers, wireless connectivity, a children's room, teen center, and a local history collection.", "audience": null, "eligibility": "Resident of California to obtain a card", "fees": "None.", "how_to_apply": "Walk in. Proof of California residency to receive a library card.", "service_areas": ["San Mateo County"], "keywords": ["EDUCATION SERVICES", "Library", "Libraries", "Public Libraries"], "wait": "No wait.", "funding_sources": ["City"] } ] }, {"name": "Schaberg Branch", "latitude":37.466553, "longitude":-122.2430898, "contacts_attributes": [{"name": "Dave Genesy", "title": "Library Director"}, {"name": " Elizabeth Meeks", "title": "Branch Manager"} ], "description": "Provides general reading materials, including large-type books, DVD's and CDs, books on CD and some Spanish language materials to children. Offers children's programs and a Summer Reading Club. Participates in the Peninsula Library System.", "short_desc": "Provides general reading materials and reference services.", "address_attributes": {"street_1": "2140 Euclid Avenue.", "city": "Redwood City", "state": "CA", "postal_code": "94061", "country_code": "US"}, "mail_address_attributes": {"attention": "Schaberg Branch", "street_1": "2140 Euclid Avenue", "city": "Redwood City", "state": "CA", "postal_code": "94061", "country_code": "US"}, "transportation": "SAMTRANS stops within 1 block.", "accessibility": ["ramp"], "languages": null, "emails": null, "phones_attributes": [{"number": "650 780-7010", "number_type": "voice"}, {"number": "650 365-3738", "number_type": "fax"} ], "urls": null, "services_attributes": [{"status": "active", "name": "Schaberg Branch", "description": "Provides general reading materials, including large-type books, DVD's and CDs, books on CD and some Spanish language materials to children. Offers children's programs and a Summer Reading Club. Participates in the Peninsula Library System.", "audience": null, "eligibility": "Resident of California to obtain a library card for borrowing materials", "fees": "None.", "how_to_apply": "Walk in. Proof of California residency required to receive a library card.", "service_areas": ["San Mateo County"], "keywords": ["EDUCATION SERVICES", "Library", "Libraries", "Public Libraries"], "wait": "No wait.", "funding_sources": ["City"] } ] }, {"name": "Project Read", "latitude":37.4838423, "longitude":-122.2273954, "contacts_attributes": [{"name": "Kathy Endaya", "title": "Director"} ], "description": "Offers an intergenerational literacy program for youth and English-speaking adults seeking to improver literacy skills. Adult services include: adult one-to-one tutoring to improve basic skills in reading, writing and critical thinking; Families for Literacy (FFL), a home-based family literacy program for parents who want to be able to read to their young children; and small group/English as a Second Language (ESL). Youth services include: Youth Tutoring, Families in Partnership (FIP); Teen-to-Elementary Student Tutoring, Kids in Partnership (KIP); and computer-aided literacy. Redwood City Friends of Literacy is a fundraising board that helps to support and to fund Redwood City's Project Read. Call for more information about each service.", "short_desc": "Offers an intergenerational literacy program for adults and youth seeking to improver literacy skills.", "address_attributes": {"street_1": "1044 Middlefield Road", "street_2": "2nd Floor", "city": "Redwood City", "state": "CA", "postal_code": "94063", "country_code": "US"}, "mail_address_attributes": {"attention": "Project Read", "street_1": "1044 Middlefield Road", "street_2": "2nd Floor", "city": "Redwood City", "state": "CA", "postal_code": "94063", "country_code": "US"}, "transportation": "SAMTRANS stops within 1 block.", "accessibility": ["elevator", "ramp", "restroom", "disabled_parking"], "languages": null, "emails": ["rclread@redwoodcity.org"], "phones_attributes": [{"number": "650 780-7077", "number_type": "voice"}, {"number": "650 780-7004", "number_type": "fax"} ], "urls": ["http://www.projectreadredwoodcity.org"], "services_attributes": [{"status": "active", "name": "Project Read", "description": "Offers an intergenerational literacy program for youth and English-speaking adults seeking to improver literacy skills. Adult services include: adult one-to-one tutoring to improve basic skills in reading, writing and critical thinking; Families for Literacy (FFL), a home-based family literacy program for parents who want to be able to read to their young children; and small group/English as a Second Language (ESL). Youth services include: Youth Tutoring, Families in Partnership (FIP); Teen-to-Elementary Student Tutoring, Kids in Partnership (KIP); and computer-aided literacy. Redwood City Friends of Literacy is a fundraising board that helps to support and to fund Redwood City's Project Read. Call for more information about each service.", "audience": "Adults, parents, children in 1st-12th grades in the Redwood City school districta", "eligibility": "English-speaking adult reading at or below 7th grade level or child in 1st-12th grade in the Redwood City school districts", "fees": "None.", "how_to_apply": "Walk in or apply by phone, email or webpage registration.", "service_areas": ["Daly City"], "keywords": ["EDUCATION SERVICES", "Adult", "Alternative", "Literacy", "Literacy Programs", "Libraries", "Public Libraries", "Youth"], "wait": "Depends on availability of tutors for small groups and one-on-one.", "funding_sources": ["City", "Donations", "Federal", "Grants", "State"] } ] }, {"name": "Redwood Shores Branch", "latitude":37.5304228, "longitude":-122.2586432, "contacts_attributes": [{"name": "Dave Genesy", "title": "Library Director"} ], "description": "Provides general reading materials, including large-type books, videos, music cassettes and CDs, and books on tape. Offers children's programs and a Summer Reading Club. Meeting room is available to nonprofit groups. Participates in the Peninsula Library System.", "short_desc": "Provides general reading materials and reference services.", "address_attributes": {"street_1": "399 Marine Parkway.", "city": "Redwood City", "state": "CA", "postal_code": "94065", "country_code": "US"}, "mail_address_attributes": {"attention": "Redwood Shores Branch", "street_1": "399 Marine Parkway", "city": "Redwood City", "state": "CA", "postal_code": "94065", "country_code": "US"}, "transportation": null, "accessibility": null, "languages": null, "emails": null, "phones_attributes": [{"number": "650 780-5740", "number_type": "voice"} ], "urls": ["http://www.redwoodcity.org/library"], "services_attributes": [{"status": "active", "name": "Redwood Shores Branch", "description": "Provides general reading materials, including large-type books, videos, music cassettes and CDs, and books on tape. Offers children's programs and a Summer Reading Club. Meeting room is available to nonprofit groups. Participates in the Peninsula Library System.", "audience": null, "eligibility": "Resident of California to obtain a library card", "fees": "None.", "how_to_apply": "Walk in. Proof of California residency required to receive a library card.", "service_areas": ["San Mateo County"], "keywords": ["EDUCATION SERVICES", "Library", "Libraries", "Public Libraries"], "wait": "No wait.", "funding_sources": ["City"] } ] } ]} -{"name": "Salvation Army", "description": "The Salvation Army operates 7,546 centers in communities across the United States. These include food distribution, disaster relief, rehabilitation centers, anti-human trafficking efforts, and a wealth of children's programs.", "locations": [{"name": "Redwood City Corps", "latitude":37.4913864, "longitude":-122.2315683, "contacts_attributes": [{"name": "Andres Espinoza", "title": "Captain, Commanding Officer"} ], "description": "Provides food, clothing, bus tokens and shelter to individuals and families in times of crisis from the Redwood City Corps office and community centers throughout the county. Administers Project REACH (Relief for Energy Assistance through Community Help) funds to prevent energy shut-off through a one-time payment. Counseling and translation services (English/Spanish) are available either on a walk-in basis or by appointment. Rental assistance with available funds. Another office (described separately) is located at 409 South Spruce Avenue, South San Francisco (650-266-4591).", "short_desc": "Provides a variety of emergency services to low-income persons. Also sponsors recreational and educational activities.", "address_attributes": {"street_1": "660 Veterans Blvd.", "city": "Redwood City", "state": "CA", "postal_code": "94063", "country_code": "US"}, "mail_address_attributes": {"attention": "Salvation Army", "street_1": "P.O. Box 1147", "city": "Redwood City", "state": "CA", "postal_code": "94064", "country_code": "US"}, "transportation": "SAMTRANS stops nearby.", "accessibility": ["wheelchair"], "languages": ["Spanish"], "emails": null, "phones_attributes": [{"number": "650 368-4643", "number_type": "voice"}, {"number": "650 364-1712", "number_type": "fax"} ], "urls": ["http://www.tsagoldenstate.org"], "services_attributes": [{"status": "active", "name": "Redwood City Corps", "description": "Provides food, clothing, bus tokens and shelter to individuals and families in times of crisis from the Redwood City Corps office and community centers throughout the county.", "audience": "Individuals or families with low or no income and/or trying to obtain public assistance", "eligibility": "None for most services. For emergency assistance, must have low or no income and be willing to apply for public assistance", "fees": "None.", "how_to_apply": "Call for appointment. Referral from human service professional preferred for emergency assistance.", "service_areas": ["Belmont", "Burlingame", "East Palo Alto"], "keywords": ["COMMUNITY SERVICES", "Interpretation/Translation", "EMERGENCY SERVICES", "Shelter/Refuge", "FINANCIAL ASSISTANCE SERVICES", "Utilities", "MENTAL HEALTH SERVICES", "Individual/Group Counseling", "Food Pantries", "Homeless Shelter", "Rental Deposit Assistance", "Utility Service Payment Assistance"], "wait": "Up to 20 minutes.", "funding_sources": ["Donations", "Grants"] } ] }, {"name": "Adult Rehabilitation Center", "latitude":37.7488993, "longitude":-122.4203671, "contacts_attributes": [{"name": "Jack Phillips", "title": "Administrator"} ], "description": "Provides a long-term (6-12 month) residential rehabilitation program for men and women with substance abuse and other problems. Residents receive individual counseling, and drug and alcohol education. The spiritual side of recovery is addressed through chapel services and Bible study as well as 12-step programs. Nicotine cessation is a part of the program. Residents must be physically able to work, seeking treatment for substance abuse, sober long enough to pass urine drug screen before entering and agreeable to participating in weekly 12-step programs such as Alcoholics Anonymous or Narcotics Anonymous. Pinehurst Lodge is a separate facility for women only. Transition houses for men and women graduates also available.", "short_desc": "Long-term (6-12 month) residential treatment program for men/women age 21-60.", "address_attributes": {"street_1": "1500 Valencia Street", "city": "San Francisco", "state": "CA", "postal_code": "94110", "country_code": "US"}, "mail_address_attributes": {"attention": "Adult Rehabilitation Center", "street_1": "1500 Valencia Street", "city": "San Francisco", "state": "CA", "postal_code": "94110", "country_code": "US"}, "transportation": "MUNI - 26 Valencia, Mission Street lines.", "accessibility": ["wheelchair"], "languages": ["Spanish"], "emails": null, "phones_attributes": [{"number": "415 643-8000", "number_type": "voice"}, {"number": "415 285-1391", "number_type": "fax"} ], "urls": null, "services_attributes": [{"status": "active", "name": "Adult Rehabilitation Center", "description": "Provides a long-term (6-12 month) residential rehabilitation program for men and women with substance abuse and other problems. Residents receive individual counseling, and drug and alcohol education. The spiritual side of recovery is addressed through chapel services and Bible study as well as 12-step programs. Nicotine cessation is a part of the program. Residents must be physically able to work, seeking treatment for substance abuse, sober long enough to pass urine drug screen before entering and agreeable to participating in weekly 12-step programs such as Alcoholics Anonymous or Narcotics Anonymous. Pinehurst Lodge is a separate facility for women only. Transition houses for men and women graduates also available.", "audience": "Adult alcoholic/drug addictive men and women with social and spiritual problems", "eligibility": "Age 21-60, detoxed, physically able and willing to participate in a work therapy program", "fees": "None.", "how_to_apply": "Walk in or through other agency referral.", "service_areas": ["Alameda County", "San Mateo County"], "keywords": ["ALCOHOLISM SERVICES", "Residential Care", "DRUG ABUSE SERVICES", "Psychiatric Emergency"], "wait": "Varies according to available beds for men and women. Women have a longer wait due to small number of beds statewide.", "funding_sources": ["Donations", "Sales"] } ] }, {"name": "Sunnyvale Corps", "latitude":37.3569004, "longitude":-122.0600024, "contacts_attributes": [{"name": "James Lee", "title": "Commanding Officer"} ], "description": "Provides emergency assistance including food and clothing for persons in immediate need. Provides PG&E assistance through REACH program. Youth programs offer tutoring, music and troops. Information on related resources is available. Also provides rental assistance when funds are available.", "short_desc": "Provides emergency assistance to persons in immediate need and offers after school activities and summer day camp program.", "address_attributes": {"street_1": "1161 South Bernardo", "city": "Sunnyvale", "state": "CA", "postal_code": "94087", "country_code": "US"}, "mail_address_attributes": {"attention": "Salvation Army", "street_1": "P.O. Box 61868", "city": "Sunnyvale", "state": "CA", "postal_code": "94088", "country_code": "US"}, "transportation": "VTA stops within 4 blocks.", "accessibility": [], "languages": ["Korean"], "emails": ["william_nichols@usw.salvationarmy.org"], "phones_attributes": [{"number": "408 720-0420", "number_type": "voice"}, {"number": "408 720-8075", "number_type": "fax"} ], "urls": null, "services_attributes": [{"status": "active", "name": "Sunnyvale Corps", "description": "Provides emergency assistance including food and clothing for persons in immediate need. Provides PG&E assistance through REACH program. Youth programs offer tutoring, music and troops. Information on related resources is available. Also provides rental assistance when funds are available.", "audience": null, "eligibility": "None for emergency assistance", "fees": "None for emergency services. Vary for after school activities. Cash and checks accepted.", "how_to_apply": "Walk in. Written application, identification required for emergency assistance.", "service_areas": [], "keywords": ["COMMODITY SERVICES", "Clothing/Personal Items", "CHILD PROTECTION AND CARE SERVICES", "Day Care", "COMMUNITY SERVICES", "Information and Referral", "EMERGENCY SERVICES", "Food Boxes/Food Vouchers", "FINANCIAL ASSISTANCE SERVICES", "Utilities", "RECREATION/LEISURE SERVICES", "Camping", "Emergency Food", "Clothing", "Utility Assistance", "Youth Development"], "wait": "No wait.", "funding_sources": ["Donations", "Fees", "Grants"] } ] }, {"name": "South San Francisco Citadel Corps", "latitude":37.6445898, "longitude":-122.4224905, "contacts_attributes": [{"name": "Kenneth Gibson", "title": "Major"} ], "description": "Provides emergency food, clothing and furniture vouchers to low-income families in times of crisis. Administers Project REACH (Relief for Energy Assistance through Community Help) funds to prevent energy shut-off through a one-time payment. Offers a Saturday morning Homeless Feeding Program at 10:30, as well as Sunday services and spiritual counseling. Provides Christmas toys and Back-to-School clothes and supplies. Offers case management, advocacy and referrals to other agencies.", "short_desc": "Provides emergency food and clothing and furniture vouchers to low-income families in times of crisis.", "address_attributes": {"street_1": "409 South Spruce Avenue", "city": "South San Francisco", "state": "CA", "postal_code": "94080", "country_code": "US"}, "mail_address_attributes": {"attention": "Salvation Army", "street_1": "409 South Spruce Avenue", "city": "South San Francisco", "state": "CA", "postal_code": "94080", "country_code": "US"}, "transportation": "SAMTRANS stops within 1 block, BART stops within 3 blocks.", "accessibility": ["wheelchair"], "languages": null, "emails": null, "phones_attributes": [{"number": "650 266-4591", "number_type": "voice"}, {"number": "650 266-2594", "number_type": "fax"}, {"number": "650 266-4594", "number_type": "fax"} ], "urls": ["http://www.tsagoldenstate.org"], "services_attributes": [{"status": "active", "name": "South San Francisco Citadel Corps", "description": "Provides emergency food, clothing and furniture vouchers to low-income families in times of crisis. Administers Project REACH (Relief for Energy Assistance through Community Help) funds to prevent energy shut-off through a one-time payment. Offers a Saturday morning Homeless Feeding Program at 10:30, as well as Sunday services and spiritual counseling. Provides Christmas toys and Back-to-School clothes and supplies. Offers case management, advocacy and referrals to other agencies.", "audience": null, "eligibility": "Low-income families", "fees": "None.", "how_to_apply": "Call for information.", "service_areas": ["Colma", "Daly City", "South San Francisco"], "keywords": ["COMMODITY SERVICES", "Clothing/Personal Items", "COMMUNITY SERVICES", "Information and Referral", "EMERGENCY SERVICES", "Food Boxes/Food Vouchers", "FINANCIAL ASSISTANCE SERVICES", "Utilities", "Emergency Food", "Food Pantries", "Furniture", "Clothing", "Utility Assistance", "School Supplies", "Case/Care Management", "Holiday Programs", "Pastoral Counseling", "Low Income"], "wait": null, "funding_sources": ["Donations"] } ] } ]} -{"name": "Samaritan House", "description": "Since 1974, Samaritan House has been serving low-income families and individuals in San Mateo County. Our services are designed to meet the immediate and basic needs of our clients for food, clothing, shelter, health care, worker resources, and counseling services.", "locations": [{"name": "Redwood City Free Medical Clinic", "latitude":37.468614, "longitude":-122.2067982, "contacts_attributes": [{"name": "Sharon Petersen", "title": "Administrator"} ], "description": "Provides free medical care to those in need. Offers basic medical exams for adults and tuberculosis screening. Assists the individual to access other services in the community. By appointment only, Project Smile provides a free dental exam, dental cleaning and oral hygiene instruction for children, age 3-12, of Samaritan House clients.", "short_desc": "Provides free medical care to those in need.", "address_attributes": {"street_1": "114 Fifth Avenue", "city": "Redwood City", "state": "CA", "postal_code": "94063", "country_code": "US"}, "mail_address_attributes": {"attention": "Redwood City Free Medical Clinic", "street_1": "114 Fifth Avenue", "city": "Redwood City", "state": "CA", "postal_code": "94063", "country_code": "US"}, "transportation": "SAMTRANS stops within 2 blocks.", "accessibility": ["restroom", "wheelchair"], "languages": ["Spanish"], "emails": ["gracie@samaritanhouse.com"], "phones_attributes": [{"number": "650 839-1447", "number_type": "voice"}, {"number": "650 839-1457", "number_type": "fax"} ], "urls": ["http://www.samaritanhouse.com"], "services_attributes": [{"status": "active", "name": "Project Smile", "description": "By appointment only, Project Smile provides a free dental exam, dental cleaning and oral hygiene instruction for children, age 3-12, of Samaritan House clients.", "audience": null, "eligibility": "Low-income person without access to health care", "fees": "None.", "how_to_apply": "Call for screening appointment. Medical visits are by appointment only.", "service_areas": ["East Palo Alto"], "keywords": ["HEALTH SERVICES", "Outpatient Care", "Community Clinics"], "wait": "Varies.", "funding_sources": ["Donations", "Grants"] } ] }, {"name": "San Mateo Free Medical Clinic", "latitude":37.5326941, "longitude":-122.2931236, "contacts_attributes": [{"name": "Sharon Petersen", "title": "Administrator"} ], "description": "Provides free medical and dental care to those in need. Offers basic medical care for adults.", "short_desc": "Provides free medical and dental care to those in need. Offers basic medical care for adults.", "address_attributes": {"street_1": "19 West 39th Avenue", "city": "San Mateo", "state": "CA", "postal_code": "94403", "country_code": "US"}, "mail_address_attributes": {"attention": "San Mateo Free Medical/Dental", "street_1": "19 West 39th Avenue", "city": "San Mateo", "state": "CA", "postal_code": "94403", "country_code": "US"}, "transportation": "SAMTRANS stops within 1 block.", "accessibility": ["elevator", "ramp", "wheelchair"], "languages": ["Spanish"], "emails": ["smcmed@samaritanhouse.com"], "phones_attributes": [{"number": "650 578-0400", "number_type": "voice"}, {"number": "650 578-0440", "number_type": "fax"} ], "urls": ["http://www.samaritanhouse.com"], "services_attributes": [{"status": "active", "name": "San Mateo Free Medical Clinic", "description": "Provides free medical and dental care to those in need. Offers basic medical care for adults. Assists people with problems or questions relating to Medi-Cal, Healthy Families, Healthy Kids, and Medicare.", "audience": null, "eligibility": "Low-income person without access to health care", "fees": "None.", "how_to_apply": "Call for screening appointment (650-347-3648).", "service_areas": ["Belmont", "Burlingame"], "keywords": ["HEALTH SERVICES", "Outpatient Care", "Community Clinics", "Medicare"], "wait": "Varies.", "funding_sources": ["Donations", "Grants"] } ] } ]} -{"name": "Fake Org", "description": "An organization created for testing purposes.", "locations": [{"accessibility": [], "description": "no phone", "emails": [], "languages": null, "mail_address_attributes": {"attention": "", "street_1": "123 Main Street", "city": "Fairfax", "state": "VA", "postal_code": "22031", "country_code": "US"}, "name": "Location with no phone", "phones_attributes": [], "short_desc": "no phone", "transportation": null, "urls": null, "virtual": "true", "services_attributes": [{"status":"defunct","name": "Service with blank fields", "description": "no unrequired fields for this service", "audience": "", "how_to_apply": "Walk in."} ] } ] } -{"name": "Admin Test Org", "description": "An organization created for testing purposes.", "locations": [{"accessibility": ["elevator", "restroom"], "address_attributes": {"city": "Belmont", "state": "CA", "street_1": "123 El Camino Real", "postal_code": "94002", "country_code": "US"}, "contacts_attributes": [{"name": "Moncef", "department": "Office of Innovation"} ], "latitude":37.5291938,"longitude":-122.2871612, "description": "This is a description", "emails": ["eml@example.org"], "languages": null, "name": "Admin Test Location", "phones_attributes": [{"number": "7035551212", "vanity_number": "703555-ABCD", "extension": "1223", "department": "CalFresh", "number_type": "voice"}, {"number": "2025551212", "department": "CalFresh", "number_type": "fax"} ], "short_desc": "This is a short description", "transportation": "SAMTRANS stops within 1/2 mile.", "urls": ["http://codeforamerica.org"], "services_attributes": [{"status":"inactive","name": "Service for Admin Test Location", "description": "just a test service", "how_to_apply": "By phone during business hours.", "service_areas": ["San Mateo County"] } ] } ] } -{"name": "Example Agency", "alternate_name": "Alternate Agency Name", "date_incorporated": "1970-01-01", "description": "Sample organization description. The Public Library inspires learning through innovative and visionary programming and services—literacy programs, support for school success, access to technology, safe, inviting spaces for youth and families, and gathering places that connect the members of the community with a love of reading and learning.", "email": "info@example.org", "website": "http://example.org", "locations": [{"accessibility": ["disabled_parking", "restroom", "wheelchair"], "admin_emails": ["foo@bar.com"], "description": "[NOTE THIS IS NOT A REAL ORGANIZATION--THIS IS FOR TESTTING PURPOSES OF THIS ALPHA APP] Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent suscipit metus eu orci lobortis dictum. In hac habitasse platea dictumst. Vivamus vulputate, neque ut sodales gravida, lorem nunc pharetra ligula, ac cursus sem justo a sapien. Duis vitae vestibulum magna. Sed vel augue in justo rhoncus viverra. Nam ac felis a purus lobortis porttitor sit amet quis est. Suspendisse vulputate nisl quis nisi fermentum aliquet euismod at augue. Sed ultricies, purus dapibus tristique dictum, tortor mauris porttitor nulla, at porta nisl sem sed dolor. Proin ac hendrerit erat. Duis porta iaculis orci, eu euismod quam tristique in. Phasellus nec purus sit amet sapien volutpat egestas.", "emails": ["info@example.com", "referrals@example.com"], "languages": ["Cantonese", "Taiwanese", "Tagalog", "Russian", "Spanish"], "latitude":37.7726402,"longitude":-122.4099154, "name": "Example Location", "alternate_name": "The Test Spot", "short_desc": "[NOTE THIS IS NOT A REAL ENTRY--THIS IS FOR TESTING PURPOSES OF THIS ALPHA APP]", "transportation": "SAMTRANS stops within 1 block", "urls": ["http://www.smchealth.org", "http://www.example.com", "http://www.example2.com"], "address_attributes": {"street_1": "2013 Avenue of the fellows", "street_2": "Suite 100", "city": "San Francisco", "state": "CA", "postal_code": "94103", "country_code": "US"}, "contacts_attributes": [{"email": "suzanne@example.com", "name": "Suzanne Badenhoop", "title": "Board President", "department": "Referrals", "phones_attributes": [{"number": "123-456-7890", "extension": "1200", "department": "Referrals", "number_type": "voice", "country_prefix": "+1"}, {"number": "202-555-1212", "department": "Referrals", "number_type": "fax", "country_prefix": "+1"} ] } ], "mail_address_attributes": {"attention": "The Foodies", "street_1": "2013 Avenue of the fellows", "street_2": "Suite 100", "city": "San Francisco", "state": "CA", "postal_code": "90210", "country_code": "US"}, "phones_attributes": [{"department": "Information", "extension": "123", "number": "650 372-6200", "number_type": "voice", "vanity_number": "222-555-INFO"}, {"department": "Reservations", "number": "650 627-8244", "number_type": "fax"}, {"department": "Hotline", "number": "800 372-6200", "number_type": "hotline"}, {"department": "Rental Assistance", "extension": "202", "number": "650 372-6200", "number_type": "tty"} ], "services_attributes": [{"status":"active","accepted_payments": ["Cash", "Credit Card", "Check"], "alternate_name": "Fotos para pasaportes", "audience": "Profit and nonprofit businesses, the public, military facilities, schools and government entities", "description": "[NOTE THIS IS NOT A REAL SERVICE--THIS IS FOR TESTING PURPOSES OF THIS ALPHA APP] Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent suscipit metus eu orci lobortis dictum. In hac habitasse platea dictumst. Vivamus vulputate, neque ut sodales gravida, lorem nunc pharetra ligula, ac cursus sem justo a sapien. Duis vitae vestibulum magna. Sed vel augue in justo rhoncus viverra. Nam ac felis a purus lobortis porttitor sit amet quis est. Suspendisse vulputate nisl quis nisi fermentum aliquet euismod at augue. Sed ultricies, purus dapibus tristique dictum, tortor mauris porttitor nulla, at porta nisl sem sed dolor. Proin ac hendrerit erat. Duis porta iaculis orci, eu euismod quam tristique in. Phasellus nec purus sit amet sapien volutpat egestas.", "eligibility": "None", "email": "passports@example.org", "fees": "None, except for permits and photocopying. Cash, checks and credit cards accepted", "funding_sources": ["City", "County", "Federal", "State"], "how_to_apply": "Walk in or apply by phone or mail", "keywords": ["Salud", "Medicina"], "languages": ["English", "Spanish"], "name": "Passport Photos", "required_documents": ["Government-issued identification"], "service_areas": ["San Mateo County", "Alameda County"], "status": "active", "website": "http://www.example.com", "wait": "No wait to 2 weeks", "updated_at": "2014-04-18T12:49:47.791-07:00", "categories": [] }, {"audience": "Second service and nonprofit businesses, the public, military facilities, schools and government entities", "description": "[NOTE THIS IS NOT A REAL ORGANIZATION--THIS IS FOR TESTTING PURPOSES OF THIS ALPHA APP] Offers, by appointment, WIC (Women, Infants and Children) services, insurance enrollment, food stamps, CalWorks assistance, tax preparation and notary services. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent suscipit metus eu orci lobortis dictum. In hac habitasse platea dictumst. Vivamus vulputate, neque ut sodales gravida, lorem nunc pharetra ligula, ac cursus sem justo a sapien. Duis vitae vestibulum magna. Sed vel augue in justo rhoncus viverra. Nam ac felis a purus lobortis porttitor sit amet quis est. Suspendisse vulputate nisl quis nisi fermentum aliquet euismod at augue. Sed ultricies, purus dapibus tristique dictum, tortor mauris porttitor nulla, at porta nisl sem sed dolor. Proin ac hendrerit erat. Duis porta iaculis orci, eu euismod quam tristique in. Phasellus nec purus sit amet sapien volutpat egestas.", "eligibility": "None", "fees": "None, except for permits and photocopying. Cash, checks and credit cards accepted", "funding_sources": ["City", "County", "Federal", "State"], "how_to_apply": "Walk in or apply by phone or mail", "keywords": ["Ruby on Rails/Postgres/Redis", "testing", "wic"], "name": "Example Service Name", "service_areas": ["San Mateo County", "Alameda County"], "website": "http://www.example.com", "wait": "No wait to 2 weeks", "status": "active", "categories": [] } ] } ] } +{"name": "Peninsula Family Service", "description": "Peninsula Family Service strengthens the community by providing children, families, and older adults the support and tools to realize their full potential and lead healthy, stable lives.", "locations": [{"name": "Fair Oaks Adult Activity Center", "latitude":37.477227, "longitude":-122.213221, "contacts_attributes": [{"name": "Susan Houston", "title": "Director of Older Adult Services"}, {"name": " Christina Gonzalez", "title": "Center Director"} ], "description": "A walk-in center for older adults that provides social services, wellness, recreational, educational and creative activities including arts and crafts, computer classes and gardening classes. Coffee and healthy breakfasts are available daily. A hot lunch is served Tuesday-Friday for persons age 60 or over and spouse. Provides case management (including in-home assessments) and bilingual information and referral about community services to persons age 60 or over on questions of housing, employment, household help, recreation and social activities, home delivered meals, health and counseling services and services to shut-ins. Health insurance and legal counseling is available by appointment. Lectures on a variety of health and fitness topics are held monthly in both English and Spanish. Provides a variety of physical fitness opportunities, including a garden club, yoga, tai chi, soul line dance and aerobics classes geared toward older adults. Also provides free monthly blood pressure screenings, quarterly blood glucose monitoring and health screenings by a visiting nurse. Offers a Brown Bag Program in which low-income seniors can receive a bag of groceries each week for a membership fee of $10 a year. Offers Spanish lessons. Formerly known as Peninsula Family Service, Fair Oaks Intergenerational Center. Formerly known as the Fair Oaks Senior Center. Formerly known as Family Service Agency of San Mateo County, Fair Oaks Intergenerational Center.", "short_desc": "A multipurpose senior citizens' center serving the Redwood City area.", "address_attributes": {"street_1": "2600 Middlefield Road", "city": "Redwood City", "state": "CA", "postal_code": "94063", "country_code": "US"}, "mail_address_attributes": {"attention": "Fair Oaks Intergenerational Center", "street_1": "2600 Middlefield Road", "city": "Redwood City", "state": "CA", "postal_code": "94063", "country_code": "US"}, "transportation": "SAMTRANS stops in front.", "accessibility": ["ramp", "restroom", "disabled_parking", "wheelchair"], "languages": ["Tagalog", "Spanish"], "emails": ["cgonzalez@peninsulafamilyservice.org"], "phones_attributes": [{"number": "650 780-7525", "number_type": "voice"}, {"number": "650 701-0856", "number_type": "fax"} ], "website": "http://www.peninsulafamilyservice.org", "services_attributes": [{"status": "active", "name": "Fair Oaks Adult Activity Center", "description": "A walk-in center for older adults that provides social services, wellness, recreational, educational and creative activities including arts and crafts, computer classes and gardening classes.", "audience": "Older adults age 55 or over, ethnic minorities and low-income persons", "eligibility": "Age 55 or over for most programs, age 60 or over for lunch program", "fees": "$2.50 suggested donation for lunch for age 60 or over, donations for other services appreciated. Cash and checks accepted.", "how_to_apply": "Walk in or apply by phone.", "service_areas": ["Colma"], "keywords": ["ADULT PROTECTION AND CARE SERVICES", "Meal Sites/Home-delivered Mea", "COMMUNITY SERVICES", "Group Support", "Information and Referral", "EDUCATION SERVICES", "English Language", "RECREATION/LEISURE SERVICES", "Arts and Crafts", "Sports/Games/Exercise", "Brown Bag Food Programs", "Congregate Meals/Nutrition Sites", "Senior Centers", "Older Adults"], "wait": "No wait.", "funding_sources": ["City", "County", "Donations", "Fees", "Fundraising"] } ] }, {"name": "Second Career Employment Program", "latitude":37.5639843, "longitude":-122.3257992, "contacts_attributes": [{"name": "Brenda Brown", "title": "Director, Second Career Services"} ], "description": "Provides training and job placement to eligible people age 55 or over who meet certain income qualifications. An income of 125% of poverty level or less is required for subsidized employment and training. (No income requirements for job matchup program.) If a person seems likely to be qualified after a preliminary phone call or visit, he or she must complete an application at this office. Staff will locate appropriate placements for applicants, provide orientation and on-the-job training and assist with finding a job outside the program. Any county resident, regardless of income, age 55 or over has access to the program, job developers and the job bank. Also provides referrals to classroom training. Formerly known as Family Service Agency of San Mateo County, Senior Employment Services.", "short_desc": "Provides training and job placement to eligible persons age 55 or over. All persons age 55 or over have access to information in the program's job bank.", "address_attributes": {"street_1": "24 Second Avenue", "city": "San Mateo", "state": "CA", "postal_code": "94401", "country_code": "US"}, "mail_address_attributes": {"attention": "PFS Second Career Services", "street_1": "24 Second Avenue", "city": "San Mateo", "state": "CA", "postal_code": "94401", "country_code": "US"}, "transportation": "SAMTRANS stops within 1 block, CALTRAIN stops within 6 blocks.", "accessibility": ["wheelchair"], "languages": ["Chinese (Mandarin)", "Tagalog", "Italian", "Spanish"], "emails": ["bbrown@peninsulafamilyservice.org"], "phones_attributes": [{"number": "650 403-4300", "extension": "4385", "number_type": "voice"}, {"number": "650 403-4302", "number_type": "fax"} ], "website": "http://www.peninsulafamilyservice.org", "services_attributes": [{"status": "active", "name": "Second Career Employment Program", "description": "Provides training and job placement to eligible people age 55 or over who meet certain income qualifications.", "audience": "Residents of San Mateo County age 55 or over", "eligibility": "Age 55 or over, county resident and willing and able to work. Income requirements vary according to program", "fees": "None. Donations requested of clients who can afford it.", "how_to_apply": "Apply by phone for an appointment.", "service_areas": ["San Mateo County"], "keywords": ["EMPLOYMENT/TRAINING SERVICES", "Job Development", "Job Information/Placement/Referral", "Job Training", "Job Training Formats", "Job Search/Placement", "Older Adults"], "wait": "Varies.", "funding_sources": ["County", "Federal", "State"] } ] }, {"name": "Senior Peer Counseling", "latitude":37.5639843, "longitude":-122.3257992, "contacts_attributes": [{"name": "Howard Lader, LCSW", "title": "Manager, Senior Peer Counseling"} ], "description": "Offers supportive counseling services to San Mateo County residents age 55 or over. Volunteer counselors are selected and professionally trained to help their peers face the challenges and concerns of growing older. Training provides topics that include understanding depression, cultural competence, sexuality, community resources, and other subjects that are relevant to working with older adults. After completion of training, weekly supervision groups are provided for the volunteer senior peer counselors, as well as quarterly in-service training seminars. Peer counseling services are provided in English, Spanish, Chinese (Cantonese and Mandarin), Tagalog, and to the lesbian, gay, bisexual, transgender older adult community. Formerly known as Family Service Agency of San Mateo County, Senior Peer Counseling.", "short_desc": "Offers supportive counseling services to older persons.", "address_attributes": {"street_1": "24 Second Avenue", "city": "San Mateo", "state": "CA", "postal_code": "94403", "country_code": "US"}, "mail_address_attributes": {"attention": "PFS Senior Peer Counseling", "street_1": "24 Second Avenue", "city": "San Mateo", "state": "CA", "postal_code": "94403", "country_code": "US"}, "transportation": "Service is provided in person's home or at a mutually agreed upon location.", "accessibility": [], "languages": ["Chinese (Cantonese)", "Chinese (Mandarin)", "Tagalog", "Spanish"], "emails": null, "phones_attributes": [{"number": "650 403-4300", "department": "English", "number_type": "voice"}, {"number": "650 403-4303", "number_type": "fax"} ], "website": null, "services_attributes": [{"status": "active", "name": "Senior Peer Counseling", "description": "Offers supportive counseling services to San Mateo County residents age 55 or over.", "audience": "Older adults age 55 or over who can benefit from counseling", "eligibility": "Resident of San Mateo County age 55 or over", "fees": "None.", "how_to_apply": "Phone for information (403-4300 Ext. 4322).", "service_areas": ["San Mateo County"], "keywords": ["Geriatric Counseling", "Older Adults", "Gay, Lesbian, Bisexual, Transgender Individuals", "Mentoring Programs"], "wait": "Varies.", "funding_sources": ["County", "Donations", "Grants"] } ] }, {"name": "Family Visitation Center", "latitude":37.5639843, "longitude":-122.3257992, "contacts_attributes": [{"name": "Kimberly Pesavento", "title": "Director of Visitation"} ], "description": "Provides supervised visitation services and a neutral site for parents to carry out supervised exchanges of children in a safe manner. Therapeutic visitation and other counseling services available. Kids in the Middle is an education class for separating or divorcing parents. The goal is to enable parents to focus on their children's needs while the family is going through separation, divorce or other transition. The class explores the psychological aspects of divorce and its impact on children, builds effective communication techniques and points out areas in which outside help may be indicated. The fee is $50 for working parents, $15 for unemployed people. Classes are scheduled on Saturdays and Sundays and held at various sites throughout the county. Call 650-403-4300 ext. 4500 to register. Formerly known as Family Service Agency of San Mateo County, Family Visitation Center.", "short_desc": "Provides supervised visitation services and a neutral site for parents in extremely hostile divorces to carry out supervised exchanges of children.", "address_attributes": {"street_1": "24 Second Avenue", "city": "San Mateo", "state": "CA", "postal_code": "94401", "country_code": "US"}, "mail_address_attributes": {"attention": "PFS Family Visitation Center", "street_1": "24 Second Avenue", "city": "San Mateo", "state": "CA", "postal_code": "94401", "country_code": "US"}, "transportation": "SAMTRANS stops within 1 block, CALTRAIN stops within 4 blocks.", "accessibility": ["wheelchair"], "languages": ["Spanish"], "emails": ["kpesavento@peninsulafamilyservice.org"], "phones_attributes": [{"number": "650 403-4300", "extension": "4500", "number_type": "voice"}, {"number": "650 403-4303", "number_type": "fax"} ], "website": "http://www.peninsulafamilyservice.org", "services_attributes": [{"status": "active", "name": "Family Visitation Center", "description": "Provides supervised visitation services and a neutral site for parents to carry out supervised exchanges of children in a safe manner. Provides counseling for child abuse prevention and domestic violence.", "audience": "Parents, children, families with problems of custody disputes, domestic violence or substance abuse, families going through a separation or divorce", "eligibility": "None", "fees": "Vary according to income ($5-$90). Cash, checks and credit cards accepted.", "how_to_apply": "Apply by phone.", "service_areas": ["San Mateo County"], "keywords": ["INDIVIDUAL AND FAMILY DEVELOPMENT SERVICES", "Growth and Adjustment", "LEGAL AND CRIMINAL JUSTICE SERVICES", "Mediation", "Parental Visitation Monitoring", "Divorce Counseling", "Youth", "Abuse Prevention", "Child Abuse", "Domestic Violence"], "wait": "No wait.", "funding_sources": ["County", "Donations", "Grants"] } ] }, {"name": "Economic Self - Sufficiency Program", "latitude":37.5639843, "longitude":-122.3257992, "contacts_attributes": [{"name": "Joe Bloom", "title": "Financial Empowerment Programs Program Director"} ], "description": "Provides fixed 8% short term loans to eligible applicants for the purchase of a reliable, used autmobile. Loans are up to $6,000 over 2 1/2 years (30 months). Funds must go towards the entire purchase of the automobile. Peninsula Family Service originates loans and collaborates with commercial partner banks to service the loans, helping clients build credit histories. Formerly known as Family Service Agency of San Mateo County, Ways to Work Family Loan Program.", "short_desc": "Makes small loans to working families.", "address_attributes": {"street_1": "24 Second Avenue", "city": "San Mateo", "state": "CA", "postal_code": "94401", "country_code": "US"}, "mail_address_attributes": {"attention": "Economic Self - Sufficiency Program", "street_1": "24 Second Avenue", "city": "San Mateo", "state": "CA", "postal_code": "94401", "country_code": "US"}, "transportation": "SAMTRANS stops within 1 block. CALTRAIN stops within 6 blocks.", "accessibility": ["wheelchair"], "languages": ["Hindi", "Spanish"], "emails": ["waystowork@peninsulafamilyservice.org"], "phones_attributes": [{"number": "650 403-4300", "extension": "4100", "number_type": "voice"}, {"number": "650 403-4303", "number_type": "fax"} ], "website": "http://www.peninsulafamilyservice.org", "services_attributes": [{"status": "active", "name": "Economic Self-Sufficiency Program", "description": "Provides fixed 8% short term loans to eligible applicants for the purchase of a reliable, used autmobile. Loans are up to $6,000 over 2 1/2 years (30 months). Funds must go towards the entire purchase of the automobile. Peninsula Family Service originates loans and collaborates with commercial partner banks to service the loans, helping clients build credit histories. Formerly known as Family Service Agency of San Mateo County, Ways to Work Family Loan Program.", "audience": "Low-income working families with children transitioning from welfare to work and poor or who do not have access to conventional credit", "eligibility": "Eligibility: Low-income family with legal custody of a minor child or an involved parent of a dependent minor child. Must reside and/or work in San Mateo County. Must be working and have verifiable income and ability to pay off loan. No bankruptcies in the past two years and unable to qualify for other funding sources. Loans approved by loan committee.", "fees": "$60 application fee. Cash or checks accepted.", "how_to_apply": "Phone for information.", "service_areas": ["San Mateo County"], "keywords": ["COMMUNITY SERVICES", "Speakers", "Automobile Loans"], "wait": null, "funding_sources": ["County", "Grants", "State"] } ] } ]} +{"name": "Peninsula Volunteers", "description": "Peninsula Volunteers, Inc. (PVI), is a visionary service organization that raises funds to provide seniors with over $5 million annually in services designed to enhance and enrich their lives.", "locations": [{"name": "Little House", "latitude":37.4480204, "longitude":-122.1805905, "contacts_attributes": [{"name": "Peter Olson", "title": "Little House Director"}, {"name": " Bart Charlow", "title": "Executive Director, Peninsula Volunteers"} ], "description": "A multipurpose center offering a wide variety of recreational, education and cultural activities. Lifelong learning courses cover topics such as music, art, languages, etc., are hosted at this location. Little House offers a large variety of classes including arts and crafts, jewelry, languages, current events, lapidary, woodwork, painting, and fitness courses (yoga, strength straining, tai chi). There are monthly art and cultural lectures, movie showings, and a computer center. Recreation activities include mah jong, pinochle, ballroom dancing, bridge, trips and tours. Partners with the Sequoia Adult Education Program. The Alzheimer's Cafe, open the third Tuesday of every month from 2:00 - 4:00 pm, is a place that brings together people liviing with dementia, their families, and their caregivers. Free and no registration is needed. The Little House Community Service Desk offers information and referrals regarding social service issues, such as housing, food, transportation, health insurance counseling, and estate planning. Massage, podiatry, and acupuncture are available by appointment. Lunch is served Monday-Friday, 11:30 am-1:00 pm. Prices vary according to selection.", "short_desc": "A multipurpose senior citizens' center.", "address_attributes": {"street_1": "800 Middle Avenue", "city": "Menlo Park", "state": "CA", "postal_code": "94025-9881", "country_code": "US"}, "mail_address_attributes": {"attention": "Little House", "street_1": "800 Middle Avenue", "city": "Menlo Park", "state": "CA", "postal_code": "94025-9881", "country_code": "US"}, "transportation": "SAMTRANS stops within 3 blocks, RediWheels and Menlo Park Shuttle stop at door.", "accessibility": ["disabled_parking", "wheelchair"], "languages": ["Tagalog", "Spanish"], "emails": ["polson@peninsulavolunteers.org"], "phones_attributes": [{"number": "650 326-2025", "number_type": "voice"}, {"number": "650 326-9547", "number_type": "fax"} ], "website":"http://www.penvol.org/littlehouse", "services_attributes": [{"status": "active", "name": "Little House Recreational Activities", "description": "A multipurpose center offering a wide variety of recreational, education and cultural activities.", "audience": "Any age", "eligibility": "None", "fees": "$55 per year membership dues. Classes have fees. Discounts are available for members. Cash, checks and credit cards accepted.", "how_to_apply": "Walk in or apply by phone for membership application.", "service_areas": ["San Mateo County"], "keywords": ["ADULT PROTECTION AND CARE SERVICES", "In-Home Supportive", "Meal Sites/Home-delivered Meals", "COMMUNITY SERVICES", "Group Support", "Information and Referral", "EDUCATION SERVICES", "Adult", "HEALTH SERVICES", "Education/Information", "Family Support", "Individual/Group Counseling", "Screening/Immunization", "RECREATION/LEISURE SERVICES", "Sports/Games/Exercise", "Community Adult Schools", "Senior Centers", "Older Adults"], "wait": "No wait.", "funding_sources": ["Fees", "Fundraising", "Grants", "Membership dues"] } ] }, {"name": "Rosener House Adult Day Services", "latitude":37.4441785, "longitude":-122.1830931, "contacts_attributes": [{"name": "Bart Charlow", "title": "Executive Director, Peninsula Volunteers"}, {"name": " Barbara Kalt", "title": "Director"} ], "description": "Rosener House is a day center for older adults who may be unable to live independently but do not require 24-hour nursing care, may be isolated and in need of a planned activity program, may need assistance with activities of daily living or are living in a family situation where the caregiver needs respite from giving full-time care. Assists elderly persons to continue to live with family or alone rather than moving to a skilled nursing facility. Activities are scheduled Monday-Friday, 10 am-2:30 pm, and participants may come two to five days per week. The facility is open from 8 am to 5:30 pm for participants who need to remain all day. Small group late afternoon activities are held from 3-5:30 pm. The program provides a noon meal including special diets as required. Services offered include social and therapeutic recreational activities, individual and family counseling and occupational, physical and speech therapy. A registered nurse is available daily. The Dementia and Alzheimer's Services Program provides specialized activities in a supportive environment for participants with Alzheimer's disease and other dementias. Holds a weekly support group for caregivers. An early memory loss class for independent adults, \"Minds in Motion\" meets weekly at Rosener House on Wednesday mornings. Call for more information.", "short_desc": "A day center for adults age 50 or over.", "address_attributes": {"street_1": "500 Arbor Road", "city": "Menlo Park", "state": "CA", "postal_code": "94025", "country_code": "US"}, "mail_address_attributes": {"attention": "Rosener House", "street_1": "500 Arbor Road", "city": "Menlo Park", "state": "CA", "postal_code": "94025", "country_code": "US"}, "transportation": "Transportation can be arranged via Redi-Wheels or Outreach.", "accessibility": ["ramp", "restroom", "disabled_parking", "wheelchair"], "languages": ["Spanish", "Tagalog", "Vietnamese"], "emails": ["bkalt@peninsulavolunteers.org", "fmarchick@peninsulavolunteers.org"], "phones_attributes": [{"number": "650 322-0126", "number_type": "voice"}, {"number": "650 322-4067", "number_type": "fax"} ], "website": "http://www.penvol.org/rosenerhouse", "services_attributes": [{"status": "active", "name": "Rosener House Adult Day Services", "description": "Rosener House is a day center for older adults who may be unable to live independently but do not require 24-hour nursing care, may be isolated and in need of a planned activity program, may need assistance with activities of daily living or are living in a family situation where the caregiver needs respite from giving full-time care. Assists elderly persons to continue to live with family or alone rather than moving to a skilled nursing facility. Activities are scheduled Monday-Friday, 10 am-2:30 pm, and participants may come two to five days per week. The facility is open from 8 am to 5:30 pm for participants who need to remain all day. Small group late afternoon activities are held from 3-5:30 pm. The program provides a noon meal including special diets as required. Services offered include social and therapeutic recreational activities, individual and family counseling and occupational, physical and speech therapy. A registered nurse is available daily.", "audience": "Older adults who have memory or sensory loss, mobility limitations and may be lonely and in need of socialization", "eligibility": "Age 18 or over", "fees": "$85 per day. Vary according to income for those unable to pay full fee. Cash, checks, credit cards, private insurance and vouchers accepted.", "how_to_apply": "Apply by phone or be referred by a doctor, social worker or other professional. All prospective participants are interviewed individually before starting the program. A recent physical examination is required, including a TB test.", "service_areas": ["Belmont", "Burlingame", "East Palo Alto"], "keywords": ["ADULT PROTECTION AND CARE SERVICES", "Adult Day Health Care", "Dementia Management", "Adult Day Programs", "Older Adults"], "wait": "No wait.", "funding_sources": ["Donations", "Fees", "Grants"] } ] }, {"name": "Meals on Wheels - South County", "latitude":37.4480204, "longitude":-122.1805905, "contacts_attributes": [{"name": "Marilyn Baker-Venturini", "title": "Director"}, {"name": " Graciela Hernandez", "title": "Assistant Manager"}, {"name": " Julie Avelino", "title": "Assessment Specialist"} ], "description": "Delivers a hot meal to the home of persons age 60 or over who are primarily homebound and unable to prepare their own meals, and have no one to prepare meals. Also, delivers a hot meal to the home of disabled individuals ages 18-59. Meals are delivered between 9 am-1:30 pm, Monday-Friday. Special diets are accommodated: low fat, low sodium, and low sugar.", "short_desc": "Will deliver a hot meal to the home of persons age 60 or over who are homebound and unable to prepare their own meals. Can provide special diets.", "address_attributes": {"street_1": "800 Middle Avenue", "city": "Menlo Park", "state": "CA", "postal_code": "94025-9881", "country_code": "US"}, "mail_address_attributes": {"attention": "Meals on Wheels - South County", "street_1": "800 Middle Avenue", "city": "Menlo Park", "state": "CA", "postal_code": "94025-9881", "country_code": "US"}, "transportation": "Not necessary for service.", "accessibility": null, "languages": ["Spanish"], "emails": ["mbaker-venturini@peninsulavolunteers.org"], "phones_attributes": [{"number": "650 323-2022", "number_type": "voice"}, {"number": "650 326-9547", "number_type": "fax"} ], "website": "http://www.peninsulavolunteers.org", "services_attributes": [{"status": "active", "name": "Meals on Wheels - South County", "description": "Delivers a hot meal to the home of persons age 60 or over who are primarily homebound and unable to prepare their own meals, and have no one to prepare meals. Also, delivers a hot meal to the home of disabled individuals ages 18-59. Meals are delivered between 9 am-1:30 pm, Monday-Friday. Special diets are accommodated: low fat, low sodium, and low sugar.", "audience": "Senior citizens age 60 or over, disabled individuals age 18-59", "eligibility": "Homebound person unable to cook or shop", "fees": "Suggested donation of $4.25 per meal for seniors 60 or over. Mandatory charge of $2 per meal for disabled individuals ages 18-59.", "how_to_apply": "Apply by phone.", "service_areas": ["Belmont", "East Palo Alto"], "keywords": ["ADULT PROTECTION AND CARE SERVICES", "Meal Sites/Home-delivered Mea", "HEALTH SERVICES", "Nutrition", "Home Delivered Meals", "Older Adults", "Disabilities Issues"], "wait": "No wait.", "funding_sources": ["County", "Donations"] } ] } ]} +{"name": "Redwood City Public Library", "description": "The Redwood City Public Library inspires learning through innovative and visionary programming and services—literacy programs, support for school success, access to technology, safe, inviting spaces for youth and families, and gathering places that connect the members of the community with a love of reading and learning.", "locations": [{"name": "Fair Oaks Branch", "latitude":37.478502, "longitude":-122.2141428, "contacts_attributes": [{"name": "Dave Genesy", "title": "Library Director"}, {"name": " Maria Kramer", "title": "Library Divisions Manager"} ], "description": "Provides general reading material, including bilingual, multi-cultural books, CDs and cassettes, bilingual and Spanish language reference services. School, class and other group visits may be arranged by appointment. The library is a member of the Peninsula Library System.", "short_desc": "Provides general reading materials and reference services.", "address_attributes": {"street_1": "2510 Middlefield Road", "city": "Redwood City", "state": "CA", "postal_code": "94063", "country_code": "US"}, "mail_address_attributes": {"attention": "Fair Oaks Branch", "street_1": "2510 Middlefield Road", "city": "Redwood City", "state": "CA", "postal_code": "94063", "country_code": "US"}, "transportation": "SAMTRANS stops in front.", "accessibility": ["ramp", "restroom", "wheelchair"], "languages": ["Spanish"], "emails": null, "phones_attributes": [{"number": "650 780-7261", "number_type": "voice"}, {"number": "650 569-3371", "number_type": "fax"} ], "website": null, "services_attributes": [{"status": "active", "name": "Fair Oaks Branch", "description": "Provides general reading material, including bilingual, multi-cultural books, CDs and cassettes, bilingual and Spanish language reference services. School, class and other group visits may be arranged by appointment. The library is a member of the Peninsula Library System.", "audience": "Ethnic minorities, especially Spanish speaking", "eligibility": "Resident of California to obtain a library card", "fees": "None.", "how_to_apply": "Walk in. Proof of residency in California required to receive a library card.", "service_areas": ["San Mateo County"], "keywords": ["EDUCATION SERVICES", "Library", "Libraries", "Public Libraries"], "wait": "No wait.", "funding_sources": ["City", "County"] } ] }, {"name": "Main Library", "latitude":37.4838423, "longitude":-122.2273954, "contacts_attributes": [{"name": "Dave Genesy", "title": "Library Director"}, {"name": " Maria Kramer", "title": "Library Division Manager"} ], "description": "Provides general reading and media materials, literacy and homework assistance, and programs for all ages. Provides public computers, wireless connectivity, a children's room, teen center, and a local history collection. The library is a member of the Peninsula Library System. The Fair Oaks Branch (650-780-7261) is located at 2510 Middlefield Road and is open Monday-Thursday, 10-7; Friday, 10-5. The Schaberg Branch (650-780-7010) is located at 2140 Euclid Avenue and is open Tuesday-Thursday, 1-6; Saturday, 10-3. The Redwood Shores Branch (650-780-5740) is located at 399 Marine Parkway and is open Monday-Thursday, 10-8; Saturday, 10-5; Sunday 12-5.", "short_desc": "Provides general reference and reading materials to adults, teenagers and children.", "address_attributes": {"street_1": "1044 Middlefield Road", "city": "Redwood City", "state": "CA", "postal_code": "94063", "country_code": "US"}, "mail_address_attributes": {"attention": "Main Library", "street_1": "1044 Middlefield Road", "city": "Redwood City", "state": "CA", "postal_code": "94063", "country_code": "US"}, "transportation": "SAMTRANS stops within 1 block; CALTRAIN stops within 1 block.", "accessibility": ["elevator", "tape_braille", "ramp", "restroom", "disabled_parking", "wheelchair"], "languages": ["Spanish"], "emails": ["rclinfo@redwoodcity.org"], "phones_attributes": [{"number": "650 780-7018", "department": "Circulation", "number_type": "voice"}, {"number": "650 780-7069", "number_type": "fax"} ], "website": "http://www.redwoodcity.org/library", "services_attributes": [{"status": "active", "name": "Main Library", "description": "Provides general reading and media materials, literacy and homework assistance, and programs for all ages. Provides public computers, wireless connectivity, a children's room, teen center, and a local history collection.", "audience": null, "eligibility": "Resident of California to obtain a card", "fees": "None.", "how_to_apply": "Walk in. Proof of California residency to receive a library card.", "service_areas": ["San Mateo County"], "keywords": ["EDUCATION SERVICES", "Library", "Libraries", "Public Libraries"], "wait": "No wait.", "funding_sources": ["City"] } ] }, {"name": "Schaberg Branch", "latitude":37.466553, "longitude":-122.2430898, "contacts_attributes": [{"name": "Dave Genesy", "title": "Library Director"}, {"name": " Elizabeth Meeks", "title": "Branch Manager"} ], "description": "Provides general reading materials, including large-type books, DVD's and CDs, books on CD and some Spanish language materials to children. Offers children's programs and a Summer Reading Club. Participates in the Peninsula Library System.", "short_desc": "Provides general reading materials and reference services.", "address_attributes": {"street_1": "2140 Euclid Avenue.", "city": "Redwood City", "state": "CA", "postal_code": "94061", "country_code": "US"}, "mail_address_attributes": {"attention": "Schaberg Branch", "street_1": "2140 Euclid Avenue", "city": "Redwood City", "state": "CA", "postal_code": "94061", "country_code": "US"}, "transportation": "SAMTRANS stops within 1 block.", "accessibility": ["ramp"], "languages": null, "emails": null, "phones_attributes": [{"number": "650 780-7010", "number_type": "voice"}, {"number": "650 365-3738", "number_type": "fax"} ], "website": null, "services_attributes": [{"status": "active", "name": "Schaberg Branch", "description": "Provides general reading materials, including large-type books, DVD's and CDs, books on CD and some Spanish language materials to children. Offers children's programs and a Summer Reading Club. Participates in the Peninsula Library System.", "audience": null, "eligibility": "Resident of California to obtain a library card for borrowing materials", "fees": "None.", "how_to_apply": "Walk in. Proof of California residency required to receive a library card.", "service_areas": ["San Mateo County"], "keywords": ["EDUCATION SERVICES", "Library", "Libraries", "Public Libraries"], "wait": "No wait.", "funding_sources": ["City"] } ] }, {"name": "Project Read", "latitude":37.4838423, "longitude":-122.2273954, "contacts_attributes": [{"name": "Kathy Endaya", "title": "Director"} ], "description": "Offers an intergenerational literacy program for youth and English-speaking adults seeking to improver literacy skills. Adult services include: adult one-to-one tutoring to improve basic skills in reading, writing and critical thinking; Families for Literacy (FFL), a home-based family literacy program for parents who want to be able to read to their young children; and small group/English as a Second Language (ESL). Youth services include: Youth Tutoring, Families in Partnership (FIP); Teen-to-Elementary Student Tutoring, Kids in Partnership (KIP); and computer-aided literacy. Redwood City Friends of Literacy is a fundraising board that helps to support and to fund Redwood City's Project Read. Call for more information about each service.", "short_desc": "Offers an intergenerational literacy program for adults and youth seeking to improver literacy skills.", "address_attributes": {"street_1": "1044 Middlefield Road", "street_2": "2nd Floor", "city": "Redwood City", "state": "CA", "postal_code": "94063", "country_code": "US"}, "mail_address_attributes": {"attention": "Project Read", "street_1": "1044 Middlefield Road", "street_2": "2nd Floor", "city": "Redwood City", "state": "CA", "postal_code": "94063", "country_code": "US"}, "transportation": "SAMTRANS stops within 1 block.", "accessibility": ["elevator", "ramp", "restroom", "disabled_parking"], "languages": null, "emails": ["rclread@redwoodcity.org"], "phones_attributes": [{"number": "650 780-7077", "number_type": "voice"}, {"number": "650 780-7004", "number_type": "fax"} ], "website": "http://www.projectreadredwoodcity.org", "services_attributes": [{"status": "active", "name": "Project Read", "description": "Offers an intergenerational literacy program for youth and English-speaking adults seeking to improver literacy skills. Adult services include: adult one-to-one tutoring to improve basic skills in reading, writing and critical thinking; Families for Literacy (FFL), a home-based family literacy program for parents who want to be able to read to their young children; and small group/English as a Second Language (ESL). Youth services include: Youth Tutoring, Families in Partnership (FIP); Teen-to-Elementary Student Tutoring, Kids in Partnership (KIP); and computer-aided literacy. Redwood City Friends of Literacy is a fundraising board that helps to support and to fund Redwood City's Project Read. Call for more information about each service.", "audience": "Adults, parents, children in 1st-12th grades in the Redwood City school districta", "eligibility": "English-speaking adult reading at or below 7th grade level or child in 1st-12th grade in the Redwood City school districts", "fees": "None.", "how_to_apply": "Walk in or apply by phone, email or webpage registration.", "service_areas": ["Daly City"], "keywords": ["EDUCATION SERVICES", "Adult", "Alternative", "Literacy", "Literacy Programs", "Libraries", "Public Libraries", "Youth"], "wait": "Depends on availability of tutors for small groups and one-on-one.", "funding_sources": ["City", "Donations", "Federal", "Grants", "State"] } ] }, {"name": "Redwood Shores Branch", "latitude":37.5304228, "longitude":-122.2586432, "contacts_attributes": [{"name": "Dave Genesy", "title": "Library Director"} ], "description": "Provides general reading materials, including large-type books, videos, music cassettes and CDs, and books on tape. Offers children's programs and a Summer Reading Club. Meeting room is available to nonprofit groups. Participates in the Peninsula Library System.", "short_desc": "Provides general reading materials and reference services.", "address_attributes": {"street_1": "399 Marine Parkway.", "city": "Redwood City", "state": "CA", "postal_code": "94065", "country_code": "US"}, "mail_address_attributes": {"attention": "Redwood Shores Branch", "street_1": "399 Marine Parkway", "city": "Redwood City", "state": "CA", "postal_code": "94065", "country_code": "US"}, "transportation": null, "accessibility": null, "languages": null, "emails": null, "phones_attributes": [{"number": "650 780-5740", "number_type": "voice"} ], "website": "http://www.redwoodcity.org/library", "services_attributes": [{"status": "active", "name": "Redwood Shores Branch", "description": "Provides general reading materials, including large-type books, videos, music cassettes and CDs, and books on tape. Offers children's programs and a Summer Reading Club. Meeting room is available to nonprofit groups. Participates in the Peninsula Library System.", "audience": null, "eligibility": "Resident of California to obtain a library card", "fees": "None.", "how_to_apply": "Walk in. Proof of California residency required to receive a library card.", "service_areas": ["San Mateo County"], "keywords": ["EDUCATION SERVICES", "Library", "Libraries", "Public Libraries"], "wait": "No wait.", "funding_sources": ["City"] } ] } ]} +{"name": "Salvation Army", "description": "The Salvation Army operates 7,546 centers in communities across the United States. These include food distribution, disaster relief, rehabilitation centers, anti-human trafficking efforts, and a wealth of children's programs.", "locations": [{"name": "Redwood City Corps", "latitude":37.4913864, "longitude":-122.2315683, "contacts_attributes": [{"name": "Andres Espinoza", "title": "Captain, Commanding Officer"} ], "description": "Provides food, clothing, bus tokens and shelter to individuals and families in times of crisis from the Redwood City Corps office and community centers throughout the county. Administers Project REACH (Relief for Energy Assistance through Community Help) funds to prevent energy shut-off through a one-time payment. Counseling and translation services (English/Spanish) are available either on a walk-in basis or by appointment. Rental assistance with available funds. Another office (described separately) is located at 409 South Spruce Avenue, South San Francisco (650-266-4591).", "short_desc": "Provides a variety of emergency services to low-income persons. Also sponsors recreational and educational activities.", "address_attributes": {"street_1": "660 Veterans Blvd.", "city": "Redwood City", "state": "CA", "postal_code": "94063", "country_code": "US"}, "mail_address_attributes": {"attention": "Salvation Army", "street_1": "P.O. Box 1147", "city": "Redwood City", "state": "CA", "postal_code": "94064", "country_code": "US"}, "transportation": "SAMTRANS stops nearby.", "accessibility": ["wheelchair"], "languages": ["Spanish"], "emails": null, "phones_attributes": [{"number": "650 368-4643", "number_type": "voice"}, {"number": "650 364-1712", "number_type": "fax"} ], "website": "http://www.tsagoldenstate.org", "services_attributes": [{"status": "active", "name": "Redwood City Corps", "description": "Provides food, clothing, bus tokens and shelter to individuals and families in times of crisis from the Redwood City Corps office and community centers throughout the county.", "audience": "Individuals or families with low or no income and/or trying to obtain public assistance", "eligibility": "None for most services. For emergency assistance, must have low or no income and be willing to apply for public assistance", "fees": "None.", "how_to_apply": "Call for appointment. Referral from human service professional preferred for emergency assistance.", "service_areas": ["Belmont", "Burlingame", "East Palo Alto"], "keywords": ["COMMUNITY SERVICES", "Interpretation/Translation", "EMERGENCY SERVICES", "Shelter/Refuge", "FINANCIAL ASSISTANCE SERVICES", "Utilities", "MENTAL HEALTH SERVICES", "Individual/Group Counseling", "Food Pantries", "Homeless Shelter", "Rental Deposit Assistance", "Utility Service Payment Assistance"], "wait": "Up to 20 minutes.", "funding_sources": ["Donations", "Grants"] } ] }, {"name": "Adult Rehabilitation Center", "latitude":37.7488993, "longitude":-122.4203671, "contacts_attributes": [{"name": "Jack Phillips", "title": "Administrator"} ], "description": "Provides a long-term (6-12 month) residential rehabilitation program for men and women with substance abuse and other problems. Residents receive individual counseling, and drug and alcohol education. The spiritual side of recovery is addressed through chapel services and Bible study as well as 12-step programs. Nicotine cessation is a part of the program. Residents must be physically able to work, seeking treatment for substance abuse, sober long enough to pass urine drug screen before entering and agreeable to participating in weekly 12-step programs such as Alcoholics Anonymous or Narcotics Anonymous. Pinehurst Lodge is a separate facility for women only. Transition houses for men and women graduates also available.", "short_desc": "Long-term (6-12 month) residential treatment program for men/women age 21-60.", "address_attributes": {"street_1": "1500 Valencia Street", "city": "San Francisco", "state": "CA", "postal_code": "94110", "country_code": "US"}, "mail_address_attributes": {"attention": "Adult Rehabilitation Center", "street_1": "1500 Valencia Street", "city": "San Francisco", "state": "CA", "postal_code": "94110", "country_code": "US"}, "transportation": "MUNI - 26 Valencia, Mission Street lines.", "accessibility": ["wheelchair"], "languages": ["Spanish"], "emails": null, "phones_attributes": [{"number": "415 643-8000", "number_type": "voice"}, {"number": "415 285-1391", "number_type": "fax"} ], "website": null, "services_attributes": [{"status": "active", "name": "Adult Rehabilitation Center", "description": "Provides a long-term (6-12 month) residential rehabilitation program for men and women with substance abuse and other problems. Residents receive individual counseling, and drug and alcohol education. The spiritual side of recovery is addressed through chapel services and Bible study as well as 12-step programs. Nicotine cessation is a part of the program. Residents must be physically able to work, seeking treatment for substance abuse, sober long enough to pass urine drug screen before entering and agreeable to participating in weekly 12-step programs such as Alcoholics Anonymous or Narcotics Anonymous. Pinehurst Lodge is a separate facility for women only. Transition houses for men and women graduates also available.", "audience": "Adult alcoholic/drug addictive men and women with social and spiritual problems", "eligibility": "Age 21-60, detoxed, physically able and willing to participate in a work therapy program", "fees": "None.", "how_to_apply": "Walk in or through other agency referral.", "service_areas": ["Alameda County", "San Mateo County"], "keywords": ["ALCOHOLISM SERVICES", "Residential Care", "DRUG ABUSE SERVICES", "Psychiatric Emergency"], "wait": "Varies according to available beds for men and women. Women have a longer wait due to small number of beds statewide.", "funding_sources": ["Donations", "Sales"] } ] }, {"name": "Sunnyvale Corps", "latitude":37.3569004, "longitude":-122.0600024, "contacts_attributes": [{"name": "James Lee", "title": "Commanding Officer"} ], "description": "Provides emergency assistance including food and clothing for persons in immediate need. Provides PG&E assistance through REACH program. Youth programs offer tutoring, music and troops. Information on related resources is available. Also provides rental assistance when funds are available.", "short_desc": "Provides emergency assistance to persons in immediate need and offers after school activities and summer day camp program.", "address_attributes": {"street_1": "1161 South Bernardo", "city": "Sunnyvale", "state": "CA", "postal_code": "94087", "country_code": "US"}, "mail_address_attributes": {"attention": "Salvation Army", "street_1": "P.O. Box 61868", "city": "Sunnyvale", "state": "CA", "postal_code": "94088", "country_code": "US"}, "transportation": "VTA stops within 4 blocks.", "accessibility": [], "languages": ["Korean"], "emails": ["william_nichols@usw.salvationarmy.org"], "phones_attributes": [{"number": "408 720-0420", "number_type": "voice"}, {"number": "408 720-8075", "number_type": "fax"} ], "website": null, "services_attributes": [{"status": "active", "name": "Sunnyvale Corps", "description": "Provides emergency assistance including food and clothing for persons in immediate need. Provides PG&E assistance through REACH program. Youth programs offer tutoring, music and troops. Information on related resources is available. Also provides rental assistance when funds are available.", "audience": null, "eligibility": "None for emergency assistance", "fees": "None for emergency services. Vary for after school activities. Cash and checks accepted.", "how_to_apply": "Walk in. Written application, identification required for emergency assistance.", "service_areas": [], "keywords": ["COMMODITY SERVICES", "Clothing/Personal Items", "CHILD PROTECTION AND CARE SERVICES", "Day Care", "COMMUNITY SERVICES", "Information and Referral", "EMERGENCY SERVICES", "Food Boxes/Food Vouchers", "FINANCIAL ASSISTANCE SERVICES", "Utilities", "RECREATION/LEISURE SERVICES", "Camping", "Emergency Food", "Clothing", "Utility Assistance", "Youth Development"], "wait": "No wait.", "funding_sources": ["Donations", "Fees", "Grants"] } ] }, {"name": "South San Francisco Citadel Corps", "latitude":37.6445898, "longitude":-122.4224905, "contacts_attributes": [{"name": "Kenneth Gibson", "title": "Major"} ], "description": "Provides emergency food, clothing and furniture vouchers to low-income families in times of crisis. Administers Project REACH (Relief for Energy Assistance through Community Help) funds to prevent energy shut-off through a one-time payment. Offers a Saturday morning Homeless Feeding Program at 10:30, as well as Sunday services and spiritual counseling. Provides Christmas toys and Back-to-School clothes and supplies. Offers case management, advocacy and referrals to other agencies.", "short_desc": "Provides emergency food and clothing and furniture vouchers to low-income families in times of crisis.", "address_attributes": {"street_1": "409 South Spruce Avenue", "city": "South San Francisco", "state": "CA", "postal_code": "94080", "country_code": "US"}, "mail_address_attributes": {"attention": "Salvation Army", "street_1": "409 South Spruce Avenue", "city": "South San Francisco", "state": "CA", "postal_code": "94080", "country_code": "US"}, "transportation": "SAMTRANS stops within 1 block, BART stops within 3 blocks.", "accessibility": ["wheelchair"], "languages": null, "emails": null, "phones_attributes": [{"number": "650 266-4591", "number_type": "voice"}, {"number": "650 266-2594", "number_type": "fax"}, {"number": "650 266-4594", "number_type": "fax"} ], "website": "http://www.tsagoldenstate.org", "services_attributes": [{"status": "active", "name": "South San Francisco Citadel Corps", "description": "Provides emergency food, clothing and furniture vouchers to low-income families in times of crisis. Administers Project REACH (Relief for Energy Assistance through Community Help) funds to prevent energy shut-off through a one-time payment. Offers a Saturday morning Homeless Feeding Program at 10:30, as well as Sunday services and spiritual counseling. Provides Christmas toys and Back-to-School clothes and supplies. Offers case management, advocacy and referrals to other agencies.", "audience": null, "eligibility": "Low-income families", "fees": "None.", "how_to_apply": "Call for information.", "service_areas": ["Colma", "Daly City", "South San Francisco"], "keywords": ["COMMODITY SERVICES", "Clothing/Personal Items", "COMMUNITY SERVICES", "Information and Referral", "EMERGENCY SERVICES", "Food Boxes/Food Vouchers", "FINANCIAL ASSISTANCE SERVICES", "Utilities", "Emergency Food", "Food Pantries", "Furniture", "Clothing", "Utility Assistance", "School Supplies", "Case/Care Management", "Holiday Programs", "Pastoral Counseling", "Low Income"], "wait": null, "funding_sources": ["Donations"] } ] } ]} +{"name": "Samaritan House", "description": "Since 1974, Samaritan House has been serving low-income families and individuals in San Mateo County. Our services are designed to meet the immediate and basic needs of our clients for food, clothing, shelter, health care, worker resources, and counseling services.", "locations": [{"name": "Redwood City Free Medical Clinic", "latitude":37.468614, "longitude":-122.2067982, "contacts_attributes": [{"name": "Sharon Petersen", "title": "Administrator"} ], "description": "Provides free medical care to those in need. Offers basic medical exams for adults and tuberculosis screening. Assists the individual to access other services in the community. By appointment only, Project Smile provides a free dental exam, dental cleaning and oral hygiene instruction for children, age 3-12, of Samaritan House clients.", "short_desc": "Provides free medical care to those in need.", "address_attributes": {"street_1": "114 Fifth Avenue", "city": "Redwood City", "state": "CA", "postal_code": "94063", "country_code": "US"}, "mail_address_attributes": {"attention": "Redwood City Free Medical Clinic", "street_1": "114 Fifth Avenue", "city": "Redwood City", "state": "CA", "postal_code": "94063", "country_code": "US"}, "transportation": "SAMTRANS stops within 2 blocks.", "accessibility": ["restroom", "wheelchair"], "languages": ["Spanish"], "emails": ["gracie@samaritanhouse.com"], "phones_attributes": [{"number": "650 839-1447", "number_type": "voice"}, {"number": "650 839-1457", "number_type": "fax"} ], "website": "http://www.samaritanhouse.com", "services_attributes": [{"status": "active", "name": "Project Smile", "description": "By appointment only, Project Smile provides a free dental exam, dental cleaning and oral hygiene instruction for children, age 3-12, of Samaritan House clients.", "audience": null, "eligibility": "Low-income person without access to health care", "fees": "None.", "how_to_apply": "Call for screening appointment. Medical visits are by appointment only.", "service_areas": ["East Palo Alto"], "keywords": ["HEALTH SERVICES", "Outpatient Care", "Community Clinics"], "wait": "Varies.", "funding_sources": ["Donations", "Grants"] } ] }, {"name": "San Mateo Free Medical Clinic", "latitude":37.5326941, "longitude":-122.2931236, "contacts_attributes": [{"name": "Sharon Petersen", "title": "Administrator"} ], "description": "Provides free medical and dental care to those in need. Offers basic medical care for adults.", "short_desc": "Provides free medical and dental care to those in need. Offers basic medical care for adults.", "address_attributes": {"street_1": "19 West 39th Avenue", "city": "San Mateo", "state": "CA", "postal_code": "94403", "country_code": "US"}, "mail_address_attributes": {"attention": "San Mateo Free Medical/Dental", "street_1": "19 West 39th Avenue", "city": "San Mateo", "state": "CA", "postal_code": "94403", "country_code": "US"}, "transportation": "SAMTRANS stops within 1 block.", "accessibility": ["elevator", "ramp", "wheelchair"], "languages": ["Spanish"], "emails": ["smcmed@samaritanhouse.com"], "phones_attributes": [{"number": "650 578-0400", "number_type": "voice"}, {"number": "650 578-0440", "number_type": "fax"} ], "website": "http://www.samaritanhouse.com", "services_attributes": [{"status": "active", "name": "San Mateo Free Medical Clinic", "description": "Provides free medical and dental care to those in need. Offers basic medical care for adults. Assists people with problems or questions relating to Medi-Cal, Healthy Families, Healthy Kids, and Medicare.", "audience": null, "eligibility": "Low-income person without access to health care", "fees": "None.", "how_to_apply": "Call for screening appointment (650-347-3648).", "service_areas": ["Belmont", "Burlingame"], "keywords": ["HEALTH SERVICES", "Outpatient Care", "Community Clinics", "Medicare"], "wait": "Varies.", "funding_sources": ["Donations", "Grants"] } ] } ]} +{"name": "Fake Org", "description": "An organization created for testing purposes.", "locations": [{"accessibility": [], "description": "no phone", "emails": [], "languages": null, "mail_address_attributes": {"attention": "", "street_1": "123 Main Street", "city": "Fairfax", "state": "VA", "postal_code": "22031", "country_code": "US"}, "name": "Location with no phone", "phones_attributes": [], "short_desc": "no phone", "transportation": null, "website": null, "virtual": "true", "services_attributes": [{"status":"defunct","name": "Service with blank fields", "description": "no unrequired fields for this service", "audience": "", "how_to_apply": "Walk in."} ] } ] } +{"name": "Admin Test Org", "description": "An organization created for testing purposes.", "locations": [{"accessibility": ["elevator", "restroom"], "address_attributes": {"city": "Belmont", "state": "CA", "street_1": "123 El Camino Real", "postal_code": "94002", "country_code": "US"}, "contacts_attributes": [{"name": "Moncef", "department": "Office of Innovation"} ], "latitude":37.5291938,"longitude":-122.2871612, "description": "This is a description", "emails": ["eml@example.org"], "languages": null, "name": "Admin Test Location", "phones_attributes": [{"number": "7035551212", "vanity_number": "703555-ABCD", "extension": "1223", "department": "CalFresh", "number_type": "voice"}, {"number": "2025551212", "department": "CalFresh", "number_type": "fax"} ], "short_desc": "This is a short description", "transportation": "SAMTRANS stops within 1/2 mile.", "website": "http://codeforamerica.org", "services_attributes": [{"status":"inactive","name": "Service for Admin Test Location", "description": "just a test service", "how_to_apply": "By phone during business hours.", "service_areas": ["San Mateo County"] } ] } ] } +{"name": "Example Agency", "alternate_name": "Alternate Agency Name", "date_incorporated": "1970-01-01", "description": "Sample organization description. The Public Library inspires learning through innovative and visionary programming and services—literacy programs, support for school success, access to technology, safe, inviting spaces for youth and families, and gathering places that connect the members of the community with a love of reading and learning.", "email": "info@example.org", "website": "http://example.org", "locations": [{"accessibility": ["disabled_parking", "restroom", "wheelchair"], "admin_emails": ["foo@bar.com"], "description": "[NOTE THIS IS NOT A REAL ORGANIZATION--THIS IS FOR TESTTING PURPOSES OF THIS ALPHA APP] Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent suscipit metus eu orci lobortis dictum. In hac habitasse platea dictumst. Vivamus vulputate, neque ut sodales gravida, lorem nunc pharetra ligula, ac cursus sem justo a sapien. Duis vitae vestibulum magna. Sed vel augue in justo rhoncus viverra. Nam ac felis a purus lobortis porttitor sit amet quis est. Suspendisse vulputate nisl quis nisi fermentum aliquet euismod at augue. Sed ultricies, purus dapibus tristique dictum, tortor mauris porttitor nulla, at porta nisl sem sed dolor. Proin ac hendrerit erat. Duis porta iaculis orci, eu euismod quam tristique in. Phasellus nec purus sit amet sapien volutpat egestas.", "emails": ["info@example.com", "referrals@example.com"], "languages": ["Cantonese", "Taiwanese", "Tagalog", "Russian", "Spanish"], "latitude":37.7726402,"longitude":-122.4099154, "name": "Example Location", "alternate_name": "The Test Spot", "short_desc": "[NOTE THIS IS NOT A REAL ENTRY--THIS IS FOR TESTING PURPOSES OF THIS ALPHA APP]", "transportation": "SAMTRANS stops within 1 block", "website": "http://www.smchealth.org", "address_attributes": {"street_1": "2013 Avenue of the fellows", "street_2": "Suite 100", "city": "San Francisco", "state": "CA", "postal_code": "94103", "country_code": "US"}, "contacts_attributes": [{"email": "suzanne@example.com", "name": "Suzanne Badenhoop", "title": "Board President", "department": "Referrals", "phones_attributes": [{"number": "123-456-7890", "extension": "1200", "department": "Referrals", "number_type": "voice", "country_prefix": "+1"}, {"number": "202-555-1212", "department": "Referrals", "number_type": "fax", "country_prefix": "+1"} ] } ], "mail_address_attributes": {"attention": "The Foodies", "street_1": "2013 Avenue of the fellows", "street_2": "Suite 100", "city": "San Francisco", "state": "CA", "postal_code": "90210", "country_code": "US"}, "phones_attributes": [{"department": "Information", "extension": "123", "number": "650 372-6200", "number_type": "voice", "vanity_number": "222-555-INFO"}, {"department": "Reservations", "number": "650 627-8244", "number_type": "fax"}, {"department": "Hotline", "number": "800 372-6200", "number_type": "hotline"}, {"department": "Rental Assistance", "extension": "202", "number": "650 372-6200", "number_type": "tty"} ], "services_attributes": [{"status":"active","accepted_payments": ["Cash", "Credit Card", "Check"], "alternate_name": "Fotos para pasaportes", "audience": "Profit and nonprofit businesses, the public, military facilities, schools and government entities", "description": "[NOTE THIS IS NOT A REAL SERVICE--THIS IS FOR TESTING PURPOSES OF THIS ALPHA APP] Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent suscipit metus eu orci lobortis dictum. In hac habitasse platea dictumst. Vivamus vulputate, neque ut sodales gravida, lorem nunc pharetra ligula, ac cursus sem justo a sapien. Duis vitae vestibulum magna. Sed vel augue in justo rhoncus viverra. Nam ac felis a purus lobortis porttitor sit amet quis est. Suspendisse vulputate nisl quis nisi fermentum aliquet euismod at augue. Sed ultricies, purus dapibus tristique dictum, tortor mauris porttitor nulla, at porta nisl sem sed dolor. Proin ac hendrerit erat. Duis porta iaculis orci, eu euismod quam tristique in. Phasellus nec purus sit amet sapien volutpat egestas.", "eligibility": "None", "email": "passports@example.org", "fees": "None, except for permits and photocopying. Cash, checks and credit cards accepted", "funding_sources": ["City", "County", "Federal", "State"], "how_to_apply": "Walk in or apply by phone or mail", "keywords": ["Salud", "Medicina"], "languages": ["English", "Spanish"], "name": "Passport Photos", "required_documents": ["Government-issued identification"], "service_areas": ["San Mateo County", "Alameda County"], "status": "active", "website": "http://www.example.com", "wait": "No wait to 2 weeks", "updated_at": "2014-04-18T12:49:47.791-07:00", "categories": [] }, {"audience": "Second service and nonprofit businesses, the public, military facilities, schools and government entities", "description": "[NOTE THIS IS NOT A REAL ORGANIZATION--THIS IS FOR TESTTING PURPOSES OF THIS ALPHA APP] Offers, by appointment, WIC (Women, Infants and Children) services, insurance enrollment, food stamps, CalWorks assistance, tax preparation and notary services. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent suscipit metus eu orci lobortis dictum. In hac habitasse platea dictumst. Vivamus vulputate, neque ut sodales gravida, lorem nunc pharetra ligula, ac cursus sem justo a sapien. Duis vitae vestibulum magna. Sed vel augue in justo rhoncus viverra. Nam ac felis a purus lobortis porttitor sit amet quis est. Suspendisse vulputate nisl quis nisi fermentum aliquet euismod at augue. Sed ultricies, purus dapibus tristique dictum, tortor mauris porttitor nulla, at porta nisl sem sed dolor. Proin ac hendrerit erat. Duis porta iaculis orci, eu euismod quam tristique in. Phasellus nec purus sit amet sapien volutpat egestas.", "eligibility": "None", "fees": "None, except for permits and photocopying. Cash, checks and credit cards accepted", "funding_sources": ["City", "County", "Federal", "State"], "how_to_apply": "Walk in or apply by phone or mail", "keywords": ["Ruby on Rails/Postgres/Redis", "testing", "wic"], "name": "Example Service Name", "service_areas": ["San Mateo County", "Alameda County"], "website": "http://www.example.com", "wait": "No wait to 2 weeks", "status": "active", "categories": [] } ] } ] } diff --git a/db/migrate/20141108194838_replace_location_urls_with_website.rb b/db/migrate/20141108194838_replace_location_urls_with_website.rb new file mode 100644 index 000000000..5eedd72b9 --- /dev/null +++ b/db/migrate/20141108194838_replace_location_urls_with_website.rb @@ -0,0 +1,7 @@ +class ReplaceLocationUrlsWithWebsite < ActiveRecord::Migration + def change + add_column :locations, :website, :string + remove_column :locations, :urls, :string + add_index :locations, :website, using: 'gin' + end +end diff --git a/db/migrate/20141108214741_add_website_index_to_locations.rb b/db/migrate/20141108214741_add_website_index_to_locations.rb new file mode 100644 index 000000000..538e8d755 --- /dev/null +++ b/db/migrate/20141108214741_add_website_index_to_locations.rb @@ -0,0 +1,9 @@ +class AddWebsiteIndexToLocations < ActiveRecord::Migration + def up + execute "CREATE INDEX locations_website_with_varchar_pattern_ops ON locations (website varchar_pattern_ops);" + end + + def down + execute "DROP INDEX locations_website_with_varchar_pattern_ops" + end +end diff --git a/db/structure.sql b/db/structure.sql index e8605f782..df2b6fcc3 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -352,14 +352,14 @@ CREATE TABLE locations ( name text, short_desc text, transportation text, - urls text, slug text, created_at timestamp without time zone, updated_at timestamp without time zone, tsv_body tsvector, alternate_name character varying(255), virtual boolean DEFAULT false, - active boolean DEFAULT true + active boolean DEFAULT true, + website character varying(255) ); @@ -1227,10 +1227,10 @@ CREATE INDEX locations_name ON locations USING gin (to_tsvector('english'::regco -- --- Name: locations_urls; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- Name: locations_website_with_varchar_pattern_ops; Type: INDEX; Schema: public; Owner: -; Tablespace: -- -CREATE INDEX locations_urls ON locations USING gin (to_tsvector('english'::regconfig, urls)); +CREATE INDEX locations_website_with_varchar_pattern_ops ON locations USING btree (website varchar_pattern_ops); -- @@ -1359,3 +1359,7 @@ INSERT INTO schema_migrations (version) VALUES ('20141108042551'); INSERT INTO schema_migrations (version) VALUES ('20141108183056'); +INSERT INTO schema_migrations (version) VALUES ('20141108194838'); + +INSERT INTO schema_migrations (version) VALUES ('20141108214741'); + diff --git a/script/reset_test_db b/script/reset_test_db new file mode 100755 index 000000000..a2c9bffe3 --- /dev/null +++ b/script/reset_test_db @@ -0,0 +1,7 @@ +#!/bin/sh + +set -e + +dropdb ohana_api_test +bin/rake db:create:all +bin/rake db:migrate diff --git a/spec/api/get_locations_spec.rb b/spec/api/get_locations_spec.rb index 623ea072c..3f5d27f43 100644 --- a/spec/api/get_locations_spec.rb +++ b/spec/api/get_locations_spec.rb @@ -113,8 +113,8 @@ expect(json.first.keys).to_not include('transportation') end - it 'includes the urls attribute' do - expect(json.first.keys).to include('urls') + it 'includes the website attribute' do + expect(json.first.keys).to include('website') end it 'includes the address association' do diff --git a/spec/api/get_organization_locations_spec.rb b/spec/api/get_organization_locations_spec.rb index c183b19e5..3a0ea8a1c 100644 --- a/spec/api/get_organization_locations_spec.rb +++ b/spec/api/get_organization_locations_spec.rb @@ -15,7 +15,7 @@ name: 'new location', short_desc: 'short_desc', transportation: 'BART stops 1 block away', - urls: %w(http://monfresh.com), + website: 'http://monfresh.com', address_attributes: attributes_for(:address) } @location = @org.locations.create!(attrs) @@ -128,8 +128,8 @@ expect(json.first.keys).to_not include('transportation') end - it 'includes the location urls attribute' do - expect(json.first.keys).to include('urls') + it 'includes the location website attribute' do + expect(json.first.keys).to include('website') end it "doesn't include the location contacts attribute" do diff --git a/spec/api/patch_location_spec.rb b/spec/api/patch_location_spec.rb index 044383aaf..fc308d2ec 100644 --- a/spec/api/patch_location_spec.rb +++ b/spec/api/patch_location_spec.rb @@ -15,18 +15,6 @@ expect(json['name']).to eq('New Name') end - it 'sets urls to empty array if value is empty array' do - @loc.update!(urls: %w(http://cfa.org)) - patch api_location_url(@loc, subdomain: ENV['API_SUBDOMAIN']), urls: [] - expect(json['urls']).to eq([]) - end - - it 'sets urls to empty array if value is nil' do - @loc.update!(urls: %w(http://cfa.org)) - patch api_location_url(@loc, subdomain: ENV['API_SUBDOMAIN']), urls: nil - expect(json['urls']).to eq([]) - end - it 'returns 422 if emails is set to empty string' do @loc.update!(emails: %w(moncef@cfa.org)) patch api_location_url(@loc, subdomain: ENV['API_SUBDOMAIN']), emails: '' @@ -42,13 +30,6 @@ expect(json['error']).to include('Attribute was supposed to be an Array') end - it 'returns 422 if urls is set to empty string' do - patch api_location_url(@loc, subdomain: ENV['API_SUBDOMAIN']), urls: '' - expect(response.status).to eq(422) - expect(json['message']).to eq('Validation failed for resource.') - expect(json['error']).to include('Attribute was supposed to be an Array') - end - it 'returns 422 if languages is set to empty string' do @loc.update!(languages: ['English']) patch api_location_url(@loc, subdomain: ENV['API_SUBDOMAIN']), languages: '' diff --git a/spec/api/search_spec.rb b/spec/api/search_spec.rb index 436e78129..be7a53f4c 100644 --- a/spec/api/search_spec.rb +++ b/spec/api/search_spec.rb @@ -293,49 +293,49 @@ context 'when email parameter contains custom domain' do it "finds domain name when url contains 'www'" do - create(:location, urls: ['http://www.smchsa.org']) + create(:location, website: 'http://www.smchsa.org') create(:nearby_loc, emails: ['info@cfa.org']) get "#{api_search_index_url(subdomain: ENV['API_SUBDOMAIN'])}?email=foo@smchsa.org" expect(headers['X-Total-Count']).to eq '1' end it 'finds naked domain name' do - create(:location, urls: ['http://smchsa.com']) + create(:location, website: 'http://smchsa.com') create(:nearby_loc, emails: ['hello@cfa.com']) get "#{api_search_index_url(subdomain: ENV['API_SUBDOMAIN'])}?email=foo@smchsa.com" expect(headers['X-Total-Count']).to eq '1' end it 'finds long domain name in both url and email' do - create(:location, urls: ['http://smchsa.org']) + create(:location, website: 'http://smchsa.org') create(:nearby_loc, emails: ['info@smchsa.org']) get "#{api_search_index_url(subdomain: ENV['API_SUBDOMAIN'])}?email=foo@smchsa.org" expect(headers['X-Total-Count']).to eq '2' end it 'finds domain name when URL contains path' do - create(:location, urls: ['http://www.smchealth.org/mcah']) + create(:location, website: 'http://www.smchealth.org/mcah') create(:nearby_loc, emails: ['org@mcah.org']) get "#{api_search_index_url(subdomain: ENV['API_SUBDOMAIN'])}?email=foo@smchealth.org" expect(headers['X-Total-Count']).to eq '1' end it 'finds domain name when URL contains multiple paths' do - create(:location, urls: ['http://www.smchsa.org/portal/site/planning']) + create(:location, website: 'http://www.smchsa.org/portal/site/planning') create(:nearby_loc, emails: ['sanmateo@ca.us']) get "#{api_search_index_url(subdomain: ENV['API_SUBDOMAIN'])}?email=foo@smchsa.org" expect(headers['X-Total-Count']).to eq '1' end it 'finds domain name when URL contains a dash' do - create(:location, urls: ['http://www.childsup-connect.ca.gov']) + create(:location, website: 'http://www.childsup-connect.ca.gov') create(:nearby_loc, emails: ['gov@childsup-connect.gov']) get "#{api_search_index_url(subdomain: ENV['API_SUBDOMAIN'])}?email=foo@childsup-connect.ca.gov" expect(headers['X-Total-Count']).to eq '1' end it 'finds domain name when URL contains a number' do - create(:location, urls: ['http://www.prenatalto3.org']) + create(:location, website: 'http://www.prenatalto3.org') create(:nearby_loc, emails: ['info@rwc2020.org']) get "#{api_search_index_url(subdomain: ENV['API_SUBDOMAIN'])}?email=foo@prenatalto3.org" expect(headers['X-Total-Count']).to eq '1' diff --git a/spec/factories/locations.rb b/spec/factories/locations.rb index 8cb68eff8..d3b255103 100644 --- a/spec/factories/locations.rb +++ b/spec/factories/locations.rb @@ -18,7 +18,7 @@ factory :location_for_org_admin do name 'Samaritan House' - urls ['http://samaritanhouse.com'] + website 'http://samaritanhouse.com' association :organization, factory: :far_org end @@ -27,7 +27,7 @@ name 'VRS Services ' short_desc 'Provides job training. ' transportation ' BART stop 1 block away.' - urls [' http://samaritanhouse.com ', 'http://samaritanhouse.com'] + website ' http://samaritanhouse.com ' admin_emails [' foo@bar.com ', 'foo@bar.com'] emails [' bar@foo.com ', 'bar@foo.com'] languages [' English', 'Vietnamese '] diff --git a/spec/features/admin/locations/create_location_spec.rb b/spec/features/admin/locations/create_location_spec.rb index 8c7008d8b..9440a1061 100644 --- a/spec/features/admin/locations/create_location_spec.rb +++ b/spec/features/admin/locations/create_location_spec.rb @@ -168,12 +168,11 @@ scenario 'when adding a website', :js do fill_in_all_required_fields - click_link 'Add a new website' - fill_in find(:xpath, "//input[@type='url']")[:id], with: 'http://ruby.com' + fill_in 'location_website', with: 'http://ruby.com' click_button 'Create location' click_link 'New Parent Agency location' - expect(find_field('location[urls][]').value).to eq 'http://ruby.com' + expect(find_field('location_website').value).to eq 'http://ruby.com' end scenario 'when adding an alternate name', :js do diff --git a/spec/features/admin/locations/update_urls_spec.rb b/spec/features/admin/locations/update_urls_spec.rb deleted file mode 100644 index 63fdc7b85..000000000 --- a/spec/features/admin/locations/update_urls_spec.rb +++ /dev/null @@ -1,59 +0,0 @@ -require 'rails_helper' - -feature 'Update websites' do - background do - @location = create(:location) - login_super_admin - visit '/admin/locations/vrs-services' - end - - scenario 'when no websites exist' do - expect(page).to have_no_xpath("//input[@name='location[urls][]']") - end - - scenario 'by adding 2 new websites', :js do - add_two_urls - expect(find_field('location_urls_0').value).to eq 'http://ruby.com' - delete_all_urls - expect(page).to have_no_xpath("//input[@name='location[urls][]']") - end - - scenario 'with 2 urls but one is empty', :js do - @location.update!(urls: ['http://ruby.org']) - visit '/admin/locations/vrs-services' - click_link 'Add a new website' - click_button 'Save changes' - total_urls = all(:xpath, "//input[@type='url']") - expect(total_urls.length).to eq 1 - end - - scenario 'with 2 urls but only one is invalid', :js do - @location.update!(urls: ['http://ruby.org']) - visit '/admin/locations/vrs-services' - click_link 'Add a new website' - urls = page. - all(:xpath, "//input[@name='location[urls][]']") - fill_in urls[-1][:id], with: 'Alexandria' - click_button 'Save changes' - total_fields_with_errors = page.all(:css, '.field_with_errors') - expect(total_fields_with_errors.length).to eq 1 - end - - scenario 'with invalid website' do - @location.update!(urls: ['http://ruby.org']) - visit '/admin/locations/vrs-services' - fill_in 'location_urls_0', with: 'www.monfresh.com' - click_button 'Save changes' - expect(page).to have_content 'www.monfresh.com is not a valid URL' - expect(page).to have_css('.field_with_errors') - end - - scenario 'with valid website' do - @location.update!(urls: ['http://ruby.org']) - visit '/admin/locations/vrs-services' - fill_in 'location_urls_0', with: 'http://codeforamerica.org' - click_button 'Save changes' - expect(find_field('location_urls_0').value). - to eq 'http://codeforamerica.org' - end -end diff --git a/spec/features/admin/locations/update_website_spec.rb b/spec/features/admin/locations/update_website_spec.rb new file mode 100644 index 000000000..0169d514c --- /dev/null +++ b/spec/features/admin/locations/update_website_spec.rb @@ -0,0 +1,23 @@ +require 'rails_helper' + +feature 'Update website' do + background do + @location = create(:location) + login_super_admin + visit '/admin/locations/vrs-services' + end + + scenario 'with invalid website' do + fill_in 'location_website', with: 'www.monfresh.com' + click_button 'Save changes' + expect(page).to have_content 'www.monfresh.com is not a valid URL' + expect(page).to have_css('.field_with_errors') + end + + scenario 'with valid website' do + fill_in 'location_website', with: 'http://codeforamerica.org' + click_button 'Save changes' + expect(find_field('location_website').value). + to eq 'http://codeforamerica.org' + end +end diff --git a/spec/features/admin/locations/visit_location_spec.rb b/spec/features/admin/locations/visit_location_spec.rb index 65bade606..1cd2584b0 100644 --- a/spec/features/admin/locations/visit_location_spec.rb +++ b/spec/features/admin/locations/visit_location_spec.rb @@ -29,11 +29,11 @@ end scenario 'when location includes domain name' do - @location.update!(urls: ['http://samaritanhouse.com']) + @location.update!(website: 'http://samaritanhouse.com') login_admin visit('/admin/locations/vrs-services') expect(page).to_not have_content "Sorry, you don't have access to that page" - @location.update!(urls: []) + @location.update!(website: '') end scenario 'when admin is location admin' do diff --git a/spec/features/admin/organizations/visit_organization_spec.rb b/spec/features/admin/organizations/visit_organization_spec.rb index 192b62655..faaeae13d 100644 --- a/spec/features/admin/organizations/visit_organization_spec.rb +++ b/spec/features/admin/organizations/visit_organization_spec.rb @@ -31,11 +31,11 @@ end scenario 'when admin has matched custom domain name' do - @location.update!(urls: ['http://samaritanhouse.com']) + @location.update!(website: 'http://samaritanhouse.com') login_admin visit('/admin/organizations/parent-agency') expect(page).to_not have_content "Sorry, you don't have access to that page" - @location.update!(urls: []) + @location.update!(website: '') end scenario 'when admin is location admin' do diff --git a/spec/features/admin/services/update_urls_spec.rb b/spec/features/admin/services/update_website_spec.rb similarity index 95% rename from spec/features/admin/services/update_urls_spec.rb rename to spec/features/admin/services/update_website_spec.rb index d78065738..d6b2f25f6 100644 --- a/spec/features/admin/services/update_urls_spec.rb +++ b/spec/features/admin/services/update_website_spec.rb @@ -1,6 +1,6 @@ require 'rails_helper' -feature 'Update websites' do +feature 'Update website' do background do create_service login_super_admin diff --git a/spec/models/location_spec.rb b/spec/models/location_spec.rb index da4efae8d..980b911e5 100644 --- a/spec/models/location_spec.rb +++ b/spec/models/location_spec.rb @@ -17,7 +17,7 @@ it { is_expected.to allow_mass_assignment_of(:name) } it { is_expected.to allow_mass_assignment_of(:short_desc) } it { is_expected.to allow_mass_assignment_of(:transportation) } - it { is_expected.to allow_mass_assignment_of(:urls) } + it { is_expected.to allow_mass_assignment_of(:website) } it { is_expected.to allow_mass_assignment_of(:virtual) } # Associations @@ -43,17 +43,17 @@ it { is_expected.to validate_presence_of(:organization).with_message("can't be blank for Location") } # Validations - it { is_expected.to allow_value('http://monfresh.com').for(:urls) } + it { is_expected.to allow_value('http://monfresh.com').for(:website) } it do is_expected.not_to allow_value('http://'). - for(:urls). + for(:website). with_message('http:// is not a valid URL') end - it { is_expected.not_to allow_value('http:///codeforamerica.org').for(:urls) } - it { is_expected.not_to allow_value('http://codeforamericaorg').for(:urls) } - it { is_expected.not_to allow_value('www.codeforamerica.org').for(:urls) } + it { is_expected.not_to allow_value('http:///codeforamerica.org').for(:website) } + it { is_expected.not_to allow_value('http://codeforamericaorg').for(:website) } + it { is_expected.not_to allow_value('www.codeforamerica.org').for(:website) } it { is_expected.to allow_value('moncef@blah.com').for(:emails) } @@ -87,7 +87,6 @@ it { is_expected.to serialize(:admin_emails).as(Array) } it { is_expected.to serialize(:emails).as(Array) } - it { is_expected.to serialize(:urls).as(Array) } describe 'invalidations' do context 'non-virtual and without an address' do @@ -104,7 +103,7 @@ expect(loc.name).to eq('VRS Services') expect(loc.short_desc).to eq('Provides job training.') expect(loc.transportation).to eq('BART stop 1 block away.') - expect(loc.urls).to eq(['http://samaritanhouse.com']) + expect(loc.website).to eq('http://samaritanhouse.com') expect(loc.admin_emails).to eq(['foo@bar.com']) expect(loc.emails).to eq(['bar@foo.com']) expect(loc.languages).to eq(%w(English Vietnamese))