Skip to content

Commit 5cdfe6a

Browse files
committed
reasonably complete merge, but some of the newer-style tests are failing because the js API changed
- Legacy-Id: 7188
1 parent 42e4caa commit 5cdfe6a

58 files changed

Lines changed: 11192 additions & 937 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

ietf/group/models.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,9 @@ def has_role(self, user, role_names):
6363
role_names = [role_names]
6464
return user.is_authenticated() and self.role_set.filter(name__in=role_names, person__user=user).exists()
6565

66+
def is_bof(self):
67+
return (self.state.slug in ["bof", "bof-conc"])
68+
6669
def get_chair(self):
6770
chair = self.role_set.filter(name__slug='chair')[:1]
6871
return chair and chair[0] or None

ietf/meeting/ajax.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -560,7 +560,7 @@ def scheduledsession_delete(request, meeting, schedule, scheduledsession_id):
560560
count=0
561561
for ss in scheduledsessions:
562562
ss.delete()
563-
count =+ 1
563+
count += 1
564564

565565
return HttpResponse(json.dumps({'result':"%u objects deleted"%(count)}),
566566
status = 200,

ietf/meeting/management/__init__.py

Whitespace-only changes.

ietf/meeting/management/commands/__init__.py

Whitespace-only changes.
Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
"""
2+
Runs the automatic placement code (simulated annealing of glass)
3+
for a given meeting number, using a schedule given by the schedule database ID.
4+
5+
for help on this file:
6+
https://docs.djangoproject.com/en/dev/howto/custom-management-commands/
7+
8+
"""
9+
10+
from django.core.management.base import BaseCommand, CommandError
11+
from optparse import make_option
12+
#import cProfile, pstats, io
13+
import os
14+
import sys
15+
import gzip
16+
import time
17+
import csv
18+
import codecs
19+
from ietf.meeting.models import Schedule, Meeting
20+
21+
class Command(BaseCommand):
22+
args = '<meeting> <schedulename>'
23+
help = 'perform automatic placement'
24+
stderr = sys.stderr
25+
stdout = sys.stdout
26+
27+
verbose = False
28+
profile = False
29+
permit_movement = False
30+
maxstep = 20000
31+
seed = None
32+
recordsteps = False
33+
34+
option_list = BaseCommand.option_list + (
35+
make_option('--profile',
36+
action='store_true',
37+
dest='profile',
38+
default=False,
39+
help='Enable verbose mode'),
40+
make_option('--recordsteps',
41+
action='store_true',
42+
dest='recordsteps',
43+
default=False,
44+
help='Enable recording progress to table'),
45+
make_option('--verbose',
46+
action='count',
47+
dest='verbose',
48+
default=False,
49+
help='Enable verbose mode'),
50+
make_option('--maxstep',
51+
action="store", type="int",
52+
dest='maxstep',
53+
default=20000,
54+
help='Maximum number of steps'),
55+
make_option('--seed',
56+
action="store", type="int",
57+
dest='seed',
58+
default=None,
59+
help='Seed to use for calculation'),
60+
)
61+
62+
def handle(self, *labels, **options):
63+
self.verbose = options.get('verbose', 1)
64+
65+
meetingname = labels[0]
66+
schedname = labels[1]
67+
targetname = None
68+
if labels[2] is not None:
69+
targetname = labels[2]
70+
71+
seed = options.get('seed', None)
72+
maxstep = options.get('maxstep', 20000)
73+
verbose = options.get('verbose', False)
74+
profile = options.get('profile', False)
75+
recordsteps = options.get('recordsteps', False)
76+
77+
from ietf.meeting.helpers import get_meeting,get_schedule
78+
try:
79+
meeting = get_meeting(meetingname)
80+
except Meeting.DoesNotExist:
81+
print "No such meeting: %s" % (meetingname)
82+
return
83+
84+
try:
85+
schedule = meeting.schedule_set.get(name = schedname)
86+
except Schedule.DoesNotExist:
87+
print "No such schedule: %s in meeting: %s" % (schedname, meeting)
88+
return
89+
90+
if targetname is not None:
91+
try:
92+
targetsched = meeting.schedule_set.get(name=targetname)
93+
except Schedule.DoesNotExist:
94+
print "Creating new schedule %s" % (targetname)
95+
targetsched = Schedule(meeting = meeting,
96+
owner = schedule.owner,
97+
name = targetname)
98+
targetsched.save()
99+
else:
100+
targetsched = schedule
101+
102+
print "Saving results to %s" % (targetsched.name)
103+
104+
from ietf.meeting.placement import CurrentScheduleState
105+
css = CurrentScheduleState(schedule, seed)
106+
css.recordsteps = recordsteps
107+
css.verbose = verbose
108+
109+
if profile:
110+
import cProfile
111+
import re
112+
cProfile.runctx('css.do_placement(maxstep, targetsched)',
113+
vars(),
114+
vars(),
115+
'placestats.pyprof')
116+
117+
import pstats
118+
p = pstats.Stats('placestats.pyprof')
119+
p.strip_dirs().sort_stats(-1).print_stats()
120+
else:
121+
css.do_placement(maxstep, targetsched)
122+
123+
124+

0 commit comments

Comments
 (0)