Enhance attribute values encoding and decoding
This commit is contained in:
parent
55d6e8d25f
commit
e5a7a5367b
|
@ -1004,10 +1004,10 @@ def handle_operand(predicate, p_id, name, d):
|
|||
a = AssertionData()
|
||||
a.save()
|
||||
a.set_attribute_data(data)
|
||||
except:
|
||||
except Exception, err:
|
||||
raise Exception(\
|
||||
'Unable to create assertion data of predicate %s' \
|
||||
% str(p_id))
|
||||
'Unable to create assertion data of predicate %s due to %s' \
|
||||
% (str(p_id), str(err)))
|
||||
return a
|
||||
|
||||
|
||||
|
|
|
@ -110,9 +110,7 @@ def get_all_attributes(user, definitions=None, **kwargs):
|
|||
attr = {}
|
||||
attr['name'] = key
|
||||
attr['values'] = [\
|
||||
a.decode('utf-8'). \
|
||||
encode('ascii', 'ignore') \
|
||||
for a in dic[key]]
|
||||
a.decode('utf-8') for a in dic[key]]
|
||||
attr['namespace'] = 'X500'
|
||||
data.append(attr)
|
||||
except ldap.LDAPError, err:
|
||||
|
|
|
@ -103,8 +103,10 @@ class AttributeData:
|
|||
expiration_date=None):
|
||||
self.definition = definition
|
||||
self.values = list()
|
||||
for value in values:
|
||||
self.values.append(value)
|
||||
if values:
|
||||
for value in values:
|
||||
if convert_from_string(definition, value):
|
||||
self.values.append(value.encode('utf-8'))
|
||||
if isinstance(source, AttributeSource):
|
||||
self.source_id = source.id
|
||||
else:
|
||||
|
@ -148,7 +150,9 @@ class AttributeData:
|
|||
return self.expiration_date
|
||||
|
||||
def get_values(self):
|
||||
return self.values
|
||||
if self.values:
|
||||
return [value.decode('utf-8') for value in self.values]
|
||||
return list()
|
||||
|
||||
def get_converted_values(self):
|
||||
return [convert_from_string(self.definition, value) for value in self.values]
|
||||
|
@ -163,20 +167,24 @@ class AttributeData:
|
|||
return self.source_id
|
||||
|
||||
def add_value(self, value):
|
||||
try:
|
||||
self.values.append(value)
|
||||
self.save()
|
||||
return 0
|
||||
except:
|
||||
return -1
|
||||
if value and convert_from_string(self.definition, value):
|
||||
try:
|
||||
self.values.append(value.encode('utf-8'))
|
||||
self.save()
|
||||
return 0
|
||||
except:
|
||||
return -1
|
||||
return -1
|
||||
|
||||
def remove_value(self, value):
|
||||
try:
|
||||
self.values.remove(value)
|
||||
self.save()
|
||||
return 0
|
||||
except:
|
||||
return -1
|
||||
if value:
|
||||
try:
|
||||
self.values.remove(value.encode('utf-8'))
|
||||
self.save()
|
||||
return 0
|
||||
except:
|
||||
return -1
|
||||
return -1
|
||||
|
||||
def does_expire(self):
|
||||
if self.expiration_date:
|
||||
|
@ -185,8 +193,11 @@ class AttributeData:
|
|||
return 0
|
||||
|
||||
def __unicode__(self):
|
||||
s = "%s with values %s" % (self.get_definition(),
|
||||
[v for v in self.get_values()])
|
||||
s = "AttributeData"
|
||||
values = self.get_values()
|
||||
if values:
|
||||
s += " %s with values %s" % (self.get_definition(),
|
||||
[v for v in values])
|
||||
source = self.get_source()
|
||||
if source:
|
||||
s += " from %s" % str(source)
|
||||
|
@ -213,6 +224,7 @@ class UserAttributeProfile(models.Model):
|
|||
self.data = dumps(l)
|
||||
except:
|
||||
return -1
|
||||
self.save()
|
||||
return 0
|
||||
|
||||
def remove_data(self, position):
|
||||
|
@ -372,7 +384,6 @@ class UserAttributeProfile(models.Model):
|
|||
The source with name %s providing attributes %s \
|
||||
is unknown of the system' \
|
||||
% (str(source_name), str(dictionnary[source_name])))
|
||||
self.save()
|
||||
return 0
|
||||
|
||||
def load_greedy(self):
|
||||
|
|
|
@ -2,7 +2,8 @@
|
|||
|
||||
DEFAULT_CHARSET = 'utf-8'
|
||||
|
||||
import os, sys
|
||||
import os
|
||||
import sys
|
||||
|
||||
DEBUG = True
|
||||
USE_DEBUG_TOOLBAR = True
|
||||
|
@ -142,7 +143,7 @@ def getlogger():
|
|||
logger.setLevel(logging.DEBUG)
|
||||
|
||||
#Hack to disable too verbose database debug logs
|
||||
logging.getLogger('django.db.backends').setLevel(logging.ERROR)
|
||||
logging.getLogger('django.db.backends').setLevel(logging.ERROR)
|
||||
|
||||
formatter = \
|
||||
logging.Formatter(\
|
||||
|
|
Reference in New Issue