def all_projects(request, pagenum=1, key=None): rc = request.rc rc.pagename = 'Projects' rc.bodymenus = build_body_nav_menu('all') pagenum = int(pagenum) if request.method == 'POST': q = request.POST.get('q', None) return redirect(SITE_ROOT + '/all/1/' + q) # # get project # if key is not None: q = Q(name__icontains=key) | Q(title__icontains=key) else: q = Q() q = q & Q(status=consts.PROJECT_ENABLE, is_public=1) key_text = key and key.encode('utf8') or '' build_page(rc, Project, q, pagenum, '/all', key_text, order=['-ctime']) update_my_project_status(request, rc.page.object_list) rc.all_projects = True rc.prjs = rc.page.object_list rc.key_text = key_text return send_response(request, 'project/list.html')
def opensources_list(request, pagenum=1, key=None): rc = request.rc pagenum = int(pagenum) key = None if request.method == 'POST': pagenum = int(request.POST.get('jump', pagenum)) key = request.POST.get('q', None) if key is not None: q = Q(subject__icontains=key) else: q = Q() key_text = key and key.encode('utf8') or '' build_page(rc, AliProject, q, pagenum, '/opensources', key_text, order=['-ctime']) for prj in rc.page.object_list: prj.users = [ u.name for u in AliProjectUser.objects.filter(project=prj) ] rc.projectCount = len(AliProject.objects.all()) rc.peopleCount = AliProjectUser.objects.values('name').distinct().count() rc.opensources = rc.page.object_list rc.key_text = key_text return send_response(request, 'main/opensources.html')
def all_projects(request, pagenum=1, key=None): rc = request.rc rc.pagename = 'Projects' rc.pageindex='allproject' rc.bodymenus = build_body_nav_menu('all') pagenum = int(pagenum) if request.method == 'POST': q = request.POST.get('q', None) return redirect(SITE_ROOT + '/all/1/'+q) # # get project # if key is not None: q = Q(name__icontains=key) | Q(title__icontains=key) else: q = Q() q = q & Q(status = consts.PROJECT_ENABLE, is_public=True) key_text = key and key.encode('utf8') or '' build_page(rc, Project, q, pagenum, '/all', key_text, order=['-ctime']) update_my_project_status(request, rc.page.object_list) rc.all_projects = True rc.prjs = rc.page.object_list rc.key_text = key_text return send_response(request, 'project/list.html')
def project_info(request, name, pagenum=1, key=None): if request.method == 'POST': pagenum = request.POST.get('jump', None) pagenum = int(pagenum) project = q_get(Project, name=name) resp = can_access(project, request.user) if resp != None: return resp rc = request.rc rc.pagename = 'Info' rc.project = project rc.logs = get_prj_activitys(project) rc.members = q_gets(ProjectMember, project=project, member_type=consts.PM_ACCEPT_INV) update_my_project_status(request, [project]) rc.navmenusSource = build_prj_nav_menu(request, project, 'info') rc.REPOS = svn.REPOS(project.part, name, '/trunk') q = Q(project=project) build_page( rc, Activity, q, pagenum, '/p/{0}/{1}'.format(name, 'info'), order=['-ctime'], ) cc = [] for i in rc.page.object_list: if i.act_type == 'new_commit': cc = i.content.split(' ') rev = cc[0] tmp = cc[1:len(cc)] msg = ' '.join(tmp) i.commit = {'rev': int(rev), 'msg': msg} return send_response(request, 'project/view.html')
def lang_project_all(request, pagenum=1): rc = request.rc rc.current_page = "language" pn = int(pagenum) if pn <= 0: pn = 1 q = Q() q = q & Q(status=consts.PROJECT_ENABLE, is_public=1) build_page(rc, Project, q, pn, '/project/lang/list', "", order=['-ctime']) update_my_project_status(request, rc.page.object_list) update_proj_info(rc.page.object_list) rc.projs = rc.page.object_list rc.langs = consts.LANGS return send_response(request, 'project/lang-proj.html')
def show_box(request, name='inbox', pagenum=1): # # if name not in ('inbox', 'outbox', 'trashbox'): name = 'inbox' if request.method == 'POST' and request.POST.get('jump') is not None: pagenum = request.POST.get('jump') rc = request.rc rc.pagename = name rc.boxname = name rc.navmenusMsg = build_menu(navitems, name) if name == 'inbox': #inbox q = Q(owner=request.user, reader_status=consts.MSG_READER_INBOX) order = ('is_read', '-send_time') elif name == 'outbox': #outbox q = Q(sender=request.user, sender_status=consts.MSG_SENDER_OUTBOX) order = ('-send_time', ) else: #trashbox q = Q(owner=request.user, reader_status=consts.MSG_READER_TRASHBOX) q = q | Q(sender=request.user, sender_status=consts.MSG_SENDER_TRASHBOX) order = ('-read_time', ) build_page(rc, Message, q, int(pagenum), '/msg/' + name, page_count=5, order=order) if name == 'inbox': for m in rc.page.object_list: if m.is_read is False: m.is_read = True m.save() m.is_read = False return send_response(request, 'message/list.html')
def show_box(request, name='inbox', pagenum=1): # # if name not in ('inbox', 'outbox', 'trashbox'): name = 'inbox' rc = request.rc rc.pagename = name rc.boxname = name rc.navmenus = build_menu(navitems, name) if name == 'inbox':#inbox q = Q(owner = request.user, reader_status = consts.MSG_READER_INBOX) order = ('is_read', '-send_time') elif name == 'outbox': #outbox q = Q(sender = request.user, sender_status = consts.MSG_SENDER_OUTBOX) order = ('-send_time',) else: #trashbox q = Q(owner = request.user, reader_status = consts.MSG_READER_TRASHBOX) q = q | Q(sender = request.user, sender_status = consts.MSG_SENDER_TRASHBOX) order = ('-read_time',) build_page(rc, Message, q, int(pagenum), '/msg/'+name, page_count=5, order=order) if name == 'inbox': for m in rc.page.object_list: if m.is_read is False: m.is_read = True m.save() m.is_read = False rc.navmenus = build_user_nav_menu('msg') rc.leftmenus=build_user_left_menu('msg') return send_response(request, 'message/list.html')
def query_issues(request, name, pagenum, key, st=None): rc = request.rc project = q_get(Project, name=name) rc.navmenus = build_prj_nav_menu(request, project, 'issues') rc.bodymenus = [{ 'uri': 'issues/', 'text': 'all' }, { 'uri': 'issues/opened/', 'text': 'opened' }, { 'uri': 'issues/closed/', 'text': 'closed' }] prefix = 'issues' if st == consts.ISSUE_OPEN: rc.pagename = "Opened issues" prefix += '/opened' rc.bodymenus[1]['choice'] = True elif st == consts.ISSUE_CLOSED: rc.pagename = "Closed issues" prefix += '/closed' rc.bodymenus[2]['choice'] = True else: rc.pagename = "All issues" rc.bodymenus[0]['choice'] = True if request.method == 'POST': q = request.POST.get('q', None) return redirect(SITE_ROOT + '/p/%s/%s/1/%s' % (name, prefix, q)) resp = can_access(project, request.user) if resp != None: return resp rc.project_name = name rc.project = project update_my_project_status(request, [rc.project]) if project is None: return send_response(request, 'project/notfound.html') pagenum = int(pagenum) if key is not None: q = Q(Q(project=project), Q(Q(title__contains=key) | Q(content__contains=key))) else: q = Q(project=project) if st is not None: q = q & Q(status=st) q = q & ~Q(status=consts.ISSUE_DELETED) key_text = key and key.encode('utf8') or '' build_page(rc, Issue, q, pagenum, '/p/{0}/{1}'.format(name, prefix), key_text, order=['-mtime']) for i in rc.page.object_list: if request.user in (project.owner, i.creator): i.can_op = True else: i.can_op = False vls = IssueComment.objects.filter(issue=i).values('id').annotate( ic=Count("id")) i.comments_count = (len(vls) > 0 and vls[0]['ic'] or 0) rc.key_text = key_text return send_response(request, 'issue/list.html')
def search(request, pagenum=1, type='user', key=None): rc = request.rc rc.t = type ptype = 'Project' if request.method == 'POST' and request.POST.get('jump') is not None: pagenum = request.POST.get('jump') else: if request.method == 'POST': qq = request.POST.get('q', None) type = request.POST.get('type', None) return redirect(SITE_ROOT + '/search/' + type + '/1/' + qq) pagenum = int(pagenum) if type == 'user': ptype = 'User' if key is not None: q = Q(name__icontains=key) else: rc.ptype = 'error' return send_response(request, 'main/search.html') elif type == 'project': if key is not None: q = Q(name__icontains=key) | Q(title__icontains=key) else: q = Q() q = q & Q(status=consts.PROJECT_ENABLE, is_public=True) elif type == 'language': if key is not None: q = Q(language__icontains=key) else: q = Q() q = q & Q(status=consts.PROJECT_ENABLE, is_public=True) tmpkey = key key_text = tmpkey and tmpkey.encode('utf8') or '' key = key and key.encode('utf8') or '' if type == 'user': build_page(rc, User, q, pagenum, '/search/user', key_text, order=['-ctime'], page_count=40) rc.users = rc.page.object_list else: build_page(rc, Project, q, pagenum, '/search/{0}'.format(type), key_text, order=['-ctime']) update_my_project_status(request, rc.page.object_list) rc.all_projects = True rc.prjs = rc.page.object_list if len(rc.page.object_list) <= 0: ptype = "nothing" rc.key = key rc.ptype = ptype return send_response(request, 'main/search.html')
def list_projects(request, pt, pagenum=1): rc = request.rc rc.pagename = 'Projects' rc.bodymenus = build_body_nav_menu(pt) if request.method == 'POST': pagenum = int(request.POST.get('jump')) q = Q( status=consts.PROJECT_ENABLE, is_public=1, ) od = [] totals = 0 if pt == 'hot': rc.current_page = "hot" pn = int(pagenum) if pn <= 0: pn = 1 pos = consts.PAGE_SIZE * (pn - 1) ps = Project.objects.filter( status=consts.PROJECT_ENABLE, is_public=1).values("id").annotate( uc=Sum('click')).filter(uc__gt=0).order_by('-uc')[pos:pos + 50] totals = total_models(Project, ps, 'id', 'uc') prjs = sort_models(Project, ps, 'id', 'uc') prjsgraph = build_project_graph(Project, ps, 'id', 'uc', totals, _("total_visit_times")) elif pt == 'newest': rc.current_page = "newest" pn = int(pagenum) if pn <= 0: pn = 1 pos = consts.PAGE_SIZE * (pn - 1) prjs = Project.objects.filter(status=consts.PROJECT_ENABLE, is_public=1).order_by('-ctime')[pos:pos + 50] update_my_project_status(request, prjs) key = None q = q & Q(status=consts.PROJECT_ENABLE, is_public=1) key_text = key and key.encode('utf8') or '' build_page(rc, Project, q, pagenum, '/newest', key_text, page_count=consts.PAGE_SIZE, order=['-ctime']) rc.prjs = prjs return send_response(request, 'project/list.html') elif pt == 'random': prj_count = Project.objects.filter(status=consts.PROJECT_ENABLE, is_public=1).count() pos = randint(0, prj_count) prjs = Project.objects.filter(status=consts.PROJECT_ENABLE, is_public=1)[pos:pos + 10] elif pt == 'watched': rc.current_page = "watched" pn = int(pagenum) if pn <= 0: pn = 1 pos = consts.PAGE_SIZE * (pn - 1) ps = ProjectWatcher.objects.filter( project__is_public=1).values("project").annotate( uc=Count('user')).filter(uc__gt=0).order_by('-uc')[pos:pos + 50] totals = total_models(Project, ps, 'project', 'uc') prjs = Project.objects.filter(pk__in=[h['project'] for h in ps]) prjsgraph = build_project_graph(Project, ps, 'project', 'uc', totals, _("total_watched_times")) elif pt == 'issuetimes': rc.current_page = "issuetimes" pn = int(pagenum) if pn <= 0: pn = 1 pos = consts.PAGE_SIZE * (pn - 1) ps = Issue.objects.filter( project__is_public=1).values("project").annotate( uc=Count("title")).filter(uc__gt=0).order_by('-uc')[pos:pos + 50] totals = total_models(Project, ps, 'project', 'uc') prjs = Project.objects.filter(pk__in=[h['project'] for h in ps]) prjsgraph = build_project_graph(Project, ps, 'project', 'uc', totals, _("total_issue_times")) elif pt == 'committimes': rc.current_page = "committimes" pn = int(pagenum) if pn <= 0: pn = 1 pos = consts.PAGE_SIZE * (pn - 1) ps = Activity.objects.filter( project__is_public=1, act_type='new_commit').values("project").annotate( uc=Count('user')).filter(uc__gt=0).order_by("-uc")[pos:pos + 50] totals = total_models(Project, ps, 'project', 'uc') prjs = Project.objects.filter(pk__in=[h['project'] for h in ps]) prjsgraph = build_project_graph(Project, ps, 'project', 'uc', totals, _("total_submit_times")) elif pt == 'downloadtimes': rc.current_page = "downloadtimes" pn = int(pagenum) if pn <= 0: pn = 1 pos = consts.PAGE_SIZE * (pn - 1) ps = ProjectReport.objects.filter(project__status = consts.PROJECT_ENABLE, project__is_public=1).values('project')\ .annotate(uc=Sum('download_times'))[pos:pos + 50] totals = total_models(Project, ps, 'project', 'uc') prjs = Project.objects.filter(pk__in=[h['project'] for h in ps]) prjsgraph = build_project_graph(Project, ps, 'project', 'uc', totals, _("total_download_times")) update_my_project_status(request, prjs) rc.prjs = prjs rc.prjsgraph = prjsgraph return send_response(request, 'project/projectGraph.html')
def query_issues(request, name, pagenum, key, st=None): rc = request.rc project = q_get(Project, name=name) rc.navmenus = build_prj_nav_menu(request, project, 'issues') rc.bodymenus = [{'uri':'issues/', 'text':'all'}, {'uri':'issues/opened/', 'text':'opened'}, {'uri':'issues/closed/', 'text':'closed'}] prefix = 'issues' if st == consts.ISSUE_OPEN: rc.pagename = "Opened issues" prefix += '/opened' rc.bodymenus[1]['choice'] = True elif st == consts.ISSUE_CLOSED: rc.pagename = "Closed issues" prefix += '/closed' rc.bodymenus[2]['choice'] = True else: rc.pagename = "All issues" rc.bodymenus[0]['choice'] = True if request.method == 'POST': q = request.POST.get('q', None) return redirect(SITE_ROOT + '/p/%s/%s/1/%s'%(name, prefix, q)) resp = can_access(project, request.user) if resp != None: return resp rc.project_name = name rc.project = project update_my_project_status(request,[rc.project]) if project is None: return send_response(request, 'project/notfound.html') pagenum = int(pagenum) if key is not None: q = Q(Q(project=project), Q(Q(title__contains=key) | Q(content__contains=key))) else: q = Q(project=project) if st is not None: q = q & Q(status = st) q = q & ~Q(status = consts.ISSUE_DELETED) key_text = key and key.encode('utf8') or '' build_page(rc, Issue, q, pagenum, '/p/{0}/{1}'.format(name, prefix), key_text, order=['-mtime']) for i in rc.page.object_list: if request.user in (project.owner, i.creator): i.can_op = True else: i.can_op = False vls = IssueComment.objects.filter(issue=i).values('id').annotate(ic = Count("id")) i.comments_count = (len(vls) > 0 and vls[0]['ic'] or 0) rc.key_text = key_text return send_response(request, 'issue/list.html')