Fix 500 when saving /site/edit without email
When saving /site/edit with no no_reply_email set, a 500 error page
would be returned due to an empty value being passed as value to
the datastore (which is not allowed for email fields).
import os, sysfrom ctypes import c_char_p, CDLLfrom ctypes.util import find_libraryfrom django.contrib.gis.gdal.error import OGRException# Custom library path set?try: from django.conf import settings lib_path = settings.GDAL_LIBRARY_PATHexcept (AttributeError, EnvironmentError, ImportError): lib_path = Noneif lib_path: lib_names = Noneelif os.name == 'nt': # Windows NT shared library lib_names = ['gdal15']elif os.name == 'posix': # *NIX library names. lib_names = ['gdal', 'gdal1.5.0']else: raise OGRException('Unsupported OS "%s"' % os.name)# Using the ctypes `find_library` utility to find the # path to the GDAL library from the list of library names.if lib_names: for lib_name in lib_names: lib_path = find_library(lib_name) if not lib_path is None: breakif lib_path is None: raise OGRException('Could not find the GDAL library (tried "%s"). ' 'Try setting GDAL_LIBRARY_PATH in your settings.' % '", "'.join(lib_names))# This loads the GDAL/OGR C librarylgdal = CDLL(lib_path)# On Windows, the GDAL binaries have some OSR routines exported with # STDCALL, while others are not. Thus, the library will also need to # be loaded up as WinDLL for said OSR functions that require the # different calling convention.if os.name == 'nt': from ctypes import WinDLL lwingdal = WinDLL(lib_path)def std_call(func): """ Returns the correct STDCALL function for certain OSR routines on Win32 platforms. """ if os.name == 'nt': return lwingdal[func] else: return lgdal[func]#### Version-information functions. ##### Returns GDAL library version information with the given key._version_info = std_call('GDALVersionInfo')_version_info.argtypes = [c_char_p]_version_info.restype = c_char_pdef gdal_version(): "Returns only the GDAL version number information." return _version_info('RELEASE_NAME')def gdal_full_version(): "Returns the full GDAL version information." return _version_info('')def gdal_release_date(date=False): """ Returns the release date in a string format, e.g, "2007/06/27". If the date keyword argument is set to True, a Python datetime object will be returned instead. """ from datetime import date as date_type rel = _version_info('RELEASE_DATE') yy, mm, dd = map(int, (rel[0:4], rel[4:6], rel[6:8])) d = date_type(yy, mm, dd) if date: return d else: return d.strftime('%Y/%m/%d')