My apologies, because I am certain that this is documented somewhere,
but I cannot seem to find it.
Within my view function, I need to retrieve the URI that requested
that particular view. Is there a straight-forward, portable way to do
that?
Many thanks!
--
-- Christophe Pettus
x
the flow. However, if
we have to redraw the page from which the form came, we need to know
the right template (since it could be one of several), and we can
determine that by looking at the URI.
Are there more standard or more built-in ways of handling these?
--
-- Chr
Although I haven't yet deployed a Django application on them, I'm very
pleased with Slicehost in my other experiences with them.
--
-- Christophe Pettus
x...@thebuild.com
--~--~-~--~~~---~--~~
You received this message because you are subscri
hanks?
--
-- Christophe Pettus
x...@thebuild.com
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to django-users@googlegroups.com
To unsubscribe
eleasing is
required.
--
-- Christophe Pettus
x...@thebuild.com
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to django-users@googlegroups.com
To
On Sep 30, 2009, at 8:59 AM, Gabriel Rossetti wrote:
> how can I pass an object in between pages without using the session?
> The
> problem is that the object can be pickled so it can be put in a
> session,
> any ideas?
Could you store it in the database?
--
-- Christop
/#reverse
--
-- Christophe Pettus
x...@thebuild.com
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to django-users@googlegroups.com
To unsubscribe from thi
In my templates, I'm making reasonably heavy use of custom tags. Is
there a way to avoid having to have the template authors put the {%
load %} tags at the top of each template, since pretty much every
single template is going to need to load the same set?
--
-- Christophe Pettus
On Oct 4, 2009, at 10:14 PM, Vitaly Babiy wrote:
> Hey take a look at this
> http://stackoverflow.com/questions/1184983/load-a-django-template-tag-library-for-all-views-by-default
Just the thing! Thanks.
--
-- Christophe Pettus
x...@thebui
e migration path:
http://jmz.iki.fi/blog/programming/converting_mysql_database_to_postgresql
(Not my writing, but it seems reasonable to me.)
--
-- Christophe Pettus
x...@thebuild.com
--~--~-~--~~~---~--~~
You received this message because you are subscrib
ot; If the
question is, "Can the Django ORM create views and triggers in the
database through its API," the answer is no.
--
-- Christophe Pettus
x...@thebuild.com
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Go
regardless of language.
2. Is there a way of invalidating the cache, for example if the
underlying database gets an update?
Thanks!
--
-- Christophe Pettus
x...@thebuild.com
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the
> I'm looking at how to send information from the iphone to a django-
> website.
iPhone applications can generate web requests, so you can just
generate an HTTP(S) request to your web site, and do whatever you want.
--
-- Christophe Pettus
x...@t
he keys, which works,
although it's a bit tedious.
--
-- Christophe Pettus
x...@thebuild.com
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this grou
loads, do partial downloads, etc., etc. The only way I
have found to do it is to parse the web server logs (ick).
--
-- Christophe Pettus
x...@thebuild.com
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups
&quo
video files (300MB+), and
having a CGI script touch each byte wasn't really an option.
This is now fairly off-topic, but if you have other questions, don't
hesitate to ping me off-list.
--
-- Christophe Pettus
x...@thebuild.com
--~--~-~--~~~---~--~--
at the form level in Django. You'll need to
check and enforce those separately in your Django code.
--
-- Christophe Pettus
x...@thebuild.com
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups
"Django
rarely is.
--
-- Christophe Pettus
x...@thebuild.com
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to django-users@googlegroups.com
To unsubscr
(the parameter) on table postas_postacie (you probably could figure
this out); this corresponds to application Postac, model class
Postacie. I'd examine the use cases of those models to see if
different view methods are acquiring locks in a different order and
creating a circular depende
.htmlsubmit_line.html
delete_confirmation.html template_validator.html
delete_selected_confirmation.html
Any guidance on what I might be doing wrong? Thanks!
--
-- Christophe Pettus
x...@thebuild.com
--~--~-~--~~~---~--~~
You received this message becaus
start/end transaction handling. Is there an existing
decorator function that would be useful for that? Rolling my own
doesn't seem too intimidating, but if one already exists, why not use
it?
Thanks!
--
-- Christophe Pettus
x...@thebuild.com
--~--~-~--~~~-
On Oct 28, 2009, at 3:44 PM, Piotr Górski wrote:
> When I try to go to admin site, I get 500 internal
> server error (admin site works perfectly well on development server).
Is there anything interesting in the Apache error log?
--
-- Christophe Pettus
x...@thebui
222.111.32] return
> Database.Cursor.execute(self, query, params)
> [Wed Oct 28 23:58:42 2009] [error] [client 85.222.111.32]
> OperationalError: attempt to write a readonly database
Are you sure the Apache user has write permission to the sqlite3
database?
--
-- Christophe P
t for a lot of web developers.
--
-- Christophe Pettus
x...@thebuild.com
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to django-users@googlegr
und suggestions?
I'm not completely sure why the ORM is generating SQL that compares a
number with a character string in the first place; that sounds like a
bug in either the ORM or the client code, to me.
--
-- Christophe Pettus
x...@thebuild.com
--~--~-~--~~
ddress + " " + self.city + " " +
self.state + " " + self.zip
class Order(models.Model):
customer_name = models.CharField(max_length=80)
shipping_address = models.ForeignKey(Address)
def __unicode__(self):
return "Order " + unicode(self.id) + &quo
first transaction closes, and will
then continue. Beware of deadlocks! Keep the number of tables on
which you acquire locks to a minimum, and acquire them in the same
order in all places in your code.
--
-- Christophe Pettus
x...@thebuild.com
--~--~-~--~~~--
ransactions/#tying-transactions-to-http-requests
You can also use the @commit_on_success decorator:
http://docs.djangoproject.com/en/dev/topics/db/transactions/#django-db-transaction-commit-on-success
--
-- Christophe Pettus
x...@t
:
http://www.postgresql.org/docs/8.4/interactive/explicit-locking.html#LOCKING-ROWS
--
-- Christophe Pettus
x...@thebuild.com
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to
on raises an exception and
> the whole transaction is rolled back.
Yes, that appears to be correct.
--
-- Christophe Pettus
x...@thebuild.com
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups
"Django users&quo
On Nov 9, 2009, at 10:56 PM, Tamas Szabo wrote:
> UPDATE bid = new_bid WHERE id = id and bid < new_bid
That's an even better solution, if no further processing within the
locked area is required.
--
-- Christophe Pettus
x...@t
On Nov 10, 2009, at 11:55 AM, Craig Kimerer wrote:
> That only works if you have transactions disabled for your
> database. If your connections are using transactions, you still
> have the race condition.
The example you give isn't exactly the same as the suggestion. In the
suggestion, i
. Just like with
PHP+Smarty, some designers are comfortable adding template-system
tagging to their templates, while some deliver pure HTML+CSS dummies
and a separate person (sometimes called a "front-end engineer/
technologist" or something like that) marks up the HTML+CSS using the
r to see.
Django does not, right now, have the ability to qualify table
references with schemas, so the search path is the only practical
method for using multiple schemas with Django.
--
-- Christophe Pettus
x...@thebuild.com
--
You received this message because you are subscribed to th
of software, the more attention the bad guys give it, and thus
the more of those hidden security problems become exposed.
--
-- Christophe Pettus
x...@thebuild.com
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this gro
On Nov 16, 2009, at 12:55 PM, Alessandro Ronchi wrote:
> I'm using mod_passenger.
Isn't that for Ruby rather than Python?
--
-- Christophe Pettus
x...@thebuild.com
--
You received this message because you are subscribed to the Google Groups
"Django users" group
ated" in a branch. Thanks
http://docs.djangoproject.com/en/dev/ref/templates/api/#django-core-context-processors-auth
--
-- Christophe Pettus
x...@thebuild.com
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to
class is likely the best approach.
--
-- Christophe Pettus
x...@thebuild.com
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to django-us...@googlegroups.com.
To unsubscribe from this group, send email to
dj
t need to persist across server restarts, consider storing
it memcached instead of the database.
--
-- Christophe Pettus
x...@thebuild.com
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send
ts of your web
services operations locally, perhaps cache them in a local database,
such as SQLite? You could, then, subclass Model in such a way as to
populate the cache on demand.
--
-- Christophe Pettus
x...@thebuild.com
--
You received this message because you are subscribed to the
/16/wordpress-to-djangopostgresql-part-1-installing-postgresql/
(It's a set of articles about bringing up Apache+Django+PostgreSQL on
Centos.)
--
-- Christophe Pettus
x...@thebuild.com
--
You received this message because you are subscribed to the Google Groups
"Django users&quo
etting at which steps?
--
-- Christophe Pettus
x...@thebuild.com
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to django-us...@googlegroups.com.
To unsubscribe from this group, send email to
django-use
ou implement your URL scheme.
--
-- Christophe Pettus
x...@thebuild.com
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to django-us...@googlegroups.com.
To unsubscribe from this group
ql.org/docs/8.4/interactive/sql-truncate.html
--
-- Christophe Pettus
x...@thebuild.com
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to django-us...@googlegroups.com.
To unsubscribe from this grou
On Dec 9, 2009, at 2:11 PM, Phlip wrote:
> Given a large application with many apps (could have been called
> Packages), how to rip out a list of all of them?
Aren't they listed in settings.py?
--
-- Christophe Pettus
x...@thebuild.com
--
You received this message beca
,
just "most databases."
--
-- Christophe Pettus
x...@thebuild.com
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to django-us...@googlegroups.com.
To unsubscribe from this group, se
stgresql-and-transaction-management/
(The blog entry is with regards to PostgreSQL, but it's pretty
generally applicable.)
None of it involved overriding .save(), I'm pleased to report.
--
-- Christophe Pettus
x...@thebuild.com
--
You received this message because you are subscribe
apping those update
operations that require it in their own transactions.
The downside of that is that using Autocommit affects the entire
project, so other applications that you didn't write may be surprised
when the default Django behavior of opening a transaction for each
view method is de
e it
this way, you can switch to doing manual transaction control instead
of using Django's transaction management.
--
-- Christophe Pettus
x...@thebuild.com
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this g
mail to
> django-users+unsubscr...@googlegroups.com
> .
> For more options, visit this group at
> http://groups.google.com/group/django-users?hl=en
> .
>
>
--
-- Christophe Pettus
x...@thebuild.com
--
You received this message because you are subscribed to the
own ON CASCADE DELETE?
--
-- Christophe Pettus
x...@thebuild.com
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to django-us...@googlegroups.com.
To unsubscribe from this group, send email
scr...@googlegroups.com
.
For more options, visit this group at http://groups.google.com/group/django-users?hl=en
.
--
-- Christophe Pettus
x...@thebuild.com
--
You received this message because you are subscribed to the Google Groups "Django
users" group.
To post to this group,
Is this possible with X-Sendfile?
Yes, it is. The solution in this case is for the file to be readable
by web server's user/group, but not under the web server's DOCROOT.
Thus, it can't be served by normal URLs, but the web server process
can read it to send it back.
--
g I really want - but performed in shorter time.
I'm a bit surprised Django does this. Is there a reason that Django
re-implements ON DELETE CASCADE for databases that support it?
--
-- Christophe Pettus
x...@thebuild.com
--
You received this message because you are subscribed to th
if you are using PostgreSQL, it
has built-in geometric operators specifically for this kind of thing. You
might have to drop down into SQL, but in 1.2, that's nice and easy.
The PostgreSQL documentation on this is at:
http://www.postgresql.org/docs/8.4/interactive/datatype-geomet
It *almost* works, except
that Django attempts to INSERT a NULL value into that field, rather than just
omitting it from the INSERT and getting the field value back. What am I
missing?
--
-- Christophe Pettus
x...@thebuild.com
--
You received this message because you are subscribed to the Goo
tabase created
as UTF8.
--
-- Christophe Pettus
x...@thebuild.com
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to django-us...@googlegroups.com.
To unsubscribe from this group, send email
Apologies if this is a FAQ...
I'd like to take a QuerySet and order it in memory, rather than using
'order_by'. However, I need it to stay a QuerySet, since I'll be feeding it to
the .queryset attribute of a ModelChoiceField. Is there any way of
accomplishing this?
--
On Nov 22, 2010, at 4:50 PM, Daniel Carvalho wrote:
> field2 = forms.CharField(
>widget=forms.widgets.TextArea(attrs={'cols': 40,'rows': 5}))
'Textarea', no medial cap.
--
-- Christophe Pettus
x...@thebuild.com
--
You received this messa
Almost! Almost! So close, and yet so far... It looks like ModelChoiceField
also uses the .get method of the queryset to do the validation, and it does go
straight to the queryset (bypassing the choices) in that situation. Darn. I
might still be able to fake it...
--
-- Christophe Pettus
x...@t
f course, in struggling with this, I found myself thinking, "If only there
were a Field that didn't use querysets, but took a list of tuples; then I could
just use that instead..." :)
--
-- Christophe Pettus
x...@thebuild.com
--
You received this message because you are subscrib
d up searches for individual values.
--
-- Christophe Pettus
x...@thebuild.com
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to django-us...@googlegroups.com.
To unsubscribe from this group, send email
use hstore or intarray; they adapt very
nicely to Pyython types and Django model types.
--
-- Christophe Pettus
x...@thebuild.com
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to django-us...@googlegr
On Nov 24, 2010, at 12:25 AM, bruno desthuilliers wrote:
> Err... Would you mean, something like a ChoiceField ?-)
Very, very much like a ChoiceField. :)
--
-- Christophe Pettus
x...@thebuild.com
--
You received this message because you are subscribed to the Google Groups
"Djan
)/(SELECT COUNT(*) FROM
app_targettexts))
FROM app_targettexts
GROUP BY language
This has the advantage that it only hits the database once. If you need the
grand total, you can either calculate it in the application, or thorw on:
UNION
SELECT 'total', CO
is None in the application and
setting a separate value in the context, but is there a way of doing this
directly on the field itself?
Thanks!
--
-- Christophe Pettus
x...@thebuild.com
--
You received this message because you are subscribed to the Google Groups
"Django users" gro
t the SQL can't be in the view
function, but it's cleaner to have the Model encapsulate all of the related
data access for a particular model; that way, if the fields in the model
subclass change, there's only one place to look.
--
-- Christophe Pettus
x...@thebuild.com
db/managers/#adding-extra-manager-methods
--
-- Christophe Pettus
x...@thebuild.com
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to django-us...@googlegroups.com.
To unsubscribe from this group, s
ache/#the-per-site-cache
--
-- Christophe Pettus
x...@thebuild.com
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to django-us...@googlegroups.com.
To unsubscribe from this group, se
e=t)
c.save()
You can add appropriate checks if the title and category already exist, to
handle those the way you wan tto.
--
-- Christophe Pettus
x...@thebuild.com
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post
Pardon if this is a FAQ, but is there a built-in way of distinguishing between
None and the other typical false values (False/0/[]) in a template? Something
along the lines of:
{% if var == None %} ... {% endif %}
Thanks!
--
-- Christophe Pettus
x...@thebuild.com
--
You received
On Dec 8, 2010, at 6:48 PM, Victor Hooi wrote:
> Not sure what's going on here?
Is the django_extensions module on your PYTHONPATH?
--
-- Christophe Pettus
x...@thebuild.com
--
You received this message because you are subscribed to the Google Groups
"Django users" grou
pplication for a customer middleware module that
redirects to the beta page on the basis of the IP.
--
-- Christophe Pettus
x...@thebuild.com
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group,
;t ask the user if they want to POST data again?
Well, a refresh in this case on the user's part *is* a request to repost the
form data again. What's the condition you are trying to avoid in this
sitaution?
--
-- Christophe Pettus
x...@thebuild.com
--
You received this message b
api"? The results, I promise,
will be satisfying.
--
-- Christophe Pettus
x...@thebuild.com
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to django-us...@googlegroups.com.
To unsubscribe from
nside of
a Model class, if that's a better fit.
--
-- Christophe Pettus
x...@thebuild.com
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to django-us...@googlegroups.com.
To unsubscribe f
including creating,
deleting and reading tweets, so you shouldn't need anything more
exotic to do the job.
--
-- Christophe Pettus
x...@thebuild.com
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group,
about here:
The initial role will need to have the right privileges to do the SET
ROLE, so there's a potential security problem there.
SET ROLE does not assign session variables that were set to the role
with ALTER ROLE, so things like the schema search path (if you are
using it) won
of it. What's the best way to
go about doing that? Many thanks!
--
-- Christophe Pettus
x...@thebuild.com
--
You received this message because you are subscribed to the Google Groups "Django
users" group.
To post to this group, send email to django-us...@googlegroups.com.
On Feb 11, 2010, at 8:38 PM, Newbie wrote:
NOTE : Django version is 1.1.1 and PostgreSQL version is 7.4.16
Is there is a reason you are using such an old version of PostgreSQL?
--
-- Christophe Pettus
x...@thebuild.com
--
You received this message because you are subscribed to the Google
function that
handles the database update also does the appropriate cached template
invalidation.
--
-- Christophe Pettus
x...@thebuild.com
--
You received this message because you are subscribed to the Google Groups "Django
users" group.
To post to this group, send email to dja
ement/
--
-- Christophe Pettus
x...@thebuild.com
--
You received this message because you are subscribed to the Google Groups "Django
users" group.
To post to this group, send email to django-us...@googlegroups.com.
To unsubscribe from this group, send email to
django-users+unsubscr...@googlegroup
PgBouncer for PostgreSQL.
--
-- Christophe Pettus
x...@thebuild.com
--
You received this message because you are subscribed to the Google Groups "Django
users" group.
To post to this group, send email to django-us...@googlegroups.com.
To unsubscribe from this group, send email to
dj
riate equivalent would be for
MSSQL.
--
-- Christophe Pettus
x...@thebuild.com
--
You received this message because you are subscribed to the Google Groups "Django
users" group.
To post to this group, send email to django-us...@googlegroups.com.
To unsubscribe from this group, send e
ot the grouping.
--
-- Christophe Pettus
x...@thebuild.com
--
You received this message because you are subscribed to the Google Groups "Django
users" group.
To post to this group, send email to django-us...@googlegroups.com.
To unsubscribe from this group, send email
ght way to apply multi-line SQL during
syncdb?
Best,
--
-- Christophe Pettus
x...@thebuild.com
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe fro
On Apr 7, 2012, at 11:41 AM, Oleg Korsak wrote:
> So looks PostGIS 2.0.0 is unusable with Django right now?
There's no reason you can't apply the SQL manually for the moment.
--
-- Christophe Pettus
x...@thebuild.com
--
You received this message because you are subscribed
the indexes rather than
letting Django do it.
--
-- Christophe Pettus
x...@thebuild.com
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group,
sation was a typo, apologies!
--
-- Christophe Pettus
x...@thebuild.com
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send emai
st-building code in a reasonable way.
--
-- Christophe Pettus
x...@thebuild.com
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to
djang
ting to see it
> settle down after release with some minor fixes and additional releases.
Well, 2.0 has been out for four months so far, so it's not exactly a brand-new
release.
--
-- Christophe Pettus
x...@thebuild.com
--
You received this message because you are subscribed t
els (for text fields, you
get both the standard one and the varchar_pattern_ops one, which is technically
no longer required).
--
-- Christophe Pettus
x...@thebuild.com
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this g
hat allow data to be
updated.
--
-- Christophe Pettus
x...@thebuild.com
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send ema
t;> To unsubscribe from this group, send email to
>> django-users+unsubscr...@googlegroups.com.
>> For more options, visit this group at
>> http://groups.google.com/group/django-users?hl=en.
>>
>
>
>
> --
> ...we look at the present day through a
On Oct 29, 2012, at 4:52 PM, Lachlan Musicman wrote:
> Could you please expand on your answer for a beginner?
student-reports in the reverse call vs student_reports in the url() definition?
--
-- Christophe Pettus
x...@thebuild.com
--
You received this message because you are subscribed
On Oct 29, 2012, at 5:06 PM, Lachlan Musicman wrote:
> Your solution made it work, and I'm a doofus.
Let he who is without having spent the entire day looking for a punctuation
error in code cast the first stone. :)
--
-- Christophe Pettus
x...@thebuild.com
--
You received this
a.com/Lists/MPEG%20LA%20News%20List/Attachments/231/n-10-08-26.pdf
If you are changing end users, there are potentially fees, but they are quite
modest:
http://www.mpegla.com/main/programs/AVC/Documents/AVC_TermsSummary.pdf
--
-- Christophe Pettus
x...@thebuild.com
--
You received t
f prop_dates has more than 10-15 entries, it's going to perform
badly (at least on PostgreSQL, and almost certainly on MySQL too). I think
this particular situation is definitely a .raw() opportunity.
--
-- Christophe Pettus
x...@thebuild.com
--
You received this message because yo
gigantic inclusion sets.
--
-- Christophe Pettus
x...@thebuild.com
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to
dja
between an IN and a join will cross, however.
--
-- Christophe Pettus
x...@thebuild.com
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from thi
1 - 100 of 173 matches
Mail list logo