Fixed permission grant revoke button text no appearing

This commit is contained in:
Roberto Rosario
2011-05-10 03:40:50 -04:00
parent b6d2654cc7
commit b4daa2d52b
3 changed files with 3 additions and 2 deletions

95
apps/metadata/api.py Normal file
View File

@@ -0,0 +1,95 @@
"""Metadata handling commonalities"""
from urllib import unquote_plus
from django.shortcuts import get_object_or_404
from django.core.exceptions import ObjectDoesNotExist
from django.utils.translation import ugettext_lazy as _
from documents.models import DocumentMetadata, MetadataType
def decode_metadata_from_url(url_dict):
"""Parse a URL query string to a list of metadata"""
metadata_dict = {
'id': {},
'value': {}
}
metadata_list = []
#Match out of order metadata_type ids with metadata values from request
for key, value in url_dict.items():
if 'metadata' in key:
index, element = key[8:].split('_')
metadata_dict[element][index] = value
#Convert the nested dictionary into a list of id+values dictionaries
for order, identifier in metadata_dict['id'].items():
if order in metadata_dict['value'].keys():
metadata_list.append({
'id': identifier,
'value': metadata_dict['value'][order]
})
return metadata_list
def save_metadata_list(metadata_list, document):
"""
Take a list of metadata values and associate a document to it
"""
for item in metadata_list:
save_metadata(item, document)
#if item['value']:
# save_metadata(item, document)
#else:
# #If there is no metadata value, delete the metadata entry
# #completely from the document
# try:
# metadata_type = MetadataType.objects.get(id=item['id'])
# document_metadata = DocumentMetadata.objects.get(
# document=document,
# metadata_type=metadata_type
# )
# document_metadata.delete()
# except ObjectDoesNotExist:
# pass
def save_metadata(metadata_dict, document):
"""save metadata_dict"""
# Use matched metadata now to create document metadata
document_metadata, created = DocumentMetadata.objects.get_or_create(
document=document,
metadata_type=get_object_or_404(
MetadataType,
pk=metadata_dict['id']
),
)
# Handle 'plus sign as space' in the url
# unquote_plus handles utf-8?!?
# http://stackoverflow.com/questions/4382875/handling-iri-in-django
#.decode('utf-8')
document_metadata.value = unquote_plus(metadata_dict['value'])
document_metadata.save()
def metadata_repr(metadata_list):
"""Return a printable representation of a metadata list"""
return u', '.join(metadata_repr_as_list(metadata_list))
def metadata_repr_as_list(metadata_list):
"""
Turn a list of metadata into a list of printable representations
"""
output = []
for metadata_dict in metadata_list:
try:
output.append(u'%s - %s' % (MetadataType.objects.get(
pk=metadata_dict['id']), metadata_dict.get('value', '')))
except:
pass
return output