Beispiel #1
0
    def get(self):
        """ Get an exhaustive list of the session user's settings. """

        un, user_id = self.session_user()
        if not un:
            return plz_can_haz_auth()

        query = {"user_id": user_id}

        def clean_setting(s):
            def tryPop(d, k):
                try:
                    d.pop(k)
                except:
                    pass
                return d

            _s = pop_ids(s)
            _s = tryPop(_s, 'user_id')
            _s = tryPop(_s, 'dirty')
            _s = tryPop(_s, 'sid')
            _s = tryPop(_s, 'updated_at')
            _s = tryPop(_s, 'created_at')

            return _s

        return mongodoc_jsonify(
            settings=map(clean_setting, self.table.find(query)))
Beispiel #2
0
    def get(self, item_id):
        """ Get all of the session user's logs, optionally specify a
        particular item.  """

        un, user_id = self.session_user()
        if not un:
            return plz_can_haz_auth()

        query = {"user_id": user_id}

        if item_id is not None:
            query["_id"] = ObjectId(item_id)
        logs = self.table.find(query)

        if logs is None:
            logs = []

        def switch_id(model):
            if '_id' in model:
                _id = model.get('_id')
                c_id = model.get('c_id')
                model.pop('_id')
                model.pop('c_id')
                model['id'] = c_id
            return model

        logs = map(switch_id, logs)
        return mongodoc_jsonify(data=logs)
Beispiel #3
0
    def delete(self, item_id):
        un, user_id = self.session_user()
        if not un:
            return plz_can_haz_auth()

        # TODO: can user remove record?
        self.table.remove({"_id": ObjectId(item_id)})
        return ""
Beispiel #4
0
    def delete(self, setting_key):
        """ Delete a specific setting key for the session user.
        """

        un, user_id = self.session_user()
        if not un:
            return plz_can_haz_auth()

        existing_query = {'user_id': user_id, 'setting_key': setting_key}

        self.table.remove(existing_query)
        return ""
Beispiel #5
0
    def post(self):
        """ Add an activity log, validating first.
        """

        un, user_id = self.session_user()
        if not un:
            return plz_can_haz_auth()

        form = self.PostValidator(request.json)

        try:
            form.validate()
        except ValidationError, e:
            return mongodoc_jsonify(data={
                'success': False,
                'errors': e.messages
            })
Beispiel #6
0
    def put(self):
        """ Update a specific setting key for the session user, deleting
        the old value.  """
        un, user_id = self.session_user()
        if not un:
            return plz_can_haz_auth()

        # TODO: can user update record?
        request.json['user_id'] = user_id
        setting_key = request.json.get('setting_key')

        existing_query = {'user_id': user_id, 'setting_key': setting_key}

        self.table.remove(existing_query)
        self.table.insert({
            'user_id': user_id,
            'setting_key': setting_key,
            'setting_value': request.json.get('setting_value')
        })

        return mongodoc_jsonify(data=request.json)
Beispiel #7
0
    def post(self):
        """ Set a specific setting key for the session user, deleting
        the old value. """
        un, user_id = self.session_user()
        if not un:
            return plz_can_haz_auth()

        # TODO: validate form - here we have only specific settings that
        # are allowed, prevent someone from spamming new settings.

        request.json['user_id'] = user_id
        setting_key = request.json.get('setting_key')

        existing_query = {'user_id': user_id, 'setting_key': setting_key}

        self.table.remove(existing_query)
        self.table.insert({
            'user_id': user_id,
            'setting_key': setting_key,
            'setting_value': request.json.get('setting_value')
        })

        return mongodoc_jsonify(data=request.json)