def current_user(self): """Returns the logged in Facebook user, or None if unconnected.""" if not hasattr(self, "_current_user"): self._current_user = None user_id = whfb.parse_cookie(self.request.COOKIES.get("fb_user")) if user_id and str(user_id).isdigit(): self._current_user = self.persistence.get_user(user_id) return self._current_user
def get(self, request, **kwargs): logger.debug("HomeViewHandler.get()") #import pdb; pdb.set_trace() c_user = self.current_user if c_user is None or c_user.get('access_token', None) is None: args = dict(current_user=c_user) if is_mobile(request): template_dir = 'm' else: template_dir = 'w' response = render_to_response("%s/login_main.tmpl" % template_dir, args) else: args = dict(access_token=c_user['access_token']) response = HttpResponseRedirect("/view.py?" + urllib.urlencode(args)) if self.request.COOKIES.get("fb_user", None) is not None: user_id = whfb.parse_cookie(self.request.COOKIES.get("fb_user")) whfb.set_cookie(response, "fb_user", str(user_id), domain=config.WH_DOMAIN, path="/", expires=time.time() + 30 * 86400) return response
def post(self, request, **kwargs): #import pdb; pdb.set_trace() flag_login= True self.uid = whfb.parse_cookie(request.COOKIES.get("fb_user")) if self.uid is None: #return HttpResponseRedirect('/') current_user = None self.access_token = None self.access_token_expires = -1 else: current_user = self.current_user self.access_token = current_user['access_token'] self.access_token_expires = current_user['access_token_expires'] # extend access token if expiring within a day self.access_token, self.access_token_expires = self.fb.get_extended_access_token_w_timeout(self.access_token, self.access_token_expires, DAY_IN_SECS) logger.debug("access_token: %s, expires:%s", self.access_token, self.access_token_expires) redirect = self.get_coordinate() if redirect is not None: user_id = whfb.parse_cookie(request.COOKIES.get("fb_user")) if user_id is not None: whfb.set_cookie(redirect, "fb_user", str(user_id), domain=config.WH_DOMAIN, path="/", expires=time.time() + 30 * 86400) return redirect place_list = self.get_queryset() app_url = config.WEBSITE_HOST + '/view.py' if is_mobile(request): template_dir = 'm' else: template_dir = 'w' if len(place_list) == 0: flag_first_time = True template_name = "%s/location_main_first_time_user.tmpl" % template_dir place_list = self.get_general_queryset() else: flag_first_time = False template_name = "%s/location_main.tmpl" % template_dir #import pdb; pdb.set_trace() location_paginator, page, page.object_list, is_paginated = self.paginate_queryset(place_list, kwargs['paginate_by']) # Make sure page request is an int. If not, deliver first page. try: page_num = int(request.GET.get('page', '1')) except ValueError: page_num = 1 # If page request (9999) is out of range, deliver last page of results. try: page = location_paginator.page(page_num) except (EmptyPage, InvalidPage): page = location_paginator.page(location_paginator.num_pages) places = page.object_list recommend_list = [] checkin_list = [] if self.flag_recommend or flag_first_time: recommend_list = places wh_q = 'recommend' else: checkin_list = places wh_q = 'checkin' return render_to_response(template_name, {'checkin_list': checkin_list, 'recommend_list': recommend_list, 'app_url': app_url, 'agent': request.META.get('HTTP_USER_AGENT', None), 'client_country': self.client_loc_country, 'client_state': self.client_loc_state, 'client_city': self.client_loc_city, 'flag_geobrowsertried': request.GET.get('geobrowsertried', False), 'client_lat': self.client_loc_latitude, 'client_long': self.client_loc_longitude, 'ec2_page': config.EC2_APP_PAGE, 'access_token': self.access_token, 'is_paginated': is_paginated, 'page': page, 'paginator': location_paginator, 'flag_login': flag_login, 'current_user': current_user, 'sort_by': self.sort_by, 'wh_q': wh_q })