Browse Source

Merge branch 'master' into rules

Conflicts:
	src/sentry/constants.py
	src/sentry/static/sentry/scripts/global.min.js
David Cramer 10 years ago
parent
commit
63723c6245
10 changed files with 54 additions and 34 deletions
  1. 1 0
      .travis.yml
  2. 5 1
      CHANGES
  3. 1 1
      Makefile
  4. 14 2
      conftest.py
  5. 2 2
      docs/developer/client/index.rst
  6. 3 3
      docs/performance/index.rst
  7. 1 1
      docs/queue/index.rst
  8. 3 3
      docs/quickstart/index.rst
  9. 16 16
      package.json
  10. 8 5
      setup.py

+ 1 - 0
.travis.yml

@@ -1,5 +1,6 @@
 language: python
 services:
+  - elasticsearch
   - memcached
   - riak
   - mysql

+ 5 - 1
CHANGES

@@ -8,9 +8,13 @@ Backwards Incompatible Changes
 - The UDP server has been removed. Threaded/async models are the preferred replacement.
 - The ``is_rate_limited`` plugin hook has been removed in favor of singular quota managers.
 - The trends feature has been removed until it can be reimplemented in a more scalable way.
+- Filters have been removed. Integrations should use the tagging infrastructure instead.
 - NodeStore.generate_id() now returns a base64-encoded UUID.
+- The API for interfaces has been rewritten.
 - GroupMeta.objects.get_value no longer errors when a value is missing.
 - sentry.plugins.sentry_sites has been removed
+- The Search API has been rewritten and now powers the entire stream.
+- Event.{logger,site,logger,level,culprit} references/columns. Legacy attributes for transitional behavior are available.
 
 Version 6.4.0
 -------------
@@ -673,7 +677,7 @@ Version 2.3.0
 Version 2.2.5
 -------------
 
-* The |date filter now forces things to UTC (it assumes local time).
+* The \|date filter now forces things to UTC (it assumes local time).
 * Event templates have been updated to resemble groups.
 
 Version 2.2.4

+ 1 - 1
Makefile

@@ -87,7 +87,7 @@ lint: lint-python lint-js
 
 lint-python:
 	@echo "--> Linting Python files"
-	PYFLAKES_NODOCTEST=1 flake8 src/sentry
+	PYFLAKES_NODOCTEST=1 flake8 src/sentry tests
 	@echo ""
 
 lint-js:

+ 14 - 2
conftest.py

@@ -14,6 +14,8 @@ def pytest_configure(config):
     if not settings.configured:
         os.environ['DJANGO_SETTINGS_MODULE'] = 'sentry.conf.server'
 
+    os.environ['RECAPTCHA_TESTING'] = 'True'
+
     test_db = os.environ.get('DB', 'sqlite')
     if test_db == 'mysql':
         settings.DATABASES['default'].update({
@@ -68,6 +70,13 @@ def pytest_configure(config):
         'django.contrib.auth.hashers.MD5PasswordHasher',
     ]
 
+    # Replace real sudo middleware with our mock sudo middleware
+    # to assert that the user is always in sudo mode
+    middleware = list(settings.MIDDLEWARE_CLASSES)
+    sudo = middleware.index('sentry.middleware.sudo.SudoMiddleware')
+    middleware[sudo] = 'tests.middleware.SudoMiddleware'
+    settings.MIDDLEWARE_CLASSES = tuple(middleware)
+
     # enable draft features
     settings.SENTRY_ENABLE_EXPLORE_CODE = True
     settings.SENTRY_ENABLE_EXPLORE_USERS = True
@@ -80,8 +89,11 @@ def pytest_configure(config):
     settings.SENTRY_TSDB = 'sentry.tsdb.redis.RedisTSDB'
     settings.SENTRY_TSDB_OPTIONS = {}
 
-    # django mail uses socket.getfqdn which doesnt play nice if our
-    # networking isnt stable
+    settings.RECAPTCHA_PUBLIC_KEY = 'a' * 40
+    settings.RECAPTCHA_PRIVATE_KEY = 'b' * 40
+
+    # django mail uses socket.getfqdn which doesn't play nice if our
+    # networking isn't stable
     patcher = mock.patch('socket.getfqdn', return_value='localhost')
     patcher.start()
 

+ 2 - 2
docs/developer/client/index.rst

@@ -338,7 +338,7 @@ See :doc:`../interfaces/index` for information on Sentry's builtin interfaces an
 Authentication
 --------------
 
-An authentication header is expected to be sent along with the message body, which acts as as an ownership identifier::
+An authentication header is expected to be sent along with the message body, which acts as an ownership identifier::
 
     X-Sentry-Auth: Sentry sentry_version=5,
     sentry_client=<client version, arbitrary>,
@@ -543,7 +543,7 @@ The client should send the following upstream for ``tags``::
 
 You should also provide relevant contextual interfaces. These should last for the lifecycle of a request, and the general interface is "bind some kind of context", and then at the end of a request lifecycle, clear any present context.
 
-This interface consists of *_context methods, as well as a "clear context" method. The following is an example API which is implemented in most clients:
+This interface consists of \*_context methods, as well as a "clear context" method. The following is an example API which is implemented in most clients:
 
 ::
 

+ 3 - 3
docs/performance/index.rst

@@ -22,9 +22,9 @@ With that in mind, we recommend the following changes to (some) default configur
 Web Server
 ----------
 
-Switching off of the default Sentry worker model and to uWSGI + emporer mode can yield very good results.
+Switching off of the default Sentry worker model and to uWSGI + emperor mode can yield very good results.
 
-If you're using supervisord, you can easily implement emporer mode and uWSGI yourself by doing something along the lines of:
+If you're using supervisord, you can easily implement emperor mode and uWSGI yourself by doing something along the lines of:
 
 ::
 
@@ -101,7 +101,7 @@ Once you're running multiple processes, you'll of course need to also configure
 	  }
 	}
 
-See uWSGI's official documentation for emporer mode details.
+See uWSGI's official documentation for emperor mode details.
 
 
 Celery

+ 1 - 1
docs/queue/index.rst

@@ -19,7 +19,7 @@ which is the worker manager process of the Celery library.
 
     sentry celery worker -B
 
-.. note:: You will need to run both celery workers and celerybeat. In our example, the -B flag runs a beat instance (in addition to the worker), but in production you may want to run them seperately.
+.. note:: You will need to run both celery workers and celerybeat. In our example, the -B flag runs a beat instance (in addition to the worker), but in production you may want to run them separately.
 
 We again recommend running this as a service. Below is an example configuration with supervisor:
 

+ 3 - 3
docs/quickstart/index.rst

@@ -5,7 +5,7 @@ Some basic prerequisites which you'll need in order to run Sentry:
 
 * A UNIX-based operating system
 * Python 2.7
-* python-setuptools, python-dev
+* python-setuptools, python-dev, libxslt1-dev, libxml2-dev
 * A real database (PostgreSQL is preferred, MySQL also works)
 * Redis
 
@@ -179,7 +179,7 @@ enable more aggressive/optimized LRU.
 
 That said, if you're running a small install you can probably get away with just setting up the defaults:
 
-.. code-block::
+::
 
     SENTRY_REDIS_OPTIONS = {
         'hosts': {
@@ -369,7 +369,7 @@ slightly better).
 Enabling Social Auth
 --------------------
 
-Most of the time it doesnt really matter **how** someone authenticates to the service, so much as it that they do. In
+Most of the time it doesn't really matter **how** someone authenticates to the service, so much as it that they do. In
 these cases, Sentry provides tight integrated with several large social services, including: Twitter, Facebook, Google,
 and GitHub. Enabling this is as simple as setting up an application with the respective services, and configuring a
 couple values in your ``sentry.conf.py`` file.

+ 16 - 16
package.json

@@ -1,18 +1,18 @@
 {
-    "name": "Sentry",
-    "version": "0.0.0",
-    "repository": {
-        "type": "git",
-        "url": "git://github.com/getsentry/sentry.git"
-    },
-    "dependencies": {
-        "less": "1.3.3",
-        "phantomjs": "1.9.x",
-        "chai": "1.7.x",
-        "mocha": "1.9.x",
-        "mocha-phantomjs": "3.0.x",
-        "jshint": "0.9.x",
-        "uglify-js": "2.2.4"
-    },
-    "private": true
+  "name": "Sentry",
+  "version": "0.0.0",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/getsentry/sentry.git"
+  },
+  "dependencies": {
+    "less": "~1.3.3",
+    "phantomjs": "1.9.x",
+    "chai": "1.7.x",
+    "mocha": "1.9.x",
+    "mocha-phantomjs": "3.0.x",
+    "jshint": "~2.5.0",
+    "uglify-js": "2.2.4"
+  },
+  "private": true
 }

+ 8 - 5
setup.py

@@ -49,6 +49,7 @@ dev_requires = [
 tests_require = [
     'casscache',
     'cqlsh',
+    'elasticsearch',
     'exam>=0.5.1',
     'eventlet',
     'httpretty',
@@ -67,33 +68,35 @@ install_requires = [
     'BeautifulSoup>=3.2.1,<3.3.0',
     'celery>=3.0.15,<3.1.0',
     'cssutils>=0.9.9,<0.10.0',
-    'Django>=1.5.5,<1.6',
-    'django-bitfield>=1.6.4,<1.7.0',
+    'Django>=1.5.8,<1.6',
+    'django-bitfield>=1.7.0,<1.8.0',
     'django-celery>=3.0.11,<3.1.0',
     'django-crispy-forms>=1.2.3,<1.3.0',
     'django-paging>=0.2.5,<0.3.0',
     'django-picklefield>=0.3.0,<0.4.0',
+    'django-recaptcha>=1.0.0,<1.1.0',
     'django-social-auth>=0.7.28,<0.8.0',
     'django-static-compiler>=0.3.0,<0.4.0',
     'django-statsd-mozilla>=0.3.8.0,<0.3.9.0',
-    'django-sudo>=0.0.4,<1.0.0',
+    'django-sudo>=1.1.0,<1.2.0',
     'django-templatetag-sugar>=0.1.0',
     'djangorestframework>=2.3.8,<2.4.0',
     'email-reply-parser>=0.2.0,<0.3.0',
     'enum34>=0.9.18,<0.10.0',
     'gunicorn>=0.17.2,<0.18.0',
-    'httpagentparser>=1.6.0,<1.7.0',
+    'ua-parser>=0.3.5',
     'logan>=0.5.8.2,<0.6.0',
     'nydus>=0.10.7,<0.11.0',
     'Pygments>=1.6.0,<1.7.0',
-    'pynliner>=0.4.0,<0.6.0',
     'python-dateutil>=1.5.0,<2.0.0',
     'python-memcached>=1.53,<2.0.0',
     'raven>=4.0.2',
     'redis>=2.7.0,<2.9.0',
     'simplejson>=3.1.0,<3.4.0',
+    'six>=1.6.0,<1.7.0',
     'setproctitle>=1.1.7,<1.2.0',
     'South==0.8.2',
+    'toronado>=0.0.4,<0.1.0',
     'urllib3>=1.7.1,<1.8.0',
 ]
 

Some files were not shown because too many files changed in this diff