def action_get_object(self,id, data_dict = {}): if self.site.is_sysadmin == True or (self.site.id == self.id or self.site.slug == self.id): if type(id) == int and id > 0: self.object = Site.saget(id) elif type(id) == int and id == 0 and 'slug' in data_dict: log.debug("they asked for id = 0, lets ignore and doublecheck slug = %s" % data_dict['slug']) self.object = Site.by_slug(data_dict['slug']) else: log.debug("they asked for id = %s, lets ignore and doublecheck slug" % (self.id)) self.object = Site.by_slug(self.id) if self.object: self.qry = [self.object] else: self.set_status(404) log.error("no site %s, status=%s" % (self.id, self._status_code))
def feedbackform(self,id=''): site = Site.by_slug(str(id)) if site: c.site = site help = Help(site_id=site.id,email=sanitize(self.form_result['email'])) if c.user: help.set_user_info(c.user) else: if 'authorname' in self.form_result: help.authorname = sanitize(self.form_result['authorname']) if 'blog' in self.form_result: help.blog = sanitize(self.form_result['blog']) if help.blog == "your blog url": help.blog = '' if 'category' in self.form_result: help.category = sanitize(self.form_result['category']) help.url = sanitize(self.form_result['url']) help.content = sanitize(self.form_result['content']) if 'HTTP_X_FORWARDED_FOR' in request.environ: help.ip = request.environ['HTTP_X_FORWARDED_FOR'] elif 'REMOTE_ADDR' in request.environ: help.ip = request.environ['REMOTE_ADDR'] help.save() if 'goto' in request.POST and len(request.POST['goto']) > 5: c.goto_url = request.POST['goto'] return render('/refresh.html') else: c.result = True return render('/help/help_feedback.html') else: log.error('feedback from came in with no site id=%s, params= %s' % (id,request.params)) return render('/help/help_feedback.html')
def submitfeedback(self,id): site = Site.by_slug(str(id)) if site: c.site_slug = site.slug if 'url' in request.params: c.current_url = request.params['url'] c.hasheader = True c.isblue = False return render('/help/help_feedback.html')
def feedback(self,id): site = Site.by_slug(str(id)) if site: c.site_slug = site.slug if 'url' in request.params: c.current_url = request.params['url'] c.category = 'help' if 'category' in request.params: c.category = sanitize(request.params['category']) c.isblue = True return render('/help/help_feedback.html')
def handshake(self,id=0): if 'token' in request.params and 'site_slug' in request.params: # start a handshake, to figure out if we know this user. site = Site.by_slug(str(request.params['site_slug'])) if site and site.id > 0: # lookup user? how? expire_seconds = 60*60*24*31 #TODO: verify that url it came from is in site config response.set_cookie('dsu', user.public_token(),path='/', expires=expire_seconds, secure=False) return '' elif 'usertoken' in request.params: pass """
def ratearticle(self,id=''): site = Site.by_slug(str(id)) data = {'success':False} if site and 'resource_id' in request.params: userid = 0 #TODO: add rating_ct to ??? (context? help? cms?) displayname = 'anonymous' if c.user: userid = c.user.id displayname = c.user.displayname rating_val = int(request.params['rating']) r = Rating(userid,'/ds/help/article',rating_val,sanitize(request.params['resource_id']),displayname) r.save() data = {'success':True,'html':r.id} json = simplejson.dumps(data) response.headers['Content-Type'] = 'text/json' return '%s(%s)' % (request.params['jsoncallback'],json)
def js2(self, id=""): slug = id hash = compute_userhash() # verify that they if hash != None and "url" in request.params: site = Site.by_slug(str(slug)) url = str(request.params["url"]) url = url[: url.find("/", 8)] if site and len(url) > 5 and url in site.site_url: # filter comments for just url being requested c.site = site c.url = str(request.params["url"]) c.items = Comment.for_url(site, request.params["url"]) return render("/comment/comment_js2.js") else: log.error("%s not in site_url" % (url)) else: log.info("not in site_url") return ( """document.getElementById('demisauce-comments').innerHTML = '<a href="%s/">Sorry Go to Demisauce to Comment</a>';""" % c.base_url )
def commentform(self, id=0): site = Site.by_slug(str(id)) c.source = "js" if site and site.id > 0: c.site_slug = site.slug c.site = site if "source" in request.params: c.source = request.params["source"] c.resource_id = "" if "rid" in request.params: c.resource_id = request.params["rid"] if request.GET.has_key("url"): c.goto_url = request.GET["url"] else: if c.user: c.goto_url = c.user.url else: c.goto_url = "http://www.google.com" else: raise Exception("that site was not found") # c.hasheader = False # c.isblue = True return render("/comment/comment_commentform.html")
def commentsubmitjsonp(self, id=""): site = Site.by_slug(str(id)) if site: c.site = site item = Comment(site_id=site.id) if c.user: item.set_user_info(c.user) a = activity.Activity(site_id=c.user.site_id, person_id=c.user.id, activity="Commenting") # a.ref_url = 'comment url' a.category = "comment" a.save() else: if "authorname" in request.params: item.authorname = sanitize(request.params["authorname"]) if "blog" in request.params: item.blog = sanitize(request.params["blog"]) if "email" in request.params: item.set_email(sanitize(request.params["email"])) if item.blog == "your blog url": item.blog = "" # prod environment proxy: apache if "HTTP_X_FORWARDED_FOR" in request.environ: item.ip = request.environ["HTTP_X_FORWARDED_FOR"] elif "REMOTE_ADDR" in request.environ: item.ip = request.environ["REMOTE_ADDR"] if "comment" in request.params: item.comment = sanitize(request.params["comment"]) if "type" in request.params: item.type = sanitize(request.params["type"]) else: item.type = "blogentry" if "rid" in request.params: item.uri = urllib.unquote_plus(request.params["rid"].lower()) item.save() # send emails from demisauce.lib import scheduler dnew = { "sitename": c.site.name, "displayname": item.authorname, "email": item.email, "url": "dest", "blog": item.blog, } scheduler.add_interval_task(send_emails, 0, ("comment-notification", [c.site.email], dnew), initialdelay=4) if "jsoncallback" in request.params: c.items = [item] data = {"success": True, "html": render("/comment/comment_nobody.html")} json = simplejson.dumps(data) response.headers["Content-Type"] = "text/json" return "%s(%s)" % (request.params["jsoncallback"], json) else: # TODO panic? raise "eh" pass return
def commentsubmit(self, id=""): site = Site.by_slug(str(id)) if site: c.site = site item = Comment(site_id=site.id) if c.user: item.set_user_info(c.user) a = activity.Activity(site_id=c.user.site_id, person_id=c.user.id, activity="Commenting") # a.ref_url = 'comment url' a.category = "comment" a.save() else: item.authorname = sanitize(self.form_result["authorname"]) item.blog = sanitize(self.form_result["blog"]) if self.form_result.has_key("email"): item.set_email(sanitize(self.form_result["email"])) if item.blog == "your blog url": item.blog = "" # prod environment proxy: apache if "HTTP_X_FORWARDED_FOR" in request.environ: item.ip = request.environ["HTTP_X_FORWARDED_FOR"] elif "REMOTE_ADDR" in request.environ: item.ip = request.environ["REMOTE_ADDR"] item.comment = sanitize(self.form_result["comment"]) if self.form_result.has_key("type"): item.type = sanitize(self.form_result["type"]) else: item.type = "blogentry" if self.form_result.has_key("goto"): dest = self.form_result["goto"] item.uri = dest elif c.user: dest = c.user.url else: # TODO panic? return if "rid" in self.form_result: item.uri = self.form_result["rid"].lower() item.save() # send emails from demisauce.lib import scheduler dnew = { "sitename": c.site.name, "displayname": item.authorname, "email": item.email, "url": dest, "blog": item.blog, } scheduler.add_interval_task(send_emails, 0, ("comment-notification", [c.site.email], dnew), initialdelay=4) # TODO '?#demisauce-comments' c.goto_url = dest c.resource_id = "" if "rid" in self.form_result: c.resource_id = self.form_result["rid"] source = "js" if "source" in self.form_result: source = self.form_result["source"] if "jsoncallback" in request.params: data = {"success": True, "html": item.comment} json = simplejson.dumps(data) response.headers["Content-Type"] = "text/json" return "%s(%s)" % (request.params["jsoncallback"], json) # if source == 'js': # return render('/refresh.html') # else: c.items = [item] # c.show_form = False return render("/comment/comment_nobody.html") else: # TODO panic? raise "eh" pass return