def create_generic(userid, submission, **kwargs): tags = kwargs['tags'] if submission.subtype not in valid_types: submission.subtype = expected_type * 1000 + 999 if not submission.title: raise WeasylError("titleInvalid") elif not submission.rating: raise WeasylError("ratingInvalid") elif len(tags) < 2: raise WeasylError("notEnoughTags") elif not folder.check(userid, submission.folderid): raise WeasylError("Unexpected") profile.check_user_rating_allowed(userid, submission.rating) newid = create_specific( userid=userid, submission=submission, **kwargs) if newid: p = d.meta.tables['profile'] d.connect().execute(p.update().where(p.c.userid == userid).values(latest_submission_time=arrow.utcnow())) return newid
def create_generic(userid, submission, **kwargs): tags = kwargs['tags'] if submission.subtype not in valid_types: submission.subtype = expected_type * 1000 + 999 if not submission.title: raise WeasylError("titleInvalid") elif not submission.rating: raise WeasylError("ratingInvalid") elif len(tags) < 2: raise WeasylError("notEnoughTags") elif not folder.check(userid, submission.folderid): raise WeasylError("Unexpected") profile.check_user_rating_allowed(userid, submission.rating) newid = create_specific(userid=userid, submission=submission, **kwargs) if newid: p = d.meta.tables['profile'] d.connect().execute( p.update().where(p.c.userid == userid).values( latest_submission_time=arrow.utcnow())) return newid
def control_editfolder_post_(request): folderid = int(request.matchdict['folderid']) if not folder.check(request.userid, folderid): return Response(define.errorpage(request.userid, errorcode.permission)) form = request.web_input(settings=[]) folder.update_settings(folderid, form.settings) raise HTTPSeeOther(location='/manage/folders')
def control_editfolder_get_(request): folderid = int(request.matchdict['folderid']) if not folder.check(request.userid, folderid): return Response(define.errorpage(request.userid, errorcode.permission)) return Response(define.webpage(request.userid, "manage/folder_options.html", [ folder.select_info(folderid), ]))
def control_editfolder_post_(request): folderid = int(request.matchdict['folderid']) if not folder.check(request.userid, folderid): raise WeasylError('InsufficientPermissions') form = request.web_input(settings=[]) folder.update_settings(folderid, form.settings) raise HTTPSeeOther(location='/manage/folders')
def control_editfolder_get_(request): folderid = int(request.matchdict['folderid']) if not folder.check(request.userid, folderid): return Response(define.errorpage(request.userid, errorcode.permission)) return Response(define.webpage(request.userid, "manage/folder_options.html", [ folder.select_info(folderid), ], title="Edit Folder Options"))
def POST(self, folderid): folderid = int(folderid) if not folder.check(self.user_id, folderid): return define.errorpage(self.user_id, errorcode.permission) form = web.input(settings=[]) folder.update_settings(folderid, form.settings) raise web.seeother('/manage/folders')
def GET(self, folderid): folderid = int(folderid) if not folder.check(self.user_id, folderid): return define.errorpage(self.user_id, errorcode.permission) return define.webpage(self.user_id, "manage/folder_options.html", [ folder.select_info(folderid), ])
def control_editfolder_get_(request): folderid = int(request.matchdict['folderid']) if not folder.check(request.userid, folderid): raise WeasylError('InsufficientPermissions') return Response( define.webpage(request.userid, "manage/folder_options.html", [ folder.select_info(folderid), ], title="Edit Folder Options"))
def create_generic(userid, submission, **kwargs): tags = kwargs['tags'] if submission.subtype not in valid_types: submission.subtype = expected_type * 1000 + 999 if not submission.title: raise WeasylError("titleInvalid") elif not submission.rating: raise WeasylError("ratingInvalid") elif len(tags) < 2: raise WeasylError("notEnoughTags") elif not folder.check(userid, submission.folderid): raise WeasylError("Unexpected") profile.check_user_rating_allowed(userid, submission.rating) return create_specific( userid=userid, submission=submission, **kwargs)
def edit(userid, submission, embedlink=None, friends_only=False, critique=False): query = d.engine.execute( "SELECT userid, subtype, settings FROM submission WHERE submitid = %(id)s", id=submission.submitid).first() if not query or "h" in query[2]: raise WeasylError("Unexpected") elif "a" in query[2] and userid not in staff.MODS: raise WeasylError("AdminLocked") elif userid != query[0] and userid not in staff.MODS: raise WeasylError("InsufficientPermissions") elif not submission.title: raise WeasylError("titleInvalid") elif not submission.rating: raise WeasylError("Unexpected") elif not folder.check(query[0], submission.folderid): raise WeasylError("Unexpected") elif submission.subtype // 1000 != query[1] // 1000: raise WeasylError("Unexpected") elif 'v' in query[2] and not embed.check_valid(embedlink): raise WeasylError("embedlinkInvalid") elif 'D' in query[2]: check_google_doc_embed_data(embedlink) profile.check_user_rating_allowed(userid, submission.rating) # Assign settings settings = [query[2].replace("f", "").replace("q", "")] settings.append("f" if friends_only else "") settings.append("q" if critique else "") settings = "".join(settings) if "v" in settings: submission.content = "%s\n%s" % (embedlink, submission.content) if "f" in settings: welcome.submission_became_friends_only(submission.submitid, userid) # TODO(kailys): maintain ORM object db = d.connect() su = d.meta.tables['submission'] q = (su.update().values( folderid=submission.folderid, title=submission.title, content=submission.content, subtype=submission.subtype, rating=submission.rating, settings=settings, ).where(su.c.submitid == submission.submitid)) db.execute(q) if 'D' in settings: db = d.connect() gde = d.meta.tables['google_doc_embeds'] q = (gde.update().values(embed_url=embedlink).where( gde.c.submitid == submission.submitid)) db.execute(q) if userid != query[0]: from weasyl import moderation moderation.note_about( userid, query[0], 'The following submission was edited:', '- ' + text.markdown_link( submission.title, '/submission/%s?anyway=true' % (submission.submitid, )))
def edit(userid, submission, embedlink=None, friends_only=False, critique=False): query = d.execute( "SELECT userid, subtype, settings FROM submission WHERE submitid = %i", [submission.submitid], ["single"]) if not query or "h" in query[2]: raise WeasylError("Unexpected") elif "a" in query[2] and userid not in staff.MODS: raise WeasylError("AdminLocked") elif userid != query[0] and userid not in staff.MODS: raise WeasylError("InsufficientPermissions") elif not submission.title: raise WeasylError("titleInvalid") elif not submission.rating: raise WeasylError("Unexpected") elif not folder.check(query[0], submission.folderid): raise WeasylError("Unexpected") elif submission.subtype / 1000 != query[1] / 1000: raise WeasylError("Unexpected") elif 'v' in query[2] and not embed.check_valid(embedlink): raise WeasylError("embedlinkInvalid") elif 'D' in query[2]: check_google_doc_embed_data(embedlink) profile.check_user_rating_allowed(userid, submission.rating) # Assign settings settings = [query[2].replace("f", "").replace("q", "")] settings.append("f" if friends_only else "") settings.append("q" if critique else "") settings = "".join(settings) if "v" in settings: submission.content = "%s\n%s" % (embedlink, submission.content) if "f" in settings: welcome.submission_became_friends_only(submission.submitid, userid) # TODO(kailys): maintain ORM object db = d.connect() su = d.meta.tables['submission'] q = ( su.update() .values( folderid=submission.folderid, title=submission.title, content=submission.content, subtype=submission.subtype, rating=submission.rating, settings=settings, ) .where(su.c.submitid == submission.submitid)) db.execute(q) if 'D' in settings: db = d.connect() gde = d.meta.tables['google_doc_embeds'] q = (gde.update() .values(embed_url=embedlink) .where(gde.c.submitid == submission.submitid)) db.execute(q) if userid != query[0]: from weasyl import moderation moderation.note_about( userid, query[0], 'The following submission was edited:', '- ' + text.markdown_link(submission.title, '/submission/%s?anyway=true' % (submission.submitid,)))