コード例 #1
0
    def create(self, webapp_name=None, **kwargs):
        """
        Create a new user.
        """
        # TODO: deserialize and validate here
        email = kwargs['email']
        username = kwargs['username']
        password = kwargs['password']
        self._error_on_duplicate_email(email)

        user = model.User(email=email, password=password)
        user.username = username

        if self.app.config.user_activation_on:
            user.active = False
        else:
            # Activation is off, every new user is active by default.
            user.active = True

        self.session().add(user)
        try:
            self.session().flush()
            # TODO:?? flush needed for permissions below? If not, make optional
        except sqlalchemy.exc.IntegrityError as db_err:
            raise exceptions.Conflict(db_err.message)

        # can throw an sqlalx.IntegrityError if username not unique

        self.app.security_agent.create_private_user_role(user)
        if webapp_name == 'galaxy':
            # We set default user permissions, before we log in and set the default history permissions
            permissions = self.app.config.new_user_dataset_access_role_default_private
            self.app.security_agent.user_set_default_permissions(
                user, default_access_private=permissions)
        return user
コード例 #2
0
    def create(self, webapp_name=None, **kwargs):
        """
        Create a new user.
        """
        # TODO: deserialize and validate here
        email = kwargs['email']
        username = kwargs['username']
        password = kwargs['password']
        self._error_on_duplicate_email(email)

        user = model.User(email=email, password=password)
        user.username = username

        if self.app.config.user_activation_on:
            user.active = False
        else:
            # Activation is off, every new user is active by default.
            user.active = True

        self.session().add(user)
        try:
            self.session().flush()
            # TODO:?? flush needed for permissions below? If not, make optional
        except sqlalchemy.exc.IntegrityError, db_err:
            raise exceptions.Conflict(db_err.message)
コード例 #3
0
ファイル: users.py プロジェクト: aerijman/galaxy
 def create(self, email=None, username=None, password=None, **kwargs):
     """
     Create a new user.
     """
     self._error_on_duplicate_email(email)
     user = self.model_class(email=email)
     user.set_password_cleartext(password)
     user.username = username
     if self.app.config.user_activation_on:
         user.active = False
     else:
         # Activation is off, every new user is active by default.
         user.active = True
     self.session().add(user)
     try:
         self.session().flush()
         # TODO:?? flush needed for permissions below? If not, make optional
     except exc.IntegrityError as db_err:
         raise exceptions.Conflict(str(db_err))
     # can throw an sqlalx.IntegrityError if username not unique
     self.app.security_agent.create_private_user_role(user)
     # We set default user permissions, before we log in and set the default history permissions
     if hasattr(self.app.config,
                "new_user_dataset_access_role_default_private"):
         permissions = self.app.config.new_user_dataset_access_role_default_private
         self.app.security_agent.user_set_default_permissions(
             user, default_access_private=permissions)
     return user
コード例 #4
0
ファイル: hdas.py プロジェクト: yvanlebras/galaxy
 def error_if_uploading( self, hda ):
     """
     Raise error if HDA is still uploading.
     """
     # TODO: may be better added to an overridden get_accessible
     if hda.state == model.Dataset.states.UPLOAD:
         raise exceptions.Conflict( "Please wait until this dataset finishes uploading" )
     return hda
コード例 #5
0
 def err_if_uploading(self, trans, hda):
     """
     Raise error if HDA is still uploading.
     """
     if hda.state == trans.model.Dataset.states.UPLOAD:
         raise exceptions.Conflict(
             "Please wait until this dataset finishes uploading")
     return hda
コード例 #6
0
ファイル: users.py プロジェクト: msauria/galaxy
    def _error_on_duplicate_email(self, email):
        """
        Check for a duplicate email and raise if found.

        :raises exceptions.Conflict: if any are found
        """
        # TODO: remove this check when unique=True is added to the email column
        if self.by_email(email) is not None:
            raise exceptions.Conflict('Email must be unique', email=email)
コード例 #7
0
    def set_slug( self, item, new_slug, user, flush=True ):
        """
        Validate and set the new slug for `item`.
        """
        # precondition: has been validated
        if not self.is_valid_slug( new_slug ):
            raise exceptions.RequestParameterInvalidException( "Invalid slug", slug=new_slug )

        # error if slug is already in use
        if self._slug_exists( user, new_slug ):
            raise exceptions.Conflict( "Slug already exists", slug=new_slug )

        item.slug = new_slug
        if flush:
            self.session().flush()
        return item
コード例 #8
0
ファイル: categories.py プロジェクト: Galaxyinternship/Galaxy
    def create(self, trans, payload, **kwd):
        """
        POST /api/categories
        Return a dictionary of information about the created category.
        The following parameters are included in the payload:

        :param name (required): the name of the category
        :param description (optional): the description of the category (if not provided, the name will be used)

        Example: POST /api/categories/?key=XXXYYYXXXYYY
        Content-Disposition: form-data; name="name" Category_Name
        Content-Disposition: form-data; name="description" Category_Description
        """
        category_dict = dict(message='', status='ok')
        name = payload.get('name', '')
        if name:
            description = payload.get('description', '')
            if not description:
                # Default the description to the name.
                description = name
            if suc.get_category_by_name(self.app, name):
                raise exceptions.Conflict(
                    'A category with that name already exists.')
            else:
                # Create the category
                category = self.app.model.Category(name=name,
                                                   description=description)
                trans.sa_session.add(category)
                trans.sa_session.flush()
                category_dict = category.to_dict(
                    view='element',
                    value_mapper=self.__get_value_mapper(trans))
                category_dict[
                    'message'] = "Category '%s' has been created" % str(
                        category.name)
                category_dict['url'] = web.url_for(controller='categories',
                                                   action='show',
                                                   id=trans.security.encode_id(
                                                       category.id))
        else:
            raise exceptions.RequestParameterMissingException(
                'Missing required parameter "name".')
        return category_dict
コード例 #9
0
ファイル: users.py プロジェクト: xingyongma/galaxy
 def create(self, email=None, username=None, password=None, **kwargs):
     """
     Create a new user.
     """
     self._error_on_duplicate_email(email)
     user = self.model_class(email=email)
     user.set_password_cleartext(password)
     user.username = username
     if self.app.config.user_activation_on:
         user.active = False
     else:
         # Activation is off, every new user is active by default.
         user.active = True
     self.session().add(user)
     try:
         self.session().flush()
         # TODO:?? flush needed for permissions below? If not, make optional
     except exc.IntegrityError as db_err:
         raise exceptions.Conflict(str(db_err))
     self.app.security_agent.create_user_role(user, self.app)
     return user