comlounge / camper

Barcamp-Tools
https://barcamptools.eu
MIT License
21 stars 7 forks source link

Exception when starting with a blank database #201

Open sk1p opened 4 years ago

sk1p commented 4 years ago

After starting a blank mongo server, adding a new admin user and logging in, I get the following error:

Traceback (most recent call last):
  File "/home/alex/tmp/pycamp2020/venv/lib/python2.7/site-packages/starflyer/app.py", line 481, in __call__
    response = self.handle_exception(request, e)
  File "/home/alex/tmp/pycamp2020/venv/lib/python2.7/site-packages/starflyer/app.py", line 479, in __call__
    response = self.process_request(request)
  File "/home/alex/tmp/pycamp2020/venv/lib/python2.7/site-packages/starflyer/app.py", line 461, in process_request
    response = self.handle_user_exception(request, e)
  File "/home/alex/tmp/pycamp2020/venv/lib/python2.7/site-packages/starflyer/app.py", line 450, in process_request
    response = handler(**request.view_args)
  File "/home/alex/tmp/pycamp2020/venv/lib/python2.7/site-packages/starflyer/handler.py", line 227, in __call__
    rv = getattr(self, method)(**m)
  File "/home/alex/tmp/pycamp2020/camper/camper/handlers/index.py", line 115, in get
    return super(LoginSuccess, self).get()
  File "/home/alex/tmp/pycamp2020/camper/camper/handlers/index.py", line 48, in get
    own_barcamps = self.config.dbs.barcamps.get_by_user_id(self.user_id, True, True, True)
  File "/home/alex/tmp/pycamp2020/camper/camper/db/barcamp.py", line 851, in get_by_user_id
    result = self.collection.inline_map_reduce(map, reduce)
  File "/home/alex/tmp/pycamp2020/venv/lib/python2.7/site-packages/pymongo/collection.py", line 1907, in inline_map_reduce
    read_concern=self.read_concern)
  File "/home/alex/tmp/pycamp2020/venv/lib/python2.7/site-packages/pymongo/collection.py", line 205, in _command
    read_concern=read_concern)
  File "/home/alex/tmp/pycamp2020/venv/lib/python2.7/site-packages/pymongo/pool.py", line 213, in command
    read_concern)
  File "/home/alex/tmp/pycamp2020/venv/lib/python2.7/site-packages/pymongo/network.py", line 99, in command
    helpers._check_command_response(response_doc, None, allowable_errors)
  File "/home/alex/tmp/pycamp2020/venv/lib/python2.7/site-packages/pymongo/helpers.py", line 196, in _check_command_response
    raise OperationFailure(msg % errmsg, code, response)
OperationFailure: namespace does not exist: mycamper.barcamps

I used the following patch as a workaround, but I'm not sure this is correct:

diff --git a/camper/db/barcamp.py b/camper/db/barcamp.py
index c34024d..44510cf 100644
--- a/camper/db/barcamp.py
+++ b/camper/db/barcamp.py
@@ -848,8 +848,12 @@ class Barcamps(Collection):
             }
         """)

-        result = self.collection.inline_map_reduce(map, reduce)
-        ids = [u['_id'] for u in result]
+        try:
+            result = self.collection.inline_map_reduce(map, reduce)
+            ids = [u['_id'] for u in result]
+        except Exception:
+            ids = []
+
         query = {'_id' : {'$in' : ids}}

         return self.find(query).sort("end_date", pymongo.DESCENDING)