~abompard/mailman/import21

« back to all changes in this revision

Viewing changes to src/mailman/utilities/importer.py

  • Committer: Aurélien Bompard
  • Date: 2013-10-08 08:55:24 UTC
  • Revision ID: aurelien@bompard.org-20131008085524-s3qe3whcwj9os2sr
Some more unicode checks when importing

Show diffs side-by-side

added added

removed removed

Lines of Context:
231
231
        "%(real_name)s@%(host_name)s": "$fqdn_listname",
232
232
        "%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s": "$listinfo_uri",
233
233
    }
 
234
    # Collect defaults
 
235
    defaults = {}
 
236
    for oldvar, newvar in convert_to_uri.iteritems():
 
237
        default_value = getattr(mlist, newvar)
 
238
        if not default_value:
 
239
            continue
 
240
        # Check if the value changed from the default
 
241
        try:
 
242
            default_text = decorate(mlist, default_value)
 
243
        except (URLError, KeyError):
 
244
            # Use case: importing the old a@ex.com into b@ex.com
 
245
            # We can't check if it changed from the default
 
246
            # -> don't import, we may do more harm than good and it's easy to
 
247
            # change if needed
 
248
            continue
 
249
        defaults[newvar] = (default_value, default_text)
234
250
    for oldvar, newvar in convert_to_uri.iteritems():
235
251
        if oldvar not in config_dict:
236
252
            continue
237
253
        text = config_dict[oldvar]
 
254
        text = unicode(text, "utf-8", "replace")
238
255
        for oldph, newph in convert_placeholders.iteritems():
239
256
            text = text.replace(oldph, newph)
240
 
        default_value = getattr(mlist, newvar)
241
 
        if not text and not default_value:
242
 
            continue
 
257
        default_value, default_text  = defaults.get(newvar, (None, None))
 
258
        if not text and not (default_value or default_text):
 
259
            continue # both are empty, leave it
243
260
        # Check if the value changed from the default
244
261
        try:
245
 
            default_text = decorate(mlist, default_value)
246
262
            expanded_text = decorate_template(mlist, text)
247
 
        except (URLError, KeyError):
 
263
        except KeyError:
248
264
            # Use case: importing the old a@ex.com into b@ex.com
249
265
            # We can't check if it changed from the default
250
266
            # -> don't import, we may do more harm than good and it's easy to
251
267
            # change if needed
252
268
            continue
253
 
        if not text and not default_text:
254
 
            continue # both are empty, leave it
255
 
        if expanded_text.strip() == default_text.strip():
 
269
        if expanded_text and default_text \
 
270
                and expanded_text.strip() == default_text.strip():
256
271
            continue # keep the default
257
272
        # Write the custom value to the right file
258
273
        base_uri = "mailman:///$listname/$language/"