Removed a lot of dead code and unused imports.

- Legacy-Id: 6578
This commit is contained in:
Henrik Levkowetz 2013-10-30 21:51:13 +00:00
parent 1208ae708b
commit 45b9b45f28
3 changed files with 7 additions and 351 deletions

View file

@ -3,12 +3,7 @@
#import models
import datetime
import os
import re
import tarfile
from tempfile import mkstemp
from django import forms
from django.http import Http404
from django.http import HttpRequest
from django.db.models import Max, Q
@ -17,10 +12,8 @@ from django.core.cache import cache
from django.utils.cache import get_cache_key
import debug
import urllib
from django.shortcuts import get_object_or_404
from ietf.idtracker.models import InternetDraft
from ietf.ietfauth.decorators import has_role
from ietf.utils.history import find_history_active_at
from ietf.doc.models import Document, State
@ -28,125 +21,9 @@ from ietf.doc.models import Document, State
from ietf.proceedings.models import Meeting as OldMeeting, MeetingTime, IESGHistory, Switches
# New models
from ietf.meeting.models import Meeting, TimeSlot, Session
from ietf.meeting.models import Schedule, ScheduledSession
from ietf.meeting.models import Meeting
from ietf.group.models import Group
class NamedTimeSlot(object):
"""
this encapsulates a TimeSlot with a Schedule, so that
specific time slots can be returned as appropriate. It proxies
most things to TimeSlot. Agenda_info returns an array of these
objects rather than actual Time Slots, as the templates do not
permit multiple parameters to be passed into a relation.
This may be irrelevant with Django 1.3+, given with argument extension
to templating language.
"""
def __init__(self, agenda, timeslot):
self.agenda = agenda
self.timeslot = timeslot
def scheduledsessions(self):
self.timeslot.scheduledsessions_set.filter(schedule=self.agenda, session__isnull=False)
@property
def time(self):
return self.timeslot.time
@property
def meeting_date(self):
return self.timeslot.meeting_date
@property
def reg_info(self):
return self.timeslot.reg_info
@property
def registration(self):
return self.timeslot.registration
@property
def session_name(self):
return self.timeslot.session_name
@property
def break_info(self):
return self.timeslot.break_info
@property
def time_desc(self):
return self.timeslot.time_desc
@property
def is_plenary(self):
return self.timeslot.is_plenary
def is_plenaryw(self):
return self.timeslot.is_plenary_type("opsplenary")
def is_plenaryt(self):
return self.timeslot.is_plenary_type("techplenary")
@property
def tzname(self):
return self.timeslot.tzname
@property
def room_name(self):
if self.timeslot:
if self.timeslot.location:
return self.timeslot.location.name
else:
return "no room set for plenary %u" % (self.timeslot.pk)
else:
return "bogus NamedTimeSlot"
@property
def sessions(self):
return [ ss.session for ss in self.timeslot.scheduledsession_set.filter(schedule=self.agenda, schedule__isnull=False) ]
@property
def scheduledsessions_at_same_time(self):
if not hasattr(self, "sessions_at_same_time_cache"):
self.sessions_at_same_time_cache = self.timeslot.scheduledsessions_at_same_time(self.agenda)
return self.sessions_at_same_time_cache
@property
def scheduledsessions(self):
return self.timeslot.scheduledsession_set.filter(schedule=self.agenda)
@property
def scheduledsessions_by_area(self):
things = self.scheduledsessions_at_same_time
if things is not None:
return [ {"area":ss.area+ss.acronym_name, "info":ss} for ss in things ]
else:
return [ ]
@property
def slot_decor(self):
return self.timeslot.slot_decor
def get_ntimeslots_from_ss(agenda, scheduledsessions):
ntimeslots = []
time_seen = set()
for ss in scheduledsessions:
t = ss.timeslot
if not t.time in time_seen:
time_seen.add(t.time)
ntimeslots.append(NamedTimeSlot(agenda, t))
time_seen = None
return ntimeslots
def get_ntimeslots_from_agenda(agenda):
# now go through the timeslots, only keeping those that are
# sessions/plenary/training and don't occur at the same time
scheduledsessions = agenda.scheduledsession_set.all().order_by("timeslot__time").exclude(timeslot__type = "unavail")
ntimeslots = get_ntimeslots_from_ss(agenda, scheduledsessions)
return ntimeslots, scheduledsessions
def find_ads_for_meeting(meeting):
ads = []
meeting_time = datetime.datetime.combine(meeting.date, datetime.time(0, 0, 0))
@ -249,7 +126,6 @@ def build_all_agenda_slices(scheduledsessions, all = False):
time_slices = []
date_slices = {}
ids = []
for ss in scheduledsessions:
if(all or ss.session != None):# and len(ss.timeslot.session.agenda_note)>1):
ymd = ss.timeslot.time.date()

View file

@ -14,7 +14,6 @@ from timedeltafield import TimedeltaField
# mostly used by json_dict()
from django.template.defaultfilters import slugify, date as date_format, time as time_format
from django.utils import formats
from ietf.group.models import Group
from ietf.person.models import Person
@ -38,11 +37,6 @@ def fmt_date(o):
d = datetime_safe.new_date(o)
return d.strftime(DATE_FORMAT)
def fmt_datetime(o):
d = datetime_safe.new_date(o)
return d.strftime("%s %s" % (DATE_FORMAT, TIME_FORMAT))
class Meeting(models.Model):
# number is either the number for IETF meetings, or some other
# identifier for interim meetings/IESG retreats/liaison summits/...
@ -116,10 +110,6 @@ class Meeting(models.Model):
return qs[0]
return None
@property
def sessions_that_wont_meet(self):
return self.session_set.filter(status__slug='notmeet')
@property
def sessions_that_can_meet(self):
return self.session_set.exclude(status__slug='notmeet').exclude(status__slug='disappr').exclude(status__slug='deleted').exclude(status__slug='apprw')
@ -159,7 +149,6 @@ class Meeting(models.Model):
time_slices = {} # the times on each day
slots = {}
ids = []
for ts in self.timeslot_set.all():
if ts.location is None:
continue
@ -290,16 +279,6 @@ class TimeSlot(models.Model):
self._reg_info = None
return self._reg_info
def reg_info(self):
return (self.registration() is not None)
def break_info(self):
breaks = self.__class__.objects.filter(meeting=self.meeting, time__month=self.time.month, time__day=self.time.day, type="break").order_by("time")
for brk in breaks:
if brk.time_desc[-4:] == self.time_desc[:4]:
return brk
return None
def __unicode__(self):
location = self.get_location()
if not location:
@ -319,6 +298,7 @@ class TimeSlot(models.Model):
if not self.show_location:
location = ""
return location
@property
def tz(self):
if self.meeting.time_zone:
@ -343,30 +323,6 @@ class TimeSlot(models.Model):
else:
return None
def session_name(self):
if self.type_id not in ("session", "plenary"):
return None
class Dummy(object):
def __unicode__(self):
return self.session_name
d = Dummy()
d.session_name = self.name
return d
def session_for_schedule(self, schedule):
ss = scheduledsession_set.filter(schedule=schedule).all()[0]
if ss:
return ss.session
else:
return None
def scheduledsessions_at_same_time(self, agenda=None):
if agenda is None:
agenda = self.meeting.agenda
return agenda.scheduledsession_set.filter(timeslot__time=self.time, timeslot__type__in=("session", "plenary", "other"))
@property
def js_identifier(self):
# this returns a unique identifier that is js happy.
@ -375,25 +331,6 @@ class TimeSlot(models.Model):
# {{r|slugify}}_{{day}}_{{slot.0|date:'Hi'}}
return "%s_%s_%s" % (slugify(self.get_location()), self.time.strftime('%Y-%m-%d'), self.time.strftime('%H%M'))
@property
def is_plenary(self):
return self.type_id == "plenary"
def is_plenary_type(self, name, agenda=None):
return self.type_id == "plenary" and self.sessions.all()[0].short == name
@property
def slot_decor(self):
if self.type_id == "plenary":
return "plenary";
elif self.type_id == "session":
return "session";
elif self.type_id == "non-session":
return "non-session";
else:
return "reserved";
def json_dict(self, selfurl):
ts = dict()
ts['timeslot_id'] = self.id
@ -558,10 +495,6 @@ class Schedule(models.Model):
def qs_scheduledsessions_with_assignments(self):
return self.scheduledsession_set.filter(session__isnull=False)
@property
def qs_scheduledsessions_without_assignments(self):
return self.scheduledsession_set.filter(session__isnull=True)
@property
def group_mapping(self):
assignments,sessions,total,scheduled = self.group_session_mapping
@ -586,12 +519,6 @@ class Schedule(models.Model):
scheduled =+ 1
return assignments,sessions,total,scheduled
# calculate badness of entire schedule
def calc_badness(self):
# now calculate badness
assignments = self.group_mapping
return self.calc_badness1(assignments)
cached_sessions_that_can_meet = None
@property
def sessions_that_can_meet(self):
@ -599,14 +526,6 @@ class Schedule(models.Model):
self.cached_sessions_that_can_meet = self.meeting.sessions_that_can_meet.all()
return self.cached_sessions_that_can_meet
# calculate badness of entire schedule
def calc_badness1(self, assignments):
badness = 0
for sess in self.sessions_that_can_meet:
badness += sess.badness(assignments)
self.badness = badness
return badness
def area_list(self):
return ( self.assignments.filter(session__group__type__slug__in=['wg', 'rg', 'ag'],
session__group__parent__isnull=False)
@ -645,10 +564,6 @@ class ScheduledSession(models.Model):
def room_name(self):
return self.timeslot.location.name
@property
def special_agenda_note(self):
return self.session.agenda_note if self.session else ""
@property
def acronym(self):
if self.session and self.session.group:
@ -662,23 +577,6 @@ class ScheduledSession(models.Model):
else:
return None
@property
def acronym_name(self):
if not self.session:
return self.notes
if hasattr(self, "interim"):
return self.session.group.name + " (interim)"
elif self.session.name:
return self.session.name
else:
return self.session.group.name
@property
def session_name(self):
if self.timeslot.type_id not in ("session", "plenary"):
return None
return self.timeslot.name
@property
def area(self):
if not self.session or not self.session.group:
@ -691,31 +589,6 @@ class ScheduledSession(models.Model):
return ""
return self.session.group.parent.acronym
# def break_info(self):
# breaks = self.schedule.scheduledsessions_set.filter(timeslot__time__month=self.timeslot.time.month, timeslot__time__day=self.timeslot.time.day, timeslot__type="break").order_by("timeslot__time")
# now = self.timeslot.time_desc[:4]
# for brk in breaks:
# if brk.time_desc[-4:] == now:
# return brk
# return None
@property
def area_name(self):
if self.timeslot.type_id == "plenary":
return "Plenary Sessions"
elif self.session and self.session.group and self.session.group.acronym == "edu":
return "Training"
elif not self.session or not self.session.group or not self.session.group.parent or not self.session.group.parent.type_id == "area":
return ""
return self.session.group.parent.name
@property
def isWG(self):
if not self.session or not self.session.group:
return False
if self.session.group.type_id == "wg" and self.session.group.state_id != "bof":
return True
@property
def group_type_str(self):
if not self.session or not self.session.group:
@ -982,12 +855,12 @@ class Session(models.Model):
return sess1
def badness_test(self, num):
import sys
from settings import BADNESS_CALC_LOG
#sys.stdout.write("num: %u / BAD: %u\n" % (num, BADNESS_CALC_LOG))
return BADNESS_CALC_LOG >= num
def badness_log(self, num, msg):
import sys
if self.badness_test(num):
sys.stdout.write(msg)
@ -1013,7 +886,6 @@ class Session(models.Model):
if self.badness_test(2):
self.badness_log(2, "badgroup: %s badness calculation has %u constraints\n" % (self.group.acronym, len(conflicts)))
import sys
from settings import BADNESS_UNPLACED, BADNESS_TOOSMALL_50, BADNESS_TOOSMALL_100, BADNESS_TOOBIG, BADNESS_MUCHTOOBIG
count = 0
myss_list = assignments[self.group]

View file

@ -2,7 +2,6 @@
#import models
import datetime
import sys
import os
import re
import tarfile
@ -23,7 +22,6 @@ from django.utils.decorators import decorator_from_middleware
from ietf.ietfauth.decorators import group_required, has_role
from django.middleware.gzip import GZipMiddleware
from django.db.models import Max
from ietf.group.colors import fg_group_colors, bg_group_colors
from django.forms.models import modelform_factory
import debug
@ -33,17 +31,15 @@ from ietf.utils.pipe import pipe
from ietf.doc.models import Document, State
# Old model -- needs to be removed
from ietf.proceedings.models import Meeting as OldMeeting, WgMeetingSession, MeetingVenue, IESGHistory, Proceeding, Switches
from ietf.proceedings.models import Meeting as OldMeeting, WgMeetingSession, Proceeding, Switches
# New models
from ietf.person.models import Person
from ietf.meeting.models import Meeting, TimeSlot, Session
from ietf.meeting.models import Schedule, ScheduledSession, Room
from ietf.meeting.models import TimeSlot, Session, Schedule
from ietf.group.models import Group
from ietf.meeting.helpers import NamedTimeSlot, get_ntimeslots_from_ss
from ietf.meeting.helpers import get_ntimeslots_from_agenda, agenda_info
from ietf.meeting.helpers import get_areas, get_area_list_from_sessions, get_pseudo_areas
from ietf.meeting.helpers import agenda_info
from ietf.meeting.helpers import get_areas
from ietf.meeting.helpers import build_all_agenda_slices, get_wg_name_list
from ietf.meeting.helpers import get_scheduledsessions_from_schedule, get_all_scheduledsessions_from_schedule
from ietf.meeting.helpers import get_modified_from_scheduledsessions
@ -91,56 +87,6 @@ def current_materials(request):
meeting = OldMeeting.objects.exclude(number__startswith='interim-').order_by('-meeting_num')[0]
return HttpResponseRedirect( reverse(materials, args=[meeting.meeting_num]) )
def get_plenary_agenda(meeting_num, id):
try:
plenary_agenda_file = settings.AGENDA_PATH + WgMeetingSession.objects.get(meeting=meeting_num,group_acronym_id=id).agenda_file()
try:
f = open(plenary_agenda_file)
plenary_agenda = f.read()
f.close()
return plenary_agenda
except IOError:
return "THE AGENDA HAS NOT BEEN UPLOADED YET"
except WgMeetingSession.DoesNotExist:
return "The Plenary has not been scheduled"
##########################################################################################################################
## dispatch based upon request type.
def agenda_html_request(request,num=None, schedule_name=None):
if request.method == 'POST':
return agenda_create(request, num, schedule_name)
else:
# GET and HEAD.
return html_agenda(request, num, schedule_name)
def legacy_get_agenda_info(request, num=None, schedule=None):
meeting = get_meeting(num)
timeslots = TimeSlot.objects.filter(Q(meeting__id = meeting.id)).exclude(type__slug='unavail').order_by('time','name')
modified = timeslots.aggregate(Max('modified'))['modified__max']
area_list = list(set([ session.group.parent.acronym for session in [ timeslot.session for timeslot in timeslots.filter(type = 'Session', sessions__group__parent__isnull = False, scheduledsession__schedule=schedule).order_by('sessions__group__parent__acronym').distinct() if timeslot.session ] ]))
area_list.sort()
# wg_name_list = timeslots.filter(type = 'Session', sessions__group__isnull = False, sessions__group__parent__isnull = False, scheduledsession__schedule=schedule).order_by('sessions__group__acronym').distinct('sessions__group')#.values_list('sessions__group__acronym',flat=True)
wg_name_list = list(set([ session.group.acronym for session in [ timeslot.session for timeslot in timeslots.filter(type = 'Session', sessions__group__parent__isnull = False, scheduledsession__schedule=schedule).order_by('sessions__group__acronym').distinct() if timeslot.session ] ]))
wg_list = Group.objects.filter(acronym__in = set(wg_name_list)).order_by('parent__acronym','acronym')
return timeslots, modified, meeting, area_list, wg_list
def get_agenda_info(request, num=None, schedule_name=None):
meeting = get_meeting(num)
schedule = get_schedule(meeting, schedule_name)
scheduledsessions = get_scheduledsessions_from_schedule(schedule)
modified = get_modified_from_scheduledsessions(scheduledsessions)
area_list = get_areas()
wg_list = get_wg_list(scheduledsessions)
time_slices,date_slices = build_all_agenda_slices(scheduledsessions, False)
rooms = meeting.room_set
return scheduledsessions, schedule, modified, meeting, area_list, wg_list, time_slices, date_slices, rooms
def mobile_user_agent_detect(request):
if settings.SERVER_MODE != 'production' and '_testiphone' in request.REQUEST:
user_agent = "iPhone"
@ -152,28 +98,6 @@ def mobile_user_agent_detect(request):
user_agent = ""
return user_agent
@decorator_from_middleware(GZipMiddleware)
def html_agenda_1(request, num, schedule_name, template_version="meeting/agenda.html"):
user_agent = mobile_user_agent_detect(request)
if "iPhone" in user_agent:
return iphone_agenda(request, num, schedule_name)
meeting = get_meeting(num)
schedule = get_schedule(meeting, schedule_name)
timeslots, modified, meeting, area_list, wg_list = legacy_get_agenda_info(request, num, schedule)
return HttpResponse(render_to_string(template_version,
{"timeslots":timeslots, "modified": modified, "meeting":meeting,
"area_list": area_list, "wg_list": wg_list ,
"show_inline": set(["txt","htm","html"]) },
RequestContext(request)), mimetype="text/html")
def html_agenda(request, num=None, schedule_name=None):
return html_agenda_1(request, num, schedule_name, "meeting/agenda.html")
def html_agenda_utc(request, num=None, schedule_name=None):
return html_agenda_1(request, num, schedule_name, "meeting/agenda_utc.html")
class SaveAsForm(forms.Form):
savename = forms.CharField(max_length=100)
@ -334,8 +258,6 @@ def edit_agenda(request, num=None, schedule_name=None):
# get_modified_from needs the query set, not the list
modified = get_modified_from_scheduledsessions(scheduledsessions)
ntimeslots = get_ntimeslots_from_ss(schedule, scheduledsessions)
area_list = get_areas()
wg_name_list = get_wg_name_list(scheduledsessions)
wg_list = get_wg_list(wg_name_list)
@ -675,20 +597,6 @@ def ical_agenda(request, num=None, name=None, ext=None):
{"schedule":schedule, "assignments":assignments, "updated":updated},
RequestContext(request)), mimetype="text/calendar")
def csv_agenda(request, num=None, name=None):
timeslots, update, meeting, venue, ads, plenaryw_agenda, plenaryt_agenda = agenda_info(num)
#wgs = IETFWG.objects.filter(status=IETFWG.ACTIVE).order_by('group_acronym__acronym')
#rgs = IRTF.objects.all().order_by('acronym')
#areas = Area.objects.filter(status=Area.ACTIVE).order_by('area_acronym__acronym')
# we should really use the Python csv module or something similar
# rather than a template file which is one big mess
return HttpResponse(render_to_string("meeting/agenda.csv",
{"timeslots":timeslots, "update":update, "meeting":meeting, "venue":venue, "ads":ads,
"plenaryw_agenda":plenaryw_agenda, "plenaryt_agenda":plenaryt_agenda, },
RequestContext(request)), mimetype="text/csv")
def meeting_requests(request, num=None) :
meeting = get_meeting(num)
sessions = Session.objects.filter(meeting__number=meeting.number,group__parent__isnull = False).exclude(requested_by=0).order_by("group__parent__acronym","status__slug","group__acronym")