def recover(request, key): #only update if the key is not already active if request.session.session_key != key: #take over email from old key newSettings = models.getUserSettings(request.session.session_key) if not newSettings.email_address: oldSettings = models.getUserSettings(key) newSettings.email_address = oldSettings.email_address newSettings.save() oldSettings.delete() #transfer ownership to new session key Bin.objects.filter(user_key=key).update(user_key=request.session.session_key) #remove old session Session.objects.filter(session_key=key).delete() #merge old sessions settings = models.getUserSettings(request.session.session_key) if settings.email_address: email = settings.email_address for s in models.UserSettings.objects.filter(email_address=settings.email_address): if s.user_key != request.session.session_key: Bin.objects.filter(user_key=s.user_key).update(user_key=request.session.session_key) s.delete() settings.email_address = email settings.save() return HttpResponseRedirect('/bins') return HttpResponseRedirect('/recover/failed')
def settings(request): response = dict(result=False) email_address = request.GET.get('email_address', None) if email_address: settings = models.getUserSettings(request.session.session_key) settings.email_address = email_address settings.save() response = dict(result=True) return render_to_json_response(response)
def get(self): user = self.checkUser() if not user: return settings = models.getUserSettings(user) templateVars = { 'settings': settings.list(), 'admin': users.is_current_user_admin(), } self.response.headers['Content-Type'] = 'text/html' path = os.path.join(os.path.dirname(__file__), 'tpl', 'home.html') self.response.out.write(template.render(path, templateVars))
def post(self): user = self.checkUser() if not user: return name = self.request.get('name') value = self.request.get('value') if not name or not value: self.doJson({'success':False,'error':'Missing data'}) return settings = models.getUserSettings(user) success = settings.set(name, value) settings.put() self.doJson({'success':success})
def post(self): user = self.checkUser() if not user: return name = self.request.get('name') value = self.request.get('value') if not name or not value: self.doJson({'success': False, 'error': 'Missing data'}) return settings = models.getUserSettings(user) success = settings.set(name, value) settings.put() self.doJson({'success': success})
def get(self): user = self.checkUser() if not user: return settings = models.getUserSettings(user) # User badges ownBadges = [] badges = models.UserBadge.all().order('date') for badge in badges: props = { 'name': badge.badge.name, 'desc': badge.badge.desc, 'icon': badge.badge.icon if badge.badge.icon else 'newbie' } ownBadges.append({'badge': props, 'date': badge.date}) templateVars = { 'badges': ownBadges, 'admin': users.is_current_user_admin(), } if users.is_current_user_admin(): allBadges = [] badges = models.BadgeDef.all().order('target').order( 'action').order('after') for badge in badges: props = { 'name': badge.name, 'desc': badge.desc, 'icon': badge.icon if badge.icon else 'newbie', 'target': badge.target, 'action': badge.action } allBadges.append({ 'badge': props, 'edit': True, 'key': badge.key() }) templateVars['allbadges'] = allBadges self.response.headers['Content-Type'] = 'text/html' path = os.path.join(os.path.dirname(__file__), 'tpl', 'badges.html') self.response.out.write(template.render(path, templateVars))
def get(self, keyword = False): user = self.checkUser() if not user: return keywordsModel = models.getFavorites(user) if keywordsModel: keywords = keywordsModel.keywords else: keywords = False if self.request.is_ajax(): self.doJson({'success':True,'keywords':keywords}) return firstDay = models.DailyTrends.all().order('date').get() if firstDay: minDate = (firstDay.date - datetime.date.today()).days else: minDate = 0 templateVars = { 'keywords': keywords, 'minDate': minDate, 'userData': { 'email': user.email, 'settings': models.getUserSettings(user) }, 'admin': users.is_current_user_admin(), # javascript templates 'result': { 'title': '{title}', 'info': '{info}', 'text': '{text}', 'link': '{link}' }, 'hotkeyword': '{hotKeyword}' } self.response.headers['Content-Type'] = 'text/html' path = os.path.join(os.path.dirname(__file__), 'tpl', 'favorites.html') self.response.out.write(template.render(path, templateVars))
def get(self, keyword=False): user = self.checkUser() if not user: return keywordsModel = models.getFavorites(user) if keywordsModel: keywords = keywordsModel.keywords else: keywords = False if self.request.is_ajax(): self.doJson({'success': True, 'keywords': keywords}) return firstDay = models.DailyTrends.all().order('date').get() if firstDay: minDate = (firstDay.date - datetime.date.today()).days else: minDate = 0 templateVars = { 'keywords': keywords, 'minDate': minDate, 'userData': { 'email': user.email, 'settings': models.getUserSettings(user) }, 'admin': users.is_current_user_admin(), # javascript templates 'result': { 'title': '{title}', 'info': '{info}', 'text': '{text}', 'link': '{link}' }, 'hotkeyword': '{hotKeyword}' } self.response.headers['Content-Type'] = 'text/html' path = os.path.join(os.path.dirname(__file__), 'tpl', 'favorites.html') self.response.out.write(template.render(path, templateVars))
def get(self): user = self.checkUser() if not user: return settings = models.getUserSettings(user) # User badges ownBadges = [] badges = models.UserBadge.all().order('date') for badge in badges: props = { 'name': badge.badge.name, 'desc': badge.badge.desc, 'icon': badge.badge.icon if badge.badge.icon else 'newbie' } ownBadges.append({'badge':props,'date':badge.date}) templateVars = { 'badges': ownBadges, 'admin': users.is_current_user_admin(), } if users.is_current_user_admin(): allBadges = [] badges = models.BadgeDef.all().order('target').order('action').order('after') for badge in badges: props = { 'name': badge.name, 'desc': badge.desc, 'icon': badge.icon if badge.icon else 'newbie', 'target': badge.target, 'action': badge.action } allBadges.append({'badge':props,'edit':True,'key':badge.key()}) templateVars['allbadges'] = allBadges self.response.headers['Content-Type'] = 'text/html' path = os.path.join(os.path.dirname(__file__), 'tpl', 'badges.html') self.response.out.write(template.render(path, templateVars))
def recover_request(request): email = request.POST.get('email', None) if email: q = models.UserSettings.objects.filter(email_address = email) if q.count() > 0: key = hashlib.sha1(str(uuid.uuid1())).hexdigest() recover_user = models.getUserSettings(key) recover_user.email_address = email recover_user.save() for u in q: Bin.objects.filter(user_key=u.user_key).update(user_key=key) #send recovery mail template = loader.get_template('recover_mail.txt') context = Context({ 'recover_url': request.build_absolute_uri("/r/%s" % key), }) subject = 'VideoBin Account Recovery' message = template.render(context) send_mail(subject, message, videobin_settings.CONTACT_EMAIL, [email, ]) return HttpResponseRedirect('/recover') else: return HttpResponseRedirect('/recover/failed') return HttpResponseRedirect('/')
def get(self, keyword=False): self.response.headers['Content-Type'] = 'text/html' day = None debug = False todate = datetime.date.today() if not keyword: keyword = '' elif keyword[:3] == 'day': keyword = '' day = keyword[4:] m = re.match('(\d{4})-(\d{2})-(\d{2})', day) if m: date = datetime.date(m.group(1), m.group(2), m.group(3)) else: day = None elif keyword == '_dbg': debug = True keyword = False if not day: day = todate.isoformat() date = todate keywordsModel = models.summarizeDailyTrends(date) if keywordsModel: keywords = keywordsModel.get('keywords') else: keywords = False if self.request.get('_escaped_fragment_'): keyword = self.request.get('_escaped_fragment_') keyword = urllib.unquote(keyword) firstDay = models.DailyTrends.all().order('date').get() if firstDay: minDate = (firstDay.date - datetime.date.today()).days else: minDate = 0 articles = False if len(keyword): apis = api.ApiHandler(self.request.remote_addr, parse=True) kw_q = urllib.quote(keyword) articles = { 'bing': apis.requestBing(kw_q), 'news': apis.requestNews(kw_q), 'blogs': apis.requestBlogs(kw_q), 'wiki': apis.requestWiki(kw_q) } user = users.get_current_user() if user: userData = { 'email': user.email, 'settings': models.getUserSettings(user) } else: userData = False templateVars = { 'keyword': keyword, 'keywords': keywords, 'articles': articles, 'day': day, 'today': todate.isoformat(), 'minDate': minDate, 'userData': userData, 'admin': users.is_current_user_admin(), # javascript templates 'result': { 'title': '{title}', 'info': '{info}', 'text': '{text}', 'link': '{link}' }, 'hotkeyword': '{hotKeyword}' } if debug: self.response.out.write(templateVars) for dt in models.DailyTrends.all().order('date'): self.response.out.write(dt.date) return path = os.path.join(os.path.dirname(__file__), 'tpl', 'index.html') self.response.out.write(template.render(path, templateVars))
def get(self, keyword=False): self.response.headers["Content-Type"] = "text/html" day = None debug = False todate = datetime.date.today() if not keyword: keyword = "" elif keyword[:3] == "day": keyword = "" day = keyword[4:] m = re.match("(\d{4})-(\d{2})-(\d{2})", day) if m: date = datetime.date(m.group(1), m.group(2), m.group(3)) else: day = None elif keyword == "_dbg": debug = True keyword = False if not day: day = todate.isoformat() date = todate keywordsModel = models.summarizeDailyTrends(date) if keywordsModel: keywords = keywordsModel.get("keywords") else: keywords = False if self.request.get("_escaped_fragment_"): keyword = self.request.get("_escaped_fragment_") keyword = urllib.unquote(keyword) firstDay = models.DailyTrends.all().order("date").get() if firstDay: minDate = (firstDay.date - datetime.date.today()).days else: minDate = 0 articles = False if len(keyword): apis = api.ApiHandler(self.request.remote_addr, parse=True) kw_q = urllib.quote(keyword) articles = { "bing": apis.requestBing(kw_q), "news": apis.requestNews(kw_q), "blogs": apis.requestBlogs(kw_q), "wiki": apis.requestWiki(kw_q), } user = users.get_current_user() if user: userData = {"email": user.email, "settings": models.getUserSettings(user)} else: userData = False templateVars = { "keyword": keyword, "keywords": keywords, "articles": articles, "day": day, "today": todate.isoformat(), "minDate": minDate, "userData": userData, "admin": users.is_current_user_admin(), # javascript templates "result": {"title": "{title}", "info": "{info}", "text": "{text}", "link": "{link}"}, "hotkeyword": "{hotKeyword}", } if debug: self.response.out.write(templateVars) for dt in models.DailyTrends.all().order("date"): self.response.out.write(dt.date) return path = os.path.join(os.path.dirname(__file__), "tpl", "index.html") self.response.out.write(template.render(path, templateVars))