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)
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}
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
def getIds(ids): from base.utils import splitstrip return ids if type(ids) == list else filter(lambda x:x.isdigit(), splitstrip(str(ids), ','))
def splittoint(text, seg=','): from base.utils import splitstrip return [int(s) for s in splitstrip(text, seg) if s.isdigit()]
def orderby(query, order_by): from base.utils import splitstrip return query.order_by(*(splitstrip(order_by, ',')))
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)))