Exemplo n.º 1
0
 def post(self, request):
     form, error = JsonParser(
         Argument('username', help='请输入登录名'),
         Argument('password', help='请输入密码'),
     ).parse(request.body)
     if error is None:
         if User.objects.filter(username=form.username).exists():
             return json_response(error=f'已存在登录名为【{form.username}】的用户')
         form.password_hash = User.make_password(form.pop('password'))
         # form.created_by = request.user
         User.objects.create(**form)
     return json_response(error=error)
Exemplo n.º 2
0
def get_request(request):
    form, error = JsonParser(
        Argument('duration', type=list, help='参数错误')
    ).parse(request.body)
    if error is None:
        s_date = form.duration[0]
        e_date = (parse_time(form.duration[1]) + timedelta(days=1)).strftime('%Y-%m-%d')
        data = {x.id: {'name': x.name, 'count': 0} for x in App.objects.all()}
        for req in DeployRequest.objects.filter(created_at__gt=s_date, created_at__lt=e_date):
            data[req.deploy.app_id]['count'] += 1
        data = sorted(data.values(), key=lambda x: x['count'], reverse=True)[:10]
        return json_response(data)
    return json_response(error=error)
Exemplo n.º 3
0
 def delete(self, request):
     form, error = JsonParser(Argument('id', type=int,
                                       help='请指定操作对象')).parse(request.GET)
     if error is None:
         user = User.objects.filter(pk=form.id).first()
         if user:
             if user.type == 'ldap':
                 return json_response(error='ldap账户无法删除,请使用禁用功能来禁止该账户访问系统')
             user.role_id = None
             user.deleted_at = human_datetime()
             user.deleted_by = request.user
             user.save()
     return json_response(error=error)
Exemplo n.º 4
0
def get_alarm(request):
    form, error = JsonParser(
        Argument('type', required=False),
        Argument('name', required=False)
    ).parse(request.GET, True)
    if error is None:
        now = datetime.now()
        data = {human_date(now - timedelta(days=x + 1)): 0 for x in range(14)}
        for alarm in Alarm.objects.filter(status='1', created_at__gt=human_date(now - timedelta(days=14)), **form):
            date = alarm.created_at[:10]
            if date in data:
                data[date] += 1
        data = [{'date': k, 'value': v} for k, v in data.items()]
        return json_response(data)
    return json_response(error=error)
Exemplo n.º 5
0
 def patch(self, request):
     form, error = JsonParser(
         Argument('id', type=int, help='请指定操作对象'),
         Argument('username', required=False),
         Argument('password', required=False),
         Argument('nickname', required=False),
         Argument('role_id', required=False),
         Argument('is_active', type=bool, required=False),
     ).parse(request.body, True)
     if error is None:
         if form.get('password'):
             form.token_expired = 0
             form.password_hash = User.make_password(form.pop('password'))
         User.objects.filter(pk=form.pop('id')).update(**form)
     return json_response(error=error)
Exemplo n.º 6
0
    def patch(self, request):
        data = dict()
        form, error = JsonParser(
            Argument('ip', required=True),
            Argument('network', required=True),
            Argument('type', required=True),
            Argument('mac', required=True),
        ).parse(request.body, True)
        if error is None:
            # 校验mac地址
            if is_valid_mac(form.mac):
                mac = form.mac.upper()
                ip_detail_info = IpDetailsInfo.objects.filter(
                    ip=form.ip).first()
                if ip_detail_info:
                    if ip_detail_info.query_mac and mac != ip_detail_info.query_mac:
                        IpDetailsInfo.objects.filter(ip=form.ip).update(
                            ip_type=2,
                            manual_mac=mac,
                        )
                    else:
                        IpDetailsInfo.objects.filter(ip=form.ip).update(
                            ip_type=1,
                            manual_mac=mac,
                        )
                else:
                    IpDetailsInfo.objects.create(
                        ip=form.ip,
                        network=form.network,
                        manual_mac=mac,
                        ip_type=1,
                    )

                data["status"] = "success"
            else:
                data["status"] = "fail"
            return json_response(data)
        return json_response(error=error)
Exemplo n.º 7
0
def login(request):
    form, error = JsonParser(
        Argument('username', help='请输入用户名'),
        Argument('password', help='请输入密码'),
    ).parse(request.body)
    if error is None:
        x_real_ip = request.META.get('REMOTE_ADDR', '')
        user = User.objects.filter(username=form.username).first()
        if user and not user.is_active:
            return json_response(error="账户已被系统禁用")
        else:
            if user:
                if user.verify_password(form.password):
                    return handle_user_info(user, x_real_ip)

        value = cache.get_or_set(form.username, 0, 86400)
        if value >= 3:
            if user and user.is_active:
                user.is_active = False
                user.save()
            return json_response(error='账户已被系统禁用')
        cache.set(form.username, value + 1, 86400)
        return json_response(error="用户名或密码错误,连续多次错误账户将会被禁用")
    return json_response(error=error)
Exemplo n.º 8
0
class TValueGroup:
    _parser = JsonParser()

    def __init__(self,
                 groupSource,
                 isTValue=False,
                 typeWord='t',
                 valueWord='v',
                 isProp=False,
                 isFileSoruce=False,
                 isDeepClone=False):
        tgs = groupSource.__class__.__name__

        if tgs == 'TValueGroup':
            groupSource = groupSource.__prop__

        self.isTvalue = isTValue
        self.tWord = typeWord
        self.vWord = valueWord
        self.propConfig = {} if isProp else None
        self.load(groupSource, isDeepClone)

    def load(self, groupSource, isDeepClone=False):
        if (isinstance(groupSource, str) or isinstance(
                groupSource, unicode)) and os.path.exists(groupSource):
            if groupSource.endswith("xml"):
                return self._parser.xmlToDict(groupSource)
            elif groupSource.endswith("csv"):
                return self._parser.csvToDict(groupSource)
            else:
                with codecs.open(groupSource, 'r') as jsonFile:
                    groupSource = jsonFile.read()

        self.__prop__ = self._parser.toDict(groupSource, isDeepClone)

    def __getitem__(self, typeKey, isValue=True):
        tempItem = self.__prop__[typeKey]

        if isValue and self.isTvalue:
            try:
                return tempItem[self.vWord]
            except:
                pass
        return tempItem

    def __delitem__(self, typeKey):
        self.__prop__.__delitem__(typeKey)

    def __setitem__(self, typeKey, value):
        self.__prop__[typeKey] = value

    def __len__(self):
        return len(self.__prop__)

    def __repr__(self):
        return str(self)

    def __str__(self, isJsonFormat=True):
        if isJsonFormat:
            return self._parser.toStr(self.__prop__)
        else:
            return self.__prop__.__str__()

    def __contains__(self, typeKey):
        return self.__prop__.__contains__(typeKey)

    def append(self, value):
        self.__prop__.append(value)

    def keys(self):
        return self.__prop__.keys()

    def getType(self, typeKey):
        tempItem = self.__prop__[typeKey]

        if self.isTvalue and (
            (type(tempItem) is dict and tempItem.__contains__(self.vWord))
                or hasattr(tempItem, self.tWord)):
            return tempItem[self.tWord]

        return None

    def getInt(self, typeKey):
        return int(self[typeKey])

    def getBool(self, typeKey):
        return self[typeKey].lower() == "true"

    def tryGet(self, typeKey, defVal):
        try:
            return self[typeKey]
        except:
            if self.propConfig != None:
                self.propConfig[typeKey] = defVal
            return defVal

    def toFormatString(self, tvValueHandler=None, seperator=";", props=[]):
        tempProp = []
        if (len(props) == 0):
            tempProp = self.keys()
        else:
            tempProp = props
        countProp = 0
        propLen = len(tempProp)
        outputStr = ""
        for tType in tempProp:
            countProp += 1
            if tvValueHandler != None:
                tempStr = tvValueHandler(tType, self[tType])
                if tempStr == None:
                    continue
            else:
                tempStr = '%s:%s' % (tType, self[tType])
            if countProp <= propLen and outputStr != "":
                outputStr += seperator
            outputStr += tempStr

        return outputStr

    def toXml(self, rootName="Properties"):
        from libs.xml import XmlDataGenerator
        xmlTvg = XmlDataGenerator([{
            'name': rootName,
            'findex': -1
        }, {
            'name': 'Property',
            'findex': 0
        }])
        for tValue in self.keys():
            xmlTvg.addElement("Property", name=tValue, value=self[tValue])
        return xmlTvg

    def saveTo(self, path):
        with codecs.open(path, "w", encoding="utf-8") as f:
            f.writelines(str(self))
Exemplo n.º 9
0
 def loadUI(self, uicsv):
     for e in JsonParser().csvToDict(uicsv):
         self.addUIEle(**e)
Exemplo n.º 10
0
 def testtvg(self):
     self.tlog.info(JsonParser().toStr({'a': TValueGroup({'b': 1})}))