[web2py] Integration with source control system

2013-12-28 Thread Saifuddin Rangwala
While I make changes to my applications, is there a way to specify a source
control like cvs, github, perforce etc.. that I can specify somewhere so
that all changes that are made are tracked and that I can revert back to
previous change easily?

Or anything equivalent that I can setup to achieve change tracking to my
application code?

-- 
Saif.

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


[web2py] Re: Trouble setting up database that chooses predefined options.

2013-12-28 Thread Cliff
Dave

Just wanted to give you an update. I have it working for now and will play 
with some other features in the future. I tried uploading it to GAE but it 
was being a pain so I threw it on a old web page of mine. 

https://crypto4games.com/bowlgames/

On Monday, December 23, 2013 3:26:46 PM UTC-5, Cliff wrote:
>
> Thanks Dave!
>
> You have been very helpful. I should be able to find my way from here. 
> Thanks again :)
>
>
> On Friday, December 20, 2013 2:46:56 PM UTC-5, Dave S wrote:
>>
>>
>> On Thursday, December 19, 2013 9:06:27 PM UTC-8, Cliff wrote:
>>>
>>> Hi Dave
>>>
>>> Thanks for the reply! That was somewhat the path I was on. I like the 
>>> boolean idea. Where I am hung up now though is how I would list all the 
>>> bowl games on a page then update picks, like how i mentioned before. Would 
>>> I be able to use SQLFORM to do this? This is my database setup, i have kept 
>>> it simple for now.
>>>
>>>
>> As a start, you might look at Loic's answer he linked in to the other 
>> thread.  Your database should be small enough that Anthony's concern won't 
>> be a problem.
>> <
>> http://stackoverflow.com/questions/20697034/how-can-i-join-3-tables-and-output-a-the-all-three-together-joined-in-web2py/20698864#20698864
>> >
>>
>> (I use SQLFORM in my current, but just for a simple table; the trickiest 
>> thing I do is figuring out maxid so I can limit the range of the table.)
>>  
>>
>>>
>>> db.define_table('persons', Field('person'), Field('email'))
>>> db.define_table('teams', Field('teamname'), Field('winner', 'boolean', 
>>> default=False))
>>> db.define_table('bowls', Field('name'), Field('team1', 'reference 
>>> teams'),Field('team2', 'reference teams'), Field('gametime', 'date')) 
>>> db.define_table('picks', Field('person', 'reference persons'), 
>>> Field('pick', 'reference teams'))
>>> db.persons.email.requires = IS_EMAIL()
>>> db.picks.person.requires = IS_IN_DB(db, db.persons.id, '%(person)s')
>>> db.bowls.team1.requires = IS_IN_DB(db, db.teams.id, '%(teamname)s')
>>> db.bowls.team2.requires = IS_IN_DB(db, db.teams.id, '%(teamname)s')
>>>
>>> On Thursday, December 19, 2013 2:30:20 PM UTC-5, Cliff wrote:

 Hello.

 General question here. Me and some friends guess who is going to win 
 NCAAF bowl games so I thought I would try and make an app for it. So I 
 started off making a table for users, games, picks. 

 Users -> Person name | email
 bowls -> Bowl name | team 1 | team 2 | time | winner
 picks - > person (reference user) | pick (reference unsure) 

 What I would like to do is make a page with an arg for user where I can 
 enter their picks and it store it in a DB for that user. An example would 
 be Bowl game 1: Team 1 vs Team 2 then a drop down list or radio button to 
 select the team. Bowl game 2: team 1 vs team 2 drop down list to select 
 the 
 team etc etc.. Then later be able to list what user is ahead by wins. What 
 I am getting caught up with is how to setup my databases. 

 If someone could point me in the right direction I would greatly 
 appreciate it. 

>>>
>>
>> /dps
>>
>>  
>>
>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: [web2py] Re: link as virtualfield

2013-12-28 Thread Diego Tostes
thanks!

it works!


2013/12/28 Massimo Di Pierro 

> try replace
>
> Field.Virtual('anexos', lambda row: "Teste_%s" % row.parte.
> id)
>
> with
>
> Field.Virtual('anexos', lambda row: XML("Teste_%s" % row.
> parte.id))
> or
> Field.Virtual('anexos', lambda row: A('Teste_%s'" % row.parte.id
> ,_href=''))
>
>
> but you may also want to consider using this instead:
>
> db.parte.id.label = "anexos"
> db.parte.id.represent =  lambda id,row: lambda row: A('Teste_%s'" % id
> ,_href=''))
>
> On Friday, 27 December 2013 12:23:08 UTC-6, Diego Tostes wrote:
>>
>> Hi,
>>
>> I am trying to create a virtualfield as a link like the this code:
>>
>> http://pastebin.com/c2wZqECH
>>
>> But when i create a SQL.grid this virtualfield is displayed as a string.
>>
>> Is it possible to create a link ?
>>
>> Rgds,
>>
>> Diego
>>
>  --
> Resources:
> - http://web2py.com
> - http://web2py.com/book (Documentation)
> - http://github.com/web2py/web2py (Source code)
> - https://code.google.com/p/web2py/issues/list (Report Issues)
> ---
> You received this message because you are subscribed to the Google Groups
> "web2py-users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to web2py+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


[web2py] create doc files

2013-12-28 Thread Diego Tostes
Hi,

Is it possible create doc files (word or openoffice) using templates
rendering?

Rgds,

Diego

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


[web2py] Re: create doc files

2013-12-28 Thread Diego Tostes
done using
PyRTF


thanks


2013/12/28 Diego Tostes 

> Hi,
>
> Is it possible create doc files (word or openoffice) using templates
> rendering?
>
> Rgds,
>
> Diego
>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


[web2py] Re: HOWTO: getting web2py to run on Android mobile devices

2013-12-28 Thread 黄祥
i follow the slice n want to ask is it possible to change default web2py 
webserver behaviour same like execute on server or pc?
i mean when i execute web2py on pc web2py webserver will ask to choose 
local (ipv4) (127.0.0.1) or public (0.0.0.0), yet in the android it didn't 
ask me anything about it and force it to use localhost (127.0.0.1)
how can i achieve it on android?

btw, for easy install (sl4a and python for android apk files) and copy 
web2py_src.zip please use airdroid (no root required), and for extract 
please use es file manager.

thanks and best regards,
stifan

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: [web2py] Re: save upload filename in database

2013-12-28 Thread Calvin Morrison
Yes that's exactly the problem!

Which in turn causes the other problems I think
On Dec 27, 2013 11:48 PM, "Massimo Di Pierro" 
wrote:

> Let's isolate the problem.
>
> Are you saying that even if you have this:
>
> Field('up_file', 'upload', uploadseparate=True, requires =[IS_NOT_EMPTY(),
>  IS_UPLOAD_FILENAME(extension=ext_regex)]),
>
> You can submit a form that does not upload a file into up_file?
>
> On Thursday, 26 December 2013 13:21:35 UTC-6, Calvin Morrison wrote:
>>
>> I'm following the documentation trying to figure out how to correctly
>> save a filename to my uploads database.
>>
>> Basically i have the same code as the website shows in it's examples
>>
>>
>> def submit():
>>
>>
>>  import datetime
>>
>>
>>  form = SQLFORM(db.uploads, fields=['up_file', notes], deletable=True)
>>
>>
>>  form.vars.up_date = datetime.datetime.now()
>>  form.vars.username = auth.user.email
>>
>>
>>  if request.vars.up_file != None:
>>  form.vars.filename = request.vars.up_file.filename
>>
>>
>>  if form.process().accepted:
>>  redirect(URL('data', 'index'))
>>  elif form.errors:
>>  response.flash = "form has errors"
>>
>>
>> But my form doesn't appear to be validating correctly. It allows me to
>> hit submit even if a file is not supplied. This leads to a error being
>> logged, so I want to avoid things getting submitted.  My only thought is
>> that it could be my requires not working correctly
>>
>> ext_regex = '|'.join(quikr_utils.all_ext)
>>
>> db.define_table('uploads',
>> Field('username', 'string'),
>> Field('filename', represent = lambda x, row: "None" if x == None elsex
>> [:45]),
>> Field('up_file', 'upload', uploadseparate=True, requires=[
>> IS_NOT_EMPTY(), IS_UPLOAD_FILENAME(extension=ext_regex)]),
>> Field('up_date', 'datetime'),
>> Field('up_size', 'integer', represent= lambda x, row: quikr_utils.
>> sizeof_fmt(x) ),
>> Field('notes', 'text'))
>>
>> >>> print quikr_utils.all_ext
>> ['fasta','fa','fna','fasta.gz','fa.gz','fna.gz']
>>
>> Any ideas?
>> Thanks!
>>
>  --
> Resources:
> - http://web2py.com
> - http://web2py.com/book (Documentation)
> - http://github.com/web2py/web2py (Source code)
> - https://code.google.com/p/web2py/issues/list (Report Issues)
> ---
> You received this message because you are subscribed to the Google Groups
> "web2py-users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to web2py+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


[web2py] Re: web2py on heroku getting "InternalError: current transaction is aborted..." Ticket

2013-12-28 Thread Alan Etkin

>
> 2013-12-28T05:17:30.576667+00:00 app[web.1]: ProgrammingError: relation 
> "web2py_filesystem" does not exist
>
> 2013-12-28T05:17:30.576667+00:00 app[web.1]: LINE 1: SELECT path FROM 
> web2py_filesystem WHERE path='applications/...
>
> 2013-12-28T05:17:30.576667+00:00 app[web.1]:   
>

Check this issues:

https://code.google.com/p/web2py/issues/detail?id=1602
https://code.google.com/p/web2py/issues/detail?id=1625

It seems that the driver is throwing something not expected by 
isProgramming... or isOperational, otherwise the error should be logged but 
would not stop execution.
 

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


[web2py] Re: create doc files

2013-12-28 Thread Anthony
There's also python-docx .

On Saturday, December 28, 2013 10:35:33 AM UTC-5, Diego Tostes wrote:
>
> done using 
> PyRTF
>
>
> thanks
>
>
> 2013/12/28 Diego Tostes >
>
>> Hi,
>>
>> Is it possible create doc files (word or openoffice) using templates 
>> rendering?
>>
>> Rgds,
>>
>> Diego
>>
>
>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: [web2py] Re: create doc files

2013-12-28 Thread Diego Tostes
i am using the pyrtf, but i dont know how create the file and download
without save the file on the server.

any idea?


2013/12/28 Anthony 

> There's also python-docx .
>
>
> On Saturday, December 28, 2013 10:35:33 AM UTC-5, Diego Tostes wrote:
>
>> done using
>> PyRTF
>>
>>
>> thanks
>>
>>
>> 2013/12/28 Diego Tostes 
>>
>> Hi,
>>>
>>> Is it possible create doc files (word or openoffice) using templates
>>> rendering?
>>>
>>> Rgds,
>>>
>>> Diego
>>>
>>
>>  --
> Resources:
> - http://web2py.com
> - http://web2py.com/book (Documentation)
> - http://github.com/web2py/web2py (Source code)
> - https://code.google.com/p/web2py/issues/list (Report Issues)
> ---
> You received this message because you are subscribed to the Google Groups
> "web2py-users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to web2py+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: [web2py] Re: create doc files

2013-12-28 Thread Diego Tostes
here is my code:

http://pastebin.com/qh5AV8Xh

but the download don't start when i access this controler.






2013/12/28 Diego Tostes 

> i am using the pyrtf, but i dont know how create the file and download
> without save the file on the server.
>
> any idea?
>
>
> 2013/12/28 Anthony 
>
>> There's also python-docx .
>>
>>
>> On Saturday, December 28, 2013 10:35:33 AM UTC-5, Diego Tostes wrote:
>>
>>> done using
>>> PyRTF
>>>
>>>
>>> thanks
>>>
>>>
>>> 2013/12/28 Diego Tostes 
>>>
>>> Hi,

 Is it possible create doc files (word or openoffice) using templates
 rendering?

 Rgds,

 Diego

>>>
>>>  --
>> Resources:
>> - http://web2py.com
>> - http://web2py.com/book (Documentation)
>> - http://github.com/web2py/web2py (Source code)
>> - https://code.google.com/p/web2py/issues/list (Report Issues)
>> ---
>> You received this message because you are subscribed to the Google Groups
>> "web2py-users" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to web2py+unsubscr...@googlegroups.com.
>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>
>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


[web2py] Re: save upload filename in database

2013-12-28 Thread Calvin Morrison
More specifically this only happens if I put in the if up_name != None 
check to set the filename in the database, otherwise it works well

On Friday, December 27, 2013 11:48:09 PM UTC-5, Massimo Di Pierro wrote:
>
> Let's isolate the problem.
>
> Are you saying that even if you have this:
>
> Field('up_file', 'upload', uploadseparate=True, requires =[IS_NOT_EMPTY(),
>  IS_UPLOAD_FILENAME(extension=ext_regex)]),
>
> You can submit a form that does not upload a file into up_file?
>
> On Thursday, 26 December 2013 13:21:35 UTC-6, Calvin Morrison wrote:
>>
>> I'm following the documentation trying to figure out how to correctly 
>> save a filename to my uploads database.
>>
>> Basically i have the same code as the website shows in it's examples
>>
>>
>> def submit():
>>
>>
>>  import datetime
>>
>>
>>  form = SQLFORM(db.uploads, fields=['up_file', notes], deletable=True)
>>
>>
>>  form.vars.up_date = datetime.datetime.now()
>>  form.vars.username = auth.user.email
>>
>>
>>  if request.vars.up_file != None:
>>  form.vars.filename = request.vars.up_file.filename
>>
>>
>>  if form.process().accepted:
>>  redirect(URL('data', 'index'))
>>  elif form.errors:
>>  response.flash = "form has errors"
>>
>>
>> But my form doesn't appear to be validating correctly. It allows me to 
>> hit submit even if a file is not supplied. This leads to a error being 
>> logged, so I want to avoid things getting submitted.  My only thought is 
>> that it could be my requires not working correctly
>>
>> ext_regex = '|'.join(quikr_utils.all_ext)
>>
>> db.define_table('uploads',
>> Field('username', 'string'),
>> Field('filename', represent = lambda x, row: "None" if x == None elsex
>> [:45]),
>> Field('up_file', 'upload', uploadseparate=True, requires=[
>> IS_NOT_EMPTY(), IS_UPLOAD_FILENAME(extension=ext_regex)]),
>> Field('up_date', 'datetime'), 
>> Field('up_size', 'integer', represent= lambda x, row: quikr_utils.
>> sizeof_fmt(x) ), 
>> Field('notes', 'text'))
>>
>> >>> print quikr_utils.all_ext
>> ['fasta','fa','fna','fasta.gz','fa.gz','fna.gz']
>>
>> Any ideas?
>> Thanks!
>>
>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


[web2py] Re: trying to add a submit button to SQLFORM but it does nothing

2013-12-28 Thread Tim Richardson
For reference, in case you want to add some basic inline editing to 
SQLFORM.grid. I wanted to add a radio button group so that for each row the 
user can select a number of different actions, as opposed to selectable 
which lets the user flag the row on or off.

1) any INPUT fields in a grid (added via links= for example) are submitted 
via request.post_vars. 
2) but you need a submit button. There are a few ways of doing it, like 
creating a form with only a submit button and adding it to the view

Using selectable in the SQLFORM.grid also adds a submit button, but you 
also get checkboxes.
The checkboxes can be removed after creating the grid:
 grid.elements(_type='checkbox',replace=None)

you can detect and process the submitted form elements by checking for this 
at the top of your controller function:
if len(request.post_vars) > 0:
pass #do something




-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


[web2py] Re: Integration with source control system

2013-12-28 Thread Massimo Di Pierro
Your application will be in a folder web2py/applications/. You can 
use any version control system you like for the content of that folder. 
this is orthogonal to web2py.

On Saturday, 28 December 2013 07:59:06 UTC-6, Saifuddin Rangwala wrote:
>
>
> While I make changes to my applications, is there a way to specify a 
> source control like cvs, github, perforce etc.. that I can specify 
> somewhere so that all changes that are made are tracked and that I can 
> revert back to previous change easily?
>
> Or anything equivalent that I can setup to achieve change tracking to my 
> application code?
>
> -- 
> Saif.
>
>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: [web2py] Re: Integration with source control system

2013-12-28 Thread Saifuddin Rangwala
Ok Thanks!


On Sun, Dec 29, 2013 at 10:43 AM, Massimo Di Pierro <
massimo.dipie...@gmail.com> wrote:

> Your application will be in a folder web2py/applications/. You
> can use any version control system you like for the content of that folder.
> this is orthogonal to web2py.
>
>
> On Saturday, 28 December 2013 07:59:06 UTC-6, Saifuddin Rangwala wrote:
>>
>>
>> While I make changes to my applications, is there a way to specify a
>> source control like cvs, github, perforce etc.. that I can specify
>> somewhere so that all changes that are made are tracked and that I can
>> revert back to previous change easily?
>>
>> Or anything equivalent that I can setup to achieve change tracking to my
>> application code?
>>
>> --
>> Saif.
>>
>>  --
> Resources:
> - http://web2py.com
> - http://web2py.com/book (Documentation)
> - http://github.com/web2py/web2py (Source code)
> - https://code.google.com/p/web2py/issues/list (Report Issues)
> ---
> You received this message because you are subscribed to the Google Groups
> "web2py-users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to web2py+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>



-- 
Saif.

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.