Example #1
0
    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
Example #2
0
    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
Example #3
0
    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
Example #4
0
    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