def render(self): relation_id = self.relation.id if self.relation.linkage.relation.cardinality.id == 'ONE_TO_MANY': multi_selection = 'true' else: multi_selection = 'false' i = ScopedMarkup() i.script('var objectPicker = new p2.ObjectPicker(\'%s\', \'%s\', %s, \'%s\');' % ( self.relation_source.id, relation_id, multi_selection, self.collection_id )) i.html('<div style="position: relative">') a = 0 query = super(ObjectPicker, self).query() for (setobject, linked) in query: alternation = (a % 2 == 0) and 'even' or 'odd' a += 1 id = generate_random_identifier() i.html(""" <div style="position:absolute; z-index:10000;"> <input id="%s" value="%s" type="checkbox" /> </div> """ % (id, setobject.id)) subform = self.call_subform(self.collection_id ,setobject.id, linked, alternation) subform = subform.replace(r'\"', r'\\\"') i.html(subform) i.html('</div>') i.script('objectPicker.registerCheckbox($(\'#%s\'), %s)' % (id, linked)) html = i.render() return html
def generate_random_identifier(self): return generate_random_identifier()
def update(self): self.error = False self.response.setHeader('Content-Type', 'application/json') upload_file = self.request.form['file'] size = self.request.getHeader('X-File-Size') thumbnail_width = int(self.request.getHeader('X-thumbnail-width')) thumbnail_height = int(self.request.getHeader('X-thumbnail-height')) self.filename = self.request.getHeader('X-File-Name') self.identifier = generate_random_identifier() media = Media() media.id = self.identifier media.size = size media.filename = self.filename # Check maximum file size first: db_util = getUtility(IDbUtility) if int(media.size) > db_util.max_allowed_packet: # Problem: Database does not allow BLOBs of this size. self.error = True self.message = 'The selected file is too big. Please contact your system administrator.' self.title = 'Upload failed.' upload_file.close() return # Read data: chunk = upload_file.read() while chunk != '': # Initialise our data array if media.data == None: media.data = bytearray() # Add data media.data += chunk # Check maximum length if len(media.data) > int(media.size): # Cancel upload here so uploader cannot throw an endless stream of bytes at us self.error = True self.message = 'The selected file is bigger than specified.' self.title = 'Upload failed.' upload_file.close() return chunk = upload_file.read() mime_type = getUtility(IMimeTypeGetter)(name=self.filename, data=media.data) if not mime_type: mime_type = upload_file.headers('Content-Type') media.mime_type = mime_type thumbnail_file = None self.has_thumbnail = False if mime_type in ('image/jpeg', 'image/png', 'image/gif'): thumbnail_file = self.create_thumbnail(upload_file, (thumbnail_width, thumbnail_height)) self.has_thumbnail = True chunk = thumbnail_file.read() while chunk != '': if media.thumbnail == None: media.thumbnail = bytearray() media.thumbnail += chunk chunk = thumbnail_file.read() thumbnail_file.close() upload_file.close() session = db_util.Session() session.add(media) session.commit()
def __init__(self): self.script_id = generate_random_identifier() self._snippets = list()
def link(self, klass): klass.fetch_linkages() for linkage in klass.linkages.itervalues(): self.collections[linkage.attr_name] = { 'collection_id': generate_random_identifier(), 'linkage': linkage}
def __init__(self): if not self.id: self.id = generate_random_identifier() self.action = 'new' self.common_init()
def generate_identifier(self): """Generates a identifier for the setobject. It is at the moment a random identifier, but probably there should later be a more deterministic way of doing that. """ return generate_random_identifier()