def reupload(userid, charid, submitdata): submitsize = len(submitdata) if not submitsize: raise WeasylError("submitSizeZero") elif submitsize > 10 * _MEGABYTE: raise WeasylError("submitSizeExceedsLimit") # Select character data query, = define.engine.execute(""" SELECT userid, settings FROM character WHERE charid = %(character)s AND settings !~ 'h' """, character=charid) if userid != query.userid: raise WeasylError("Unexpected") im = image.from_string(submitdata) submitextension = image.image_extension(im) # Check invalid file data if not submitextension: raise WeasylError("submitType") # Make submission file submitfile = files.make_resource(userid, charid, "char/submit", submitextension) files.ensure_file_directory(submitfile) im.write(submitfile) # Make cover file image.make_cover( submitfile, files.make_resource(userid, charid, "char/cover", submitextension)) # Update settings settings = re.sub(r'[~=].', '', query.settings) settings += files.typeflag("submit", submitextension) settings += files.typeflag("cover", submitextension) define.engine.execute(""" UPDATE character SET settings = %(settings)s WHERE charid = %(character)s """, settings=settings, character=charid)
def resize(filename, width, height, destination=None, animate=False): in_place = False if not destination: destination = filename + '.new' in_place = True im = read(filename) if not image_extension(im): raise WeasylError("FileType") files.ensure_file_directory(filename) im = correct_image_and_call(_resize, im, width, height) if im is not None: im.write(destination) if in_place: os.rename(destination, filename) # if there's no need to resize, in-place resize is a no-op. otherwise copy # the source to the destination. elif not in_place: files.copy(filename, destination)