def process_request(self, request):
     if not request.user.is_authenticated():
         return
     urlsModule = __import__(settings.ROOT_URLCONF, {}, {}, [''])
     skipList = getattr(urlsModule, 'ignore_latest_activity', None)
     skippedPath = request.path
     if skippedPath.startswith('/'):
         skippedPath = skippedPath[1:]
     if skipList is not None:
         for expression in skipList:
             compiledVersion = None
             if not compiledLists.has_key(expression):
                 compiledLists[expression] = re.compile(expression)
             compiledVersion = compiledLists[expression]
             if compiledVersion.search(skippedPath):
                 return
     
     activity = None
     try:
         activity = request.user.useractivity
     except:
         activity = UserActivity()
         activity.user = request.user
         activity.latest_activity = datetime.now()
         activity.current_template = request.build_absolute_uri()
         activity.save()
         return
     activity.latest_activity = datetime.now()
     activity.current_template = request.build_absolute_uri()
     activity.save()
    def process_request(self, request):
        if not request.user.is_authenticated():
            return
        urlsModule = __import__(settings.ROOT_URLCONF, {}, {}, [''])
        skipList = getattr(urlsModule, 'ignore_latest_activity', None)
        skippedPath = request.path
        if skippedPath.startswith('/'):
            skippedPath = skippedPath[1:]
        if skipList is not None:
            for expression in skipList:
                compiledVersion = None
                if not compiledLists.has_key(expression):
                    compiledLists[expression] = re.compile(expression)
                compiledVersion = compiledLists[expression]
                if compiledVersion.search(skippedPath):
                    return

        activity = None
        try:
            activity = request.user.useractivity
        except:
            activity = UserActivity()
            activity.user = request.user
            activity.latest_activity = datetime.now()
            activity.current_template = request.build_absolute_uri()
            activity.save()
            return
        activity.latest_activity = datetime.now()
        activity.current_template = request.build_absolute_uri()
        activity.save()
Ejemplo n.º 3
0
class Activity:
  """Middleware that tracks the user activity on every website hit."""

  def process_request(self, request):

    # Checks if we need to keep track of this activity...
    request_url = request.META.get('PATH_INFO', '').strip()
    if request_url[0] == '/': request_url = request_url[1:]
    if True in [bool(k.match(request_url)) for k in NOTRACK_REGEXP]:
      self.activity = None
      return

    self.activity = UserActivity(
      user = request.user if request.user.is_authenticated() else None,
      date = datetime.now(),
      request_url = request.META.get('PATH_INFO', ''),
      referer_url = request.META.get('HTTP_REFERER', ''),
      client_address = request.META.get('REMOTE_ADDR', ''),
      client_host = request.META.get('REMOTE_HOST', ''), 
      browser_info = request.META.get('HTTP_USER_AGENT', ''),
      languages = request.META.get('HTTP_ACCEPT_LANGUAGE', ''),
    )

    # Makes 1 database lookup. If the city database is available, prefer that 
    # one, otherwise, mark the city as "Unknown" and perform country lookup.
    try_set_location(self.activity)

    # Makes a second database lookup for decoding the UserAgent string
    try_ua_parsing(self.activity)
        
  def process_exception(self, request, exception):
    if self.activity:
      self.activity.error = str(exception)
      self.activity.set_processing_time()
      self.activity.save()

  def process_response(self, request, response):
    if self.activity:
      self.activity.set_processing_time()
      self.activity.save()
    return response
Ejemplo n.º 4
0
def login():
    form = LoginForm()

    if flask.request.method == "POST":
        if form.validate_on_submit():
            user = User.query.filter_by(username=form.username.data).first()
            if user is None:
                return render_template(
                    "login.html",
                    title="Login",
                    form=form,
                    form_title="Login",
                    login_failure=True,
                )

            if not check_password_hash(user.password, form.password.data):
                abort(403)

            user.create_session()
            user = user.save()
            login_user(user)
            user_activity = UserActivity(activity_name="login", user=user)
            user_activity.save()
            return redirect(url_for("spell_checker"))
        else:
            return render_template(
                "login.html",
                title="Login",
                form=form,
                form_title="Login",
                login_failure=True,
            )

    # default is a GET request
    return render_template("login.html",
                           title="Login",
                           form=form,
                           form_title="David's Spell Checker")
Ejemplo n.º 5
0
def logout():
    user_id = current_user.id
    logout_user()
    user_activity = UserActivity(activity_name="logout", user_id=user_id)
    user_activity.save()
    return redirect(url_for("login"))