@@ -73,7 +73,7 @@ def get_or_create_email(o, create_fake):
7373 e , _ = Email .objects .select_related ("person" ).get_or_create (address = email )
7474 if not e .person :
7575 asciified = unaccent .asciify (name )
76- aliases = Alias .objects .filter (name__in = (name , asciified ))
76+ aliases = Alias .objects .filter (name__in = (name , asciified )). select_related ( 'person' )
7777 if aliases :
7878 p = aliases [0 ].person
7979 else :
@@ -95,7 +95,8 @@ def get_or_create_email(o, create_fake):
9595 e .save ()
9696 else :
9797 if e .person .name != name :
98- Alias .objects .create (name = name , person = e .person )
98+ if not Alias .objects .filter (name = name ):
99+ Alias .objects .create (name = name , person = e .person )
99100 # take longest name rather than the first we encounter
100101 if len (name ) > e .person .name :
101102 e .person .name = name
@@ -114,3 +115,11 @@ def possibly_import_other_priority_email(email, addr):
114115 e .save ()
115116 except Email .DoesNotExist :
116117 Email .objects .create (address = addr , person = email .person , active = False )
118+
119+ def dont_save_queries ():
120+ # prevent memory from leaking when settings.DEBUG=True
121+ from django .db import connection
122+ class DontSaveQueries (object ):
123+ def append (self , x ):
124+ pass
125+ connection .queries = DontSaveQueries ()
0 commit comments