datatracker/ietf/secr/proceedings/models.py

70 lines
2.2 KiB
Python

import os
from django.conf import settings
from django.db import models
from ietf.meeting.models import Meeting
class InterimManager(models.Manager):
'''A custom manager to limit objects to type=interim'''
def get_queryset(self):
return super(InterimManager, self).get_queryset().filter(type='interim')
class InterimMeeting(Meeting):
'''
This class is a proxy of Meeting. It's purpose is to provide extra methods that are
useful for an interim meeting, to help in templates. Most information is derived from
the session associated with this meeting. We are assuming there is only one.
'''
class Meta:
proxy = True
objects = InterimManager()
def group(self):
return self.session_set.all()[0].group
def agenda(self): # pylint: disable=method-hidden
session = self.session_set.all()[0]
agendas = session.materials.exclude(states__slug='deleted').filter(type='agenda')
if agendas:
return agendas[0]
else:
return None
def minutes(self):
session = self.session_set.all()[0]
minutes = session.materials.exclude(states__slug='deleted').filter(type='minutes')
if minutes:
return minutes[0]
else:
return None
def get_proceedings_path(self, group=None):
return os.path.join(self.get_materials_path(),'proceedings.html')
def get_proceedings_url(self, group=None):
'''
If the proceedings file doesn't exist return empty string. For use in templates.
'''
if os.path.exists(self.get_proceedings_path()):
url = "%sproceedings/%s/proceedings.html" % (
settings.IETF_HOST_URL,
self.number)
return url
else:
return ''
class Registration(models.Model):
rsn = models.AutoField(primary_key=True)
fname = models.CharField(max_length=255)
lname = models.CharField(max_length=255)
company = models.CharField(max_length=255)
country = models.CharField(max_length=2)
def __unicode__(self):
return "%s %s" % (self.fname, self.lname)
class Meta:
db_table = 'registrations'