def get(self): current_user = users.get_current_user() if not current_user: start_template = jinja_current_directory.get_template( "templates/main_page.html") jinja_values = { 'signin_page_url': users.create_login_url('/'), } self.response.write(start_template.render(jinja_values)) else: #datastore current_key = ndb.Key('Visitor', current_user.user_id()) current_visitor = current_key.get() if not current_visitor: current_visitor = Visitor(key=current_key, name=current_user.nickname(), email=current_user.email(), id=current_user.user_id()) current_visitor.put() #display with_user_template = jinja_current_directory.get_template( "templates/home_page.html") jinja_values = { 'name': current_user.nickname(), 'user_addr': current_user.email(), 'user_id': current_user.user_id(), 'signout_page_url': users.create_logout_url('/'), } self.response.write(with_user_template.render(jinja_values))
def login(request): ''' authentication :param request: :return: ''' if request.method == 'GET': code = request.GET.get("code", None) # request for the access_token and refresh token print "code: %s"%code r = getToken(code) if r: # get user info userInfo = getUserInfo(r['access_token'],r['openid']) discounts = Discount_Info.objects.filter(lang=0).order_by('-dis_id')[:15] ozdiscounts = Discount_Info.objects.filter(lang=1).order_by('-dis_id')[:15] rates = Rate.objects.all() # store user info is_exist = Visitor.objects.filter(openid=userInfo['openid']) if not is_exist: user = Visitor() # 存在即更新 else: user = is_exist[0] for key in user.__dict__: if key in userInfo: setattr(user, key, userInfo[key]) user.save() return render_to_response('index.html', dict(data=userInfo, discounts=discounts, rates=rates, ozdiscounts=ozdiscounts) ) # else: response = HttpResponse(u"认证失败") return response
def create_visitor(request): v = Visitor() #get params try: v.referer = request.META.get('HTTP_REFERER') except KeyError, msg: logging.error(msg, exc_info=sys.exc_info(), extra={'url': request.build_absolute_uri()})
def index(request): ''' render index :param request: :return: ''' discounts = Discount_Info.objects.filter(lang=0,status=1).order_by('-dis_id')[:15] ha = {u'province': u'', u'openid': u'oa6cGt4PrUC9BSWuK09IvehmgcNUaaaa', u'headimgurl': u'http://wx.qlogo.cn/mmopen/PiajxSqBRaELwKcgGMFpnGn4WNVzPicUMoOuI0foZ06uozNK2pC4Bu96VibfyRDzvrkMY2kdSPEMcj97McG2J4a5A/0', u'language': u'zh_CN', u'city': u'', u'country': '\xe4\xb8\xad\xe5\x9b\xbd', u'sex': 1, u'privilege': [], u'nickname': '\xe5\xb0\x8f\xe5\x93\x92'} is_exist = Visitor.objects.filter(openid=ha['openid']) banner = Banner.objects.filter()[0] if not is_exist: user = Visitor() # 存在即更新 else: user = is_exist[0] for key in user.__dict__: if key in ha: setattr(user, key, ha[key]) user.save() rates = Rate.objects.all() url = MEDIA_URL+os.path.basename(banner.headimgurl.url) # return render_to_response('index.html', dict(data=ha,rates=rates , discounts=discounts)) return render_to_response('cleaning.html', dict(url=url))
def get(self): me = users.get_current_user() if not me: start_template = jinja_current_dir.get_template("templates/welcome.html") jinja_values = { 'signin_page_url': users.create_login_url('/') } self.response.write(start_template.render(jinja_values)) else: my_key = ndb.Key('Visitor', me.user_id()) my_visitor = my_key.get() if not my_visitor: my_visitor = Visitor(key = my_key, name = me.nickname(), email = me.email(),id = me.user_id(), page_view_count = 0) my_visitor.page_view_count += 1 my_visitor.put() withuser_template = jinja_current_dir.get_template("templates/withuser.html") jinja_values = { 'name': me.nickname(), 'email_addr': me.email(), 'user_id': me.user_id(), 'signout_page_url': users.create_logout_url('/'), 'number_of_views': my_visitor.page_view_count } self.response.write(withuser_template.render(jinja_values))
def get(self): if Visitor.query(Visitor.plays > 0).get(): newVisitor = Visitor.query(Visitor.plays > 0).get() newVisitor.plays += 1 newVisitor.put() else: Visitor(plays = 1).put() self.response.headers['Content-Type'] = 'text/html' template_vars = {"username": self.request.get("username")} template = jinja_current_directory.get_template('flappypotato.html') self.response.write(template.render(template_vars))
def create_visit_request(user, visiting_point, company, data): try: visitor = user.visitor except User.DoesNotExist: visitor = Visitor(user=user, phone=data['phone']) visitor.save() vr = VisitRequest(company=company, visitor=visitor, visiting_point=visiting_point) vr.save() for k,v in data.items(): if k[0:3]=='sf_': va = VisitAttributes(visit_request=vr, attr_id = int(k[3:]), val=v) va.save() return vr
def visit(): """ Create user if not exists Increment user visits otherwise """ ip = request.remote_addr visitor = models.storage.get_by_ip(ip) if visitor is None: visitor = Visitor() setattr(visitor, "ip", ip) models.storage.new(visitor) models.storage.save() setattr(visitor, "visits", visitor.visits + 1) return jsonify(visitor.to_dict())
def incoming_click(request,category): '''Every page load creates a new visitor object. This visitor object is updated with a random site and offerset (combination of 2 offers), then redirected to the page template.''' #To do: Use publisher component to send messages to any consumer... SendMessage(visitor) v = Visitor() #get params (v.referer, v.user_agent, v.domain, v.category) = (request.META.get('HTTP_REFERER'), request.META.get('HTTP_USER_AGENT'), request.META.get('SERVER_NAME'), category, ) #get url params (v.adsource, v.account, v.ad, v.agegroup,v.image, v.channel, v.testing, v.safeview) = (request.GET.get('adsource','missing'), request.GET.get('account','missing'), request.GET.get('ad','missing'), request.GET.get('agegroup','missing'), request.GET.get('image','missing'), request.GET.get('channel','missing'), request.GET.get('testing','missing'), request.GET.get('safeview','missing'), ) if category not in category_list: v.category = 'Error' v.save() return HttpResponse("Category %s was not found" % category) site = get_site(category) v.site = site v.offerset_id, offer_list = get_offerset(site) v.save() name,link = _get_display_name_and_link(v,offer_list) return render_to_response('%s/%s' % (v.category,site.page1_template), locals())
def create_new_visitor(): request_body = request.get_json() print(request_body) visitor1 = Visitor( first_name=request_body["first_name"], last_name=request_body["last_name"], age=request_body["age"], address=request_body["address"], phone_number=request_body["phone_number"], email=request_body["email"], ) db.session.add(visitor1) db.session.commit() return jsonify(visitor1.serialize()), 200
def create_visit_request(user, visiting_point, company, data): try: visitor = user.visitor except User.DoesNotExist: visitor = Visitor(user=user, phone=data['phone']) visitor.save() vr = VisitRequest(company=company, visitor=visitor, visiting_point=visiting_point) vr.save() for k, v in data.items(): if k[0:3] == 'sf_': va = VisitAttributes(visit_request=vr, attr_id=int(k[3:]), val=v) va.save() return vr
def get(self): me = users.get_current_user() print "hi" jinja_values = {} start_template = jinja_env.get_template("templates/main.html") if not me: jinja_values = {'signin_page_url': users.create_login_url('/')} #self.response.write(start_template.render(jinja_values)) else: my_key = ndb.Key('Visitor', me.user_id()) my_visitor = my_key.get() if not my_visitor: my_visitor = Visitor(key=my_key, name=me.nickname(), email=me.email(), id=me.user_id()) jinja_values["signout_page_url"] = users.create_logout_url('/') my_visitor.put() self.response.write(start_template.render(jinja_values))
def get(self): user = users.get_current_user() if not user: #User is not signed in info = jinja_env.get_template('templates/info.html') jinja_values = {'log_url': users.create_login_url('/')} self.response.write(info.render(jinja_values)) else: #User is signed in my_visitor = get_visitor() #Check data store, do we already have the users data? # if not: Create new entry in datastore for user if not my_visitor: my_visitor = Visitor( #key = my_key, id=user.user_id(), name=user.nickname(), email=user.email()) my_visitor.put() userhome = jinja_env.get_template('templates/home.html') #Outfits query #Need to add filter query = Outfit.query( Outfit.User_ID == user.user_id()).order(-Outfit.Date) outfitslist = query.fetch() #Query end jinja_values = { 'name': user.nickname(), 'email_addr': user.email(), 'user_id': user.user_id(), 'log_url': users.create_logout_url('/'), 'month': datetime.datetime.now().strftime("%A, %B %d, %Y"), 'outfits': outfitslist } # if my_visitor.image: # jinja_values["img"] = base64.b64encode(my_visitor.image) self.response.write(userhome.render(jinja_values))
def get(self): me = users.get_current_user() if not me: # No user is logged in, send them to the welcome page. start_template = jinja_current_dir.get_template("templates/welcome.html") jinja_values = { 'signin_page_url': users.create_login_url('/') } self.response.write(start_template.render(jinja_values)) else: # A user is logged in my_visitor = get_visitor() if not my_visitor: # If we don't have an entry in DataStore for this user, add one. my_visitor = Visitor( key = get_key(me), id = me.user_id(), name = me.nickname(), email = me.email(), ) # We only save if we're creating a new one because we don't # modify existing Visitor objects. my_visitor.put() withuser_template = jinja_current_dir.get_template("templates/withuser.html") jinja_values = { 'name': me.nickname(), 'email_addr': me.email(), 'user_id': me.user_id(), 'signout_page_url': users.create_logout_url('/'), } if my_visitor.image: # base64.b64encode converts the BlobProperty image # into a string the browser knows how to show as an image. # See withuser.html for the <img> code needed to show a string # as an image. jinja_values['img'] = base64.b64encode(my_visitor.image) self.response.write(withuser_template.render(jinja_values))
def logbud(): form = VisitorSignInForm() # TODO: # implement if request.method == 'POST': if form.validate_on_submit(): firstname = form.firstname.data.lower() lastname = form.lastname.data.lower() visiting = form.visiting.data.lower() purpose = form.purpose.data.lower() # Check if visitor is new returning_visitor = Visitor.query.filter_by( firstname=firstname, lastname=lastname).first() if not returning_visitor: new_visitor = Visitor(firstname=firstname, lastname=lastname) db.session.add(new_visitor) db.session.commit() new_visitor = Visitor.query.filter_by( firstname=firstname, lastname=lastname).first() new_visit = Visit(visitor_id=new_visitor.id, visiting=visiting, purpose=purpose) db.session.add(new_visit) db.session.commit() return redirect('/log') # Returning visitor should not have active visit for visit in returning_visitor.visits: if visit.is_active(): flash('Visitor is already logged in!') return redirect('/log/' + str(returning_visitor.id)) # Log visitor new_visit = Visit(visitor_id=returning_visitor.id, visiting=visiting, purpose=purpose) db.session.add(new_visit) db.session.commit() return redirect('/log') flash("Form errors!") return render_template('logbud.html', form=form)
def incoming_click(request, category): '''Every page load creates a new visitor object. This visitor object is updated with a random site and offerset (combination of 2 offers), then redirected to the page template.''' #To do: Use publisher component to send messages to any consumer... SendMessage(visitor) v = Visitor() #get params (v.referer, v.user_agent, v.domain, v.category) = ( request.META.get('HTTP_REFERER'), request.META.get('HTTP_USER_AGENT'), request.META.get('SERVER_NAME'), category, ) #get url params (v.adsource, v.account, v.ad, v.agegroup, v.image, v.channel, v.testing, v.safeview) = ( request.GET.get('adsource', 'missing'), request.GET.get('account', 'missing'), request.GET.get('ad', 'missing'), request.GET.get('agegroup', 'missing'), request.GET.get('image', 'missing'), request.GET.get('channel', 'missing'), request.GET.get('testing', 'missing'), request.GET.get('safeview', 'missing'), ) if category not in category_list: v.category = 'Error' v.save() return HttpResponse("Category %s was not found" % category) site = get_site(category) v.site = site v.offerset_id, offer_list = get_offerset(site) v.save() name, link = _get_display_name_and_link(v, offer_list) return render_to_response('%s/%s' % (v.category, site.page1_template), locals())
def vistor_data(request): """来访记录数据""" start_time = request.POST.get("start_time") end_time = request.POST.get("end_time") username = request.POST.get("username") rows = Visitor.objects.all() # 组合搜索条件 if start_time != None and start_time != "": rows = rows.filter(start_time__gte=start_time) if end_time != None and end_time != "": rows = rows.filter(end_time__lte=end_time) if username != None and username != "": rows = rows.filter(user__username__contains=username) if request.POST.get('export') == None: rows, total = utils.get_page_data(request, rows) # 组合json数据 data = [] for row in rows: data.append(row.to_dict()) dict = {"total": total, "rows": data} return JSONResponse(dict) else: data = [] for row in rows: data.append(row.to_export_data()) data = tablib.Dataset(*data, headers=Visitor.get_export_headers()) filename = settings.TMP_ROOT + "/export.csv" open(filename, 'wb').write(data.xls) response = HttpResponse(utils.read_file(filename), content_type='application/vnd.ms-excel') response['Content-Disposition'] = 'attachment; filename=export.xls' BizLog.objects.addnew(request.user, BizLog.EXPORT, u"导出客户端访问记录数据") return response
def register(): form = RegistrationForm() if form.validate_on_submit(): if (form.usertype.data == 'visitor'): user = User(Username=form.username.data, password=form.password.data, Email=form.email.data, UserType=form.usertype.data) visitorname = Visitor(user_visitor=username) db.session.add_all([user, visitorname]) db.session.commit() if (form.usertype.data == 'staff'): user = User(Username=form.username.data, password=form.password.data, Email=form.email.data, UserType=form.usertype.data) staffname = Staff(user_staff=user) db.session.add_all([user, staffname]) db.session.commit() flash('You can now login.') return redirect(url_for('login')) return render_template('register.html', form=form)
def test_update_with_data(self): v1 = Visitor(self.customer, 'demo-id') v2 = v1.update_with_data(dict()) self.assertIsInstance(v2, Visitor) self.assertEqual(v1.id, v2.id)
def test_constructor(self): v = Visitor(self.customer, 'demo-id') self.assertEqual(v.id, "demo-id")
def test_get(self): v = Visitor.get(self.customer, "demo-id") self.assertEqual(v.id, "demo-id") self.assertEqual(v.customer, self.customer)
def test_data(self): v = Visitor(self.customer, 'demo-id') self.assertIsInstance(v.data(), dict)
def process_request(self, request): # Don't process AJAX request if request.is_ajax(): return # Create some useful variables: ip_address = utils.get_ip(request) user_agent = unicode(request.META.get('HTTP_USER_AGENT', '')[:255], errors='ignore') # Retrieve untracked user agents from cache ua_key = '_tracking_untracked_uas' untracked = cache.get(ua_key) if untracked is None: log.info("Updating untracked user agent cache") untracked = UntrackedUserAgent.objects.all() cache.set(ua_key, untracked, 3600) # See if the user agent is not supposed to be tracked. ACTIVITY = True for ua in untracked: # if the keyword is found in the user agent, stop tracking if user_agent.find(ua.keyword) != -1: if not ua.activity: log.debug('Not tracking UA "%s" because of keyword: %s' % (user_agent, ua.keyword)) return else: ACTIVITY = False if hasattr(request, 'session') and request.session.session_key: # Use the current session key if we can session_key = request.session.session_key else: # Otherwise just fake a session key session_key = '%s:%s' % (ip_address, user_agent) session_key = session_key[:40] # Ensure that the request.path does not begin with any of the prefixes for prefix in self.prefixes: if request.path.startswith(prefix): log.debug('Not tracking request to: %s' % request.path) return # If we get here, the URL needs to be tracked # determine what time it is now = datetime.now() attrs = { 'session_key': session_key, 'ip_address': ip_address } # For some reason, Vistors.objects.get_or_create is not working here try: visitor = Visitor.objects.get(**attrs) except Visitor.DoesNotExist: # See if there's a visitor with the same IP and user agent # within the last 5 minutes cutoff = now - timedelta(minutes=5) visitors = Visitor.objects.filter( ip_address=ip_address, user_agent=user_agent, last_update__gte=cutoff ) if len(visitors): visitor = visitors[0] visitor.session_key = session_key log.debug('Using existing visitor for IP %s / UA %s: %s' % (ip_address, user_agent, visitor.id)) else: # It's probably safe to assume that the visitor is brand new visitor = Visitor(**attrs) log.debug('Created a new visitor: %s' % attrs) except: return # Determine whether or not the user is logged in user = request.user if isinstance(user, AnonymousUser): user = None # Update the tracking information: visitor.user = user visitor.user_agent = user_agent # If the visitor record is new, or the visitor hasn't been here for # at least an hour, update their referrer URL. one_hour_ago = now - timedelta(hours=1) if not visitor.last_update or visitor.last_update <= one_hour_ago: visitor.referrer = utils.u_clean(request.META.get('HTTP_REFERER', 'unknown')[:255]) # Reset the number of pages they've been to visitor.page_views = 0 visitor.session_start = now visitor.url = request.path visitor.last_update = now # Tracking #time_on_site = 0 #if visitor.start_time: # time_on_site = (now - visitor.start_time).seconds #print("time_on_site %s (%s)" % (time_on_site, visitor.time_on_site)) #visitor.time_on_site = time_on_site SAVE_ACTIVITY = False if TRACK_ACTIVITIES and ACTIVITY: # Match against `path_info` to not include the SCRIPT_NAME path = request.path_info.lstrip('/') for url in TRACK_IGNORE_URLS: if url.match(path): break else: SAVE_ACTIVITY = True visitor.page_views += 1 else: path = request.path_info.lstrip('/') for url in TRACK_IGNORE_URLS: if url.match(path): break else: visitor.page_views += 1 try: visitor.save() except DatabaseError: log.error('There was a problem saving visitor information:\n%s\n\n%s' % (traceback.format_exc(), locals())) if SAVE_ACTIVITY: activity = Activity(visitor=visitor, url=request.path, view_time=now) activity.save()
] for i in range(len(usernames)): if (types[i] == 'staff'): username = User(Username=usernames[i], password=passwords[i], Email=emails[i], UserType=types[i]) staffname = Staff(user_staff=username) db.session.add_all([username, staffname]) db.session.commit() if (types[i] == 'visitor'): username = User(Username=usernames[i], password=passwords[i], Email=emails[i], UserType=types[i]) visitorname = Visitor(user_visitor=username) db.session.add_all([username, visitorname]) db.session.commit() if (types[i] == 'admin'): username = User(Username=usernames[i], password=passwords[i], Email=emails[i], UserType=types[i]) adminname = Admin(user_admin=username) db.session.add_all([username, adminname]) db.session.commit() ##insert exhibit data exhibitnames = ['Pacific', 'Jungle', 'Sahara', 'Mountainous', 'Birds'] WaterFeatures = ['Yes', 'No', 'No', 'No', 'Yes'] sizes = [850, 600, 1000, 1200, 1000]
def test_components(self): v = Visitor(self.customer, 'demo-id') self.assertIsInstance(v.components(), list)
def setUp(self): visitor = Visitor(name='New Visitor', email='*****@*****.**', phone='+5511991437851', custom_id='283900739202') visitor.save()
def process_request(self, request): # Don't process AJAX request if request.is_ajax(): return # Create some useful variables: ip_address = utils.get_ip(request) user_agent = unicode(request.META.get('HTTP_USER_AGENT', '')[:255], errors='ignore') # Retrieve untracked user agents from cache ua_key = '_tracking_untracked_uas' untracked = cache.get(ua_key) if untracked is None: log.info("Updating untracked user agent cache") untracked = UntrackedUserAgent.objects.all() cache.set(ua_key, untracked, 3600) # See if the user agent is not supposed to be tracked. ACTIVITY = True for ua in untracked: # if the keyword is found in the user agent, stop tracking if user_agent.find(ua.keyword) != -1: if not ua.activity: log.debug('Not tracking UA "%s" because of keyword: %s' % (user_agent, ua.keyword)) return else: ACTIVITY = False if hasattr(request, 'session') and request.session.session_key: # Use the current session key if we can session_key = request.session.session_key else: # Otherwise just fake a session key session_key = '%s:%s' % (ip_address, user_agent) session_key = session_key[:40] # Ensure that the request.path does not begin with any of the prefixes for prefix in self.prefixes: if request.path.startswith(prefix): log.debug('Not tracking request to: %s' % request.path) return # If we get here, the URL needs to be tracked # determine what time it is now = datetime.now() attrs = {'session_key': session_key, 'ip_address': ip_address} # For some reason, Vistors.objects.get_or_create is not working here try: visitor = Visitor.objects.get(**attrs) except Visitor.DoesNotExist: # See if there's a visitor with the same IP and user agent # within the last 5 minutes cutoff = now - timedelta(minutes=5) visitors = Visitor.objects.filter(ip_address=ip_address, user_agent=user_agent, last_update__gte=cutoff) if len(visitors): visitor = visitors[0] visitor.session_key = session_key log.debug('Using existing visitor for IP %s / UA %s: %s' % (ip_address, user_agent, visitor.id)) else: # It's probably safe to assume that the visitor is brand new visitor = Visitor(**attrs) log.debug('Created a new visitor: %s' % attrs) except: return # Determine whether or not the user is logged in user = request.user if isinstance(user, AnonymousUser): user = None # Update the tracking information: visitor.user = user visitor.user_agent = user_agent # If the visitor record is new, or the visitor hasn't been here for # at least an hour, update their referrer URL. one_hour_ago = now - timedelta(hours=1) if not visitor.last_update or visitor.last_update <= one_hour_ago: visitor.referrer = utils.u_clean( request.META.get('HTTP_REFERER', 'unknown')[:255]) # Reset the number of pages they've been to visitor.page_views = 0 visitor.session_start = now visitor.url = request.path visitor.last_update = now # Tracking #time_on_site = 0 #if visitor.start_time: # time_on_site = (now - visitor.start_time).seconds #print("time_on_site %s (%s)" % (time_on_site, visitor.time_on_site)) #visitor.time_on_site = time_on_site SAVE_ACTIVITY = False if TRACK_ACTIVITIES and ACTIVITY: # Match against `path_info` to not include the SCRIPT_NAME path = request.path_info.lstrip('/') for url in TRACK_IGNORE_URLS: if url.match(path): break else: SAVE_ACTIVITY = True visitor.page_views += 1 else: path = request.path_info.lstrip('/') for url in TRACK_IGNORE_URLS: if url.match(path): break else: visitor.page_views += 1 try: visitor.save() except DatabaseError: log.error( 'There was a problem saving visitor information:\n%s\n\n%s' % (traceback.format_exc(), locals())) if SAVE_ACTIVITY: activity = Activity(visitor=visitor, url=request.path, view_time=now) activity.save()