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))
Exemple #4
0
    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})
Exemple #6
0
    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})
Exemple #7
0
    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))
Exemple #10
0
  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('/')
Exemple #12
0
    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))