Added task to send out email for each processed GradingRecord.
If send_mail evaluates to True in the POST data for updateProjectsForSurveyGroup task then the results of every GradingRecord will be mailed to the Student. The Mentor and Org Admins will be cc'ed.
"Memcached cache backend"from django.core.cache.backends.base import BaseCache, InvalidCacheBackendErrorfrom django.utils.encoding import smart_unicode, smart_strtry: import cmemcache as memcacheexcept ImportError: try: import memcache except: raise InvalidCacheBackendError("Memcached cache backend requires either the 'memcache' or 'cmemcache' library")class CacheClass(BaseCache): def __init__(self, server, params): BaseCache.__init__(self, params) self._cache = memcache.Client(server.split(';')) def add(self, key, value, timeout=0): if isinstance(value, unicode): value = value.encode('utf-8') return self._cache.add(smart_str(key), value, timeout or self.default_timeout) def get(self, key, default=None): val = self._cache.get(smart_str(key)) if val is None: return default else: if isinstance(val, basestring): return smart_unicode(val) else: return val def set(self, key, value, timeout=0): if isinstance(value, unicode): value = value.encode('utf-8') self._cache.set(smart_str(key), value, timeout or self.default_timeout) def delete(self, key): self._cache.delete(smart_str(key)) def get_many(self, keys): return self._cache.get_multi(map(smart_str,keys)) def close(self, **kwargs): self._cache.disconnect_all()