Ejemplo n.º 1
0
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, ))
Ejemplo n.º 2
0
    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, ))
Ejemplo n.º 3
0
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,))
Ejemplo n.º 4
0
    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,))
Ejemplo n.º 5
0
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
Ejemplo n.º 6
0
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