コード例 #1
0
def newschannelsfilter(query, channels):
    from base.utils import splitstrip
    from django.db.models import Q
    q = Q(channels__isnull=True)
    for c in splitstrip(channels, ','):
        q |= Q(channels__icontains=u'[%s]' % c)
    return query.filter(q)
コード例 #2
0
ファイル: bapi.py プロジェクト: sintrb/justapi
 def transCoordinates(self,
                      latitudes,
                      longitudes,
                      fromtype=COORDTYPE,
                      totype=COORDTYPE):
     '''批量转换坐标系'''
     lats = splitstrip(latitudes, ',')
     lngs = splitstrip(longitudes, ',')
     if len(lats) != len(lngs):
         raise ex(u'长度不相等')
     cs = []
     for lat, lng in zip(lats, lng):
         r = self.transCoordinateOne(lat, lng, fromtype, totype)
         cs.append({
             'longitude': r[0],
             'latitude': r[1],
         })
     return {'coordtype': totype, 'items': cs}
コード例 #3
0
ファイル: bapi.py プロジェクト: sintrb/justapi
 def getAreaByNames(self,
                    names=P('名称', examples='云南省,昆明市,盘龙区', remark='使用逗号隔开')):
     '''根据名称获取区域'''
     from preset.models import Area
     names = splitstrip(names, ',')
     parea = None
     for name in names:
         area = Area.objects.filter(
             name=name).first() if not parea else Area.objects.filter(
                 parent=parea, name=name).first()
         if not area:
             break
         parea = area
     return parea
コード例 #4
0
def getIds(ids):
    from base.utils import splitstrip
    return ids if type(ids) == list else filter(lambda x:x.isdigit(), splitstrip(str(ids), ','))
コード例 #5
0
def splittoint(text, seg=','):
    from base.utils import splitstrip
    return [int(s) for s in splitstrip(text, seg) if s.isdigit()]
コード例 #6
0
def orderby(query, order_by):
    from base.utils import splitstrip
    return query.order_by(*(splitstrip(order_by, ',')))
コード例 #7
0
 def doc(self, request):
     apis = []
     tagmap = {}
     tags = []
     for an in dir(self.__class__):
         at = getattr(self.__class__, an)
         if hasattr(at, 'logined'):
             from base.utils import splitstrip
             apifun = at
             doc = getattr(apifun, 'doc')
             arginfos = [
                 ai for ai in getattr(apifun, 'arginfos')
                 if ai['name'] != '_param'
             ]
             userrole = getattr(apifun, 'userrole')
             tag = getattr(apifun, 'tag')
             fund = {
                 'name':
                 an,
                 'doc':
                 doc,
                 'args':
                 arginfos,
                 'arglen':
                 len(arginfos),
                 'userrole':
                 userrole if type(userrole) in (list, tuple, set) else ([
                     userrole,
                 ] if userrole else None),
                 'operation':
                 splitstrip(getattr(apifun, 'operation') or '', '__or__'),
                 'logined':
                 getattr(apifun, 'logined'),
                 'timegap':
                 getattr(apifun, 'timegap'),
                 'apiindex':
                 getattr(apifun, 'apiindex'),
                 'data':
                 getattr(apifun, 'data'),
             }
             apis.append(fund)
             if tag:
                 if ':' in tag:
                     ts = tag.split(':')
                     tag = ts[0].strip()
                     tagname = ts[1].strip()
                 else:
                     tagname = None
                 if tag not in tagmap:
                     tagd = {'tag': tag, 'name': tagname or '', 'apis': []}
                     tagmap[tag] = tagd
                     tags.append(tagd)
                 else:
                     tagd = tagmap[tag]
                 if tagname:
                     tagd['name'] = tagname
                 tagd['apis'].append(fund)
     from django.template import Template, Context
     if request.GET.get('tag'):
         tag = tagmap.get(request.GET.get('tag'))
         apis = tag['apis']
     else:
         tag = None
     apis.sort(key=lambda x: x['apiindex'])
     cxt = {
         'apis': apis,
         'template_name': 'utils/apidoc.html',
         'tags': tags,
         'tag': tag
     }
     return HttpResponse(content=Template(
         open(
             os.path.join(settings.BASE_DIR, 'templates', 'utils',
                          'apidoc.html')).read()).render(Context(cxt)))