Exemplo n.º 1
0
def get_profile_post_list(viewing_user, posts_per_page, page):
    posts = Post.objects.filter(user=viewing_user).order_by('-date')
    paginator = Paginator(posts, posts_per_page)
    post_list = paginator.get_page(page)
    return post_list
Exemplo n.º 2
0
def timing_history_list(request):
    """
        history for schedule list.
    """
    name = request.GET.get('name', None)
    note = request.GET.get('note', None)
    executor = request.GET.get('executor', None)
    result = request.GET.get('result_type', None)
    stime = request.GET.get('stime', None)
    etime = request.GET.get('etime', None)

    iDisplayLength = int(request.GET.get('iDisplayLength'))
    iDisplayStart = int(request.GET.get('iDisplayStart'))
    sEcho = int(request.GET.get('sEcho'))
    iSortCol_0 = int(request.GET.get('iSortCol_0',0))
    sSortDir_0 = request.GET.get('sSortDir_0')
    order_list = ["task__job__name", None, None, None, None, None, None]
    order_item = order_list[iSortCol_0]
    user = request.user

    histories = _history.get_scheduleHistorys_by_params(task__creator=user) if user.username not in SPECIAL_USERS else _history.get_scheduleHistorys_by_params()

    # 查询
    if name:
        histories = histories.filter(task__job__name__icontains=name)
    if note:
        histories = histories.filter(task__note__icontains=note)
    one_day = datetime.timedelta(days=1)
    if result:
        histories = histories.filter(result=result)
    if executor:
        histories = histories.filter(task__creator__username__icontains=executor)
    if stime:
        histories = histories.filter(trigger_time__gte=stime)
    if etime:
        created_to = datetime.datetime.strptime(etime, '%Y-%m-%d')
        histories = histories.filter(trigger_time__lte=(created_to + one_day))

    #排序
    if order_item:
        if sSortDir_0 == "desc":
            order_item = '-%s' % order_item
        histories = histories.order_by(order_item)
    else:
        histories = histories.order_by("-trigger_time")

    p = Paginator(histories, iDisplayLength)
    total = p.count #总数
    page_range = p.page_range #页数list
    page = p.page(page_range[iDisplayStart / iDisplayLength])
    object_list = page.object_list

    sdicts = {}
    sdicts["sEcho"] = sEcho
    sdicts["iTotalRecords"] = total
    sdicts["iTotalDisplayRecords"] = total
    sdicts["aaData"] = []
    for obj in object_list:
        # job_name = '<a style="color: blue;" href="javascript:void(0)" onclick="javascript:job_view(\'%s\');">%s</a>' % (obj.task.job.id, obj.task.job.name)
        name = u'<a style="color: blue;" href="javascript:void(0)" onclick="javascript:show_result(\'{0}\');">{1}</a>'.format(obj.history.id,obj.history.name) if obj.history else u'未生成历史记录'
        data = [name,obj.task.note,obj.task.expression,obj.get_result_display(),obj.info,obj.task.creator.username,obj.trigger_time.strftime(TIME_FMT)]
        sdicts["aaData"].append(data)
    return HttpResponse(json.dumps(sdicts))
Exemplo n.º 3
0
def get_list_common_date(request, blog_all_list):
    """获取相同数据"""
    blog_dates = Blog.objects.dates('created_time', 'month', order='DESC')
    paginator = Paginator(blog_all_list,
                          settings.EACH_PAGE_BLOGS_NUMBER)  #每10页进行分页
    page_num = request.GET.get('page', 1)  #get获取页码参数
    # paginator.page(int(page_num))
    page_of_blogs = paginator.get_page(page_num)  #自动识别page_num的类型

    blogs = page_of_blogs.object_list  #获取所有博客
    # blog_types = BlogType.objects.all()           #获取所有分类

    curr_page_num = page_of_blogs.number  #当前页码
    total_page_num = paginator.num_pages  #总页码

    #页码列表
    page_range_number = list(range(max(curr_page_num-2,1),curr_page_num)) \
                        + list(range(curr_page_num,min(curr_page_num+2,total_page_num+1)))
    # print(page_range_number)

    #给页码添加首页码尾页码和...
    #添加...
    if page_range_number[0] - 1 >= 2:
        page_range_number.insert(0, '...')
    if total_page_num - page_range_number[-1] >= 2:
        page_range_number.append('...')
    #添加首页码和尾页码#
    if page_range_number[0] != 1:
        page_range_number.insert(0, 1)
    if page_range_number[-1] != total_page_num:
        page_range_number.append(total_page_num)

    #获取日期分类数量
    blog_datas_dict = {}
    for blog_data in blog_dates:
        blog_count = Blog.objects.filter(
            created_time__year=blog_data.year,
            created_time__month=blog_data.month).count()
        # print(blog_count)
        blog_datas_dict[blog_data] = blog_count
        # print(blog_count)
        # print(blog_datas_dict)

    #获取博客分类数量
    #方法一  用annotate
    blog_types = BlogType.objects.annotate(blog_count=Count('blog'))
    """
    #方法二
    blog_types_list = []
    #获取每一个分类加上blog_count属性
    for blog_type in blog_types:
        blog_type.blog_count = Blog.objects.filter(blog_type=blog_type).count()  #计算分类为blog_type的博客数量
        blog_types_list.append(blog_type)         #添加到列表blog_types_list以便后续页面可以循环取出数据
    """
    #最好用这种方式提交字典
    context = {}
    # context['blog_dates'] = blog_dates
    context['blog_dates'] = blog_datas_dict
    context['page_range_number'] = page_range_number
    context['blogs'] = blogs
    # context['blog_types'] = blog_types
    # context['blog_types'] = blog_types_list
    context['blog_types'] = blog_types
    context['page_of_blogs'] = page_of_blogs
    return context
Exemplo n.º 4
0
def main_page(request):
    if not request.user.is_authenticated():
        return redirect("/auth")

    args = {}
    args["user"] = auth.get_user(request)

    if 'search' in request.GET and request.GET['search']:
        page = request.GET.get('page', 1)

        search = request.GET['search']
        word = Post.objects.filter(Q(post_title__icontains=search) | Q(post_description__icontains=search)).order_by('-id')
        paginator = Paginator(word,2)
        try:
            args["data"] = paginator.page(page)
            args["query"] = search
        except PageNotAnInteger:
            args["data"] = paginator.page(1)
            args["query"] = search
        except EmptyPage:
            args["data"] = paginator.page(paginator.num_pages)
            args["query"] = search

        return render_to_response('allpost.html', args)
    if 'country' in request.GET and request.GET['country']:
        page = request.GET.get('page', 1)

        country = request.GET['country']
        word = Post.objects.filter(post_authors__country=country).order_by('-id')
        paginator = Paginator(word,2)
        try:
            args["data"] = paginator.page(page)
            args["country"] = country
        except PageNotAnInteger:
            args["data"] = paginator.page(1)
            args["country"] = country
        except EmptyPage:
            args["data"] = paginator.page(paginator.num_pages)
            args["country"] = country

        return render_to_response('allpost.html', args)
    if 'city' in request.GET and request.GET['city']:
        page = request.GET.get('page', 1)

        city = request.GET['city']
        word = Post.objects.filter(post_authors__city=city).order_by('-id')
        paginator = Paginator(word, 2)
        try:
            args["data"] = paginator.page(page)
            args["city"] = city
        except PageNotAnInteger:
            args["data"] = paginator.page(1)
            args["city"] = city
        except EmptyPage:
            args["data"] = paginator.page(paginator.num_pages)
            args["city"] = city
        return render_to_response('allpost.html', args)
    else:
        all_post = Post.objects.all().order_by("-id")
        page = request.GET.get('page', 1)

        paginator = Paginator(all_post, 2)
        try:
            args["data"] = paginator.page(page)
        except PageNotAnInteger:
            args["data"] = paginator.page(1)
        except EmptyPage:
            args["data"] = paginator.page(paginator.num_pages)

        return render(request, 'allpost.html', args)
Exemplo n.º 5
0
def user(request, username, directory=""):
    if directory:
        isdir = True
        newimagelist = list_files(
            os.path.join(MOODBOARD_USERS, username, 'images', directory))
        imagelist = []
        for image in newimagelist:
            imagelist.append(
                os.path.join(MOODBOARD_USERS, username, 'images', directory,
                             image))
    else:
        isdir = False
        newimagelist = list_files(
            os.path.join(MOODBOARD_USERS, username, 'images'))
        imagelist = newimagelist
        # for image in newimagelist:
        #    imagelist.append("moodboard/users/%s/images/%s" % (username, image))

    # paginate the image list
    paginator = Paginator(imagelist, 20)

    # get page number from url ?page=
    page = request.GET.get('page')
    try:
        pagedlist = paginator.page(page)
    except PageNotAnInteger:
        # If page is not an integer, deliver first page.
        pagedlist = paginator.page(1)
    except EmptyPage:
        # If page is out of range (e.g. 9999), deliver last page of results.
        pagedlist = paginator.page(paginator.num_pages)

    # find the next page number if there is one
    try:
        next_page = pagedlist.next_page_number()
    except EmptyPage:
        next_page = ""
    # find the previous page number if there is one
    try:
        previous_page = pagedlist.previous_page_number()
    except EmptyPage:
        previous_page = ""

    dirlist = list_folders(os.path.join(MOODBOARD_USERS, username, 'images'))

    if not request.user.is_authenticated():
        loggedin = False
    else:
        loggedin = True

    context = {
        'imagelist': pagedlist,
        'directory': directory,
        'dirlist': dirlist,
        'isdir': isdir,
        'has_next': pagedlist.has_next(),
        'next_page': next_page,
        'has_previous': pagedlist.has_previous(),
        'previous_page': previous_page,
        'numberofimages': len(imagelist),
        'username': username,
        'loggedin': loggedin
    }
    return render(request, 'moodboard/user.html', context)
Exemplo n.º 6
0
def add(request):
    "add cron"
    getinfo=request.GET
    postinfo=request.POST
    print getinfo
    print postinfo
    if getinfo.has_key("data"):
        "json data "
        datatype=getinfo.get("data")
        if datatype=="table":
            "表格数据填充"
            pageindex=getinfo.get("page")
            pageindex=int(pageindex)
            rowsnum=getinfo.get("rows")
            rowsnum=int(rowsnum)
            task_queryset= Task.objects.all().order_by("-tid")
            buff={}
            #buff["page"]=pageindex
            task_pagiobj=Paginator(task_queryset,rowsnum)
            buff["records"]=task_pagiobj.count
            buff["total"]=task_pagiobj.num_pages
            try:
                task_list=task_pagiobj.page(pageindex)
            except:
                task_list=task_pagiobj.page(task_pagiobj.num_pages)
            buff["page"]=task_list.number
            buff["rows"]=[{"cell":[i.tid,i.name,i.get_status(),i.rule,i.project,i.app,i.get_info() ,i.get_owner_and_type(),i.ip]}  for i in task_list]
        elif datatype=="add":
            "增加计划任务"
            ip=postinfo.get("ip")
            name=postinfo.get("name")
            rule=postinfo.get("rule")
            svnpath=postinfo.get("url").strip()
            version=postinfo.get("version")
            svnuser=postinfo.get("svnuser")
            svnpasswd=postinfo.get("svnpasswd")
            info=postinfo.get("fn")
            _type=postinfo.get("type")
            args=""
            filename=postinfo.get("filename")
            buff={}

            valie_result=valid_input(ip  ,name,rule,svnpath,version,svnuser,svnpasswd,info,args,filename)
            if  valie_result!=True:
                buff["status"],buff["message"]=valie_result
            else:
                if version=="*":
                    versioninfo=get_svn_top_version(svnurl=svnpath,svnuser=svnuser,svnpasswd=svnpasswd)
                    if versioninfo[0]==False:
                        buff["status"],buff["message"]=versioninfo
                    else:
                        version=versioninfo[1]
                if buff=={}:
                    server=get_cron_serve()

                    result=server.addcron(ip,name,svnpath,str(version),svnuser,svnpasswd,rule,info,
                                              request.user.username,args,filename)
                    if result!=True:
                        buff["status"],buff["message"]=result
                    else:
                        buff["status"]=True
                        buff["message"]="Success!"
            return HttpResponse(json.dumps(buff,ensure_ascii=False),mimetype="application/javascript")

    else:
        return  render_to_response("add.html",locals(),context_instance=RequestContext(request))
Exemplo n.º 7
0
def index(request):
    if request.user.is_authenticated() and not request.user.venueuser.location:
        return redirect('profile-form', pk=request.user.venueuser.pk)

    if 'lat' in request.GET and 'lon' in request.GET:
        return closest(request)

    form = forms.AddressForm()
    restaurants = []
    latitude = ""
    longitude = ""
    address = ""
    name = ""
    if request.POST:
        page = request.POST.get('page')
        form = forms.AddressForm(request.POST)
        if form.is_valid():
            address = form.cleaned_data['address']
            name = form.cleaned_data['name']
            if not address:
                restaurants = Restaurant.objects.filter(approved=True, is_suspended=False, name__icontains=name)
                try:
                    longitude, latitude = restaurants[0].location
                except IndexError:
                    pass
            else:
                geocoder = GoogleV3(api_key=GOOGLE_KEY)
                try:
                    location = geocoder.geocode(address)
                except Exception as e:
                    print e
                    location = ""

                if location:
                    latitude = location.latitude
                    longitude = location.longitude
                    currentPoint = geos.GEOSGeometry('POINT(%s %s)' % (longitude, latitude))
                    distance_m = {'km': 30}
                    restaurants = Restaurant.gis.filter(approved=True,
                                                        location__distance_lte=(currentPoint, measure.D(**distance_m)),
                                                        name__icontains=name).distance(currentPoint).order_by(
                        'distance')
    else:
        page = request.GET.get('page')
        restaurants = Restaurant.objects.filter(approved=True, is_suspended=False)

    # if hasattr(request.user, 'is_venue_moderator') and request.user.is_venue_moderator():
    #    pass
    # else:
    #    restaurants = Restaurant.objects.filter(approved=True, is_suspended=False)

    paginator = Paginator(restaurants, 20)
    page = request.GET.get("page")
    try:
        restaurants = paginator.page(page)
    except PageNotAnInteger:
        restaurants = paginator.page(1)
    except EmptyPage:
        restaurants = paginator.page(paginator.num_pages)

    context = {'all_restaurants': restaurants, 'form': form, 'longitude': longitude, 'latitude': latitude,
               'address': address, 'name': name}
    return render(request, 'restaurants/restaurants.html', context)
Exemplo n.º 8
0
def search_page(request):
	"""
	Function that returns a tuple (template, context). 
	
	Normally it's used to calculate a query from one or more filters. 
	(if DJF_SPLASHPAGE_CACHE is set to False, it returns all values and all facets) 
	
	"""
	FM_GLOBAL = access_fmglobal()
	page, resulttype, ordering, query_filtersUrl, query_filtersBuffer, activeIDs, item, totitems, showonly_subs, history = __extractGETparams(request)
	table_template = None

	# CHECK THAT THE IDS PASSED IN FILTERS_URL ARE EXISTING AND VALID FOR THIS RESULT TYPE, otherwise redirect
	redirect_flag, query_filtersUrl_Clean = __validateQueryFilters(resulttype, query_filtersUrl, FM_GLOBAL)
	if redirect_flag:
		djfacetlog("FacetViews>> Redirecting; the url contained  invalid filter values!", True)
		newurl_stub = create_queryUrlStub(query_filtersUrl_Clean)
		newurl_stub = "%s?resulttype=%s%s" % (request.path, resulttype , newurl_stub)
		return redirect(newurl_stub)
	
	# ORDERINGS: if not provided it defaults to the standard one (as defined in the model)
	try:
		from djfacet.orderings import determine_ordering
		real_ordering = determine_ordering(resulttype, ordering)
	except:
		real_ordering = 'default'
	
	# =========	
	# UPDATE_RESULTS (note: new_queryargs has the new format=list of fvalues!)
	new_items, new_queryargs, new_activeIDs = __update_results(resulttype, real_ordering, query_filtersUrl, query_filtersBuffer, activeIDs)
	# =========
	
	
	# PAGINATION  
	 # ===>> rem that: 'items' is not a collection, so they are accessed through 'objects_list' method in the template
	paginator = Paginator(new_items, DJF_MAXRES_PAGE) # ie show 50 items per page
	try:
		items = paginator.page(page)
	except (EmptyPage, InvalidPage):  # If page request is out of range, deliver last page of results.
		items = paginator.page(paginator.num_pages)
	# add other useful paginator data to the object
	items.extrastuff = paginator_helper(page, paginator.num_pages)
	items.totcount = paginator.count

	# (RE)CREATE THE FACETS COLUMN:  new 2012-01-12 removed the <get_facetsForTemplate> routine
	facetgroups_and_facets = []
	if DJF_AJAX: 
		for group in FM_GLOBAL.facetsGroups: 
			# in this case we don't need to preload all facet contents, cause they'll be updated via ajax
			facetgroups_and_facets.append((group, [(facet, []) for facet in group.facets if facet.get_behaviour(resulttype)]))
	else:
		# set LIMIT to DJF_MAXRES_FACET/None to switch
		for group in FM_GLOBAL.facetsGroups:
			facetgroups_and_facets.append((group, 
				[(facet, FM_GLOBAL.refresh_facetvalues(queryargs=new_queryargs, activeIDs=new_activeIDs,
				 resulttype_name=resulttype, facet=facet, LIMIT=DJF_MAXRES_FACET)) for 
					facet in group.facets if facet.get_behaviour(resulttype)]))	
		
	# HELPER URL STRINGA creation, from the active filters
	newurl_stub = create_queryUrlStub(query_filtersUrl)
	
	# RESET THE SESSION INFO 
	request.session['query_filtersBuffer'] = new_queryargs	# a list of FValues..
	request.session['activeIDs'] = new_activeIDs	
	request.session['active_resulttype'] = resulttype	# a string (=uniquename) ... used by updateFacets	
	# print history
	history = update_history("search", history, new_queryargs, FM_GLOBAL.get_resulttype_from_name(resulttype), newurl_stub)
	request.session['djfacet_history']  = history	
	# print history
	# request.session.set_expiry(300) # 5 minutes ..	too much?


	# GET THE RIGHT TEMPLATE FOR RESULTS LIST
	table_template = select_template([ "djfacet/%s/%s_table.html" % (resulttype, resulttype), 
										"djfacet/results/generic_table.html"])
	table_template = table_template.name	
	
	context = {	  
		'user_is_logged_in' : request.user.is_authenticated(),
		'facetgroups_and_facets' :	 facetgroups_and_facets,	
		'items' : items,	
		'totitems' : items.totcount ,			

		'DJF_STATIC_PATH' : DJF_STATIC_PATH,
		'ajaxflag' : DJF_AJAX,
		'twocolumnsflag' : False,
		'djfacet_searchpage' : True,

		'result_types' : DJF_SPECS.result_types,	
		'result_typeObj' : FM_GLOBAL.get_resulttype_from_name(resulttype),	  
		'ordering' : ordering,

		'query_filtersBuffer' : new_queryargs,
		'newurl_stub' : newurl_stub,
		'table_template' : table_template,
		
		'recent_actions' : history

		}


	return ('djfacet/facetedbrowser.html', context)
Exemplo n.º 9
0
def list_firs_ssp_with_param_view(request, sub_division_pk, police_station_pk):

    ssp_record_keepers = [u['user'] for u in acc_models.SSPRecordKeeper.objects.all().values('user')]

    if request.user.pk in ssp_record_keepers:

        if request.method == 'POST':
            form = forms.ChooseLocationForm(request.POST)
            if form.is_valid():
                police_station = form.cleaned_data['police_station']
                sub_division = form.cleaned_data['sub_division']
                if sub_division == 'all':
                    fir_list = models.FIR.objects.all()
                elif sub_division != 'all' and police_station == 'all':
                    fir_list = models.FIR.objects.all().filter(sub_division__pk__exact=sub_division)
                else:
                    fir_list = models.FIR.objects.all().filter(police_station__pk__exact=police_station, sub_division__pk__exact=sub_division)
                form = forms.ChooseLocationForm()

                request.session['ssp_ps_choice'] = police_station
                request.session['ssp_sd_choice'] = sub_division 

                page = request.GET.get('page', 1)
                paginator = Paginator(fir_list, 60)
                try:
                    firs = paginator.page(page)
                except PageNotAnInteger:
                    firs = paginator.page(1)
                except EmptyPage:
                    firs = paginator.page(paginator.num_pages)                

                return render(request, 'fir/list_firs_ssp.html', {'fir_list':firs, 'form':form})
            else:
                return redirect('fault', fault='Input parameters of Choose Area Form are not valid')
        else:
            form = forms.ChooseLocationForm()

            if request.GET.get('page', None):
                police_station = request.session.get('ssp_ps_choice', None)
                sub_division = request.session.get('ssp_sd_choice', None)
                if police_station and sub_division:
                    if sub_division == 'all':
                        fir_list = models.FIR.objects.all()
                    elif sub_division != 'all' and police_station == 'all':
                        fir_list = models.FIR.objects.all().filter(sub_division__pk__exact=sub_division)
                    else:
                        fir_list = models.FIR.objects.all().filter(police_station__pk__exact=police_station, sub_division__pk__exact=sub_division)
            else:
                fir_list = models.FIR.objects.all().filter(police_station__pk__exact=police_station_pk, sub_division__pk__exact=sub_division_pk)
            
            page = request.GET.get('page', 1)
            paginator = Paginator(fir_list, 60)
            try:
                firs = paginator.page(page)
            except PageNotAnInteger:
                firs = paginator.page(1)
            except EmptyPage:
                firs = paginator.page(paginator.num_pages)
            
            return render(request, 'fir/list_firs_ssp.html', {'fir_list':firs, 'form':form})
    else:
        return redirect('fault', fault='ACCESS DENIED!')
Exemplo n.º 10
0
def _list_query_history(user, querydict, page_size, prefix=""):
  """
  _list_query_history(user, querydict, page_size, prefix) -> (page, filter_param)

  A helper to gather the history page. It understands all the GET params in
  ``list_query_history``, by reading keys from the ``querydict`` with the
  given ``prefix``.
  """
  DEFAULT_SORT = ('-', 'date')                  # Descending date

  SORT_ATTR_TRANSLATION = dict(
    date='submission_date',
    state='last_state',
    name='design__name',
    type='design__type',
  )

  db_queryset = models.QueryHistory.objects.select_related()

  # Filtering
  #
  # Queries without designs are the ones we submitted on behalf of the user,
  # (e.g. view table data). Exclude those when returning query history.
  if querydict.get(prefix + 'auto_query', 'on') != 'on':
    db_queryset = db_queryset.exclude(design__isnull=False, design__is_auto=True)

  user_filter = querydict.get(prefix + 'user', user.username)
  if user_filter != ':all':
    db_queryset = db_queryset.filter(owner__username=user_filter)

  # Design id
  design_id = querydict.get(prefix + 'design_id')
  if design_id:
    if design_id.isdigit():
      db_queryset = db_queryset.filter(design__id=int(design_id))
    else:
      raise PopupException(_('list_query_history requires design_id parameter to be an integer: %s') % design_id)

  # Search
  search_filter = querydict.get(prefix + 'search')
  if search_filter:
    db_queryset = db_queryset.filter(
        Q(design__name__icontains=search_filter) |
        Q(query__icontains=search_filter) |
        Q(owner__username__icontains=search_filter)
    )

  # Design type
  d_type = querydict.get(prefix + 'type')
  if d_type:
    if d_type not in list(SavedQuery.TYPES_MAPPING.keys()):
      LOG.warn('Bad parameter to list_query_history: type=%s' % (d_type,))
    else:
      db_queryset = db_queryset.filter(design__type=SavedQuery.TYPES_MAPPING[d_type])

  # If recent query
  recent = querydict.get('recent')
  if recent:
    db_queryset = db_queryset.filter(is_cleared=False)

  # Ordering
  sort_key = querydict.get(prefix + 'sort')
  if sort_key:
    sort_dir, sort_attr = '', sort_key
    if sort_key[0] == '-':
      sort_dir, sort_attr = '-', sort_key[1:]

    if sort_attr not in SORT_ATTR_TRANSLATION:
      LOG.warn('Bad parameter to list_query_history: sort=%s' % (sort_key,))
      sort_dir, sort_attr = DEFAULT_SORT
  else:
    sort_dir, sort_attr = DEFAULT_SORT
  db_queryset = db_queryset.order_by(sort_dir + SORT_ATTR_TRANSLATION[sort_attr], '-id')

  # Get the total return count before slicing
  total_count = db_queryset.count()

  # Slicing (must be the last filter applied)
  pagenum = int(querydict.get(prefix + 'page', 1))
  if pagenum < 1:
    pagenum = 1
  db_queryset = db_queryset[page_size * (pagenum - 1) : page_size * pagenum]
  paginator = Paginator(db_queryset, page_size, allow_empty_first_page=True)

  try:
    page = paginator.page(pagenum)
  except EmptyPage:
    page = None

  # We do slicing ourselves, rather than letting the Paginator handle it, in order to
  # update the last_state on the running queries
  if page:
    for history in page.object_list:
      _update_query_state(history.get_full_object())

  # We need to pass the parameters back to the template to generate links
  keys_to_copy = [prefix + key for key in ('user', 'type', 'sort', 'design_id', 'auto_query', 'search')]
  filter_params = copy_query_dict(querydict, keys_to_copy)

  return paginator, page, filter_params
Exemplo n.º 11
0
def _list_designs(user, querydict, page_size, prefix="", is_trashed=False):
  """
  _list_designs(user, querydict, page_size, prefix, is_trashed) -> (page, filter_param)

  A helper to gather the designs page. It understands all the GET params in
  ``list_designs``, by reading keys from the ``querydict`` with the given ``prefix``.
  """
  DEFAULT_SORT = ('-', 'date')                  # Descending date

  SORT_ATTR_TRANSLATION = dict(
    date='last_modified',
    name='name',
    desc='description',
    type='extra',
  )

  # Trash and security
  if is_trashed:
    db_queryset = Document.objects.trashed_docs(SavedQuery, user)
  else:
    db_queryset = Document.objects.available_docs(SavedQuery, user)

  # Filter by user
  filter_username = querydict.get(prefix + 'user')
  if filter_username:
    try:
      db_queryset = db_queryset.filter(owner=User.objects.get(username=filter_username))
    except User.DoesNotExist:
      # Don't care if a bad filter term is provided
      pass

  # Design type
  d_type = querydict.get(prefix + 'type')
  if d_type and d_type in list(SavedQuery.TYPES_MAPPING.keys()):
    db_queryset = db_queryset.filter(extra=str(SavedQuery.TYPES_MAPPING[d_type]))

  # Text search
  frag = querydict.get(prefix + 'text')
  if frag:
    db_queryset = db_queryset.filter(Q(name__icontains=frag) | Q(description__icontains=frag))

  # Ordering
  sort_key = querydict.get(prefix + 'sort')
  if sort_key:
    if sort_key[0] == '-':
      sort_dir, sort_attr = '-', sort_key[1:]
    else:
      sort_dir, sort_attr = '', sort_key

    if sort_attr not in SORT_ATTR_TRANSLATION:
      LOG.warn('Bad parameter to list_designs: sort=%s' % (sort_key,))
      sort_dir, sort_attr = DEFAULT_SORT
  else:
    sort_dir, sort_attr = DEFAULT_SORT
  db_queryset = db_queryset.order_by(sort_dir + SORT_ATTR_TRANSLATION[sort_attr])

  designs = [job.content_object for job in db_queryset.all() if job.content_object and job.content_object.is_auto == False]

  pagenum = int(querydict.get(prefix + 'page', 1))
  paginator = Paginator(designs, page_size, allow_empty_first_page=True)
  try:
    page = paginator.page(pagenum)
  except EmptyPage:
    page = None

  # We need to pass the parameters back to the template to generate links
  keys_to_copy = [prefix + key for key in ('user', 'type', 'sort', 'text')]
  filter_params = copy_query_dict(querydict, keys_to_copy)

  return paginator, page, filter_params
Exemplo n.º 12
0
def devices(request):
    ##################selectize###############
    '''    str1   = ""
    list2  = [] 
    machine = Machine.objects.all()

    all_data1 = [e.name_of_device for e in machine]
    all_data2 = [e.department.name for e in machine]
    
    for e in all_data1:
        try:
            list1 = [x for x in re.split(',',e) if x!='']
            list2.extend(list1)
        except:
          pass 
    for e in all_data2:
        try:
            list1 = [x for x in re.split(',',e) if x!='']
            list2.extend(list1) 
        except:
          pass
    list2 = sorted(list2) 
    list2 = list(set(list2))
    ''' 
    ############################################# 

    if request.POST.get('new_machine') == 'add_new': 
            #faqformset = inlineformset_factory(Machine,Faq,fields=('quistion','answer',),extra=1)
            if request.method == 'POST':
                #machine_form = MachineFrom(request.POST)
                #print(machine_form)
                #if machine_form.is_valid():    
                    #print(".......Helloooo")                 
                    #machine = machine_form.save(commit=False)
                try:
                    machine         = Machine(name_of_device=request.POST.get('name_of_device'),department_id=request.POST.get('department'))
                    machine.working = 'yes'
                    machine.save()
                    #faqformset = faqformset(request.POST,instance=machine)
                    #if faqformset.is_valid():
                    #     faqformset.save() 
                    machine.editor.add(User.objects.get(pk=request.user.pk))
                except:
                    pass


    #search by query
    q            = ""
    q1           = ""
    query        = ""
    if request.GET.get('q'):
        q = request.GET.get('q').strip()
        q1  = q 
        arr_q = q.split(',')
        k=1
        for q in  arr_q:
            query1  = Q(name_of_device__contains=q) |  Q(department__name__contains=q)
            if k==1: 
              query   =  query1
              k=k+1             
            else:
              query   =  query & query1
        machine_list = Machine.objects.all().filter( query ).distinct().order_by('-id')
    else:      
        machine_list = Machine.objects.all().order_by('-id')

    paginator = Paginator(machine_list, 25) # Show 25 contacts per Machine
    page = request.GET.get('page')
    try:
        machines = paginator.page(page)
    except PageNotAnInteger:
        # If page is not an integer, deliver first page.
        machines = paginator.page(1)
    except EmptyPage:
        # If page is out of range (e.g. 9999), deliver last page of results.
        machines = paginator.page(paginator.num_pages)

    form  = MachineFrom()
    #faqformset = inlineformset_factory(Machine,Faq,fields=('quistion','answer',),extra=1)    
    
    return render(request, 'devices.html', { 'machines':machines,'page_form':form,'q':q1})
Exemplo n.º 13
0
def tag(request,tag):
    quests=Question.objects.annotate(total_comments=Count('answer__comment')).filter(tags__icontains=tag).order_by('-id')
    paginator=Paginator(quests,10)
    page_num=request.GET.get('page',1)
    quests=paginator.page(page_num)
    return render(request,'tag.html',{'quests':quests,'tag':tag})
Exemplo n.º 14
0
    def index(self):
        user = App.get_user_info(self)
        if not user:
            return HttpResponseRedirect("/admin/maxlead_site/login/")
        viewRange = self.GET.get('viewRange', user.user.id)
        if viewRange:
            viewRange = int(viewRange)
        user_list = UserProfile.objects.filter(state=1)
        if user.role == 0:
            user_list = user_list.filter(id=user.id)
        if user.role == 1:
            user_list = user_list.filter(Q(group=user) | Q(id=user.id))
        users = []
        if user_list:
            for val in user_list:
                users.append(val.user_id)
        tasks = Task.objects.filter(user_id__in=users).order_by('-created','-finish_time')
        if viewRange:
            tasks = tasks.filter(user_id=viewRange)

        if tasks:
            data = []
            for v in tasks:
                v.created = v.created.strftime('%Y-%m-%d %H:%M:%S')
                if v.finish_time:
                    v.finish_time = v.finish_time.strftime('%Y-%m-%d %H:%M:%S')
                else:
                    v.finish_time = ''
                if v.type == 0:
                    v.type = 'Review'
                else:
                    v.type = 'QA'

        limit = self.GET.get('limit', 20)
        page = self.GET.get('page', 1)
        re_limit = limit

        total_count = len(tasks)
        total_page = round(len(tasks)/int(limit))
        if int(limit) >= total_count:
            limit = total_count
        if tasks:
            paginator = Paginator(tasks, limit)
            try:
                tasks_data = paginator.page(page)
            except PageNotAnInteger:
                # If page is not an integer, deliver first page.
                tasks_data = paginator.page(1)
            except EmptyPage:
                # If page is out of range (e.g. 9999), deliver last page of results.
                tasks_data = paginator.page(paginator.num_pages)
            data = {
                'data': tasks_data,
                'total_count': total_count,
                'total_page': total_page,
                're_limit': int(re_limit),
                'limit': int(limit),
                'page': page,
                'user': user,
                'viewRange': viewRange,
                'avator': user.user.username[0],
                'user_list': user_list
            }
        else:
            data = {
                'data': '',
                'total_count': total_count,
                'total_page': total_page,
                're_limit': int(re_limit),
                'limit': int(limit),
                'page': page,
                'user': user,
                'viewRange': viewRange,
                'avator': user.user.username[0],
                'user_list': user_list
            }
        return render(self, 'miner/miner.html', data)
Exemplo n.º 15
0
 def get(self,request):
     caisses_list=Caisse.objects.all().order_by('-date')
     paginator = Paginator(caisses_list, 30) # Show 25 clients per page
     page = request.GET.get('page')
     caisses = paginator.get_page(page)
     return render(request,'caisse/home.html',{'caisses':caisses})
Exemplo n.º 16
0
def browse(request):
    """
    Browse Files/Directories.
    """

    # QUERY / PATH CHECK
    query = request.GET.copy()
    path = get_path(query.get('dir', ''))
    directory = get_path('')

    if path is None:
        msg = _('The requested Folder does not exist.')
        messages.add_message(request, messages.ERROR, msg)
        if directory is None:
            # The directory returned by get_directory() does not exist, raise an error to prevent eternal redirecting.
            raise ImproperlyConfigured(
                _("Error finding Upload-Folder. Maybe it does not exist?"))
        redirect_url = reverse("fb_browse") + query_helper(query, "", "dir")
        return HttpResponseRedirect(redirect_url)
    abs_path = os.path.join(get_directory(), path)

    # INITIAL VARIABLES
    results_var = {
        'results_total': 0,
        'results_current': 0,
        'delete_total': 0,
        'images_total': 0,
        'select_total': 0
    }
    counter = {}
    for k, v in EXTENSIONS.items():
        counter[k] = 0

    dir_list, file_list = default_storage.listdir(abs_path)
    files = []
    for file in dir_list + file_list:

        # EXCLUDE FILES MATCHING ANY OF THE EXCLUDE PATTERNS
        filtered = not file or file.startswith('.')
        for re_prefix in filter_re:
            if re_prefix.search(file):
                filtered = True
        if filtered:
            continue
        results_var['results_total'] += 1

        # CREATE FILEOBJECT
        url_path = "/".join([
            s.strip("/") for s in [get_directory(), path, file] if s.strip("/")
        ])
        fileobject = FileObject(url_path)

        # FILTER / SEARCH
        append = False
        if fileobject.filetype == request.GET.get(
                'filter_type', fileobject.filetype) and get_filterdate(
                    request.GET.get('filter_date', ''), fileobject.date):
            append = True
        if request.GET.get('q') and not re.compile(
                request.GET.get('q').lower(), re.M).search(file.lower()):
            append = False

        # APPEND FILE_LIST
        if append:
            try:
                # COUNTER/RESULTS
                results_var['delete_total'] += 1
                if fileobject.filetype == 'Image':
                    results_var['images_total'] += 1
                if query.get('type') and query.get(
                        'type'
                ) in SELECT_FORMATS and fileobject.filetype in SELECT_FORMATS[
                        query.get('type')]:
                    results_var['select_total'] += 1
                elif not query.get('type'):
                    results_var['select_total'] += 1
            except OSError:
                # Ignore items that have problems
                continue
            else:
                files.append(fileobject)
                results_var['results_current'] += 1

        # COUNTER/RESULTS
        if fileobject.filetype:
            counter[fileobject.filetype] += 1

    # SORTING
    query['o'] = request.GET.get('o', DEFAULT_SORTING_BY)
    query['ot'] = request.GET.get('ot', DEFAULT_SORTING_ORDER)
    defaultValue = ''
    if query['o'] in ['date', 'filesize']:
        defaultValue = 0.0
    files = sorted(files, key=lambda f: getattr(f, query['o']) or defaultValue)
    if not request.GET.get(
            'ot') and DEFAULT_SORTING_ORDER == "desc" or request.GET.get(
                'ot') == "desc":
        files.reverse()

    p = Paginator(files, LIST_PER_PAGE)
    try:
        page_nr = request.GET.get('p', '1')
    except:
        page_nr = 1
    try:
        page = p.page(page_nr)
    except (EmptyPage, InvalidPage):
        page = p.page(p.num_pages)

    return render(
        request, 'filebrowser/index.html', {
            'dir': path,
            'p': p,
            'page': page,
            'results_var': results_var,
            'counter': counter,
            'query': query,
            'title': _(u'Media Library'),
            'settings_var': get_settings_var(),
            'breadcrumbs': get_breadcrumbs(query, path),
            'breadcrumbs_title': ""
        })
Exemplo n.º 17
0
def manage(request):
    "cron manage"
    getinfo=request.GET
    postinfo=request.POST
    if getinfo.has_key("data"):
        "json data "
        datatype=getinfo.get("data")
        if datatype=="table":
            "表格数据填充"
            pageindex=getinfo.get("page")
            pageindex=int(pageindex)
            rowsnum=getinfo.get("rows")
            rowsnum=int(rowsnum)
            task_queryset=  Task.objects.all()
            task_queryset= task_queryset.order_by("-tid")
            buff={}
            #buff["page"]=pageindex
            task_pagiobj=Paginator(task_queryset,rowsnum)
            buff["records"]=task_pagiobj.count
            buff["total"]=task_pagiobj.num_pages
            try:
                task_list=task_pagiobj.page(pageindex)
            except:
                task_list=task_pagiobj.page(task_pagiobj.num_pages)
            buff["page"]=task_list.number
            buff["rows"]=[{"cell":[i.tid,i.get_name(),i.get_status(),i.rule,"","",i.get_info(),i.owner ,i.ip]}  for i in task_list]
            return  HttpResponse(json.dumps(buff,ensure_ascii=False),mimetype="application/javascript")
    elif getinfo.has_key("ip"):
        #检索
        ip=getinfo.get("ip")
        status=getinfo.get("status")
        owner=getinfo.get("owner")
        info=getinfo.get("fn")
        rows=getinfo.get("rows","15")
        page=getinfo.get("page","1")
        def handleparam(ip,status,info,owner):
            result=locals()
            if ip=='':
                del result["ip"]
            if owner=="" or owner==None:
                del result["owner"]
            try:
                int(status)
            except:
                del result["status"]
            if info=='':
                del result["info"]
            if result.has_key("info"):
                del  result["info"]
                result["info__icontains"]=info
            return  result
        args=handleparam(ip,status,info,owner)
        task_queryset=Task.objects.filter(**args)
        task_queryset= task_queryset.order_by("-tid")
        task_pagiobj=Paginator(task_queryset,int(rows))
        buff={}
        buff["records"]=task_queryset.count()
        buff["total"]=task_pagiobj.num_pages
        try:
            task_list=task_pagiobj.page(int(page))
        except:
            task_list=task_pagiobj.page(1)
        buff["page"]=task_list.number
        buff["rows"]=[{"cell":[i.tid,i.get_name(),i.get_status(),i.rule,"","",i.get_info(),i.owner  ,i.ip]} for  i in task_list]
        return  HttpResponse(json.dumps(buff,ensure_ascii=False),mimetype="application/javascript")
        pass
    cronserve=CronServe.objects.all().order_by("ip")

    userinfo=User.objects.all().values("username")
    return  render_to_response("manage.html",locals(), context_instance=RequestContext(request))
Exemplo n.º 18
0
def object_list(request, queryset, paginate_by=None, page=None,
        allow_empty=True, template_name=None, template_loader=loader,
        extra_context=None, context_processors=None, template_object_name='object',
        mimetype=None):
    """
    Generic list of objects.

    Templates: ``<app_label>/<model_name>_list.html``
    Context:
        object_list
            list of objects
        is_paginated
            are the results paginated?
        results_per_page
            number of objects per page (if paginated)
        has_next
            is there a next page?
        has_previous
            is there a prev page?
        page
            the current page
        next
            the next page
        previous
            the previous page
        pages
            number of pages, total
        hits
            number of objects, total
        last_on_page
            the result number of the last of object in the
            object_list (1-indexed)
        first_on_page
            the result number of the first object in the
            object_list (1-indexed)
        page_range:
            A list of the page numbers (1-indexed).
    """
    if extra_context is None: extra_context = {}
    queryset = queryset._clone()

    if paginate_by:
        paginator = Paginator(queryset, paginate_by)

        page = request.GET.get('page')
        try:
            queryset = paginator.page(page)
        except PageNotAnInteger:
            # If page is not an integer, deliver first page.
            queryset = paginator.page(1)
        except EmptyPage:
            # If page is out of range, deliver last page of results.
            queryset = paginator.page(paginator.num_pages)

    context = {'%s_list' % template_object_name: annotate_exmo_perms(queryset, request.user)}
    if not allow_empty and len(queryset) == 0:
        raise Http404

    for key, value in extra_context.items():
        if callable(value):
            context[key] = value()
        else:
            context[key] = value
    if not template_name:
        model = queryset.model
        template_name = "%s/%s_list.html" % (model._meta.app_label, model._meta.object_name.lower())
    return TemplateResponse(request, template_name, context)
Exemplo n.º 19
0
def DataList(request, ModelName):
    dataModel = GetModel(ModelName)
    if not dataModel:
        return NoFound404Response(request)
    if dataModel == IclockMsg and 'msg' not in settings.ENABLED_MOD:
        return render_to_response(
            'info.html', {
                'title':
                _('Error'),
                'content':
                _('The server is not installed information services module!')
            })
    request.clear_employee = False
    if ModelName == 'employee' and request.REQUEST.has_key('SN__SN__exact'):
        request.clear_employee = True
    action = request.REQUEST.get('action', '')
    if len(action) > 0:
        checkAction = action
        if action == 'del':
            checkAction = 'delete'
        if not hasPerm(request.user, dataModel, checkAction):
            return getJSResponse('result=-2;errorInfo="%s"' %
                                 _('You do not have the permission!'))
        adminLog(User=request.user,
                 model=dataModel.__name__,
                 action=action,
                 object=('%s' % request.REQUEST.get('K', ''))[:40]).save()
        return doAction(action, request, dataModel)
    request.user.iclock_url_rel = '../..'
    if not hasPerm(request.user, dataModel, 'browse'):
        return render_to_response(
            'welcome_sys.html',
            RequestContext(request,
                           {'iclock_url_rel': request.user.iclock_url_rel}))
    request.model = dataModel
    qs, cl = QueryData(request, dataModel)
    fmt = request.REQUEST.get(EXPORT_VAR, '')
    if len(fmt) > 0:
        from mysite.iclock.datamisc import DataExport
        return DataExport(request, dataModel, qs, fmt)
    try:
        offset = int(request.GET.get(PAGE_VAR, 1))
    except:
        offset = 1
    else:
        limit = int(request.GET.get(PAGE_LIMIT_VAR, settings.PAGE_LIMIT))
        state = int(request.GET.get(STATE_VAR, -1))
        if dataModel == iclock:
            checkReboot(qs)
            if state != -1:
                return iclockPage(request, qs, offset, limit, cl, state)
        try:
            delOldCount = dataModel.delOld()[1]
        except:
            delOldCount = 0
        else:
            paginator = Paginator(qs, limit)
            item_count = paginator.count
            if offset > paginator.num_pages:
                offset = paginator.num_pages

        if offset < 1:
            offset = 1

    pgList = paginator.page(offset)
    fpcount = fptemp.objects.all().count()
    cc = {
        'latest_item_list': pgList.object_list,
        'from': (offset - 1) * limit + 1,
        'item_count': item_count,
        'page': offset,
        'limit': limit,
        'fpcount': fpcount,
        'page_count': paginator.num_pages,
        'title': (u'%s' % dataModel._meta.verbose_name).capitalize(),
        'dataOpt': dataModel._meta,
        'cl': cl,
        'delOldRecDays': delOldCount,
        'iclock_url_rel': request.user.iclock_url_rel
    }
    tmpFile = dataModel.__name__ + '_list.html'
    tmpFile = request.GET.get(TMP_VAR, tmpFile)
    try:
        if tmpFile[-3:] == '.js':
            t = loader.get_template(tmpFile)
            t_r = t.render(RequestContext(request, cc))
            return getJSResponse(smart_str(t_r))
        return render_to_response(tmpFile, cc, RequestContext(request, {}))
    except TemplateDoesNotExist:
        t = defListTemp(dataModel)
        t = Template(t)
        return HttpResponse(t.render(RequestContext(request, cc)))
Exemplo n.º 20
0
    def get(self, request, type_id, page):
        '''显示列表页'''
        # 先获取种类信息
        try:
            type = GoodsType.objects.get(id=type_id)
        except GoodsType.DoesNotExist:
            # 种类不存在
            return redirect(reverse("goods:index"))
        # 获取排序的方式
        sort = request.GET.get('sort')
        # 获取商品的分类信息
        types = GoodsType.objects.all()
        if sort == 'price':
            skus = GoodsSKU.objects.filter(type=type).order_by("price")
        elif sort == 'hot':
            skus = GoodsSKU.objects.filter(type=type).order_by("-sales")
        else:
            skus = GoodsSKU.objects.filter(type=type).order_by('-id')
            sort = 'default'
        paginator = Paginator(skus, 1)
        try:
            page = int(page)
        except Exception as e:
            page = 1
        if page > paginator.num_pages:
            page = 1
        skus_page = paginator.page(page)
        # 获取page页的内容
        # 1 总页数小于五页 页面上显示所有页码
        # 2 如果当前页是前三页 显示前五页的页码
        # 3 如果当前页是后三页 显示后五页的页码
        # 4 其他情况 显示当前页,当前页的前两页和后两页
        num_pages = paginator.num_pages
        if num_pages < 5:
            pages = range(1, num_pages + 1)
        elif page <= 3:
            pages = range(1, 6)
        elif num_pages - page <= 2:
            pages = range(num_pages - 4, num_pages + 1)
        else:
            pages = range(page - 2, page + 3)

        # 新品推荐
        new_skus = GoodsSKU.objects.filter(
            type=type).order_by('-create_time')[:2]
        # 购物车数目
        user = request.user
        cart_count = 0
        if user.is_authenticated:
            conn = get_redis_connection('default')
            cart_key = "cart_%d" % user.id
            cart_count = conn.hlen(cart_key)
        context = {
            'skus': skus,
            'type': type,
            'skus_page': skus_page,
            'cart_count': cart_count,
            'sort': sort,
            'types': types,
            'pages': pages,
            "new_skus": new_skus,
        }
        return render(request, 'search/indexes/list.html', context)
Exemplo n.º 21
0
def change_order(request):
    Order = ""
    Source = ""
    if request.method == 'POST':
        Ojname = request.POST.get("Ojname")
        Problem_id = request.POST.get("ProbNum")
        Title = request.POST.get("Title")
        Order = request.POST.get("Order")
        Source = request.POST.get("Source")
        Problem_type = request.POST.get("Problem_type")
    print(Source)
    if Order == "Problme_ASC" or Order is None:
        problems = Problem.objects.all().order_by("ojname", "sourceid")
    elif Order == "Problem_DESC":
        problems = Problem.objects.all().order_by("-sourceid")
    elif Order == "Total_ac_ASC":
        problems = Problem.objects.all().order_by("ac_rate")
    elif Order == "Total_ac_DESC":
        print("Total_ac_DESC")
        problems = Problem.objects.all().order_by("-ac_rate")
        print(len(problems))
    elif Order == "User_ac_ASC":
        problems = Problem.objects.all().order_by("user_ac_rate")
    elif Order == "User_ac_DESC":
        problems = Problem.objects.all().order_by("-user_ac_rate")
    elif Order == "Updata_time_ASC":
        problems = Problem.objects.all().order_by("Updata_time")
    elif Order == "Updata_time_DESC":
        problems = Problem.objects.all().order_by("-Updata_time")
    print("===1===")
    print(len(problems))
    print("===1===")
    if Ojname != "All":
        problems = problems.filter(ojname__exact=Ojname)
        print("===2===")
        print(len(problems))
        print("===2===")
    if Title is not None:
        problems = problems.filter(title__exact=Title)
        print("===3===")
        print(len(problems))
        print("===3===")
    if Source is not None and Source != "":
        problems = problems.filter(source__exact=Source)
        print("===4===")
        print(len(problems))
        print("===4===")
    if Problem_type is not None and Problem_type != "":
        problems = problems.filter(knowledge__exact=Problem_type)
        print("===5===")
        print(len(problems))
        print("===5===")
    if Problem_id is not None and Problem_id != "":
        problems = problems.filter(sourceid__exact=Problem_id)

    after_range_num = 5
    bevor_range_num = 4
    # 分页
    # 每页记录数
    problem_cnt_per_page = 20
    problem_page_list = Paginator(problems, problem_cnt_per_page)
    total_pages = problem_page_list.num_pages
    try:
        page = int(request.GET.get('page'))
    except:
        page = 1
    try:
        # 尝试获得分页列表
        problems_cur_page = problem_page_list.page(page)
    except EmptyPage:
        # 获得最后一页
        problems_cur_page = problem_page_list.page(problem_page_list.num_pages)
    # 如果不是一个整数
    except PageNotAnInteger:
        # 获得第一页
        problems_cur_page = problem_page_list.page(1)
    if page >= after_range_num:
        page_range = problem_page_list.page_range[page - after_range_num:page + bevor_range_num]
    else:
        page_range = problem_page_list.page_range[0:page + bevor_range_num]
    data_cont = {
        "page1st": page - 2,
        "page2ed": page - 1,
        "page3th": page,
        "page4th": page + 1 if page + 1 <= total_pages else 0,
        "page5th": page + 2 if page + 2 <= total_pages else 0,
        "page_last": total_pages,

        "title": "Problem List",
        "problems": problems_cur_page,
        "page_range": page_range,
    }

    return render(request, "mixojapp/problemlist.html", data_cont)
Exemplo n.º 22
0
def edit_group_view(request, group_id):
    try:
        group = Group.objects.get(id=group_id)
    except Group.DoesNotExist as e:
        raise http.Http404 from e

    if not request.user.can_manage_group(group):
        messages.error(request, "You must be a superuser on Ion to manage administrative groups")
        return redirect("eighth_admin_dashboard")

    if request.method == "POST":
        invalidate_model(Group)
        if group.name.lower().startswith("all students"):
            cache.delete("users:students")
        if "remove_all" in request.POST:
            users = group.user_set.all()
            num = users.count()
            for u in users:
                group.user_set.remove(u)
            group.save()
            invalidate_obj(group)
            messages.success(request, "Successfully deleted {} members of the group.".format(num))
            return redirect("eighth_admin_edit_group", group.id)
        form = GroupForm(request.POST, instance=group)
        if form.is_valid():
            if "student_visible" in form.cleaned_data:
                props = group.properties
                props.student_visible = form.cleaned_data["student_visible"]
                props.save()
                invalidate_obj(props)

            form.save()
            messages.success(request, "Successfully edited group.")
            return redirect("eighth_admin_dashboard")
        else:
            messages.error(request, "Error modifying group.")
    else:
        form = GroupForm(instance=group, initial={"student_visible": group.properties.student_visible})

    student_query = None
    if request.method == "GET":
        student_query = request.GET.get("q", None)

    if not student_query:
        users = group.user_set.all()  # Order not strictly alphabetical
    else:
        ion_ids = [sid.strip() for sid in student_query.split(",")]
        users = group.user_set.filter(username__in=ion_ids)
    users = users.order_by("username", "first_name", "last_name", "student_id")
    p = Paginator(users, 100)  # Paginating to limit LDAP queries (slow)

    page_num = request.GET.get("p", 1)
    try:
        page = p.page(page_num)
    except PageNotAnInteger:
        page = p.page(1)
    except EmptyPage:
        page = p.page(p.num_pages)
    members = []
    for user in page:
        grade = user.grade
        members.append(
            {
                "id": user.id,
                "first_name": user.first_name,
                "last_name": user.last_name,
                "student_id": user.student_id,
                "email": user.tj_email,
                "grade": grade.number if user.grade and not user.grade.number == 13 else "Staff",
            }
        )
    members = sorted(members, key=lambda m: (m["last_name"], m["first_name"]))
    linked_activities = EighthActivity.objects.filter(groups_allowed=group)

    def parse_int(value):
        try:
            return int(value)
        except ValueError:
            return None

    context = {
        "group": group,
        "members": members,
        "member_count": users.count(),
        "members_page": page,
        "edit_form": form,
        "added_ids": [parse_int(x) for x in request.GET.getlist("added")],
        "linked_activities": linked_activities,
        "admin_page_title": "Edit Group",
        "delete_url": reverse("eighth_admin_delete_group", args=[group_id]),
    }

    if "possible_student" in request.GET:
        student_ids = request.GET.getlist("possible_student")
        possible_students = get_user_model().objects.get(id__in=student_ids)
        context["possible_students"] = possible_students

    return render(request, "eighth/admin/edit_group.html", context)
Exemplo n.º 23
0
def products_inline(request, product_group_id, as_string=False,
    template_name="manage/property_groups/products_inline.html"):
    """Renders the products tab of the property groups management views.
    """
    property_group = PropertyGroup.objects.get(pk=product_group_id)
    group_products = property_group.products.all()
    group_product_ids = [p.id for p in group_products]

    r = request.REQUEST
    s = request.session

    # If we get the parameter ``keep-filters`` or ``page`` we take the
    # filters out of the request resp. session. The request takes precedence.
    # The page parameter is given if the user clicks on the next/previous page
    # links. The ``keep-filters`` parameters is given is the users adds/removes
    # products. In this way we keeps the current filters when we needed to. If
    # the whole page is reloaded there is no ``keep-filters`` or ``page`` and
    # all filters are reset as they should.

    if r.get("keep-filters") or r.get("page"):
        page = r.get("page", s.get("property_group_page", 1))
        filter_ = r.get("filter", s.get("filter"))
        category_filter = r.get("products_category_filter",
                          s.get("products_category_filter"))
    else:
        page = r.get("page", 1)
        filter_ = r.get("filter")
        category_filter = r.get("products_category_filter")

    # The current filters are saved in any case for later use.
    s["property_group_page"] = page
    s["filter"] = filter_
    s["products_category_filter"] = category_filter

    filters = Q()
    if filter_:
        filters &= Q(name__icontains=filter_)
    if category_filter:
        if category_filter == "None":
            filters &= Q(categories=None)
        elif category_filter == "All":
            pass
        else:
            # First we collect all sub categories and using the `in` operator
            category = lfs_get_object_or_404(Category, pk=category_filter)
            categories = [category]
            categories.extend(category.get_all_children())

            filters &= Q(categories__in=categories)

    products = Product.objects.filter(filters)
    paginator = Paginator(products.exclude(pk__in=group_product_ids), 25)

    try:
        page = paginator.page(page)
    except EmptyPage:
        page = 0

    result = render_to_string(template_name, RequestContext(request, {
        "property_group": property_group,
        "group_products": group_products,
        "page": page,
        "paginator": paginator,
        "filter": filter_
    }))

    if as_string:
        return result
    else:
        return HttpResponse(
            simplejson.dumps({
                "html": [["#products-inline", result]],
            }))
Exemplo n.º 24
0
def search(request, project=None, component=None, lang=None):
    """Perform site-wide search on units."""
    if not check_rate_limit('search', request):
        search_form = SiteSearchForm()
    else:
        search_form = SiteSearchForm(request.GET)
    context = {
        'search_form': search_form,
    }
    search_kwargs = {}
    if component:
        obj = get_component(request, project, component)
        context['component'] = obj
        context['project'] = obj.project
        context['back_url'] = obj.get_absolute_url()
        search_kwargs = {'component': obj}
    elif project:
        obj = get_project(request, project)
        context['project'] = obj
        context['back_url'] = obj.get_absolute_url()
        search_kwargs = {'project': obj}
    else:
        obj = None
        context['back_url'] = None
    if lang:
        s_language = get_object_or_404(Language, code=lang)
        context['language'] = s_language
        search_kwargs = {'language': s_language}
        if obj:
            if component:
                context['back_url'] = obj.translation_set.get(
                    language=s_language
                ).get_absolute_url()
            else:
                context['back_url'] = reverse(
                    'project-language',
                    kwargs={
                        'project': project,
                        'lang': lang,
                    }
                )
        else:
            context['back_url'] = s_language.get_absolute_url()

    if search_form.is_valid():
        # Filter results by ACL
        if component:
            units = Unit.objects.filter(translation__component=obj)
        elif project:
            units = Unit.objects.filter(translation__component__project=obj)
        else:
            allowed_projects = request.user.allowed_projects
            units = Unit.objects.filter(
                translation__component__project__in=allowed_projects
            )
        units = units.search(
            search_form.cleaned_data,
            **search_kwargs
        )
        if lang:
            units = units.filter(
                translation__language=context['language']
            )

        page, limit = get_page_limit(request, 50)

        paginator = Paginator(units, limit)

        try:
            units = paginator.page(page)
        except EmptyPage:
            # If page is out of range (e.g. 9999), deliver last page of
            # results.
            units = paginator.page(paginator.num_pages)

        context['page_obj'] = units
        context['title'] = _('Search for %s') % (
            search_form.cleaned_data['q']
        )
        context['query_string'] = search_form.urlencode()
        context['search_query'] = search_form.cleaned_data['q']
    else:
        messages.error(request, _('Invalid search query!'))

    return render(
        request,
        'search.html',
        context
    )
Exemplo n.º 25
0
def timing_manage_list(request):
    try:
        logger.debug("current job status: {0}".format(scheduler.print_jobs()))
    except:
        error = traceback.format_exc()
        logger.error(error)
        print error
    name = request.GET.get('name', None)
    creator = request.GET.get('creator', None)
    executor = request.GET.get('executor', None)
    note = request.GET.get('note', None)
    status = request.GET.get('status', None)
    stime = request.GET.get('stime', None)
    etime = request.GET.get('etime', None)

    iDisplayLength = int(request.GET.get('iDisplayLength'))
    iDisplayStart = int(request.GET.get('iDisplayStart'))
    sEcho = int(request.GET.get('sEcho'))
    iSortCol_0 = int(request.GET.get('iSortCol_0',0))
    sSortDir_0 = request.GET.get('sSortDir_0')
    order_list = [ None, None, None, None, None, None, None, None, None]
    order_item = order_list[iSortCol_0]
    user = request.user
    jobs = _job.ScheduleJobs.objects.filter(creator=user).exclude(status=SCHEDULE_STATUS_DELETE)

    # 查询
    if name:
        jobs = jobs.filter(job__name__icontains=name)
    if note:
        jobs = jobs.filter(note__icontains=note)
    one_day = datetime.timedelta(days=1)
    if creator:
        jobs = jobs.filter(creator__username__icontains=creator)
    if executor:
        jobs = jobs.filter(executor__username__icontains=executor)
    if status and status != "all":
        status = SCHEDULE_STATUS_STARTED if status == 'start' else SCHEDULE_STATUS_PAUSE if status == "pause" else SCHEDULE_STATUS_FINISHED
        jobs = jobs.filter(status__eq=status)
    if stime:
        jobs = jobs.filter(created__gte=stime)
    if etime:
        created_to = datetime.datetime.strptime(etime, '%Y-%m-%d')
        jobs = jobs.filter(created__lte=(created_to + one_day))
    
    #排序
    if order_item:
        if sSortDir_0 == "desc":
            order_item = '-%s' % order_item
        jobs = jobs.order_by(order_item)
    else:
        jobs = jobs.order_by("-updated")
    
    p = Paginator(jobs, iDisplayLength)
    total = p.count #总数
    page_range = p.page_range #页数list
    page = p.page(page_range[iDisplayStart / iDisplayLength])
    object_list = page.object_list
    
    sdicts = {}
    sdicts["sEcho"] = sEcho
    sdicts["iTotalRecords"] = total
    sdicts["iTotalDisplayRecords"] = total
    sdicts["aaData"] = []
    for obj in object_list:
        template_name = u'<a style="color: blue;" href="javascript:void(0)" onclick="template_view(\'%s\');">%s</a>' % (obj.job.template.id, obj.job.template.name)
        job_name = '<a style="color: blue;" href="javascript:void(0)" onclick="javascript:job_view(\'%s\');">%s</a>' % (obj.job.id, obj.job.name)
        operation = u'<a href="javascript:void(0);" onclick="show_schedule_edit(\'{0}\')" data-toggle="modal" data-target="#modify_timing">修改</a>&nbsp;<a href="javascript:void(0);" onclick="schedule_delete(\'{0}\')">删除</a>&nbsp;<a href="javascript:void(0);" onclick="schedule_toggle(\'{0}\',\'{2}\')">{1}</a>'.format(obj.id, u'启动' if obj.status == SCHEDULE_STATUS_PAUSE else u"暂停",'resume' if obj.status == SCHEDULE_STATUS_PAUSE else u"pause")

        data = [job_name, obj.job.template.work_type or u"未分类", obj.expression, obj.get_status_display(),
                obj.note, obj.executor.username,obj.creator.username,obj.created.strftime(TIME_FMT),operation]
        sdicts["aaData"].append(data)
    return HttpResponse(json.dumps(sdicts, cls=LazyEncoder))
Exemplo n.º 26
0
def index(request):
    queryset = Bbs.objects.all().order_by("-top", "-create_time")
    paginator = Paginator(queryset, 10)
    page_num = request.GET.get("page", 1)
    page = paginator.get_page(page_num)
    return render(request, "bbs.html", {"data": page})
Exemplo n.º 27
0
 def get_paginator(self, queryset, page_size):
     """
     Returns a paginator instance.
     """
     return Paginator(queryset, page_size)
Exemplo n.º 28
0
    def get(self, request, type_id, page):
        try:
            type = GoodsType.objects.get(id=type_id)
        except GoodsType.DoesNotExist:
            return redirect(reverse('goods:index'))
        # 获取分类商品信息
        types = GoodsSKU.objects.filter(type=type)
        # 获取排序方式
        # sort = default 按照默认id排序
        # sort = price 按照价格排序
        # sort = hot 按照商品销量排序
        # 获取商品的分类信息
        sort = request.GET.get('sort')
        # 降序 从高到底
        if sort == 'price':
            skus = GoodsType.objects.filter(type=type).order_by(
                'price')  # 升序 从低祷告
        elif sort == 'hot':
            skus = GoodsType.objects.filter(type=type).order_by(
                '-hot')  # 降序 从高到低
        else:
            skus = GoodsType.objects.filter(type=type).order_by('-id')

        # 对数据进行分页
        paginator = Paginator(skus, 1)

        # 获取第page页内容
        try:
            page = int(page)
        except Exception as e:
            page = 1

        if page > paginator.num_pages:
            page = 1

        # 获取第page页的page实例对象
        skus_page = paginator.page(page)

        # 1.总页数小于5页 显示全部页面
        # 2.如果当前页面是前三页,显示前五页的页码
        # 3.如果当前页是后三页,显示后五页
        # 4.其他情况,显示当前页的前两页和当前页的后两页
        num_pages = paginator.num_pages
        if num_pages < 5:
            pages = range(1, num_pages + 1)
        elif page <= 3:
            pages = range(1, 6)
        elif num_pages - page <= 2:
            pages = range(num_pages - 4, num_pages)
        else:
            pages = range(page - 2, page + 3)

        # 获取新品信息
        new_sku = GoodsSKU.objects.filter(type=type).order_by('-create_time')

        # 获取用户购物车中的商品数目
        user = request.user
        cart_count = 0
        if user.is_authenticated:
            conn = get_redis_connection('default')
            cart_key = 'cart_%d' % user.id
            cart_count = conn.hlen(cart_key)

        # 组织模板上下文
        context = {
            'type': type,
            'types': types,
            'skus_page': skus_page,
            'cart_count': cart_count,
            'pages': pages,
            'sort': sort
        }

        return render(request, 'list.html', context)
Exemplo n.º 29
0
def qpool_home(request, cat='qotd', page=u'1', tag=None):
    categories = Category.objects.all()

    qs = get_questions_with_category(str(cat), active_only=False,
                                     endorsed_only=False)
    if tag:
        tag = get_object_or_404(Tag, pk=tag, category__name=cat)
        qs = qs.filter(tags=tag)

    if request.GET.get('q'):
        # This is a search query
        query = request.GET.get('q')
        qs = qs.filter(text__icontains=query)
    else:
        query = ''

    category = get_object_or_404(Category, name=cat)
    session_filter_name = 'tag_filters_%s' % category.name
    tag_filters = request.session.get(session_filter_name, [])
    if request.GET.get('addtagfilter'):
        tag = get_object_or_404(Tag, pk=request.GET.get('addtagfilter'))
        tag_filters.append(tag.id)
    if request.GET.get('remtagfilter'):
        tag = get_object_or_404(Tag, pk=request.GET.get('remtagfilter'))
        if tag.id in tag_filters:
            tag_filters.remove(tag.id)
    request.session[session_filter_name] = tag_filters
    if tag_filters:
        qs = qs.filter(tags__in=tag_filters)

    prop_filter_name = 'prop_filters_%s' % category.name
    prop_filters = request.session.get(prop_filter_name, [])
    if request.GET.get('addpropfilter'):
        prop_filters.append(request.GET.get('addpropfilter'))
    if request.GET.get('rempropfilter'):
        f = request.GET.get('rempropfilter')
        if f in prop_filters:
            prop_filters.remove(f)
    request.session[prop_filter_name] = prop_filters
    if 'active' in prop_filters:
        qs = qs.filter(active=True)

    # Ordering
    if cat == 'qotd':
        qs = qs.order_by('schedule__day')

    # Pagination
    perpage = request.session.get('qpool_perpage', 15)
    if request.GET.get('changeperpage'):
        perpage = int(request.GET.get('changeperpage'))
    request.session['qpool_perpage'] = perpage
    paginator = Paginator(qs, perpage)
    try:
        q_page = paginator.page(page)
    except (EmptyPage, InvalidPage):
        q_page = paginator.page(paginator.num_pages)

    return render_to_response('cpanel/qpool_home.html',
                              {'q_page': q_page,
                               'categs': categories,
                               'category': category,
                               'tag_filters': tag_filters,
                               'prop_filters': prop_filters,
                               'cat': cat,
                               'search_query': query,
                               'perpage_options': (15, 50, 100),
                               'module': 'qpool',
                               'today': str(datetime.date.today())},
                              context_instance=RequestContext(request))
Exemplo n.º 30
0
    def get(self, request, type_id, page):
        '''显示列表页'''
        # 获取种类信息
        try:
            type = GoodsType.objects.get(id=type_id)
        except GoodsType.DoesNotExist:
            # 种类不存在
            return redirect(reverse('goods:index'))

        # 获取商品的分类信息
        types = GoodsType.objects.all()

        # 获取排序的方式 # 获取分类商品的信息
        # sort=default 按照默认id排序
        # sort=price 按照商品价格排序
        # sort=hot 按照商品销量排序
        sort = request.GET.get('sort')

        if sort == 'price':
            skus = GoodsSKU.objects.filter(type=type).order_by('price')
        elif sort == 'hot':
            skus = GoodsSKU.objects.filter(type=type).order_by('-sales')
        else:
            sort = 'default'
            skus = GoodsSKU.objects.filter(type=type).order_by('-id')

        # 对数据进行分页
        paginator = Paginator(skus, 1)

        # 获取第page页的内容
        try:
            page = int(page)
        except Exception as e:
            page = 1

        if page > paginator.num_pages:
            page = 1

        # 获取第page页的Page实例对象
        skus_page = paginator.page(page)

        # todo: 进行页码的控制,页面上最多显示5个页码
        # 1.总页数小于5页,页面上显示所有页码
        # 2.如果当前页是前3页,显示1-5页
        # 3.如果当前页是后3页,显示后5页
        # 4.其他情况,显示当前页的前2页,当前页,当前页的后2页
        num_pages = paginator.num_pages
        if num_pages < 5:
            pages = range(1, num_pages + 1)
        elif page <= 3:
            pages = range(1, 6)
        elif num_pages - page <= 2:
            pages = range(num_pages - 4, num_pages + 1)
        else:
            pages = range(page - 2, page + 3)

        # 获取新品信息
        new_skus = GoodsSKU.objects.filter(
            type=type).order_by('-create_time')[:2]

        # 获取用户购物车中商品的数目
        user = request.user
        cart_count = 0
        if user.is_authenticated:
            # 用户已登录
            conn = get_redis_connection('default')
            cart_key = 'cart_%d' % user.id
            cart_count = conn.hlen(cart_key)

        # 组织模板上下文
        context = {
            'type': type,
            'types': types,
            'skus_page': skus_page,
            'new_skus': new_skus,
            'cart_count': cart_count,
            'pages': pages,
            'sort': sort
        }

        # 使用模板
        return render(request, 'list.html', context)