Merged in changes from Pasi.

- Legacy-Id: 1550
This commit is contained in:
Henrik Levkowetz 2009-07-25 12:39:55 +00:00
parent 49bd3daab4
commit b82697ed83
6 changed files with 65 additions and 36 deletions

View file

@ -1,3 +1,13 @@
ietfdb (2.28)
* Show full name in document comment log. From Pasi.
* Optimize meeting agenda page to use less SQL queries. From Pasi.
* Include version in iesg/agenda/documents.txt. From Pasi.
-- Henrik Levkowetz <henrik@levkowetz.com> 25 Jul 2009 14:38:41 +0200
ietfdb (2.27)
* Add support for an iPhone specific agenda format. Going to the html

View file

@ -148,7 +148,7 @@ def document_comments(request, name):
info['by'] = m.group(2)
else:
info['text'] = comment.comment_text
info['by'] = comment.get_username()
info['by'] = comment.get_fullname()
info['textSnippet'] = truncatewords_html(format_textarea(fill(info['text'], 80)), 25)
info['snipped'] = info['textSnippet'][-3:] == "..."
info['commentNumber'] = commentNumber

View file

@ -58,13 +58,13 @@ def get_plenary_agenda(meeting_num, id):
def agenda_info(num=None):
if not num:
num = list(Meeting.objects.all())[-1].meeting_num
timeslots = MeetingTime.objects.filter(meeting=num).order_by("day_id", "time_desc")
timeslots = MeetingTime.objects.select_related().filter(meeting=num).order_by("day_id", "time_desc")
update = get_object_or_404(Switches,id=1)
meeting=get_object_or_404(Meeting, meeting_num=num)
venue = get_object_or_404(MeetingVenue, meeting_num=num)
ads = list(IESGHistory.objects.filter(meeting=num))
ads = list(IESGHistory.objects.select_related().filter(meeting=num))
if not ads:
ads = list(IESGHistory.objects.filter(meeting=str(int(num)-1)))
ads = list(IESGHistory.objects.select_related().filter(meeting=str(int(num)-1)))
ads.sort(key=(lambda item: item.area.area_acronym.acronym))
plenaryw_agenda = get_plenary_agenda(num, -1)
plenaryt_agenda = get_plenary_agenda(num, -2)
@ -92,4 +92,4 @@ def text_agenda(request, num=None):
{"timeslots":timeslots, "update":update, "meeting":meeting, "venue":venue, "ads":ads,
"plenaryw_agenda":plenaryw_agenda, "plenaryt_agenda":plenaryt_agenda, },
RequestContext(request)), mimetype="text/plain")

View file

@ -13,32 +13,40 @@ import datetime
# an interim attribute first)
class ResolveAcronym(object):
def acronym(self):
if hasattr(self, '_acronym_acronym'):
return self._acronym_acronym
try:
interim = self.interim
except AttributeError:
interim = False
if self.irtf:
acronym = IRTF.objects.get(pk=self.group_acronym_id).acronym
o = IRTF.objects.get(pk=self.group_acronym_id)
else:
acronym = Acronym.objects.get(pk=self.group_acronym_id).acronym
o = Acronym.objects.get(pk=self.group_acronym_id)
self._acronym_acronym = o.acronym
self._acronym_name = o.name
acronym = self._acronym_acronym
if interim:
return "i" + acronym
return acronym
else:
return acronym
def acronym_lower(self):
return self.acronym().lower()
def acronym_name(self):
if not hasattr(self, '_acronym_name'):
self.acronym()
try:
interim = self.interim
except AttributeError:
interim = False
if self.irtf:
acronym_name = IRTF.objects.get(pk=self.group_acronym_id).name
else:
acronym_name = Acronym.objects.get(pk=self.group_acronym_id).name
acronym_name = self._acronym_name
if interim:
return acronym_name + " (interim)"
return acronym_name
else:
return acronym_name
def area(self):
if hasattr(self, '_area'):
return self._area
if self.irtf:
area = "irtf"
elif self.group_acronym_id < 0 and self.group_acronym_id > -3:
@ -47,9 +55,10 @@ class ResolveAcronym(object):
area = ""
else:
try:
area = AreaGroup.objects.get(group=self.group_acronym_id).area.area_acronym.acronym
area = AreaGroup.objects.select_related().get(group=self.group_acronym_id).area.area_acronym.acronym
except AreaGroup.DoesNotExist:
area = ""
self._area = area
return area
def area_name(self):
if self.irtf:
@ -67,28 +76,27 @@ class ResolveAcronym(object):
def isWG(self):
if self.irtf:
return False
else:
if not hasattr(self,'_ietfwg'):
try:
g_type_id = IETFWG.objects.get(pk=self.group_acronym_id).group_type_id == 1
if g_type_id == 1:
return True
else:
return False
self._ietfwg = IETFWG.objects.get(pk=self.group_acronym_id)
except IETFWG.DoesNotExist:
return False
self._ietfwg = None
if self._ietfwg and self._ietfwg.group_type_id == 1:
return True
else:
return False
def group_type_str(self):
if self.irtf:
return ""
return ""
else:
try:
g_type_id = IETFWG.objects.get(pk=self.group_acronym_id).group_type_id
if g_type_id == 1:
return "WG"
elif g_type_id == 3:
return "BOF"
else:
return ""
except IETFWG.DoesNotExist:
self.isWG()
if not self._ietfwg:
return ""
elif self._ietfwg.group_type_id == 1:
return "WG"
elif self._ietfwg.group_type_id == 3:
return "BOF"
else:
return ""
TIME_ZONE_CHOICES = (
@ -234,7 +242,7 @@ class MeetingTime(models.Model):
time_desc = models.CharField(maxlength=100)
meeting = models.ForeignKey(Meeting, db_column='meeting_num', unique=True)
day_id = models.IntegerField()
session_name = models.ForeignKey(SessionName)
session_name = models.ForeignKey(SessionName,null=True)
def __str__(self):
return "[%d] |%s| %s" % (self.meeting_id, (self.meeting.start_date + datetime.timedelta(self.day_id)).strftime('%A'), self.time_desc)
def sessions(self):
@ -266,8 +274,11 @@ class MeetingTime(models.Model):
def meeting_date(self):
return self.meeting.get_meeting_date(self.day_id)
def registration(self):
if hasattr(self, '_reg_info'):
return self._reg_info
reg = NonSession.objects.get(meeting=self.meeting, day_id=self.day_id, non_session_ref=1)
reg.name = reg.non_session_ref.name
self._reg_info = reg
return reg
def reg_info(self):
reg_info = self.registration()
@ -341,6 +352,8 @@ class WgMeetingSession(models.Model, ResolveAcronym):
def __str__(self):
return "%s at %s" % (self.acronym(), self.meeting)
def agenda_file(self,interimvar=0):
if hasattr(self, '_agenda_file'):
return self._agenda_file
irtfvar = 0
if self.irtf:
irtfvar = self.group_acronym_id
@ -352,10 +365,15 @@ class WgMeetingSession(models.Model, ResolveAcronym):
interimvar = 0
try:
filename = WgAgenda.objects.get(meeting=self.meeting, group_acronym_id=self.group_acronym_id,irtf=irtfvar,interim=interimvar).filename
dir = Proceeding.objects.get(meeting_num=self.meeting).dir_name
if self.meeting_id in WgMeetingSession._dirs:
dir = WgMeetingSession._dirs[self.meeting_id]
else:
dir = Proceeding.objects.get(meeting_num=self.meeting).dir_name
WgMeetingSession._dirs[self.meeting_id]=dir
retvar = "%s/agenda/%s" % (dir,filename)
except WgAgenda.DoesNotExist:
retvar = ""
self._agenda_file = retvar
return retvar
def minute_file(self,interimvar=0):
irtfvar = 0
@ -402,6 +420,7 @@ class WgMeetingSession(models.Model, ResolveAcronym):
db_table = 'wg_meeting_sessions'
class Admin:
pass
_dirs = {}
class WgAgenda(models.Model, ResolveAcronym):
meeting = models.ForeignKey(Meeting, db_column='meeting_num')

View file

@ -41,7 +41,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
{% else %}<a href="/doc/{{doc.id.draft_name}}/">{{doc.id.draft_name_and_revision}}</a>{% endif %}</td>
<td class="title">{{ doc.title|escape }}</td>
<td class="date">{{ doc.publication_date }}
{% if doc.publication_date|timesince_days|less_than:"14" %}<br/><span style="padding:0 2px;background:yellow;font-size:85%;">new</span>{%endif%}
{% if doc.publication_date|timesince_days|less_than:"14" %}<br/><span style="padding:0 2px;background:yellow;font-size:85%;">{% if not doc.rfc%}<a href="http://tools.ietf.org/rfcdiff?url2={{doc.id.draft_name_and_revision}}">new</a>{%else%}new{%endif%}</span>{%endif%}
{% if doc.id and doc.id.expected_expiration_date and doc.id.expected_expiration_date|timesince_days|greater_than:"-14" %}<br/><span style="padding:0 2px;font-size:85%;background:yellow;">expires soon</span>{%endif%}
</td>

View file

@ -30,5 +30,5 @@ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
{% endcomment %}# Fields: telechat date, filename (draft-foo-bar or rfc1234), intended status, rfc editor submission flag (0=no, 1=yes), area acronym, AD name{% for doc in docs %}
{{ doc.telechat_date }} {{ doc.document.filename }} {{ doc.document.intended_status }} {{doc.via_rfc_editor}} {{doc.area_acronym|lower}} {{doc.token_name }}{% endfor %}
{% endcomment %}# Fields: telechat date, filename (draft-foo-bar or rfc1234), intended status, rfc editor submission flag (0=no, 1=yes), area acronym, AD name, version{% for doc in docs %}
{{ doc.telechat_date }} {{ doc.document.filename }} {{ doc.document.intended_status }} {{doc.via_rfc_editor}} {{doc.area_acronym|lower}} {{doc.token_name }} {{doc.document.revision}}{% endfor %}