def getData(self, **kwargs): data = super(ImageView, self).getData() data_field = self.getBinaryDataField() if data_field: (img_mimetype, img_data) = encode_blob(data_field, self.showBinaryData) if img_data: data['data'] = img_data data['mimetype'] = img_mimetype return data
def getData(self): data = super(ImageView, self).getData() data_field = self.getBinaryDataField() if data_field: (img_mimetype, img_data) = encode_blob(data_field, self.showBinaryData) if img_data: data['data'] = img_data data['mimetype'] = img_mimetype return data
def fix_value_datatypes(self, data): for (k,v) in data.iteritems(): # If we're a datetime, convert to DateTime and use the ISO representation string if isinstance(v, datetime): data[k] = toISO(DateTime(data[k])) # If we're a DateTime, use the ISO representation string elif isinstance(v, DateTime): data[k] = toISO(data[k]) # Convert decimal to string with two decimal places. elif isinstance(v, Decimal): data[k] = '%0.2f' % v # XML type logic sees `zope.i18nmessageid.message.Message` as a list # and returns the type one letter at a time as a list. elif type(v).__name__ == 'Message': data[k] = unicode(v) # If this is a file, add additional mimetype info elif isinstance(v, NamedBlobFile): (file_mimetype, file_data) = encode_blob(v, self.showBinaryData) data[k] = { 'data' : file_data, 'mimetype' : file_mimetype, } # If this is a list, iterate through all the items and check if it's # a dict. If it's a dict, run this routine on that dict. elif isinstance(v, list): for i in range(0, len(v)): if isinstance(v[i], dict): v[i] = self.fix_value_datatypes(v[i]) # If it's a dict, run this routine on that dict. elif isinstance(v, dict): data[k] = self.fix_value_datatypes(data[k]) return data
def getData(self): # Pull data from catalog data = self.getCatalogData() # Schema data sd = self.getSchemaData() data.update(sd) # Adapter data adapter_data = self.getAdapterData() data.update(adapter_data) if self.isProduct(): # Set `product_platform` default data['product_platform'] = 'Plone' # Set `product_platform` and `product_type` if we're a Cvent event if ICventEvent.providedBy(self.context): data['product_platform'] = 'Cvent' data['product_type'] = getattr(self.context, 'atlas_event_type', 'Workshop') # Set `product_platform` if we're a Publication elif IPublication.providedBy(self.context): data['product_platform'] = 'Salesforce' # Magento Status-es data['visibility'] = 'Catalog, Search' # Populate Category Level 1/2/3 category_level_keys = ['category_level%d' % x for x in range(1,4)] categories = [] for i in category_level_keys: j = data.get(i, []) for k in j: categories.append(tuple(k.split(':'))) if j: del data[i] data['categories'] = self.minimizeStructure(categories) # Populate Extension Structure Information extension_structure_keys = ['state_extension_team', 'program_team', 'curriculum'] extension_structure = [] for i in extension_structure_keys: j = data.get(i, []) for k in j: extension_structure.append(tuple(k.split(':'))) if j: del data[i] data['extension_structure'] = self.minimizeStructure(extension_structure, keys=extension_structure_keys) # Populate people information # Assign primary contact id to first id in owners if data.get('owners', []): data['primary_contact_psu_user_id'] = data.get('owners')[0] # Object URL url = self.context.absolute_url() data['external_url'] = url data['api_url_xml'] = '%s/@@api' % url data['api_url_json'] = '%s/@@api/json' % url # Handle binary data fields by either encoding them base64, or removing them # If we DO show binary data if self.showBinaryData: # Lead Image if data.get('has_lead_image', False): img_field_name = 'leadimage' img_field = getattr(self.context, img_field_name, None) (img_mimetype, img_data) = encode_blob(img_field, self.showBinaryData) if img_data: data['leadimage'] = { 'data' : img_data, 'mimetype' : img_mimetype, 'caption' : LeadImage(self.context).leadimage_caption, } # File Field if data.get('file', None) and self.showBinaryData: file_field_name = 'file' file_field = getattr(self.context, file_field_name, None) (file_mimetype, file_data) = encode_blob(file_field, self.showBinaryData) if file_data: data['file'] = { 'data' : file_data, 'mimetype' : file_mimetype, } # If we DO NOT show binary data else: for i in ['file', 'image', 'leadimage']: if data.has_key(i): del data[i] else: # Remove all the product fields for non-products for k in ('publish_date', 'product_expiration', 'updated_at', 'plone_status', 'language', 'authors', 'owners'): if data.has_key(k): del data[k] # Body text if hasattr(self.context, 'text') and hasattr(self.context.text, 'raw'): data['description'] = self.context.text.raw return data