Example #1
0
    def post(self, worklist_id, filter):
        """Create a new filter for the worklist.

        Example::

          TODO

        :param worklist_id: The ID of the worklist to set the filter on.
        :param filter: The filter to set.

        """
        worklist = worklists_api.get(worklist_id)
        user_id = request.current_user_id
        if not worklists_api.editable(worklist, user_id):
            raise exc.NotFound(_("Worklist %s not found") % worklist_id)

        created = worklists_api.create_filter(worklist_id, filter.as_dict())

        added = serialize_filter(created)
        events_api.worklist_filters_changed_event(worklist_id,
                                                  user_id,
                                                  added=added)

        model = wmodels.WorklistFilter.from_db_model(created)
        model.resolve_criteria(created)
        return model
Example #2
0
    def post(self, worklist_id, filter):
        """Create a new filter for the worklist.

        Example::

          TODO

        :param worklist_id: The ID of the worklist to set the filter on.
        :param filter: The filter to set.

        """
        worklist = worklists_api.get(worklist_id)
        user_id = request.current_user_id
        if not worklists_api.editable(worklist, user_id):
            raise exc.NotFound(_("Worklist %s not found") % worklist_id)

        created = worklists_api.create_filter(worklist_id, filter.as_dict())

        added = serialize_filter(created)
        events_api.worklist_filters_changed_event(worklist_id,
                                                  user_id,
                                                  added=added)

        model = wmodels.WorklistFilter.from_db_model(created)
        model.resolve_criteria(created)
        return model
Example #3
0
    def post(self, worklist):
        """Create a new worklist.

        :param worklist: A worklist within the request body.

        """
        worklist_dict = worklist.as_dict()
        user_id = request.current_user_id

        if worklist.creator_id and worklist.creator_id != user_id:
            abort(400, _("You can't select the creator of a worklist."))
        worklist_dict.update({"creator_id": user_id})
        if 'items' in worklist_dict:
            del worklist_dict['items']

        filters = worklist_dict.pop('filters')
        owners = worklist_dict.pop('owners')
        users = worklist_dict.pop('users')
        if not owners:
            owners = [user_id]
        if not users:
            users = []

        created_worklist = worklists_api.create(worklist_dict)

        edit_permission = {
            'name': 'edit_worklist_%d' % created_worklist.id,
            'codename': 'edit_worklist',
            'users': owners
        }
        move_permission = {
            'name': 'move_items_%d' % created_worklist.id,
            'codename': 'move_items',
            'users': users
        }
        worklists_api.create_permission(created_worklist.id, edit_permission)
        worklists_api.create_permission(created_worklist.id, move_permission)

        if worklist_dict['automatic']:
            for filter in filters:
                worklists_api.create_filter(created_worklist.id,
                                            filter.as_dict())

        return wmodels.Worklist.from_db_model(created_worklist)
Example #4
0
    def post(self, worklist):
        """Create a new worklist.

        :param worklist: A worklist within the request body.

        """
        worklist_dict = worklist.as_dict()
        user_id = request.current_user_id

        if worklist.creator_id and worklist.creator_id != user_id:
            abort(400, _("You can't select the creator of a worklist."))
        worklist_dict.update({"creator_id": user_id})
        if 'items' in worklist_dict:
            del worklist_dict['items']

        filters = worklist_dict.pop('filters')
        owners = worklist_dict.pop('owners')
        users = worklist_dict.pop('users')
        if not owners:
            owners = [user_id]
        if not users:
            users = []

        created_worklist = worklists_api.create(worklist_dict)

        edit_permission = {
            'name': 'edit_worklist_%d' % created_worklist.id,
            'codename': 'edit_worklist',
            'users': owners
        }
        move_permission = {
            'name': 'move_items_%d' % created_worklist.id,
            'codename': 'move_items',
            'users': users
        }
        worklists_api.create_permission(created_worklist.id, edit_permission)
        worklists_api.create_permission(created_worklist.id, move_permission)

        if worklist_dict['automatic']:
            for filter in filters:
                worklists_api.create_filter(created_worklist.id,
                                            filter.as_dict())

        return wmodels.Worklist.from_db_model(created_worklist)
Example #5
0
    def post(self, worklist):
        """Create a new worklist.

        :param worklist: A worklist within the request body.

        """
        worklist_dict = worklist.as_dict()
        user_id = request.current_user_id

        if worklist.creator_id and worklist.creator_id != user_id:
            abort(400, _("You can't select the creator of a worklist."))
        worklist_dict.update({"creator_id": user_id})
        if "items" in worklist_dict:
            del worklist_dict["items"]

        filters = worklist_dict.pop("filters")
        owners = worklist_dict.pop("owners")
        users = worklist_dict.pop("users")
        if not owners:
            owners = [user_id]
        if not users:
            users = []

        created_worklist = worklists_api.create(worklist_dict)

        edit_permission = {
            "name": "edit_worklist_%d" % created_worklist.id,
            "codename": "edit_worklist",
            "users": owners,
        }
        move_permission = {"name": "move_items_%d" % created_worklist.id, "codename": "move_items", "users": users}
        worklists_api.create_permission(created_worklist.id, edit_permission)
        worklists_api.create_permission(created_worklist.id, move_permission)

        if worklist_dict["automatic"]:
            for filter in filters:
                worklists_api.create_filter(created_worklist.id, filter.as_dict())

        return wmodels.Worklist.from_db_model(created_worklist)
Example #6
0
    def post(self, worklist):
        """Create a new worklist.

        Example::

          curl https://my.example.org/api/v1/worklists \\
          -H 'Authorization: Bearer MY_ACCESS_TOKEN' \\
          -H 'Content-Type: application/json;charset=UTF-8' \\
          --data-binary '{"title":"create worklist via api"}'

        :param worklist: A worklist within the request body.

        """
        worklist_dict = worklist.as_dict()
        user_id = request.current_user_id

        if worklist.creator_id and worklist.creator_id != user_id:
            abort(400, _("You can't select the creator of a worklist."))
        worklist_dict.update({"creator_id": user_id})
        if 'items' in worklist_dict:
            del worklist_dict['items']

        filters = worklist_dict.pop('filters') or []
        owners = worklist_dict.pop('owners')
        users = worklist_dict.pop('users')
        if not owners:
            owners = [user_id]
        if not users:
            users = []

        created_worklist = worklists_api.create(worklist_dict)
        events_api.worklist_created_event(created_worklist.id, user_id,
                                          created_worklist.title)

        edit_permission = {
            'name': 'edit_worklist_%d' % created_worklist.id,
            'codename': 'edit_worklist',
            'users': owners
        }
        move_permission = {
            'name': 'move_items_%d' % created_worklist.id,
            'codename': 'move_items',
            'users': users
        }
        edit = worklists_api.create_permission(created_worklist.id,
                                               edit_permission)
        move = worklists_api.create_permission(created_worklist.id,
                                               move_permission)

        event_owners = [{
            id: users_api.user_get(id).full_name
        } for id in owners]
        event_users = [{id: users_api.user_get(id).full_name} for id in users]

        events_api.worklist_permission_created_event(created_worklist.id,
                                                     user_id, edit.id,
                                                     edit.codename,
                                                     event_owners)
        events_api.worklist_permission_created_event(created_worklist.id,
                                                     user_id, move.id,
                                                     move.codename,
                                                     event_users)

        if worklist_dict['automatic']:
            for filter in filters:
                created_filter = worklists_api.create_filter(
                    created_worklist.id, filter.as_dict())
                added = serialize_filter(created_filter)
                events_api.worklist_filters_changed_event(created_worklist.id,
                                                          user_id,
                                                          added=added)

        return wmodels.Worklist.from_db_model(created_worklist)
Example #7
0
    def post(self, worklist):
        """Create a new worklist.

        Example::

          curl https://my.example.org/api/v1/worklists \\
          -H 'Authorization: Bearer MY_ACCESS_TOKEN' \\
          -H 'Content-Type: application/json;charset=UTF-8' \\
          --data-binary '{"title":"create worklist via api"}'

        :param worklist: A worklist within the request body.

        """
        worklist_dict = worklist.as_dict()
        user_id = request.current_user_id

        if worklist.creator_id and worklist.creator_id != user_id:
            abort(400, _("You can't select the creator of a worklist."))
        worklist_dict.update({"creator_id": user_id})
        if 'items' in worklist_dict:
            del worklist_dict['items']

        filters = worklist_dict.pop('filters') or []
        owners = worklist_dict.pop('owners')
        users = worklist_dict.pop('users')
        if not owners:
            owners = [user_id]
        if not users:
            users = []

        created_worklist = worklists_api.create(worklist_dict)
        events_api.worklist_created_event(created_worklist.id,
                                          user_id,
                                          created_worklist.title)

        edit_permission = {
            'name': 'edit_worklist_%d' % created_worklist.id,
            'codename': 'edit_worklist',
            'users': owners
        }
        move_permission = {
            'name': 'move_items_%d' % created_worklist.id,
            'codename': 'move_items',
            'users': users
        }
        edit = worklists_api.create_permission(
            created_worklist.id, edit_permission)
        move = worklists_api.create_permission(
            created_worklist.id, move_permission)

        event_owners = [{id: users_api.user_get(id).full_name}
                        for id in owners]
        event_users = [{id: users_api.user_get(id).full_name}
                       for id in users]

        events_api.worklist_permission_created_event(created_worklist.id,
                                                     user_id,
                                                     edit.id,
                                                     edit.codename,
                                                     event_owners)
        events_api.worklist_permission_created_event(created_worklist.id,
                                                     user_id,
                                                     move.id,
                                                     move.codename,
                                                     event_users)

        if worklist_dict['automatic']:
            for filter in filters:
                created_filter = worklists_api.create_filter(
                    created_worklist.id, filter.as_dict())
                added = serialize_filter(created_filter)
                events_api.worklist_filters_changed_event(created_worklist.id,
                                                          user_id,
                                                          added=added)

        return wmodels.Worklist.from_db_model(created_worklist)