Пример #1
0
    def get(self):
        feed_infos = get_feed_infos(self)
        if feed_infos is False:
            return self.redirect('/') # user not logged in, or error (handled already)

        self.response.headers['Content-Type'] = 'text/html'
        self.response.out.write(MakoLoader.render('userprofile.html', request=self.request, feed_infos=feed_infos))
Пример #2
0
    def get(self):
        session = is_logged_in(self)
        if not session:
            return self.redirect(REDIR_URL)

        self.response.headers['Content-Type'] = 'text/html'
        self.response.out.write(MakoLoader.render('search_new.html', request=self.request))
Пример #3
0
    def get(self):
        session = is_logged_in(self)
        if not session:
            return

        self.response.headers['Content-Type'] = 'text/html'
        self.response.out.write(MakoLoader.render('userprofile_edit.html', request=self.request,
                                                  display_name=session['my_dname'], email=session['my_email']))
Пример #4
0
    def get(self):
        session = is_logged_in(self)
        if not session:
            return self.redirect(REDIR_URL)

        self.response.headers['Content-Type'] = 'text/html'
        self.response.out.write(
            MakoLoader.render('search_new.html', request=self.request))
Пример #5
0
    def get(self):
        session = get_current_session()
        if session.has_key('my_id'):
            redir_to = self.request.get('redir_to')
            if redir_to:
                self.redirect(redir_to)

        self.response.headers['Content-Type'] = 'text/html'
        self.response.out.write(MakoLoader.render('index.html', request=self.request, base_url=DOMAIN))
Пример #6
0
    def get(self):
        feed_infos = get_feed_infos(self)
        if feed_infos is False:
            return self.redirect(
                '/')  # user not logged in, or error (handled already)

        self.response.headers['Content-Type'] = 'text/html'
        self.response.out.write(
            MakoLoader.render('userprofile.html',
                              request=self.request,
                              feed_infos=feed_infos))
Пример #7
0
    def get(self):
        session = is_logged_in(self)
        if not session:
            return

        self.response.headers['Content-Type'] = 'text/html'
        self.response.out.write(
            MakoLoader.render('userprofile_edit.html',
                              request=self.request,
                              display_name=session['my_dname'],
                              email=session['my_email']))
Пример #8
0
    def get(self):
        session = get_current_session()
        if session.has_key('my_id'):
            redir_to = self.request.get('redir_to')
            if redir_to:
                self.redirect(redir_to)

        self.response.headers['Content-Type'] = 'text/html'
        self.response.out.write(
            MakoLoader.render('index.html',
                              request=self.request,
                              base_url=DOMAIN))
Пример #9
0
 def render(handler):
     handler.error(404)
     handler.response.out.write(MakoLoader.render("404.html", request=handler.request))
Пример #10
0
    def get(self):
        session = is_logged_in(self)
        if not session:
            return self.redirect('/')
        uid = session['my_id']

        now = datetime.datetime.now()
        feed_key_name = self.request.get('f')
        t = self.request.get('t')
        overall_view = (not feed_key_name and t != 'newest')
        if feed_key_name == 'manual':
            fhid = 'manual'
            age = desc = None
            updating_shortly = False
            if t == 'hidden':
                name = "Manually-Added Ads that were Hidden"
            elif t == 'newest':
                return self.redirect('/tracker')
            else:
                name = "Manually-Added Ads"
        elif feed_key_name:
            fhid = Feed.hashed_id_from_pk(feed_key_name)

            # get the user's name for this feed
            name = get_search_name(self, feed_key_name)
            if name is None:
                return self.redirect('/tracker')  # user is no longer tracking this feed
            elif name is False:
                return self.redirect('/') # login related error

            # compute how old the data is
            feed_dt_updated = dt_feed_last_updated(feed_key_name)
            if not feed_dt_updated:
                return self.redirect('/tracker?err=That%20feed%20no%20longer%20exists.')
            age = str_age(feed_dt_updated, now)
            td = now - feed_dt_updated
            updating_shortly = td.days>0 or td.seconds>MAX_AGE_MIN*60
            if updating_shortly:
                age += ' - update in progress'

            # update the feed if we haven't retrieved the latest ads recently
            updating = update_feed_if_needed(feed_key_name)
            if updating is None:
                return self.redirect('/tracker?err=The%20requested%20feed%20does%20not%20exist.')
        elif overall_view:
            age = desc = fhid = None
            updating_shortly = False
            if t == 'hidden':
                name = "All Hidden Ads"
            else:
                name = "All Rated/Noted Ads"
        else:
            # t=newest and feed=all doesn't make sense together
            return self.redirect('/tracker')

        # determine which set of ads to show
        next = self.request.get('next')
        if t == 'newest':
            # show the newest ads (regardless of whether the user has commented on them or not)
            q = Ad.all().filter('feeds =', fhid).order('-update_dt')
            if next:
                q.with_cursor(next)
            ads = q.fetch(ADS_PER_PAGE)

            # get user comments on these ads, if any
            user_ad_keys = [db.Key.from_path('UserCmt', '%s%s' % (uid, a.cid)) for a in ads]
            user_ad_notes = db.get(user_ad_keys)
            title_extra = 'Newest Ads'
        else:
            # show ads this user has commented on/rated (whether to show hidden ads or not depends on t)
            hidden = (t == 'hidden')
            q = UserCmt.all()
            q.filter('uid =', session['my_id'])
            if fhid:
                q.filter('feeds =', fhid)
            if hidden:
                q.filter('dt_hidden >', DT_PRESITE).order('-dt_hidden')
            else:
                q.filter('dt_hidden =', None).order('-rating')
            if next:
                q.with_cursor(next)
            user_ad_notes = q.fetch(ADS_PER_PAGE)

            # get the ads associated with these comments
            ad_keys = [db.Key.from_path('Ad', uan.cid) for uan in user_ad_notes]
            ads = db.get(ad_keys)

            if t == 'hidden':
                title_extra = "Ignored Ads"
            else:
                title_extra = "Ads I've Rated"

        # put the ads and their comments together
        ad_infos = zip(ads, user_ad_notes)

        # check that each UserCmt.feeds field is up to date with Ad.feeds (can
        # only do this when we're searching by Ad, i.e., t=newest)
        if t == 'newest':
            # TODO: only mark as outdated if they are inequal EXCEPT 'manual'
            # TODO: when updating cmt.feeds, don't copy over 'manual' (user-specific)
            # TODO: reconsider this code ...
            outdated = [(ad,cmt) for ad, cmt in ad_infos if cmt and ad.feeds!=cmt.feeds]
            if outdated:
                # update any out of date comments
                for ad,cmt in outdated:
                    cmt.feeds = ad.feeds
                db.put([cmt for ad,cmt in outdated])

        # whether there may be more ads
        more = (len(ads) == ADS_PER_PAGE)
        if more:
            more = q.cursor()
        if not more or more==str(next):
            more = None

        # get a description of the search we're viewing
        if fhid and fhid!='manual':
            tmp_feed = Feed(key_name=feed_key_name)
            tmp_feed.extract_values()
            desc = tmp_feed.desc()

        if not next:
            page = 1
        else:
            try:
                page = int(self.request.get('page', 1))
            except ValueError:
                page = 1;

        self.response.headers['Content-Type'] = 'text/html'
        self.response.out.write(MakoLoader.render('search_view.html', request=self.request,
                                                  ADS_PER_PAGE=ADS_PER_PAGE, ads=ad_infos, more=more, age=age, now=now, search_desc=desc, title_extra=title_extra, page=page, name=name, updating_shortly=updating_shortly, overall_view=overall_view))
Пример #11
0
 def get(self, template_name):
     self.response.headers['Content-Type'] = 'text/html'
     self.response.out.write(MakoLoader.render(template_name+'.html', request=self.request))
Пример #12
0
 def render(handler):
     handler.error(404)
     handler.response.out.write(MakoLoader.render('404.html', request=handler.request))