Exemplo n.º 1
0
    def post(self):
        """ Resource that creates a new user """
        args = user_parser.parse_args()
        email = args['email']
        password = args['password']
        if not email:
            result = {'message': 'Email cannot be blank'}
            return result, 400

        if re.match(r"(^[a-zA-Z0-9_.]+@[a-zA-Z0-9-]+\.[a-z]+$)",
                    email) and len(password) > 6:
            userbyemail = User.get_by_email(email)
            if not userbyemail:
                try:
                    user = User.create(**user_parser.parse_args())
                    if user:
                        result = {'message': 'User has succesfully registered'}
                        return result, 201
                except Exception:
                    result = {
                        'message': 'Something went wrong when saving user'
                    }
                    return result, 500
            else:
                result = {'message': 'User already exists'}
                return result, 409
        result = {
            'message':
            'Incorrect credentials. Email should be correct. Password should be more than 6 characters'
        }
        return result, 400
Exemplo n.º 2
0
    def get(self, current_user, user_id=None, username=None):
        """ Resource that gets a user by id"""
        user = None
        print(user_id)
        if username is not None:
            user = User.get_by_username(username)
        else:
            user = User.get_by_id(user_id)

        if not user:
            abort(404, {"message": "User does not exist"})

        return user
Exemplo n.º 3
0
Arquivo: repo.py Projeto: banjin/code
    def merge(self, merger, message_header, message_body):
        # TODO: Use User only
        if merger and isinstance(merger, basestring):
            merger = User(merger)
        if not isinstance(merger, User):
            raise Exception("User is needed to merge pull")
        env = make_git_env(merger)

        worktree = self.temp_dir
        merge_commit_sha = None
        try:
            if self.pull.is_up_to_date():
                return ''

            from_sha = self.from_sha
            to_sha = self.to_sha
            repo = self.pull.pull_clone(worktree)
            if self.from_local:
                ref = self.pull.pull_fetch_local(repo)
            else:
                ref = self.pull.pull_fetch_remote(repo)
            repo.merge(ref, message_header, message_body, no_ff=True, _env=env)
            repo.push('origin', self.pull.to_ref)
            merge_commit_sha = self.sha(self.pull.to_ref)
            self.pull._save_merged(merger.name, from_sha, to_sha)
        finally:
            shutil.rmtree(worktree)
        return merge_commit_sha
Exemplo n.º 4
0
def get_git_path_info(path):
    path_split = path.split("/")
    git_name = path_split[1]
    # raw path: project_id.git
    if git_name.endswith('.git'):
        project = Project.get_by_name(git_name[:-4])
        if project:
            path_split[1] = "%s.git" % project.id
            return '/'.join(path_split)
    else:
        owner_name, git_name = path_split[1:3]
        # user project: user/project.git
        user = User.get_by_name(owner_name)
        if user:
            project = Project.get_by_name_and_owner(git_name[:-4], user.id)
            if project:
                path_split[1] = ""
                path_split[2] = "%s.git" % project.id
                return '/'.join(path_split[1:])
            return
        # org project: org/project.git
        org = Organization.get_by_name(owner_name)
        if org:
            project = Project.get_by_name_and_owner(git_name[:-4], user.id)
            if project:
                path_split[1] = ""
                path_split[2] = "%s.git" % project.id
                return '/'.join(path_split[1:])
Exemplo n.º 5
0
def get_git_path_info(path):
    path_split = path.split("/")
    git_name = path_split[1]
    # raw path: project_id.git
    if git_name.endswith('.git'):
        project = Project.get_by_name(git_name[:-4])
        if project:
            path_split[1] = "%s.git" % project.id
            return '/'.join(path_split)
    else:
        owner_name, git_name = path_split[1:3]
        # user project: user/project.git
        user = User.get_by_name(owner_name)
        if user:
            project = Project.get_by_name_and_owner(git_name[:-4], user.id)
            if project:
                path_split[1] = ""
                path_split[2] = "%s.git" % project.id
                return '/'.join(path_split[1:])
            return
        # org project: org/project.git
        org = Organization.get_by_name(owner_name)
        if org:
            project = Project.get_by_name_and_owner(git_name[:-4], user.id)
            if project:
                path_split[1] = ""
                path_split[2] = "%s.git" % project.id
                return '/'.join(path_split[1:])
Exemplo n.º 6
0
 def decorated_function(*args, **kwargs):
     token = None
     if 'Authorization' in request.headers:
         auth_header = request.headers['Authorization']
         try:
             token = auth_header.split(" ")[1]
         except IndexError:
             return make_response(
                 jsonify({'message': 'Provide a valid auth token'}), 403)
     if not token:
         return make_response(jsonify({'message': 'Token is missing'}), 401)
     try:
         decode_response = User.decode_auth_token(token)
         current_user = User.query.filter_by(id=decode_response).first()
         if current_user:
             g.user = current_user
         else:
             return make_response(
                 jsonify({
                     'message':
                     "Integrity credentials for provided token are lacking."
                 }), 401)
     except:
         message = 'Invalid token'
         if isinstance(decode_response, str):
             message = decode_response
         return make_response(
             jsonify({
                 'status': 'Failed',
                 'message': message
             }), 401)
     return f(current_user, *args, **kwargs)
Exemplo n.º 7
0
def _q_index(request):
    session = request.session
    tdt = {}
    tdt['session'] = session
    tdt['current_user'] = User.get_by(id=session.user) if session else None
    if request.method == 'POST':
        session.set_user(None)
        return request.redirect('/')
    return st('logout.html', **tdt)
Exemplo n.º 8
0
def api_list_user(users):
    rs = []
    for username in users:
        user = User.get_by_name(username)
        rs.append({'username': user.username,
                   'avatar_url': user.avatar_url,
                   'email': user.email,
                   'url': user.url, })
    return rs
Exemplo n.º 9
0
 def owner_name(self):
     from code.models.user import User
     from code.models.organization import Organization
     if self.kind == KIND_USER:
         user = User.get_by(id=self.owner_id)
         return user.name
     else:
         org = Organization.get_by(id=self.owner_id)
         return org.name
Exemplo n.º 10
0
 def owner_name(self):
     from code.models.user import User
     from code.models.organization import Organization
     if self.kind == KIND_USER:
         user = User.get_by(id=self.owner_id)
         return user.name
     else:
         org = Organization.get_by(id=self.owner_id)
         return org.name
Exemplo n.º 11
0
    def __init__(self, repo, commit):
        self.repo = repo
        self._commit = commit
        self.type = 'commit'
        self.repo_name = repo.name
        parent = commit['parent'][0] if commit['parent'] else None
        self.parent = parent
        self.parents = commit['parent']
        message = ("%s\n\n%s" % (
            commit['message'],
            remove_unknown_character(commit['body']))
        ).strip()
        self.message = message
        self.message_header = commit['message']
        self.message_body = commit['body']
        self.sha = commit['sha']
        self.tree = commit['tree']

        author_name = commit['author']['name']
        self.author_name = author_name
        author_email = email_normalizer(author_name, commit['author']['email'])
        self.author_email = author_email
        self.email = author_email
        # FIXME: user
        #author = User(name=author_name, email=author_email)
        author = User.get_by_name(author_name)
        self.author = author
        author_date = datetime.fromtimestamp(commit['author']['time'],
                                             FixedOffset(commit['author']['offset']))
        author_timestamp = str(commit['author']['time'])
        self.author_time = author_date
        self.author_timestamp = author_timestamp
        self.time = author_date

        committer_name = commit['committer']['name']
        committer_email = email_normalizer(
            committer_name, commit['committer']['email'])
        # FIXME: user
        #committer = User(name=committer_name, email=committer_email)
        committer = User.get_by_name(committer_name)
        self.committer = committer
        committer_date = datetime.fromtimestamp(commit['committer']['time'],
                                             FixedOffset(commit['committer']['offset']))
        self.committer_time = committer_date
Exemplo n.º 12
0
    def __init__(self, repo, commit):
        self.repo = repo
        self._commit = commit
        self.type = 'commit'
        self.repo_name = repo.name
        parent = commit['parent'][0] if commit['parent'] else None
        self.parent = parent
        self.parents = commit['parent']
        message = ("%s\n\n%s" %
                   (commit['message'], remove_unknown_character(
                       commit['body']))).strip()
        self.message = message
        self.message_header = commit['message']
        self.message_body = commit['body']
        self.sha = commit['sha']
        self.tree = commit['tree']

        author_name = commit['author']['name']
        self.author_name = author_name
        author_email = email_normalizer(author_name, commit['author']['email'])
        self.author_email = author_email
        self.email = author_email
        # FIXME: user
        #author = User(name=author_name, email=author_email)
        author = User.get_by_name(author_name)
        self.author = author
        author_date = datetime.fromtimestamp(
            commit['author']['time'], FixedOffset(commit['author']['offset']))
        author_timestamp = str(commit['author']['time'])
        self.author_time = author_date
        self.author_timestamp = author_timestamp
        self.time = author_date

        committer_name = commit['committer']['name']
        committer_email = email_normalizer(committer_name,
                                           commit['committer']['email'])
        # FIXME: user
        #committer = User(name=committer_name, email=committer_email)
        committer = User.get_by_name(committer_name)
        self.committer = committer
        committer_date = datetime.fromtimestamp(
            commit['committer']['time'],
            FixedOffset(commit['committer']['offset']))
        self.committer_time = committer_date
Exemplo n.º 13
0
def _q_index(request):
    tdt = dict()
    if request.method == "POST":
        name = request.get_form_var('name')
        password = request.get_form_var('password')
        email = request.get_form_var('email')
        description = request.get_form_var('description')
        user = User.add(name=name,
                        password=password,
                        description=description,
                        email=email)
        if user:
            tdt['user'] = user
            session = request.session
            session.set_user(user.id)
            return request.redirect('/')
    users = User.gets_by()
    tdt['users'] = users
    return st('users/index.html', **tdt)
Exemplo n.º 14
0
def _q_index(request):
    if request.method == 'POST':
        name = request.get_form_var('login')
        password = request.get_form_var('password')
        user = User.get_by_name(name)
        if user and user.validate_password(password):
            session = request.session
            session.set_user(user.id)
            return request.redirect('/')
    return st('login.html')
Exemplo n.º 15
0
def _q_index(request):
    tdt = dict()
    session = request.session
    current_user = User.get_by(session.user) if session else None
    if current_user and request.method == "POST":
        name = request.get_form_var('name')
        description = request.get_form_var('description')
        p = Project.add(name=name,
                        description=description,
                        owner_id=current_user.id,
                        creator_id=current_user.id)
        if p:
            return request.redirect('projects/%s' % p.name)
        tdt['project'] = p
        return st('projects/index.html', **tdt)
    projects = Project.gets_by()
    tdt['projects'] = projects
    tdt['current_user'] = User.get_by(id=session.user) if session else None
    return st('projects/index.html', **tdt)
Exemplo n.º 16
0
def api_list_user(users):
    rs = []
    for username in users:
        user = User.get_by_name(username)
        rs.append({
            'username': user.username,
            'avatar_url': user.avatar_url,
            'email': user.email,
            'url': user.url,
        })
    return rs
Exemplo n.º 17
0
def _q_lookup(request, name):
    if name in ['static', 'js', 'css']:
        return StaticUI(request, name)

    user = User.get_by_name(name)
    if user:
        return UserUI(user)

    org = Organization.get_by_name(name)
    if org:
        return OrganizationUI(org)

    raise TraversalError
Exemplo n.º 18
0
    def _q_lookup(self, request, name):
        from code.views.api.v1.users import UserUI
        from code.views.api.v1.organizations import OrganizationUI

        user = User.get_by_name(name)
        if user:
            return UserUI(user)

        org = Organization.get_by_name(name)
        if org:
            return OrganizationUI(org)

        raise TraversalError
Exemplo n.º 19
0
 def put(self, token):
     """
     Get the user's reset email
     :return:
     """
     args = user_parser.parse_args()
     password = args['password']
     if len(password) > 6:
         email = User.decode_auth_token(token)
         user = User.get_by_email(email)
         if user:
             try:
                 user.update(**args)
             except IndexError:
                 result = {'message': 'Server error on resetting password.'}
                 return result, 500
             result = {'message': 'Password has been reset successfully.'}
             return result, 200
         result = {'message': 'User does not exist anymore.'}
         return result, 400
     result = {'message': 'Password should not be less than 6 characters.'}
     return result, 400
Exemplo n.º 20
0
    def _q_lookup(self, request, name):
        from code.views.api.v1.users import UserUI
        from code.views.api.v1.organizations import OrganizationUI

        user = User.get_by_name(name)
        if user:
            return UserUI(user)

        org = Organization.get_by_name(name)
        if org:
            return OrganizationUI(org)

        raise TraversalError
Exemplo n.º 21
0
 def __init__(self, header):
     self.login = None
     self.passwd = None
     self.user = None
     try:
         auth_type, auth_string = header.split()
         login, passwd = b64decode(auth_string).split(':')
         self.login = login
         self.passwd = passwd
         self.user = User.get_by_name(login)
     except ValueError:
         pass
     except TypeError:
         pass
Exemplo n.º 22
0
 def __init__(self, header):
     self.login = None
     self.passwd = None
     self.user = None
     try:
         auth_type, auth_string = header.split()
         login, passwd = b64decode(auth_string).split(':')
         self.login = login
         self.passwd = passwd
         self.user = User.get_by_name(login)
     except ValueError:
         pass
     except TypeError:
         pass
Exemplo n.º 23
0
    def get(self, current_user, user_id=None, username=None, title=None):
        """ Resource that gets a list of categories """
        # Find user that category goes with
        user = None
        if user_id:
            user = User.get_by_id(user_id)
        else:
            user = User.get_by_username(username)

        if not user:
            abort(404, { "message": "User does not exist" })

        # Get the user's categories
        categories = Category.query.filter_by(user_id=user.id)

        args = category_collection_parser.parse_args()
        # fancy url argument query filtering!
        if args['title'] is not None:
            categories = Category.query.filter(Category.title.ilike(
                '%' + args['title'] + '%')).filter(Category.user_id == g.user.id)
        if not categories:
            abort(404, { "message": "No categories to display." })

        return categories
Exemplo n.º 24
0
 def post(self):
     """ Resource that signs in a user """
     args = user_parser.parse_args()
     email = args['email']
     username = args['username']
     password = args['password']
     if re.match(r"[^@]+@[^@]+\.[^@]+", email) and len(password) > 6:
         user = User.get_by_email(email)
         if user and user.check_password(password):
             token = user.encode_auth_token(user.id)
             result = {
                 'message': 'User has signed in successfully.',
                 'token': token.decode("utf-8"),
                 'userid': user.id
             }
             return result, 200
         result = {'message': 'User does not exist or incorrect password.'}
         return result, 400
     result = {'message': 'Wrong email or password'}
     return result, 400
Exemplo n.º 25
0
 def post(self):
     """
     Post the user's reset email
     :return:
     """
     args = user_parser.parse_args()
     recovery_email = args['email']
     if re.match(r"[^@]+@[^@]+\.[^@]+", recovery_email):
         user = User.get_by_email(recovery_email)
         if user:
             token = user.encode_recovery_token(recovery_email)
             recovery_token = token.decode("utf-8")
             recover_url = api.url_for(UserPasswordResetResource,
                                       token=token,
                                       _external=True)
             try:
                 msg = Message("Reset password Token",
                               sender="*****@*****.**",
                               recipients=[recovery_email])
                 msg.html = "<h3> Hi there, </h3>" \
                         "<hr/>" \
                         "<p>Click on this link to reset your password" \
                         "Recover url: " '<p>''<strong>' + recover_url +'</strong>''</p>' \
                         '<p> You will not be able to use this url in the next 24 Hours.' \
                         'Please reset your password before then.</p>' \
                         "<hr/>" \
                         "<h5>Yummy recipes password.</h5>"
                 with current_app.app_context():
                     mail.send(msg)
                 result = {'message': 'Recovery email has been sent.'}
                 return result, 200
             except Exception as e:
                 return {"error": str(e)}, 400
         result = {
             'message':
             'User with email {} does not exist.'.format(recovery_email)
         }
         return result, 400
     result = {'message': 'Wrong email entered.'}
     return result, 400
Exemplo n.º 26
0
 def get(self):
     """
     Try to logout a user using a token
     :return:
     """
     args = parser.parse_args()
     auth_header = args['Authorization']
     if auth_header:
         try:
             auth_token = auth_header.split(" ")[1]
         except IndexError:
             result = {'message': 'Provide a valid authentication token'}
             return result, 403
         else:
             decoded_token_response = User.decode_auth_token(auth_token)
             if not isinstance(decoded_token_response, str):
                 token = Token(auth_token)
                 token.save()
                 result = {'message': 'Successfully logged out'}
                 return result, 200
             result = {'message': decoded_token_response}
             return result, 401
     result = {'message': 'Provide an authorization header'}
     return result, 403
Exemplo n.º 27
0
def _q_index(request):
    tdt = {}
    session = request.session
    tdt['session'] = session
    tdt['current_user'] = User.get_by(id=session.user) if session else None
    return st("index.html", **tdt)
Exemplo n.º 28
0
 def _q_index(self, request):
     tdt = dict()
     session = request.session
     tdt['project'] = self.project
     tdt['current_user'] = User.get_by(id=session.user) if session else None
     return st('/projects/repo.html', **tdt)
Exemplo n.º 29
0
Arquivo: new.py Projeto: banjin/code
def _q_index(request):
    tdt = dict()
    session = request.session
    tdt['users'] = User.gets_by()
    tdt['current_user'] = User.get_by(id=session.user) if session else None
    return st('projects/new.html', **tdt)