From a18cf2086862bc0e409f7462b9b450b1438bf21c Mon Sep 17 00:00:00 2001
From: Henrik Levkowetz <henrik@levkowetz.com>
Date: Sat, 17 Jun 2017 17:54:40 +0000
Subject: [PATCH] Removed code which has been marked as unreachable since
 February/March 2017 without triggering any usage indications.  - Legacy-Id:
 13667

---
 ietf/doc/urls.py        |  1 -
 ietf/doc/views_draft.py | 16 ---------
 ietf/meeting/helpers.py | 53 ---------------------------
 ietf/meeting/models.py  | 80 -----------------------------------------
 ietf/meeting/urls.py    |  1 -
 ietf/meeting/views.py   | 29 ---------------
 ietf/utils/mail.py      | 11 +-----
 7 files changed, 1 insertion(+), 190 deletions(-)

diff --git a/ietf/doc/urls.py b/ietf/doc/urls.py
index e398f64a7..a6455e5d2 100644
--- a/ietf/doc/urls.py
+++ b/ietf/doc/urls.py
@@ -92,7 +92,6 @@ urlpatterns = [
     url(r'^%(name)s/edit/submit-to-iesg/$' % settings.URL_REGEXPS, views_draft.to_iesg),
     url(r'^%(name)s/edit/resurrect/$' % settings.URL_REGEXPS, views_draft.resurrect),
     url(r'^%(name)s/edit/addcomment/$' % settings.URL_REGEXPS, views_doc.add_comment),
-    url(r'^ajax/internet_draft/?$', views_draft.doc_ajax_internet_draft),
 
     url(r'^%(name)s/edit/stream/$' % settings.URL_REGEXPS, views_draft.change_stream),
     url(r'^%(name)s/edit/replaces/$' % settings.URL_REGEXPS, views_draft.replaces),
diff --git a/ietf/doc/views_draft.py b/ietf/doc/views_draft.py
index 82a6a90c1..30046b267 100644
--- a/ietf/doc/views_draft.py
+++ b/ietf/doc/views_draft.py
@@ -35,8 +35,6 @@ from ietf.message.models import Message
 from ietf.name.models import IntendedStdLevelName, DocTagName, StreamName
 from ietf.person.fields import SearchableEmailField
 from ietf.person.models import Person, Email
-from ietf.secr.lib.template import jsonapi
-from ietf.utils import log
 from ietf.utils.mail import send_mail, send_mail_message
 from ietf.utils.textupload import get_cleaned_text_file_content
 from ietf.mailtrigger.utils import gather_address_lists
@@ -278,20 +276,6 @@ def change_stream(request, name):
                                    doc=doc,
                                    ))
 
-@jsonapi
-def doc_ajax_internet_draft(request):
-    log.unreachable("07 Mar 2017")
-    if request.method != 'GET' or not request.GET.has_key('term'):
-        return { 'success' : False, 'error' : 'No term submitted or not GET' }
-    q = request.GET.get('term')
-    results = DocAlias.objects.filter(name__icontains=q)
-    if (results.count() > 20):
-        results = results[:20]
-    elif results.count() == 0:
-        return { 'success' : False, 'error' : "No results" }
-    response = [dict(id=r.id, label=r.name) for r in results]
-    return response
-
 class ReplacesForm(forms.Form):
     replaces = SearchableDocAliasesField(required=False)
     comment = forms.CharField(widget=forms.Textarea, required=False, strip=False)
diff --git a/ietf/meeting/helpers.py b/ietf/meeting/helpers.py
index 25afdaca6..95872ada4 100644
--- a/ietf/meeting/helpers.py
+++ b/ietf/meeting/helpers.py
@@ -17,7 +17,6 @@ from django.template.loader import render_to_string
 import debug                            # pyflakes:ignore
 
 from ietf.doc.models import Document
-from ietf.doc.utils import get_document_content
 from ietf.group.models import Group
 from ietf.ietfauth.utils import has_role, user_is_person
 from ietf.liaisons.utils import get_person_for_user
@@ -25,7 +24,6 @@ from ietf.mailtrigger.utils import gather_address_lists
 from ietf.person.models  import Person
 from ietf.meeting.models import Meeting, Schedule, TimeSlot, SchedTimeSessAssignment
 from ietf.utils.history import find_history_active_at, find_history_replacements_active_at
-from ietf.utils import log
 from ietf.utils.mail import send_mail
 from ietf.utils.pipe import pipe
 
@@ -427,46 +425,6 @@ def get_earliest_session_date(formset):
     return sorted([f.cleaned_data['date'] for f in formset.forms if f.cleaned_data.get('date')])[0]
 
 
-def get_interim_initial(meeting):
-    '''Returns a dictionary suitable to initialize a InterimRequestForm'''
-    log.unreachable("07 Mar 2017")
-    initial = {}
-    initial['group'] = meeting.session_set.first().group
-    if meeting.city:
-        initial['in_person'] = True
-    else:
-        initial['in_person'] = False
-    if meeting.session_set.count() > 1:
-        initial['meeting_type'] = 'multi-day'
-    else:
-        initial['meeting_type'] = 'single'
-    if meeting.session_set.first().status.slug == 'apprw':
-        initial['approved'] = False
-    else:
-        initial['approved'] = True
-    return initial
-
-
-def get_interim_session_initial(meeting):
-    '''Returns a list of dictionaries suitable to initialize a InterimSessionForm'''
-    log.unreachable("07 Mar 2017")
-    initials = []
-    for session in meeting.session_set.all():
-        initial = {}
-        initial['date'] = session.official_timeslotassignment().timeslot.time
-        initial['time'] = session.official_timeslotassignment().timeslot.time
-        initial['duration'] = session.requested_duration
-        initial['remote_instructions'] = session.remote_instructions
-        initial['agenda_note'] = session.agenda_note
-        doc = session.agenda()
-        if doc:
-            path = os.path.join(doc.get_file_path(), doc.filename_with_rev())
-            initial['agenda'] = get_document_content(os.path.basename(path), path, markup=False)
-        initials.append(initial)
-
-    return initials
-
-
 def is_meeting_approved(meeting):
     """Returns True if the meeting is approved"""
     if meeting.session_set.first().status.slug == 'apprw':
@@ -617,17 +575,6 @@ def send_interim_minutes_reminder(meeting):
               cc=cc_list)
 
 
-def check_interim_minutes():
-    """Finds interim meetings that occured 10 days ago, if they don't
-    have minutes send a reminder."""
-    log.unreachable("07 Mar 2017")
-    date = datetime.datetime.today() - datetime.timedelta(days=10)
-    meetings = Meeting.objects.filter(type='interim', session__status='sched', date=date)
-    for meeting in meetings:
-        if not meeting.session_set.first().minutes():
-            send_interim_minutes_reminder(meeting)
-
-
 def sessions_post_save(forms):
     """Helper function to perform various post save operations on each form of a
     InterimSessionModelForm formset"""
diff --git a/ietf/meeting/models.py b/ietf/meeting/models.py
index 87cc40620..5bb2c50b5 100644
--- a/ietf/meeting/models.py
+++ b/ietf/meeting/models.py
@@ -3,7 +3,6 @@
 import pytz
 import datetime
 from urlparse import urljoin
-import copy
 import os
 import re
 import string
@@ -24,7 +23,6 @@ from ietf.group.models import Group
 from ietf.group.utils import can_manage_materials
 from ietf.name.models import MeetingTypeName, TimeSlotTypeName, SessionStatusName, ConstraintName, RoomResourceName
 from ietf.person.models import Person
-from ietf.utils import log
 from ietf.utils.storage import NoLocationMigrationFileSystemStorage
 from ietf.utils.text import xslugify
 
@@ -527,24 +525,6 @@ class TimeSlot(models.Model):
     def json_url(self):
         return "/meeting/%s/timeslot/%s.json" % (self.meeting.number, self.id)
 
-    """
-    This routine takes the current timeslot, which is assumed to have no location,
-    and assigns a room, and then creates an identical timeslot for all of the other
-    rooms.
-    """
-    def create_concurrent_timeslots(self):
-        log.unreachable("28 Feb 2017")
-        rooms = self.meeting.room_set.all()
-        self.room = rooms[0]
-	self.save()
-        for room in rooms[1:]:
-            ts = copy.copy(self)
-            ts.id = None
-            ts.location = room
-            ts.save()
-
-        #self.meeting.create_all_timeslots()
-
     """
     This routine deletes all timeslots which are in the same time as this slot.
     """
@@ -677,25 +657,12 @@ class Schedule(models.Model):
     def qs_assignments_with_sessions(self):
         return self.assignments.filter(session__isnull=False)
 
-    @property
-    def group_mapping(self):
-        log.unreachable("28 Feb 2017")
-        assignments,sessions,total,scheduled = self.group_session_mapping
-        return assignments
-
     @property
     def sessions_that_can_meet(self):
         if not hasattr(self, "_cached_sessions_that_can_meet"):
             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_badness(self):
-        log.unreachable("28 Feb 2017")
-        # now calculate badness
-        assignments = self.group_mapping
-        return self.calc_badness1(assignments)
-
     def delete_schedule(self):
         self.assignments.all().delete()
         self.delete()
@@ -739,27 +706,6 @@ class SchedTimeSessAssignment(models.Model):
         else:
             return None
 
-    @property
-    def area(self):
-        log.unreachable("28 Feb 2017")
-        if not self.session or not self.session.group:
-            return ""
-        if self.session.group.type_id == "irtf":
-            return "irtf"
-        if self.timeslot.type_id == "plenary":
-            return "1plenary"
-        if not self.session.group.parent or not self.session.group.parent.type_id in ["area","irtf"]:
-            return ""
-        return self.session.group.parent.acronym
-
-    @property
-    def slottype(self):
-        log.unreachable("28 Feb 2017")
-        if self.timeslot and self.timeslot.type:
-            return self.timeslot.type.slug
-        else:
-            return ""
-
     def json_url(self):
         if not hasattr(self, '_cached_json_url'):
             self._cached_json_url =  "/meeting/%s/agenda/%s/%s/session/%u.json" % (
@@ -854,13 +800,6 @@ class Constraint(models.Model):
         elif not self.target and self.person:
             return u"%s " % (self.person)
 
-    def status(self):
-        log.unreachable("28 Feb 2017")
-        if self.active_status is not None:
-            return self.active_status
-        else:
-            return True
-
     def json_url(self):
         return "/meeting/%s/constraint/%s.json" % (self.meeting.number, self.id)
 
@@ -1075,25 +1014,6 @@ class Session(models.Model):
     def official_timeslotassignment(self):
         return self.timeslotassignment_for_agenda(self.meeting.agenda)
 
-    def unique_constraints(self):
-        log.unreachable("28 Feb 2017")
-        global constraint_cache_uses, constraint_cache_initials
-        constraint_cache_uses += 1
-        # this cache keeps the automatic placer from visiting the database continuously
-        if self.unique_constraints_dict is not None:
-            constraint_cache_initials += 1
-            return self.unique_constraints_dict
-        self.unique_constraints_dict = dict()
-        for constraint in self.constraints():
-            self.unique_constraints_dict[constraint.target] = constraint
-
-        for constraint in self.reverse_constraints():
-            # update the constraint if there is a previous one, and
-            # it is more important than what we had before
-            if not (constraint in self.unique_constraints_dict) or (self.unique_constraints_dict[constraint.source] < constraint):
-                self.unique_constraints_dict[constraint.source] = constraint
-        return self.unique_constraints_dict
-
     def constraints_dict(self, host_scheme):
         constraint_list = []
         for constraint in self.constraints():
diff --git a/ietf/meeting/urls.py b/ietf/meeting/urls.py
index d50c94ab7..8feab5090 100644
--- a/ietf/meeting/urls.py
+++ b/ietf/meeting/urls.py
@@ -43,7 +43,6 @@ type_ietf_only_patterns = [
     url(r'^timeslots/edit$',                     views.edit_timeslots),
     url(r'^rooms$',                              ajax.timeslot_roomsurl),
     url(r'^room/(?P<roomid>\d+).json$',          ajax.timeslot_roomurl),
-    url(r'^room/(?P<roomid>\d+)(?:.html)?/?$',          views.edit_roomurl),
     url(r'^timeslots$',                          ajax.timeslot_slotsurl),
     url(r'^timeslots.json$',                     ajax.timeslot_slotsurl),
     url(r'^timeslot/(?P<slotid>\d+).json$',      ajax.timeslot_sloturl),
diff --git a/ietf/meeting/views.py b/ietf/meeting/views.py
index 946d84435..be5a7236a 100644
--- a/ietf/meeting/views.py
+++ b/ietf/meeting/views.py
@@ -60,7 +60,6 @@ from ietf.meeting.utils import finalize
 from ietf.secr.proceedings.utils import handle_upload_file
 from ietf.secr.proceedings.proc_utils import (get_progress_stats, post_process, import_audio_files,
     import_youtube_video_urls)
-from ietf.utils import log
 from ietf.utils.mail import send_mail_message
 from ietf.utils.pipe import pipe
 from ietf.utils.pdf import pdf_pages
@@ -268,34 +267,6 @@ class RoomForm(ModelForm):
         model = Room
         exclude = ('meeting',)
 
-@role_required('Secretariat')
-def edit_roomurl(request, num, roomid):
-    log.unreachable("07 Mar 2017")
-    meeting = get_meeting(num)
-
-    try:
-        room = meeting.room_set.get(pk=roomid)
-    except Room.DoesNotExist:
-        raise Http404("No room %u for meeting %s" % (roomid, meeting.name))
-
-    if request.POST:
-        roomform = RoomForm(request.POST, instance=room)
-        new_room = roomform.save(commit=False)
-        new_room.meeting = meeting
-        new_room.save()
-        roomform.save_m2m()
-        return HttpResponseRedirect( reverse(edit_timeslots, args=[meeting.number]) )
-
-    roomform = RoomForm(instance=room)
-    meeting_base_url = request.build_absolute_uri(meeting.base_url())
-    site_base_url = request.build_absolute_uri('/')[:-1] # skip the trailing slash
-    return render(request, "meeting/room_edit.html",
-                                         {"meeting_base_url": meeting_base_url,
-                                          "site_base_url": site_base_url,
-                                          "editroom":  roomform,
-                                          "meeting":meeting,
-                                          "hide_menu": True,
-                                      })
 
 ##############################################################################
 #@role_required('Area Director','Secretariat')
diff --git a/ietf/utils/mail.py b/ietf/utils/mail.py
index 7e4c41a26..b86523fca 100644
--- a/ietf/utils/mail.py
+++ b/ietf/utils/mail.py
@@ -26,7 +26,7 @@ from django.template import Context,RequestContext
 import debug                            # pyflakes:ignore
 
 import ietf
-from ietf.utils.log import log, unreachable
+from ietf.utils.log import log
 from ietf.utils.text import isascii
 
 # Testing mode:
@@ -165,15 +165,6 @@ def mail_context(request):
     else:
         return Context()
   
-def send_mail_subj(request, to, frm, stemplate, template, context, *args, **kwargs):
-    '''
-    Send an email message, exactly as send_mail(), but the
-    subject field is a template.
-    '''
-    unreachable("03 Mar 2017")
-    subject = render_to_string(stemplate, context ).replace("\n"," ").strip()
-    return send_mail(request, to, frm, subject, template, context, *args, **kwargs)
-
 def send_mail(request, to, frm, subject, template, context, *args, **kwargs):
     '''
     Send an email to the destination [list], with the given return