Ejemplo n.º 1
0
def update_cache(sender, instance, **kwargs):
    # instance is a DenormalizedBallot object
    cc = CacheControl()
    if instance.is_open:
        cc.open_ver = cc.open_ver + 1
    else:
        cc.closed_ver = cc.closed_ver + 1
Ejemplo n.º 2
0
def wg_page(request, export=None):
    if request.GET.get('refresh'):
        for b in Ballot.objects.filter(ballot_type=Ballot.WGInitial.code):
            DenormalizedBallot.request_update(ballot_pk=b.number)
        for b in Ballot.objects.filter(ballot_type=Ballot.WGRecirc.code):
            DenormalizedBallot.request_update(ballot_pk=b.number)
        return http.HttpResponseRedirect(reverse('ballot.views.wg_page'))
    next_page = reverse('ballot.views.wg_page')
    if request.GET.get('redraw', None) is not None:
        try:
            redraw = int(request.GET.get('redraw', 0))
        except ValueError:
            redraw = 0
        cc = CacheControl()
        if redraw == 0:
            cc.open_ver = cc.open_ver + 1
        elif redraw == 1:
            cc.closed_ver = cc.closed_ver + 1
        return http.HttpResponseRedirect(next_page)
    ballots = list(
        DenormalizedBallot.objects.filter(
            ballot_type=DenormalizedBallot.WGInitial.code)) + list(
                DenormalizedBallot.objects.filter(
                    ballot_type=DenormalizedBallot.WGRecirc.code)) + list(
                        DenormalizedBallot.objects.filter(
                            ballot_type=DenormalizedBallot.Procedural.code))
    return ballot_page(request,
                       ballots,
                       export,
                       sponsor=False,
                       next=next_page,
                       export_page='LetterBallots')
Ejemplo n.º 3
0
def update_cache(sender, instance, **kwargs):
    # instance is a DenormalizedBallot object
    cc = CacheControl()
    if instance.is_open:
        cc.open_ver = cc.open_ver+1
    else:
        cc.closed_ver = cc.closed_ver+1
Ejemplo n.º 4
0
def main_page(request, export=None):
    if request.GET.get('redraw', None) is not None:
        try:
            redraw = int(request.GET.get('redraw', -1))
        except ValueError:
            redraw = -1
        cc = CacheControl()
        if redraw == 0:
            cc.in_progress_ver = cc.in_progress_ver + 1
        elif redraw == 1:
            cc.published_ver = cc.published_ver + 1
        elif redraw == 2:
            cc.withdrawn_ver = cc.withdrawn_ver + 1
        return http.HttpResponseRedirect(reverse('timeline.views.main_page'))
    now = datetime.datetime.utcnow()
    in_process = []
    published = []
    withdrawn = []
    needs_update = DenormalizedProject.backlog_poll(
    ).idle and DenormalizedProjectBallots.backlog_poll().idle
    needs_update = not needs_update
    #logging.info('needs_update %s'%str(needs_update))
    for pd in DenormalizedProject.objects.all():
        try:
            pd.ballots = DenormalizedProjectBallots.objects.get(pk=pd.pk)
        except DenormalizedProjectBallots.DoesNotExist:
            pd.ballots = DenormalizedProjectBallots(pk=pd.pk)
            #sys.stderr.write('Unable to find DenormalizedProjectBallots for project %s\n'%str(pd.pk))
            DenormalizedProjectBallots.request_update(pd)
        if pd.withdrawn:
            withdrawn.append(pd)
        elif pd.published:
            published.append(pd)
        else:
            in_process.append(pd)
    #check_project_ballot_backlog()
    in_process.sort(key=attrgetter('sortkey'), reverse=True)
    published.sort(key=attrgetter('sortkey'), reverse=True)
    withdrawn.sort(key=attrgetter('sortkey'), reverse=True)
    context = dict(now=now,
                   in_process=in_process,
                   published=published,
                   withdrawn=withdrawn)
    context['export'] = export
    context['next_page'] = reverse('timeline.views.main_page')
    context['needs_update'] = needs_update
    context['export_page'] = 'timeline'
    context_instance = RequestContext(request)
    context_instance['cache'].export = export
    if export:
        return export_html('timeline/index.html',
                           context,
                           context_instance=context_instance,
                           filename='timeline.%s' % export)
    return render_to_response('timeline/index.html',
                              context,
                              context_instance=context_instance)
Ejemplo n.º 5
0
def update_cache(sender, instance, **kwargs):
    # instance is a DenormalizedProject object
    cc = CacheControl()
    if InProgress.id == instance.status.id:
        cc.in_progress_ver = cc.in_progress_ver + 1
    if Published.id == instance.status.id:
        cc.published_ver = cc.published_ver + 1
    if Withdrawn.id == instance.status.id:
        cc.withdrawn_ver = cc.withdrawn_ver + 1
Ejemplo n.º 6
0
def update_cache(sender, instance, **kwargs):
    # instance is a DenormalizedProject object
    cc = CacheControl()
    if InProgress.id==instance.status.id:
        cc.in_progress_ver = cc.in_progress_ver+1
    if Published.id==instance.status.id:
        cc.published_ver = cc.published_ver+1
    if Withdrawn.id==instance.status.id:
        cc.withdrawn_ver = cc.withdrawn_ver+1
Ejemplo n.º 7
0
def edit_ballot(request, bal):
    context = {}
    context.update(csrf(request))
    next_page = request.GET.get('next', '/')
    if bal is None:
        lbnum = Ballot.FIRST_SPONSOR_LBNUM
        for b in Ballot.objects.all():
            lbnum = max(lbnum, b.number + 1)
        ballot = Ballot(number=lbnum)
    else:
        ballot = get_object_or_404(Ballot, pk=bal)
    if request.method == 'POST':
        if request.POST.has_key('cancel'):
            return http.HttpResponseRedirect(next_page)
        if request.POST.has_key('delete'):
            return http.HttpResponseRedirect(reverse('del_ballot', args=[bal]))
        form = BallotForm(request.POST, request.FILES, instance=ballot)
        if form.is_valid():
            data = form.cleaned_data
            ballot = form.save()
            if data['curpk'] and data['curpk'] != ballot.pk:
                try:
                    Ballot.objects.get(pk=data['curpk']).delete()
                except Ballot.DoesNotExist:
                    pass
            cc = CacheControl()
            if data['curstat'] != ballot.project.status.id:
                if InProgress.id == data['curstat']:
                    cc.in_progress_ver = cc.in_progress_ver + 1
                if Published.id == data['curstat']:
                    cc.published_ver = cc.published_ver + 1
                if Withdrawn.id == data['curstat']:
                    cc.withdrawn_ver = cc.withdrawn_ver + 1
            return http.HttpResponseRedirect(next_page)
    else:
        initial = {
            'curstat': ballot.project.status.id,
            'curpk': ballot.pk
        } if bal is not None else {
            'curstat': 0
        }
        form = BallotForm(instance=ballot, initial=initial)
    context['form'] = form
    context['object'] = ballot
    context['no_delete'] = bal is None
    return render_to_response('edit-object.html',
                              context,
                              context_instance=RequestContext(request))
Ejemplo n.º 8
0
def main_page(request, export=None):
    if request.GET.get('redraw',None) is not None:
        try:
            redraw = int(request.GET.get('redraw',-1))
        except ValueError:
            redraw = -1
        cc = CacheControl()
        if redraw==0:
            cc.in_progress_ver = cc.in_progress_ver+1
        elif redraw==1:
            cc.published_ver = cc.published_ver+1
        elif redraw==2:
            cc.withdrawn_ver = cc.withdrawn_ver+1
        return http.HttpResponseRedirect(reverse('timeline.views.main_page'))
    now = datetime.datetime.utcnow()
    in_process = []
    published = []
    withdrawn = []
    needs_update = DenormalizedProject.backlog_poll().idle and DenormalizedProjectBallots.backlog_poll().idle
    needs_update = not needs_update
    #logging.info('needs_update %s'%str(needs_update))
    for pd in DenormalizedProject.objects.all():
        try:
            pd.ballots = DenormalizedProjectBallots.objects.get(pk=pd.pk)
        except DenormalizedProjectBallots.DoesNotExist:
            pd.ballots = DenormalizedProjectBallots(pk=pd.pk)
            #sys.stderr.write('Unable to find DenormalizedProjectBallots for project %s\n'%str(pd.pk))
            DenormalizedProjectBallots.request_update(pd)
        if pd.withdrawn:
            withdrawn.append(pd)
        elif pd.published:
            published.append(pd)
        else:
            in_process.append(pd)
    #check_project_ballot_backlog()
    in_process.sort(key=attrgetter('sortkey'), reverse=True)
    published.sort(key=attrgetter('sortkey'), reverse=True)
    withdrawn.sort(key=attrgetter('sortkey'), reverse=True)
    context = dict(now=now, in_process=in_process, published=published, withdrawn=withdrawn)
    context['export'] = export
    context['next_page'] = reverse('timeline.views.main_page')
    context['needs_update'] = needs_update
    context['export_page'] = 'timeline'
    context_instance=RequestContext(request)
    context_instance['cache'].export = export
    if export:
        return export_html('timeline/index.html', context, context_instance=context_instance, filename='timeline.%s'%export)
    return render_to_response('timeline/index.html', context, context_instance=context_instance)
Ejemplo n.º 9
0
def edit_project(request, slug):
    context = {}
    context.update(csrf(request))
    next_page = request.GET.get('next',
                                reverse_lazy('project.views.main_page'))
    if slug is None:
        project = Project()
    else:
        project = get_object_or_404(Project, slug=slug)
    if request.method == 'POST':
        if request.POST.has_key('cancel'):
            return http.HttpResponseRedirect(next_page)
        if request.POST.has_key('delete'):
            return http.HttpResponseRedirect(
                reverse('del_project', args=[slug]) + '?next=' +
                str(next_page))
        form = ProjectForm(request.POST, request.FILES, instance=project)
        if form.is_valid():
            data = form.cleaned_data
            p = form.save(commit=False)
            if data['base'] is None:
                p.baseline = None
            else:
                p.baseline = data['base'].pk

            p.save()
            if data['curstat'] != project.status.id:
                cc = CacheControl()
                if InProgress.id == data['curstat']:
                    cc.in_progress_ver = cc.in_progress_ver + 1
                if Published.id == data['curstat']:
                    cc.published_ver = cc.published_ver + 1
                if Withdrawn.id == data['curstat']:
                    cc.withdrawn_ver = cc.withdrawn_ver + 1
            return http.HttpResponseRedirect(next_page)
    else:
        form = ProjectForm(instance=project,
                           initial={
                               'base': project.baseline,
                               'curstat': project.status.id
                           })
    context['form'] = form
    context['object'] = project
    return render_to_response('project/edit_project.html',
                              context,
                              context_instance=RequestContext(request))
Ejemplo n.º 10
0
def edit_ballot(request,bal):
    context = {}
    context.update(csrf(request))
    next_page = request.GET.get('next','/')
    if bal is None:
        lbnum = Ballot.FIRST_SPONSOR_LBNUM
        for b in Ballot.objects.all():
            lbnum = max(lbnum,b.number+1)
        ballot = Ballot(number=lbnum)
    else:
        ballot = get_object_or_404(Ballot,pk=bal)
    if request.method == 'POST':
        if request.POST.has_key('cancel'):
            return http.HttpResponseRedirect(next_page)
        if request.POST.has_key('delete'):
            return http.HttpResponseRedirect(reverse('del_ballot',args=[bal]))
        form = BallotForm(request.POST, request.FILES, instance=ballot)
        if form.is_valid():
            data = form.cleaned_data
            ballot = form.save()
            if data['curpk'] and data['curpk']!=ballot.pk:
                try:
                    Ballot.objects.get(pk=data['curpk']).delete()
                except Ballot.DoesNotExist:
                    pass
            cc = CacheControl()
            if data['curstat'] != ballot.project.status.id:
                if InProgress.id==data['curstat']:
                    cc.in_progress_ver = cc.in_progress_ver+1
                if Published.id==data['curstat']:
                    cc.published_ver = cc.published_ver+1
                if Withdrawn.id==data['curstat']:
                    cc.withdrawn_ver = cc.withdrawn_ver+1
            return http.HttpResponseRedirect(next_page)
    else:
        initial={'curstat':ballot.project.status.id, 'curpk':ballot.pk} if bal is not None else {'curstat':0}
        form = BallotForm(instance=ballot, initial=initial)
    context['form'] = form
    context['object'] = ballot
    context['no_delete'] = bal is None
    return render_to_response('edit-object.html',context, context_instance=RequestContext(request))
Ejemplo n.º 11
0
def sponsor_page(request, export=None):
    if request.GET.get('refresh'):
        for b in Ballot.objects.filter(ballot_type=Ballot.SBInitial.code):
            DenormalizedBallot.request_update(ballot_pk=b.number)
        for b in Ballot.objects.filter(ballot_type=Ballot.SBRecirc.code):
            DenormalizedBallot.request_update(ballot_pk=b.number)
        return http.HttpResponseRedirect(reverse('ballot.views.sponsor_page'))
    next_page=reverse('ballot.views.sponsor_page')
    if request.GET.get('redraw',None) is not None:
        try:
            redraw = int(request.GET.get('redraw',0))
        except ValueError:
            redraw = 0
        cc = CacheControl()
        if redraw==0:
            cc.open_ver = cc.open_ver + 1
        elif redraw==1:
            cc.closed_ver = cc.closed_ver + 1
        return http.HttpResponseRedirect(next_page)
    ballots = list(DenormalizedBallot.objects.filter(ballot_type=DenormalizedBallot.SBInitial.code))+list(DenormalizedBallot.objects.filter(ballot_type=DenormalizedBallot.SBRecirc.code))
    return ballot_page(request,ballots,export, sponsor=True, next=next_page, export_page='SponsorBallots')
Ejemplo n.º 12
0
def edit_project(request,slug):
    context = {}
    context.update(csrf(request))
    next_page = request.GET.get('next',reverse_lazy('project.views.main_page'))
    if slug is None:
        project = Project()
    else:
        project = get_object_or_404(Project,slug=slug)
    if request.method == 'POST':
        if request.POST.has_key('cancel'):
            return http.HttpResponseRedirect(next_page)
        if request.POST.has_key('delete'):
            return http.HttpResponseRedirect(reverse('del_project',args=[slug])+'?next='+str(next_page))
        form = ProjectForm(request.POST, request.FILES, instance=project)
        if form.is_valid():
            data = form.cleaned_data
            p = form.save(commit=False)
            if data['base'] is None:
                p.baseline = None
            else:
                p.baseline = data['base'].pk
            
            p.save()
            if data['curstat']!=project.status.id:
                cc = CacheControl()
                if InProgress.id==data['curstat']:
                    cc.in_progress_ver = cc.in_progress_ver+1
                if Published.id==data['curstat']:
                    cc.published_ver = cc.published_ver+1
                if Withdrawn.id==data['curstat']:
                    cc.withdrawn_ver = cc.withdrawn_ver+1
            return http.HttpResponseRedirect(next_page)
    else:
        form = ProjectForm(instance=project, initial={'base':project.baseline,'curstat':project.status.id})
    context['form'] = form
    context['object'] = project
    return render_to_response('project/edit_project.html',context, context_instance=RequestContext(request))
Ejemplo n.º 13
0
    def __disabled_refresh_main(self):
        #self.failUnlessEqual(ProjectBallotsBacklog.objects.count(),0)
        stats = DenormalizedProjectBallots.backlog_poll()
        self.failUnless(stats.idle)
        poll_url = reverse('timeline.views.backlog_poll',args=[])
        poll = backlog_poll(self.get_request(poll_url))
        status = json.loads(poll.content)
        self.failUnlessEqual(status['backlog'],0)
        url = reverse('timeline.views.main_page',args=[])
        self._check_page(url+'?refresh=1', status_code=302)
        self.wait_for_backlog_completion([DenormalizedProject, DenormalizedProjectBallots], Project.objects.count()+Ballot.objects.count())
        poll = backlog_poll(self.get_request(poll_url))
        print poll.content
        status = json.loads(poll.content)
        self.failUnlessEqual(status['backlog'],0)
        self.assertEqual(DenormalizedProjectBallots.objects.count(),self.PROJECT_COUNT)
        proj = Project.objects.get(pk=38)
        dpb = DenormalizedProjectBallots.objects.get(project_pk=proj.pk)
        self.assertEqual(len(dpb.initial_wg_ballots),1)
        self.assertEqual(len(dpb.recirc_wg_ballots),4)
        self.assertEqual(len(dpb.initial_sb_ballots),1)
        self.assertEqual(len(dpb.recirc_sb_ballots),6)
        for dpb in DenormalizedProjectBallots.objects.all():
            self._check_denormalized_project(dpb.initial_wg_ballots)
            self._check_denormalized_project(dpb.recirc_wg_ballots)
            self._check_denormalized_project(dpb.initial_sb_ballots)
            self._check_denormalized_project(dpb.recirc_sb_ballots)
        cc = CacheControl()
        in_progress_ver = cc.in_progress_ver
        published_ver = cc.published_ver
        withdrawn_ver = cc.withdrawn_ver
        self._check_page(url+'?redraw=0', status_code=302)
        self.failIfEqual(in_progress_ver, cc.in_progress_ver)
        self.failUnlessEqual(published_ver, cc.published_ver)
        self.failUnlessEqual(withdrawn_ver, cc.withdrawn_ver)
        self.wait_for_backlog_completion([DenormalizedProject, DenormalizedProjectBallots], Project.objects.count()+Ballot.objects.count())
        
        in_progress_ver = cc.in_progress_ver
        published_ver = cc.published_ver
        withdrawn_ver = cc.withdrawn_ver
        self._check_page(url+'?redraw=1', status_code=302)
        self.failUnlessEqual(in_progress_ver, cc.in_progress_ver)
        self.failUnlessEqual(withdrawn_ver, cc.withdrawn_ver)
        self.failIfEqual(published_ver, cc.published_ver)
        self.wait_for_backlog_completion([DenormalizedProject, DenormalizedProjectBallots], Project.objects.count()+Ballot.objects.count())
        
        in_progress_ver = cc.in_progress_ver
        published_ver = cc.published_ver
        withdrawn_ver = cc.withdrawn_ver
        self._check_page(url+'?redraw=2', status_code=302)
        self.failUnlessEqual(in_progress_ver, cc.in_progress_ver)
        self.failUnlessEqual(published_ver, cc.published_ver)
        self.failIfEqual(withdrawn_ver, cc.withdrawn_ver)
        self.wait_for_backlog_completion([DenormalizedProject, DenormalizedProjectBallots], Project.objects.count()+Ballot.objects.count())

        in_progress_ver = cc.in_progress_ver
        published_ver = cc.published_ver
        withdrawn_ver = cc.withdrawn_ver
        self._check_page(url+'?redraw=badNumber', status_code=302)
        self.failUnlessEqual(in_progress_ver, cc.in_progress_ver)
        self.failUnlessEqual(published_ver, cc.published_ver)
        self.failUnlessEqual(withdrawn_ver, cc.withdrawn_ver)
Ejemplo n.º 14
0
def update_cache_ballots(sender, instance, **kwargs):
    # assume that any voting is on an in-progress project
    cc = CacheControl()
    cc.in_progress_ver = cc.in_progress_ver + 1
Ejemplo n.º 15
0
def update_cache2(sender, instance, **kwargs):
    cc = CacheControl()
    if instance.is_open:
        cc.open_ver = cc.open_ver + 1
    else:
        cc.closed_ver = cc.closed_ver + 1
def site_context(request):
    return dict(cache=CacheControl())
Ejemplo n.º 17
0
def update_cache2(sender, instance, **kwargs):
    cc = CacheControl()
    if instance.is_open:
        cc.open_ver = cc.open_ver+1
    else:
        cc.closed_ver = cc.closed_ver+1
Ejemplo n.º 18
0
def update_cache_ballots(sender, instance, **kwargs):
    # assume that any voting is on an in-progress project
    cc = CacheControl()
    cc.in_progress_ver = cc.in_progress_ver+1