def manage_thumbnail_post_(request): form = request.web_input(submitid="", charid="", x1="", y1="", x2="", y2="", thumbfile="") submitid = define.get_int(form.submitid) charid = define.get_int(form.charid) if submitid and request.userid not in staff.ADMINS and request.userid != define.get_ownerid( submitid=submitid): return Response(define.errorpage(request.userid)) if charid and request.userid not in staff.ADMINS and request.userid != define.get_ownerid( charid=charid): return Response(define.errorpage(request.userid)) if not submitid and not charid: return Response(define.errorpage(request.userid)) if form.thumbfile: thumbnail.upload(request.userid, form.thumbfile, submitid=submitid, charid=charid) if submitid: raise HTTPSeeOther(location="/manage/thumbnail?submitid=%i" % (submitid, )) else: raise HTTPSeeOther(location="/manage/thumbnail?charid=%i" % (charid, )) else: thumbnail.create(request.userid, form.x1, form.y1, form.x2, form.y2, submitid=submitid, charid=charid) if submitid: raise HTTPSeeOther(location="/submission/%i" % (submitid, )) else: raise HTTPSeeOther(location="/character/%i" % (charid, ))
def POST(self): form = web.input(submitid="", charid="", x1="", y1="", x2="", y2="", thumbfile="") submitid = define.get_int(form.submitid) charid = define.get_int(form.charid) if submitid and self.user_id not in staff.ADMINS and self.user_id != define.get_ownerid( submitid=submitid): return define.errorpage(self.user_id) if charid and self.user_id not in staff.ADMINS and self.user_id != define.get_ownerid( charid=charid): return define.errorpage(self.user_id) if not submitid and not charid: return define.errorpage(self.user_id) if form.thumbfile: thumbnail.upload(self.user_id, form.thumbfile, submitid=submitid, charid=charid) if submitid: raise web.seeother("/manage/thumbnail?submitid=%i" % (submitid, )) else: raise web.seeother("/manage/thumbnail?charid=%i" % (charid, )) else: thumbnail.create(self.user_id, form.x1, form.y1, form.x2, form.y2, submitid=submitid, charid=charid) if submitid: raise web.seeother("/submission/%i" % (submitid, )) else: raise web.seeother("/character/%i" % (charid, ))
def manage_thumbnail_post_(request): form = request.web_input(submitid="", charid="", x1="", y1="", x2="", y2="", thumbfile="") submitid = define.get_int(form.submitid) charid = define.get_int(form.charid) if submitid and request.userid not in staff.ADMINS and request.userid != define.get_ownerid(submitid=submitid): return Response(define.errorpage(request.userid)) if charid and request.userid not in staff.ADMINS and request.userid != define.get_ownerid(charid=charid): return Response(define.errorpage(request.userid)) if not submitid and not charid: return Response(define.errorpage(request.userid)) if form.thumbfile: thumbnail.upload(request.userid, form.thumbfile, submitid=submitid, charid=charid) if submitid: raise HTTPSeeOther(location="/manage/thumbnail?submitid=%i" % (submitid,)) else: raise HTTPSeeOther(location="/manage/thumbnail?charid=%i" % (charid,)) else: thumbnail.create(request.userid, form.x1, form.y1, form.x2, form.y2, submitid=submitid, charid=charid) if submitid: raise HTTPSeeOther(location="/submission/%i" % (submitid,)) else: raise HTTPSeeOther(location="/character/%i" % (charid,))
def POST(self): form = web.input(submitid="", charid="", x1="", y1="", x2="", y2="", thumbfile="") submitid = define.get_int(form.submitid) charid = define.get_int(form.charid) if submitid and self.user_id not in staff.ADMINS and self.user_id != define.get_ownerid(submitid=submitid): return define.errorpage(self.user_id) if charid and self.user_id not in staff.ADMINS and self.user_id != define.get_ownerid(charid=charid): return define.errorpage(self.user_id) if not submitid and not charid: return define.errorpage(self.user_id) if form.thumbfile: thumbnail.upload(self.user_id, form.thumbfile, submitid=submitid, charid=charid) if submitid: raise web.seeother("/manage/thumbnail?submitid=%i" % (submitid,)) else: raise web.seeother("/manage/thumbnail?charid=%i" % (charid,)) else: thumbnail.create(self.user_id, form.x1, form.y1, form.x2, form.y2, submitid=submitid, charid=charid) if submitid: raise web.seeother("/submission/%i" % (submitid,)) else: raise web.seeother("/character/%i" % (charid,))
def create(userid, character, friends, tags, thumbfile, submitfile): # Make temporary filenames tempthumb = files.get_temporary(userid, "thumb") tempsubmit = files.get_temporary(userid, "char") # Determine filesizes thumbsize = len(thumbfile) submitsize = len(submitfile) # Check invalid title or rating if not character.char_name: raise WeasylError("characterNameInvalid") elif not character.rating: raise WeasylError("ratingInvalid") profile.check_user_rating_allowed(userid, character.rating) # Write temporary thumbnail file if thumbsize: files.write(tempthumb, thumbfile) thumbextension = files.get_extension_for_category( thumbfile, macro.ART_SUBMISSION_CATEGORY) else: thumbextension = None # Write temporary submission file if submitsize: files.write(tempsubmit, submitfile) submitextension = files.get_extension_for_category( submitfile, macro.ART_SUBMISSION_CATEGORY) else: submitextension = None # Check invalid file data if not submitsize: files.clear_temporary(userid) raise WeasylError("submitSizeZero") elif submitsize > _MAIN_IMAGE_SIZE_LIMIT: files.clear_temporary(userid) raise WeasylError("submitSizeExceedsLimit") elif thumbsize > 10 * _MEGABYTE: files.clear_temporary(userid) raise WeasylError("thumbSizeExceedsLimit") elif submitextension not in [".jpg", ".png", ".gif"]: files.clear_temporary(userid) raise WeasylError("submitType") elif thumbsize and thumbextension not in [".jpg", ".png", ".gif"]: files.clear_temporary(userid) raise WeasylError("thumbType") # Assign settings settings = [] settings.append("f" if friends else "") settings.append(files.typeflag("submit", submitextension)) settings.append(files.typeflag("cover", submitextension)) settings = "".join(settings) # Insert submission data ch = define.meta.tables["character"] try: charid = define.engine.scalar(ch.insert().returning(ch.c.charid), { "userid": userid, "unixtime": arrow.now(), "char_name": character.char_name, "age": character.age, "gender": character.gender, "height": character.height, "weight": character.weight, "species": character.species, "content": character.content, "rating": character.rating.code, "settings": settings, }) except PostgresError: files.clear_temporary(userid) raise # Assign search tags searchtag.associate(userid, tags, charid=charid) # Make submission file files.make_character_directory(charid) files.copy(tempsubmit, files.make_resource(userid, charid, "char/submit", submitextension)) # Make cover file image.make_cover(tempsubmit, files.make_resource(userid, charid, "char/cover", submitextension)) # Make thumbnail selection file if thumbsize: image.make_cover( tempthumb, files.make_resource(userid, charid, "char/.thumb")) thumbnail.create(0, 0, 0, 0, charid=charid, remove=False) # Create notifications welcome.character_insert(userid, charid, rating=character.rating.code, settings=settings) # Clear temporary files files.clear_temporary(userid) define.metric('increment', 'characters') return charid
def create(userid, character, friends, tags, thumbfile, submitfile): # Make temporary filenames tempthumb = files.get_temporary(userid, "thumb") tempsubmit = files.get_temporary(userid, "char") # Determine filesizes thumbsize = len(thumbfile) submitsize = len(submitfile) # Check invalid title or rating if not character.char_name: raise WeasylError("characterNameInvalid") elif not character.rating: raise WeasylError("ratingInvalid") profile.check_user_rating_allowed(userid, character.rating) # Write temporary thumbnail file if thumbsize: files.easyupload(tempthumb, thumbfile, "image") thumbextension = files.get_extension_for_category( thumbfile, macro.ART_SUBMISSION_CATEGORY) else: thumbextension = None # Write temporary submission file if submitsize: files.easyupload(tempsubmit, submitfile, "image") submitextension = files.get_extension_for_category( submitfile, macro.ART_SUBMISSION_CATEGORY) else: submitextension = None # Check invalid file data if not submitsize: files.clear_temporary(userid) raise WeasylError("submitSizeZero") elif submitsize > 10 * _MEGABYTE: files.clear_temporary(userid) raise WeasylError("submitSizeExceedsLimit") elif thumbsize > 10 * _MEGABYTE: files.clear_temporary(userid) raise WeasylError("thumbSizeExceedsLimit") elif submitextension not in [".jpg", ".png", ".gif"]: files.clear_temporary(userid) raise WeasylError("submitType") elif thumbsize and thumbextension not in [".jpg", ".png", ".gif"]: files.clear_temporary(userid) raise WeasylError("thumbType") # Assign settings settings = [] settings.append("f" if friends else "") settings.append(files.typeflag("submit", submitextension)) settings.append(files.typeflag("cover", submitextension)) settings = "".join(settings) # Insert submission data ch = define.meta.tables["character"] try: charid = define.engine.scalar(ch.insert().returning(ch.c.charid), { "userid": userid, "unixtime": arrow.now(), "char_name": character.char_name, "age": character.age, "gender": character.gender, "height": character.height, "weight": character.weight, "species": character.species, "content": character.content, "rating": character.rating.code, "settings": settings, }) except PostgresError: files.clear_temporary(userid) raise # Assign search tags searchtag.associate(userid, tags, charid=charid) # Make submission file files.make_path(charid, "char") files.copy(tempsubmit, files.make_resource(userid, charid, "char/submit", submitextension)) # Make cover file image.make_cover(tempsubmit, files.make_resource(userid, charid, "char/cover", submitextension)) # Make thumbnail selection file if thumbsize: image.make_cover( tempthumb, files.make_resource(userid, charid, "char/.thumb")) thumbnail.create(userid, 0, 0, 0, 0, charid=charid, remove=False) # Create notifications welcome.character_insert(userid, charid, rating=character.rating.code, settings=settings) # Clear temporary files files.clear_temporary(userid) define.metric('increment', 'characters') return charid