Esempio n. 1
0
    def post(self, request):
        with self._handle_exception(request):
            groupname = request.data.get('groupname', None)
            gid = request.data.get('gid', None)
            if (gid is not None):
                gid = int(gid)
            admin = request.data.get('admin', True)
            if (groupname is None
                    or re.match(settings.USERNAME_REGEX, groupname) is None):
                e_msg = (
                    'Groupname is invalid. It must confirm to the regex: %s' %
                    (settings.USERNAME_REGEX))
                handle_exception(Exception(e_msg), request)
            if (len(groupname) > 30):
                e_msg = ('Groupname cannot be more than 30 characters long')
                handle_exception(Exception(e_msg), request)

            for g in combined_groups():
                if (g.groupname == groupname):
                    e_msg = (
                        'Group(%s) already exists. Choose a different one' %
                        g.groupname)
                    handle_exception(Exception(e_msg), request)
                if (g.gid == gid):
                    e_msg = ('GID(%s) already exists. Choose a different one' %
                             gid)
                    handle_exception(Exception(e_msg), request)

            groupadd(groupname, gid)
            grp_entries = grp.getgrnam(groupname)
            gid = grp_entries[2]
            group = Group(gid=gid, groupname=groupname, admin=admin)
            group.save()

            return Response(GroupSerializer(group).data)
Esempio n. 2
0
    def post(self, request):
        with self._handle_exception(request):
            groupname = request.data.get('groupname', None)
            gid = request.data.get('gid', None)
            if (gid is not None):
                gid = int(gid)
            admin = request.data.get('admin', True)
            if (groupname is None or
                re.match(settings.USERNAME_REGEX, groupname) is None):
                e_msg = ('Groupname is invalid. It must confirm to the regex: %s' %
                         (settings.USERNAME_REGEX))
                handle_exception(Exception(e_msg), request)
            if (len(groupname) > 30):
                e_msg = ('Groupname cannot be more than 30 characters long')
                handle_exception(Exception(e_msg), request)

            for g in combined_groups():
                if (g.groupname == groupname):
                    e_msg = ('Group(%s) already exists. Choose a different one' %
                             g.groupname)
                    handle_exception(Exception(e_msg), request)
                if (g.gid == gid):
                    e_msg = ('GID(%s) already exists. Choose a different one' %
                             gid)
                    handle_exception(Exception(e_msg), request)

            groupadd(groupname, gid)
            grp_entries = grp.getgrnam(groupname)
            gid = grp_entries[2]
            group = Group(gid=gid, groupname=groupname, admin=admin)
            group.save()

            return Response(GroupSerializer(group).data)
Esempio n. 3
0
    def post(self, request):
        with self._handle_exception(request):
            groupname = request.data.get("groupname", None)
            gid = request.data.get("gid", None)
            if gid is not None:
                gid = int(gid)
            admin = request.data.get("admin", True)
            if (groupname is None
                    or re.match(settings.USERNAME_REGEX, groupname) is None):
                e_msg = (
                    "Groupname is invalid. It must conform to the regex: ({})."
                ).format(settings.USERNAME_REGEX)
                handle_exception(Exception(e_msg), request, status_code=400)
            if len(groupname) > 30:
                e_msg = "Groupname cannot be more than 30 characters long."
                handle_exception(Exception(e_msg), request, status_code=400)

            for g in combined_groups():
                if g.groupname == groupname:
                    e_msg = (
                        "Group ({}) already exists. Choose a different one."
                    ).format(g.groupname)
                    handle_exception(Exception(e_msg),
                                     request,
                                     status_code=400)
                if g.gid == gid:
                    e_msg = ("GID ({}) already exists. Choose a different one."
                             ).format(gid)
                    handle_exception(Exception(e_msg),
                                     request,
                                     status_code=400)

            groupadd(groupname, gid)
            grp_entries = grp.getgrnam(groupname)
            gid = grp_entries[2]
            group = Group(gid=gid, groupname=groupname, admin=admin)
            group.save()

            return Response(GroupSerializer(group).data)