Merged in the merge work branch personal/henrik/r6270 which provides the agenda scheduling tool step 3, from a merge of branch/ssw/agenda/v4.70 from mcr@sandelman.ca; and also substantial fixes to the test framework, and more.
- Legacy-Id: 6328
This commit is contained in:
commit
342bc5bf96
1
dajaxice/__init__.py
Normal file
1
dajaxice/__init__.py
Normal file
|
@ -0,0 +1 @@
|
|||
VERSION = (0, 2, 0, 0, 'beta')
|
186
dajaxice/core/Dajaxice.py
Normal file
186
dajaxice/core/Dajaxice.py
Normal file
|
@ -0,0 +1,186 @@
|
|||
#import logging
|
||||
|
||||
from django.conf import settings
|
||||
|
||||
# Python 2.7 has an importlib with import_module.
|
||||
# For older Pythons, Django's bundled copy provides it.
|
||||
# For older Django's dajaxice reduced_import_module.
|
||||
try:
|
||||
from importlib import import_module
|
||||
except:
|
||||
try:
|
||||
from django.utils.importlib import import_module
|
||||
except:
|
||||
from dajaxice.utils import simple_import_module as import_module
|
||||
|
||||
#log = logging.getLogger('dajaxice.DajaxiceRequest')
|
||||
import syslog
|
||||
def warning(msg):
|
||||
syslog.syslog(syslog.LOG_WANRNING, msg)
|
||||
log = syslog
|
||||
log.warning = warning
|
||||
|
||||
|
||||
class DajaxiceFunction(object):
|
||||
|
||||
def __init__(self, name, path, doc=None):
|
||||
self.name = name
|
||||
self.path = path
|
||||
self.doc = doc
|
||||
|
||||
def get_callable_path(self):
|
||||
return '%s.%s' % (self.path.replace('.ajax', ''), self.name)
|
||||
|
||||
def __cmp__(self, other):
|
||||
return (self.name == other.name and self.path == other.path)
|
||||
|
||||
|
||||
class DajaxiceModule(object):
|
||||
def __init__(self, module):
|
||||
self.functions = []
|
||||
self.sub_modules = []
|
||||
self.name = module[0]
|
||||
|
||||
sub_module = module[1:]
|
||||
if len(sub_module) != 0:
|
||||
self.add_submodule(sub_module)
|
||||
|
||||
def get_module(self, module):
|
||||
"""
|
||||
Recursively get_module util we found it.
|
||||
"""
|
||||
if len(module) == 0:
|
||||
return self
|
||||
|
||||
for dajaxice_module in self.sub_modules:
|
||||
if dajaxice_module.name == module[0]:
|
||||
return dajaxice_module.get_module(module[1:])
|
||||
return None
|
||||
|
||||
def add_function(self, function):
|
||||
self.functions.append(function)
|
||||
|
||||
def has_sub_modules(self):
|
||||
return len(self.sub_modules) > 0
|
||||
|
||||
def add_submodule(self, module):
|
||||
"""
|
||||
Recursively add_submodule, if it's not registered, create it.
|
||||
"""
|
||||
if len(module) == 0:
|
||||
return
|
||||
else:
|
||||
sub_module = self.exist_submodule(module[0])
|
||||
|
||||
if type(sub_module) == int:
|
||||
self.sub_modules[sub_module].add_submodule(module[1:])
|
||||
else:
|
||||
self.sub_modules.append(DajaxiceModule(module))
|
||||
|
||||
def exist_submodule(self, name):
|
||||
"""
|
||||
Check if submodule name was already registered.
|
||||
"""
|
||||
for module in self.sub_modules:
|
||||
if module.name == name:
|
||||
return self.sub_modules.index(module)
|
||||
return False
|
||||
|
||||
|
||||
class Dajaxice(object):
|
||||
def __init__(self):
|
||||
self._registry = []
|
||||
self._callable = []
|
||||
|
||||
for function in getattr(settings, 'DAJAXICE_FUNCTIONS', ()):
|
||||
function = function.rsplit('.', 1)
|
||||
self.register_function(function[0], function[1])
|
||||
|
||||
def register(self, function):
|
||||
self.register_function(function.__module__, function.__name__, function.__doc__)
|
||||
|
||||
def register_function(self, module, name, doc=None):
|
||||
"""
|
||||
Register function at 'module' depth
|
||||
"""
|
||||
#Create the dajaxice function.
|
||||
function = DajaxiceFunction(name=name, path=module, doc=doc)
|
||||
|
||||
#Check for already registered functions.
|
||||
full_path = '%s.%s' % (module, name)
|
||||
if full_path in self._callable:
|
||||
log.warning('%s already registered as dajaxice function.' % full_path)
|
||||
return
|
||||
|
||||
self._callable.append(full_path)
|
||||
|
||||
#Dajaxice path without ajax.
|
||||
module_without_ajax = module.replace('.ajax', '').split('.')
|
||||
|
||||
#Register module if necessary.
|
||||
exist_module = self._exist_module(module_without_ajax[0])
|
||||
|
||||
if type(exist_module) == int:
|
||||
self._registry[exist_module].add_submodule(module_without_ajax[1:])
|
||||
else:
|
||||
self._registry.append(DajaxiceModule(module_without_ajax))
|
||||
|
||||
#Register Function
|
||||
module = self.get_module(module_without_ajax)
|
||||
if module:
|
||||
module.add_function(function)
|
||||
|
||||
def get_module(self, module):
|
||||
"""
|
||||
Recursively get module from registry
|
||||
"""
|
||||
for dajaxice_module in self._registry:
|
||||
if dajaxice_module.name == module[0]:
|
||||
return dajaxice_module.get_module(module[1:])
|
||||
return None
|
||||
|
||||
def is_callable(self, name):
|
||||
return name in self._callable
|
||||
|
||||
def _exist_module(self, module_name):
|
||||
for module in self._registry:
|
||||
if module.name == module_name:
|
||||
return self._registry.index(module)
|
||||
return False
|
||||
|
||||
def get_functions(self):
|
||||
return self._registry
|
||||
|
||||
|
||||
LOADING_DAJAXICE = False
|
||||
|
||||
|
||||
def dajaxice_autodiscover():
|
||||
"""
|
||||
Auto-discover INSTALLED_APPS ajax.py modules and fail silently when
|
||||
not present.
|
||||
NOTE: dajaxice_autodiscover was inspired/copied from django.contrib.admin autodiscover
|
||||
"""
|
||||
global LOADING_DAJAXICE
|
||||
if LOADING_DAJAXICE:
|
||||
return
|
||||
LOADING_DAJAXICE = True
|
||||
|
||||
import imp
|
||||
from django.conf import settings
|
||||
|
||||
for app in settings.INSTALLED_APPS:
|
||||
|
||||
try:
|
||||
app_path = import_module(app).__path__
|
||||
except AttributeError:
|
||||
continue
|
||||
|
||||
try:
|
||||
imp.find_module('ajax', app_path)
|
||||
except ImportError:
|
||||
continue
|
||||
|
||||
import_module("%s.ajax" % app)
|
||||
|
||||
LOADING_DAJAXICE = False
|
228
dajaxice/core/DajaxiceRequest.py
Normal file
228
dajaxice/core/DajaxiceRequest.py
Normal file
|
@ -0,0 +1,228 @@
|
|||
#----------------------------------------------------------------------
|
||||
# Copyright (c) 2009-2011 Benito Jorge Bastida
|
||||
# All rights reserved.
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions are
|
||||
# met:
|
||||
#
|
||||
# o Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions, and the disclaimer that follows.
|
||||
#
|
||||
# o Redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions, and the following disclaimer in
|
||||
# the documentation and/or other materials provided with the
|
||||
# distribution.
|
||||
#
|
||||
# o Neither the name of Digital Creations nor the names of its
|
||||
# contributors may be used to endorse or promote products derived
|
||||
# from this software without specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY DIGITAL CREATIONS AND CONTRIBUTORS *AS
|
||||
# IS* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL DIGITAL
|
||||
# CREATIONS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
# OF USE, 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.
|
||||
#----------------------------------------------------------------------
|
||||
|
||||
import os
|
||||
import sys
|
||||
#import logging
|
||||
import traceback
|
||||
|
||||
from django.conf import settings
|
||||
from django.utils import simplejson
|
||||
from django.http import HttpResponse
|
||||
|
||||
from dajaxice.core import dajaxice_functions
|
||||
from dajaxice.exceptions import FunctionNotCallableError, DajaxiceImportError
|
||||
|
||||
#log = logging.getLogger('dajaxice.DajaxiceRequest')
|
||||
import syslog
|
||||
def debug(msg):
|
||||
syslog.syslog(syslog.LOG_DEBUG, msg)
|
||||
def info(msg):
|
||||
syslog.syslog(syslog.LOG_INFO, msg)
|
||||
def warning(msg):
|
||||
syslog.syslog(syslog.LOG_WANRNING, msg)
|
||||
def error(msg):
|
||||
syslog.syslog(syslog.LOG_ERR, msg)
|
||||
log = syslog
|
||||
log.debug = debug
|
||||
log.info = info
|
||||
log.warning = warning
|
||||
log.error = error
|
||||
|
||||
# Python 2.7 has an importlib with import_module.
|
||||
# For older Pythons, Django's bundled copy provides it.
|
||||
# For older Django's dajaxice reduced_import_module.
|
||||
try:
|
||||
from importlib import import_module
|
||||
except:
|
||||
try:
|
||||
from django.utils.importlib import import_module
|
||||
except:
|
||||
from dajaxice.utils import simple_import_module as import_module
|
||||
|
||||
|
||||
def safe_dict(d):
|
||||
"""
|
||||
Recursively clone json structure with UTF-8 dictionary keys
|
||||
http://www.gossamer-threads.com/lists/python/bugs/684379
|
||||
"""
|
||||
if isinstance(d, dict):
|
||||
return dict([(k.encode('utf-8'), safe_dict(v)) for k, v in d.iteritems()])
|
||||
elif isinstance(d, list):
|
||||
return [safe_dict(x) for x in d]
|
||||
else:
|
||||
return d
|
||||
|
||||
|
||||
class DajaxiceRequest(object):
|
||||
|
||||
def __init__(self, request, call):
|
||||
call = call.rsplit('.', 1)
|
||||
self.app_name = call[0]
|
||||
self.method = call[1]
|
||||
self.request = request
|
||||
|
||||
self.project_name = os.environ['DJANGO_SETTINGS_MODULE'].split('.')[0]
|
||||
self.module = "%s.ajax" % self.app_name
|
||||
self.full_name = "%s.%s" % (self.module, self.method)
|
||||
|
||||
@staticmethod
|
||||
def get_js_functions():
|
||||
return dajaxice_functions.get_functions()
|
||||
|
||||
@staticmethod
|
||||
def get_media_prefix():
|
||||
return getattr(settings, 'DAJAXICE_MEDIA_PREFIX', "dajaxice")
|
||||
|
||||
@staticmethod
|
||||
def get_functions():
|
||||
return getattr(settings, 'DAJAXICE_FUNCTIONS', ())
|
||||
|
||||
@staticmethod
|
||||
def get_debug():
|
||||
return getattr(settings, 'DAJAXICE_DEBUG', True)
|
||||
|
||||
@staticmethod
|
||||
def get_notify_exceptions():
|
||||
return getattr(settings, 'DAJAXICE_NOTIFY_EXCEPTIONS', False)
|
||||
|
||||
@staticmethod
|
||||
def get_cache_control():
|
||||
if settings.DEBUG:
|
||||
return 0
|
||||
return getattr(settings, 'DAJAXICE_CACHE_CONTROL', 5 * 24 * 60 * 60)
|
||||
|
||||
@staticmethod
|
||||
def get_xmlhttprequest_js_import():
|
||||
return getattr(settings, 'DAJAXICE_XMLHTTPREQUEST_JS_IMPORT', True)
|
||||
|
||||
@staticmethod
|
||||
def get_json2_js_import():
|
||||
return getattr(settings, 'DAJAXICE_JSON2_JS_IMPORT', True)
|
||||
|
||||
@staticmethod
|
||||
def get_exception_message():
|
||||
return getattr(settings, 'DAJAXICE_EXCEPTION', u'DAJAXICE_EXCEPTION')
|
||||
|
||||
@staticmethod
|
||||
def get_js_docstrings():
|
||||
return getattr(settings, 'DAJAXICE_JS_DOCSTRINGS', False)
|
||||
|
||||
def _is_callable(self):
|
||||
"""
|
||||
Return if the request function was registered.
|
||||
"""
|
||||
return dajaxice_functions.is_callable(self.full_name)
|
||||
|
||||
def _get_ajax_function(self):
|
||||
"""
|
||||
Return a callable ajax function.
|
||||
This function should be imported according the Django version.
|
||||
"""
|
||||
return self._modern_get_ajax_function()
|
||||
|
||||
def _modern_get_ajax_function(self):
|
||||
"""
|
||||
Return a callable ajax function.
|
||||
This function uses django.utils.importlib
|
||||
"""
|
||||
self.module_import_name = "%s.%s" % (self.project_name, self.module)
|
||||
try:
|
||||
return self._modern_import()
|
||||
except:
|
||||
self.module_import_name = self.module
|
||||
return self._modern_import()
|
||||
|
||||
def _modern_import(self):
|
||||
try:
|
||||
mod = import_module(self.module_import_name)
|
||||
return mod.__getattribute__(self.method)
|
||||
except:
|
||||
raise DajaxiceImportError()
|
||||
|
||||
def process(self):
|
||||
"""
|
||||
Process the dajax request calling the apropiate method.
|
||||
"""
|
||||
if self._is_callable():
|
||||
log.debug('Function %s is callable' % self.full_name)
|
||||
|
||||
argv = self.request.POST.get('argv')
|
||||
if argv != 'undefined':
|
||||
try:
|
||||
argv = simplejson.loads(self.request.POST.get('argv'))
|
||||
argv = safe_dict(argv)
|
||||
except Exception, e:
|
||||
log.error('argv exception %s' % e)
|
||||
argv = {}
|
||||
else:
|
||||
argv = {}
|
||||
|
||||
log.debug('argv %s' % argv)
|
||||
|
||||
try:
|
||||
thefunction = self._get_ajax_function()
|
||||
response = '%s' % thefunction(self.request, **argv)
|
||||
|
||||
except Exception, e:
|
||||
trace = '\n'.join(traceback.format_exception(*sys.exc_info()))
|
||||
log.error(trace)
|
||||
response = '%s' % DajaxiceRequest.get_exception_message()
|
||||
|
||||
if DajaxiceRequest.get_notify_exceptions():
|
||||
self.notify_exception(self.request, sys.exc_info())
|
||||
|
||||
log.info('response: %s' % response)
|
||||
return HttpResponse(response, mimetype="application/x-json")
|
||||
|
||||
else:
|
||||
log.debug('Function %s is not callable' % self.full_name)
|
||||
raise FunctionNotCallableError(name=self.full_name)
|
||||
|
||||
def notify_exception(self, request, exc_info):
|
||||
"""
|
||||
Send Exception traceback to ADMINS
|
||||
Similar to BaseHandler.handle_uncaught_exception
|
||||
"""
|
||||
from django.conf import settings
|
||||
from django.core.mail import mail_admins
|
||||
|
||||
subject = 'Error (%s IP): %s' % ((request.META.get('REMOTE_ADDR') in settings.INTERNAL_IPS and 'internal' or 'EXTERNAL'), request.path)
|
||||
try:
|
||||
request_repr = repr(request)
|
||||
except:
|
||||
request_repr = "Request repr() unavailable"
|
||||
|
||||
trace = '\n'.join(traceback.format_exception(*(exc_info or sys.exc_info())))
|
||||
message = "%s\n\n%s" % (trace, request_repr)
|
||||
mail_admins(subject, message, fail_silently=True)
|
5
dajaxice/core/__init__.py
Normal file
5
dajaxice/core/__init__.py
Normal file
|
@ -0,0 +1,5 @@
|
|||
from Dajaxice import Dajaxice
|
||||
dajaxice_functions = Dajaxice()
|
||||
|
||||
from DajaxiceRequest import DajaxiceRequest
|
||||
from Dajaxice import dajaxice_autodiscover
|
10
dajaxice/decorators.py
Normal file
10
dajaxice/decorators.py
Normal file
|
@ -0,0 +1,10 @@
|
|||
from dajaxice.core import dajaxice_functions
|
||||
|
||||
|
||||
def dajaxice_register(original_function):
|
||||
"""
|
||||
Register the original funcion and returns it
|
||||
"""
|
||||
|
||||
dajaxice_functions.register(original_function)
|
||||
return original_function
|
41
dajaxice/exceptions.py
Normal file
41
dajaxice/exceptions.py
Normal file
|
@ -0,0 +1,41 @@
|
|||
#----------------------------------------------------------------------
|
||||
# Copyright (c) 2009-2011 Benito Jorge Bastida
|
||||
# All rights reserved.
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions are
|
||||
# met:
|
||||
#
|
||||
# o Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions, and the disclaimer that follows.
|
||||
#
|
||||
# o Redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions, and the following disclaimer in
|
||||
# the documentation and/or other materials provided with the
|
||||
# distribution.
|
||||
#
|
||||
# o Neither the name of Digital Creations nor the names of its
|
||||
# contributors may be used to endorse or promote products derived
|
||||
# from this software without specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY DIGITAL CREATIONS AND CONTRIBUTORS *AS
|
||||
# IS* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL DIGITAL
|
||||
# CREATIONS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
# OF USE, 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.
|
||||
#----------------------------------------------------------------------
|
||||
|
||||
|
||||
class FunctionNotCallableError(Exception):
|
||||
def __init__(self, name):
|
||||
self.name = name
|
||||
|
||||
|
||||
class DajaxiceImportError(Exception):
|
||||
pass
|
75
dajaxice/finders.py
Normal file
75
dajaxice/finders.py
Normal file
|
@ -0,0 +1,75 @@
|
|||
import os
|
||||
import tempfile
|
||||
|
||||
from django.contrib.staticfiles import finders
|
||||
from django.template import Context
|
||||
from django.template.loader import get_template
|
||||
from django.core.exceptions import SuspiciousOperation
|
||||
|
||||
|
||||
class VirtualStorage(finders.FileSystemStorage):
|
||||
"""" Mock a FileSystemStorage to build tmp files on demand."""
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
self._files_cache = {}
|
||||
super(VirtualStorage, self).__init__(*args, **kwargs)
|
||||
|
||||
def get_or_create_file(self, path):
|
||||
if path not in self.files:
|
||||
return ''
|
||||
|
||||
data = getattr(self, self.files[path])()
|
||||
|
||||
try:
|
||||
current_file = open(self._files_cache[path])
|
||||
current_data = current_file.read()
|
||||
current_file.close()
|
||||
if current_data != data:
|
||||
os.remove(path)
|
||||
raise Exception("Invalid data")
|
||||
except Exception:
|
||||
handle, tmp_path = tempfile.mkstemp()
|
||||
tmp_file = open(tmp_path, 'w')
|
||||
tmp_file.write(data)
|
||||
tmp_file.close()
|
||||
self._files_cache[path] = tmp_path
|
||||
|
||||
return self._files_cache[path]
|
||||
|
||||
def exists(self, name):
|
||||
return name in self.files
|
||||
|
||||
def listdir(self, path):
|
||||
folders, files = [], []
|
||||
for f in self.files:
|
||||
if f.startswith(path):
|
||||
f = f.replace(path, '', 1)
|
||||
if os.sep in f:
|
||||
folders.append(f.split(os.sep, 1)[0])
|
||||
else:
|
||||
files.append(f)
|
||||
return folders, files
|
||||
|
||||
def path(self, name):
|
||||
try:
|
||||
path = self.get_or_create_file(name)
|
||||
except ValueError:
|
||||
raise SuspiciousOperation("Attempted access to '%s' denied." % name)
|
||||
return os.path.normpath(path)
|
||||
|
||||
|
||||
class DajaxiceStorage(VirtualStorage):
|
||||
|
||||
files = {'dajaxice/dajaxice.core.js': 'dajaxice_core_js'}
|
||||
|
||||
def dajaxice_core_js(self):
|
||||
from dajaxice.core import dajaxice_autodiscover, dajaxice_config
|
||||
|
||||
dajaxice_autodiscover()
|
||||
|
||||
c = Context({'dajaxice_config': dajaxice_config})
|
||||
return get_template('dajaxice/dajaxice.core.js').render(c)
|
||||
|
||||
|
||||
class DajaxiceFinder(finders.BaseStorageFinder):
|
||||
storage = DajaxiceStorage()
|
0
dajaxice/management/__init__.py
Normal file
0
dajaxice/management/__init__.py
Normal file
0
dajaxice/management/commands/__init__.py
Normal file
0
dajaxice/management/commands/__init__.py
Normal file
83
dajaxice/management/commands/generate_static_dajaxice.py
Normal file
83
dajaxice/management/commands/generate_static_dajaxice.py
Normal file
|
@ -0,0 +1,83 @@
|
|||
#----------------------------------------------------------------------
|
||||
# Copyright (c) 2009-2011 Benito Jorge Bastida
|
||||
# All rights reserved.
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions are
|
||||
# met:
|
||||
#
|
||||
# o Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions, and the disclaimer that follows.
|
||||
#
|
||||
# o Redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions, and the following disclaimer in
|
||||
# the documentation and/or other materials provided with the
|
||||
# distribution.
|
||||
#
|
||||
# o Neither the name of Digital Creations nor the names of its
|
||||
# contributors may be used to endorse or promote products derived
|
||||
# from this software without specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY DIGITAL CREATIONS AND CONTRIBUTORS *AS
|
||||
# IS* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL DIGITAL
|
||||
# CREATIONS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
# OF USE, 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.
|
||||
#----------------------------------------------------------------------
|
||||
|
||||
import httplib
|
||||
import urllib
|
||||
|
||||
from django.core.management.base import BaseCommand
|
||||
from django.template.loader import render_to_string
|
||||
from optparse import make_option
|
||||
|
||||
from dajaxice.core import DajaxiceRequest
|
||||
from dajaxice.core import dajaxice_autodiscover
|
||||
dajaxice_autodiscover()
|
||||
|
||||
|
||||
class Command(BaseCommand):
|
||||
help = "Generate dajaxice.core.js file to import it as static file"
|
||||
args = "[--compile]"
|
||||
option_list = BaseCommand.option_list + (
|
||||
make_option('--compile', default='no', dest='compile', help='Compile output using Google closure-compiler'),
|
||||
)
|
||||
|
||||
requires_model_validation = False
|
||||
|
||||
def handle(self, *app_labels, **options):
|
||||
compile_output = options.get('compile', 'yes')
|
||||
data = {'dajaxice_js_functions': DajaxiceRequest.get_js_functions(),
|
||||
'DAJAXICE_URL_PREFIX': DajaxiceRequest.get_media_prefix(),
|
||||
'DAJAXICE_XMLHTTPREQUEST_JS_IMPORT': DajaxiceRequest.get_xmlhttprequest_js_import(),
|
||||
'DAJAXICE_JSON2_JS_IMPORT': DajaxiceRequest.get_json2_js_import(),
|
||||
'DAJAXICE_EXCEPTION': DajaxiceRequest.get_exception_message()}
|
||||
|
||||
js = render_to_string('dajaxice/dajaxice.core.js', data)
|
||||
if compile_output.lower() == "closure":
|
||||
print self.complie_js_with_closure(js)
|
||||
else:
|
||||
print js
|
||||
|
||||
def complie_js_with_closure(self, js):
|
||||
params = urllib.urlencode([
|
||||
('js_code', js),
|
||||
('compilation_level', 'ADVANCED_OPTIMIZATIONS'),
|
||||
('output_format', 'text'),
|
||||
('output_info', 'compiled_code'),
|
||||
])
|
||||
# Always use the following value for the Content-type header.
|
||||
headers = {"Content-type": "application/x-www-form-urlencoded"}
|
||||
conn = httplib.HTTPConnection('closure-compiler.appspot.com')
|
||||
conn.request('POST', '/compile', params, headers)
|
||||
response = conn.getresponse()
|
||||
data = response.read()
|
||||
conn.close()
|
||||
return data
|
0
dajaxice/models.py
Normal file
0
dajaxice/models.py
Normal file
128
dajaxice/templates/dajaxice/dajaxice.core.js
Normal file
128
dajaxice/templates/dajaxice/dajaxice.core.js
Normal file
|
@ -0,0 +1,128 @@
|
|||
var Dajaxice = {
|
||||
{% for module in dajaxice_js_functions %}
|
||||
{% include "dajaxice/dajaxice_core_loop.js" %}
|
||||
{% endfor %}{% ifnotequal dajaxice_js_functions|length 0 %},{% endifnotequal %}
|
||||
|
||||
get_cookie: function(name)
|
||||
{
|
||||
var cookieValue = null;
|
||||
if (document.cookie && document.cookie != '') {
|
||||
var cookies = document.cookie.split(';');
|
||||
for (var i = 0; i < cookies.length; i++) {
|
||||
var cookie = cookies[i].toString().replace(/^\s+/, "").replace(/\s+$/, "");
|
||||
// Does this cookie string begin with the name we want?
|
||||
if (cookie.substring(0, name.length + 1) == (name + '=')) {
|
||||
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return cookieValue;
|
||||
},
|
||||
|
||||
call: function(dajaxice_function, dajaxice_callback, argv, exception_callback)
|
||||
{
|
||||
var send_data = [];
|
||||
var is_callback_a_function = (typeof(dajaxice_callback) == 'function');
|
||||
if(!is_callback_a_function){
|
||||
alert("dajaxice_callback should be a function since dajaxice 0.2")
|
||||
}
|
||||
|
||||
if(exception_callback==undefined || typeof(dajaxice_callback) != 'function'){
|
||||
exception_callback = this.get_setting('default_exception_callback');
|
||||
}
|
||||
|
||||
send_data.push('argv='+encodeURIComponent(JSON.stringify(argv)));
|
||||
send_data = send_data.join('&');
|
||||
var oXMLHttpRequest = new XMLHttpRequest;
|
||||
oXMLHttpRequest.open('POST', '/{{DAJAXICE_URL_PREFIX}}/'+dajaxice_function+'/');
|
||||
oXMLHttpRequest.setRequestHeader("X-Requested-With", "XMLHttpRequest");
|
||||
oXMLHttpRequest.setRequestHeader("X-CSRFToken",Dajaxice.get_cookie('csrftoken'));
|
||||
oXMLHttpRequest.onreadystatechange = function() {
|
||||
if (this.readyState == XMLHttpRequest.DONE) {
|
||||
if(this.responseText == Dajaxice.EXCEPTION){
|
||||
exception_callback();
|
||||
}
|
||||
else{
|
||||
try{
|
||||
dajaxice_callback(JSON.parse(this.responseText));
|
||||
}
|
||||
catch(exception){
|
||||
dajaxice_callback(this.responseText);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
oXMLHttpRequest.send(send_data);
|
||||
},
|
||||
|
||||
setup: function(settings)
|
||||
{
|
||||
this.settings = settings;
|
||||
},
|
||||
|
||||
get_setting: function(key){
|
||||
if(this.settings == undefined || this.settings[key] == undefined){
|
||||
return this.default_settings[key];
|
||||
}
|
||||
return this.settings[key];
|
||||
},
|
||||
|
||||
default_exception_callback: function(data){
|
||||
alert('Something goes wrong');
|
||||
}
|
||||
};
|
||||
|
||||
Dajaxice.EXCEPTION = '{{ DAJAXICE_EXCEPTION }}';
|
||||
Dajaxice.default_settings = {'default_exception_callback': Dajaxice.default_exception_callback}
|
||||
|
||||
window['Dajaxice'] = Dajaxice;
|
||||
|
||||
{% comment %}
|
||||
/*
|
||||
XMLHttpRequest.js Compiled with Google Closure
|
||||
|
||||
XMLHttpRequest.js Copyright (C) 2008 Sergey Ilinsky (http://www.ilinsky.com)
|
||||
|
||||
This work is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This work is distributed in the hope that it will be useful,
|
||||
but without any warranty; without even the implied warranty of
|
||||
merchantability or fitness for a particular purpose. See the
|
||||
GNU Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this library; if not, write to the Free Software Foundation, Inc.,
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
{% endcomment %}
|
||||
{% if DAJAXICE_XMLHTTPREQUEST_JS_IMPORT %}
|
||||
(function(){function b(){this._object=i?new i:new window.ActiveXObject("Microsoft.XMLHTTP");this._listeners=[]}function k(a){b.onreadystatechange&&b.onreadystatechange.apply(a);a.dispatchEvent({type:"readystatechange",bubbles:false,cancelable:false,timeStamp:new Date+0})}function p(a){var c=a.responseXML,d=a.responseText;if(h&&d&&c&&!c.documentElement&&a.getResponseHeader("Content-Type").match(/[^\/]+\/[^\+]+\+xml/)){c=new window.ActiveXObject("Microsoft.XMLDOM");c.async=false;c.validateOnParse=false;
|
||||
c.loadXML(d)}if(c)if(h&&c.parseError!=0||!c.documentElement||c.documentElement&&c.documentElement.tagName=="parsererror")return null;return c}function o(a){try{a.responseText=a._object.responseText}catch(c){}try{a.responseXML=p(a._object)}catch(d){}try{a.status=a._object.status}catch(g){}try{a.statusText=a._object.statusText}catch(e){}}function l(a){a._object.onreadystatechange=new window.Function}var i=window.XMLHttpRequest,j=!!window.controllers,h=window.document.all&&!window.opera;if(j&&i.wrapped)b.wrapped=
|
||||
i.wrapped;b.UNSENT=0;b.OPENED=1;b.HEADERS_RECEIVED=2;b.LOADING=3;b.DONE=4;b.prototype.readyState=b.UNSENT;b.prototype.responseText="";b.prototype.responseXML=null;b.prototype.status=0;b.prototype.statusText="";b.prototype.onreadystatechange=null;b.onreadystatechange=null;b.onopen=null;b.onsend=null;b.onabort=null;b.prototype.open=function(a,c,d,g,e){delete this._headers;if(arguments.length<3)d=true;this._async=d;var f=this,m=this.readyState,n;if(h&&d){n=function(){if(m!=b.DONE){l(f);f.abort()}};window.attachEvent("onunload",
|
||||
n)}b.onopen&&b.onopen.apply(this,arguments);if(arguments.length>4)this._object.open(a,c,d,g,e);else arguments.length>3?this._object.open(a,c,d,g):this._object.open(a,c,d);if(!j&&!h){this.readyState=b.OPENED;k(this)}this._object.onreadystatechange=function(){if(!(j&&!d)){f.readyState=f._object.readyState;o(f);if(f._aborted)f.readyState=b.UNSENT;else{if(f.readyState==b.DONE){l(f);h&&d&&window.detachEvent("onunload",n)}m!=f.readyState&&k(f);m=f.readyState}}}};b.prototype.send=function(a){b.onsend&&b.onsend.apply(this,
|
||||
arguments);if(a&&a.nodeType){a=window.XMLSerializer?(new window.XMLSerializer).serializeToString(a):a.xml;this._headers["Content-Type"]||this._object.setRequestHeader("Content-Type","application/xml")}this._object.send(a);if(j&&!this._async){this.readyState=b.OPENED;for(o(this);this.readyState<b.DONE;){this.readyState++;k(this);if(this._aborted)return}}};b.prototype.abort=function(){b.onabort&&b.onabort.apply(this,arguments);if(this.readyState>b.UNSENT)this._aborted=true;this._object.abort();l(this)};
|
||||
b.prototype.getAllResponseHeaders=function(){return this._object.getAllResponseHeaders()};b.prototype.getResponseHeader=function(a){return this._object.getResponseHeader(a)};b.prototype.setRequestHeader=function(a,c){if(!this._headers)this._headers={};this._headers[a]=c;return this._object.setRequestHeader(a,c)};b.prototype.addEventListener=function(a,c,d){for(var g=0,e;e=this._listeners[g];g++)if(e[0]==a&&e[1]==c&&e[2]==d)return;this._listeners.push([a,c,d])};b.prototype.removeEventListener=function(a,
|
||||
c,d){for(var g=0,e;e=this._listeners[g];g++)if(e[0]==a&&e[1]==c&&e[2]==d)break;e&&this._listeners.splice(g,1)};b.prototype.dispatchEvent=function(a){a={type:a.type,target:this,currentTarget:this,eventPhase:2,bubbles:a.bubbles,cancelable:a.cancelable,timeStamp:a.timeStamp,stopPropagation:function(){},preventDefault:function(){},initEvent:function(){}};if(a.type=="readystatechange"&&this.onreadystatechange)(this.onreadystatechange.handleEvent||this.onreadystatechange).apply(this,[a]);for(var c=0,d;d=
|
||||
this._listeners[c];c++)if(d[0]==a.type&&!d[2])(d[1].handleEvent||d[1]).apply(this,[a])};b.prototype.toString=function(){return"[object XMLHttpRequest]"};b.toString=function(){return"[XMLHttpRequest]"};if(!window.Function.prototype.apply)window.Function.prototype.apply=function(a,c){c||(c=[]);a.__func=this;a.__func(c[0],c[1],c[2],c[3],c[4]);delete a.__func};window.XMLHttpRequest=b})();
|
||||
{% endif %}
|
||||
|
||||
{% comment %}
|
||||
/*
|
||||
http://www.json.org/json2.js Compiled with Google Closure
|
||||
This code was released under Public Domain by json.org , Thanks!
|
||||
I hope that in the future this code won't be neccessary, but today all browsers doesn't supports JSON.stringify().
|
||||
*/
|
||||
{% endcomment %}
|
||||
{% if DAJAXICE_JSON2_JS_IMPORT %}
|
||||
if(!this.JSON)this.JSON={};
|
||||
(function(){function k(a){return a<10?"0"+a:a}function n(a){o.lastIndex=0;return o.test(a)?'"'+a.replace(o,function(c){var d=q[c];return typeof d==="string"?d:"\\u"+("0000"+c.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+a+'"'}function l(a,c){var d,f,i=g,e,b=c[a];if(b&&typeof b==="object"&&typeof b.toJSON==="function")b=b.toJSON(a);if(typeof j==="function")b=j.call(c,a,b);switch(typeof b){case "string":return n(b);case "number":return isFinite(b)?String(b):"null";case "boolean":case "null":return String(b);case "object":if(!b)return"null";
|
||||
g+=m;e=[];if(Object.prototype.toString.apply(b)==="[object Array]"){f=b.length;for(a=0;a<f;a+=1)e[a]=l(a,b)||"null";c=e.length===0?"[]":g?"[\n"+g+e.join(",\n"+g)+"\n"+i+"]":"["+e.join(",")+"]";g=i;return c}if(j&&typeof j==="object"){f=j.length;for(a=0;a<f;a+=1){d=j[a];if(typeof d==="string")if(c=l(d,b))e.push(n(d)+(g?": ":":")+c)}}else for(d in b)if(Object.hasOwnProperty.call(b,d))if(c=l(d,b))e.push(n(d)+(g?": ":":")+c);c=e.length===0?"{}":g?"{\n"+g+e.join(",\n"+g)+"\n"+i+"}":"{"+e.join(",")+"}";
|
||||
g=i;return c}}if(typeof Date.prototype.toJSON!=="function"){Date.prototype.toJSON=function(){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+k(this.getUTCMonth()+1)+"-"+k(this.getUTCDate())+"T"+k(this.getUTCHours())+":"+k(this.getUTCMinutes())+":"+k(this.getUTCSeconds())+"Z":null};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(){return this.valueOf()}}var p=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
|
||||
o=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,g,m,q={"\u0008":"\\b","\t":"\\t","\n":"\\n","\u000c":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},j;if(typeof JSON.stringify!=="function")JSON.stringify=function(a,c,d){var f;m=g="";if(typeof d==="number")for(f=0;f<d;f+=1)m+=" ";else if(typeof d==="string")m=d;if((j=c)&&typeof c!=="function"&&(typeof c!=="object"||typeof c.length!=="number"))throw new Error("JSON.stringify");return l("",
|
||||
{"":a})};if(typeof JSON.parse!=="function")JSON.parse=function(a,c){function d(f,i){var e,b,h=f[i];if(h&&typeof h==="object")for(e in h)if(Object.hasOwnProperty.call(h,e)){b=d(h,e);if(b!==undefined)h[e]=b;else delete h[e]}return c.call(f,i,h)}p.lastIndex=0;if(p.test(a))a=a.replace(p,function(f){return"\\u"+("0000"+f.charCodeAt(0).toString(16)).slice(-4)});if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
|
||||
"]").replace(/(?:^|:|,)(?:\s*\[)+/g,""))){a=eval("("+a+")");return typeof c==="function"?d({"":a},""):a}throw new SyntaxError("JSON.parse");}})();
|
||||
{% endif %}
|
16
dajaxice/templates/dajaxice/dajaxice_core_loop.js
Normal file
16
dajaxice/templates/dajaxice/dajaxice_core_loop.js
Normal file
|
@ -0,0 +1,16 @@
|
|||
{{ module.name }}: {
|
||||
{% for function in module.functions %}
|
||||
{% if function.doc and DAJAXICE_JS_DOCSTRINGS %}/* {{ function.doc|default:'' }}*/ {% endif %}
|
||||
{{ function.name }}: function(callback_function, argv, exception_callback){
|
||||
Dajaxice.call('{{function.get_callable_path}}', callback_function, argv, exception_callback);
|
||||
}{% if not forloop.last %},{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
{% for sub_module in module.sub_modules %}
|
||||
{% with "dajaxice/dajaxice_core_loop.js" as filename %}
|
||||
{% with sub_module as module %}
|
||||
{% include filename %}
|
||||
{% endwith %}
|
||||
{% endwith %}
|
||||
{% endfor %}
|
||||
}{% if not forloop.last %},{% endif %}
|
5
dajaxice/templates/dajaxice/dajaxice_function_loop.js
Normal file
5
dajaxice/templates/dajaxice/dajaxice_function_loop.js
Normal file
|
@ -0,0 +1,5 @@
|
|||
{% for function_name, function in module.functions.items %}
|
||||
{{ function_name }}: function(callback_function, argv, custom_settings){
|
||||
Dajaxice.call('{{ function.name }}', '{{ function.method }}', callback_function, argv, custom_settings);
|
||||
}{% if not forloop.last or top %},{% endif %}
|
||||
{% endfor %}
|
1
dajaxice/templates/dajaxice/dajaxice_js_import.html
Normal file
1
dajaxice/templates/dajaxice/dajaxice_js_import.html
Normal file
|
@ -0,0 +1 @@
|
|||
<script src="/{{ DAJAXICE_MEDIA_PREFIX }}/dajaxice.core.js" type="text/javascript" charset="utf-8"></script>
|
8
dajaxice/templates/dajaxice/dajaxice_module_loop.js
Normal file
8
dajaxice/templates/dajaxice/dajaxice_module_loop.js
Normal file
|
@ -0,0 +1,8 @@
|
|||
{{ name }}: {
|
||||
{% include "dajaxice/dajaxice_function_loop.js" %}
|
||||
{% for name, sub_module in module.submodules.items %}
|
||||
{% with filename="dajaxice/dajaxice_module_loop.js" module=sub_module %}
|
||||
{% include filename %}
|
||||
{% endwith %}
|
||||
{% endfor %}
|
||||
}{% if not forloop.last %},{% endif %}
|
0
dajaxice/templatetags/__init__.py
Normal file
0
dajaxice/templatetags/__init__.py
Normal file
42
dajaxice/templatetags/dajaxice_templatetags.py
Normal file
42
dajaxice/templatetags/dajaxice_templatetags.py
Normal file
|
@ -0,0 +1,42 @@
|
|||
#----------------------------------------------------------------------
|
||||
# Copyright (c) 2009-2011 Benito Jorge Bastida
|
||||
# All rights reserved.
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions are
|
||||
# met:
|
||||
#
|
||||
# o Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions, and the disclaimer that follows.
|
||||
#
|
||||
# o Redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions, and the following disclaimer in
|
||||
# the documentation and/or other materials provided with the
|
||||
# distribution.
|
||||
#
|
||||
# o Neither the name of Digital Creations nor the names of its
|
||||
# contributors may be used to endorse or promote products derived
|
||||
# from this software without specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY DIGITAL CREATIONS AND CONTRIBUTORS *AS
|
||||
# IS* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL DIGITAL
|
||||
# CREATIONS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
# OF USE, 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.
|
||||
#----------------------------------------------------------------------
|
||||
|
||||
from django import template
|
||||
from dajaxice.core import DajaxiceRequest
|
||||
|
||||
register = template.Library()
|
||||
|
||||
|
||||
@register.inclusion_tag('dajaxice/dajaxice_js_import.html', takes_context=True)
|
||||
def dajaxice_js_import(context):
|
||||
return {'DAJAXICE_MEDIA_PREFIX': DajaxiceRequest.get_media_prefix()}
|
174
dajaxice/tests/__init__.py
Normal file
174
dajaxice/tests/__init__.py
Normal file
|
@ -0,0 +1,174 @@
|
|||
#----------------------------------------------------------------------
|
||||
# Copyright (c) 2009-2011 Benito Jorge Bastida
|
||||
# All rights reserved.
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions are
|
||||
# met:
|
||||
#
|
||||
# o Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions, and the disclaimer that follows.
|
||||
#
|
||||
# o Redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions, and the following disclaimer in
|
||||
# the documentation and/or other materials provided with the
|
||||
# distribution.
|
||||
#
|
||||
# o Neither the name of Digital Creations nor the names of its
|
||||
# contributors may be used to endorse or promote products derived
|
||||
# from this software without specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY DIGITAL CREATIONS AND CONTRIBUTORS *AS
|
||||
# IS* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL DIGITAL
|
||||
# CREATIONS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
# OF USE, 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.
|
||||
#----------------------------------------------------------------------
|
||||
|
||||
import os
|
||||
import unittest
|
||||
|
||||
from django.test import TestCase
|
||||
from django.conf import settings
|
||||
|
||||
from dajaxice.exceptions import FunctionNotCallableError, DajaxiceImportError
|
||||
from dajaxice.core import DajaxiceRequest
|
||||
from dajaxice.core.Dajaxice import Dajaxice, DajaxiceModule, DajaxiceFunction
|
||||
from dajaxice.core import dajaxice_functions
|
||||
|
||||
|
||||
class DjangoIntegrationTest(TestCase):
|
||||
|
||||
urls = 'dajaxice.tests.urls'
|
||||
|
||||
def setUp(self):
|
||||
settings.DAJAXICE_MEDIA_PREFIX = "dajaxice"
|
||||
settings.DAJAXICE_DEBUG = False
|
||||
settings.INSTALLED_APPS += ('dajaxice.tests', 'dajaxice.tests.submodules',)
|
||||
os.environ['DJANGO_SETTINGS_MODULE'] = 'dajaxice'
|
||||
|
||||
def test_calling_not_registered_function(self):
|
||||
self.failUnlessRaises(FunctionNotCallableError, self.client.post, '/dajaxice/dajaxice.tests.this_function_not_exist/', {'callback': 'my_callback'})
|
||||
|
||||
def test_calling_registered_function(self):
|
||||
response = self.client.post('/dajaxice/dajaxice.tests.test_foo/', {'callback': 'my_callback'})
|
||||
|
||||
self.failUnlessEqual(response.status_code, 200)
|
||||
self.failUnlessEqual(response.content, 'my_callback()')
|
||||
|
||||
def test_calling_registered_function_with_params(self):
|
||||
|
||||
response = self.client.post('/dajaxice/dajaxice.tests.test_foo_with_params/', {'callback': 'my_callback', 'argv': '{"param1":"value1"}'})
|
||||
|
||||
self.failUnlessEqual(response.status_code, 200)
|
||||
self.failUnlessEqual(response.content, 'my_callback("value1")')
|
||||
|
||||
def test_bad_function(self):
|
||||
|
||||
response = self.client.post('/dajaxice/dajaxice.tests.test_ajax_exception/', {'callback': 'my_callback'})
|
||||
self.failUnlessEqual(response.status_code, 200)
|
||||
self.failUnlessEqual(response.content, "my_callback('DAJAXICE_EXCEPTION')")
|
||||
|
||||
def test_is_callable(self):
|
||||
|
||||
dr = DajaxiceRequest(None, 'dajaxice.tests.test_registered_function')
|
||||
self.failUnless(dr._is_callable())
|
||||
|
||||
dr = DajaxiceRequest(None, 'dajaxice.tests.test_ajax_not_registered')
|
||||
self.failIf(dr._is_callable())
|
||||
|
||||
def test_get_js_functions(self):
|
||||
|
||||
js_functions = DajaxiceRequest.get_js_functions()
|
||||
|
||||
functions = [DajaxiceFunction('test_registered_function', 'dajaxice.tests.ajax.test_registered_function'),
|
||||
DajaxiceFunction('test_string', 'dajaxice.tests.ajax.test_string'),
|
||||
DajaxiceFunction('test_ajax_exception', 'dajaxice.tests.ajax.test_ajax_exception'),
|
||||
DajaxiceFunction('test_foo', 'dajaxice.tests.ajax.test_foo'),
|
||||
DajaxiceFunction('test_foo_with_params', 'dajaxice.tests.ajax.test_foo_with_params'),
|
||||
DajaxiceFunction('test_submodule_registered_function', 'dajaxice.tests.submodules.ajax.test_submodule_registered_function')]
|
||||
|
||||
callables = [f.path for f in functions]
|
||||
|
||||
self.failUnlessEqual(len(js_functions), 1)
|
||||
self.failUnlessEqual(dajaxice_functions._callable, callables)
|
||||
|
||||
sub = js_functions[0]
|
||||
self.failUnlessEqual(len(sub.sub_modules), 1)
|
||||
self.failUnlessEqual(len(sub.functions), 0)
|
||||
self.failUnlessEqual(sub.name, 'dajaxice')
|
||||
|
||||
sub = js_functions[0].sub_modules[0]
|
||||
self.failUnlessEqual(len(sub.sub_modules), 1)
|
||||
self.failUnlessEqual(len(sub.functions), 5)
|
||||
self.failUnlessEqual(sub.functions, functions[:-1])
|
||||
self.failUnlessEqual(sub.name, 'tests')
|
||||
|
||||
sub = js_functions[0].sub_modules[0].sub_modules[0]
|
||||
self.failUnlessEqual(len(sub.sub_modules), 0)
|
||||
self.failUnlessEqual(len(sub.functions), 1)
|
||||
self.failUnlessEqual(sub.functions, functions[-1:])
|
||||
self.failUnlessEqual(sub.name, 'submodules')
|
||||
|
||||
def test_get_ajax_function(self):
|
||||
|
||||
# Test modern Import with a real ajax function
|
||||
dr = DajaxiceRequest(None, 'dajaxice.tests.test_foo')
|
||||
function = dr._modern_get_ajax_function()
|
||||
self.failUnless(hasattr(function, '__call__'))
|
||||
|
||||
# Test modern Import without a real ajax function
|
||||
dr = DajaxiceRequest(None, 'dajaxice.tests.test_foo2')
|
||||
self.failUnlessRaises(DajaxiceImportError, dr._modern_get_ajax_function)
|
||||
|
||||
|
||||
class DajaxiceFunctionTest(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.function = DajaxiceFunction('my_function', 'module.submodule.foo.ajax')
|
||||
|
||||
def test_constructor(self):
|
||||
self.failUnlessEqual(self.function.name, 'my_function')
|
||||
self.failUnlessEqual(self.function.path, 'module.submodule.foo.ajax')
|
||||
|
||||
def test_get_callable_path(self):
|
||||
self.failUnlessEqual(self.function.get_callable_path(), 'module.submodule.foo.my_function')
|
||||
|
||||
|
||||
class DajaxiceModuleTest(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.module = DajaxiceModule('module.submodule.foo.ajax'.split('.'))
|
||||
|
||||
def test_constructor(self):
|
||||
self.failUnlessEqual(self.module.functions, [])
|
||||
self.failUnlessEqual(self.module.name, 'module')
|
||||
|
||||
self.failUnlessEqual(len(self.module.sub_modules), 1)
|
||||
|
||||
def test_add_function(self):
|
||||
function = DajaxiceFunction('my_function', 'module.submodule.foo.ajax')
|
||||
self.failUnlessEqual(len(self.module.functions), 0)
|
||||
self.module.add_function(function)
|
||||
self.failUnlessEqual(len(self.module.functions), 1)
|
||||
|
||||
def test_has_sub_modules(self):
|
||||
self.failUnlessEqual(self.module.has_sub_modules(), True)
|
||||
|
||||
def test_exist_submodule(self):
|
||||
self.failUnlessEqual(self.module.exist_submodule('submodule'), 0)
|
||||
self.assertFalse(self.module.exist_submodule('other'))
|
||||
self.module.add_submodule('other.foo'.split('.'))
|
||||
self.failUnlessEqual(self.module.exist_submodule('other'), 1)
|
||||
|
||||
def test_add_submodule(self):
|
||||
self.failUnlessEqual(len(self.module.sub_modules), 1)
|
||||
self.module.add_submodule('other.foo'.split('.'))
|
||||
self.failUnlessEqual(len(self.module.sub_modules), 2)
|
||||
self.assertTrue(type(self.module.sub_modules[1]), DajaxiceModule)
|
61
dajaxice/tests/ajax.py
Normal file
61
dajaxice/tests/ajax.py
Normal file
|
@ -0,0 +1,61 @@
|
|||
#----------------------------------------------------------------------
|
||||
# Copyright (c) 2009-2011 Benito Jorge Bastida
|
||||
# All rights reserved.
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions are
|
||||
# met:
|
||||
#
|
||||
# o Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions, and the disclaimer that follows.
|
||||
#
|
||||
# o Redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions, and the following disclaimer in
|
||||
# the documentation and/or other materials provided with the
|
||||
# distribution.
|
||||
#
|
||||
# o Neither the name of Digital Creations nor the names of its
|
||||
# contributors may be used to endorse or promote products derived
|
||||
# from this software without specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY DIGITAL CREATIONS AND CONTRIBUTORS *AS
|
||||
# IS* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL DIGITAL
|
||||
# CREATIONS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
# OF USE, 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.
|
||||
#----------------------------------------------------------------------
|
||||
|
||||
from django.utils import simplejson
|
||||
from dajaxice.core import dajaxice_functions
|
||||
|
||||
|
||||
def test_registered_function(request):
|
||||
return ""
|
||||
dajaxice_functions.register(test_registered_function)
|
||||
|
||||
|
||||
def test_string(request):
|
||||
return simplejson.dumps({'string': 'hello world'})
|
||||
dajaxice_functions.register(test_string)
|
||||
|
||||
|
||||
def test_ajax_exception(request):
|
||||
raise Exception()
|
||||
return
|
||||
dajaxice_functions.register(test_ajax_exception)
|
||||
|
||||
|
||||
def test_foo(request):
|
||||
return ""
|
||||
dajaxice_functions.register(test_foo)
|
||||
|
||||
|
||||
def test_foo_with_params(request, param1):
|
||||
return simplejson.dumps(param1)
|
||||
dajaxice_functions.register(test_foo_with_params)
|
1
dajaxice/tests/requirements.txt
Normal file
1
dajaxice/tests/requirements.txt
Normal file
|
@ -0,0 +1 @@
|
|||
Django
|
0
dajaxice/tests/submodules/__init__.py
Normal file
0
dajaxice/tests/submodules/__init__.py
Normal file
40
dajaxice/tests/submodules/ajax.py
Normal file
40
dajaxice/tests/submodules/ajax.py
Normal file
|
@ -0,0 +1,40 @@
|
|||
#----------------------------------------------------------------------
|
||||
# Copyright (c) 2009-2011 Benito Jorge Bastida
|
||||
# All rights reserved.
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions are
|
||||
# met:
|
||||
#
|
||||
# o Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions, and the disclaimer that follows.
|
||||
#
|
||||
# o Redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions, and the following disclaimer in
|
||||
# the documentation and/or other materials provided with the
|
||||
# distribution.
|
||||
#
|
||||
# o Neither the name of Digital Creations nor the names of its
|
||||
# contributors may be used to endorse or promote products derived
|
||||
# from this software without specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY DIGITAL CREATIONS AND CONTRIBUTORS *AS
|
||||
# IS* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL DIGITAL
|
||||
# CREATIONS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
# OF USE, 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.
|
||||
#----------------------------------------------------------------------
|
||||
|
||||
|
||||
from dajaxice.core import dajaxice_functions
|
||||
|
||||
|
||||
def test_submodule_registered_function(request):
|
||||
return ""
|
||||
dajaxice_functions.register(test_submodule_registered_function)
|
44
dajaxice/tests/urls.py
Normal file
44
dajaxice/tests/urls.py
Normal file
|
@ -0,0 +1,44 @@
|
|||
#----------------------------------------------------------------------
|
||||
# Copyright (c) 2009-2011 Benito Jorge Bastida
|
||||
# All rights reserved.
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions are
|
||||
# met:
|
||||
#
|
||||
# o Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions, and the disclaimer that follows.
|
||||
#
|
||||
# o Redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions, and the following disclaimer in
|
||||
# the documentation and/or other materials provided with the
|
||||
# distribution.
|
||||
#
|
||||
# o Neither the name of Digital Creations nor the names of its
|
||||
# contributors may be used to endorse or promote products derived
|
||||
# from this software without specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY DIGITAL CREATIONS AND CONTRIBUTORS *AS
|
||||
# IS* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL DIGITAL
|
||||
# CREATIONS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
# OF USE, 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.
|
||||
#----------------------------------------------------------------------
|
||||
|
||||
from django.conf.urls.defaults import *
|
||||
from django.conf import settings
|
||||
from dajaxice.core import dajaxice_autodiscover
|
||||
|
||||
|
||||
dajaxice_autodiscover()
|
||||
|
||||
urlpatterns = patterns('',
|
||||
#Dajaxice URLS
|
||||
(r'^%s/' % settings.DAJAXICE_MEDIA_PREFIX, include('dajaxice.urls')),
|
||||
)
|
39
dajaxice/urls.py
Normal file
39
dajaxice/urls.py
Normal file
|
@ -0,0 +1,39 @@
|
|||
#----------------------------------------------------------------------
|
||||
# Copyright (c) 2009-2011 Benito Jorge Bastida
|
||||
# All rights reserved.
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions are
|
||||
# met:
|
||||
#
|
||||
# o Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions, and the disclaimer that follows.
|
||||
#
|
||||
# o Redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions, and the following disclaimer in
|
||||
# the documentation and/or other materials provided with the
|
||||
# distribution.
|
||||
#
|
||||
# o Neither the name of Digital Creations nor the names of its
|
||||
# contributors may be used to endorse or promote products derived
|
||||
# from this software without specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY DIGITAL CREATIONS AND CONTRIBUTORS *AS
|
||||
# IS* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL DIGITAL
|
||||
# CREATIONS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
# OF USE, 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.
|
||||
#----------------------------------------------------------------------
|
||||
|
||||
from django.conf.urls.defaults import *
|
||||
|
||||
|
||||
urlpatterns = patterns('',
|
||||
url(r'^dajaxice.core.js$', 'dajaxice.views.js_core'),
|
||||
url(r'^(.*)/$', 'dajaxice.views.dajaxice_request'),)
|
50
dajaxice/utils.py
Normal file
50
dajaxice/utils.py
Normal file
|
@ -0,0 +1,50 @@
|
|||
#----------------------------------------------------------------------
|
||||
# Copyright (c) 2009-2011 Benito Jorge Bastida
|
||||
# All rights reserved.
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions are
|
||||
# met:
|
||||
#
|
||||
# o Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions, and the disclaimer that follows.
|
||||
#
|
||||
# o Redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions, and the following disclaimer in
|
||||
# the documentation and/or other materials provided with the
|
||||
# distribution.
|
||||
#
|
||||
# o Neither the name of Digital Creations nor the names of its
|
||||
# contributors may be used to endorse or promote products derived
|
||||
# from this software without specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY DIGITAL CREATIONS AND CONTRIBUTORS *AS
|
||||
# IS* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL DIGITAL
|
||||
# CREATIONS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
# OF USE, 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.
|
||||
#----------------------------------------------------------------------
|
||||
|
||||
|
||||
def deserialize_form(data):
|
||||
"""
|
||||
Create a new QueryDict from a serialized form.
|
||||
"""
|
||||
from django.http import QueryDict
|
||||
data = QueryDict(query_string=unicode(data).encode('utf-8'))
|
||||
return data
|
||||
|
||||
|
||||
def simple_import_module(name):
|
||||
"""
|
||||
Reduced version of import_module
|
||||
"""
|
||||
import sys
|
||||
__import__(name)
|
||||
return sys.modules[name]
|
62
dajaxice/views.py
Normal file
62
dajaxice/views.py
Normal file
|
@ -0,0 +1,62 @@
|
|||
#----------------------------------------------------------------------
|
||||
# Copyright (c) 2009-2011 Benito Jorge Bastida
|
||||
# All rights reserved.
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions are
|
||||
# met:
|
||||
#
|
||||
# o Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions, and the disclaimer that follows.
|
||||
#
|
||||
# o Redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions, and the following disclaimer in
|
||||
# the documentation and/or other materials provided with the
|
||||
# distribution.
|
||||
#
|
||||
# o Neither the name of Digital Creations nor the names of its
|
||||
# contributors may be used to endorse or promote products derived
|
||||
# from this software without specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY DIGITAL CREATIONS AND CONTRIBUTORS *AS
|
||||
# IS* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL DIGITAL
|
||||
# CREATIONS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
# OF USE, 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.
|
||||
#----------------------------------------------------------------------
|
||||
|
||||
from django.shortcuts import render_to_response
|
||||
from django.views.decorators.cache import cache_control
|
||||
|
||||
from dajaxice.core import DajaxiceRequest
|
||||
|
||||
|
||||
def dajaxice_request(request, call):
|
||||
"""
|
||||
dajaxice_request
|
||||
Uses DajaxRequest to handle dajax request.
|
||||
Return the apropiate json according app_name and method.
|
||||
"""
|
||||
return DajaxiceRequest(request, call).process()
|
||||
|
||||
|
||||
@cache_control(max_age=DajaxiceRequest.get_cache_control())
|
||||
def js_core(request):
|
||||
"""
|
||||
Return the dajax JS code according settings.DAJAXICE_FUNCTIONS
|
||||
registered functions.
|
||||
"""
|
||||
data = {'dajaxice_js_functions': DajaxiceRequest.get_js_functions(),
|
||||
'DAJAXICE_URL_PREFIX': DajaxiceRequest.get_media_prefix(),
|
||||
'DAJAXICE_XMLHTTPREQUEST_JS_IMPORT': DajaxiceRequest.get_xmlhttprequest_js_import(),
|
||||
'DAJAXICE_JSON2_JS_IMPORT': DajaxiceRequest.get_json2_js_import(),
|
||||
'DAJAXICE_EXCEPTION': DajaxiceRequest.get_exception_message(),
|
||||
'DAJAXICE_JS_DOCSTRINGS': DajaxiceRequest.get_js_docstrings()}
|
||||
|
||||
return render_to_response('dajaxice/dajaxice.core.js', data, mimetype="text/javascript")
|
26
debug.py
26
debug.py
|
@ -1,6 +1,7 @@
|
|||
import sys
|
||||
import time as timeutils
|
||||
import inspect
|
||||
|
||||
try:
|
||||
import syslog
|
||||
logger = syslog.syslog
|
||||
|
@ -15,11 +16,14 @@ except ImportError:
|
|||
pformat = lambda x: x
|
||||
|
||||
import cProfile
|
||||
import traceback as tb
|
||||
|
||||
try:
|
||||
from django.conf import settings
|
||||
debug = settings.DEBUG
|
||||
except ImportError:
|
||||
debug = True
|
||||
|
||||
from decorator import decorator
|
||||
|
||||
# A debug decorator, written by Paul Butler, taken from
|
||||
|
@ -34,7 +38,7 @@ increment = 2
|
|||
# Number of times to indent output
|
||||
# A list is used to force access by reference
|
||||
_report_indent = [4]
|
||||
_mark = timeutils.clock()
|
||||
_mark = [ timeutils.clock() ]
|
||||
|
||||
def set_indent(i):
|
||||
_report_indent[0] = i
|
||||
|
@ -79,16 +83,15 @@ def trace(fn): # renamed from 'report' by henrik 16 Jun 2011
|
|||
return fn
|
||||
|
||||
def mark():
|
||||
say("! mark")
|
||||
_mark = timeutils.clock()
|
||||
_mark[0] = timeutils.clock()
|
||||
|
||||
def lap(s):
|
||||
tau = timeutils.clock() - _mark
|
||||
tau = timeutils.clock() - _mark[0]
|
||||
say("> %s: %.3fs since mark" % (s, tau))
|
||||
|
||||
def clock(s):
|
||||
lap(s)
|
||||
_mark = timeutils.clock()
|
||||
_mark[0] = timeutils.clock()
|
||||
|
||||
def time(fn):
|
||||
"""Decorator to print timing information about a function call.
|
||||
|
@ -170,3 +173,16 @@ def profile(fn):
|
|||
else:
|
||||
return fn
|
||||
|
||||
def traceback():
|
||||
if debug:
|
||||
indent = ' ' * (_report_indent[0])
|
||||
for s in tb.format_stack()[:-1]:
|
||||
sys.stderr.write("%s%s" % (indent, s))
|
||||
|
||||
def info(name):
|
||||
if debug:
|
||||
frame = inspect.stack()[1][0]
|
||||
value = eval(name, frame.f_globals, frame.f_locals)
|
||||
indent = ' ' * (_report_indent[0])
|
||||
sys.stderr.write("%s%s: %s %s\n" % (indent, name, value, type(value)))
|
||||
|
||||
|
|
251
decorator.py
251
decorator.py
|
@ -1,251 +0,0 @@
|
|||
########################## LICENCE ###############################
|
||||
|
||||
# Copyright (c) 2005-2012, Michele Simionato
|
||||
# All rights reserved.
|
||||
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions are
|
||||
# met:
|
||||
|
||||
# Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
# Redistributions in bytecode form must reproduce the above copyright
|
||||
# notice, this list of conditions and the following disclaimer in
|
||||
# the documentation and/or other materials provided with the
|
||||
# distribution.
|
||||
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
# HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
# OF USE, 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.
|
||||
|
||||
"""
|
||||
Decorator module, see http://pypi.python.org/pypi/decorator
|
||||
for the documentation.
|
||||
"""
|
||||
|
||||
__version__ = '3.4.0'
|
||||
|
||||
__all__ = ["decorator", "FunctionMaker", "contextmanager"]
|
||||
|
||||
import sys, re, inspect
|
||||
if sys.version >= '3':
|
||||
from inspect import getfullargspec
|
||||
def get_init(cls):
|
||||
return cls.__init__
|
||||
else:
|
||||
class getfullargspec(object):
|
||||
"A quick and dirty replacement for getfullargspec for Python 2.X"
|
||||
def __init__(self, f):
|
||||
self.args, self.varargs, self.varkw, self.defaults = \
|
||||
inspect.getargspec(f)
|
||||
self.kwonlyargs = []
|
||||
self.kwonlydefaults = None
|
||||
def __iter__(self):
|
||||
yield self.args
|
||||
yield self.varargs
|
||||
yield self.varkw
|
||||
yield self.defaults
|
||||
def get_init(cls):
|
||||
return cls.__init__.im_func
|
||||
|
||||
DEF = re.compile('\s*def\s*([_\w][_\w\d]*)\s*\(')
|
||||
|
||||
# basic functionality
|
||||
class FunctionMaker(object):
|
||||
"""
|
||||
An object with the ability to create functions with a given signature.
|
||||
It has attributes name, doc, module, signature, defaults, dict and
|
||||
methods update and make.
|
||||
"""
|
||||
def __init__(self, func=None, name=None, signature=None,
|
||||
defaults=None, doc=None, module=None, funcdict=None):
|
||||
self.shortsignature = signature
|
||||
if func:
|
||||
# func can be a class or a callable, but not an instance method
|
||||
self.name = func.__name__
|
||||
if self.name == '<lambda>': # small hack for lambda functions
|
||||
self.name = '_lambda_'
|
||||
self.doc = func.__doc__
|
||||
self.module = func.__module__
|
||||
if inspect.isfunction(func):
|
||||
argspec = getfullargspec(func)
|
||||
self.annotations = getattr(func, '__annotations__', {})
|
||||
for a in ('args', 'varargs', 'varkw', 'defaults', 'kwonlyargs',
|
||||
'kwonlydefaults'):
|
||||
setattr(self, a, getattr(argspec, a))
|
||||
for i, arg in enumerate(self.args):
|
||||
setattr(self, 'arg%d' % i, arg)
|
||||
if sys.version < '3': # easy way
|
||||
self.shortsignature = self.signature = \
|
||||
inspect.formatargspec(
|
||||
formatvalue=lambda val: "", *argspec)[1:-1]
|
||||
else: # Python 3 way
|
||||
allargs = list(self.args)
|
||||
allshortargs = list(self.args)
|
||||
if self.varargs:
|
||||
allargs.append('*' + self.varargs)
|
||||
allshortargs.append('*' + self.varargs)
|
||||
elif self.kwonlyargs:
|
||||
allargs.append('*') # single star syntax
|
||||
for a in self.kwonlyargs:
|
||||
allargs.append('%s=None' % a)
|
||||
allshortargs.append('%s=%s' % (a, a))
|
||||
if self.varkw:
|
||||
allargs.append('**' + self.varkw)
|
||||
allshortargs.append('**' + self.varkw)
|
||||
self.signature = ', '.join(allargs)
|
||||
self.shortsignature = ', '.join(allshortargs)
|
||||
self.dict = func.__dict__.copy()
|
||||
# func=None happens when decorating a caller
|
||||
if name:
|
||||
self.name = name
|
||||
if signature is not None:
|
||||
self.signature = signature
|
||||
if defaults:
|
||||
self.defaults = defaults
|
||||
if doc:
|
||||
self.doc = doc
|
||||
if module:
|
||||
self.module = module
|
||||
if funcdict:
|
||||
self.dict = funcdict
|
||||
# check existence required attributes
|
||||
assert hasattr(self, 'name')
|
||||
if not hasattr(self, 'signature'):
|
||||
raise TypeError('You are decorating a non function: %s' % func)
|
||||
|
||||
def update(self, func, **kw):
|
||||
"Update the signature of func with the data in self"
|
||||
func.__name__ = self.name
|
||||
func.__doc__ = getattr(self, 'doc', None)
|
||||
func.__dict__ = getattr(self, 'dict', {})
|
||||
func.func_defaults = getattr(self, 'defaults', ())
|
||||
func.__kwdefaults__ = getattr(self, 'kwonlydefaults', None)
|
||||
func.__annotations__ = getattr(self, 'annotations', None)
|
||||
callermodule = sys._getframe(3).f_globals.get('__name__', '?')
|
||||
func.__module__ = getattr(self, 'module', callermodule)
|
||||
func.__dict__.update(kw)
|
||||
|
||||
def make(self, src_templ, evaldict=None, addsource=False, **attrs):
|
||||
"Make a new function from a given template and update the signature"
|
||||
src = src_templ % vars(self) # expand name and signature
|
||||
evaldict = evaldict or {}
|
||||
mo = DEF.match(src)
|
||||
if mo is None:
|
||||
raise SyntaxError('not a valid function template\n%s' % src)
|
||||
name = mo.group(1) # extract the function name
|
||||
names = set([name] + [arg.strip(' *') for arg in
|
||||
self.shortsignature.split(',')])
|
||||
for n in names:
|
||||
if n in ('_func_', '_call_'):
|
||||
raise NameError('%s is overridden in\n%s' % (n, src))
|
||||
if not src.endswith('\n'): # add a newline just for safety
|
||||
src += '\n' # this is needed in old versions of Python
|
||||
try:
|
||||
code = compile(src, '<string>', 'single')
|
||||
# print >> sys.stderr, 'Compiling %s' % src
|
||||
exec code in evaldict
|
||||
except:
|
||||
print >> sys.stderr, 'Error in generated code:'
|
||||
print >> sys.stderr, src
|
||||
raise
|
||||
func = evaldict[name]
|
||||
if addsource:
|
||||
attrs['__source__'] = src
|
||||
self.update(func, **attrs)
|
||||
return func
|
||||
|
||||
@classmethod
|
||||
def create(cls, obj, body, evaldict, defaults=None,
|
||||
doc=None, module=None, addsource=True, **attrs):
|
||||
"""
|
||||
Create a function from the strings name, signature and body.
|
||||
evaldict is the evaluation dictionary. If addsource is true an attribute
|
||||
__source__ is added to the result. The attributes attrs are added,
|
||||
if any.
|
||||
"""
|
||||
if isinstance(obj, str): # "name(signature)"
|
||||
name, rest = obj.strip().split('(', 1)
|
||||
signature = rest[:-1] #strip a right parens
|
||||
func = None
|
||||
else: # a function
|
||||
name = None
|
||||
signature = None
|
||||
func = obj
|
||||
self = cls(func, name, signature, defaults, doc, module)
|
||||
ibody = '\n'.join(' ' + line for line in body.splitlines())
|
||||
return self.make('def %(name)s(%(signature)s):\n' + ibody,
|
||||
evaldict, addsource, **attrs)
|
||||
|
||||
def decorator(caller, func=None):
|
||||
"""
|
||||
decorator(caller) converts a caller function into a decorator;
|
||||
decorator(caller, func) decorates a function using a caller.
|
||||
"""
|
||||
if func is not None: # returns a decorated function
|
||||
evaldict = func.func_globals.copy()
|
||||
evaldict['_call_'] = caller
|
||||
evaldict['_func_'] = func
|
||||
return FunctionMaker.create(
|
||||
func, "return _call_(_func_, %(shortsignature)s)",
|
||||
evaldict, undecorated=func, __wrapped__=func)
|
||||
else: # returns a decorator
|
||||
if inspect.isclass(caller):
|
||||
name = caller.__name__.lower()
|
||||
callerfunc = get_init(caller)
|
||||
doc = 'decorator(%s) converts functions/generators into ' \
|
||||
'factories of %s objects' % (caller.__name__, caller.__name__)
|
||||
fun = getfullargspec(callerfunc).args[1] # second arg
|
||||
elif inspect.isfunction(caller):
|
||||
name = '_lambda_' if caller.__name__ == '<lambda>' \
|
||||
else caller.__name__
|
||||
callerfunc = caller
|
||||
doc = caller.__doc__
|
||||
fun = getfullargspec(callerfunc).args[0] # first arg
|
||||
else: # assume caller is an object with a __call__ method
|
||||
name = caller.__class__.__name__.lower()
|
||||
callerfunc = caller.__call__.im_func
|
||||
doc = caller.__call__.__doc__
|
||||
fun = getfullargspec(callerfunc).args[1] # second arg
|
||||
evaldict = callerfunc.func_globals.copy()
|
||||
evaldict['_call_'] = caller
|
||||
evaldict['decorator'] = decorator
|
||||
return FunctionMaker.create(
|
||||
'%s(%s)' % (name, fun),
|
||||
'return decorator(_call_, %s)' % fun,
|
||||
evaldict, undecorated=caller, __wrapped__=caller,
|
||||
doc=doc, module=caller.__module__)
|
||||
|
||||
######################### contextmanager ########################
|
||||
|
||||
def __call__(self, func):
|
||||
'Context manager decorator'
|
||||
return FunctionMaker.create(
|
||||
func, "with _self_: return _func_(%(shortsignature)s)",
|
||||
dict(_self_=self, _func_=func), __wrapped__=func)
|
||||
|
||||
try: # Python >= 3.2
|
||||
|
||||
from contextlib import _GeneratorContextManager
|
||||
ContextManager = type(
|
||||
'ContextManager', (_GeneratorContextManager,), dict(__call__=__call__))
|
||||
|
||||
except ImportError: # Python >= 2.5
|
||||
|
||||
from contextlib import GeneratorContextManager
|
||||
def __init__(self, f, *a, **k):
|
||||
return GeneratorContextManager.__init__(self, f(*a, **k))
|
||||
ContextManager = type(
|
||||
'ContextManager', (GeneratorContextManager,),
|
||||
dict(__call__=__call__, __init__=__init__))
|
||||
|
||||
contextmanager = decorator(ContextManager)
|
|
@ -343,8 +343,8 @@ class QuerySet(object):
|
|||
if num == 1:
|
||||
return clone._result_cache[0]
|
||||
if not num:
|
||||
raise self.model.DoesNotExist("%s matching query does not exist."
|
||||
% self.model._meta.object_name)
|
||||
raise self.model.DoesNotExist("%s matching query does not exist. Lookup parameters were %s"
|
||||
% (self.model._meta.object_name, kwargs))
|
||||
raise self.model.MultipleObjectsReturned("get() returned more than one %s -- it returned %s! Lookup parameters were %s"
|
||||
% (self.model._meta.object_name, num, kwargs))
|
||||
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
import datetime
|
||||
|
||||
from django.conf import settings
|
||||
import django.test
|
||||
|
||||
from ietf.utils.test_utils import SimpleUrlTestCase, canonicalize_sitemap
|
||||
from ietf.utils.test_data import make_test_data
|
||||
from ietf.utils.mail import outbox
|
||||
from ietf.utils import TestCase
|
||||
|
||||
from ietf.announcements.models import ScheduledAnnouncement
|
||||
|
||||
|
@ -21,7 +21,7 @@ class AnnouncementsUrlTestCase(SimpleUrlTestCase):
|
|||
else:
|
||||
return content
|
||||
|
||||
class SendScheduledAnnouncementsTestCase(django.test.TestCase):
|
||||
class SendScheduledAnnouncementsTestCase(TestCase):
|
||||
def test_send_plain_announcement(self):
|
||||
a = ScheduledAnnouncement.objects.create(
|
||||
mail_sent=False,
|
||||
|
@ -66,8 +66,9 @@ class SendScheduledAnnouncementsTestCase(django.test.TestCase):
|
|||
self.assertTrue(ScheduledAnnouncement.objects.get(id=a.id).mail_sent)
|
||||
|
||||
|
||||
class SendScheduledAnnouncementsTestCaseREDESIGN(django.test.TestCase):
|
||||
fixtures = ["names"]
|
||||
class SendScheduledAnnouncementsTestCaseREDESIGN(TestCase):
|
||||
# See ietf.utils.test_utils.TestCase for the use of perma_fixtures vs. fixtures
|
||||
perma_fixtures = ["names"]
|
||||
|
||||
def test_send_plain_announcement(self):
|
||||
make_test_data()
|
||||
|
|
|
@ -12,11 +12,8 @@ class DBTemplateForm(forms.ModelForm):
|
|||
def clean_content(self):
|
||||
try:
|
||||
content = self.cleaned_data['content']
|
||||
debug.show('type(content)')
|
||||
debug.show('content')
|
||||
if self.instance.type.slug == 'rst':
|
||||
return_code = RSTTemplate(content).render(Context({}))
|
||||
debug.show('return_code')
|
||||
elif self.instance.type.slug == 'django':
|
||||
DjangoTemplate(content).render(Context({}))
|
||||
elif self.instance.type.slug == 'plain':
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
import os, shutil, datetime
|
||||
|
||||
import django.test
|
||||
from django.core.urlresolvers import reverse as urlreverse
|
||||
|
||||
from pyquery import PyQuery
|
||||
|
@ -8,6 +7,7 @@ from pyquery import PyQuery
|
|||
from ietf.utils.mail import outbox
|
||||
from ietf.utils.test_utils import login_testing_unauthorized
|
||||
from ietf.utils.test_data import make_test_data
|
||||
from ietf.utils import TestCase
|
||||
|
||||
from ietf.doc.models import *
|
||||
from ietf.name.models import *
|
||||
|
@ -23,8 +23,9 @@ from ietf.doc.tests_conflict_review import *
|
|||
from ietf.doc.tests_status_change import *
|
||||
|
||||
|
||||
class SearchTestCase(django.test.TestCase):
|
||||
fixtures = ['names']
|
||||
class SearchTestCase(TestCase):
|
||||
# See ietf.utils.test_utils.TestCase for the use of perma_fixtures vs. fixtures
|
||||
perma_fixtures = ['names']
|
||||
|
||||
def test_search(self):
|
||||
draft = make_test_data()
|
||||
|
@ -125,8 +126,9 @@ class SearchTestCase(django.test.TestCase):
|
|||
self.assertTrue(draft.title in r.content)
|
||||
|
||||
|
||||
class DocTestCase(django.test.TestCase):
|
||||
fixtures = ['names']
|
||||
class DocTestCase(TestCase):
|
||||
# See ietf.utils.test_utils.TestCase for the use of perma_fixtures vs. fixtures
|
||||
perma_fixtures = ['names']
|
||||
|
||||
def test_document_draft(self):
|
||||
draft = make_test_data()
|
||||
|
@ -248,8 +250,9 @@ class DocTestCase(django.test.TestCase):
|
|||
self.assertEqual(r.status_code, 200)
|
||||
|
||||
|
||||
class AddCommentTestCase(django.test.TestCase):
|
||||
fixtures = ['names']
|
||||
class AddCommentTestCase(TestCase):
|
||||
# See ietf.utils.test_utils.TestCase for the use of perma_fixtures vs. fixtures
|
||||
perma_fixtures = ['names']
|
||||
|
||||
def test_add_comment(self):
|
||||
draft = make_test_data()
|
||||
|
|
|
@ -3,7 +3,6 @@ import StringIO
|
|||
import os, shutil
|
||||
from datetime import date, timedelta, time
|
||||
|
||||
import django.test
|
||||
from django.core.urlresolvers import reverse as urlreverse
|
||||
from django.conf import settings
|
||||
|
||||
|
@ -19,9 +18,11 @@ from ietf.iesg.models import TelechatDate
|
|||
from ietf.utils.test_utils import login_testing_unauthorized
|
||||
from ietf.utils.test_data import make_test_data
|
||||
from ietf.utils.mail import outbox
|
||||
from ietf.utils import TestCase
|
||||
|
||||
class EditPositionTestCase(django.test.TestCase):
|
||||
fixtures = ['names']
|
||||
class EditPositionTestCase(TestCase):
|
||||
# See ietf.utils.test_utils.TestCase for the use of perma_fixtures vs. fixtures
|
||||
perma_fixtures = ['names']
|
||||
|
||||
def test_edit_position(self):
|
||||
draft = make_test_data()
|
||||
|
@ -169,8 +170,9 @@ class EditPositionTestCase(django.test.TestCase):
|
|||
self.assertTrue("Test!" in str(m))
|
||||
|
||||
|
||||
class DeferBallotTestCase(django.test.TestCase):
|
||||
fixtures = ['names']
|
||||
class DeferBallotTestCase(TestCase):
|
||||
# See ietf.utils.test_utils.TestCase for the use of perma_fixtures vs. fixtures
|
||||
perma_fixtures = ['names']
|
||||
|
||||
def test_defer_ballot(self):
|
||||
draft = make_test_data()
|
||||
|
@ -215,8 +217,9 @@ class DeferBallotTestCase(django.test.TestCase):
|
|||
draft = Document.objects.get(name=draft.name)
|
||||
self.assertEquals(draft.get_state_slug("draft-iesg"), "iesg-eva")
|
||||
|
||||
class BallotWriteupsTestCase(django.test.TestCase):
|
||||
fixtures = ['names']
|
||||
class BallotWriteupsTestCase(TestCase):
|
||||
# See ietf.utils.test_utils.TestCase for the use of perma_fixtures vs. fixtures
|
||||
perma_fixtures = ['names']
|
||||
|
||||
def test_edit_last_call_text(self):
|
||||
draft = make_test_data()
|
||||
|
@ -406,8 +409,9 @@ class BallotWriteupsTestCase(django.test.TestCase):
|
|||
draft = Document.objects.get(name=draft.name)
|
||||
self.assertTrue("Subject: Results of IETF-conflict review" in draft.latest_event(WriteupDocEvent, type="changed_ballot_approval_text").text)
|
||||
|
||||
class ApproveBallotTestCase(django.test.TestCase):
|
||||
fixtures = ['names']
|
||||
class ApproveBallotTestCase(TestCase):
|
||||
# See ietf.utils.test_utils.TestCase for the use of perma_fixtures vs. fixtures
|
||||
perma_fixtures = ['names']
|
||||
|
||||
def test_approve_ballot(self):
|
||||
draft = make_test_data()
|
||||
|
@ -456,8 +460,9 @@ class ApproveBallotTestCase(django.test.TestCase):
|
|||
self.assertEquals(len(outbox), mailbox_before + 3)
|
||||
self.assertTrue("NOT be published" in str(outbox[-1]))
|
||||
|
||||
class MakeLastCallTestCase(django.test.TestCase):
|
||||
fixtures = ['names']
|
||||
class MakeLastCallTestCase(TestCase):
|
||||
# See ietf.utils.test_utils.TestCase for the use of perma_fixtures vs. fixtures
|
||||
perma_fixtures = ['names']
|
||||
|
||||
def test_make_last_call(self):
|
||||
draft = make_test_data()
|
||||
|
|
|
@ -6,7 +6,6 @@ from StringIO import StringIO
|
|||
from textwrap import wrap
|
||||
|
||||
|
||||
import django.test
|
||||
from django.conf import settings
|
||||
from django.core.urlresolvers import reverse as urlreverse
|
||||
|
||||
|
@ -15,6 +14,7 @@ from ietf.utils.test_data import make_test_data
|
|||
from ietf.utils.mail import outbox
|
||||
from ietf.doc.utils import create_ballot_if_not_open
|
||||
from ietf.doc.views_conflict_review import default_approval_text
|
||||
from ietf.utils import TestCase
|
||||
|
||||
from ietf.doc.models import Document,DocEvent,NewRevisionDocEvent,BallotPositionDocEvent,TelechatDocEvent,DocAlias,State
|
||||
from ietf.name.models import StreamName
|
||||
|
@ -22,9 +22,9 @@ from ietf.group.models import Person
|
|||
from ietf.iesg.models import TelechatDate
|
||||
|
||||
|
||||
class ConflictReviewTestCase(django.test.TestCase):
|
||||
|
||||
fixtures = ['names']
|
||||
class ConflictReviewTestCase(TestCase):
|
||||
# See ietf.utils.test_utils.TestCase for the use of perma_fixtures vs. fixtures
|
||||
perma_fixtures = ['names']
|
||||
|
||||
def test_start_review(self):
|
||||
|
||||
|
@ -254,9 +254,9 @@ class ConflictReviewTestCase(django.test.TestCase):
|
|||
make_test_data()
|
||||
|
||||
|
||||
class ConflictReviewSubmitTestCase(django.test.TestCase):
|
||||
|
||||
fixtures = ['names']
|
||||
class ConflictReviewSubmitTestCase(TestCase):
|
||||
# See ietf.utils.test_utils.TestCase for the use of perma_fixtures vs. fixtures
|
||||
perma_fixtures = ['names',]
|
||||
|
||||
def test_initial_submission(self):
|
||||
doc = Document.objects.get(name='conflict-review-imaginary-irtf-submission')
|
||||
|
|
|
@ -3,7 +3,6 @@ import StringIO
|
|||
import os, shutil
|
||||
from datetime import date, timedelta, time
|
||||
|
||||
import django.test
|
||||
from django.core.urlresolvers import reverse as urlreverse
|
||||
from django.conf import settings
|
||||
|
||||
|
@ -19,10 +18,12 @@ from ietf.iesg.models import TelechatDate
|
|||
from ietf.utils.test_utils import login_testing_unauthorized
|
||||
from ietf.utils.test_data import make_test_data
|
||||
from ietf.utils.mail import outbox
|
||||
from ietf.utils import TestCase
|
||||
|
||||
|
||||
class ChangeStateTestCase(django.test.TestCase):
|
||||
fixtures = ['names']
|
||||
class ChangeStateTestCase(TestCase):
|
||||
# See ietf.utils.test_utils.TestCase for the use of perma_fixtures vs. fixtures
|
||||
perma_fixtures = ['names']
|
||||
|
||||
def test_change_state(self):
|
||||
draft = make_test_data()
|
||||
|
@ -177,8 +178,9 @@ class ChangeStateTestCase(django.test.TestCase):
|
|||
self.assertTrue("Last call was requested" in draft.latest_event().desc)
|
||||
|
||||
|
||||
class EditInfoTestCase(django.test.TestCase):
|
||||
fixtures = ['names']
|
||||
class EditInfoTestCase(TestCase):
|
||||
# See ietf.utils.test_utils.TestCase for the use of perma_fixtures vs. fixtures
|
||||
perma_fixtures = ['names']
|
||||
|
||||
def test_edit_info(self):
|
||||
draft = make_test_data()
|
||||
|
@ -359,8 +361,9 @@ class EditInfoTestCase(django.test.TestCase):
|
|||
self.assertEqual(draft.latest_event(ConsensusDocEvent, type="changed_consensus").consensus, True)
|
||||
|
||||
|
||||
class ResurrectTestCase(django.test.TestCase):
|
||||
fixtures = ['names']
|
||||
class ResurrectTestCase(TestCase):
|
||||
# See ietf.utils.test_utils.TestCase for the use of perma_fixtures vs. fixtures
|
||||
perma_fixtures = ['names']
|
||||
|
||||
def test_request_resurrect(self):
|
||||
draft = make_test_data()
|
||||
|
@ -426,8 +429,9 @@ class ResurrectTestCase(django.test.TestCase):
|
|||
self.assertEquals(len(outbox), mailbox_before + 1)
|
||||
|
||||
|
||||
class ExpireIDsTestCase(django.test.TestCase):
|
||||
fixtures = ['names']
|
||||
class ExpireIDsTestCase(TestCase):
|
||||
# See ietf.utils.test_utils.TestCase for the use of perma_fixtures vs. fixtures
|
||||
perma_fixtures = ['names']
|
||||
|
||||
def setUp(self):
|
||||
self.id_dir = os.path.abspath("tmp-id-dir")
|
||||
|
@ -608,8 +612,9 @@ class ExpireIDsTestCase(django.test.TestCase):
|
|||
self.assertTrue(not os.path.exists(os.path.join(self.id_dir, txt)))
|
||||
self.assertTrue(os.path.exists(os.path.join(self.archive_dir, "deleted_tombstones", txt)))
|
||||
|
||||
class ExpireLastCallTestCase(django.test.TestCase):
|
||||
fixtures = ['names']
|
||||
class ExpireLastCallTestCase(TestCase):
|
||||
# See ietf.utils.test_utils.TestCase for the use of perma_fixtures vs. fixtures
|
||||
perma_fixtures = ['names']
|
||||
|
||||
def test_expire_last_call(self):
|
||||
from ietf.doc.lastcall import get_expired_last_calls, expire_last_call
|
||||
|
@ -657,9 +662,9 @@ class ExpireLastCallTestCase(django.test.TestCase):
|
|||
self.assertEquals(len(outbox), mailbox_before + 1)
|
||||
self.assertTrue("Last Call Expired" in outbox[-1]["Subject"])
|
||||
|
||||
class IndividualInfoFormsTestCase(django.test.TestCase):
|
||||
|
||||
fixtures = ['names']
|
||||
class IndividualInfoFormsTestCase(TestCase):
|
||||
# See ietf.utils.test_utils.TestCase for the use of perma_fixtures vs. fixtures
|
||||
perma_fixtures = ['names']
|
||||
|
||||
def test_doc_change_stream(self):
|
||||
url = urlreverse('doc_change_stream', kwargs=dict(name=self.docname))
|
||||
|
@ -885,8 +890,9 @@ class IndividualInfoFormsTestCase(django.test.TestCase):
|
|||
self.docname='draft-ietf-mars-test'
|
||||
self.doc = Document.objects.get(name=self.docname)
|
||||
|
||||
class SubmitToIesgTestCase(django.test.TestCase):
|
||||
fixtures = ['names']
|
||||
class SubmitToIesgTestCase(TestCase):
|
||||
# See ietf.utils.test_utils.TestCase for the use of perma_fixtures vs. fixtures
|
||||
perma_fixtures = ['names']
|
||||
|
||||
def verify_permissions(self):
|
||||
|
||||
|
@ -945,8 +951,9 @@ class SubmitToIesgTestCase(django.test.TestCase):
|
|||
self.doc = Document.objects.get(name=self.docname)
|
||||
self.doc.unset_state('draft-iesg')
|
||||
|
||||
class RequestPublicationTestCase(django.test.TestCase):
|
||||
fixtures = ['names']
|
||||
class RequestPublicationTestCase(TestCase):
|
||||
# See ietf.utils.test_utils.TestCase for the use of perma_fixtures vs. fixtures
|
||||
perma_fixtures = ['names']
|
||||
|
||||
def test_request_publication(self):
|
||||
draft = make_test_data()
|
||||
|
|
|
@ -6,7 +6,6 @@ from StringIO import StringIO
|
|||
from textwrap import wrap
|
||||
|
||||
|
||||
import django.test
|
||||
from django.conf import settings
|
||||
from django.core.urlresolvers import reverse as urlreverse
|
||||
|
||||
|
@ -15,6 +14,7 @@ from ietf.utils.test_data import make_test_data
|
|||
from ietf.utils.mail import outbox
|
||||
from ietf.doc.utils import create_ballot_if_not_open
|
||||
from ietf.doc.views_status_change import default_approval_text
|
||||
from ietf.utils import TestCase
|
||||
|
||||
from ietf.doc.models import Document,DocEvent,NewRevisionDocEvent,BallotPositionDocEvent,TelechatDocEvent,WriteupDocEvent,DocAlias,State
|
||||
from ietf.name.models import StreamName
|
||||
|
@ -22,9 +22,9 @@ from ietf.group.models import Person
|
|||
from ietf.iesg.models import TelechatDate
|
||||
|
||||
|
||||
class StatusChangeTestCase(django.test.TestCase):
|
||||
|
||||
fixtures = ['names']
|
||||
class StatusChangeTestCase(TestCase):
|
||||
# See ietf.utils.test_utils.TestCase for the use of perma_fixtures vs. fixtures
|
||||
perma_fixtures = ['names']
|
||||
|
||||
def test_start_review(self):
|
||||
|
||||
|
@ -353,9 +353,9 @@ class StatusChangeTestCase(django.test.TestCase):
|
|||
make_test_data()
|
||||
|
||||
|
||||
class StatusChangeSubmitTestCase(django.test.TestCase):
|
||||
|
||||
fixtures = ['names']
|
||||
class StatusChangeSubmitTestCase(TestCase):
|
||||
# See ietf.utils.test_utils.TestCase for the use of perma_fixtures vs. fixtures
|
||||
perma_fixtures = ['names']
|
||||
|
||||
def test_initial_submission(self):
|
||||
doc = Document.objects.get(name='status-change-imaginary-mid-review')
|
||||
|
|
23
ietf/group/ajax.py
Normal file
23
ietf/group/ajax.py
Normal file
|
@ -0,0 +1,23 @@
|
|||
from django.utils import simplejson as json
|
||||
from dajaxice.core import dajaxice_functions
|
||||
from dajaxice.decorators import dajaxice_register
|
||||
from ietf.ietfauth.decorators import group_required
|
||||
from django.shortcuts import get_object_or_404
|
||||
from django.http import HttpResponseRedirect, HttpResponse, Http404
|
||||
|
||||
from ietf.group.models import Group
|
||||
import datetime
|
||||
import logging
|
||||
import sys
|
||||
from ietf.settings import LOG_DIR
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
def group_json(request, groupname):
|
||||
group = get_object_or_404(Group, acronym=groupname)
|
||||
|
||||
#print "group request is: %s\n" % (request.build_absolute_uri('/'))
|
||||
return HttpResponse(json.dumps(group.json_dict(request.build_absolute_uri('/')),
|
||||
sort_keys=True, indent=2),
|
||||
mimetype="text/json")
|
||||
|
30
ietf/group/colors.py
Normal file
30
ietf/group/colors.py
Normal file
|
@ -0,0 +1,30 @@
|
|||
#
|
||||
# colours should be taken from the group as a list of "Areas"
|
||||
# but for now, just return a dict of areas and colours.
|
||||
#
|
||||
|
||||
fg_group_colors = dict()
|
||||
fg_group_colors['APP']="#008"
|
||||
fg_group_colors['GEN']="#080"
|
||||
fg_group_colors['INT']="#088"
|
||||
fg_group_colors['OPS']="#800"
|
||||
fg_group_colors['RAI']="#808"
|
||||
fg_group_colors['RTG']="#880"
|
||||
fg_group_colors['SEC']="#488"
|
||||
fg_group_colors['TSV']="#484"
|
||||
fg_group_colors['IRTF']="#448"
|
||||
fg_group_colors['IETF']="blue"
|
||||
|
||||
bg_group_colors = dict()
|
||||
bg_group_colors['APP']="#eef"
|
||||
bg_group_colors['GEN']="#efe"
|
||||
bg_group_colors['INT']="#eff"
|
||||
bg_group_colors['OPS']="#fee"
|
||||
bg_group_colors['RAI']="#fef"
|
||||
bg_group_colors['RTG']="#ffe"
|
||||
bg_group_colors['SEC']="#dff"
|
||||
bg_group_colors['TSV']="#dfd"
|
||||
bg_group_colors['IRTF']="#ddf"
|
||||
bg_group_colors['IETF']="white"
|
||||
|
||||
|
4157
ietf/group/fixtures/groupevents.json
Normal file
4157
ietf/group/fixtures/groupevents.json
Normal file
File diff suppressed because it is too large
Load diff
2754
ietf/group/fixtures/groupgroup.json
Normal file
2754
ietf/group/fixtures/groupgroup.json
Normal file
File diff suppressed because it is too large
Load diff
963
ietf/group/fixtures/grouphistory.json
Normal file
963
ietf/group/fixtures/grouphistory.json
Normal file
|
@ -0,0 +1,963 @@
|
|||
[
|
||||
{"pk": 1, "model": "group.rolehistory", "fields": {"person": 17188, "group": 1, "name": "ad", "email": "hardie@qualcomm.com"}},
|
||||
{"pk": 2, "model": "group.rolehistory", "fields": {"person": 22873, "group": 1, "name": "ad", "email": "sah@428cobrajet.net"}},
|
||||
{"pk": 3, "model": "group.rolehistory", "fields": {"person": 5778, "group": 2, "name": "ad", "email": "harald@alvestrand.no"}},
|
||||
{"pk": 4, "model": "group.rolehistory", "fields": {"person": 7262, "group": 3, "name": "ad", "email": "narten@us.ibm.com"}},
|
||||
{"pk": 5, "model": "group.rolehistory", "fields": {"person": 100887, "group": 3, "name": "ad", "email": "mrw@lilacglade.org"}},
|
||||
{"pk": 6, "model": "group.rolehistory", "fields": {"person": 6842, "group": 4, "name": "ad", "email": "bertietf@bwijnen.net"}},
|
||||
{"pk": 7, "model": "group.rolehistory", "fields": {"person": 19587, "group": 4, "name": "ad", "email": "david.kessens@nsn.com"}},
|
||||
{"pk": 8, "model": "group.rolehistory", "fields": {"person": 13108, "group": 5, "name": "ad", "email": "fenner@fenron.com"}},
|
||||
{"pk": 9, "model": "group.rolehistory", "fields": {"person": 103264, "group": 5, "name": "ad", "email": "azinin@cisco.com"}},
|
||||
{"pk": 10, "model": "group.rolehistory", "fields": {"person": 5376, "group": 6, "name": "ad", "email": "housley@vigilsec.com"}},
|
||||
{"pk": 11, "model": "group.rolehistory", "fields": {"person": 103048, "group": 6, "name": "ad", "email": "hartmans-ietf@mit.edu"}},
|
||||
{"pk": 12, "model": "group.rolehistory", "fields": {"person": 2515, "group": 7, "name": "ad", "email": "mankin@psg.com"}},
|
||||
{"pk": 13, "model": "group.rolehistory", "fields": {"person": 104557, "group": 7, "name": "ad", "email": "jon.peterson@neustar.biz"}},
|
||||
{"pk": 14, "model": "group.rolehistory", "fields": {"person": 1958, "group": 8, "name": "ad", "email": "brc@zurich.ibm.com"}},
|
||||
{"pk": 15, "model": "group.rolehistory", "fields": {"person": 22948, "group": 9, "name": "ad", "email": "mark@townsley.net"}},
|
||||
{"pk": 16, "model": "group.rolehistory", "fields": {"person": 100887, "group": 9, "name": "ad", "email": "mrw@lilacglade.org"}},
|
||||
{"pk": 17, "model": "group.rolehistory", "fields": {"person": 107420, "group": 10, "name": "ad", "email": "noreply@ietf.org"}},
|
||||
{"pk": 18, "model": "group.rolehistory", "fields": {"person": 17188, "group": 11, "name": "ad", "email": "hardie@qualcomm.com"}},
|
||||
{"pk": 19, "model": "group.rolehistory", "fields": {"person": 22971, "group": 11, "name": "ad", "email": "lisa.dusseault@gmail.com"}},
|
||||
{"pk": 20, "model": "group.rolehistory", "fields": {"person": 21072, "group": 12, "name": "ad", "email": "jari.arkko@piuha.net"}},
|
||||
{"pk": 21, "model": "group.rolehistory", "fields": {"person": 22948, "group": 12, "name": "ad", "email": "mark@townsley.net"}},
|
||||
{"pk": 22, "model": "group.rolehistory", "fields": {"person": 6699, "group": 13, "name": "ad", "email": "dromasca@avaya.com"}},
|
||||
{"pk": 23, "model": "group.rolehistory", "fields": {"person": 19587, "group": 13, "name": "ad", "email": "david.kessens@nsn.com"}},
|
||||
{"pk": 24, "model": "group.rolehistory", "fields": {"person": 2723, "group": 14, "name": "ad", "email": "rcallon@juniper.net"}},
|
||||
{"pk": 25, "model": "group.rolehistory", "fields": {"person": 13108, "group": 14, "name": "ad", "email": "fenner@fenron.com"}},
|
||||
{"pk": 26, "model": "group.rolehistory", "fields": {"person": 104294, "group": 15, "name": "ad", "email": "magnus.westerlund@ericsson.com"}},
|
||||
{"pk": 27, "model": "group.rolehistory", "fields": {"person": 112773, "group": 15, "name": "ad", "email": "lars@netapp.com"}},
|
||||
{"pk": 28, "model": "group.rolehistory", "fields": {"person": 104557, "group": 16, "name": "ad", "email": "jon.peterson@neustar.biz"}},
|
||||
{"pk": 29, "model": "group.rolehistory", "fields": {"person": 105791, "group": 16, "name": "ad", "email": "fluffy@cisco.com"}},
|
||||
{"pk": 30, "model": "group.rolehistory", "fields": {"person": 9909, "group": 17, "name": "ad", "email": "chris.newman@oracle.com"}},
|
||||
{"pk": 31, "model": "group.rolehistory", "fields": {"person": 22971, "group": 17, "name": "ad", "email": "lisa.dusseault@gmail.com"}},
|
||||
{"pk": 32, "model": "group.rolehistory", "fields": {"person": 5376, "group": 18, "name": "ad", "email": "housley@vigilsec.com"}},
|
||||
{"pk": 33, "model": "group.rolehistory", "fields": {"person": 6699, "group": 19, "name": "ad", "email": "dromasca@avaya.com"}},
|
||||
{"pk": 34, "model": "group.rolehistory", "fields": {"person": 101568, "group": 19, "name": "ad", "email": "rbonica@juniper.net"}},
|
||||
{"pk": 35, "model": "group.rolehistory", "fields": {"person": 2723, "group": 20, "name": "ad", "email": "rcallon@juniper.net"}},
|
||||
{"pk": 36, "model": "group.rolehistory", "fields": {"person": 23057, "group": 20, "name": "ad", "email": "dward@juniper.net"}},
|
||||
{"pk": 37, "model": "group.rolehistory", "fields": {"person": 19790, "group": 21, "name": "ad", "email": "tim.polk@nist.gov"}},
|
||||
{"pk": 38, "model": "group.rolehistory", "fields": {"person": 103048, "group": 21, "name": "ad", "email": "hartmans-ietf@mit.edu"}},
|
||||
{"pk": 39, "model": "group.rolehistory", "fields": {"person": 19790, "group": 22, "name": "ad", "email": "tim.polk@nist.gov"}},
|
||||
{"pk": 40, "model": "group.rolehistory", "fields": {"person": 106164, "group": 22, "name": "ad", "email": "pe@iki.fi"}},
|
||||
{"pk": 41, "model": "group.rolehistory", "fields": {"person": 22971, "group": 23, "name": "ad", "email": "lisa.dusseault@gmail.com"}},
|
||||
{"pk": 42, "model": "group.rolehistory", "fields": {"person": 102154, "group": 23, "name": "ad", "email": "alexey.melnikov@isode.com"}},
|
||||
{"pk": 43, "model": "group.rolehistory", "fields": {"person": 21072, "group": 24, "name": "ad", "email": "jari.arkko@piuha.net"}},
|
||||
{"pk": 44, "model": "group.rolehistory", "fields": {"person": 2348, "group": 24, "name": "ad", "email": "rdroms.ietf@gmail.com"}},
|
||||
{"pk": 45, "model": "group.rolehistory", "fields": {"person": 105791, "group": 25, "name": "ad", "email": "fluffy@cisco.com"}},
|
||||
{"pk": 46, "model": "group.rolehistory", "fields": {"person": 103961, "group": 25, "name": "ad", "email": "rjsparks@nostrum.com"}},
|
||||
{"pk": 47, "model": "group.rolehistory", "fields": {"person": 2723, "group": 26, "name": "ad", "email": "rcallon@juniper.net"}},
|
||||
{"pk": 48, "model": "group.rolehistory", "fields": {"person": 104198, "group": 26, "name": "ad", "email": "adrian@olddog.co.uk"}},
|
||||
{"pk": 49, "model": "group.rolehistory", "fields": {"person": 102154, "group": 27, "name": "ad", "email": "alexey.melnikov@isode.com"}},
|
||||
{"pk": 50, "model": "group.rolehistory", "fields": {"person": 105907, "group": 27, "name": "ad", "email": "stpeter@stpeter.im"}},
|
||||
{"pk": 51, "model": "group.rolehistory", "fields": {"person": 104198, "group": 28, "name": "ad", "email": "adrian@olddog.co.uk"}},
|
||||
{"pk": 52, "model": "group.rolehistory", "fields": {"person": 2329, "group": 28, "name": "ad", "email": "stbryant@cisco.com"}},
|
||||
{"pk": 53, "model": "group.rolehistory", "fields": {"person": 19483, "group": 29, "name": "ad", "email": "turners@ieca.com"}},
|
||||
{"pk": 54, "model": "group.rolehistory", "fields": {"person": 19790, "group": 29, "name": "ad", "email": "tim.polk@nist.gov"}},
|
||||
{"pk": 55, "model": "group.rolehistory", "fields": {"person": 112773, "group": 30, "name": "ad", "email": "lars@netapp.com"}},
|
||||
{"pk": 56, "model": "group.rolehistory", "fields": {"person": 17253, "group": 30, "name": "ad", "email": "ietfdbh@comcast.net"}},
|
||||
{"pk": 57, "model": "group.rolehistory", "fields": {"person": 103961, "group": 31, "name": "ad", "email": "rjsparks@nostrum.com"}},
|
||||
{"pk": 58, "model": "group.rolehistory", "fields": {"person": 103539, "group": 31, "name": "ad", "email": "gonzalo.camarillo@ericsson.com"}},
|
||||
{"pk": 59, "model": "group.rolehistory", "fields": {"person": 105682, "group": 33, "name": "chair", "email": "bclaise@cisco.com"}},
|
||||
{"pk": 60, "model": "group.rolehistory", "fields": {"person": 111529, "group": 33, "name": "chair", "email": "bnordman@lbl.gov"}},
|
||||
{"pk": 61, "model": "group.rolehistory", "fields": {"person": 105682, "group": 34, "name": "chair", "email": "bclaise@cisco.com"}},
|
||||
{"pk": 62, "model": "group.rolehistory", "fields": {"person": 111529, "group": 34, "name": "chair", "email": "bnordman@lbl.gov"}},
|
||||
{"pk": 63, "model": "group.rolehistory", "fields": {"person": 6766, "group": 34, "name": "chair", "email": "n.brownlee@auckland.ac.nz"}},
|
||||
{"pk": 64, "model": "group.rolehistory", "fields": {"person": 106186, "group": 36, "name": "chair", "email": "julien.ietf@gmail.com"}},
|
||||
{"pk": 65, "model": "group.rolehistory", "fields": {"person": 109800, "group": 36, "name": "chair", "email": "jouni.korhonen@nsn.com"}},
|
||||
{"pk": 66, "model": "group.rolehistory", "fields": {"person": 106186, "group": 40, "name": "chair", "email": "julien.ietf@gmail.com"}},
|
||||
{"pk": 67, "model": "group.rolehistory", "fields": {"person": 106186, "group": 41, "name": "chair", "email": "julien.ietf@gmail.com"}},
|
||||
{"pk": 68, "model": "group.rolehistory", "fields": {"person": 109800, "group": 41, "name": "chair", "email": "jouni.korhonen@nsn.com"}},
|
||||
{"pk": 69, "model": "group.rolehistory", "fields": {"person": 106186, "group": 42, "name": "chair", "email": "julien.ietf@gmail.com"}},
|
||||
{"pk": 70, "model": "group.rolehistory", "fields": {"person": 109800, "group": 42, "name": "chair", "email": "jouni.korhonen@nsn.com"}},
|
||||
{"pk": 71, "model": "group.rolehistory", "fields": {"person": 106186, "group": 43, "name": "chair", "email": "julien.ietf@gmail.com"}},
|
||||
{"pk": 72, "model": "group.rolehistory", "fields": {"person": 109800, "group": 43, "name": "chair", "email": "jouni.korhonen@nsn.com"}},
|
||||
{"pk": 73, "model": "group.rolehistory", "fields": {"person": 106186, "group": 44, "name": "chair", "email": "julien.ietf@gmail.com"}},
|
||||
{"pk": 74, "model": "group.rolehistory", "fields": {"person": 109800, "group": 44, "name": "chair", "email": "jouni.korhonen@nsn.com"}},
|
||||
{"pk": 75, "model": "group.rolehistory", "fields": {"person": 102154, "group": 45, "name": "chair", "email": "alexey.melnikov@isode.com"}},
|
||||
{"pk": 76, "model": "group.rolehistory", "fields": {"person": 21684, "group": 45, "name": "chair", "email": "barryleiba@computer.org"}},
|
||||
{"pk": 77, "model": "group.rolehistory", "fields": {"person": 107279, "group": 45, "name": "chair", "email": "yaojk@cnnic.cn"}},
|
||||
{"pk": 78, "model": "group.rolehistory", "fields": {"person": 106872, "group": 46, "name": "chair", "email": "T.Clausen@computer.org"}},
|
||||
{"pk": 79, "model": "group.rolehistory", "fields": {"person": 105595, "group": 46, "name": "chair", "email": "ryuji.wakikawa@gmail.com"}},
|
||||
{"pk": 80, "model": "group.rolehistory", "fields": {"person": 7262, "group": 48, "name": "chair", "email": "narten@us.ibm.com"}},
|
||||
{"pk": 81, "model": "group.rolehistory", "fields": {"person": 7262, "group": 49, "name": "chair", "email": "narten@us.ibm.com"}},
|
||||
{"pk": 82, "model": "group.rolehistory", "fields": {"person": 105786, "group": 49, "name": "chair", "email": "matthew.bocci@alcatel-lucent.com"}},
|
||||
{"pk": 83, "model": "group.rolehistory", "fields": {"person": 16366, "group": 50, "name": "chair", "email": "Ed.Lewis@neustar.biz"}},
|
||||
{"pk": 84, "model": "group.rolehistory", "fields": {"person": 2890, "group": 50, "name": "chair", "email": "jaap@sidn.nl"}},
|
||||
{"pk": 85, "model": "group.rolehistory", "fields": {"person": 107256, "group": 51, "name": "chair", "email": "marshall.eubanks@gmail.com"}},
|
||||
{"pk": 86, "model": "group.rolehistory", "fields": {"person": 11928, "group": 51, "name": "chair", "email": "johnl@taugh.com"}},
|
||||
{"pk": 87, "model": "group.rolehistory", "fields": {"person": 107190, "group": 53, "name": "chair", "email": "spencer@wonderhamster.org"}},
|
||||
{"pk": 88, "model": "group.rolehistory", "fields": {"person": 106438, "group": 54, "name": "chair", "email": "bryan@ethernot.org"}},
|
||||
{"pk": 89, "model": "group.rolehistory", "fields": {"person": 106987, "group": 54, "name": "chair", "email": "br@brianrosen.net"}},
|
||||
{"pk": 90, "model": "group.rolehistory", "fields": {"person": 105097, "group": 56, "name": "chair", "email": "drage@alcatel-lucent.com"}},
|
||||
{"pk": 91, "model": "group.rolehistory", "fields": {"person": 105097, "group": 57, "name": "chair", "email": "drage@alcatel-lucent.com"}},
|
||||
{"pk": 92, "model": "group.rolehistory", "fields": {"person": 107684, "group": 57, "name": "chair", "email": "hkaplan@acmepacket.com"}},
|
||||
{"pk": 93, "model": "group.rolehistory", "fields": {"person": 22933, "group": 58, "name": "chair", "email": "chopps@rawdofmt.org"}},
|
||||
{"pk": 94, "model": "group.rolehistory", "fields": {"person": 23057, "group": 58, "name": "chair", "email": "dward@juniper.net"}},
|
||||
{"pk": 95, "model": "group.rolehistory", "fields": {"person": 22933, "group": 59, "name": "chair", "email": "chopps@rawdofmt.org"}},
|
||||
{"pk": 96, "model": "group.rolehistory", "fields": {"person": 2399, "group": 60, "name": "techadv", "email": "dkatz@juniper.net"}},
|
||||
{"pk": 97, "model": "group.rolehistory", "fields": {"person": 23057, "group": 60, "name": "chair", "email": "dward@juniper.net"}},
|
||||
{"pk": 98, "model": "group.rolehistory", "fields": {"person": 105046, "group": 60, "name": "chair", "email": "jhaas@pfrc.org"}},
|
||||
{"pk": 99, "model": "group.rolehistory", "fields": {"person": 2399, "group": 61, "name": "techadv", "email": "dkatz@juniper.net"}},
|
||||
{"pk": 100, "model": "group.rolehistory", "fields": {"person": 105046, "group": 61, "name": "chair", "email": "jhaas@pfrc.org"}},
|
||||
{"pk": 101, "model": "group.rolehistory", "fields": {"person": 23057, "group": 62, "name": "chair", "email": "dward@juniper.net"}},
|
||||
{"pk": 102, "model": "group.rolehistory", "fields": {"person": 103539, "group": 62, "name": "chair", "email": "gonzalo.camarillo@ericsson.com"}},
|
||||
{"pk": 103, "model": "group.rolehistory", "fields": {"person": 103539, "group": 63, "name": "chair", "email": "gonzalo.camarillo@ericsson.com"}},
|
||||
{"pk": 104, "model": "group.rolehistory", "fields": {"person": 109558, "group": 64, "name": "delegate", "email": "daniel@olddog.co.uk"}},
|
||||
{"pk": 105, "model": "group.rolehistory", "fields": {"person": 109703, "group": 64, "name": "delegate", "email": "daniele.ceccarelli@ericsson.com"}},
|
||||
{"pk": 106, "model": "group.rolehistory", "fields": {"person": 109558, "group": 64, "name": "secr", "email": "daniel@olddog.co.uk"}},
|
||||
{"pk": 107, "model": "group.rolehistory", "fields": {"person": 10064, "group": 64, "name": "chair", "email": "lberger@labn.net"}},
|
||||
{"pk": 108, "model": "group.rolehistory", "fields": {"person": 106471, "group": 64, "name": "chair", "email": "dbrungard@att.com"}},
|
||||
{"pk": 109, "model": "group.rolehistory", "fields": {"person": 2324, "group": 65, "name": "chair", "email": "sob@harvard.edu"}},
|
||||
{"pk": 110, "model": "group.rolehistory", "fields": {"person": 107131, "group": 65, "name": "chair", "email": "martin.thomson@andrew.com"}},
|
||||
{"pk": 111, "model": "group.rolehistory", "fields": {"person": 2324, "group": 66, "name": "chair", "email": "sob@harvard.edu"}},
|
||||
{"pk": 112, "model": "group.rolehistory", "fields": {"person": 102154, "group": 67, "name": "chair", "email": "alexey.melnikov@isode.com"}},
|
||||
{"pk": 113, "model": "group.rolehistory", "fields": {"person": 21684, "group": 67, "name": "chair", "email": "barryleiba@computer.org"}},
|
||||
{"pk": 114, "model": "group.rolehistory", "fields": {"person": 107279, "group": 67, "name": "chair", "email": "yaojk@cnnic.cn"}},
|
||||
{"pk": 115, "model": "group.rolehistory", "fields": {"person": 106842, "group": 67, "name": "delegate", "email": "msk@cloudmark.com"}},
|
||||
{"pk": 116, "model": "group.rolehistory", "fields": {"person": 102154, "group": 68, "name": "chair", "email": "alexey.melnikov@isode.com"}},
|
||||
{"pk": 117, "model": "group.rolehistory", "fields": {"person": 21684, "group": 68, "name": "chair", "email": "barryleiba@computer.org"}},
|
||||
{"pk": 118, "model": "group.rolehistory", "fields": {"person": 107279, "group": 68, "name": "chair", "email": "yaojk@cnnic.cn"}},
|
||||
{"pk": 119, "model": "group.rolehistory", "fields": {"person": 106842, "group": 68, "name": "delegate", "email": "msk@cloudmark.com"}},
|
||||
{"pk": 120, "model": "group.rolehistory", "fields": {"person": 106842, "group": 68, "name": "chair", "email": "msk@cloudmark.com"}},
|
||||
{"pk": 121, "model": "group.rolehistory", "fields": {"person": 102154, "group": 69, "name": "chair", "email": "alexey.melnikov@isode.com"}},
|
||||
{"pk": 122, "model": "group.rolehistory", "fields": {"person": 107279, "group": 69, "name": "chair", "email": "yaojk@cnnic.cn"}},
|
||||
{"pk": 123, "model": "group.rolehistory", "fields": {"person": 106842, "group": 69, "name": "delegate", "email": "msk@cloudmark.com"}},
|
||||
{"pk": 124, "model": "group.rolehistory", "fields": {"person": 106842, "group": 69, "name": "chair", "email": "msk@cloudmark.com"}},
|
||||
{"pk": 125, "model": "group.rolehistory", "fields": {"person": 105519, "group": 70, "name": "chair", "email": "martin.stiemerling@neclab.eu"}},
|
||||
{"pk": 126, "model": "group.rolehistory", "fields": {"person": 109919, "group": 70, "name": "chair", "email": "zhangyunfei@chinamobile.com"}},
|
||||
{"pk": 127, "model": "group.rolehistory", "fields": {"person": 105519, "group": 71, "name": "chair", "email": "martin.stiemerling@neclab.eu"}},
|
||||
{"pk": 128, "model": "group.rolehistory", "fields": {"person": 109919, "group": 71, "name": "chair", "email": "zhangyunfei@chinamobile.com"}},
|
||||
{"pk": 129, "model": "group.rolehistory", "fields": {"person": 103392, "group": 71, "name": "chair", "email": "sprevidi@cisco.com"}},
|
||||
{"pk": 130, "model": "group.rolehistory", "fields": {"person": 18321, "group": 72, "name": "ad", "email": "presnick@qualcomm.com"}},
|
||||
{"pk": 131, "model": "group.rolehistory", "fields": {"person": 105907, "group": 72, "name": "ad", "email": "stpeter@stpeter.im"}},
|
||||
{"pk": 132, "model": "group.rolehistory", "fields": {"person": 21684, "group": 72, "name": "pre-ad", "email": "barryleiba@computer.org"}},
|
||||
{"pk": 133, "model": "group.rolehistory", "fields": {"person": 18321, "group": 73, "name": "ad", "email": "presnick@qualcomm.com"}},
|
||||
{"pk": 134, "model": "group.rolehistory", "fields": {"person": 105907, "group": 73, "name": "ad", "email": "stpeter@stpeter.im"}},
|
||||
{"pk": 135, "model": "group.rolehistory", "fields": {"person": 21684, "group": 73, "name": "ad", "email": "barryleiba@computer.org"}},
|
||||
{"pk": 136, "model": "group.rolehistory", "fields": {"person": 21072, "group": 74, "name": "ad", "email": "jari.arkko@piuha.net"}},
|
||||
{"pk": 137, "model": "group.rolehistory", "fields": {"person": 2348, "group": 74, "name": "ad", "email": "rdroms.ietf@gmail.com"}},
|
||||
{"pk": 138, "model": "group.rolehistory", "fields": {"person": 100664, "group": 74, "name": "pre-ad", "email": "brian@innovationslab.net"}},
|
||||
{"pk": 139, "model": "group.rolehistory", "fields": {"person": 21072, "group": 75, "name": "ad", "email": "jari.arkko@piuha.net"}},
|
||||
{"pk": 140, "model": "group.rolehistory", "fields": {"person": 2348, "group": 75, "name": "ad", "email": "rdroms.ietf@gmail.com"}},
|
||||
{"pk": 141, "model": "group.rolehistory", "fields": {"person": 100664, "group": 75, "name": "ad", "email": "brian@innovationslab.net"}},
|
||||
{"pk": 142, "model": "group.rolehistory", "fields": {"person": 101568, "group": 76, "name": "ad", "email": "rbonica@juniper.net"}},
|
||||
{"pk": 143, "model": "group.rolehistory", "fields": {"person": 6699, "group": 76, "name": "ad", "email": "dromasca@avaya.com"}},
|
||||
{"pk": 144, "model": "group.rolehistory", "fields": {"person": 105682, "group": 76, "name": "pre-ad", "email": "bclaise@cisco.com"}},
|
||||
{"pk": 145, "model": "group.rolehistory", "fields": {"person": 101568, "group": 77, "name": "ad", "email": "rbonica@juniper.net"}},
|
||||
{"pk": 146, "model": "group.rolehistory", "fields": {"person": 6699, "group": 77, "name": "ad", "email": "dromasca@avaya.com"}},
|
||||
{"pk": 147, "model": "group.rolehistory", "fields": {"person": 105682, "group": 77, "name": "ad", "email": "bclaise@cisco.com"}},
|
||||
{"pk": 148, "model": "group.rolehistory", "fields": {"person": 110856, "group": 78, "name": "ad", "email": "wes@mti-systems.com"}},
|
||||
{"pk": 149, "model": "group.rolehistory", "fields": {"person": 17253, "group": 78, "name": "ad", "email": "ietfdbh@comcast.net"}},
|
||||
{"pk": 150, "model": "group.rolehistory", "fields": {"person": 105519, "group": 78, "name": "pre-ad", "email": "martin.stiemerling@neclab.eu"}},
|
||||
{"pk": 151, "model": "group.rolehistory", "fields": {"person": 110856, "group": 79, "name": "ad", "email": "wes@mti-systems.com"}},
|
||||
{"pk": 152, "model": "group.rolehistory", "fields": {"person": 17253, "group": 79, "name": "ad", "email": "ietfdbh@comcast.net"}},
|
||||
{"pk": 153, "model": "group.rolehistory", "fields": {"person": 105519, "group": 79, "name": "ad", "email": "martin.stiemerling@neclab.eu"}},
|
||||
{"pk": 154, "model": "group.rolehistory", "fields": {"person": 102154, "group": 80, "name": "chair", "email": "alexey.melnikov@isode.com"}},
|
||||
{"pk": 155, "model": "group.rolehistory", "fields": {"person": 106842, "group": 80, "name": "delegate", "email": "msk@cloudmark.com"}},
|
||||
{"pk": 156, "model": "group.rolehistory", "fields": {"person": 106842, "group": 80, "name": "chair", "email": "msk@cloudmark.com"}},
|
||||
{"pk": 157, "model": "group.rolehistory", "fields": {"person": 105791, "group": 81, "name": "chair", "email": "fluffy@cisco.com"}},
|
||||
{"pk": 158, "model": "group.rolehistory", "fields": {"person": 11843, "group": 81, "name": "chair", "email": "cabo@tzi.org"}},
|
||||
{"pk": 159, "model": "group.rolehistory", "fields": {"person": 103881, "group": 82, "name": "chair", "email": "mnot@pobox.com"}},
|
||||
{"pk": 160, "model": "group.rolehistory", "fields": {"person": 109918, "group": 83, "name": "secr", "email": "sm+ietf@elandsys.com"}},
|
||||
{"pk": 161, "model": "group.rolehistory", "fields": {"person": 107491, "group": 83, "name": "chair", "email": "Salvatore.Loreto@ericsson.com"}},
|
||||
{"pk": 162, "model": "group.rolehistory", "fields": {"person": 108488, "group": 83, "name": "chair", "email": "Gabriel.Montenegro@microsoft.com"}},
|
||||
{"pk": 163, "model": "group.rolehistory", "fields": {"person": 21684, "group": 84, "name": "chair", "email": "barryleiba@computer.org"}},
|
||||
{"pk": 164, "model": "group.rolehistory", "fields": {"person": 106842, "group": 84, "name": "chair", "email": "msk@cloudmark.com"}},
|
||||
{"pk": 165, "model": "group.rolehistory", "fields": {"person": 106296, "group": 85, "name": "chair", "email": "andy@hxr.us"}},
|
||||
{"pk": 166, "model": "group.rolehistory", "fields": {"person": 110063, "group": 85, "name": "chair", "email": "ah@TR-Sys.de"}},
|
||||
{"pk": 167, "model": "group.rolehistory", "fields": {"person": 106745, "group": 86, "name": "secr", "email": "ynir@checkpoint.com"}},
|
||||
{"pk": 168, "model": "group.rolehistory", "fields": {"person": 19483, "group": 86, "name": "techadv", "email": "turners@ieca.com"}},
|
||||
{"pk": 169, "model": "group.rolehistory", "fields": {"person": 106405, "group": 86, "name": "chair", "email": "tobias.gondrom@gondrom.org"}},
|
||||
{"pk": 170, "model": "group.rolehistory", "fields": {"person": 102154, "group": 86, "name": "chair", "email": "alexey.melnikov@isode.com"}},
|
||||
{"pk": 171, "model": "group.rolehistory", "fields": {"person": 112547, "group": 87, "name": "chair", "email": "chris@lookout.net"}},
|
||||
{"pk": 172, "model": "group.rolehistory", "fields": {"person": 106987, "group": 88, "name": "chair", "email": "br@brianrosen.net"}},
|
||||
{"pk": 173, "model": "group.rolehistory", "fields": {"person": 108123, "group": 88, "name": "chair", "email": "Gabor.Bajko@nokia.com"}},
|
||||
{"pk": 174, "model": "group.rolehistory", "fields": {"person": 108717, "group": 89, "name": "chair", "email": "simon.perreault@viagenie.ca"}},
|
||||
{"pk": 175, "model": "group.rolehistory", "fields": {"person": 21684, "group": 90, "name": "chair", "email": "barryleiba@computer.org"}},
|
||||
{"pk": 176, "model": "group.rolehistory", "fields": {"person": 106842, "group": 90, "name": "chair", "email": "msk@cloudmark.com"}},
|
||||
{"pk": 177, "model": "group.rolehistory", "fields": {"person": 105907, "group": 91, "name": "techadv", "email": "stpeter@stpeter.im"}},
|
||||
{"pk": 178, "model": "group.rolehistory", "fields": {"person": 105857, "group": 91, "name": "chair", "email": "Hannes.Tschofenig@gmx.net"}},
|
||||
{"pk": 179, "model": "group.rolehistory", "fields": {"person": 21684, "group": 91, "name": "chair", "email": "barryleiba@computer.org"}},
|
||||
{"pk": 180, "model": "group.rolehistory", "fields": {"person": 8698, "group": 91, "name": "chair", "email": "derek@ihtfp.com"}},
|
||||
{"pk": 181, "model": "group.rolehistory", "fields": {"person": 2793, "group": 92, "name": "chair", "email": "bob.hinden@gmail.com"}},
|
||||
{"pk": 182, "model": "group.rolehistory", "fields": {"person": 100664, "group": 92, "name": "chair", "email": "brian@innovationslab.net"}},
|
||||
{"pk": 183, "model": "group.rolehistory", "fields": {"person": 105691, "group": 92, "name": "chair", "email": "otroan@employees.org"}},
|
||||
{"pk": 184, "model": "group.rolehistory", "fields": {"person": 100664, "group": 93, "name": "chair", "email": "brian@innovationslab.net"}},
|
||||
{"pk": 185, "model": "group.rolehistory", "fields": {"person": 4857, "group": 93, "name": "chair", "email": "odonoghue@isoc.org"}},
|
||||
{"pk": 186, "model": "group.rolehistory", "fields": {"person": 109919, "group": 94, "name": "chair", "email": "zhangyunfei@chinamobile.com"}},
|
||||
{"pk": 187, "model": "group.rolehistory", "fields": {"person": 103392, "group": 94, "name": "chair", "email": "sprevidi@cisco.com"}},
|
||||
{"pk": 188, "model": "group.rolehistory", "fields": {"person": 100038, "group": 95, "name": "chair", "email": "dwing@cisco.com"}},
|
||||
{"pk": 189, "model": "group.rolehistory", "fields": {"person": 15927, "group": 95, "name": "chair", "email": "dthaler@microsoft.com"}},
|
||||
{"pk": 190, "model": "group.rolehistory", "fields": {"person": 104331, "group": 96, "name": "chair", "email": "gorry@erg.abdn.ac.uk"}},
|
||||
{"pk": 191, "model": "group.rolehistory", "fields": {"person": 104267, "group": 96, "name": "chair", "email": "jmpolk@cisco.com"}},
|
||||
{"pk": 192, "model": "group.rolehistory", "fields": {"person": 105907, "group": 97, "name": "techadv", "email": "stpeter@stpeter.im"}},
|
||||
{"pk": 193, "model": "group.rolehistory", "fields": {"person": 107435, "group": 97, "name": "chair", "email": "enrico.marocco@telecomitalia.it"}},
|
||||
{"pk": 194, "model": "group.rolehistory", "fields": {"person": 106812, "group": 97, "name": "chair", "email": "vkg@bell-labs.com"}},
|
||||
{"pk": 195, "model": "group.rolehistory", "fields": {"person": 2690, "group": 98, "name": "chair", "email": "Richard_Woundy@cable.comcast.com"}},
|
||||
{"pk": 196, "model": "group.rolehistory", "fields": {"person": 101685, "group": 98, "name": "chair", "email": "flefauch@cisco.com"}},
|
||||
{"pk": 197, "model": "group.rolehistory", "fields": {"person": 102154, "group": 99, "name": "techadv", "email": "alexey.melnikov@isode.com"}},
|
||||
{"pk": 198, "model": "group.rolehistory", "fields": {"person": 109430, "group": 99, "name": "chair", "email": "haibin.song@huawei.com"}},
|
||||
{"pk": 199, "model": "group.rolehistory", "fields": {"person": 2690, "group": 99, "name": "chair", "email": "Richard_Woundy@cable.comcast.com"}},
|
||||
{"pk": 200, "model": "group.rolehistory", "fields": {"person": 106315, "group": 100, "name": "chair", "email": "gjshep@gmail.com"}},
|
||||
{"pk": 201, "model": "group.rolehistory", "fields": {"person": 110406, "group": 101, "name": "techadv", "email": "leifj@sunet.se"}},
|
||||
{"pk": 202, "model": "group.rolehistory", "fields": {"person": 21097, "group": 101, "name": "chair", "email": "spencer.shepler@gmail.com"}},
|
||||
{"pk": 203, "model": "group.rolehistory", "fields": {"person": 18587, "group": 101, "name": "chair", "email": "beepy@netapp.com"}},
|
||||
{"pk": 204, "model": "group.rolehistory", "fields": {"person": 2324, "group": 102, "name": "chair", "email": "sob@harvard.edu"}},
|
||||
{"pk": 205, "model": "group.rolehistory", "fields": {"person": 106638, "group": 102, "name": "chair", "email": "slblake@petri-meat.com"}},
|
||||
{"pk": 206, "model": "group.rolehistory", "fields": {"person": 100609, "group": 103, "name": "chair", "email": "lorenzo@vicisano.net"}},
|
||||
{"pk": 207, "model": "group.rolehistory", "fields": {"person": 12671, "group": 103, "name": "chair", "email": "adamson@itd.nrl.navy.mil"}},
|
||||
{"pk": 208, "model": "group.rolehistory", "fields": {"person": 8209, "group": 104, "name": "chair", "email": "ttalpey@microsoft.com"}},
|
||||
{"pk": 209, "model": "group.rolehistory", "fields": {"person": 103156, "group": 104, "name": "chair", "email": "black_david@emc.com"}},
|
||||
{"pk": 210, "model": "group.rolehistory", "fields": {"person": 100887, "group": 105, "name": "chair", "email": "mrw@lilacglade.org"}},
|
||||
{"pk": 211, "model": "group.rolehistory", "fields": {"person": 109884, "group": 105, "name": "chair", "email": "denghui02@hotmail.com"}},
|
||||
{"pk": 212, "model": "group.rolehistory", "fields": {"person": 105328, "group": 106, "name": "chair", "email": "adurand@juniper.net"}},
|
||||
{"pk": 213, "model": "group.rolehistory", "fields": {"person": 15927, "group": 106, "name": "chair", "email": "dthaler@microsoft.com"}},
|
||||
{"pk": 214, "model": "group.rolehistory", "fields": {"person": 108081, "group": 107, "name": "secr", "email": "junbi@tsinghua.edu.cn"}},
|
||||
{"pk": 215, "model": "group.rolehistory", "fields": {"person": 107482, "group": 107, "name": "techadv", "email": "jianping@cernet.edu.cn"}},
|
||||
{"pk": 216, "model": "group.rolehistory", "fields": {"person": 108428, "group": 107, "name": "chair", "email": "jeanmichel.combes@gmail.com"}},
|
||||
{"pk": 217, "model": "group.rolehistory", "fields": {"person": 108396, "group": 107, "name": "chair", "email": "christian.vogt@ericsson.com"}},
|
||||
{"pk": 218, "model": "group.rolehistory", "fields": {"person": 2793, "group": 108, "name": "chair", "email": "bob.hinden@gmail.com"}},
|
||||
{"pk": 219, "model": "group.rolehistory", "fields": {"person": 105691, "group": 108, "name": "chair", "email": "otroan@employees.org"}},
|
||||
{"pk": 220, "model": "group.rolehistory", "fields": {"person": 106186, "group": 109, "name": "chair", "email": "julien.ietf@gmail.com"}},
|
||||
{"pk": 221, "model": "group.rolehistory", "fields": {"person": 109800, "group": 109, "name": "chair", "email": "jouni.korhonen@nsn.com"}},
|
||||
{"pk": 222, "model": "group.rolehistory", "fields": {"person": 106199, "group": 110, "name": "secr", "email": "Wassim.Haddad@ericsson.com"}},
|
||||
{"pk": 223, "model": "group.rolehistory", "fields": {"person": 108833, "group": 110, "name": "secr", "email": "luigi@net.t-labs.tu-berlin.de"}},
|
||||
{"pk": 224, "model": "group.rolehistory", "fields": {"person": 108822, "group": 110, "name": "chair", "email": "terry.manderson@icann.org"}},
|
||||
{"pk": 225, "model": "group.rolehistory", "fields": {"person": 3862, "group": 110, "name": "chair", "email": "jmh@joelhalpern.com"}},
|
||||
{"pk": 226, "model": "group.rolehistory", "fields": {"person": 112773, "group": 111, "name": "techadv", "email": "lars@netapp.com"}},
|
||||
{"pk": 227, "model": "group.rolehistory", "fields": {"person": 111293, "group": 111, "name": "chair", "email": "robert.cragie@gridmerge.com"}},
|
||||
{"pk": 228, "model": "group.rolehistory", "fields": {"person": 110531, "group": 111, "name": "chair", "email": "caozhen@chinamobile.com"}},
|
||||
{"pk": 229, "model": "group.rolehistory", "fields": {"person": 106173, "group": 112, "name": "chair", "email": "stig@venaas.com"}},
|
||||
{"pk": 230, "model": "group.rolehistory", "fields": {"person": 105992, "group": 112, "name": "chair", "email": "sarikaya@ieee.org"}},
|
||||
{"pk": 231, "model": "group.rolehistory", "fields": {"person": 105730, "group": 113, "name": "chair", "email": "henrik@levkowetz.com"}},
|
||||
{"pk": 232, "model": "group.rolehistory", "fields": {"person": 106010, "group": 113, "name": "chair", "email": "mccap@petoni.org"}},
|
||||
{"pk": 233, "model": "group.rolehistory", "fields": {"person": 101214, "group": 114, "name": "chair", "email": "rkoodli@cisco.com"}},
|
||||
{"pk": 234, "model": "group.rolehistory", "fields": {"person": 103283, "group": 114, "name": "chair", "email": "basavaraj.patil@nokia.com"}},
|
||||
{"pk": 235, "model": "group.rolehistory", "fields": {"person": 4857, "group": 115, "name": "chair", "email": "odonoghue@isoc.org"}},
|
||||
{"pk": 236, "model": "group.rolehistory", "fields": {"person": 8249, "group": 116, "name": "techadv", "email": "carlsonj@workingcode.com"}},
|
||||
{"pk": 237, "model": "group.rolehistory", "fields": {"person": 102391, "group": 116, "name": "chair", "email": "d3e3e3@gmail.com"}},
|
||||
{"pk": 238, "model": "group.rolehistory", "fields": {"person": 106414, "group": 117, "name": "chair", "email": "yaakov_s@rad.com"}},
|
||||
{"pk": 239, "model": "group.rolehistory", "fields": {"person": 4857, "group": 117, "name": "chair", "email": "odonoghue@isoc.org"}},
|
||||
{"pk": 240, "model": "group.rolehistory", "fields": {"person": 2324, "group": 118, "name": "chair", "email": "sob@harvard.edu"}},
|
||||
{"pk": 241, "model": "group.rolehistory", "fields": {"person": 104807, "group": 118, "name": "chair", "email": "ietf@cdl.asgaard.org"}},
|
||||
{"pk": 242, "model": "group.rolehistory", "fields": {"person": 101104, "group": 118, "name": "chair", "email": "melinda.shore@gmail.com"}},
|
||||
{"pk": 243, "model": "group.rolehistory", "fields": {"person": 106462, "group": 119, "name": "editor", "email": "edward.beili@actelis.com"}},
|
||||
{"pk": 244, "model": "group.rolehistory", "fields": {"person": 107067, "group": 119, "name": "editor", "email": "moti.Morgenstern@ecitele.com"}},
|
||||
{"pk": 245, "model": "group.rolehistory", "fields": {"person": 105024, "group": 119, "name": "editor", "email": "scott.baillie@nec.com.au"}},
|
||||
{"pk": 246, "model": "group.rolehistory", "fields": {"person": 107258, "group": 119, "name": "editor", "email": "umberto.bonollo@nec.com.au"}},
|
||||
{"pk": 247, "model": "group.rolehistory", "fields": {"person": 106345, "group": 119, "name": "chair", "email": "Menachem.Dodge@ecitele.com"}},
|
||||
{"pk": 248, "model": "group.rolehistory", "fields": {"person": 109800, "group": 120, "name": "chair", "email": "jouni.korhonen@nsn.com"}},
|
||||
{"pk": 249, "model": "group.rolehistory", "fields": {"person": 107737, "group": 120, "name": "chair", "email": "lionel.morand@orange.com"}},
|
||||
{"pk": 250, "model": "group.rolehistory", "fields": {"person": 111529, "group": 121, "name": "chair", "email": "bnordman@lbl.gov"}},
|
||||
{"pk": 251, "model": "group.rolehistory", "fields": {"person": 6766, "group": 121, "name": "chair", "email": "n.brownlee@auckland.ac.nz"}},
|
||||
{"pk": 252, "model": "group.rolehistory", "fields": {"person": 19790, "group": 122, "name": "techadv", "email": "tim.polk@nist.gov"}},
|
||||
{"pk": 253, "model": "group.rolehistory", "fields": {"person": 6842, "group": 122, "name": "chair", "email": "bertietf@bwijnen.net"}},
|
||||
{"pk": 254, "model": "group.rolehistory", "fields": {"person": 105537, "group": 122, "name": "chair", "email": "mehmet.ersue@nsn.com"}},
|
||||
{"pk": 255, "model": "group.rolehistory", "fields": {"person": 21106, "group": 123, "name": "chair", "email": "j.schoenwaelder@jacobs-university.de"}},
|
||||
{"pk": 256, "model": "group.rolehistory", "fields": {"person": 19587, "group": 123, "name": "chair", "email": "david.kessens@nsn.com"}},
|
||||
{"pk": 257, "model": "group.rolehistory", "fields": {"person": 6766, "group": 124, "name": "chair", "email": "n.brownlee@auckland.ac.nz"}},
|
||||
{"pk": 258, "model": "group.rolehistory", "fields": {"person": 103651, "group": 124, "name": "chair", "email": "quittek@neclab.eu"}},
|
||||
{"pk": 259, "model": "group.rolehistory", "fields": {"person": 17681, "group": 125, "name": "techadv", "email": "paul.congdon@hp.com"}},
|
||||
{"pk": 260, "model": "group.rolehistory", "fields": {"person": 109800, "group": 125, "name": "chair", "email": "jouni.korhonen@nsn.com"}},
|
||||
{"pk": 261, "model": "group.rolehistory", "fields": {"person": 111434, "group": 125, "name": "chair", "email": "mauricio.sanchez@hp.com"}},
|
||||
{"pk": 262, "model": "group.rolehistory", "fields": {"person": 109558, "group": 126, "name": "secr", "email": "daniel@olddog.co.uk"}},
|
||||
{"pk": 263, "model": "group.rolehistory", "fields": {"person": 110259, "group": 126, "name": "techadv", "email": "rstruik.ext@gmail.com"}},
|
||||
{"pk": 264, "model": "group.rolehistory", "fields": {"person": 106269, "group": 126, "name": "chair", "email": "jpv@cisco.com"}},
|
||||
{"pk": 265, "model": "group.rolehistory", "fields": {"person": 108796, "group": 126, "name": "chair", "email": "culler@cs.berkeley.edu"}},
|
||||
{"pk": 266, "model": "group.rolehistory", "fields": {"person": 109558, "group": 127, "name": "secr", "email": "daniel@olddog.co.uk"}},
|
||||
{"pk": 267, "model": "group.rolehistory", "fields": {"person": 110259, "group": 127, "name": "techadv", "email": "rstruik.ext@gmail.com"}},
|
||||
{"pk": 268, "model": "group.rolehistory", "fields": {"person": 102254, "group": 127, "name": "chair", "email": "mcr+ietf@sandelman.ca"}},
|
||||
{"pk": 269, "model": "group.rolehistory", "fields": {"person": 106269, "group": 127, "name": "chair", "email": "jpv@cisco.com"}},
|
||||
{"pk": 270, "model": "group.rolehistory", "fields": {"person": 108796, "group": 127, "name": "chair", "email": "culler@cs.berkeley.edu"}},
|
||||
{"pk": 271, "model": "group.rolehistory", "fields": {"person": 105097, "group": 128, "name": "chair", "email": "drage@alcatel-lucent.com"}},
|
||||
{"pk": 272, "model": "group.rolehistory", "fields": {"person": 107684, "group": 128, "name": "chair", "email": "hkaplan@acmepacket.com"}},
|
||||
{"pk": 273, "model": "group.rolehistory", "fields": {"person": 105097, "group": 129, "name": "chair", "email": "drage@alcatel-lucent.com"}},
|
||||
{"pk": 274, "model": "group.rolehistory", "fields": {"person": 110842, "group": 129, "name": "chair", "email": "gsalguei@cisco.com"}},
|
||||
{"pk": 275, "model": "group.rolehistory", "fields": {"person": 107684, "group": 129, "name": "chair", "email": "hkaplan@acmepacket.com"}},
|
||||
{"pk": 276, "model": "group.rolehistory", "fields": {"person": 112547, "group": 130, "name": "chair", "email": "chris@lookout.net"}},
|
||||
{"pk": 277, "model": "group.rolehistory", "fields": {"person": 7262, "group": 131, "name": "chair", "email": "narten@us.ibm.com"}},
|
||||
{"pk": 278, "model": "group.rolehistory", "fields": {"person": 105786, "group": 131, "name": "chair", "email": "matthew.bocci@alcatel-lucent.com"}},
|
||||
{"pk": 279, "model": "group.rolehistory", "fields": {"person": 112438, "group": 131, "name": "chair", "email": "bschlies@cisco.com"}},
|
||||
{"pk": 280, "model": "group.rolehistory", "fields": {"person": 7262, "group": 132, "name": "chair", "email": "narten@us.ibm.com"}},
|
||||
{"pk": 281, "model": "group.rolehistory", "fields": {"person": 105786, "group": 132, "name": "chair", "email": "matthew.bocci@alcatel-lucent.com"}},
|
||||
{"pk": 282, "model": "group.rolehistory", "fields": {"person": 112438, "group": 132, "name": "chair", "email": "bschlies@cisco.com"}},
|
||||
{"pk": 283, "model": "group.rolehistory", "fields": {"person": 6771, "group": 133, "name": "chair", "email": "tony@att.com"}},
|
||||
{"pk": 284, "model": "group.rolehistory", "fields": {"person": 109498, "group": 133, "name": "chair", "email": "anthonybryan@gmail.com"}},
|
||||
{"pk": 285, "model": "group.rolehistory", "fields": {"person": 109558, "group": 134, "name": "secr", "email": "daniel@olddog.co.uk"}},
|
||||
{"pk": 286, "model": "group.rolehistory", "fields": {"person": 19987, "group": 134, "name": "chair", "email": "danny@tcb.net"}},
|
||||
{"pk": 287, "model": "group.rolehistory", "fields": {"person": 107256, "group": 134, "name": "chair", "email": "marshall.eubanks@gmail.com"}},
|
||||
{"pk": 288, "model": "group.rolehistory", "fields": {"person": 108185, "group": 134, "name": "chair", "email": "ben@niven-jenkins.co.uk"}},
|
||||
{"pk": 289, "model": "group.rolehistory", "fields": {"person": 109558, "group": 135, "name": "secr", "email": "daniel@olddog.co.uk"}},
|
||||
{"pk": 290, "model": "group.rolehistory", "fields": {"person": 19987, "group": 135, "name": "chair", "email": "danny@tcb.net"}},
|
||||
{"pk": 291, "model": "group.rolehistory", "fields": {"person": 107256, "group": 135, "name": "chair", "email": "marshall.eubanks@gmail.com"}},
|
||||
{"pk": 292, "model": "group.rolehistory", "fields": {"person": 2329, "group": 135, "name": "chair", "email": "stbryant@cisco.com"}},
|
||||
{"pk": 293, "model": "group.rolehistory", "fields": {"person": 108185, "group": 135, "name": "chair", "email": "ben@niven-jenkins.co.uk"}},
|
||||
{"pk": 294, "model": "group.rolehistory", "fields": {"person": 109558, "group": 136, "name": "secr", "email": "daniel@olddog.co.uk"}},
|
||||
{"pk": 295, "model": "group.rolehistory", "fields": {"person": 107256, "group": 136, "name": "chair", "email": "marshall.eubanks@gmail.com"}},
|
||||
{"pk": 296, "model": "group.rolehistory", "fields": {"person": 2329, "group": 136, "name": "chair", "email": "stbryant@cisco.com"}},
|
||||
{"pk": 297, "model": "group.rolehistory", "fields": {"person": 108185, "group": 136, "name": "chair", "email": "ben@niven-jenkins.co.uk"}},
|
||||
{"pk": 298, "model": "group.rolehistory", "fields": {"person": 109558, "group": 137, "name": "secr", "email": "daniel@olddog.co.uk"}},
|
||||
{"pk": 299, "model": "group.rolehistory", "fields": {"person": 2329, "group": 137, "name": "chair", "email": "stbryant@cisco.com"}},
|
||||
{"pk": 300, "model": "group.rolehistory", "fields": {"person": 108185, "group": 137, "name": "chair", "email": "ben@niven-jenkins.co.uk"}},
|
||||
{"pk": 301, "model": "group.rolehistory", "fields": {"person": 104557, "group": 140, "name": "techadv", "email": "jon.peterson@neustar.biz"}},
|
||||
{"pk": 302, "model": "group.rolehistory", "fields": {"person": 105426, "group": 140, "name": "chair", "email": "hisham.khartabil@gmail.com"}},
|
||||
{"pk": 303, "model": "group.rolehistory", "fields": {"person": 104140, "group": 140, "name": "chair", "email": "ben@nostrum.com"}},
|
||||
{"pk": 304, "model": "group.rolehistory", "fields": {"person": 110049, "group": 141, "name": "chair", "email": "jhildebr@cisco.com"}},
|
||||
{"pk": 305, "model": "group.rolehistory", "fields": {"person": 104140, "group": 141, "name": "chair", "email": "ben@nostrum.com"}},
|
||||
{"pk": 306, "model": "group.rolehistory", "fields": {"person": 102391, "group": 142, "name": "chair", "email": "d3e3e3@gmail.com"}},
|
||||
{"pk": 307, "model": "group.rolehistory", "fields": {"person": 8243, "group": 142, "name": "chair", "email": "nordmark@acm.org"}},
|
||||
{"pk": 308, "model": "group.rolehistory", "fields": {"person": 109558, "group": 143, "name": "secr", "email": "daniel@olddog.co.uk"}},
|
||||
{"pk": 309, "model": "group.rolehistory", "fields": {"person": 2329, "group": 143, "name": "chair", "email": "stbryant@cisco.com"}},
|
||||
{"pk": 310, "model": "group.rolehistory", "fields": {"person": 109558, "group": 144, "name": "secr", "email": "daniel@olddog.co.uk"}},
|
||||
{"pk": 311, "model": "group.rolehistory", "fields": {"person": 2329, "group": 144, "name": "chair", "email": "stbryant@cisco.com"}},
|
||||
{"pk": 312, "model": "group.rolehistory", "fields": {"person": 106860, "group": 144, "name": "chair", "email": "thomas.morin@orange.com"}},
|
||||
{"pk": 313, "model": "group.rolehistory", "fields": {"person": 107084, "group": 145, "name": "secr", "email": "rmarshall@telecomsys.com"}},
|
||||
{"pk": 314, "model": "group.rolehistory", "fields": {"person": 106012, "group": 145, "name": "chair", "email": "marc.linsner@cisco.com"}},
|
||||
{"pk": 315, "model": "group.rolehistory", "fields": {"person": 108049, "group": 145, "name": "chair", "email": "rbarnes@bbn.com"}},
|
||||
{"pk": 316, "model": "group.rolehistory", "fields": {"person": 107084, "group": 146, "name": "secr", "email": "rmarshall@telecomsys.com"}},
|
||||
{"pk": 317, "model": "group.rolehistory", "fields": {"person": 106012, "group": 146, "name": "chair", "email": "marc.linsner@cisco.com"}},
|
||||
{"pk": 318, "model": "group.rolehistory", "fields": {"person": 108049, "group": 146, "name": "chair", "email": "rbarnes@bbn.com"}},
|
||||
{"pk": 319, "model": "group.rolehistory", "fields": {"person": 107084, "group": 146, "name": "chair", "email": "rmarshall@telecomsys.com"}},
|
||||
{"pk": 320, "model": "group.rolehistory", "fields": {"person": 5797, "group": 147, "name": "techadv", "email": "smb@cs.columbia.edu"}},
|
||||
{"pk": 321, "model": "group.rolehistory", "fields": {"person": 13219, "group": 147, "name": "chair", "email": "Sandra.Murphy@sparta.com"}},
|
||||
{"pk": 322, "model": "group.rolehistory", "fields": {"person": 111246, "group": 147, "name": "chair", "email": "morrowc@ops-netman.net"}},
|
||||
{"pk": 323, "model": "group.rolehistory", "fields": {"person": 109178, "group": 148, "name": "chair", "email": "ajs@anvilwalrusden.com"}},
|
||||
{"pk": 324, "model": "group.rolehistory", "fields": {"person": 106842, "group": 148, "name": "chair", "email": "msk@cloudmark.com"}},
|
||||
{"pk": 325, "model": "group.rolehistory", "fields": {"person": 102174, "group": 150, "name": "chair", "email": "dirk.kutscher@neclab.eu"}},
|
||||
{"pk": 326, "model": "group.rolehistory", "fields": {"person": 18250, "group": 151, "name": "chair", "email": "Borje.Ohlman@ericsson.com"}},
|
||||
{"pk": 327, "model": "group.rolehistory", "fields": {"person": 102174, "group": 151, "name": "chair", "email": "dirk.kutscher@neclab.eu"}},
|
||||
{"pk": 328, "model": "group.rolehistory", "fields": {"person": 109814, "group": 157, "name": "chair", "email": "lachlan.andrew@gmail.com"}},
|
||||
{"pk": 329, "model": "group.rolehistory", "fields": {"person": 19826, "group": 159, "name": "chair", "email": "canetti@watson.ibm.com"}},
|
||||
{"pk": 330, "model": "group.rolehistory", "fields": {"person": 103303, "group": 159, "name": "chair", "email": "mcgrew@cisco.com"}},
|
||||
{"pk": 331, "model": "group.rolehistory", "fields": {"person": 109225, "group": 159, "name": "chair", "email": "kmigoe@nsa.gov"}},
|
||||
{"pk": 332, "model": "group.rolehistory", "fields": {"person": 21226, "group": 160, "name": "chair", "email": "falk@bbn.com"}},
|
||||
{"pk": 333, "model": "group.rolehistory", "fields": {"person": 11928, "group": 160, "name": "chair", "email": "johnl@taugh.com"}},
|
||||
{"pk": 334, "model": "group.rolehistory", "fields": {"person": 102154, "group": 161, "name": "chair", "email": "alexey.melnikov@isode.com"}},
|
||||
{"pk": 335, "model": "group.rolehistory", "fields": {"person": 106842, "group": 161, "name": "delegate", "email": "msk@cloudmark.com"}},
|
||||
{"pk": 336, "model": "group.rolehistory", "fields": {"person": 106842, "group": 161, "name": "chair", "email": "msk@cloudmark.com"}},
|
||||
{"pk": 337, "model": "group.rolehistory", "fields": {"person": 109558, "group": 162, "name": "secr", "email": "daniel@olddog.co.uk"}},
|
||||
{"pk": 338, "model": "group.rolehistory", "fields": {"person": 108279, "group": 162, "name": "chair", "email": "martin.vigoureux@alcatel-lucent.com"}},
|
||||
{"pk": 339, "model": "group.rolehistory", "fields": {"person": 2329, "group": 162, "name": "chair", "email": "stbryant@cisco.com"}},
|
||||
{"pk": 340, "model": "group.rolehistory", "fields": {"person": 106860, "group": 162, "name": "chair", "email": "thomas.morin@orange.com"}},
|
||||
{"pk": 341, "model": "group.rolehistory", "fields": {"person": 7262, "group": 164, "name": "chair", "email": "narten@us.ibm.com"}},
|
||||
{"pk": 342, "model": "group.rolehistory", "fields": {"person": 105786, "group": 164, "name": "chair", "email": "matthew.bocci@alcatel-lucent.com"}},
|
||||
{"pk": 343, "model": "group.rolehistory", "fields": {"person": 112438, "group": 164, "name": "chair", "email": "bschlies@cisco.com"}},
|
||||
{"pk": 344, "model": "group.rolehistory", "fields": {"person": 105786, "group": 165, "name": "chair", "email": "matthew.bocci@alcatel-lucent.com"}},
|
||||
{"pk": 345, "model": "group.rolehistory", "fields": {"person": 112438, "group": 165, "name": "chair", "email": "bschlies@cisco.com"}},
|
||||
{"pk": 346, "model": "group.rolehistory", "fields": {"person": 112160, "group": 167, "name": "chair", "email": "wesley.george@twcable.com"}},
|
||||
{"pk": 347, "model": "group.rolehistory", "fields": {"person": 19869, "group": 168, "name": "chair", "email": "Marc.Blanchet@viagenie.ca"}},
|
||||
{"pk": 348, "model": "group.rolehistory", "fields": {"person": 112160, "group": 168, "name": "chair", "email": "wesley.george@twcable.com"}},
|
||||
{"pk": 349, "model": "group.rolehistory", "fields": {"person": 19869, "group": 169, "name": "chair", "email": "Marc.Blanchet@viagenie.ca"}},
|
||||
{"pk": 350, "model": "group.rolehistory", "fields": {"person": 2853, "group": 169, "name": "techadv", "email": "fred@cisco.com"}},
|
||||
{"pk": 351, "model": "group.rolehistory", "fields": {"person": 112160, "group": 169, "name": "chair", "email": "wesley.george@twcable.com"}},
|
||||
{"pk": 352, "model": "group.rolehistory", "fields": {"person": 105519, "group": 170, "name": "techadv", "email": "martin.stiemerling@neclab.eu"}},
|
||||
{"pk": 353, "model": "group.rolehistory", "fields": {"person": 19869, "group": 170, "name": "chair", "email": "Marc.Blanchet@viagenie.ca"}},
|
||||
{"pk": 354, "model": "group.rolehistory", "fields": {"person": 2853, "group": 170, "name": "techadv", "email": "fred@cisco.com"}},
|
||||
{"pk": 355, "model": "group.rolehistory", "fields": {"person": 112160, "group": 170, "name": "chair", "email": "wesley.george@twcable.com"}},
|
||||
{"pk": 356, "model": "group.rolehistory", "fields": {"person": 101568, "group": 171, "name": "techadv", "email": "rbonica@juniper.net"}},
|
||||
{"pk": 357, "model": "group.rolehistory", "fields": {"person": 105786, "group": 171, "name": "chair", "email": "matthew.bocci@alcatel-lucent.com"}},
|
||||
{"pk": 358, "model": "group.rolehistory", "fields": {"person": 112438, "group": 171, "name": "chair", "email": "bschlies@cisco.com"}},
|
||||
{"pk": 359, "model": "group.rolehistory", "fields": {"person": 105519, "group": 172, "name": "techadv", "email": "martin.stiemerling@neclab.eu"}},
|
||||
{"pk": 360, "model": "group.rolehistory", "fields": {"person": 19869, "group": 172, "name": "chair", "email": "Marc.Blanchet@viagenie.ca"}},
|
||||
{"pk": 361, "model": "group.rolehistory", "fields": {"person": 2329, "group": 172, "name": "techadv", "email": "stbryant@cisco.com"}},
|
||||
{"pk": 362, "model": "group.rolehistory", "fields": {"person": 2853, "group": 172, "name": "techadv", "email": "fred@cisco.com"}},
|
||||
{"pk": 363, "model": "group.rolehistory", "fields": {"person": 112160, "group": 172, "name": "chair", "email": "wesley.george@twcable.com"}},
|
||||
{"pk": 364, "model": "group.rolehistory", "fields": {"person": 108054, "group": 173, "name": "secr", "email": "jiangsheng@huawei.com"}},
|
||||
{"pk": 365, "model": "group.rolehistory", "fields": {"person": 106461, "group": 173, "name": "chair", "email": "tjc@ecs.soton.ac.uk"}},
|
||||
{"pk": 366, "model": "group.rolehistory", "fields": {"person": 112160, "group": 173, "name": "chair", "email": "wesley.george@twcable.com"}},
|
||||
{"pk": 367, "model": "group.rolehistory", "fields": {"person": 108054, "group": 174, "name": "secr", "email": "jiangsheng@huawei.com"}},
|
||||
{"pk": 368, "model": "group.rolehistory", "fields": {"person": 106461, "group": 174, "name": "chair", "email": "tjc@ecs.soton.ac.uk"}},
|
||||
{"pk": 369, "model": "group.rolehistory", "fields": {"person": 111656, "group": 175, "name": "chair", "email": "warren@kumari.net"}},
|
||||
{"pk": 370, "model": "group.rolehistory", "fields": {"person": 108304, "group": 175, "name": "chair", "email": "gvandeve@cisco.com"}},
|
||||
{"pk": 371, "model": "group.rolehistory", "fields": {"person": 12620, "group": 176, "name": "chair", "email": "iab-chair@ietf.org"}},
|
||||
{"pk": 372, "model": "group.rolehistory", "fields": {"person": 105113, "group": 176, "name": "execdir", "email": "jabley@hopcount.ca"}},
|
||||
{"pk": 373, "model": "group.rolehistory", "fields": {"person": 109259, "group": 176, "name": "chair", "email": "dow.street@linquest.com"}},
|
||||
{"pk": 374, "model": "group.rolehistory", "fields": {"person": 12620, "group": 176, "name": "chair", "email": "Bernard_Aboba@hotmail.com"}},
|
||||
{"pk": 375, "model": "group.rolehistory", "fields": {"person": 102830, "group": 176, "name": "chair", "email": "mary.barnes@polycom.com"}},
|
||||
{"pk": 376, "model": "group.rolehistory", "fields": {"person": 12620, "group": 177, "name": "chair", "email": "iab-chair@ietf.org"}},
|
||||
{"pk": 377, "model": "group.rolehistory", "fields": {"person": 109259, "group": 177, "name": "chair", "email": "dow.street@linquest.com"}},
|
||||
{"pk": 378, "model": "group.rolehistory", "fields": {"person": 12620, "group": 177, "name": "chair", "email": "Bernard_Aboba@hotmail.com"}},
|
||||
{"pk": 379, "model": "group.rolehistory", "fields": {"person": 102830, "group": 177, "name": "chair", "email": "mary.barnes@polycom.com"}},
|
||||
{"pk": 380, "model": "group.rolehistory", "fields": {"person": 12620, "group": 178, "name": "chair", "email": "iab-chair@ietf.org"}},
|
||||
{"pk": 381, "model": "group.rolehistory", "fields": {"person": 102830, "group": 178, "name": "execdir", "email": "mary.barnes@polycom.com"}},
|
||||
{"pk": 382, "model": "group.rolehistory", "fields": {"person": 109259, "group": 178, "name": "chair", "email": "dow.street@linquest.com"}},
|
||||
{"pk": 383, "model": "group.rolehistory", "fields": {"person": 12620, "group": 178, "name": "chair", "email": "Bernard_Aboba@hotmail.com"}},
|
||||
{"pk": 384, "model": "group.rolehistory", "fields": {"person": 102830, "group": 178, "name": "chair", "email": "mary.barnes@polycom.com"}},
|
||||
{"pk": 385, "model": "group.rolehistory", "fields": {"person": 12620, "group": 179, "name": "chair", "email": "iab-chair@ietf.org"}},
|
||||
{"pk": 386, "model": "group.rolehistory", "fields": {"person": 102830, "group": 179, "name": "execdir", "email": "mary.barnes@polycom.com"}},
|
||||
{"pk": 387, "model": "group.rolehistory", "fields": {"person": 109259, "group": 179, "name": "chair", "email": "dow.street@linquest.com"}},
|
||||
{"pk": 388, "model": "group.rolehistory", "fields": {"person": 12620, "group": 179, "name": "chair", "email": "Bernard_Aboba@hotmail.com"}},
|
||||
{"pk": 389, "model": "group.rolehistory", "fields": {"person": 12620, "group": 181, "name": "chair", "email": "iab-chair@ietf.org"}},
|
||||
{"pk": 390, "model": "group.rolehistory", "fields": {"person": 102830, "group": 181, "name": "execdir", "email": "mary.barnes@polycom.com"}},
|
||||
{"pk": 391, "model": "group.rolehistory", "fields": {"person": 12620, "group": 181, "name": "chair", "email": "Bernard_Aboba@hotmail.com"}},
|
||||
{"pk": 392, "model": "group.rolehistory", "fields": {"person": 12620, "group": 182, "name": "chair", "email": "iab-chair@ietf.org"}},
|
||||
{"pk": 393, "model": "group.rolehistory", "fields": {"person": 102830, "group": 182, "name": "execdir", "email": "mary.barnes@polycom.com"}},
|
||||
{"pk": 394, "model": "group.rolehistory", "fields": {"person": 108756, "group": 182, "name": "secr", "email": "cmorgan@amsl.com"}},
|
||||
{"pk": 395, "model": "group.rolehistory", "fields": {"person": 12620, "group": 182, "name": "chair", "email": "Bernard_Aboba@hotmail.com"}},
|
||||
{"pk": 396, "model": "group.rolehistory", "fields": {"person": 2097, "group": 183, "name": "chair", "email": "lear@cisco.com"}},
|
||||
{"pk": 397, "model": "group.rolehistory", "fields": {"person": 5797, "group": 183, "name": "chair", "email": "smb@cs.columbia.edu"}},
|
||||
{"pk": 398, "model": "group.rolehistory", "fields": {"person": 12620, "group": 184, "name": "chair", "email": "iab-chair@ietf.org"}},
|
||||
{"pk": 399, "model": "group.rolehistory", "fields": {"person": 102830, "group": 184, "name": "execdir", "email": "mary.barnes@polycom.com"}},
|
||||
{"pk": 400, "model": "group.rolehistory", "fields": {"person": 12620, "group": 184, "name": "chair", "email": "Bernard_Aboba@hotmail.com"}},
|
||||
{"pk": 401, "model": "group.rolehistory", "fields": {"person": 2399, "group": 185, "name": "techadv", "email": "dkatz@juniper.net"}},
|
||||
{"pk": 402, "model": "group.rolehistory", "fields": {"person": 23057, "group": 185, "name": "chair", "email": "dward@cisco.com"}},
|
||||
{"pk": 403, "model": "group.rolehistory", "fields": {"person": 105046, "group": 185, "name": "chair", "email": "jhaas@pfrc.org"}},
|
||||
{"pk": 404, "model": "group.rolehistory", "fields": {"person": 21106, "group": 186, "name": "chair", "email": "j.schoenwaelder@jacobs-university.de"}},
|
||||
{"pk": 405, "model": "group.rolehistory", "fields": {"person": 19587, "group": 186, "name": "chair", "email": "david.kessens@nsn.com"}},
|
||||
{"pk": 406, "model": "group.rolehistory", "fields": {"person": 19790, "group": 187, "name": "techadv", "email": "tim.polk@nist.gov"}},
|
||||
{"pk": 407, "model": "group.rolehistory", "fields": {"person": 6842, "group": 187, "name": "chair", "email": "bertietf@bwijnen.net"}},
|
||||
{"pk": 408, "model": "group.rolehistory", "fields": {"person": 105537, "group": 187, "name": "chair", "email": "mehmet.ersue@nsn.com"}},
|
||||
{"pk": 409, "model": "group.rolehistory", "fields": {"person": 109178, "group": 188, "name": "chair", "email": "ajs@anvilwalrusden.com"}},
|
||||
{"pk": 410, "model": "group.rolehistory", "fields": {"person": 106842, "group": 188, "name": "chair", "email": "msk@cloudmark.com"}},
|
||||
{"pk": 411, "model": "group.rolehistory", "fields": {"person": 106842, "group": 189, "name": "chair", "email": "msk@cloudmark.com"}},
|
||||
{"pk": 412, "model": "group.rolehistory", "fields": {"person": 100454, "group": 190, "name": "chair", "email": "olaf@nlnetlabs.nl"}},
|
||||
{"pk": 413, "model": "group.rolehistory", "fields": {"person": 106842, "group": 190, "name": "chair", "email": "msk@cloudmark.com"}},
|
||||
{"pk": 414, "model": "group.rolehistory", "fields": {"person": 100454, "group": 191, "name": "chair", "email": "olaf@nlnetlabs.nl"}},
|
||||
{"pk": 415, "model": "group.rolehistory", "fields": {"person": 106842, "group": 191, "name": "chair", "email": "msk@cloudmark.com"}},
|
||||
{"pk": 416, "model": "group.rolehistory", "fields": {"person": 106012, "group": 192, "name": "chair", "email": "marc.linsner@cisco.com"}},
|
||||
{"pk": 417, "model": "group.rolehistory", "fields": {"person": 108049, "group": 192, "name": "chair", "email": "rbarnes@bbn.com"}},
|
||||
{"pk": 418, "model": "group.rolehistory", "fields": {"person": 107084, "group": 192, "name": "chair", "email": "rmarshall@telecomsys.com"}},
|
||||
{"pk": 419, "model": "group.rolehistory", "fields": {"person": 19483, "group": 193, "name": "chair", "email": "turners@ieca.com"}},
|
||||
{"pk": 420, "model": "group.rolehistory", "fields": {"person": 19177, "group": 193, "name": "chair", "email": "stephen.farrell@cs.tcd.ie"}},
|
||||
{"pk": 421, "model": "group.rolehistory", "fields": {"person": 19647, "group": 194, "name": "chair", "email": "dharkins@lounge.org"}},
|
||||
{"pk": 422, "model": "group.rolehistory", "fields": {"person": 110934, "group": 194, "name": "chair", "email": "lnovikov@mitre.org"}},
|
||||
{"pk": 423, "model": "group.rolehistory", "fields": {"person": 106186, "group": 195, "name": "chair", "email": "julien.ietf@gmail.com"}},
|
||||
{"pk": 424, "model": "group.rolehistory", "fields": {"person": 109800, "group": 195, "name": "chair", "email": "jouni.korhonen@nsn.com"}},
|
||||
{"pk": 425, "model": "group.rolehistory", "fields": {"person": 2097, "group": 196, "name": "chair", "email": "lear@cisco.com"}},
|
||||
{"pk": 426, "model": "group.rolehistory", "fields": {"person": 5797, "group": 196, "name": "chair", "email": "smb@cs.columbia.edu"}},
|
||||
{"pk": 427, "model": "group.rolehistory", "fields": {"person": 107292, "group": 197, "name": "liaiman", "email": "tsbsg2@itu.int"}},
|
||||
{"pk": 428, "model": "group.rolehistory", "fields": {"person": 106224, "group": 197, "name": "liaiman", "email": "mmorrow@cisco.com"}},
|
||||
{"pk": 429, "model": "group.rolehistory", "fields": {"person": 106842, "group": 198, "name": "chair", "email": "msk@cloudmark.com"}},
|
||||
{"pk": 430, "model": "group.rolehistory", "fields": {"person": 100454, "group": 200, "name": "chair", "email": "olaf@nlnetlabs.nl"}},
|
||||
{"pk": 431, "model": "group.rolehistory", "fields": {"person": 106842, "group": 200, "name": "chair", "email": "msk@cloudmark.com"}},
|
||||
{"pk": 432, "model": "group.rolehistory", "fields": {"person": 100454, "group": 201, "name": "chair", "email": "olaf@nlnetlabs.nl"}},
|
||||
{"pk": 433, "model": "group.rolehistory", "fields": {"person": 102154, "group": 202, "name": "chair", "email": "alexey.melnikov@isode.com"}},
|
||||
{"pk": 434, "model": "group.rolehistory", "fields": {"person": 106842, "group": 202, "name": "chair", "email": "msk@cloudmark.com"}},
|
||||
{"pk": 435, "model": "group.rolehistory", "fields": {"person": 102154, "group": 203, "name": "chair", "email": "alexey.melnikov@isode.com"}},
|
||||
{"pk": 436, "model": "group.rolehistory", "fields": {"person": 112772, "group": 204, "name": "auth", "email": "zhiyuan.hu@alcatel-sbell.com.cn"}},
|
||||
{"pk": 437, "model": "group.rolehistory", "fields": {"person": 112613, "group": 204, "name": "auth", "email": "jerry.shih@att.com"}},
|
||||
{"pk": 438, "model": "group.rolehistory", "fields": {"person": 113064, "group": 204, "name": "auth", "email": "thierry.berisot@telekom.de"}},
|
||||
{"pk": 439, "model": "group.rolehistory", "fields": {"person": 113067, "group": 204, "name": "auth", "email": "laurentwalter.goix@telecomitalia.it"}},
|
||||
{"pk": 440, "model": "group.rolehistory", "fields": {"person": 106842, "group": 204, "name": "liaiman", "email": "msk@cloudmark.com"}},
|
||||
{"pk": 441, "model": "group.rolehistory", "fields": {"person": 112772, "group": 205, "name": "auth", "email": "zhiyuan.hu@alcatel-sbell.com.cn"}},
|
||||
{"pk": 442, "model": "group.rolehistory", "fields": {"person": 112613, "group": 205, "name": "auth", "email": "jerry.shih@att.com"}},
|
||||
{"pk": 443, "model": "group.rolehistory", "fields": {"person": 113064, "group": 205, "name": "auth", "email": "thierry.berisot@telekom.de"}},
|
||||
{"pk": 444, "model": "group.rolehistory", "fields": {"person": 113067, "group": 205, "name": "auth", "email": "laurentwalter.goix@telecomitalia.it"}},
|
||||
{"pk": 445, "model": "group.rolehistory", "fields": {"person": 106987, "group": 206, "name": "chair", "email": "br@brianrosen.net"}},
|
||||
{"pk": 446, "model": "group.rolehistory", "fields": {"person": 18321, "group": 207, "name": "chair", "email": "presnick@qualcomm.com"}},
|
||||
{"pk": 447, "model": "group.rolehistory", "fields": {"person": 105907, "group": 207, "name": "chair", "email": "stpeter@stpeter.im"}},
|
||||
{"pk": 448, "model": "group.rolehistory", "fields": {"person": 18321, "group": 208, "name": "chair", "email": "presnick@qualcomm.com"}},
|
||||
{"pk": 449, "model": "group.rolehistory", "fields": {"person": 105907, "group": 208, "name": "chair", "email": "stpeter@stpeter.im"}},
|
||||
{"pk": 450, "model": "group.rolehistory", "fields": {"person": 21684, "group": 208, "name": "chair", "email": "barryleiba@computer.org"}},
|
||||
{"pk": 451, "model": "group.rolehistory", "fields": {"person": 110856, "group": 209, "name": "chair", "email": "wes@mti-systems.com"}},
|
||||
{"pk": 452, "model": "group.rolehistory", "fields": {"person": 17253, "group": 209, "name": "chair", "email": "ietfdbh@comcast.net"}},
|
||||
{"pk": 453, "model": "group.rolehistory", "fields": {"person": 110856, "group": 210, "name": "chair", "email": "wes@mti-systems.com"}},
|
||||
{"pk": 454, "model": "group.rolehistory", "fields": {"person": 17253, "group": 210, "name": "chair", "email": "ietfdbh@comcast.net"}},
|
||||
{"pk": 455, "model": "group.rolehistory", "fields": {"person": 105519, "group": 210, "name": "chair", "email": "martin.stiemerling@neclab.eu"}},
|
||||
{"pk": 456, "model": "group.rolehistory", "fields": {"person": 6699, "group": 211, "name": "chair", "email": "dromasca@avaya.com"}},
|
||||
{"pk": 457, "model": "group.rolehistory", "fields": {"person": 101568, "group": 211, "name": "chair", "email": "rbonica@juniper.net"}},
|
||||
{"pk": 458, "model": "group.rolehistory", "fields": {"person": 6699, "group": 212, "name": "chair", "email": "dromasca@avaya.com"}},
|
||||
{"pk": 459, "model": "group.rolehistory", "fields": {"person": 101568, "group": 212, "name": "chair", "email": "rbonica@juniper.net"}},
|
||||
{"pk": 460, "model": "group.rolehistory", "fields": {"person": 105682, "group": 212, "name": "chair", "email": "bclaise@cisco.com"}},
|
||||
{"pk": 461, "model": "group.rolehistory", "fields": {"person": 112611, "group": 213, "name": "chair", "email": "eckelcu@cisco.com"}},
|
||||
{"pk": 462, "model": "group.rolehistory", "fields": {"person": 107520, "group": 213, "name": "chair", "email": "shida@ntt-at.com"}},
|
||||
{"pk": 463, "model": "group.rolehistory", "fields": {"person": 6699, "group": 214, "name": "chair", "email": "dromasca@avaya.com"}},
|
||||
{"pk": 464, "model": "group.rolehistory", "fields": {"person": 112611, "group": 214, "name": "chair", "email": "eckelcu@cisco.com"}},
|
||||
{"pk": 465, "model": "group.rolehistory", "fields": {"person": 107520, "group": 214, "name": "chair", "email": "shida@ntt-at.com"}},
|
||||
{"pk": 466, "model": "group.rolehistory", "fields": {"person": 2097, "group": 216, "name": "chair", "email": "lear@cisco.com"}},
|
||||
{"pk": 467, "model": "group.rolehistory", "fields": {"person": 5797, "group": 216, "name": "chair", "email": "smb@cs.columbia.edu"}},
|
||||
{"pk": 468, "model": "group.rolehistory", "fields": {"person": 5797, "group": 217, "name": "chair", "email": "smb@cs.columbia.edu"}},
|
||||
{"pk": 469, "model": "group.rolehistory", "fields": {"person": 110406, "group": 219, "name": "chair", "email": "leifj@sunet.se"}},
|
||||
{"pk": 470, "model": "group.rolehistory", "fields": {"person": 113270, "group": 220, "name": "chair", "email": "moransar@cisco.com"}},
|
||||
{"pk": 471, "model": "group.rolehistory", "fields": {"person": 110406, "group": 220, "name": "chair", "email": "leifj@sunet.se"}},
|
||||
{"pk": 472, "model": "group.rolehistory", "fields": {"person": 101214, "group": 221, "name": "chair", "email": "Rajeev.Koodli@gmail.com"}},
|
||||
{"pk": 473, "model": "group.rolehistory", "fields": {"person": 106412, "group": 221, "name": "chair", "email": "suresh.krishnan@ericsson.com"}},
|
||||
{"pk": 474, "model": "group.rolehistory", "fields": {"person": 113270, "group": 222, "name": "chair", "email": "moransar@cisco.com"}},
|
||||
{"pk": 475, "model": "group.rolehistory", "fields": {"person": 110406, "group": 222, "name": "chair", "email": "leifj@sunet.se"}},
|
||||
{"pk": 476, "model": "group.rolehistory", "fields": {"person": 110636, "group": 223, "name": "chair", "email": "michael.scharf@alcatel-lucent.com"}},
|
||||
{"pk": 477, "model": "group.rolehistory", "fields": {"person": 15951, "group": 223, "name": "chair", "email": "nishida@sfc.wide.ad.jp"}},
|
||||
{"pk": 478, "model": "group.rolehistory", "fields": {"person": 109321, "group": 223, "name": "chair", "email": "pasi.sarolahti@iki.fi"}},
|
||||
{"pk": 479, "model": "group.rolehistory", "fields": {"person": 107415, "group": 224, "name": "techadv", "email": "xing@cernet.edu.cn"}},
|
||||
{"pk": 480, "model": "group.rolehistory", "fields": {"person": 105328, "group": 224, "name": "chair", "email": "adurand@juniper.net"}},
|
||||
{"pk": 481, "model": "group.rolehistory", "fields": {"person": 108848, "group": 224, "name": "chair", "email": "cuiyong@tsinghua.edu.cn"}},
|
||||
{"pk": 482, "model": "group.rolehistory", "fields": {"person": 100038, "group": 225, "name": "chair", "email": "dwing@cisco.com"}},
|
||||
{"pk": 483, "model": "group.rolehistory", "fields": {"person": 15927, "group": 225, "name": "chair", "email": "dthaler@microsoft.com"}},
|
||||
{"pk": 484, "model": "group.rolehistory", "fields": {"person": 22933, "group": 226, "name": "chair", "email": "chopps@rawdofmt.org"}},
|
||||
{"pk": 485, "model": "group.rolehistory", "fields": {"person": 23057, "group": 226, "name": "chair", "email": "dward@cisco.com"}},
|
||||
{"pk": 486, "model": "group.rolehistory", "fields": {"person": 100038, "group": 232, "name": "chair", "email": "dwing@cisco.com"}},
|
||||
{"pk": 487, "model": "group.rolehistory", "fields": {"person": 15927, "group": 232, "name": "chair", "email": "dthaler@microsoft.com"}},
|
||||
{"pk": 488, "model": "group.rolehistory", "fields": {"person": 110406, "group": 233, "name": "techadv", "email": "leifj@sunet.se"}},
|
||||
{"pk": 489, "model": "group.rolehistory", "fields": {"person": 21097, "group": 233, "name": "chair", "email": "spencer.shepler@gmail.com"}},
|
||||
{"pk": 490, "model": "group.rolehistory", "fields": {"person": 18587, "group": 233, "name": "chair", "email": "beepy@netapp.com"}},
|
||||
{"pk": 491, "model": "group.rolehistory", "fields": {"person": 107998, "group": 234, "name": "chair", "email": "philip.eardley@bt.com"}},
|
||||
{"pk": 492, "model": "group.rolehistory", "fields": {"person": 15951, "group": 234, "name": "chair", "email": "nishida@sfc.wide.ad.jp"}},
|
||||
{"pk": 493, "model": "group.rolehistory", "fields": {"person": 113270, "group": 235, "name": "chair", "email": "moransar@cisco.com"}},
|
||||
{"pk": 494, "model": "group.rolehistory", "fields": {"person": 110406, "group": 235, "name": "chair", "email": "leifj@sunet.se"}},
|
||||
{"pk": 495, "model": "group.rolehistory", "fields": {"person": 107415, "group": 238, "name": "techadv", "email": "xing@cernet.edu.cn"}},
|
||||
{"pk": 496, "model": "group.rolehistory", "fields": {"person": 108848, "group": 238, "name": "chair", "email": "cuiyong@tsinghua.edu.cn"}},
|
||||
{"pk": 497, "model": "group.rolehistory", "fields": {"person": 102154, "group": 243, "name": "chair", "email": "alexey.melnikov@isode.com"}},
|
||||
{"pk": 498, "model": "group.rolehistory", "fields": {"person": 106842, "group": 243, "name": "chair", "email": "superuser@gmail.com"}},
|
||||
{"pk": 499, "model": "group.rolehistory", "fields": {"person": 102154, "group": 245, "name": "chair", "email": "alexey.melnikov@isode.com"}},
|
||||
{"pk": 500, "model": "group.rolehistory", "fields": {"person": 4397, "group": 245, "name": "chair", "email": "ned.freed@mrochek.com"}},
|
||||
{"pk": 501, "model": "group.rolehistory", "fields": {"person": 111086, "group": 246, "name": "chair", "email": "ldunbar@huawei.com"}},
|
||||
{"pk": 502, "model": "group.rolehistory", "fields": {"person": 112438, "group": 246, "name": "chair", "email": "bschlies@cisco.com"}},
|
||||
{"pk": 503, "model": "group.rolehistory", "fields": {"person": 111086, "group": 247, "name": "chair", "email": "ldunbar@huawei.com"}},
|
||||
{"pk": 504, "model": "group.rolehistory", "fields": {"person": 101568, "group": 248, "name": "techadv", "email": "rbonica@juniper.net"}},
|
||||
{"pk": 505, "model": "group.rolehistory", "fields": {"person": 105786, "group": 248, "name": "chair", "email": "matthew.bocci@alcatel-lucent.com"}},
|
||||
{"pk": 506, "model": "group.rolehistory", "fields": {"person": 112438, "group": 248, "name": "chair", "email": "bschlies@cisco.com"}},
|
||||
{"pk": 507, "model": "group.rolehistory", "fields": {"person": 101568, "group": 249, "name": "techadv", "email": "rbonica@juniper.net"}},
|
||||
{"pk": 508, "model": "group.rolehistory", "fields": {"person": 105786, "group": 249, "name": "chair", "email": "matthew.bocci@alcatel-lucent.com"}},
|
||||
{"pk": 509, "model": "group.rolehistory", "fields": {"person": 112438, "group": 249, "name": "chair", "email": "bschlies@cisco.com"}},
|
||||
{"pk": 510, "model": "group.rolehistory", "fields": {"person": 112438, "group": 249, "name": "chair", "email": "bensons@queuefull.net"}},
|
||||
{"pk": 511, "model": "group.rolehistory", "fields": {"person": 102154, "group": 250, "name": "chair", "email": "alexey.melnikov@isode.com"}},
|
||||
{"pk": 512, "model": "group.rolehistory", "fields": {"person": 4397, "group": 250, "name": "chair", "email": "ned.freed@mrochek.com"}},
|
||||
{"pk": 513, "model": "group.rolehistory", "fields": {"person": 104331, "group": 251, "name": "chair", "email": "gorry@erg.abdn.ac.uk"}},
|
||||
{"pk": 514, "model": "group.rolehistory", "fields": {"person": 104267, "group": 251, "name": "chair", "email": "jmpolk@cisco.com"}},
|
||||
{"pk": 515, "model": "group.rolehistory", "fields": {"person": 106842, "group": 252, "name": "chair", "email": "superuser@gmail.com"}},
|
||||
{"pk": 516, "model": "group.rolehistory", "fields": {"person": 107491, "group": 254, "name": "chair", "email": "Salvatore.Loreto@ericsson.com"}},
|
||||
{"pk": 517, "model": "group.rolehistory", "fields": {"person": 102154, "group": 254, "name": "chair", "email": "alexey.melnikov@isode.com"}},
|
||||
{"pk": 518, "model": "group.rolehistory", "fields": {"person": 106842, "group": 254, "name": "chair", "email": "superuser@gmail.com"}},
|
||||
{"pk": 519, "model": "group.rolehistory", "fields": {"person": 20209, "group": 256, "name": "chair", "email": "csp@csperkins.org"}},
|
||||
{"pk": 520, "model": "group.rolehistory", "fields": {"person": 113031, "group": 257, "name": "auth", "email": "gunilla.berndtsson@ericsson.com"}},
|
||||
{"pk": 521, "model": "group.rolehistory", "fields": {"person": 113032, "group": 257, "name": "auth", "email": "catherine.quinquis@orange.com"}},
|
||||
{"pk": 522, "model": "group.rolehistory", "fields": {"person": 2324, "group": 260, "name": "chair", "email": "sob@harvard.edu"}},
|
||||
{"pk": 523, "model": "group.rolehistory", "fields": {"person": 104807, "group": 260, "name": "chair", "email": "ietf@cdl.asgaard.org"}},
|
||||
{"pk": 524, "model": "group.rolehistory", "fields": {"person": 101104, "group": 260, "name": "chair", "email": "melinda.shore@gmail.com"}},
|
||||
{"pk": 525, "model": "group.rolehistory", "fields": {"person": 2324, "group": 261, "name": "chair", "email": "sob@harvard.edu"}},
|
||||
{"pk": 526, "model": "group.rolehistory", "fields": {"person": 101104, "group": 261, "name": "chair", "email": "melinda.shore@gmail.com"}},
|
||||
{"pk": 527, "model": "group.rolehistory", "fields": {"person": 108295, "group": 263, "name": "chair", "email": "mlepinski@gmail.com"}},
|
||||
{"pk": 528, "model": "group.rolehistory", "fields": {"person": 105097, "group": 265, "name": "chair", "email": "drage@alcatel-lucent.com"}},
|
||||
{"pk": 529, "model": "group.rolehistory", "fields": {"person": 110842, "group": 265, "name": "chair", "email": "gsalguei@cisco.com"}},
|
||||
{"pk": 530, "model": "group.rolehistory", "fields": {"person": 110842, "group": 266, "name": "chair", "email": "gsalguei@cisco.com"}},
|
||||
{"pk": 531, "model": "group.rolehistory", "fields": {"person": 110721, "group": 268, "name": "chair", "email": "ted.ietf@gmail.com"}},
|
||||
{"pk": 532, "model": "group.rolehistory", "fields": {"person": 106412, "group": 269, "name": "chair", "email": "nomcom-chair@ietf.org"}},
|
||||
{"pk": 533, "model": "group.rolehistory", "fields": {"person": 104331, "group": 270, "name": "chair", "email": "gorry@erg.abdn.ac.uk"}},
|
||||
{"pk": 534, "model": "group.rolehistory", "fields": {"person": 104267, "group": 270, "name": "chair", "email": "jmpolk@cisco.com"}},
|
||||
{"pk": 535, "model": "group.rolehistory", "fields": {"person": 110070, "group": 270, "name": "chair", "email": "rolf.winter@neclab.eu"}},
|
||||
{"pk": 536, "model": "group.rolehistory", "fields": {"person": 106186, "group": 271, "name": "chair", "email": "julien.ietf@gmail.com"}},
|
||||
{"pk": 537, "model": "group.rolehistory", "fields": {"person": 106412, "group": 271, "name": "chair", "email": "suresh.krishnan@ericsson.com"}},
|
||||
{"pk": 538, "model": "group.rolehistory", "fields": {"person": 105519, "group": 272, "name": "techadv", "email": "martin.stiemerling@neclab.eu"}},
|
||||
{"pk": 539, "model": "group.rolehistory", "fields": {"person": 19869, "group": 272, "name": "chair", "email": "Marc.Blanchet@viagenie.ca"}},
|
||||
{"pk": 540, "model": "group.rolehistory", "fields": {"person": 2329, "group": 272, "name": "techadv", "email": "stbryant@cisco.com"}},
|
||||
{"pk": 541, "model": "group.rolehistory", "fields": {"person": 2853, "group": 272, "name": "techadv", "email": "fred@cisco.com"}},
|
||||
{"pk": 542, "model": "group.rolehistory", "fields": {"person": 112160, "group": 272, "name": "chair", "email": "wesley.george@twcable.com"}},
|
||||
{"pk": 543, "model": "group.rolehistory", "fields": {"person": 107923, "group": 273, "name": "chair", "email": "christer.holmberg@ericsson.com"}},
|
||||
{"pk": 544, "model": "group.rolehistory", "fields": {"person": 108963, "group": 273, "name": "chair", "email": "vpascual@acmepacket.com"}},
|
||||
{"pk": 545, "model": "group.rolehistory", "fields": {"person": 2324, "group": 275, "name": "chair", "email": "sob@harvard.edu"}},
|
||||
{"pk": 546, "model": "group.rolehistory", "fields": {"person": 106638, "group": 275, "name": "chair", "email": "slblake@petri-meat.com"}},
|
||||
{"pk": 547, "model": "group.rolehistory", "fields": {"person": 105728, "group": 276, "name": "chair", "email": "gurtov@cs.helsinki.fi"}},
|
||||
{"pk": 548, "model": "group.rolehistory", "fields": {"person": 107003, "group": 276, "name": "chair", "email": "thomas.r.henderson@boeing.com"}},
|
||||
{"pk": 549, "model": "group.rolehistory", "fields": {"person": 106745, "group": 277, "name": "secr", "email": "ynir@checkpoint.com"}},
|
||||
{"pk": 550, "model": "group.rolehistory", "fields": {"person": 19483, "group": 277, "name": "techadv", "email": "turners@ieca.com"}},
|
||||
{"pk": 551, "model": "group.rolehistory", "fields": {"person": 106405, "group": 277, "name": "chair", "email": "tobias.gondrom@gondrom.org"}},
|
||||
{"pk": 552, "model": "group.rolehistory", "fields": {"person": 102154, "group": 277, "name": "chair", "email": "alexey.melnikov@isode.com"}},
|
||||
{"pk": 553, "model": "group.rolehistory", "fields": {"person": 110910, "group": 279, "name": "chair", "email": "ietf@augustcellars.com"}},
|
||||
{"pk": 554, "model": "group.rolehistory", "fields": {"person": 6771, "group": 279, "name": "chair", "email": "tony@att.com"}},
|
||||
{"pk": 555, "model": "group.rolehistory", "fields": {"person": 110910, "group": 280, "name": "chair", "email": "ietf@augustcellars.com"}},
|
||||
{"pk": 556, "model": "group.rolehistory", "fields": {"person": 4857, "group": 280, "name": "chair", "email": "odonoghue@isoc.org"}},
|
||||
{"pk": 557, "model": "group.rolehistory", "fields": {"person": 6771, "group": 280, "name": "chair", "email": "tony@att.com"}},
|
||||
{"pk": 558, "model": "group.rolehistory", "fields": {"person": 106988, "group": 281, "name": "chair", "email": "glenzorn@gmail.com"}},
|
||||
{"pk": 559, "model": "group.rolehistory", "fields": {"person": 107598, "group": 281, "name": "chair", "email": "tena@huawei.com"}},
|
||||
{"pk": 560, "model": "group.rolehistory", "fields": {"person": 112773, "group": 283, "name": "chair", "email": "lars@netapp.com"}},
|
||||
{"pk": 561, "model": "group.rolehistory", "fields": {"person": 112773, "group": 284, "name": "chair", "email": "lars@netapp.com"}},
|
||||
{"pk": 562, "model": "group.rolehistory", "fields": {"person": 21072, "group": 284, "name": "atlarge", "email": "jari.arkko@piuha.net"}},
|
||||
{"pk": 563, "model": "group.rolehistory", "fields": {"person": 112773, "group": 285, "name": "chair", "email": "lars@netapp.com"}},
|
||||
{"pk": 564, "model": "group.rolehistory", "fields": {"person": 21072, "group": 285, "name": "atlarge", "email": "jari.arkko@piuha.net"}},
|
||||
{"pk": 565, "model": "group.rolehistory", "fields": {"person": 20580, "group": 285, "name": "atlarge", "email": "mallman@icir.org"}},
|
||||
{"pk": 566, "model": "group.rolehistory", "fields": {"person": 112773, "group": 286, "name": "chair", "email": "lars@netapp.com"}},
|
||||
{"pk": 567, "model": "group.rolehistory", "fields": {"person": 21072, "group": 286, "name": "atlarge", "email": "jari.arkko@piuha.net"}},
|
||||
{"pk": 568, "model": "group.rolehistory", "fields": {"person": 20580, "group": 286, "name": "atlarge", "email": "mallman@icir.org"}},
|
||||
{"pk": 569, "model": "group.rolehistory", "fields": {"person": 107190, "group": 286, "name": "chair", "email": "spencer@wonderhamster.org"}},
|
||||
{"pk": 570, "model": "group.rolehistory", "fields": {"person": 112773, "group": 287, "name": "chair", "email": "lars@netapp.com"}},
|
||||
{"pk": 571, "model": "group.rolehistory", "fields": {"person": 21072, "group": 287, "name": "atlarge", "email": "jari.arkko@piuha.net"}},
|
||||
{"pk": 572, "model": "group.rolehistory", "fields": {"person": 20580, "group": 287, "name": "atlarge", "email": "mallman@icir.org"}},
|
||||
{"pk": 573, "model": "group.rolehistory", "fields": {"person": 107190, "group": 287, "name": "chair", "email": "spencer@wonderhamster.org"}},
|
||||
{"pk": 574, "model": "group.rolehistory", "fields": {"person": 21226, "group": 287, "name": "chair", "email": "falk@bbn.com"}},
|
||||
{"pk": 575, "model": "group.rolehistory", "fields": {"person": 112773, "group": 288, "name": "chair", "email": "lars@netapp.com"}},
|
||||
{"pk": 576, "model": "group.rolehistory", "fields": {"person": 21072, "group": 288, "name": "atlarge", "email": "jari.arkko@piuha.net"}},
|
||||
{"pk": 577, "model": "group.rolehistory", "fields": {"person": 20580, "group": 288, "name": "atlarge", "email": "mallman@icir.org"}},
|
||||
{"pk": 578, "model": "group.rolehistory", "fields": {"person": 21226, "group": 288, "name": "chair", "email": "falk@bbn.com"}},
|
||||
{"pk": 579, "model": "group.rolehistory", "fields": {"person": 112773, "group": 289, "name": "chair", "email": "lars@netapp.com"}},
|
||||
{"pk": 580, "model": "group.rolehistory", "fields": {"person": 21072, "group": 289, "name": "atlarge", "email": "jari.arkko@piuha.net"}},
|
||||
{"pk": 581, "model": "group.rolehistory", "fields": {"person": 20580, "group": 289, "name": "atlarge", "email": "mallman@icir.org"}},
|
||||
{"pk": 582, "model": "group.rolehistory", "fields": {"person": 112773, "group": 290, "name": "chair", "email": "lars@netapp.com"}},
|
||||
{"pk": 583, "model": "group.rolehistory", "fields": {"person": 21072, "group": 290, "name": "atlarge", "email": "jari.arkko@piuha.net"}},
|
||||
{"pk": 584, "model": "group.rolehistory", "fields": {"person": 20580, "group": 290, "name": "atlarge", "email": "mallman@icir.org"}},
|
||||
{"pk": 585, "model": "group.rolehistory", "fields": {"person": 107190, "group": 290, "name": "atlarge", "email": "spencer@wonderhamster.org"}},
|
||||
{"pk": 586, "model": "group.rolehistory", "fields": {"person": 10083, "group": 291, "name": "chair", "email": "paul.hoffman@vpnc.org"}},
|
||||
{"pk": 587, "model": "group.rolehistory", "fields": {"person": 104278, "group": 291, "name": "chair", "email": "yaronf.ietf@gmail.com"}},
|
||||
{"pk": 588, "model": "group.rolehistory", "fields": {"person": 20209, "group": 292, "name": "chair", "email": "csp@csperkins.org"}},
|
||||
{"pk": 589, "model": "group.rolehistory", "fields": {"person": 103877, "group": 292, "name": "chair", "email": "michawe@ifi.uio.no"}},
|
||||
{"pk": 590, "model": "group.rolehistory", "fields": {"person": 109800, "group": 295, "name": "chair", "email": "jouni.korhonen@nsn.com"}},
|
||||
{"pk": 591, "model": "group.rolehistory", "fields": {"person": 107737, "group": 295, "name": "chair", "email": "lionel.morand@orange.com"}},
|
||||
{"pk": 592, "model": "group.rolehistory", "fields": {"person": 100754, "group": 296, "name": "secr", "email": "tom.taylor.stds@gmail.com"}},
|
||||
{"pk": 593, "model": "group.rolehistory", "fields": {"person": 105873, "group": 296, "name": "chair", "email": "even.roni@huawei.com"}},
|
||||
{"pk": 594, "model": "group.rolehistory", "fields": {"person": 104294, "group": 296, "name": "chair", "email": "magnus.westerlund@ericsson.com"}},
|
||||
{"pk": 595, "model": "group.rolehistory", "fields": {"person": 100754, "group": 297, "name": "secr", "email": "tom.taylor.stds@gmail.com"}},
|
||||
{"pk": 596, "model": "group.rolehistory", "fields": {"person": 104294, "group": 297, "name": "chair", "email": "magnus.westerlund@ericsson.com"}},
|
||||
{"pk": 597, "model": "group.rolehistory", "fields": {"person": 108368, "group": 298, "name": "chair", "email": "abegen@cisco.com"}},
|
||||
{"pk": 598, "model": "group.rolehistory", "fields": {"person": 105873, "group": 298, "name": "chair", "email": "even.roni@huawei.com"}},
|
||||
{"pk": 599, "model": "group.rolehistory", "fields": {"person": 108368, "group": 299, "name": "chair", "email": "abegen@cisco.com"}},
|
||||
{"pk": 600, "model": "group.rolehistory", "fields": {"person": 109800, "group": 300, "name": "chair", "email": "jouni.korhonen@nsn.com"}},
|
||||
{"pk": 601, "model": "group.rolehistory", "fields": {"person": 107737, "group": 300, "name": "chair", "email": "lionel.morand@orange.com"}},
|
||||
{"pk": 602, "model": "group.rolehistory", "fields": {"person": 109800, "group": 301, "name": "chair", "email": "jouni.korhonen@nsn.com"}},
|
||||
{"pk": 603, "model": "group.rolehistory", "fields": {"person": 107737, "group": 301, "name": "chair", "email": "lionel.morand@orange.com"}},
|
||||
{"pk": 604, "model": "group.rolehistory", "fields": {"person": 109800, "group": 302, "name": "chair", "email": "jouni.korhonen@nsn.com"}},
|
||||
{"pk": 605, "model": "group.rolehistory", "fields": {"person": 107737, "group": 302, "name": "chair", "email": "lionel.morand@orange.com"}},
|
||||
{"pk": 606, "model": "group.rolehistory", "fields": {"person": 109802, "group": 308, "name": "chair", "email": "alvaro.retana@hp.com"}},
|
||||
{"pk": 607, "model": "group.rolehistory", "fields": {"person": 106742, "group": 308, "name": "chair", "email": "akatlas@gmail.com"}},
|
||||
{"pk": 608, "model": "group.rolehistory", "fields": {"person": 106742, "group": 309, "name": "chair", "email": "akatlas@gmail.com"}},
|
||||
{"pk": 609, "model": "group.rolehistory", "fields": {"person": 108081, "group": 311, "name": "secr", "email": "junbi@tsinghua.edu.cn"}},
|
||||
{"pk": 610, "model": "group.rolehistory", "fields": {"person": 107482, "group": 311, "name": "techadv", "email": "jianping@cernet.edu.cn"}},
|
||||
{"pk": 611, "model": "group.rolehistory", "fields": {"person": 108428, "group": 311, "name": "chair", "email": "jeanmichel.combes@gmail.com"}},
|
||||
{"pk": 612, "model": "group.rolehistory", "fields": {"person": 108396, "group": 311, "name": "chair", "email": "christian.vogt@ericsson.com"}},
|
||||
{"pk": 613, "model": "group.rolehistory", "fields": {"person": 103881, "group": 315, "name": "chair", "email": "mnot@pobox.com"}},
|
||||
{"pk": 614, "model": "group.rolehistory", "fields": {"person": 19790, "group": 316, "name": "techadv", "email": "tim.polk@nist.gov"}},
|
||||
{"pk": 615, "model": "group.rolehistory", "fields": {"person": 6842, "group": 316, "name": "chair", "email": "bertietf@bwijnen.net"}},
|
||||
{"pk": 616, "model": "group.rolehistory", "fields": {"person": 105537, "group": 316, "name": "chair", "email": "mehmet.ersue@nsn.com"}},
|
||||
{"pk": 617, "model": "group.rolehistory", "fields": {"person": 105791, "group": 317, "name": "chair", "email": "fluffy@iii.ca"}},
|
||||
{"pk": 618, "model": "group.rolehistory", "fields": {"person": 11843, "group": 317, "name": "chair", "email": "cabo@tzi.org"}},
|
||||
{"pk": 619, "model": "group.rolehistory", "fields": {"person": 100754, "group": 318, "name": "secr", "email": "tom.taylor.stds@gmail.com"}},
|
||||
{"pk": 620, "model": "group.rolehistory", "fields": {"person": 105097, "group": 318, "name": "chair", "email": "keith.drage@alcatel-lucent.com"}},
|
||||
{"pk": 621, "model": "group.rolehistory", "fields": {"person": 105873, "group": 318, "name": "chair", "email": "even.roni@huawei.com"}},
|
||||
{"pk": 622, "model": "group.rolehistory", "fields": {"person": 100754, "group": 319, "name": "secr", "email": "tom.taylor.stds@gmail.com"}},
|
||||
{"pk": 623, "model": "group.rolehistory", "fields": {"person": 105097, "group": 319, "name": "chair", "email": "keith.drage@alcatel-lucent.com"}},
|
||||
{"pk": 624, "model": "group.rolehistory", "fields": {"person": 19790, "group": 322, "name": "techadv", "email": "tim.polk@nist.gov"}},
|
||||
{"pk": 625, "model": "group.rolehistory", "fields": {"person": 6842, "group": 322, "name": "chair", "email": "bertietf@bwijnen.net"}},
|
||||
{"pk": 626, "model": "group.rolehistory", "fields": {"person": 105537, "group": 322, "name": "chair", "email": "mehmet.ersue@nsn.com"}},
|
||||
{"pk": 627, "model": "group.rolehistory", "fields": {"person": 19790, "group": 326, "name": "techadv", "email": "tim.polk@nist.gov"}},
|
||||
{"pk": 628, "model": "group.rolehistory", "fields": {"person": 6842, "group": 326, "name": "chair", "email": "bertietf@bwijnen.net"}},
|
||||
{"pk": 629, "model": "group.rolehistory", "fields": {"person": 105537, "group": 326, "name": "chair", "email": "mehmet.ersue@nsn.com"}},
|
||||
{"pk": 630, "model": "group.rolehistory", "fields": {"person": 19790, "group": 327, "name": "techadv", "email": "tim.polk@nist.gov"}},
|
||||
{"pk": 631, "model": "group.rolehistory", "fields": {"person": 6842, "group": 327, "name": "chair", "email": "bertietf@bwijnen.net"}},
|
||||
{"pk": 632, "model": "group.rolehistory", "fields": {"person": 105537, "group": 327, "name": "chair", "email": "mehmet.ersue@nsn.com"}},
|
||||
{"pk": 633, "model": "group.rolehistory", "fields": {"person": 103881, "group": 328, "name": "chair", "email": "mnot@pobox.com"}},
|
||||
{"pk": 634, "model": "group.rolehistory", "fields": {"person": 103881, "group": 329, "name": "chair", "email": "mnot@pobox.com"}},
|
||||
{"pk": 635, "model": "group.rolehistory", "fields": {"person": 107729, "group": 330, "name": "liaiman", "email": "Eric.Gray@Ericsson.com"}},
|
||||
{"pk": 636, "model": "group.rolehistory", "fields": {"person": 107599, "group": 330, "name": "auth", "email": "tony@jeffree.co.uk"}},
|
||||
{"pk": 637, "model": "group.rolehistory", "fields": {"person": 106897, "group": 331, "name": "techadv", "email": "stewe@stewe.org"}},
|
||||
{"pk": 638, "model": "group.rolehistory", "fields": {"person": 105791, "group": 331, "name": "chair", "email": "fluffy@iii.ca"}},
|
||||
{"pk": 639, "model": "group.rolehistory", "fields": {"person": 2250, "group": 331, "name": "chair", "email": "jdrosen@jdrosen.net"}},
|
||||
{"pk": 640, "model": "group.rolehistory", "fields": {"person": 102154, "group": 332, "name": "techadv", "email": "alexey.melnikov@isode.com"}},
|
||||
{"pk": 641, "model": "group.rolehistory", "fields": {"person": 109430, "group": 332, "name": "chair", "email": "haibin.song@huawei.com"}},
|
||||
{"pk": 642, "model": "group.rolehistory", "fields": {"person": 2690, "group": 332, "name": "chair", "email": "Richard_Woundy@cable.comcast.com"}},
|
||||
{"pk": 643, "model": "group.rolehistory", "fields": {"person": 2324, "group": 333, "name": "chair", "email": "sob@harvard.edu"}},
|
||||
{"pk": 644, "model": "group.rolehistory", "fields": {"person": 104807, "group": 333, "name": "chair", "email": "christopher.liljenstolpe@bigswitch.com"}},
|
||||
{"pk": 645, "model": "group.rolehistory", "fields": {"person": 101104, "group": 333, "name": "chair", "email": "melinda.shore@gmail.com"}},
|
||||
{"pk": 646, "model": "group.rolehistory", "fields": {"person": 19790, "group": 334, "name": "techadv", "email": "tim.polk@nist.gov"}},
|
||||
{"pk": 647, "model": "group.rolehistory", "fields": {"person": 6842, "group": 334, "name": "chair", "email": "bertietf@bwijnen.net"}},
|
||||
{"pk": 648, "model": "group.rolehistory", "fields": {"person": 105537, "group": 334, "name": "chair", "email": "mehmet.ersue@nsn.com"}},
|
||||
{"pk": 649, "model": "group.rolehistory", "fields": {"person": 19790, "group": 336, "name": "techadv", "email": "tim.polk@nist.gov"}},
|
||||
{"pk": 650, "model": "group.rolehistory", "fields": {"person": 6842, "group": 336, "name": "chair", "email": "bertietf@bwijnen.net"}},
|
||||
{"pk": 651, "model": "group.rolehistory", "fields": {"person": 105537, "group": 336, "name": "chair", "email": "mehmet.ersue@nsn.com"}},
|
||||
{"pk": 652, "model": "group.rolehistory", "fields": {"person": 112773, "group": 338, "name": "chair", "email": "lars@netapp.com"}},
|
||||
{"pk": 653, "model": "group.rolehistory", "fields": {"person": 112330, "group": 338, "name": "chair", "email": "mirja.kuehlewind@ikr.uni-stuttgart.de"}},
|
||||
{"pk": 654, "model": "group.rolehistory", "fields": {"person": 112773, "group": 339, "name": "chair", "email": "lars@netapp.com"}},
|
||||
{"pk": 655, "model": "group.rolehistory", "fields": {"person": 112330, "group": 339, "name": "chair", "email": "mirja.kuehlewind@ikr.uni-stuttgart.de"}},
|
||||
{"pk": 656, "model": "group.rolehistory", "fields": {"person": 18321, "group": 340, "name": "chair", "email": "presnick@qualcomm.com"}},
|
||||
{"pk": 657, "model": "group.rolehistory", "fields": {"person": 21684, "group": 340, "name": "chair", "email": "barryleiba@computer.org"}},
|
||||
{"pk": 658, "model": "group.rolehistory", "fields": {"person": 18321, "group": 341, "name": "chair", "email": "presnick@qualcomm.com"}},
|
||||
{"pk": 659, "model": "group.rolehistory", "fields": {"person": 21684, "group": 341, "name": "chair", "email": "barryleiba@computer.org"}},
|
||||
{"pk": 660, "model": "group.rolehistory", "fields": {"person": 18321, "group": 341, "name": "chair", "email": "presnick@qti.qualcomm.com"}},
|
||||
{"pk": 661, "model": "group.rolehistory", "fields": {"person": 18321, "group": 342, "name": "ad", "email": "presnick@qualcomm.com"}},
|
||||
{"pk": 662, "model": "group.rolehistory", "fields": {"person": 21684, "group": 342, "name": "ad", "email": "barryleiba@computer.org"}},
|
||||
{"pk": 663, "model": "group.rolehistory", "fields": {"person": 18321, "group": 343, "name": "pre-ad", "email": "presnick@qti.qualcomm.com"}},
|
||||
{"pk": 664, "model": "group.rolehistory", "fields": {"person": 18321, "group": 343, "name": "ad", "email": "presnick@qualcomm.com"}},
|
||||
{"pk": 665, "model": "group.rolehistory", "fields": {"person": 21684, "group": 343, "name": "ad", "email": "barryleiba@computer.org"}},
|
||||
{"pk": 666, "model": "group.rolehistory", "fields": {"person": 18321, "group": 344, "name": "pre-ad", "email": "presnick@qti.qualcomm.com"}},
|
||||
{"pk": 667, "model": "group.rolehistory", "fields": {"person": 18321, "group": 344, "name": "ad", "email": "presnick@qualcomm.com"}},
|
||||
{"pk": 668, "model": "group.rolehistory", "fields": {"person": 21684, "group": 344, "name": "ad", "email": "barryleiba@computer.org"}},
|
||||
{"pk": 669, "model": "group.rolehistory", "fields": {"person": 18321, "group": 345, "name": "ad", "email": "presnick@qti.qualcomm.com"}},
|
||||
{"pk": 670, "model": "group.rolehistory", "fields": {"person": 18321, "group": 345, "name": "ad", "email": "presnick@qualcomm.com"}},
|
||||
{"pk": 671, "model": "group.rolehistory", "fields": {"person": 21684, "group": 345, "name": "ad", "email": "barryleiba@computer.org"}},
|
||||
{"pk": 672, "model": "group.rolehistory", "fields": {"person": 2324, "group": 346, "name": "chair", "email": "sob@harvard.edu"}},
|
||||
{"pk": 673, "model": "group.rolehistory", "fields": {"person": 104807, "group": 346, "name": "chair", "email": "christopher.liljenstolpe@bigswitch.com"}},
|
||||
{"pk": 674, "model": "group.rolehistory", "fields": {"person": 101104, "group": 346, "name": "chair", "email": "melinda.shore@gmail.com"}},
|
||||
{"pk": 675, "model": "group.rolehistory", "fields": {"person": 103881, "group": 347, "name": "chair", "email": "mnot@pobox.com"}},
|
||||
{"pk": 676, "model": "group.rolehistory", "fields": {"person": 23057, "group": 349, "name": "chair", "email": "dward@cisco.com"}},
|
||||
{"pk": 677, "model": "group.rolehistory", "fields": {"person": 111584, "group": 354, "name": "chair", "email": "kerlyn@ieee.org"}},
|
||||
{"pk": 678, "model": "group.rolehistory", "fields": {"person": 105992, "group": 356, "name": "chair", "email": "sarikaya@ieee.org"}},
|
||||
{"pk": 679, "model": "group.rolehistory", "fields": {"person": 102154, "group": 358, "name": "chair", "email": "alexey.melnikov@isode.com"}},
|
||||
{"pk": 680, "model": "group.rolehistory", "fields": {"person": 103881, "group": 358, "name": "chair", "email": "mnot@pobox.com"}},
|
||||
{"pk": 681, "model": "group.rolehistory", "fields": {"person": 102154, "group": 359, "name": "chair", "email": "alexey.melnikov@isode.com"}},
|
||||
{"pk": 682, "model": "group.rolehistory", "fields": {"person": 103881, "group": 359, "name": "chair", "email": "mnot@pobox.com"}},
|
||||
{"pk": 683, "model": "group.rolehistory", "fields": {"person": 103881, "group": 360, "name": "chair", "email": "mnot@pobox.com"}},
|
||||
{"pk": 684, "model": "group.rolehistory", "fields": {"person": 8698, "group": 362, "name": "chair", "email": "derek@ihtfp.com"}},
|
||||
{"pk": 685, "model": "group.rolehistory", "fields": {"person": 15448, "group": 365, "name": "chair", "email": "shanna@juniper.net"}},
|
||||
{"pk": 686, "model": "group.rolehistory", "fields": {"person": 2399, "group": 366, "name": "techadv", "email": "dkatz@juniper.net"}},
|
||||
{"pk": 687, "model": "group.rolehistory", "fields": {"person": 23057, "group": 366, "name": "chair", "email": "dward@cisco.com"}},
|
||||
{"pk": 688, "model": "group.rolehistory", "fields": {"person": 105046, "group": 366, "name": "chair", "email": "jhaas@pfrc.org"}},
|
||||
{"pk": 689, "model": "group.rolehistory", "fields": {"person": 103881, "group": 367, "name": "chair", "email": "mnot@pobox.com"}},
|
||||
{"pk": 690, "model": "group.rolehistory", "fields": {"person": 101214, "group": 368, "name": "chair", "email": "rkoodli@cisco.com"}},
|
||||
{"pk": 691, "model": "group.rolehistory", "fields": {"person": 103283, "group": 368, "name": "chair", "email": "basavaraj.patil@nokia.com"}},
|
||||
{"pk": 692, "model": "group.rolehistory", "fields": {"person": 101214, "group": 369, "name": "chair", "email": "rkoodli@cisco.com"}},
|
||||
{"pk": 693, "model": "group.rolehistory", "fields": {"person": 103283, "group": 369, "name": "chair", "email": "basavaraj.patil@nokia.com"}},
|
||||
{"pk": 694, "model": "group.rolehistory", "fields": {"person": 103283, "group": 369, "name": "chair", "email": "bpatil1+ietf@gmail.com"}},
|
||||
{"pk": 695, "model": "group.rolehistory", "fields": {"person": 103881, "group": 370, "name": "chair", "email": "mnot@pobox.com"}},
|
||||
{"pk": 696, "model": "group.rolehistory", "fields": {"person": 102191, "group": 371, "name": "chair", "email": "tlyu@mit.edu"}},
|
||||
{"pk": 697, "model": "group.rolehistory", "fields": {"person": 107956, "group": 371, "name": "chair", "email": "shawn.emery@oracle.com"}},
|
||||
{"pk": 698, "model": "group.rolehistory", "fields": {"person": 102154, "group": 371, "name": "chair", "email": "alexey.melnikov@isode.com"}},
|
||||
{"pk": 699, "model": "group.rolehistory", "fields": {"person": 104978, "group": 372, "name": "chair", "email": "jhutz@cmu.edu"}},
|
||||
{"pk": 700, "model": "group.rolehistory", "fields": {"person": 106376, "group": 372, "name": "chair", "email": "larry.zhu@microsoft.com"}},
|
||||
{"pk": 701, "model": "group.rolehistory", "fields": {"person": 103048, "group": 372, "name": "chair", "email": "hartmans-ietf@mit.edu"}},
|
||||
{"pk": 702, "model": "group.rolehistory", "fields": {"person": 103881, "group": 373, "name": "chair", "email": "mnot@pobox.com"}},
|
||||
{"pk": 703, "model": "group.rolehistory", "fields": {"person": 107729, "group": 374, "name": "liaiman", "email": "Eric.Gray@Ericsson.com"}},
|
||||
{"pk": 704, "model": "group.rolehistory", "fields": {"person": 107599, "group": 374, "name": "auth", "email": "tony@jeffree.co.uk"}},
|
||||
{"pk": 705, "model": "group.rolehistory", "fields": {"person": 114106, "group": 374, "name": "auth", "email": "r.b.marks@ieee.org"}},
|
||||
{"pk": 706, "model": "group.rolehistory", "fields": {"person": 104851, "group": 375, "name": "chair", "email": "Kathleen.Moriarty@emc.com"}},
|
||||
{"pk": 707, "model": "group.rolehistory", "fields": {"person": 113031, "group": 376, "name": "auth", "email": "gunilla.berndtsson@ericsson.com"}},
|
||||
{"pk": 708, "model": "group.rolehistory", "fields": {"person": 113032, "group": 376, "name": "auth", "email": "catherine.quinquis@orange.com"}},
|
||||
{"pk": 709, "model": "group.rolehistory", "fields": {"person": 113672, "group": 376, "name": "auth", "email": "sarah.scott@itu.int"}},
|
||||
{"pk": 710, "model": "group.rolehistory", "fields": {"person": 111584, "group": 377, "name": "chair", "email": "kerlyn@ieee.org"}},
|
||||
{"pk": 711, "model": "group.rolehistory", "fields": {"person": 106462, "group": 378, "name": "editor", "email": "edward.beili@actelis.com"}},
|
||||
{"pk": 712, "model": "group.rolehistory", "fields": {"person": 107067, "group": 378, "name": "editor", "email": "moti.Morgenstern@ecitele.com"}},
|
||||
{"pk": 713, "model": "group.rolehistory", "fields": {"person": 105024, "group": 378, "name": "editor", "email": "scott.baillie@nec.com.au"}},
|
||||
{"pk": 714, "model": "group.rolehistory", "fields": {"person": 107258, "group": 378, "name": "editor", "email": "umberto.bonollo@nec.com.au"}},
|
||||
{"pk": 715, "model": "group.rolehistory", "fields": {"person": 106345, "group": 378, "name": "chair", "email": "Menachem.Dodge@ecitele.com"}},
|
||||
{"pk": 716, "model": "group.rolehistory", "fields": {"person": 106462, "group": 379, "name": "editor", "email": "edward.beili@actelis.com"}},
|
||||
{"pk": 717, "model": "group.rolehistory", "fields": {"person": 107067, "group": 379, "name": "editor", "email": "moti.Morgenstern@ecitele.com"}},
|
||||
{"pk": 718, "model": "group.rolehistory", "fields": {"person": 105024, "group": 379, "name": "editor", "email": "scott.baillie@nec.com.au"}},
|
||||
{"pk": 719, "model": "group.rolehistory", "fields": {"person": 107258, "group": 379, "name": "editor", "email": "umberto.bonollo@nec.com.au"}},
|
||||
{"pk": 720, "model": "group.rolehistory", "fields": {"person": 106199, "group": 380, "name": "secr", "email": "Wassim.Haddad@ericsson.com"}},
|
||||
{"pk": 721, "model": "group.rolehistory", "fields": {"person": 108833, "group": 380, "name": "secr", "email": "luigi@net.t-labs.tu-berlin.de"}},
|
||||
{"pk": 722, "model": "group.rolehistory", "fields": {"person": 108822, "group": 380, "name": "chair", "email": "terry.manderson@icann.org"}},
|
||||
{"pk": 723, "model": "group.rolehistory", "fields": {"person": 3862, "group": 380, "name": "chair", "email": "jmh@joelhalpern.com"}},
|
||||
{"pk": 724, "model": "group.rolehistory", "fields": {"person": 106199, "group": 381, "name": "secr", "email": "Wassim.Haddad@ericsson.com"}},
|
||||
{"pk": 725, "model": "group.rolehistory", "fields": {"person": 108833, "group": 381, "name": "secr", "email": "luigi@net.t-labs.tu-berlin.de"}},
|
||||
{"pk": 726, "model": "group.rolehistory", "fields": {"person": 108822, "group": 381, "name": "chair", "email": "terry.manderson@icann.org"}},
|
||||
{"pk": 727, "model": "group.rolehistory", "fields": {"person": 3862, "group": 381, "name": "chair", "email": "jmh@joelhalpern.com"}},
|
||||
{"pk": 728, "model": "group.rolehistory", "fields": {"person": 108833, "group": 381, "name": "secr", "email": "ggx@gigix.net"}},
|
||||
{"pk": 729, "model": "group.rolehistory", "fields": {"person": 2324, "group": 382, "name": "chair", "email": "sob@harvard.edu"}},
|
||||
{"pk": 730, "model": "group.rolehistory", "fields": {"person": 104807, "group": 382, "name": "chair", "email": "christopher.liljenstolpe@bigswitch.com"}},
|
||||
{"pk": 731, "model": "group.rolehistory", "fields": {"person": 101104, "group": 382, "name": "chair", "email": "melinda.shore@gmail.com"}},
|
||||
{"pk": 732, "model": "group.rolehistory", "fields": {"person": 107956, "group": 384, "name": "chair", "email": "shawn.emery@oracle.com"}},
|
||||
{"pk": 733, "model": "group.rolehistory", "fields": {"person": 111163, "group": 384, "name": "chair", "email": "josh.howlett@ja.net"}},
|
||||
{"pk": 734, "model": "group.rolehistory", "fields": {"person": 103048, "group": 384, "name": "chair", "email": "hartmans-ietf@mit.edu"}},
|
||||
{"pk": 735, "model": "group.rolehistory", "fields": {"person": 107956, "group": 385, "name": "chair", "email": "shawn.emery@oracle.com"}},
|
||||
{"pk": 736, "model": "group.rolehistory", "fields": {"person": 111163, "group": 385, "name": "chair", "email": "josh.howlett@ja.net"}},
|
||||
{"pk": 737, "model": "group.rolehistory", "fields": {"person": 103048, "group": 385, "name": "chair", "email": "hartmans-ietf@mit.edu"}},
|
||||
{"pk": 738, "model": "group.rolehistory", "fields": {"person": 111086, "group": 386, "name": "chair", "email": "ldunbar@huawei.com"}},
|
||||
{"pk": 739, "model": "group.rolehistory", "fields": {"person": 112438, "group": 386, "name": "chair", "email": "bensons@queuefull.net"}},
|
||||
{"pk": 740, "model": "group.rolehistory", "fields": {"person": 105328, "group": 388, "name": "chair", "email": "adurand@juniper.net"}},
|
||||
{"pk": 741, "model": "group.rolehistory", "fields": {"person": 15927, "group": 388, "name": "chair", "email": "dthaler@microsoft.com"}},
|
||||
{"pk": 742, "model": "group.rolehistory", "fields": {"person": 105328, "group": 389, "name": "chair", "email": "adurand@juniper.net"}},
|
||||
{"pk": 743, "model": "group.rolehistory", "fields": {"person": 15927, "group": 389, "name": "chair", "email": "dthaler@microsoft.com"}},
|
||||
{"pk": 744, "model": "group.rolehistory", "fields": {"person": 104985, "group": 389, "name": "chair", "email": "repenno@cisco.com"}},
|
||||
{"pk": 745, "model": "group.rolehistory", "fields": {"person": 106897, "group": 390, "name": "liaiman", "email": "stewe@stewe.org"}},
|
||||
{"pk": 746, "model": "group.rolehistory", "fields": {"person": 112510, "group": 391, "name": "liaiman", "email": "nan@metroethernetforum.org"}},
|
||||
{"pk": 747, "model": "group.rolehistory", "fields": {"person": 112511, "group": 391, "name": "liaiman", "email": "bill@metroethernetforum.net"}},
|
||||
{"pk": 748, "model": "group.rolehistory", "fields": {"person": 112512, "group": 391, "name": "liaiman", "email": "rraghu@ciena.com"}},
|
||||
{"pk": 749, "model": "group.rolehistory", "fields": {"person": 105907, "group": 392, "name": "chair", "email": "stpeter@stpeter.im"}},
|
||||
{"pk": 750, "model": "group.rolehistory", "fields": {"person": 17681, "group": 394, "name": "techadv", "email": "paul.congdon@hp.com"}},
|
||||
{"pk": 751, "model": "group.rolehistory", "fields": {"person": 109800, "group": 394, "name": "chair", "email": "jouni.nospam@gmail.com"}},
|
||||
{"pk": 752, "model": "group.rolehistory", "fields": {"person": 111434, "group": 394, "name": "chair", "email": "mauricio.sanchez@hp.com"}},
|
||||
{"pk": 753, "model": "group.rolehistory", "fields": {"person": 17681, "group": 395, "name": "techadv", "email": "paul.congdon@hp.com"}},
|
||||
{"pk": 754, "model": "group.rolehistory", "fields": {"person": 109800, "group": 395, "name": "chair", "email": "jouni.nospam@gmail.com"}},
|
||||
{"pk": 755, "model": "group.rolehistory", "fields": {"person": 111434, "group": 395, "name": "chair", "email": "mauricio.sanchez@hp.com"}},
|
||||
{"pk": 756, "model": "group.rolehistory", "fields": {"person": 17681, "group": 396, "name": "techadv", "email": "paul.congdon@hp.com"}},
|
||||
{"pk": 757, "model": "group.rolehistory", "fields": {"person": 109800, "group": 396, "name": "chair", "email": "jouni.nospam@gmail.com"}},
|
||||
{"pk": 758, "model": "group.rolehistory", "fields": {"person": 111434, "group": 396, "name": "chair", "email": "mauricio.sanchez@hp.com"}},
|
||||
{"pk": 759, "model": "group.rolehistory", "fields": {"person": 17681, "group": 397, "name": "techadv", "email": "paul.congdon@hp.com"}},
|
||||
{"pk": 760, "model": "group.rolehistory", "fields": {"person": 109800, "group": 397, "name": "chair", "email": "jouni.nospam@gmail.com"}},
|
||||
{"pk": 761, "model": "group.rolehistory", "fields": {"person": 111434, "group": 397, "name": "chair", "email": "mauricio.sanchez@hp.com"}},
|
||||
{"pk": 762, "model": "group.rolehistory", "fields": {"person": 17681, "group": 398, "name": "techadv", "email": "paul.congdon@hp.com"}},
|
||||
{"pk": 763, "model": "group.rolehistory", "fields": {"person": 109800, "group": 398, "name": "chair", "email": "jouni.nospam@gmail.com"}},
|
||||
{"pk": 764, "model": "group.rolehistory", "fields": {"person": 111434, "group": 398, "name": "chair", "email": "mauricio.sanchez@hp.com"}},
|
||||
{"pk": 765, "model": "group.rolehistory", "fields": {"person": 104196, "group": 399, "name": "chair", "email": "eburger@standardstrack.com"}},
|
||||
{"pk": 766, "model": "group.rolehistory", "fields": {"person": 773, "group": 399, "name": "chair", "email": "oran@cisco.com"}},
|
||||
{"pk": 767, "model": "group.rolehistory", "fields": {"person": 2324, "group": 400, "name": "chair", "email": "sob@harvard.edu"}},
|
||||
{"pk": 768, "model": "group.rolehistory", "fields": {"person": 107131, "group": 400, "name": "chair", "email": "martin.thomson@gmail.com"}},
|
||||
{"pk": 769, "model": "group.rolehistory", "fields": {"person": 108717, "group": 401, "name": "chair", "email": "simon.perreault@viagenie.ca"}},
|
||||
{"pk": 770, "model": "group.rolehistory", "fields": {"person": 21684, "group": 402, "name": "secr", "email": "barryleiba@computer.org"}},
|
||||
{"pk": 771, "model": "group.rolehistory", "fields": {"person": 101054, "group": 402, "name": "chair", "email": "cyrus@daboo.name"}},
|
||||
{"pk": 772, "model": "group.rolehistory", "fields": {"person": 110093, "group": 402, "name": "chair", "email": "aaron@serendipity.cx"}},
|
||||
{"pk": 773, "model": "group.rolehistory", "fields": {"person": 104331, "group": 403, "name": "chair", "email": "gorry@erg.abdn.ac.uk"}},
|
||||
{"pk": 774, "model": "group.rolehistory", "fields": {"person": 104267, "group": 403, "name": "chair", "email": "jmpolk@cisco.com"}},
|
||||
{"pk": 775, "model": "group.rolehistory", "fields": {"person": 110070, "group": 403, "name": "chair", "email": "rolf.winter@neclab.eu"}},
|
||||
{"pk": 776, "model": "group.rolehistory", "fields": {"person": 104331, "group": 404, "name": "chair", "email": "gorry@erg.abdn.ac.uk"}},
|
||||
{"pk": 777, "model": "group.rolehistory", "fields": {"person": 104267, "group": 404, "name": "chair", "email": "jmpolk@cisco.com"}},
|
||||
{"pk": 778, "model": "group.rolehistory", "fields": {"person": 19483, "group": 405, "name": "techadv", "email": "turners@ieca.com"}},
|
||||
{"pk": 779, "model": "group.rolehistory", "fields": {"person": 106405, "group": 405, "name": "chair", "email": "tobias.gondrom@gondrom.org"}},
|
||||
{"pk": 780, "model": "group.rolehistory", "fields": {"person": 102154, "group": 405, "name": "chair", "email": "alexey.melnikov@isode.com"}},
|
||||
{"pk": 781, "model": "group.rolehistory", "fields": {"person": 106745, "group": 405, "name": "chair", "email": "ynir@checkpoint.com"}},
|
||||
{"pk": 782, "model": "group.rolehistory", "fields": {"person": 23057, "group": 406, "name": "chair", "email": "dward@cisco.com"}},
|
||||
{"pk": 783, "model": "group.rolehistory", "fields": {"person": 103539, "group": 406, "name": "chair", "email": "gonzalo.camarillo@ericsson.com"}},
|
||||
{"pk": 784, "model": "group.rolehistory", "fields": {"person": 109727, "group": 407, "name": "chair", "email": "muraris@microsoft.com"}},
|
||||
{"pk": 785, "model": "group.rolehistory", "fields": {"person": 103877, "group": 407, "name": "chair", "email": "michawe@ifi.uio.no"}},
|
||||
{"pk": 786, "model": "group.rolehistory", "fields": {"person": 103877, "group": 408, "name": "chair", "email": "michawe@ifi.uio.no"}},
|
||||
{"pk": 787, "model": "group.rolehistory", "fields": {"person": 12620, "group": 411, "name": "chair", "email": "iab-chair@ietf.org"}},
|
||||
{"pk": 788, "model": "group.rolehistory", "fields": {"person": 102830, "group": 411, "name": "execdir", "email": "mary.ietf.barnes@gmail.com"}},
|
||||
{"pk": 789, "model": "group.rolehistory", "fields": {"person": 102830, "group": 411, "name": "delegate", "email": "mary.ietf.barnes@gmail.com"}},
|
||||
{"pk": 790, "model": "group.rolehistory", "fields": {"person": 101818, "group": 412, "name": "chair", "email": "matt@internet2.edu"}},
|
||||
{"pk": 791, "model": "group.rolehistory", "fields": {"person": 100603, "group": 412, "name": "chair", "email": "henk@uijterwaal.nl"}},
|
||||
{"pk": 792, "model": "group.rolehistory", "fields": {"person": 100603, "group": 413, "name": "chair", "email": "henk@uijterwaal.nl"}},
|
||||
{"pk": 793, "model": "group.rolehistory", "fields": {"person": 113573, "group": 413, "name": "chair", "email": "bill@wjcerveny.com"}},
|
||||
{"pk": 794, "model": "group.rolehistory", "fields": {"person": 101818, "group": 413, "name": "chair", "email": "matt@internet2.edu"}},
|
||||
{"pk": 795, "model": "group.rolehistory", "fields": {"person": 109354, "group": 413, "name": "chair", "email": "trammell@tik.ee.ethz.ch"}},
|
||||
{"pk": 796, "model": "group.rolehistory", "fields": {"person": 101742, "group": 414, "name": "chair", "email": "tphelan@sonusnet.com"}},
|
||||
{"pk": 797, "model": "group.rolehistory", "fields": {"person": 109321, "group": 414, "name": "chair", "email": "pasi.sarolahti@iki.fi"}},
|
||||
{"pk": 798, "model": "group.rolehistory", "fields": {"person": 8209, "group": 415, "name": "chair", "email": "ttalpey@microsoft.com"}},
|
||||
{"pk": 799, "model": "group.rolehistory", "fields": {"person": 103156, "group": 415, "name": "chair", "email": "black_david@emc.com"}},
|
||||
{"pk": 800, "model": "group.rolehistory", "fields": {"person": 103156, "group": 416, "name": "chair", "email": "david.black@emc.com"}},
|
||||
{"pk": 801, "model": "group.rolehistory", "fields": {"person": 8209, "group": 416, "name": "chair", "email": "ttalpey@microsoft.com"}},
|
||||
{"pk": 802, "model": "group.rolehistory", "fields": {"person": 103156, "group": 416, "name": "chair", "email": "black_david@emc.com"}},
|
||||
{"pk": 803, "model": "group.rolehistory", "fields": {"person": 104331, "group": 417, "name": "chair", "email": "gorry@erg.abdn.ac.uk"}},
|
||||
{"pk": 804, "model": "group.rolehistory", "fields": {"person": 104267, "group": 417, "name": "chair", "email": "jmpolk@cisco.com"}},
|
||||
{"pk": 805, "model": "group.rolehistory", "fields": {"person": 103156, "group": 417, "name": "chair", "email": "black_david@emc.com"}},
|
||||
{"pk": 806, "model": "group.rolehistory", "fields": {"person": 104331, "group": 418, "name": "chair", "email": "gorry@erg.abdn.ac.uk"}},
|
||||
{"pk": 807, "model": "group.rolehistory", "fields": {"person": 103156, "group": 418, "name": "chair", "email": "david.black@emc.com"}},
|
||||
{"pk": 808, "model": "group.rolehistory", "fields": {"person": 104267, "group": 418, "name": "chair", "email": "jmpolk@cisco.com"}},
|
||||
{"pk": 809, "model": "group.rolehistory", "fields": {"person": 103156, "group": 418, "name": "chair", "email": "black_david@emc.com"}},
|
||||
{"pk": 810, "model": "group.rolehistory", "fields": {"person": 10083, "group": 419, "name": "chair", "email": "paul.hoffman@vpnc.org"}},
|
||||
{"pk": 811, "model": "group.rolehistory", "fields": {"person": 104278, "group": 419, "name": "chair", "email": "yaronf.ietf@gmail.com"}},
|
||||
{"pk": 812, "model": "group.rolehistory", "fields": {"person": 17681, "group": 420, "name": "techadv", "email": "paul.congdon@hp.com"}},
|
||||
{"pk": 813, "model": "group.rolehistory", "fields": {"person": 109800, "group": 420, "name": "chair", "email": "jouni.nospam@gmail.com"}},
|
||||
{"pk": 814, "model": "group.rolehistory", "fields": {"person": 111434, "group": 420, "name": "chair", "email": "mauricio.sanchez@hp.com"}},
|
||||
{"pk": 815, "model": "group.rolehistory", "fields": {"person": 102391, "group": 421, "name": "chair", "email": "d3e3e3@gmail.com"}},
|
||||
{"pk": 816, "model": "group.rolehistory", "fields": {"person": 8243, "group": 421, "name": "chair", "email": "nordmark@acm.org"}},
|
||||
{"pk": 817, "model": "group.rolehistory", "fields": {"person": 10083, "group": 422, "name": "chair", "email": "paul.hoffman@vpnc.org"}},
|
||||
{"pk": 818, "model": "group.rolehistory", "fields": {"person": 104278, "group": 422, "name": "chair", "email": "yaronf.ietf@gmail.com"}},
|
||||
{"pk": 819, "model": "group.rolehistory", "fields": {"person": 10083, "group": 423, "name": "chair", "email": "paul.hoffman@vpnc.org"}},
|
||||
{"pk": 820, "model": "group.rolehistory", "fields": {"person": 104278, "group": 423, "name": "chair", "email": "yaronf.ietf@gmail.com"}},
|
||||
{"pk": 821, "model": "group.rolehistory", "fields": {"person": 105519, "group": 424, "name": "techadv", "email": "martin.stiemerling@neclab.eu"}},
|
||||
{"pk": 822, "model": "group.rolehistory", "fields": {"person": 19869, "group": 424, "name": "chair", "email": "Marc.Blanchet@viagenie.ca"}},
|
||||
{"pk": 823, "model": "group.rolehistory", "fields": {"person": 2329, "group": 424, "name": "techadv", "email": "stbryant@cisco.com"}},
|
||||
{"pk": 824, "model": "group.rolehistory", "fields": {"person": 2853, "group": 424, "name": "techadv", "email": "fred@cisco.com"}},
|
||||
{"pk": 825, "model": "group.rolehistory", "fields": {"person": 112160, "group": 424, "name": "chair", "email": "wesley.george@twcable.com"}},
|
||||
{"pk": 826, "model": "group.rolehistory", "fields": {"person": 112837, "group": 425, "name": "auth", "email": "christophe.alter@orange-ftgroup.com"}},
|
||||
{"pk": 827, "model": "group.rolehistory", "fields": {"person": 109476, "group": 425, "name": "liaiman", "email": "david.sinicrope@ericsson.com"}},
|
||||
{"pk": 828, "model": "group.rolehistory", "fields": {"person": 10083, "group": 426, "name": "chair", "email": "paul.hoffman@vpnc.org"}},
|
||||
{"pk": 829, "model": "group.rolehistory", "fields": {"person": 104278, "group": 426, "name": "chair", "email": "yaronf.ietf@gmail.com"}},
|
||||
{"pk": 830, "model": "group.rolehistory", "fields": {"person": 106284, "group": 427, "name": "auth", "email": "dstanley@arubanetworks.com"}},
|
||||
{"pk": 831, "model": "group.rolehistory", "fields": {"person": 110070, "group": 428, "name": "chair", "email": "rolf.winter@neclab.eu"}},
|
||||
{"pk": 832, "model": "group.rolehistory", "fields": {"person": 109727, "group": 428, "name": "chair", "email": "muraris@microsoft.com"}},
|
||||
{"pk": 833, "model": "group.rolehistory", "fields": {"person": 106224, "group": 429, "name": "auth", "email": "mmorrow@cisco.com"}},
|
||||
{"pk": 834, "model": "group.rolehistory", "fields": {"person": 10083, "group": 434, "name": "chair", "email": "paul.hoffman@vpnc.org"}},
|
||||
{"pk": 835, "model": "group.rolehistory", "fields": {"person": 104278, "group": 434, "name": "chair", "email": "yaronf.ietf@gmail.com"}},
|
||||
{"pk": 836, "model": "group.rolehistory", "fields": {"person": 10083, "group": 435, "name": "chair", "email": "paul.hoffman@vpnc.org"}},
|
||||
{"pk": 837, "model": "group.rolehistory", "fields": {"person": 104278, "group": 435, "name": "chair", "email": "yaronf.ietf@gmail.com"}},
|
||||
{"pk": 838, "model": "group.rolehistory", "fields": {"person": 105519, "group": 436, "name": "techadv", "email": "martin.stiemerling@neclab.eu"}},
|
||||
{"pk": 839, "model": "group.rolehistory", "fields": {"person": 19869, "group": 436, "name": "chair", "email": "Marc.Blanchet@viagenie.ca"}},
|
||||
{"pk": 840, "model": "group.rolehistory", "fields": {"person": 2329, "group": 436, "name": "techadv", "email": "stbryant@cisco.com"}},
|
||||
{"pk": 841, "model": "group.rolehistory", "fields": {"person": 2853, "group": 436, "name": "techadv", "email": "fred@cisco.com"}},
|
||||
{"pk": 842, "model": "group.rolehistory", "fields": {"person": 112160, "group": 436, "name": "chair", "email": "wesley.george@twcable.com"}},
|
||||
{"pk": 843, "model": "group.rolehistory", "fields": {"person": 105519, "group": 437, "name": "techadv", "email": "martin.stiemerling@neclab.eu"}},
|
||||
{"pk": 844, "model": "group.rolehistory", "fields": {"person": 19869, "group": 437, "name": "chair", "email": "Marc.Blanchet@viagenie.ca"}},
|
||||
{"pk": 845, "model": "group.rolehistory", "fields": {"person": 2329, "group": 437, "name": "techadv", "email": "stbryant@cisco.com"}},
|
||||
{"pk": 846, "model": "group.rolehistory", "fields": {"person": 2853, "group": 437, "name": "techadv", "email": "fred@cisco.com"}},
|
||||
{"pk": 847, "model": "group.rolehistory", "fields": {"person": 112160, "group": 437, "name": "chair", "email": "wesley.george@twcable.com"}},
|
||||
{"pk": 848, "model": "group.rolehistory", "fields": {"person": 105519, "group": 438, "name": "techadv", "email": "martin.stiemerling@neclab.eu"}},
|
||||
{"pk": 849, "model": "group.rolehistory", "fields": {"person": 19869, "group": 438, "name": "chair", "email": "Marc.Blanchet@viagenie.ca"}},
|
||||
{"pk": 850, "model": "group.rolehistory", "fields": {"person": 2329, "group": 438, "name": "techadv", "email": "stbryant@cisco.com"}},
|
||||
{"pk": 851, "model": "group.rolehistory", "fields": {"person": 2853, "group": 438, "name": "techadv", "email": "fred@cisco.com"}},
|
||||
{"pk": 852, "model": "group.rolehistory", "fields": {"person": 112160, "group": 438, "name": "chair", "email": "wesley.george@twcable.com"}},
|
||||
{"pk": 853, "model": "group.rolehistory", "fields": {"person": 15448, "group": 439, "name": "chair", "email": "shanna@juniper.net"}},
|
||||
{"pk": 854, "model": "group.rolehistory", "fields": {"person": 110367, "group": 439, "name": "chair", "email": "tim.moses@entrust.com"}},
|
||||
{"pk": 855, "model": "group.rolehistory", "fields": {"person": 110367, "group": 440, "name": "chair", "email": "tim.moses@entrust.com"}},
|
||||
{"pk": 856, "model": "group.rolehistory", "fields": {"person": 112837, "group": 441, "name": "auth", "email": "christophe.alter@orange-ftgroup.com"}},
|
||||
{"pk": 857, "model": "group.rolehistory", "fields": {"person": 109476, "group": 441, "name": "liaiman", "email": "david.sinicrope@ericsson.com"}},
|
||||
{"pk": 858, "model": "group.rolehistory", "fields": {"person": 114696, "group": 441, "name": "auth", "email": "KEN.KO@adtran.com"}},
|
||||
{"pk": 859, "model": "group.rolehistory", "fields": {"person": 114099, "group": 442, "name": "chair", "email": "andrewmcgr@gmail.com"}},
|
||||
{"pk": 860, "model": "group.rolehistory", "fields": {"person": 11843, "group": 442, "name": "chair", "email": "cabo@tzi.org"}},
|
||||
{"pk": 861, "model": "group.rolehistory", "fields": {"person": 114099, "group": 443, "name": "chair", "email": "andrewmcgr@gmail.com"}},
|
||||
{"pk": 862, "model": "group.rolehistory", "fields": {"person": 11843, "group": 443, "name": "chair", "email": "cabo@tzi.org"}},
|
||||
{"pk": 863, "model": "group.rolehistory", "fields": {"person": 114099, "group": 443, "name": "chair", "email": "andrewmcgr@google.com"}},
|
||||
{"pk": 864, "model": "group.rolehistory", "fields": {"person": 10083, "group": 447, "name": "chair", "email": "paul.hoffman@vpnc.org"}},
|
||||
{"pk": 865, "model": "group.rolehistory", "fields": {"person": 104278, "group": 447, "name": "chair", "email": "yaronf.ietf@gmail.com"}},
|
||||
{"pk": 866, "model": "group.rolehistory", "fields": {"person": 105097, "group": 448, "name": "chair", "email": "keith.drage@alcatel-lucent.com"}},
|
||||
{"pk": 867, "model": "group.rolehistory", "fields": {"person": 104294, "group": 448, "name": "chair", "email": "magnus.westerlund@ericsson.com"}},
|
||||
{"pk": 868, "model": "group.rolehistory", "fields": {"person": 107031, "group": 449, "name": "chair", "email": "fandreas@cisco.com"}},
|
||||
{"pk": 869, "model": "group.rolehistory", "fields": {"person": 102848, "group": 449, "name": "chair", "email": "miguel.a.garcia@ericsson.com"}},
|
||||
{"pk": 870, "model": "group.rolehistory", "fields": {"person": 106897, "group": 450, "name": "techadv", "email": "stewe@stewe.org"}},
|
||||
{"pk": 871, "model": "group.rolehistory", "fields": {"person": 2250, "group": 450, "name": "chair", "email": "jdrosen@jdrosen.net"}},
|
||||
{"pk": 872, "model": "group.rolehistory", "fields": {"person": 105791, "group": 450, "name": "chair", "email": "fluffy@iii.ca"}},
|
||||
{"pk": 873, "model": "group.rolehistory", "fields": {"person": 112724, "group": 450, "name": "chair", "email": "tterriberry@mozilla.com"}},
|
||||
{"pk": 874, "model": "group.rolehistory", "fields": {"person": 103708, "group": 451, "name": "chair", "email": "dmm@1-4-5.net"}},
|
||||
{"pk": 875, "model": "group.rolehistory", "fields": {"person": 103708, "group": 452, "name": "chair", "email": "dmm@1-4-5.net"}},
|
||||
{"pk": 876, "model": "group.rolehistory", "fields": {"person": 110367, "group": 453, "name": "chair", "email": "tim.moses@entrust.com"}},
|
||||
{"pk": 877, "model": "group.rolehistory", "fields": {"person": 112547, "group": 456, "name": "chair", "email": "chris@lookout.net"}},
|
||||
{"pk": 878, "model": "group.rolehistory", "fields": {"person": 105907, "group": 456, "name": "chair", "email": "stpeter@stpeter.im"}},
|
||||
{"pk": 879, "model": "group.rolehistory", "fields": {"person": 107956, "group": 457, "name": "chair", "email": "shawn.emery@oracle.com"}},
|
||||
{"pk": 880, "model": "group.rolehistory", "fields": {"person": 111163, "group": 457, "name": "chair", "email": "josh.howlett@ja.net"}},
|
||||
{"pk": 881, "model": "group.rolehistory", "fields": {"person": 103048, "group": 457, "name": "chair", "email": "hartmans-ietf@mit.edu"}},
|
||||
{"pk": 882, "model": "group.rolehistory", "fields": {"person": 104569, "group": 457, "name": "secr", "email": "simon@josefsson.org"}},
|
||||
{"pk": 883, "model": "group.rolehistory", "fields": {"person": 107956, "group": 459, "name": "chair", "email": "shawn.emery@oracle.com"}},
|
||||
{"pk": 884, "model": "group.rolehistory", "fields": {"person": 111163, "group": 459, "name": "chair", "email": "josh.howlett@ja.net"}},
|
||||
{"pk": 885, "model": "group.rolehistory", "fields": {"person": 103048, "group": 459, "name": "chair", "email": "hartmans-ietf@mit.edu"}},
|
||||
{"pk": 886, "model": "group.rolehistory", "fields": {"person": 104569, "group": 459, "name": "secr", "email": "simon@josefsson.org"}},
|
||||
{"pk": 887, "model": "group.rolehistory", "fields": {"person": 107956, "group": 460, "name": "chair", "email": "shawn.emery@oracle.com"}},
|
||||
{"pk": 888, "model": "group.rolehistory", "fields": {"person": 111163, "group": 460, "name": "chair", "email": "josh.howlett@ja.net"}},
|
||||
{"pk": 889, "model": "group.rolehistory", "fields": {"person": 103048, "group": 460, "name": "chair", "email": "hartmans-ietf@mit.edu"}},
|
||||
{"pk": 890, "model": "group.rolehistory", "fields": {"person": 104569, "group": 460, "name": "secr", "email": "simon@josefsson.org"}},
|
||||
{"pk": 891, "model": "group.rolehistory", "fields": {"person": 106742, "group": 463, "name": "chair", "email": "akatlas@juniper.net"}},
|
||||
{"pk": 892, "model": "group.rolehistory", "fields": {"person": 104147, "group": 463, "name": "chair", "email": "edc@google.com"}},
|
||||
{"pk": 893, "model": "group.rolehistory", "fields": {"person": 106742, "group": 464, "name": "chair", "email": "akatlas@juniper.net"}},
|
||||
{"pk": 894, "model": "group.rolehistory", "fields": {"person": 104147, "group": 464, "name": "chair", "email": "edc@google.com"}},
|
||||
{"pk": 895, "model": "group.rolehistory", "fields": {"person": 5376, "group": 465, "name": "ad", "email": "housley@vigilsec.com"}},
|
||||
{"pk": 896, "model": "group.rolehistory", "fields": {"person": 2348, "group": 466, "name": "ad", "email": "rdroms.ietf@gmail.com"}},
|
||||
{"pk": 897, "model": "group.rolehistory", "fields": {"person": 100664, "group": 466, "name": "ad", "email": "brian@innovationslab.net"}},
|
||||
{"pk": 898, "model": "group.rolehistory", "fields": {"person": 101568, "group": 467, "name": "ad", "email": "rbonica@juniper.net"}},
|
||||
{"pk": 899, "model": "group.rolehistory", "fields": {"person": 105682, "group": 467, "name": "ad", "email": "bclaise@cisco.com"}},
|
||||
{"pk": 900, "model": "group.rolehistory", "fields": {"person": 103539, "group": 468, "name": "ad", "email": "gonzalo.camarillo@ericsson.com"}},
|
||||
{"pk": 901, "model": "group.rolehistory", "fields": {"person": 103961, "group": 468, "name": "ad", "email": "rjsparks@nostrum.com"}},
|
||||
{"pk": 902, "model": "group.rolehistory", "fields": {"person": 102154, "group": 469, "name": "chair", "email": "alexey.melnikov@isode.com"}},
|
||||
{"pk": 903, "model": "group.rolehistory", "fields": {"person": 4397, "group": 469, "name": "chair", "email": "ned.freed@mrochek.com"}},
|
||||
{"pk": 904, "model": "group.rolehistory", "fields": {"person": 110367, "group": 470, "name": "chair", "email": "tim.moses@entrust.com"}},
|
||||
{"pk": 905, "model": "group.rolehistory", "fields": {"person": 106745, "group": 472, "name": "chair", "email": "ynir@checkpoint.com"}},
|
||||
{"pk": 906, "model": "group.rolehistory", "fields": {"person": 8698, "group": 472, "name": "chair", "email": "derek@ihtfp.com"}},
|
||||
{"pk": 907, "model": "group.rolehistory", "fields": {"person": 2723, "group": 477, "name": "chair", "email": "rcallon@juniper.net"}},
|
||||
{"pk": 908, "model": "group.rolehistory", "fields": {"person": 107256, "group": 478, "name": "chair", "email": "marshall.eubanks@gmail.com"}},
|
||||
{"pk": 909, "model": "group.rolehistory", "fields": {"person": 11928, "group": 478, "name": "chair", "email": "johnl@taugh.com"}},
|
||||
{"pk": 910, "model": "group.rolehistory", "fields": {"person": 10083, "group": 479, "name": "chair", "email": "paul.hoffman@vpnc.org"}},
|
||||
{"pk": 911, "model": "group.rolehistory", "fields": {"person": 108722, "group": 480, "name": "chair", "email": "spromano@unina.it"}},
|
||||
{"pk": 912, "model": "group.rolehistory", "fields": {"person": 106987, "group": 480, "name": "chair", "email": "br@brianrosen.net"}},
|
||||
{"pk": 913, "model": "group.rolehistory", "fields": {"person": 110721, "group": 481, "name": "chair", "email": "ted.ietf@gmail.com"}},
|
||||
{"pk": 914, "model": "group.rolehistory", "fields": {"person": 113697, "group": 481, "name": "chair", "email": "plale@cs.indiana.edu"}},
|
||||
{"pk": 915, "model": "group.rolehistory", "fields": {"person": 105992, "group": 482, "name": "chair", "email": "sarikaya@ieee.org"}},
|
||||
{"pk": 916, "model": "group.rolehistory", "fields": {"person": 109878, "group": 482, "name": "chair", "email": "dirk.von-hugo@telekom.de"}},
|
||||
{"pk": 917, "model": "group.rolehistory", "fields": {"person": 107190, "group": 484, "name": "chair", "email": "spencer@wonderhamster.org"}},
|
||||
{"pk": 918, "model": "group.rolehistory", "fields": {"person": 106812, "group": 484, "name": "chair", "email": "vkg@bell-labs.com"}},
|
||||
{"pk": 919, "model": "group.rolehistory", "fields": {"person": 23057, "group": 485, "name": "chair", "email": "dward@cisco.com"}},
|
||||
{"pk": 920, "model": "group.rolehistory", "fields": {"person": 2723, "group": 485, "name": "chair", "email": "rcallon@juniper.net"}},
|
||||
{"pk": 921, "model": "group.rolehistory", "fields": {"person": 111584, "group": 486, "name": "chair", "email": "kerlyn@ieee.org"}},
|
||||
{"pk": 922, "model": "group.rolehistory", "fields": {"person": 106461, "group": 486, "name": "chair", "email": "tjc@ecs.soton.ac.uk"}},
|
||||
{"pk": 923, "model": "group.rolehistory", "fields": {"person": 106315, "group": 487, "name": "chair", "email": "gjshep@gmail.com"}},
|
||||
{"pk": 924, "model": "group.rolehistory", "fields": {"person": 107256, "group": 487, "name": "chair", "email": "marshall.eubanks@gmail.com"}},
|
||||
{"pk": 925, "model": "group.rolehistory", "fields": {"person": 113431, "group": 488, "name": "chair", "email": "hlflanagan@gmail.com"}},
|
||||
{"pk": 926, "model": "group.rolehistory", "fields": {"person": 10083, "group": 489, "name": "chair", "email": "paul.hoffman@vpnc.org"}},
|
||||
{"pk": 927, "model": "group.rolehistory", "fields": {"person": 10064, "group": 490, "name": "chair", "email": "lberger@labn.net"}},
|
||||
{"pk": 928, "model": "group.rolehistory", "fields": {"person": 112160, "group": 490, "name": "chair", "email": "wesley.george@twcable.com"}},
|
||||
{"pk": 929, "model": "group.rolehistory", "fields": {"person": 105907, "group": 491, "name": "chair", "email": "stpeter@stpeter.im"}},
|
||||
{"pk": 930, "model": "group.rolehistory", "fields": {"person": 102830, "group": 491, "name": "chair", "email": "mary.ietf.barnes@gmail.com"}},
|
||||
{"pk": 931, "model": "group.rolehistory", "fields": {"person": 10083, "group": 492, "name": "chair", "email": "paul.hoffman@vpnc.org"}},
|
||||
{"pk": 932, "model": "group.rolehistory", "fields": {"person": 108049, "group": 492, "name": "chair", "email": "rbarnes@bbn.com"}},
|
||||
{"pk": 933, "model": "group.rolehistory", "fields": {"person": 103539, "group": 493, "name": "ad", "email": "gonzalo.camarillo@ericsson.com"}},
|
||||
{"pk": 934, "model": "group.rolehistory", "fields": {"person": 103961, "group": 493, "name": "ad", "email": "rjsparks@nostrum.com"}},
|
||||
{"pk": 935, "model": "group.rolehistory", "fields": {"person": 108049, "group": 493, "name": "pre-ad", "email": "rbarnes@bbn.com"}},
|
||||
{"pk": 936, "model": "group.rolehistory", "fields": {"person": 103539, "group": 494, "name": "ad", "email": "gonzalo.camarillo@ericsson.com"}},
|
||||
{"pk": 937, "model": "group.rolehistory", "fields": {"person": 103961, "group": 494, "name": "ad", "email": "rjsparks@nostrum.com"}},
|
||||
{"pk": 938, "model": "group.rolehistory", "fields": {"person": 108049, "group": 494, "name": "pre-ad", "email": "rbarnes@bbn.com"}},
|
||||
{"pk": 939, "model": "group.rolehistory", "fields": {"person": 108049, "group": 494, "name": "pre-ad", "email": "rlb@ipv.sx"}},
|
||||
{"pk": 940, "model": "group.rolehistory", "fields": {"person": 103539, "group": 495, "name": "ad", "email": "gonzalo.camarillo@ericsson.com"}},
|
||||
{"pk": 941, "model": "group.rolehistory", "fields": {"person": 103961, "group": 495, "name": "ad", "email": "rjsparks@nostrum.com"}},
|
||||
{"pk": 942, "model": "group.rolehistory", "fields": {"person": 108049, "group": 495, "name": "pre-ad", "email": "rbarnes@bbn.com"}},
|
||||
{"pk": 943, "model": "group.rolehistory", "fields": {"person": 108049, "group": 495, "name": "pre-ad", "email": "rlb@ipv.sx"}},
|
||||
{"pk": 944, "model": "group.rolehistory", "fields": {"person": 103539, "group": 496, "name": "ad", "email": "gonzalo.camarillo@ericsson.com"}},
|
||||
{"pk": 945, "model": "group.rolehistory", "fields": {"person": 103961, "group": 496, "name": "ad", "email": "rjsparks@nostrum.com"}},
|
||||
{"pk": 946, "model": "group.rolehistory", "fields": {"person": 108049, "group": 496, "name": "pre-ad", "email": "rbarnes@bbn.com"}},
|
||||
{"pk": 947, "model": "group.rolehistory", "fields": {"person": 108049, "group": 496, "name": "pre-ad", "email": "rlb@ipv.sx"}},
|
||||
{"pk": 948, "model": "group.rolehistory", "fields": {"person": 103961, "group": 497, "name": "delegate", "email": "rjsparks@nostrum.com"}},
|
||||
{"pk": 949, "model": "group.rolehistory", "fields": {"person": 22971, "group": 497, "name": "techadv", "email": "lisa.dusseault@gmail.com"}},
|
||||
{"pk": 950, "model": "group.rolehistory", "fields": {"person": 110077, "group": 497, "name": "chair", "email": "acooper@cdt.org"}},
|
||||
{"pk": 951, "model": "group.rolehistory", "fields": {"person": 108049, "group": 497, "name": "chair", "email": "rbarnes@bbn.com"}},
|
||||
{"pk": 952, "model": "group.rolehistory", "fields": {"person": 103961, "group": 498, "name": "delegate", "email": "rjsparks@nostrum.com"}},
|
||||
{"pk": 953, "model": "group.rolehistory", "fields": {"person": 22971, "group": 498, "name": "techadv", "email": "lisa.dusseault@gmail.com"}},
|
||||
{"pk": 954, "model": "group.rolehistory", "fields": {"person": 110077, "group": 498, "name": "chair", "email": "acooper@cdt.org"}},
|
||||
{"pk": 955, "model": "group.rolehistory", "fields": {"person": 106289, "group": 499, "name": "chair", "email": "alan.b.johnston@gmail.com"}},
|
||||
{"pk": 956, "model": "group.rolehistory", "fields": {"person": 108049, "group": 499, "name": "chair", "email": "rbarnes@bbn.com"}},
|
||||
{"pk": 957, "model": "group.rolehistory", "fields": {"person": 106289, "group": 500, "name": "chair", "email": "alan.b.johnston@gmail.com"}},
|
||||
{"pk": 958, "model": "group.rolehistory", "fields": {"person": 10083, "group": 501, "name": "chair", "email": "paul.hoffman@vpnc.org"}},
|
||||
{"pk": 959, "model": "group.rolehistory", "fields": {"person": 108049, "group": 501, "name": "chair", "email": "rbarnes@bbn.com"}},
|
||||
{"pk": 960, "model": "group.rolehistory", "fields": {"person": 10083, "group": 502, "name": "chair", "email": "paul.hoffman@vpnc.org"}},
|
||||
{"pk": 961, "model": "group.rolehistory", "fields": {"person": 108049, "group": 503, "name": "liaiman", "email": "rbarnes@bbn.com"}}
|
||||
]
|
963
ietf/group/fixtures/grouprolehistory.json
Normal file
963
ietf/group/fixtures/grouprolehistory.json
Normal file
|
@ -0,0 +1,963 @@
|
|||
[
|
||||
{"pk": 1, "model": "group.rolehistory", "fields": {"person": 17188, "group": 1, "name": "ad", "email": "hardie@qualcomm.com"}},
|
||||
{"pk": 2, "model": "group.rolehistory", "fields": {"person": 22873, "group": 1, "name": "ad", "email": "sah@428cobrajet.net"}},
|
||||
{"pk": 3, "model": "group.rolehistory", "fields": {"person": 5778, "group": 2, "name": "ad", "email": "harald@alvestrand.no"}},
|
||||
{"pk": 4, "model": "group.rolehistory", "fields": {"person": 7262, "group": 3, "name": "ad", "email": "narten@us.ibm.com"}},
|
||||
{"pk": 5, "model": "group.rolehistory", "fields": {"person": 100887, "group": 3, "name": "ad", "email": "mrw@lilacglade.org"}},
|
||||
{"pk": 6, "model": "group.rolehistory", "fields": {"person": 6842, "group": 4, "name": "ad", "email": "bertietf@bwijnen.net"}},
|
||||
{"pk": 7, "model": "group.rolehistory", "fields": {"person": 19587, "group": 4, "name": "ad", "email": "david.kessens@nsn.com"}},
|
||||
{"pk": 8, "model": "group.rolehistory", "fields": {"person": 13108, "group": 5, "name": "ad", "email": "fenner@fenron.com"}},
|
||||
{"pk": 9, "model": "group.rolehistory", "fields": {"person": 103264, "group": 5, "name": "ad", "email": "azinin@cisco.com"}},
|
||||
{"pk": 10, "model": "group.rolehistory", "fields": {"person": 5376, "group": 6, "name": "ad", "email": "housley@vigilsec.com"}},
|
||||
{"pk": 11, "model": "group.rolehistory", "fields": {"person": 103048, "group": 6, "name": "ad", "email": "hartmans-ietf@mit.edu"}},
|
||||
{"pk": 12, "model": "group.rolehistory", "fields": {"person": 2515, "group": 7, "name": "ad", "email": "mankin@psg.com"}},
|
||||
{"pk": 13, "model": "group.rolehistory", "fields": {"person": 104557, "group": 7, "name": "ad", "email": "jon.peterson@neustar.biz"}},
|
||||
{"pk": 14, "model": "group.rolehistory", "fields": {"person": 1958, "group": 8, "name": "ad", "email": "brc@zurich.ibm.com"}},
|
||||
{"pk": 15, "model": "group.rolehistory", "fields": {"person": 22948, "group": 9, "name": "ad", "email": "mark@townsley.net"}},
|
||||
{"pk": 16, "model": "group.rolehistory", "fields": {"person": 100887, "group": 9, "name": "ad", "email": "mrw@lilacglade.org"}},
|
||||
{"pk": 17, "model": "group.rolehistory", "fields": {"person": 107420, "group": 10, "name": "ad", "email": "noreply@ietf.org"}},
|
||||
{"pk": 18, "model": "group.rolehistory", "fields": {"person": 17188, "group": 11, "name": "ad", "email": "hardie@qualcomm.com"}},
|
||||
{"pk": 19, "model": "group.rolehistory", "fields": {"person": 22971, "group": 11, "name": "ad", "email": "lisa.dusseault@gmail.com"}},
|
||||
{"pk": 20, "model": "group.rolehistory", "fields": {"person": 21072, "group": 12, "name": "ad", "email": "jari.arkko@piuha.net"}},
|
||||
{"pk": 21, "model": "group.rolehistory", "fields": {"person": 22948, "group": 12, "name": "ad", "email": "mark@townsley.net"}},
|
||||
{"pk": 22, "model": "group.rolehistory", "fields": {"person": 6699, "group": 13, "name": "ad", "email": "dromasca@avaya.com"}},
|
||||
{"pk": 23, "model": "group.rolehistory", "fields": {"person": 19587, "group": 13, "name": "ad", "email": "david.kessens@nsn.com"}},
|
||||
{"pk": 24, "model": "group.rolehistory", "fields": {"person": 2723, "group": 14, "name": "ad", "email": "rcallon@juniper.net"}},
|
||||
{"pk": 25, "model": "group.rolehistory", "fields": {"person": 13108, "group": 14, "name": "ad", "email": "fenner@fenron.com"}},
|
||||
{"pk": 26, "model": "group.rolehistory", "fields": {"person": 104294, "group": 15, "name": "ad", "email": "magnus.westerlund@ericsson.com"}},
|
||||
{"pk": 27, "model": "group.rolehistory", "fields": {"person": 112773, "group": 15, "name": "ad", "email": "lars@netapp.com"}},
|
||||
{"pk": 28, "model": "group.rolehistory", "fields": {"person": 104557, "group": 16, "name": "ad", "email": "jon.peterson@neustar.biz"}},
|
||||
{"pk": 29, "model": "group.rolehistory", "fields": {"person": 105791, "group": 16, "name": "ad", "email": "fluffy@cisco.com"}},
|
||||
{"pk": 30, "model": "group.rolehistory", "fields": {"person": 9909, "group": 17, "name": "ad", "email": "chris.newman@oracle.com"}},
|
||||
{"pk": 31, "model": "group.rolehistory", "fields": {"person": 22971, "group": 17, "name": "ad", "email": "lisa.dusseault@gmail.com"}},
|
||||
{"pk": 32, "model": "group.rolehistory", "fields": {"person": 5376, "group": 18, "name": "ad", "email": "housley@vigilsec.com"}},
|
||||
{"pk": 33, "model": "group.rolehistory", "fields": {"person": 6699, "group": 19, "name": "ad", "email": "dromasca@avaya.com"}},
|
||||
{"pk": 34, "model": "group.rolehistory", "fields": {"person": 101568, "group": 19, "name": "ad", "email": "rbonica@juniper.net"}},
|
||||
{"pk": 35, "model": "group.rolehistory", "fields": {"person": 2723, "group": 20, "name": "ad", "email": "rcallon@juniper.net"}},
|
||||
{"pk": 36, "model": "group.rolehistory", "fields": {"person": 23057, "group": 20, "name": "ad", "email": "dward@juniper.net"}},
|
||||
{"pk": 37, "model": "group.rolehistory", "fields": {"person": 19790, "group": 21, "name": "ad", "email": "tim.polk@nist.gov"}},
|
||||
{"pk": 38, "model": "group.rolehistory", "fields": {"person": 103048, "group": 21, "name": "ad", "email": "hartmans-ietf@mit.edu"}},
|
||||
{"pk": 39, "model": "group.rolehistory", "fields": {"person": 19790, "group": 22, "name": "ad", "email": "tim.polk@nist.gov"}},
|
||||
{"pk": 40, "model": "group.rolehistory", "fields": {"person": 106164, "group": 22, "name": "ad", "email": "pe@iki.fi"}},
|
||||
{"pk": 41, "model": "group.rolehistory", "fields": {"person": 22971, "group": 23, "name": "ad", "email": "lisa.dusseault@gmail.com"}},
|
||||
{"pk": 42, "model": "group.rolehistory", "fields": {"person": 102154, "group": 23, "name": "ad", "email": "alexey.melnikov@isode.com"}},
|
||||
{"pk": 43, "model": "group.rolehistory", "fields": {"person": 21072, "group": 24, "name": "ad", "email": "jari.arkko@piuha.net"}},
|
||||
{"pk": 44, "model": "group.rolehistory", "fields": {"person": 2348, "group": 24, "name": "ad", "email": "rdroms.ietf@gmail.com"}},
|
||||
{"pk": 45, "model": "group.rolehistory", "fields": {"person": 105791, "group": 25, "name": "ad", "email": "fluffy@cisco.com"}},
|
||||
{"pk": 46, "model": "group.rolehistory", "fields": {"person": 103961, "group": 25, "name": "ad", "email": "rjsparks@nostrum.com"}},
|
||||
{"pk": 47, "model": "group.rolehistory", "fields": {"person": 2723, "group": 26, "name": "ad", "email": "rcallon@juniper.net"}},
|
||||
{"pk": 48, "model": "group.rolehistory", "fields": {"person": 104198, "group": 26, "name": "ad", "email": "adrian@olddog.co.uk"}},
|
||||
{"pk": 49, "model": "group.rolehistory", "fields": {"person": 102154, "group": 27, "name": "ad", "email": "alexey.melnikov@isode.com"}},
|
||||
{"pk": 50, "model": "group.rolehistory", "fields": {"person": 105907, "group": 27, "name": "ad", "email": "stpeter@stpeter.im"}},
|
||||
{"pk": 51, "model": "group.rolehistory", "fields": {"person": 104198, "group": 28, "name": "ad", "email": "adrian@olddog.co.uk"}},
|
||||
{"pk": 52, "model": "group.rolehistory", "fields": {"person": 2329, "group": 28, "name": "ad", "email": "stbryant@cisco.com"}},
|
||||
{"pk": 53, "model": "group.rolehistory", "fields": {"person": 19483, "group": 29, "name": "ad", "email": "turners@ieca.com"}},
|
||||
{"pk": 54, "model": "group.rolehistory", "fields": {"person": 19790, "group": 29, "name": "ad", "email": "tim.polk@nist.gov"}},
|
||||
{"pk": 55, "model": "group.rolehistory", "fields": {"person": 112773, "group": 30, "name": "ad", "email": "lars@netapp.com"}},
|
||||
{"pk": 56, "model": "group.rolehistory", "fields": {"person": 17253, "group": 30, "name": "ad", "email": "ietfdbh@comcast.net"}},
|
||||
{"pk": 57, "model": "group.rolehistory", "fields": {"person": 103961, "group": 31, "name": "ad", "email": "rjsparks@nostrum.com"}},
|
||||
{"pk": 58, "model": "group.rolehistory", "fields": {"person": 103539, "group": 31, "name": "ad", "email": "gonzalo.camarillo@ericsson.com"}},
|
||||
{"pk": 59, "model": "group.rolehistory", "fields": {"person": 105682, "group": 33, "name": "chair", "email": "bclaise@cisco.com"}},
|
||||
{"pk": 60, "model": "group.rolehistory", "fields": {"person": 111529, "group": 33, "name": "chair", "email": "bnordman@lbl.gov"}},
|
||||
{"pk": 61, "model": "group.rolehistory", "fields": {"person": 105682, "group": 34, "name": "chair", "email": "bclaise@cisco.com"}},
|
||||
{"pk": 62, "model": "group.rolehistory", "fields": {"person": 111529, "group": 34, "name": "chair", "email": "bnordman@lbl.gov"}},
|
||||
{"pk": 63, "model": "group.rolehistory", "fields": {"person": 6766, "group": 34, "name": "chair", "email": "n.brownlee@auckland.ac.nz"}},
|
||||
{"pk": 64, "model": "group.rolehistory", "fields": {"person": 106186, "group": 36, "name": "chair", "email": "julien.ietf@gmail.com"}},
|
||||
{"pk": 65, "model": "group.rolehistory", "fields": {"person": 109800, "group": 36, "name": "chair", "email": "jouni.korhonen@nsn.com"}},
|
||||
{"pk": 66, "model": "group.rolehistory", "fields": {"person": 106186, "group": 40, "name": "chair", "email": "julien.ietf@gmail.com"}},
|
||||
{"pk": 67, "model": "group.rolehistory", "fields": {"person": 106186, "group": 41, "name": "chair", "email": "julien.ietf@gmail.com"}},
|
||||
{"pk": 68, "model": "group.rolehistory", "fields": {"person": 109800, "group": 41, "name": "chair", "email": "jouni.korhonen@nsn.com"}},
|
||||
{"pk": 69, "model": "group.rolehistory", "fields": {"person": 106186, "group": 42, "name": "chair", "email": "julien.ietf@gmail.com"}},
|
||||
{"pk": 70, "model": "group.rolehistory", "fields": {"person": 109800, "group": 42, "name": "chair", "email": "jouni.korhonen@nsn.com"}},
|
||||
{"pk": 71, "model": "group.rolehistory", "fields": {"person": 106186, "group": 43, "name": "chair", "email": "julien.ietf@gmail.com"}},
|
||||
{"pk": 72, "model": "group.rolehistory", "fields": {"person": 109800, "group": 43, "name": "chair", "email": "jouni.korhonen@nsn.com"}},
|
||||
{"pk": 73, "model": "group.rolehistory", "fields": {"person": 106186, "group": 44, "name": "chair", "email": "julien.ietf@gmail.com"}},
|
||||
{"pk": 74, "model": "group.rolehistory", "fields": {"person": 109800, "group": 44, "name": "chair", "email": "jouni.korhonen@nsn.com"}},
|
||||
{"pk": 75, "model": "group.rolehistory", "fields": {"person": 102154, "group": 45, "name": "chair", "email": "alexey.melnikov@isode.com"}},
|
||||
{"pk": 76, "model": "group.rolehistory", "fields": {"person": 21684, "group": 45, "name": "chair", "email": "barryleiba@computer.org"}},
|
||||
{"pk": 77, "model": "group.rolehistory", "fields": {"person": 107279, "group": 45, "name": "chair", "email": "yaojk@cnnic.cn"}},
|
||||
{"pk": 78, "model": "group.rolehistory", "fields": {"person": 106872, "group": 46, "name": "chair", "email": "T.Clausen@computer.org"}},
|
||||
{"pk": 79, "model": "group.rolehistory", "fields": {"person": 105595, "group": 46, "name": "chair", "email": "ryuji.wakikawa@gmail.com"}},
|
||||
{"pk": 80, "model": "group.rolehistory", "fields": {"person": 7262, "group": 48, "name": "chair", "email": "narten@us.ibm.com"}},
|
||||
{"pk": 81, "model": "group.rolehistory", "fields": {"person": 7262, "group": 49, "name": "chair", "email": "narten@us.ibm.com"}},
|
||||
{"pk": 82, "model": "group.rolehistory", "fields": {"person": 105786, "group": 49, "name": "chair", "email": "matthew.bocci@alcatel-lucent.com"}},
|
||||
{"pk": 83, "model": "group.rolehistory", "fields": {"person": 16366, "group": 50, "name": "chair", "email": "Ed.Lewis@neustar.biz"}},
|
||||
{"pk": 84, "model": "group.rolehistory", "fields": {"person": 2890, "group": 50, "name": "chair", "email": "jaap@sidn.nl"}},
|
||||
{"pk": 85, "model": "group.rolehistory", "fields": {"person": 107256, "group": 51, "name": "chair", "email": "marshall.eubanks@gmail.com"}},
|
||||
{"pk": 86, "model": "group.rolehistory", "fields": {"person": 11928, "group": 51, "name": "chair", "email": "johnl@taugh.com"}},
|
||||
{"pk": 87, "model": "group.rolehistory", "fields": {"person": 107190, "group": 53, "name": "chair", "email": "spencer@wonderhamster.org"}},
|
||||
{"pk": 88, "model": "group.rolehistory", "fields": {"person": 106438, "group": 54, "name": "chair", "email": "bryan@ethernot.org"}},
|
||||
{"pk": 89, "model": "group.rolehistory", "fields": {"person": 106987, "group": 54, "name": "chair", "email": "br@brianrosen.net"}},
|
||||
{"pk": 90, "model": "group.rolehistory", "fields": {"person": 105097, "group": 56, "name": "chair", "email": "drage@alcatel-lucent.com"}},
|
||||
{"pk": 91, "model": "group.rolehistory", "fields": {"person": 105097, "group": 57, "name": "chair", "email": "drage@alcatel-lucent.com"}},
|
||||
{"pk": 92, "model": "group.rolehistory", "fields": {"person": 107684, "group": 57, "name": "chair", "email": "hkaplan@acmepacket.com"}},
|
||||
{"pk": 93, "model": "group.rolehistory", "fields": {"person": 22933, "group": 58, "name": "chair", "email": "chopps@rawdofmt.org"}},
|
||||
{"pk": 94, "model": "group.rolehistory", "fields": {"person": 23057, "group": 58, "name": "chair", "email": "dward@juniper.net"}},
|
||||
{"pk": 95, "model": "group.rolehistory", "fields": {"person": 22933, "group": 59, "name": "chair", "email": "chopps@rawdofmt.org"}},
|
||||
{"pk": 96, "model": "group.rolehistory", "fields": {"person": 2399, "group": 60, "name": "techadv", "email": "dkatz@juniper.net"}},
|
||||
{"pk": 97, "model": "group.rolehistory", "fields": {"person": 23057, "group": 60, "name": "chair", "email": "dward@juniper.net"}},
|
||||
{"pk": 98, "model": "group.rolehistory", "fields": {"person": 105046, "group": 60, "name": "chair", "email": "jhaas@pfrc.org"}},
|
||||
{"pk": 99, "model": "group.rolehistory", "fields": {"person": 2399, "group": 61, "name": "techadv", "email": "dkatz@juniper.net"}},
|
||||
{"pk": 100, "model": "group.rolehistory", "fields": {"person": 105046, "group": 61, "name": "chair", "email": "jhaas@pfrc.org"}},
|
||||
{"pk": 101, "model": "group.rolehistory", "fields": {"person": 23057, "group": 62, "name": "chair", "email": "dward@juniper.net"}},
|
||||
{"pk": 102, "model": "group.rolehistory", "fields": {"person": 103539, "group": 62, "name": "chair", "email": "gonzalo.camarillo@ericsson.com"}},
|
||||
{"pk": 103, "model": "group.rolehistory", "fields": {"person": 103539, "group": 63, "name": "chair", "email": "gonzalo.camarillo@ericsson.com"}},
|
||||
{"pk": 104, "model": "group.rolehistory", "fields": {"person": 109558, "group": 64, "name": "delegate", "email": "daniel@olddog.co.uk"}},
|
||||
{"pk": 105, "model": "group.rolehistory", "fields": {"person": 109703, "group": 64, "name": "delegate", "email": "daniele.ceccarelli@ericsson.com"}},
|
||||
{"pk": 106, "model": "group.rolehistory", "fields": {"person": 109558, "group": 64, "name": "secr", "email": "daniel@olddog.co.uk"}},
|
||||
{"pk": 107, "model": "group.rolehistory", "fields": {"person": 10064, "group": 64, "name": "chair", "email": "lberger@labn.net"}},
|
||||
{"pk": 108, "model": "group.rolehistory", "fields": {"person": 106471, "group": 64, "name": "chair", "email": "dbrungard@att.com"}},
|
||||
{"pk": 109, "model": "group.rolehistory", "fields": {"person": 2324, "group": 65, "name": "chair", "email": "sob@harvard.edu"}},
|
||||
{"pk": 110, "model": "group.rolehistory", "fields": {"person": 107131, "group": 65, "name": "chair", "email": "martin.thomson@andrew.com"}},
|
||||
{"pk": 111, "model": "group.rolehistory", "fields": {"person": 2324, "group": 66, "name": "chair", "email": "sob@harvard.edu"}},
|
||||
{"pk": 112, "model": "group.rolehistory", "fields": {"person": 102154, "group": 67, "name": "chair", "email": "alexey.melnikov@isode.com"}},
|
||||
{"pk": 113, "model": "group.rolehistory", "fields": {"person": 21684, "group": 67, "name": "chair", "email": "barryleiba@computer.org"}},
|
||||
{"pk": 114, "model": "group.rolehistory", "fields": {"person": 107279, "group": 67, "name": "chair", "email": "yaojk@cnnic.cn"}},
|
||||
{"pk": 115, "model": "group.rolehistory", "fields": {"person": 106842, "group": 67, "name": "delegate", "email": "msk@cloudmark.com"}},
|
||||
{"pk": 116, "model": "group.rolehistory", "fields": {"person": 102154, "group": 68, "name": "chair", "email": "alexey.melnikov@isode.com"}},
|
||||
{"pk": 117, "model": "group.rolehistory", "fields": {"person": 21684, "group": 68, "name": "chair", "email": "barryleiba@computer.org"}},
|
||||
{"pk": 118, "model": "group.rolehistory", "fields": {"person": 107279, "group": 68, "name": "chair", "email": "yaojk@cnnic.cn"}},
|
||||
{"pk": 119, "model": "group.rolehistory", "fields": {"person": 106842, "group": 68, "name": "delegate", "email": "msk@cloudmark.com"}},
|
||||
{"pk": 120, "model": "group.rolehistory", "fields": {"person": 106842, "group": 68, "name": "chair", "email": "msk@cloudmark.com"}},
|
||||
{"pk": 121, "model": "group.rolehistory", "fields": {"person": 102154, "group": 69, "name": "chair", "email": "alexey.melnikov@isode.com"}},
|
||||
{"pk": 122, "model": "group.rolehistory", "fields": {"person": 107279, "group": 69, "name": "chair", "email": "yaojk@cnnic.cn"}},
|
||||
{"pk": 123, "model": "group.rolehistory", "fields": {"person": 106842, "group": 69, "name": "delegate", "email": "msk@cloudmark.com"}},
|
||||
{"pk": 124, "model": "group.rolehistory", "fields": {"person": 106842, "group": 69, "name": "chair", "email": "msk@cloudmark.com"}},
|
||||
{"pk": 125, "model": "group.rolehistory", "fields": {"person": 105519, "group": 70, "name": "chair", "email": "martin.stiemerling@neclab.eu"}},
|
||||
{"pk": 126, "model": "group.rolehistory", "fields": {"person": 109919, "group": 70, "name": "chair", "email": "zhangyunfei@chinamobile.com"}},
|
||||
{"pk": 127, "model": "group.rolehistory", "fields": {"person": 105519, "group": 71, "name": "chair", "email": "martin.stiemerling@neclab.eu"}},
|
||||
{"pk": 128, "model": "group.rolehistory", "fields": {"person": 109919, "group": 71, "name": "chair", "email": "zhangyunfei@chinamobile.com"}},
|
||||
{"pk": 129, "model": "group.rolehistory", "fields": {"person": 103392, "group": 71, "name": "chair", "email": "sprevidi@cisco.com"}},
|
||||
{"pk": 130, "model": "group.rolehistory", "fields": {"person": 18321, "group": 72, "name": "ad", "email": "presnick@qualcomm.com"}},
|
||||
{"pk": 131, "model": "group.rolehistory", "fields": {"person": 105907, "group": 72, "name": "ad", "email": "stpeter@stpeter.im"}},
|
||||
{"pk": 132, "model": "group.rolehistory", "fields": {"person": 21684, "group": 72, "name": "pre-ad", "email": "barryleiba@computer.org"}},
|
||||
{"pk": 133, "model": "group.rolehistory", "fields": {"person": 18321, "group": 73, "name": "ad", "email": "presnick@qualcomm.com"}},
|
||||
{"pk": 134, "model": "group.rolehistory", "fields": {"person": 105907, "group": 73, "name": "ad", "email": "stpeter@stpeter.im"}},
|
||||
{"pk": 135, "model": "group.rolehistory", "fields": {"person": 21684, "group": 73, "name": "ad", "email": "barryleiba@computer.org"}},
|
||||
{"pk": 136, "model": "group.rolehistory", "fields": {"person": 21072, "group": 74, "name": "ad", "email": "jari.arkko@piuha.net"}},
|
||||
{"pk": 137, "model": "group.rolehistory", "fields": {"person": 2348, "group": 74, "name": "ad", "email": "rdroms.ietf@gmail.com"}},
|
||||
{"pk": 138, "model": "group.rolehistory", "fields": {"person": 100664, "group": 74, "name": "pre-ad", "email": "brian@innovationslab.net"}},
|
||||
{"pk": 139, "model": "group.rolehistory", "fields": {"person": 21072, "group": 75, "name": "ad", "email": "jari.arkko@piuha.net"}},
|
||||
{"pk": 140, "model": "group.rolehistory", "fields": {"person": 2348, "group": 75, "name": "ad", "email": "rdroms.ietf@gmail.com"}},
|
||||
{"pk": 141, "model": "group.rolehistory", "fields": {"person": 100664, "group": 75, "name": "ad", "email": "brian@innovationslab.net"}},
|
||||
{"pk": 142, "model": "group.rolehistory", "fields": {"person": 101568, "group": 76, "name": "ad", "email": "rbonica@juniper.net"}},
|
||||
{"pk": 143, "model": "group.rolehistory", "fields": {"person": 6699, "group": 76, "name": "ad", "email": "dromasca@avaya.com"}},
|
||||
{"pk": 144, "model": "group.rolehistory", "fields": {"person": 105682, "group": 76, "name": "pre-ad", "email": "bclaise@cisco.com"}},
|
||||
{"pk": 145, "model": "group.rolehistory", "fields": {"person": 101568, "group": 77, "name": "ad", "email": "rbonica@juniper.net"}},
|
||||
{"pk": 146, "model": "group.rolehistory", "fields": {"person": 6699, "group": 77, "name": "ad", "email": "dromasca@avaya.com"}},
|
||||
{"pk": 147, "model": "group.rolehistory", "fields": {"person": 105682, "group": 77, "name": "ad", "email": "bclaise@cisco.com"}},
|
||||
{"pk": 148, "model": "group.rolehistory", "fields": {"person": 110856, "group": 78, "name": "ad", "email": "wes@mti-systems.com"}},
|
||||
{"pk": 149, "model": "group.rolehistory", "fields": {"person": 17253, "group": 78, "name": "ad", "email": "ietfdbh@comcast.net"}},
|
||||
{"pk": 150, "model": "group.rolehistory", "fields": {"person": 105519, "group": 78, "name": "pre-ad", "email": "martin.stiemerling@neclab.eu"}},
|
||||
{"pk": 151, "model": "group.rolehistory", "fields": {"person": 110856, "group": 79, "name": "ad", "email": "wes@mti-systems.com"}},
|
||||
{"pk": 152, "model": "group.rolehistory", "fields": {"person": 17253, "group": 79, "name": "ad", "email": "ietfdbh@comcast.net"}},
|
||||
{"pk": 153, "model": "group.rolehistory", "fields": {"person": 105519, "group": 79, "name": "ad", "email": "martin.stiemerling@neclab.eu"}},
|
||||
{"pk": 154, "model": "group.rolehistory", "fields": {"person": 102154, "group": 80, "name": "chair", "email": "alexey.melnikov@isode.com"}},
|
||||
{"pk": 155, "model": "group.rolehistory", "fields": {"person": 106842, "group": 80, "name": "delegate", "email": "msk@cloudmark.com"}},
|
||||
{"pk": 156, "model": "group.rolehistory", "fields": {"person": 106842, "group": 80, "name": "chair", "email": "msk@cloudmark.com"}},
|
||||
{"pk": 157, "model": "group.rolehistory", "fields": {"person": 105791, "group": 81, "name": "chair", "email": "fluffy@cisco.com"}},
|
||||
{"pk": 158, "model": "group.rolehistory", "fields": {"person": 11843, "group": 81, "name": "chair", "email": "cabo@tzi.org"}},
|
||||
{"pk": 159, "model": "group.rolehistory", "fields": {"person": 103881, "group": 82, "name": "chair", "email": "mnot@pobox.com"}},
|
||||
{"pk": 160, "model": "group.rolehistory", "fields": {"person": 109918, "group": 83, "name": "secr", "email": "sm+ietf@elandsys.com"}},
|
||||
{"pk": 161, "model": "group.rolehistory", "fields": {"person": 107491, "group": 83, "name": "chair", "email": "Salvatore.Loreto@ericsson.com"}},
|
||||
{"pk": 162, "model": "group.rolehistory", "fields": {"person": 108488, "group": 83, "name": "chair", "email": "Gabriel.Montenegro@microsoft.com"}},
|
||||
{"pk": 163, "model": "group.rolehistory", "fields": {"person": 21684, "group": 84, "name": "chair", "email": "barryleiba@computer.org"}},
|
||||
{"pk": 164, "model": "group.rolehistory", "fields": {"person": 106842, "group": 84, "name": "chair", "email": "msk@cloudmark.com"}},
|
||||
{"pk": 165, "model": "group.rolehistory", "fields": {"person": 106296, "group": 85, "name": "chair", "email": "andy@hxr.us"}},
|
||||
{"pk": 166, "model": "group.rolehistory", "fields": {"person": 110063, "group": 85, "name": "chair", "email": "ah@TR-Sys.de"}},
|
||||
{"pk": 167, "model": "group.rolehistory", "fields": {"person": 106745, "group": 86, "name": "secr", "email": "ynir@checkpoint.com"}},
|
||||
{"pk": 168, "model": "group.rolehistory", "fields": {"person": 19483, "group": 86, "name": "techadv", "email": "turners@ieca.com"}},
|
||||
{"pk": 169, "model": "group.rolehistory", "fields": {"person": 106405, "group": 86, "name": "chair", "email": "tobias.gondrom@gondrom.org"}},
|
||||
{"pk": 170, "model": "group.rolehistory", "fields": {"person": 102154, "group": 86, "name": "chair", "email": "alexey.melnikov@isode.com"}},
|
||||
{"pk": 171, "model": "group.rolehistory", "fields": {"person": 112547, "group": 87, "name": "chair", "email": "chris@lookout.net"}},
|
||||
{"pk": 172, "model": "group.rolehistory", "fields": {"person": 106987, "group": 88, "name": "chair", "email": "br@brianrosen.net"}},
|
||||
{"pk": 173, "model": "group.rolehistory", "fields": {"person": 108123, "group": 88, "name": "chair", "email": "Gabor.Bajko@nokia.com"}},
|
||||
{"pk": 174, "model": "group.rolehistory", "fields": {"person": 108717, "group": 89, "name": "chair", "email": "simon.perreault@viagenie.ca"}},
|
||||
{"pk": 175, "model": "group.rolehistory", "fields": {"person": 21684, "group": 90, "name": "chair", "email": "barryleiba@computer.org"}},
|
||||
{"pk": 176, "model": "group.rolehistory", "fields": {"person": 106842, "group": 90, "name": "chair", "email": "msk@cloudmark.com"}},
|
||||
{"pk": 177, "model": "group.rolehistory", "fields": {"person": 105907, "group": 91, "name": "techadv", "email": "stpeter@stpeter.im"}},
|
||||
{"pk": 178, "model": "group.rolehistory", "fields": {"person": 105857, "group": 91, "name": "chair", "email": "Hannes.Tschofenig@gmx.net"}},
|
||||
{"pk": 179, "model": "group.rolehistory", "fields": {"person": 21684, "group": 91, "name": "chair", "email": "barryleiba@computer.org"}},
|
||||
{"pk": 180, "model": "group.rolehistory", "fields": {"person": 8698, "group": 91, "name": "chair", "email": "derek@ihtfp.com"}},
|
||||
{"pk": 181, "model": "group.rolehistory", "fields": {"person": 2793, "group": 92, "name": "chair", "email": "bob.hinden@gmail.com"}},
|
||||
{"pk": 182, "model": "group.rolehistory", "fields": {"person": 100664, "group": 92, "name": "chair", "email": "brian@innovationslab.net"}},
|
||||
{"pk": 183, "model": "group.rolehistory", "fields": {"person": 105691, "group": 92, "name": "chair", "email": "otroan@employees.org"}},
|
||||
{"pk": 184, "model": "group.rolehistory", "fields": {"person": 100664, "group": 93, "name": "chair", "email": "brian@innovationslab.net"}},
|
||||
{"pk": 185, "model": "group.rolehistory", "fields": {"person": 4857, "group": 93, "name": "chair", "email": "odonoghue@isoc.org"}},
|
||||
{"pk": 186, "model": "group.rolehistory", "fields": {"person": 109919, "group": 94, "name": "chair", "email": "zhangyunfei@chinamobile.com"}},
|
||||
{"pk": 187, "model": "group.rolehistory", "fields": {"person": 103392, "group": 94, "name": "chair", "email": "sprevidi@cisco.com"}},
|
||||
{"pk": 188, "model": "group.rolehistory", "fields": {"person": 100038, "group": 95, "name": "chair", "email": "dwing@cisco.com"}},
|
||||
{"pk": 189, "model": "group.rolehistory", "fields": {"person": 15927, "group": 95, "name": "chair", "email": "dthaler@microsoft.com"}},
|
||||
{"pk": 190, "model": "group.rolehistory", "fields": {"person": 104331, "group": 96, "name": "chair", "email": "gorry@erg.abdn.ac.uk"}},
|
||||
{"pk": 191, "model": "group.rolehistory", "fields": {"person": 104267, "group": 96, "name": "chair", "email": "jmpolk@cisco.com"}},
|
||||
{"pk": 192, "model": "group.rolehistory", "fields": {"person": 105907, "group": 97, "name": "techadv", "email": "stpeter@stpeter.im"}},
|
||||
{"pk": 193, "model": "group.rolehistory", "fields": {"person": 107435, "group": 97, "name": "chair", "email": "enrico.marocco@telecomitalia.it"}},
|
||||
{"pk": 194, "model": "group.rolehistory", "fields": {"person": 106812, "group": 97, "name": "chair", "email": "vkg@bell-labs.com"}},
|
||||
{"pk": 195, "model": "group.rolehistory", "fields": {"person": 2690, "group": 98, "name": "chair", "email": "Richard_Woundy@cable.comcast.com"}},
|
||||
{"pk": 196, "model": "group.rolehistory", "fields": {"person": 101685, "group": 98, "name": "chair", "email": "flefauch@cisco.com"}},
|
||||
{"pk": 197, "model": "group.rolehistory", "fields": {"person": 102154, "group": 99, "name": "techadv", "email": "alexey.melnikov@isode.com"}},
|
||||
{"pk": 198, "model": "group.rolehistory", "fields": {"person": 109430, "group": 99, "name": "chair", "email": "haibin.song@huawei.com"}},
|
||||
{"pk": 199, "model": "group.rolehistory", "fields": {"person": 2690, "group": 99, "name": "chair", "email": "Richard_Woundy@cable.comcast.com"}},
|
||||
{"pk": 200, "model": "group.rolehistory", "fields": {"person": 106315, "group": 100, "name": "chair", "email": "gjshep@gmail.com"}},
|
||||
{"pk": 201, "model": "group.rolehistory", "fields": {"person": 110406, "group": 101, "name": "techadv", "email": "leifj@sunet.se"}},
|
||||
{"pk": 202, "model": "group.rolehistory", "fields": {"person": 21097, "group": 101, "name": "chair", "email": "spencer.shepler@gmail.com"}},
|
||||
{"pk": 203, "model": "group.rolehistory", "fields": {"person": 18587, "group": 101, "name": "chair", "email": "beepy@netapp.com"}},
|
||||
{"pk": 204, "model": "group.rolehistory", "fields": {"person": 2324, "group": 102, "name": "chair", "email": "sob@harvard.edu"}},
|
||||
{"pk": 205, "model": "group.rolehistory", "fields": {"person": 106638, "group": 102, "name": "chair", "email": "slblake@petri-meat.com"}},
|
||||
{"pk": 206, "model": "group.rolehistory", "fields": {"person": 100609, "group": 103, "name": "chair", "email": "lorenzo@vicisano.net"}},
|
||||
{"pk": 207, "model": "group.rolehistory", "fields": {"person": 12671, "group": 103, "name": "chair", "email": "adamson@itd.nrl.navy.mil"}},
|
||||
{"pk": 208, "model": "group.rolehistory", "fields": {"person": 8209, "group": 104, "name": "chair", "email": "ttalpey@microsoft.com"}},
|
||||
{"pk": 209, "model": "group.rolehistory", "fields": {"person": 103156, "group": 104, "name": "chair", "email": "black_david@emc.com"}},
|
||||
{"pk": 210, "model": "group.rolehistory", "fields": {"person": 100887, "group": 105, "name": "chair", "email": "mrw@lilacglade.org"}},
|
||||
{"pk": 211, "model": "group.rolehistory", "fields": {"person": 109884, "group": 105, "name": "chair", "email": "denghui02@hotmail.com"}},
|
||||
{"pk": 212, "model": "group.rolehistory", "fields": {"person": 105328, "group": 106, "name": "chair", "email": "adurand@juniper.net"}},
|
||||
{"pk": 213, "model": "group.rolehistory", "fields": {"person": 15927, "group": 106, "name": "chair", "email": "dthaler@microsoft.com"}},
|
||||
{"pk": 214, "model": "group.rolehistory", "fields": {"person": 108081, "group": 107, "name": "secr", "email": "junbi@tsinghua.edu.cn"}},
|
||||
{"pk": 215, "model": "group.rolehistory", "fields": {"person": 107482, "group": 107, "name": "techadv", "email": "jianping@cernet.edu.cn"}},
|
||||
{"pk": 216, "model": "group.rolehistory", "fields": {"person": 108428, "group": 107, "name": "chair", "email": "jeanmichel.combes@gmail.com"}},
|
||||
{"pk": 217, "model": "group.rolehistory", "fields": {"person": 108396, "group": 107, "name": "chair", "email": "christian.vogt@ericsson.com"}},
|
||||
{"pk": 218, "model": "group.rolehistory", "fields": {"person": 2793, "group": 108, "name": "chair", "email": "bob.hinden@gmail.com"}},
|
||||
{"pk": 219, "model": "group.rolehistory", "fields": {"person": 105691, "group": 108, "name": "chair", "email": "otroan@employees.org"}},
|
||||
{"pk": 220, "model": "group.rolehistory", "fields": {"person": 106186, "group": 109, "name": "chair", "email": "julien.ietf@gmail.com"}},
|
||||
{"pk": 221, "model": "group.rolehistory", "fields": {"person": 109800, "group": 109, "name": "chair", "email": "jouni.korhonen@nsn.com"}},
|
||||
{"pk": 222, "model": "group.rolehistory", "fields": {"person": 106199, "group": 110, "name": "secr", "email": "Wassim.Haddad@ericsson.com"}},
|
||||
{"pk": 223, "model": "group.rolehistory", "fields": {"person": 108833, "group": 110, "name": "secr", "email": "luigi@net.t-labs.tu-berlin.de"}},
|
||||
{"pk": 224, "model": "group.rolehistory", "fields": {"person": 108822, "group": 110, "name": "chair", "email": "terry.manderson@icann.org"}},
|
||||
{"pk": 225, "model": "group.rolehistory", "fields": {"person": 3862, "group": 110, "name": "chair", "email": "jmh@joelhalpern.com"}},
|
||||
{"pk": 226, "model": "group.rolehistory", "fields": {"person": 112773, "group": 111, "name": "techadv", "email": "lars@netapp.com"}},
|
||||
{"pk": 227, "model": "group.rolehistory", "fields": {"person": 111293, "group": 111, "name": "chair", "email": "robert.cragie@gridmerge.com"}},
|
||||
{"pk": 228, "model": "group.rolehistory", "fields": {"person": 110531, "group": 111, "name": "chair", "email": "caozhen@chinamobile.com"}},
|
||||
{"pk": 229, "model": "group.rolehistory", "fields": {"person": 106173, "group": 112, "name": "chair", "email": "stig@venaas.com"}},
|
||||
{"pk": 230, "model": "group.rolehistory", "fields": {"person": 105992, "group": 112, "name": "chair", "email": "sarikaya@ieee.org"}},
|
||||
{"pk": 231, "model": "group.rolehistory", "fields": {"person": 105730, "group": 113, "name": "chair", "email": "henrik@levkowetz.com"}},
|
||||
{"pk": 232, "model": "group.rolehistory", "fields": {"person": 106010, "group": 113, "name": "chair", "email": "mccap@petoni.org"}},
|
||||
{"pk": 233, "model": "group.rolehistory", "fields": {"person": 101214, "group": 114, "name": "chair", "email": "rkoodli@cisco.com"}},
|
||||
{"pk": 234, "model": "group.rolehistory", "fields": {"person": 103283, "group": 114, "name": "chair", "email": "basavaraj.patil@nokia.com"}},
|
||||
{"pk": 235, "model": "group.rolehistory", "fields": {"person": 4857, "group": 115, "name": "chair", "email": "odonoghue@isoc.org"}},
|
||||
{"pk": 236, "model": "group.rolehistory", "fields": {"person": 8249, "group": 116, "name": "techadv", "email": "carlsonj@workingcode.com"}},
|
||||
{"pk": 237, "model": "group.rolehistory", "fields": {"person": 102391, "group": 116, "name": "chair", "email": "d3e3e3@gmail.com"}},
|
||||
{"pk": 238, "model": "group.rolehistory", "fields": {"person": 106414, "group": 117, "name": "chair", "email": "yaakov_s@rad.com"}},
|
||||
{"pk": 239, "model": "group.rolehistory", "fields": {"person": 4857, "group": 117, "name": "chair", "email": "odonoghue@isoc.org"}},
|
||||
{"pk": 240, "model": "group.rolehistory", "fields": {"person": 2324, "group": 118, "name": "chair", "email": "sob@harvard.edu"}},
|
||||
{"pk": 241, "model": "group.rolehistory", "fields": {"person": 104807, "group": 118, "name": "chair", "email": "ietf@cdl.asgaard.org"}},
|
||||
{"pk": 242, "model": "group.rolehistory", "fields": {"person": 101104, "group": 118, "name": "chair", "email": "melinda.shore@gmail.com"}},
|
||||
{"pk": 243, "model": "group.rolehistory", "fields": {"person": 106462, "group": 119, "name": "editor", "email": "edward.beili@actelis.com"}},
|
||||
{"pk": 244, "model": "group.rolehistory", "fields": {"person": 107067, "group": 119, "name": "editor", "email": "moti.Morgenstern@ecitele.com"}},
|
||||
{"pk": 245, "model": "group.rolehistory", "fields": {"person": 105024, "group": 119, "name": "editor", "email": "scott.baillie@nec.com.au"}},
|
||||
{"pk": 246, "model": "group.rolehistory", "fields": {"person": 107258, "group": 119, "name": "editor", "email": "umberto.bonollo@nec.com.au"}},
|
||||
{"pk": 247, "model": "group.rolehistory", "fields": {"person": 106345, "group": 119, "name": "chair", "email": "Menachem.Dodge@ecitele.com"}},
|
||||
{"pk": 248, "model": "group.rolehistory", "fields": {"person": 109800, "group": 120, "name": "chair", "email": "jouni.korhonen@nsn.com"}},
|
||||
{"pk": 249, "model": "group.rolehistory", "fields": {"person": 107737, "group": 120, "name": "chair", "email": "lionel.morand@orange.com"}},
|
||||
{"pk": 250, "model": "group.rolehistory", "fields": {"person": 111529, "group": 121, "name": "chair", "email": "bnordman@lbl.gov"}},
|
||||
{"pk": 251, "model": "group.rolehistory", "fields": {"person": 6766, "group": 121, "name": "chair", "email": "n.brownlee@auckland.ac.nz"}},
|
||||
{"pk": 252, "model": "group.rolehistory", "fields": {"person": 19790, "group": 122, "name": "techadv", "email": "tim.polk@nist.gov"}},
|
||||
{"pk": 253, "model": "group.rolehistory", "fields": {"person": 6842, "group": 122, "name": "chair", "email": "bertietf@bwijnen.net"}},
|
||||
{"pk": 254, "model": "group.rolehistory", "fields": {"person": 105537, "group": 122, "name": "chair", "email": "mehmet.ersue@nsn.com"}},
|
||||
{"pk": 255, "model": "group.rolehistory", "fields": {"person": 21106, "group": 123, "name": "chair", "email": "j.schoenwaelder@jacobs-university.de"}},
|
||||
{"pk": 256, "model": "group.rolehistory", "fields": {"person": 19587, "group": 123, "name": "chair", "email": "david.kessens@nsn.com"}},
|
||||
{"pk": 257, "model": "group.rolehistory", "fields": {"person": 6766, "group": 124, "name": "chair", "email": "n.brownlee@auckland.ac.nz"}},
|
||||
{"pk": 258, "model": "group.rolehistory", "fields": {"person": 103651, "group": 124, "name": "chair", "email": "quittek@neclab.eu"}},
|
||||
{"pk": 259, "model": "group.rolehistory", "fields": {"person": 17681, "group": 125, "name": "techadv", "email": "paul.congdon@hp.com"}},
|
||||
{"pk": 260, "model": "group.rolehistory", "fields": {"person": 109800, "group": 125, "name": "chair", "email": "jouni.korhonen@nsn.com"}},
|
||||
{"pk": 261, "model": "group.rolehistory", "fields": {"person": 111434, "group": 125, "name": "chair", "email": "mauricio.sanchez@hp.com"}},
|
||||
{"pk": 262, "model": "group.rolehistory", "fields": {"person": 109558, "group": 126, "name": "secr", "email": "daniel@olddog.co.uk"}},
|
||||
{"pk": 263, "model": "group.rolehistory", "fields": {"person": 110259, "group": 126, "name": "techadv", "email": "rstruik.ext@gmail.com"}},
|
||||
{"pk": 264, "model": "group.rolehistory", "fields": {"person": 106269, "group": 126, "name": "chair", "email": "jpv@cisco.com"}},
|
||||
{"pk": 265, "model": "group.rolehistory", "fields": {"person": 108796, "group": 126, "name": "chair", "email": "culler@cs.berkeley.edu"}},
|
||||
{"pk": 266, "model": "group.rolehistory", "fields": {"person": 109558, "group": 127, "name": "secr", "email": "daniel@olddog.co.uk"}},
|
||||
{"pk": 267, "model": "group.rolehistory", "fields": {"person": 110259, "group": 127, "name": "techadv", "email": "rstruik.ext@gmail.com"}},
|
||||
{"pk": 268, "model": "group.rolehistory", "fields": {"person": 102254, "group": 127, "name": "chair", "email": "mcr+ietf@sandelman.ca"}},
|
||||
{"pk": 269, "model": "group.rolehistory", "fields": {"person": 106269, "group": 127, "name": "chair", "email": "jpv@cisco.com"}},
|
||||
{"pk": 270, "model": "group.rolehistory", "fields": {"person": 108796, "group": 127, "name": "chair", "email": "culler@cs.berkeley.edu"}},
|
||||
{"pk": 271, "model": "group.rolehistory", "fields": {"person": 105097, "group": 128, "name": "chair", "email": "drage@alcatel-lucent.com"}},
|
||||
{"pk": 272, "model": "group.rolehistory", "fields": {"person": 107684, "group": 128, "name": "chair", "email": "hkaplan@acmepacket.com"}},
|
||||
{"pk": 273, "model": "group.rolehistory", "fields": {"person": 105097, "group": 129, "name": "chair", "email": "drage@alcatel-lucent.com"}},
|
||||
{"pk": 274, "model": "group.rolehistory", "fields": {"person": 110842, "group": 129, "name": "chair", "email": "gsalguei@cisco.com"}},
|
||||
{"pk": 275, "model": "group.rolehistory", "fields": {"person": 107684, "group": 129, "name": "chair", "email": "hkaplan@acmepacket.com"}},
|
||||
{"pk": 276, "model": "group.rolehistory", "fields": {"person": 112547, "group": 130, "name": "chair", "email": "chris@lookout.net"}},
|
||||
{"pk": 277, "model": "group.rolehistory", "fields": {"person": 7262, "group": 131, "name": "chair", "email": "narten@us.ibm.com"}},
|
||||
{"pk": 278, "model": "group.rolehistory", "fields": {"person": 105786, "group": 131, "name": "chair", "email": "matthew.bocci@alcatel-lucent.com"}},
|
||||
{"pk": 279, "model": "group.rolehistory", "fields": {"person": 112438, "group": 131, "name": "chair", "email": "bschlies@cisco.com"}},
|
||||
{"pk": 280, "model": "group.rolehistory", "fields": {"person": 7262, "group": 132, "name": "chair", "email": "narten@us.ibm.com"}},
|
||||
{"pk": 281, "model": "group.rolehistory", "fields": {"person": 105786, "group": 132, "name": "chair", "email": "matthew.bocci@alcatel-lucent.com"}},
|
||||
{"pk": 282, "model": "group.rolehistory", "fields": {"person": 112438, "group": 132, "name": "chair", "email": "bschlies@cisco.com"}},
|
||||
{"pk": 283, "model": "group.rolehistory", "fields": {"person": 6771, "group": 133, "name": "chair", "email": "tony@att.com"}},
|
||||
{"pk": 284, "model": "group.rolehistory", "fields": {"person": 109498, "group": 133, "name": "chair", "email": "anthonybryan@gmail.com"}},
|
||||
{"pk": 285, "model": "group.rolehistory", "fields": {"person": 109558, "group": 134, "name": "secr", "email": "daniel@olddog.co.uk"}},
|
||||
{"pk": 286, "model": "group.rolehistory", "fields": {"person": 19987, "group": 134, "name": "chair", "email": "danny@tcb.net"}},
|
||||
{"pk": 287, "model": "group.rolehistory", "fields": {"person": 107256, "group": 134, "name": "chair", "email": "marshall.eubanks@gmail.com"}},
|
||||
{"pk": 288, "model": "group.rolehistory", "fields": {"person": 108185, "group": 134, "name": "chair", "email": "ben@niven-jenkins.co.uk"}},
|
||||
{"pk": 289, "model": "group.rolehistory", "fields": {"person": 109558, "group": 135, "name": "secr", "email": "daniel@olddog.co.uk"}},
|
||||
{"pk": 290, "model": "group.rolehistory", "fields": {"person": 19987, "group": 135, "name": "chair", "email": "danny@tcb.net"}},
|
||||
{"pk": 291, "model": "group.rolehistory", "fields": {"person": 107256, "group": 135, "name": "chair", "email": "marshall.eubanks@gmail.com"}},
|
||||
{"pk": 292, "model": "group.rolehistory", "fields": {"person": 2329, "group": 135, "name": "chair", "email": "stbryant@cisco.com"}},
|
||||
{"pk": 293, "model": "group.rolehistory", "fields": {"person": 108185, "group": 135, "name": "chair", "email": "ben@niven-jenkins.co.uk"}},
|
||||
{"pk": 294, "model": "group.rolehistory", "fields": {"person": 109558, "group": 136, "name": "secr", "email": "daniel@olddog.co.uk"}},
|
||||
{"pk": 295, "model": "group.rolehistory", "fields": {"person": 107256, "group": 136, "name": "chair", "email": "marshall.eubanks@gmail.com"}},
|
||||
{"pk": 296, "model": "group.rolehistory", "fields": {"person": 2329, "group": 136, "name": "chair", "email": "stbryant@cisco.com"}},
|
||||
{"pk": 297, "model": "group.rolehistory", "fields": {"person": 108185, "group": 136, "name": "chair", "email": "ben@niven-jenkins.co.uk"}},
|
||||
{"pk": 298, "model": "group.rolehistory", "fields": {"person": 109558, "group": 137, "name": "secr", "email": "daniel@olddog.co.uk"}},
|
||||
{"pk": 299, "model": "group.rolehistory", "fields": {"person": 2329, "group": 137, "name": "chair", "email": "stbryant@cisco.com"}},
|
||||
{"pk": 300, "model": "group.rolehistory", "fields": {"person": 108185, "group": 137, "name": "chair", "email": "ben@niven-jenkins.co.uk"}},
|
||||
{"pk": 301, "model": "group.rolehistory", "fields": {"person": 104557, "group": 140, "name": "techadv", "email": "jon.peterson@neustar.biz"}},
|
||||
{"pk": 302, "model": "group.rolehistory", "fields": {"person": 105426, "group": 140, "name": "chair", "email": "hisham.khartabil@gmail.com"}},
|
||||
{"pk": 303, "model": "group.rolehistory", "fields": {"person": 104140, "group": 140, "name": "chair", "email": "ben@nostrum.com"}},
|
||||
{"pk": 304, "model": "group.rolehistory", "fields": {"person": 110049, "group": 141, "name": "chair", "email": "jhildebr@cisco.com"}},
|
||||
{"pk": 305, "model": "group.rolehistory", "fields": {"person": 104140, "group": 141, "name": "chair", "email": "ben@nostrum.com"}},
|
||||
{"pk": 306, "model": "group.rolehistory", "fields": {"person": 102391, "group": 142, "name": "chair", "email": "d3e3e3@gmail.com"}},
|
||||
{"pk": 307, "model": "group.rolehistory", "fields": {"person": 8243, "group": 142, "name": "chair", "email": "nordmark@acm.org"}},
|
||||
{"pk": 308, "model": "group.rolehistory", "fields": {"person": 109558, "group": 143, "name": "secr", "email": "daniel@olddog.co.uk"}},
|
||||
{"pk": 309, "model": "group.rolehistory", "fields": {"person": 2329, "group": 143, "name": "chair", "email": "stbryant@cisco.com"}},
|
||||
{"pk": 310, "model": "group.rolehistory", "fields": {"person": 109558, "group": 144, "name": "secr", "email": "daniel@olddog.co.uk"}},
|
||||
{"pk": 311, "model": "group.rolehistory", "fields": {"person": 2329, "group": 144, "name": "chair", "email": "stbryant@cisco.com"}},
|
||||
{"pk": 312, "model": "group.rolehistory", "fields": {"person": 106860, "group": 144, "name": "chair", "email": "thomas.morin@orange.com"}},
|
||||
{"pk": 313, "model": "group.rolehistory", "fields": {"person": 107084, "group": 145, "name": "secr", "email": "rmarshall@telecomsys.com"}},
|
||||
{"pk": 314, "model": "group.rolehistory", "fields": {"person": 106012, "group": 145, "name": "chair", "email": "marc.linsner@cisco.com"}},
|
||||
{"pk": 315, "model": "group.rolehistory", "fields": {"person": 108049, "group": 145, "name": "chair", "email": "rbarnes@bbn.com"}},
|
||||
{"pk": 316, "model": "group.rolehistory", "fields": {"person": 107084, "group": 146, "name": "secr", "email": "rmarshall@telecomsys.com"}},
|
||||
{"pk": 317, "model": "group.rolehistory", "fields": {"person": 106012, "group": 146, "name": "chair", "email": "marc.linsner@cisco.com"}},
|
||||
{"pk": 318, "model": "group.rolehistory", "fields": {"person": 108049, "group": 146, "name": "chair", "email": "rbarnes@bbn.com"}},
|
||||
{"pk": 319, "model": "group.rolehistory", "fields": {"person": 107084, "group": 146, "name": "chair", "email": "rmarshall@telecomsys.com"}},
|
||||
{"pk": 320, "model": "group.rolehistory", "fields": {"person": 5797, "group": 147, "name": "techadv", "email": "smb@cs.columbia.edu"}},
|
||||
{"pk": 321, "model": "group.rolehistory", "fields": {"person": 13219, "group": 147, "name": "chair", "email": "Sandra.Murphy@sparta.com"}},
|
||||
{"pk": 322, "model": "group.rolehistory", "fields": {"person": 111246, "group": 147, "name": "chair", "email": "morrowc@ops-netman.net"}},
|
||||
{"pk": 323, "model": "group.rolehistory", "fields": {"person": 109178, "group": 148, "name": "chair", "email": "ajs@anvilwalrusden.com"}},
|
||||
{"pk": 324, "model": "group.rolehistory", "fields": {"person": 106842, "group": 148, "name": "chair", "email": "msk@cloudmark.com"}},
|
||||
{"pk": 325, "model": "group.rolehistory", "fields": {"person": 102174, "group": 150, "name": "chair", "email": "dirk.kutscher@neclab.eu"}},
|
||||
{"pk": 326, "model": "group.rolehistory", "fields": {"person": 18250, "group": 151, "name": "chair", "email": "Borje.Ohlman@ericsson.com"}},
|
||||
{"pk": 327, "model": "group.rolehistory", "fields": {"person": 102174, "group": 151, "name": "chair", "email": "dirk.kutscher@neclab.eu"}},
|
||||
{"pk": 328, "model": "group.rolehistory", "fields": {"person": 109814, "group": 157, "name": "chair", "email": "lachlan.andrew@gmail.com"}},
|
||||
{"pk": 329, "model": "group.rolehistory", "fields": {"person": 19826, "group": 159, "name": "chair", "email": "canetti@watson.ibm.com"}},
|
||||
{"pk": 330, "model": "group.rolehistory", "fields": {"person": 103303, "group": 159, "name": "chair", "email": "mcgrew@cisco.com"}},
|
||||
{"pk": 331, "model": "group.rolehistory", "fields": {"person": 109225, "group": 159, "name": "chair", "email": "kmigoe@nsa.gov"}},
|
||||
{"pk": 332, "model": "group.rolehistory", "fields": {"person": 21226, "group": 160, "name": "chair", "email": "falk@bbn.com"}},
|
||||
{"pk": 333, "model": "group.rolehistory", "fields": {"person": 11928, "group": 160, "name": "chair", "email": "johnl@taugh.com"}},
|
||||
{"pk": 334, "model": "group.rolehistory", "fields": {"person": 102154, "group": 161, "name": "chair", "email": "alexey.melnikov@isode.com"}},
|
||||
{"pk": 335, "model": "group.rolehistory", "fields": {"person": 106842, "group": 161, "name": "delegate", "email": "msk@cloudmark.com"}},
|
||||
{"pk": 336, "model": "group.rolehistory", "fields": {"person": 106842, "group": 161, "name": "chair", "email": "msk@cloudmark.com"}},
|
||||
{"pk": 337, "model": "group.rolehistory", "fields": {"person": 109558, "group": 162, "name": "secr", "email": "daniel@olddog.co.uk"}},
|
||||
{"pk": 338, "model": "group.rolehistory", "fields": {"person": 108279, "group": 162, "name": "chair", "email": "martin.vigoureux@alcatel-lucent.com"}},
|
||||
{"pk": 339, "model": "group.rolehistory", "fields": {"person": 2329, "group": 162, "name": "chair", "email": "stbryant@cisco.com"}},
|
||||
{"pk": 340, "model": "group.rolehistory", "fields": {"person": 106860, "group": 162, "name": "chair", "email": "thomas.morin@orange.com"}},
|
||||
{"pk": 341, "model": "group.rolehistory", "fields": {"person": 7262, "group": 164, "name": "chair", "email": "narten@us.ibm.com"}},
|
||||
{"pk": 342, "model": "group.rolehistory", "fields": {"person": 105786, "group": 164, "name": "chair", "email": "matthew.bocci@alcatel-lucent.com"}},
|
||||
{"pk": 343, "model": "group.rolehistory", "fields": {"person": 112438, "group": 164, "name": "chair", "email": "bschlies@cisco.com"}},
|
||||
{"pk": 344, "model": "group.rolehistory", "fields": {"person": 105786, "group": 165, "name": "chair", "email": "matthew.bocci@alcatel-lucent.com"}},
|
||||
{"pk": 345, "model": "group.rolehistory", "fields": {"person": 112438, "group": 165, "name": "chair", "email": "bschlies@cisco.com"}},
|
||||
{"pk": 346, "model": "group.rolehistory", "fields": {"person": 112160, "group": 167, "name": "chair", "email": "wesley.george@twcable.com"}},
|
||||
{"pk": 347, "model": "group.rolehistory", "fields": {"person": 19869, "group": 168, "name": "chair", "email": "Marc.Blanchet@viagenie.ca"}},
|
||||
{"pk": 348, "model": "group.rolehistory", "fields": {"person": 112160, "group": 168, "name": "chair", "email": "wesley.george@twcable.com"}},
|
||||
{"pk": 349, "model": "group.rolehistory", "fields": {"person": 19869, "group": 169, "name": "chair", "email": "Marc.Blanchet@viagenie.ca"}},
|
||||
{"pk": 350, "model": "group.rolehistory", "fields": {"person": 2853, "group": 169, "name": "techadv", "email": "fred@cisco.com"}},
|
||||
{"pk": 351, "model": "group.rolehistory", "fields": {"person": 112160, "group": 169, "name": "chair", "email": "wesley.george@twcable.com"}},
|
||||
{"pk": 352, "model": "group.rolehistory", "fields": {"person": 105519, "group": 170, "name": "techadv", "email": "martin.stiemerling@neclab.eu"}},
|
||||
{"pk": 353, "model": "group.rolehistory", "fields": {"person": 19869, "group": 170, "name": "chair", "email": "Marc.Blanchet@viagenie.ca"}},
|
||||
{"pk": 354, "model": "group.rolehistory", "fields": {"person": 2853, "group": 170, "name": "techadv", "email": "fred@cisco.com"}},
|
||||
{"pk": 355, "model": "group.rolehistory", "fields": {"person": 112160, "group": 170, "name": "chair", "email": "wesley.george@twcable.com"}},
|
||||
{"pk": 356, "model": "group.rolehistory", "fields": {"person": 101568, "group": 171, "name": "techadv", "email": "rbonica@juniper.net"}},
|
||||
{"pk": 357, "model": "group.rolehistory", "fields": {"person": 105786, "group": 171, "name": "chair", "email": "matthew.bocci@alcatel-lucent.com"}},
|
||||
{"pk": 358, "model": "group.rolehistory", "fields": {"person": 112438, "group": 171, "name": "chair", "email": "bschlies@cisco.com"}},
|
||||
{"pk": 359, "model": "group.rolehistory", "fields": {"person": 105519, "group": 172, "name": "techadv", "email": "martin.stiemerling@neclab.eu"}},
|
||||
{"pk": 360, "model": "group.rolehistory", "fields": {"person": 19869, "group": 172, "name": "chair", "email": "Marc.Blanchet@viagenie.ca"}},
|
||||
{"pk": 361, "model": "group.rolehistory", "fields": {"person": 2329, "group": 172, "name": "techadv", "email": "stbryant@cisco.com"}},
|
||||
{"pk": 362, "model": "group.rolehistory", "fields": {"person": 2853, "group": 172, "name": "techadv", "email": "fred@cisco.com"}},
|
||||
{"pk": 363, "model": "group.rolehistory", "fields": {"person": 112160, "group": 172, "name": "chair", "email": "wesley.george@twcable.com"}},
|
||||
{"pk": 364, "model": "group.rolehistory", "fields": {"person": 108054, "group": 173, "name": "secr", "email": "jiangsheng@huawei.com"}},
|
||||
{"pk": 365, "model": "group.rolehistory", "fields": {"person": 106461, "group": 173, "name": "chair", "email": "tjc@ecs.soton.ac.uk"}},
|
||||
{"pk": 366, "model": "group.rolehistory", "fields": {"person": 112160, "group": 173, "name": "chair", "email": "wesley.george@twcable.com"}},
|
||||
{"pk": 367, "model": "group.rolehistory", "fields": {"person": 108054, "group": 174, "name": "secr", "email": "jiangsheng@huawei.com"}},
|
||||
{"pk": 368, "model": "group.rolehistory", "fields": {"person": 106461, "group": 174, "name": "chair", "email": "tjc@ecs.soton.ac.uk"}},
|
||||
{"pk": 369, "model": "group.rolehistory", "fields": {"person": 111656, "group": 175, "name": "chair", "email": "warren@kumari.net"}},
|
||||
{"pk": 370, "model": "group.rolehistory", "fields": {"person": 108304, "group": 175, "name": "chair", "email": "gvandeve@cisco.com"}},
|
||||
{"pk": 371, "model": "group.rolehistory", "fields": {"person": 12620, "group": 176, "name": "chair", "email": "iab-chair@ietf.org"}},
|
||||
{"pk": 372, "model": "group.rolehistory", "fields": {"person": 105113, "group": 176, "name": "execdir", "email": "jabley@hopcount.ca"}},
|
||||
{"pk": 373, "model": "group.rolehistory", "fields": {"person": 109259, "group": 176, "name": "chair", "email": "dow.street@linquest.com"}},
|
||||
{"pk": 374, "model": "group.rolehistory", "fields": {"person": 12620, "group": 176, "name": "chair", "email": "Bernard_Aboba@hotmail.com"}},
|
||||
{"pk": 375, "model": "group.rolehistory", "fields": {"person": 102830, "group": 176, "name": "chair", "email": "mary.barnes@polycom.com"}},
|
||||
{"pk": 376, "model": "group.rolehistory", "fields": {"person": 12620, "group": 177, "name": "chair", "email": "iab-chair@ietf.org"}},
|
||||
{"pk": 377, "model": "group.rolehistory", "fields": {"person": 109259, "group": 177, "name": "chair", "email": "dow.street@linquest.com"}},
|
||||
{"pk": 378, "model": "group.rolehistory", "fields": {"person": 12620, "group": 177, "name": "chair", "email": "Bernard_Aboba@hotmail.com"}},
|
||||
{"pk": 379, "model": "group.rolehistory", "fields": {"person": 102830, "group": 177, "name": "chair", "email": "mary.barnes@polycom.com"}},
|
||||
{"pk": 380, "model": "group.rolehistory", "fields": {"person": 12620, "group": 178, "name": "chair", "email": "iab-chair@ietf.org"}},
|
||||
{"pk": 381, "model": "group.rolehistory", "fields": {"person": 102830, "group": 178, "name": "execdir", "email": "mary.barnes@polycom.com"}},
|
||||
{"pk": 382, "model": "group.rolehistory", "fields": {"person": 109259, "group": 178, "name": "chair", "email": "dow.street@linquest.com"}},
|
||||
{"pk": 383, "model": "group.rolehistory", "fields": {"person": 12620, "group": 178, "name": "chair", "email": "Bernard_Aboba@hotmail.com"}},
|
||||
{"pk": 384, "model": "group.rolehistory", "fields": {"person": 102830, "group": 178, "name": "chair", "email": "mary.barnes@polycom.com"}},
|
||||
{"pk": 385, "model": "group.rolehistory", "fields": {"person": 12620, "group": 179, "name": "chair", "email": "iab-chair@ietf.org"}},
|
||||
{"pk": 386, "model": "group.rolehistory", "fields": {"person": 102830, "group": 179, "name": "execdir", "email": "mary.barnes@polycom.com"}},
|
||||
{"pk": 387, "model": "group.rolehistory", "fields": {"person": 109259, "group": 179, "name": "chair", "email": "dow.street@linquest.com"}},
|
||||
{"pk": 388, "model": "group.rolehistory", "fields": {"person": 12620, "group": 179, "name": "chair", "email": "Bernard_Aboba@hotmail.com"}},
|
||||
{"pk": 389, "model": "group.rolehistory", "fields": {"person": 12620, "group": 181, "name": "chair", "email": "iab-chair@ietf.org"}},
|
||||
{"pk": 390, "model": "group.rolehistory", "fields": {"person": 102830, "group": 181, "name": "execdir", "email": "mary.barnes@polycom.com"}},
|
||||
{"pk": 391, "model": "group.rolehistory", "fields": {"person": 12620, "group": 181, "name": "chair", "email": "Bernard_Aboba@hotmail.com"}},
|
||||
{"pk": 392, "model": "group.rolehistory", "fields": {"person": 12620, "group": 182, "name": "chair", "email": "iab-chair@ietf.org"}},
|
||||
{"pk": 393, "model": "group.rolehistory", "fields": {"person": 102830, "group": 182, "name": "execdir", "email": "mary.barnes@polycom.com"}},
|
||||
{"pk": 394, "model": "group.rolehistory", "fields": {"person": 108756, "group": 182, "name": "secr", "email": "cmorgan@amsl.com"}},
|
||||
{"pk": 395, "model": "group.rolehistory", "fields": {"person": 12620, "group": 182, "name": "chair", "email": "Bernard_Aboba@hotmail.com"}},
|
||||
{"pk": 396, "model": "group.rolehistory", "fields": {"person": 2097, "group": 183, "name": "chair", "email": "lear@cisco.com"}},
|
||||
{"pk": 397, "model": "group.rolehistory", "fields": {"person": 5797, "group": 183, "name": "chair", "email": "smb@cs.columbia.edu"}},
|
||||
{"pk": 398, "model": "group.rolehistory", "fields": {"person": 12620, "group": 184, "name": "chair", "email": "iab-chair@ietf.org"}},
|
||||
{"pk": 399, "model": "group.rolehistory", "fields": {"person": 102830, "group": 184, "name": "execdir", "email": "mary.barnes@polycom.com"}},
|
||||
{"pk": 400, "model": "group.rolehistory", "fields": {"person": 12620, "group": 184, "name": "chair", "email": "Bernard_Aboba@hotmail.com"}},
|
||||
{"pk": 401, "model": "group.rolehistory", "fields": {"person": 2399, "group": 185, "name": "techadv", "email": "dkatz@juniper.net"}},
|
||||
{"pk": 402, "model": "group.rolehistory", "fields": {"person": 23057, "group": 185, "name": "chair", "email": "dward@cisco.com"}},
|
||||
{"pk": 403, "model": "group.rolehistory", "fields": {"person": 105046, "group": 185, "name": "chair", "email": "jhaas@pfrc.org"}},
|
||||
{"pk": 404, "model": "group.rolehistory", "fields": {"person": 21106, "group": 186, "name": "chair", "email": "j.schoenwaelder@jacobs-university.de"}},
|
||||
{"pk": 405, "model": "group.rolehistory", "fields": {"person": 19587, "group": 186, "name": "chair", "email": "david.kessens@nsn.com"}},
|
||||
{"pk": 406, "model": "group.rolehistory", "fields": {"person": 19790, "group": 187, "name": "techadv", "email": "tim.polk@nist.gov"}},
|
||||
{"pk": 407, "model": "group.rolehistory", "fields": {"person": 6842, "group": 187, "name": "chair", "email": "bertietf@bwijnen.net"}},
|
||||
{"pk": 408, "model": "group.rolehistory", "fields": {"person": 105537, "group": 187, "name": "chair", "email": "mehmet.ersue@nsn.com"}},
|
||||
{"pk": 409, "model": "group.rolehistory", "fields": {"person": 109178, "group": 188, "name": "chair", "email": "ajs@anvilwalrusden.com"}},
|
||||
{"pk": 410, "model": "group.rolehistory", "fields": {"person": 106842, "group": 188, "name": "chair", "email": "msk@cloudmark.com"}},
|
||||
{"pk": 411, "model": "group.rolehistory", "fields": {"person": 106842, "group": 189, "name": "chair", "email": "msk@cloudmark.com"}},
|
||||
{"pk": 412, "model": "group.rolehistory", "fields": {"person": 100454, "group": 190, "name": "chair", "email": "olaf@nlnetlabs.nl"}},
|
||||
{"pk": 413, "model": "group.rolehistory", "fields": {"person": 106842, "group": 190, "name": "chair", "email": "msk@cloudmark.com"}},
|
||||
{"pk": 414, "model": "group.rolehistory", "fields": {"person": 100454, "group": 191, "name": "chair", "email": "olaf@nlnetlabs.nl"}},
|
||||
{"pk": 415, "model": "group.rolehistory", "fields": {"person": 106842, "group": 191, "name": "chair", "email": "msk@cloudmark.com"}},
|
||||
{"pk": 416, "model": "group.rolehistory", "fields": {"person": 106012, "group": 192, "name": "chair", "email": "marc.linsner@cisco.com"}},
|
||||
{"pk": 417, "model": "group.rolehistory", "fields": {"person": 108049, "group": 192, "name": "chair", "email": "rbarnes@bbn.com"}},
|
||||
{"pk": 418, "model": "group.rolehistory", "fields": {"person": 107084, "group": 192, "name": "chair", "email": "rmarshall@telecomsys.com"}},
|
||||
{"pk": 419, "model": "group.rolehistory", "fields": {"person": 19483, "group": 193, "name": "chair", "email": "turners@ieca.com"}},
|
||||
{"pk": 420, "model": "group.rolehistory", "fields": {"person": 19177, "group": 193, "name": "chair", "email": "stephen.farrell@cs.tcd.ie"}},
|
||||
{"pk": 421, "model": "group.rolehistory", "fields": {"person": 19647, "group": 194, "name": "chair", "email": "dharkins@lounge.org"}},
|
||||
{"pk": 422, "model": "group.rolehistory", "fields": {"person": 110934, "group": 194, "name": "chair", "email": "lnovikov@mitre.org"}},
|
||||
{"pk": 423, "model": "group.rolehistory", "fields": {"person": 106186, "group": 195, "name": "chair", "email": "julien.ietf@gmail.com"}},
|
||||
{"pk": 424, "model": "group.rolehistory", "fields": {"person": 109800, "group": 195, "name": "chair", "email": "jouni.korhonen@nsn.com"}},
|
||||
{"pk": 425, "model": "group.rolehistory", "fields": {"person": 2097, "group": 196, "name": "chair", "email": "lear@cisco.com"}},
|
||||
{"pk": 426, "model": "group.rolehistory", "fields": {"person": 5797, "group": 196, "name": "chair", "email": "smb@cs.columbia.edu"}},
|
||||
{"pk": 427, "model": "group.rolehistory", "fields": {"person": 107292, "group": 197, "name": "liaiman", "email": "tsbsg2@itu.int"}},
|
||||
{"pk": 428, "model": "group.rolehistory", "fields": {"person": 106224, "group": 197, "name": "liaiman", "email": "mmorrow@cisco.com"}},
|
||||
{"pk": 429, "model": "group.rolehistory", "fields": {"person": 106842, "group": 198, "name": "chair", "email": "msk@cloudmark.com"}},
|
||||
{"pk": 430, "model": "group.rolehistory", "fields": {"person": 100454, "group": 200, "name": "chair", "email": "olaf@nlnetlabs.nl"}},
|
||||
{"pk": 431, "model": "group.rolehistory", "fields": {"person": 106842, "group": 200, "name": "chair", "email": "msk@cloudmark.com"}},
|
||||
{"pk": 432, "model": "group.rolehistory", "fields": {"person": 100454, "group": 201, "name": "chair", "email": "olaf@nlnetlabs.nl"}},
|
||||
{"pk": 433, "model": "group.rolehistory", "fields": {"person": 102154, "group": 202, "name": "chair", "email": "alexey.melnikov@isode.com"}},
|
||||
{"pk": 434, "model": "group.rolehistory", "fields": {"person": 106842, "group": 202, "name": "chair", "email": "msk@cloudmark.com"}},
|
||||
{"pk": 435, "model": "group.rolehistory", "fields": {"person": 102154, "group": 203, "name": "chair", "email": "alexey.melnikov@isode.com"}},
|
||||
{"pk": 436, "model": "group.rolehistory", "fields": {"person": 112772, "group": 204, "name": "auth", "email": "zhiyuan.hu@alcatel-sbell.com.cn"}},
|
||||
{"pk": 437, "model": "group.rolehistory", "fields": {"person": 112613, "group": 204, "name": "auth", "email": "jerry.shih@att.com"}},
|
||||
{"pk": 438, "model": "group.rolehistory", "fields": {"person": 113064, "group": 204, "name": "auth", "email": "thierry.berisot@telekom.de"}},
|
||||
{"pk": 439, "model": "group.rolehistory", "fields": {"person": 113067, "group": 204, "name": "auth", "email": "laurentwalter.goix@telecomitalia.it"}},
|
||||
{"pk": 440, "model": "group.rolehistory", "fields": {"person": 106842, "group": 204, "name": "liaiman", "email": "msk@cloudmark.com"}},
|
||||
{"pk": 441, "model": "group.rolehistory", "fields": {"person": 112772, "group": 205, "name": "auth", "email": "zhiyuan.hu@alcatel-sbell.com.cn"}},
|
||||
{"pk": 442, "model": "group.rolehistory", "fields": {"person": 112613, "group": 205, "name": "auth", "email": "jerry.shih@att.com"}},
|
||||
{"pk": 443, "model": "group.rolehistory", "fields": {"person": 113064, "group": 205, "name": "auth", "email": "thierry.berisot@telekom.de"}},
|
||||
{"pk": 444, "model": "group.rolehistory", "fields": {"person": 113067, "group": 205, "name": "auth", "email": "laurentwalter.goix@telecomitalia.it"}},
|
||||
{"pk": 445, "model": "group.rolehistory", "fields": {"person": 106987, "group": 206, "name": "chair", "email": "br@brianrosen.net"}},
|
||||
{"pk": 446, "model": "group.rolehistory", "fields": {"person": 18321, "group": 207, "name": "chair", "email": "presnick@qualcomm.com"}},
|
||||
{"pk": 447, "model": "group.rolehistory", "fields": {"person": 105907, "group": 207, "name": "chair", "email": "stpeter@stpeter.im"}},
|
||||
{"pk": 448, "model": "group.rolehistory", "fields": {"person": 18321, "group": 208, "name": "chair", "email": "presnick@qualcomm.com"}},
|
||||
{"pk": 449, "model": "group.rolehistory", "fields": {"person": 105907, "group": 208, "name": "chair", "email": "stpeter@stpeter.im"}},
|
||||
{"pk": 450, "model": "group.rolehistory", "fields": {"person": 21684, "group": 208, "name": "chair", "email": "barryleiba@computer.org"}},
|
||||
{"pk": 451, "model": "group.rolehistory", "fields": {"person": 110856, "group": 209, "name": "chair", "email": "wes@mti-systems.com"}},
|
||||
{"pk": 452, "model": "group.rolehistory", "fields": {"person": 17253, "group": 209, "name": "chair", "email": "ietfdbh@comcast.net"}},
|
||||
{"pk": 453, "model": "group.rolehistory", "fields": {"person": 110856, "group": 210, "name": "chair", "email": "wes@mti-systems.com"}},
|
||||
{"pk": 454, "model": "group.rolehistory", "fields": {"person": 17253, "group": 210, "name": "chair", "email": "ietfdbh@comcast.net"}},
|
||||
{"pk": 455, "model": "group.rolehistory", "fields": {"person": 105519, "group": 210, "name": "chair", "email": "martin.stiemerling@neclab.eu"}},
|
||||
{"pk": 456, "model": "group.rolehistory", "fields": {"person": 6699, "group": 211, "name": "chair", "email": "dromasca@avaya.com"}},
|
||||
{"pk": 457, "model": "group.rolehistory", "fields": {"person": 101568, "group": 211, "name": "chair", "email": "rbonica@juniper.net"}},
|
||||
{"pk": 458, "model": "group.rolehistory", "fields": {"person": 6699, "group": 212, "name": "chair", "email": "dromasca@avaya.com"}},
|
||||
{"pk": 459, "model": "group.rolehistory", "fields": {"person": 101568, "group": 212, "name": "chair", "email": "rbonica@juniper.net"}},
|
||||
{"pk": 460, "model": "group.rolehistory", "fields": {"person": 105682, "group": 212, "name": "chair", "email": "bclaise@cisco.com"}},
|
||||
{"pk": 461, "model": "group.rolehistory", "fields": {"person": 112611, "group": 213, "name": "chair", "email": "eckelcu@cisco.com"}},
|
||||
{"pk": 462, "model": "group.rolehistory", "fields": {"person": 107520, "group": 213, "name": "chair", "email": "shida@ntt-at.com"}},
|
||||
{"pk": 463, "model": "group.rolehistory", "fields": {"person": 6699, "group": 214, "name": "chair", "email": "dromasca@avaya.com"}},
|
||||
{"pk": 464, "model": "group.rolehistory", "fields": {"person": 112611, "group": 214, "name": "chair", "email": "eckelcu@cisco.com"}},
|
||||
{"pk": 465, "model": "group.rolehistory", "fields": {"person": 107520, "group": 214, "name": "chair", "email": "shida@ntt-at.com"}},
|
||||
{"pk": 466, "model": "group.rolehistory", "fields": {"person": 2097, "group": 216, "name": "chair", "email": "lear@cisco.com"}},
|
||||
{"pk": 467, "model": "group.rolehistory", "fields": {"person": 5797, "group": 216, "name": "chair", "email": "smb@cs.columbia.edu"}},
|
||||
{"pk": 468, "model": "group.rolehistory", "fields": {"person": 5797, "group": 217, "name": "chair", "email": "smb@cs.columbia.edu"}},
|
||||
{"pk": 469, "model": "group.rolehistory", "fields": {"person": 110406, "group": 219, "name": "chair", "email": "leifj@sunet.se"}},
|
||||
{"pk": 470, "model": "group.rolehistory", "fields": {"person": 113270, "group": 220, "name": "chair", "email": "moransar@cisco.com"}},
|
||||
{"pk": 471, "model": "group.rolehistory", "fields": {"person": 110406, "group": 220, "name": "chair", "email": "leifj@sunet.se"}},
|
||||
{"pk": 472, "model": "group.rolehistory", "fields": {"person": 101214, "group": 221, "name": "chair", "email": "Rajeev.Koodli@gmail.com"}},
|
||||
{"pk": 473, "model": "group.rolehistory", "fields": {"person": 106412, "group": 221, "name": "chair", "email": "suresh.krishnan@ericsson.com"}},
|
||||
{"pk": 474, "model": "group.rolehistory", "fields": {"person": 113270, "group": 222, "name": "chair", "email": "moransar@cisco.com"}},
|
||||
{"pk": 475, "model": "group.rolehistory", "fields": {"person": 110406, "group": 222, "name": "chair", "email": "leifj@sunet.se"}},
|
||||
{"pk": 476, "model": "group.rolehistory", "fields": {"person": 110636, "group": 223, "name": "chair", "email": "michael.scharf@alcatel-lucent.com"}},
|
||||
{"pk": 477, "model": "group.rolehistory", "fields": {"person": 15951, "group": 223, "name": "chair", "email": "nishida@sfc.wide.ad.jp"}},
|
||||
{"pk": 478, "model": "group.rolehistory", "fields": {"person": 109321, "group": 223, "name": "chair", "email": "pasi.sarolahti@iki.fi"}},
|
||||
{"pk": 479, "model": "group.rolehistory", "fields": {"person": 107415, "group": 224, "name": "techadv", "email": "xing@cernet.edu.cn"}},
|
||||
{"pk": 480, "model": "group.rolehistory", "fields": {"person": 105328, "group": 224, "name": "chair", "email": "adurand@juniper.net"}},
|
||||
{"pk": 481, "model": "group.rolehistory", "fields": {"person": 108848, "group": 224, "name": "chair", "email": "cuiyong@tsinghua.edu.cn"}},
|
||||
{"pk": 482, "model": "group.rolehistory", "fields": {"person": 100038, "group": 225, "name": "chair", "email": "dwing@cisco.com"}},
|
||||
{"pk": 483, "model": "group.rolehistory", "fields": {"person": 15927, "group": 225, "name": "chair", "email": "dthaler@microsoft.com"}},
|
||||
{"pk": 484, "model": "group.rolehistory", "fields": {"person": 22933, "group": 226, "name": "chair", "email": "chopps@rawdofmt.org"}},
|
||||
{"pk": 485, "model": "group.rolehistory", "fields": {"person": 23057, "group": 226, "name": "chair", "email": "dward@cisco.com"}},
|
||||
{"pk": 486, "model": "group.rolehistory", "fields": {"person": 100038, "group": 232, "name": "chair", "email": "dwing@cisco.com"}},
|
||||
{"pk": 487, "model": "group.rolehistory", "fields": {"person": 15927, "group": 232, "name": "chair", "email": "dthaler@microsoft.com"}},
|
||||
{"pk": 488, "model": "group.rolehistory", "fields": {"person": 110406, "group": 233, "name": "techadv", "email": "leifj@sunet.se"}},
|
||||
{"pk": 489, "model": "group.rolehistory", "fields": {"person": 21097, "group": 233, "name": "chair", "email": "spencer.shepler@gmail.com"}},
|
||||
{"pk": 490, "model": "group.rolehistory", "fields": {"person": 18587, "group": 233, "name": "chair", "email": "beepy@netapp.com"}},
|
||||
{"pk": 491, "model": "group.rolehistory", "fields": {"person": 107998, "group": 234, "name": "chair", "email": "philip.eardley@bt.com"}},
|
||||
{"pk": 492, "model": "group.rolehistory", "fields": {"person": 15951, "group": 234, "name": "chair", "email": "nishida@sfc.wide.ad.jp"}},
|
||||
{"pk": 493, "model": "group.rolehistory", "fields": {"person": 113270, "group": 235, "name": "chair", "email": "moransar@cisco.com"}},
|
||||
{"pk": 494, "model": "group.rolehistory", "fields": {"person": 110406, "group": 235, "name": "chair", "email": "leifj@sunet.se"}},
|
||||
{"pk": 495, "model": "group.rolehistory", "fields": {"person": 107415, "group": 238, "name": "techadv", "email": "xing@cernet.edu.cn"}},
|
||||
{"pk": 496, "model": "group.rolehistory", "fields": {"person": 108848, "group": 238, "name": "chair", "email": "cuiyong@tsinghua.edu.cn"}},
|
||||
{"pk": 497, "model": "group.rolehistory", "fields": {"person": 102154, "group": 243, "name": "chair", "email": "alexey.melnikov@isode.com"}},
|
||||
{"pk": 498, "model": "group.rolehistory", "fields": {"person": 106842, "group": 243, "name": "chair", "email": "superuser@gmail.com"}},
|
||||
{"pk": 499, "model": "group.rolehistory", "fields": {"person": 102154, "group": 245, "name": "chair", "email": "alexey.melnikov@isode.com"}},
|
||||
{"pk": 500, "model": "group.rolehistory", "fields": {"person": 4397, "group": 245, "name": "chair", "email": "ned.freed@mrochek.com"}},
|
||||
{"pk": 501, "model": "group.rolehistory", "fields": {"person": 111086, "group": 246, "name": "chair", "email": "ldunbar@huawei.com"}},
|
||||
{"pk": 502, "model": "group.rolehistory", "fields": {"person": 112438, "group": 246, "name": "chair", "email": "bschlies@cisco.com"}},
|
||||
{"pk": 503, "model": "group.rolehistory", "fields": {"person": 111086, "group": 247, "name": "chair", "email": "ldunbar@huawei.com"}},
|
||||
{"pk": 504, "model": "group.rolehistory", "fields": {"person": 101568, "group": 248, "name": "techadv", "email": "rbonica@juniper.net"}},
|
||||
{"pk": 505, "model": "group.rolehistory", "fields": {"person": 105786, "group": 248, "name": "chair", "email": "matthew.bocci@alcatel-lucent.com"}},
|
||||
{"pk": 506, "model": "group.rolehistory", "fields": {"person": 112438, "group": 248, "name": "chair", "email": "bschlies@cisco.com"}},
|
||||
{"pk": 507, "model": "group.rolehistory", "fields": {"person": 101568, "group": 249, "name": "techadv", "email": "rbonica@juniper.net"}},
|
||||
{"pk": 508, "model": "group.rolehistory", "fields": {"person": 105786, "group": 249, "name": "chair", "email": "matthew.bocci@alcatel-lucent.com"}},
|
||||
{"pk": 509, "model": "group.rolehistory", "fields": {"person": 112438, "group": 249, "name": "chair", "email": "bschlies@cisco.com"}},
|
||||
{"pk": 510, "model": "group.rolehistory", "fields": {"person": 112438, "group": 249, "name": "chair", "email": "bensons@queuefull.net"}},
|
||||
{"pk": 511, "model": "group.rolehistory", "fields": {"person": 102154, "group": 250, "name": "chair", "email": "alexey.melnikov@isode.com"}},
|
||||
{"pk": 512, "model": "group.rolehistory", "fields": {"person": 4397, "group": 250, "name": "chair", "email": "ned.freed@mrochek.com"}},
|
||||
{"pk": 513, "model": "group.rolehistory", "fields": {"person": 104331, "group": 251, "name": "chair", "email": "gorry@erg.abdn.ac.uk"}},
|
||||
{"pk": 514, "model": "group.rolehistory", "fields": {"person": 104267, "group": 251, "name": "chair", "email": "jmpolk@cisco.com"}},
|
||||
{"pk": 515, "model": "group.rolehistory", "fields": {"person": 106842, "group": 252, "name": "chair", "email": "superuser@gmail.com"}},
|
||||
{"pk": 516, "model": "group.rolehistory", "fields": {"person": 107491, "group": 254, "name": "chair", "email": "Salvatore.Loreto@ericsson.com"}},
|
||||
{"pk": 517, "model": "group.rolehistory", "fields": {"person": 102154, "group": 254, "name": "chair", "email": "alexey.melnikov@isode.com"}},
|
||||
{"pk": 518, "model": "group.rolehistory", "fields": {"person": 106842, "group": 254, "name": "chair", "email": "superuser@gmail.com"}},
|
||||
{"pk": 519, "model": "group.rolehistory", "fields": {"person": 20209, "group": 256, "name": "chair", "email": "csp@csperkins.org"}},
|
||||
{"pk": 520, "model": "group.rolehistory", "fields": {"person": 113031, "group": 257, "name": "auth", "email": "gunilla.berndtsson@ericsson.com"}},
|
||||
{"pk": 521, "model": "group.rolehistory", "fields": {"person": 113032, "group": 257, "name": "auth", "email": "catherine.quinquis@orange.com"}},
|
||||
{"pk": 522, "model": "group.rolehistory", "fields": {"person": 2324, "group": 260, "name": "chair", "email": "sob@harvard.edu"}},
|
||||
{"pk": 523, "model": "group.rolehistory", "fields": {"person": 104807, "group": 260, "name": "chair", "email": "ietf@cdl.asgaard.org"}},
|
||||
{"pk": 524, "model": "group.rolehistory", "fields": {"person": 101104, "group": 260, "name": "chair", "email": "melinda.shore@gmail.com"}},
|
||||
{"pk": 525, "model": "group.rolehistory", "fields": {"person": 2324, "group": 261, "name": "chair", "email": "sob@harvard.edu"}},
|
||||
{"pk": 526, "model": "group.rolehistory", "fields": {"person": 101104, "group": 261, "name": "chair", "email": "melinda.shore@gmail.com"}},
|
||||
{"pk": 527, "model": "group.rolehistory", "fields": {"person": 108295, "group": 263, "name": "chair", "email": "mlepinski@gmail.com"}},
|
||||
{"pk": 528, "model": "group.rolehistory", "fields": {"person": 105097, "group": 265, "name": "chair", "email": "drage@alcatel-lucent.com"}},
|
||||
{"pk": 529, "model": "group.rolehistory", "fields": {"person": 110842, "group": 265, "name": "chair", "email": "gsalguei@cisco.com"}},
|
||||
{"pk": 530, "model": "group.rolehistory", "fields": {"person": 110842, "group": 266, "name": "chair", "email": "gsalguei@cisco.com"}},
|
||||
{"pk": 531, "model": "group.rolehistory", "fields": {"person": 110721, "group": 268, "name": "chair", "email": "ted.ietf@gmail.com"}},
|
||||
{"pk": 532, "model": "group.rolehistory", "fields": {"person": 106412, "group": 269, "name": "chair", "email": "nomcom-chair@ietf.org"}},
|
||||
{"pk": 533, "model": "group.rolehistory", "fields": {"person": 104331, "group": 270, "name": "chair", "email": "gorry@erg.abdn.ac.uk"}},
|
||||
{"pk": 534, "model": "group.rolehistory", "fields": {"person": 104267, "group": 270, "name": "chair", "email": "jmpolk@cisco.com"}},
|
||||
{"pk": 535, "model": "group.rolehistory", "fields": {"person": 110070, "group": 270, "name": "chair", "email": "rolf.winter@neclab.eu"}},
|
||||
{"pk": 536, "model": "group.rolehistory", "fields": {"person": 106186, "group": 271, "name": "chair", "email": "julien.ietf@gmail.com"}},
|
||||
{"pk": 537, "model": "group.rolehistory", "fields": {"person": 106412, "group": 271, "name": "chair", "email": "suresh.krishnan@ericsson.com"}},
|
||||
{"pk": 538, "model": "group.rolehistory", "fields": {"person": 105519, "group": 272, "name": "techadv", "email": "martin.stiemerling@neclab.eu"}},
|
||||
{"pk": 539, "model": "group.rolehistory", "fields": {"person": 19869, "group": 272, "name": "chair", "email": "Marc.Blanchet@viagenie.ca"}},
|
||||
{"pk": 540, "model": "group.rolehistory", "fields": {"person": 2329, "group": 272, "name": "techadv", "email": "stbryant@cisco.com"}},
|
||||
{"pk": 541, "model": "group.rolehistory", "fields": {"person": 2853, "group": 272, "name": "techadv", "email": "fred@cisco.com"}},
|
||||
{"pk": 542, "model": "group.rolehistory", "fields": {"person": 112160, "group": 272, "name": "chair", "email": "wesley.george@twcable.com"}},
|
||||
{"pk": 543, "model": "group.rolehistory", "fields": {"person": 107923, "group": 273, "name": "chair", "email": "christer.holmberg@ericsson.com"}},
|
||||
{"pk": 544, "model": "group.rolehistory", "fields": {"person": 108963, "group": 273, "name": "chair", "email": "vpascual@acmepacket.com"}},
|
||||
{"pk": 545, "model": "group.rolehistory", "fields": {"person": 2324, "group": 275, "name": "chair", "email": "sob@harvard.edu"}},
|
||||
{"pk": 546, "model": "group.rolehistory", "fields": {"person": 106638, "group": 275, "name": "chair", "email": "slblake@petri-meat.com"}},
|
||||
{"pk": 547, "model": "group.rolehistory", "fields": {"person": 105728, "group": 276, "name": "chair", "email": "gurtov@cs.helsinki.fi"}},
|
||||
{"pk": 548, "model": "group.rolehistory", "fields": {"person": 107003, "group": 276, "name": "chair", "email": "thomas.r.henderson@boeing.com"}},
|
||||
{"pk": 549, "model": "group.rolehistory", "fields": {"person": 106745, "group": 277, "name": "secr", "email": "ynir@checkpoint.com"}},
|
||||
{"pk": 550, "model": "group.rolehistory", "fields": {"person": 19483, "group": 277, "name": "techadv", "email": "turners@ieca.com"}},
|
||||
{"pk": 551, "model": "group.rolehistory", "fields": {"person": 106405, "group": 277, "name": "chair", "email": "tobias.gondrom@gondrom.org"}},
|
||||
{"pk": 552, "model": "group.rolehistory", "fields": {"person": 102154, "group": 277, "name": "chair", "email": "alexey.melnikov@isode.com"}},
|
||||
{"pk": 553, "model": "group.rolehistory", "fields": {"person": 110910, "group": 279, "name": "chair", "email": "ietf@augustcellars.com"}},
|
||||
{"pk": 554, "model": "group.rolehistory", "fields": {"person": 6771, "group": 279, "name": "chair", "email": "tony@att.com"}},
|
||||
{"pk": 555, "model": "group.rolehistory", "fields": {"person": 110910, "group": 280, "name": "chair", "email": "ietf@augustcellars.com"}},
|
||||
{"pk": 556, "model": "group.rolehistory", "fields": {"person": 4857, "group": 280, "name": "chair", "email": "odonoghue@isoc.org"}},
|
||||
{"pk": 557, "model": "group.rolehistory", "fields": {"person": 6771, "group": 280, "name": "chair", "email": "tony@att.com"}},
|
||||
{"pk": 558, "model": "group.rolehistory", "fields": {"person": 106988, "group": 281, "name": "chair", "email": "glenzorn@gmail.com"}},
|
||||
{"pk": 559, "model": "group.rolehistory", "fields": {"person": 107598, "group": 281, "name": "chair", "email": "tena@huawei.com"}},
|
||||
{"pk": 560, "model": "group.rolehistory", "fields": {"person": 112773, "group": 283, "name": "chair", "email": "lars@netapp.com"}},
|
||||
{"pk": 561, "model": "group.rolehistory", "fields": {"person": 112773, "group": 284, "name": "chair", "email": "lars@netapp.com"}},
|
||||
{"pk": 562, "model": "group.rolehistory", "fields": {"person": 21072, "group": 284, "name": "atlarge", "email": "jari.arkko@piuha.net"}},
|
||||
{"pk": 563, "model": "group.rolehistory", "fields": {"person": 112773, "group": 285, "name": "chair", "email": "lars@netapp.com"}},
|
||||
{"pk": 564, "model": "group.rolehistory", "fields": {"person": 21072, "group": 285, "name": "atlarge", "email": "jari.arkko@piuha.net"}},
|
||||
{"pk": 565, "model": "group.rolehistory", "fields": {"person": 20580, "group": 285, "name": "atlarge", "email": "mallman@icir.org"}},
|
||||
{"pk": 566, "model": "group.rolehistory", "fields": {"person": 112773, "group": 286, "name": "chair", "email": "lars@netapp.com"}},
|
||||
{"pk": 567, "model": "group.rolehistory", "fields": {"person": 21072, "group": 286, "name": "atlarge", "email": "jari.arkko@piuha.net"}},
|
||||
{"pk": 568, "model": "group.rolehistory", "fields": {"person": 20580, "group": 286, "name": "atlarge", "email": "mallman@icir.org"}},
|
||||
{"pk": 569, "model": "group.rolehistory", "fields": {"person": 107190, "group": 286, "name": "chair", "email": "spencer@wonderhamster.org"}},
|
||||
{"pk": 570, "model": "group.rolehistory", "fields": {"person": 112773, "group": 287, "name": "chair", "email": "lars@netapp.com"}},
|
||||
{"pk": 571, "model": "group.rolehistory", "fields": {"person": 21072, "group": 287, "name": "atlarge", "email": "jari.arkko@piuha.net"}},
|
||||
{"pk": 572, "model": "group.rolehistory", "fields": {"person": 20580, "group": 287, "name": "atlarge", "email": "mallman@icir.org"}},
|
||||
{"pk": 573, "model": "group.rolehistory", "fields": {"person": 107190, "group": 287, "name": "chair", "email": "spencer@wonderhamster.org"}},
|
||||
{"pk": 574, "model": "group.rolehistory", "fields": {"person": 21226, "group": 287, "name": "chair", "email": "falk@bbn.com"}},
|
||||
{"pk": 575, "model": "group.rolehistory", "fields": {"person": 112773, "group": 288, "name": "chair", "email": "lars@netapp.com"}},
|
||||
{"pk": 576, "model": "group.rolehistory", "fields": {"person": 21072, "group": 288, "name": "atlarge", "email": "jari.arkko@piuha.net"}},
|
||||
{"pk": 577, "model": "group.rolehistory", "fields": {"person": 20580, "group": 288, "name": "atlarge", "email": "mallman@icir.org"}},
|
||||
{"pk": 578, "model": "group.rolehistory", "fields": {"person": 21226, "group": 288, "name": "chair", "email": "falk@bbn.com"}},
|
||||
{"pk": 579, "model": "group.rolehistory", "fields": {"person": 112773, "group": 289, "name": "chair", "email": "lars@netapp.com"}},
|
||||
{"pk": 580, "model": "group.rolehistory", "fields": {"person": 21072, "group": 289, "name": "atlarge", "email": "jari.arkko@piuha.net"}},
|
||||
{"pk": 581, "model": "group.rolehistory", "fields": {"person": 20580, "group": 289, "name": "atlarge", "email": "mallman@icir.org"}},
|
||||
{"pk": 582, "model": "group.rolehistory", "fields": {"person": 112773, "group": 290, "name": "chair", "email": "lars@netapp.com"}},
|
||||
{"pk": 583, "model": "group.rolehistory", "fields": {"person": 21072, "group": 290, "name": "atlarge", "email": "jari.arkko@piuha.net"}},
|
||||
{"pk": 584, "model": "group.rolehistory", "fields": {"person": 20580, "group": 290, "name": "atlarge", "email": "mallman@icir.org"}},
|
||||
{"pk": 585, "model": "group.rolehistory", "fields": {"person": 107190, "group": 290, "name": "atlarge", "email": "spencer@wonderhamster.org"}},
|
||||
{"pk": 586, "model": "group.rolehistory", "fields": {"person": 10083, "group": 291, "name": "chair", "email": "paul.hoffman@vpnc.org"}},
|
||||
{"pk": 587, "model": "group.rolehistory", "fields": {"person": 104278, "group": 291, "name": "chair", "email": "yaronf.ietf@gmail.com"}},
|
||||
{"pk": 588, "model": "group.rolehistory", "fields": {"person": 20209, "group": 292, "name": "chair", "email": "csp@csperkins.org"}},
|
||||
{"pk": 589, "model": "group.rolehistory", "fields": {"person": 103877, "group": 292, "name": "chair", "email": "michawe@ifi.uio.no"}},
|
||||
{"pk": 590, "model": "group.rolehistory", "fields": {"person": 109800, "group": 295, "name": "chair", "email": "jouni.korhonen@nsn.com"}},
|
||||
{"pk": 591, "model": "group.rolehistory", "fields": {"person": 107737, "group": 295, "name": "chair", "email": "lionel.morand@orange.com"}},
|
||||
{"pk": 592, "model": "group.rolehistory", "fields": {"person": 100754, "group": 296, "name": "secr", "email": "tom.taylor.stds@gmail.com"}},
|
||||
{"pk": 593, "model": "group.rolehistory", "fields": {"person": 105873, "group": 296, "name": "chair", "email": "even.roni@huawei.com"}},
|
||||
{"pk": 594, "model": "group.rolehistory", "fields": {"person": 104294, "group": 296, "name": "chair", "email": "magnus.westerlund@ericsson.com"}},
|
||||
{"pk": 595, "model": "group.rolehistory", "fields": {"person": 100754, "group": 297, "name": "secr", "email": "tom.taylor.stds@gmail.com"}},
|
||||
{"pk": 596, "model": "group.rolehistory", "fields": {"person": 104294, "group": 297, "name": "chair", "email": "magnus.westerlund@ericsson.com"}},
|
||||
{"pk": 597, "model": "group.rolehistory", "fields": {"person": 108368, "group": 298, "name": "chair", "email": "abegen@cisco.com"}},
|
||||
{"pk": 598, "model": "group.rolehistory", "fields": {"person": 105873, "group": 298, "name": "chair", "email": "even.roni@huawei.com"}},
|
||||
{"pk": 599, "model": "group.rolehistory", "fields": {"person": 108368, "group": 299, "name": "chair", "email": "abegen@cisco.com"}},
|
||||
{"pk": 600, "model": "group.rolehistory", "fields": {"person": 109800, "group": 300, "name": "chair", "email": "jouni.korhonen@nsn.com"}},
|
||||
{"pk": 601, "model": "group.rolehistory", "fields": {"person": 107737, "group": 300, "name": "chair", "email": "lionel.morand@orange.com"}},
|
||||
{"pk": 602, "model": "group.rolehistory", "fields": {"person": 109800, "group": 301, "name": "chair", "email": "jouni.korhonen@nsn.com"}},
|
||||
{"pk": 603, "model": "group.rolehistory", "fields": {"person": 107737, "group": 301, "name": "chair", "email": "lionel.morand@orange.com"}},
|
||||
{"pk": 604, "model": "group.rolehistory", "fields": {"person": 109800, "group": 302, "name": "chair", "email": "jouni.korhonen@nsn.com"}},
|
||||
{"pk": 605, "model": "group.rolehistory", "fields": {"person": 107737, "group": 302, "name": "chair", "email": "lionel.morand@orange.com"}},
|
||||
{"pk": 606, "model": "group.rolehistory", "fields": {"person": 109802, "group": 308, "name": "chair", "email": "alvaro.retana@hp.com"}},
|
||||
{"pk": 607, "model": "group.rolehistory", "fields": {"person": 106742, "group": 308, "name": "chair", "email": "akatlas@gmail.com"}},
|
||||
{"pk": 608, "model": "group.rolehistory", "fields": {"person": 106742, "group": 309, "name": "chair", "email": "akatlas@gmail.com"}},
|
||||
{"pk": 609, "model": "group.rolehistory", "fields": {"person": 108081, "group": 311, "name": "secr", "email": "junbi@tsinghua.edu.cn"}},
|
||||
{"pk": 610, "model": "group.rolehistory", "fields": {"person": 107482, "group": 311, "name": "techadv", "email": "jianping@cernet.edu.cn"}},
|
||||
{"pk": 611, "model": "group.rolehistory", "fields": {"person": 108428, "group": 311, "name": "chair", "email": "jeanmichel.combes@gmail.com"}},
|
||||
{"pk": 612, "model": "group.rolehistory", "fields": {"person": 108396, "group": 311, "name": "chair", "email": "christian.vogt@ericsson.com"}},
|
||||
{"pk": 613, "model": "group.rolehistory", "fields": {"person": 103881, "group": 315, "name": "chair", "email": "mnot@pobox.com"}},
|
||||
{"pk": 614, "model": "group.rolehistory", "fields": {"person": 19790, "group": 316, "name": "techadv", "email": "tim.polk@nist.gov"}},
|
||||
{"pk": 615, "model": "group.rolehistory", "fields": {"person": 6842, "group": 316, "name": "chair", "email": "bertietf@bwijnen.net"}},
|
||||
{"pk": 616, "model": "group.rolehistory", "fields": {"person": 105537, "group": 316, "name": "chair", "email": "mehmet.ersue@nsn.com"}},
|
||||
{"pk": 617, "model": "group.rolehistory", "fields": {"person": 105791, "group": 317, "name": "chair", "email": "fluffy@iii.ca"}},
|
||||
{"pk": 618, "model": "group.rolehistory", "fields": {"person": 11843, "group": 317, "name": "chair", "email": "cabo@tzi.org"}},
|
||||
{"pk": 619, "model": "group.rolehistory", "fields": {"person": 100754, "group": 318, "name": "secr", "email": "tom.taylor.stds@gmail.com"}},
|
||||
{"pk": 620, "model": "group.rolehistory", "fields": {"person": 105097, "group": 318, "name": "chair", "email": "keith.drage@alcatel-lucent.com"}},
|
||||
{"pk": 621, "model": "group.rolehistory", "fields": {"person": 105873, "group": 318, "name": "chair", "email": "even.roni@huawei.com"}},
|
||||
{"pk": 622, "model": "group.rolehistory", "fields": {"person": 100754, "group": 319, "name": "secr", "email": "tom.taylor.stds@gmail.com"}},
|
||||
{"pk": 623, "model": "group.rolehistory", "fields": {"person": 105097, "group": 319, "name": "chair", "email": "keith.drage@alcatel-lucent.com"}},
|
||||
{"pk": 624, "model": "group.rolehistory", "fields": {"person": 19790, "group": 322, "name": "techadv", "email": "tim.polk@nist.gov"}},
|
||||
{"pk": 625, "model": "group.rolehistory", "fields": {"person": 6842, "group": 322, "name": "chair", "email": "bertietf@bwijnen.net"}},
|
||||
{"pk": 626, "model": "group.rolehistory", "fields": {"person": 105537, "group": 322, "name": "chair", "email": "mehmet.ersue@nsn.com"}},
|
||||
{"pk": 627, "model": "group.rolehistory", "fields": {"person": 19790, "group": 326, "name": "techadv", "email": "tim.polk@nist.gov"}},
|
||||
{"pk": 628, "model": "group.rolehistory", "fields": {"person": 6842, "group": 326, "name": "chair", "email": "bertietf@bwijnen.net"}},
|
||||
{"pk": 629, "model": "group.rolehistory", "fields": {"person": 105537, "group": 326, "name": "chair", "email": "mehmet.ersue@nsn.com"}},
|
||||
{"pk": 630, "model": "group.rolehistory", "fields": {"person": 19790, "group": 327, "name": "techadv", "email": "tim.polk@nist.gov"}},
|
||||
{"pk": 631, "model": "group.rolehistory", "fields": {"person": 6842, "group": 327, "name": "chair", "email": "bertietf@bwijnen.net"}},
|
||||
{"pk": 632, "model": "group.rolehistory", "fields": {"person": 105537, "group": 327, "name": "chair", "email": "mehmet.ersue@nsn.com"}},
|
||||
{"pk": 633, "model": "group.rolehistory", "fields": {"person": 103881, "group": 328, "name": "chair", "email": "mnot@pobox.com"}},
|
||||
{"pk": 634, "model": "group.rolehistory", "fields": {"person": 103881, "group": 329, "name": "chair", "email": "mnot@pobox.com"}},
|
||||
{"pk": 635, "model": "group.rolehistory", "fields": {"person": 107729, "group": 330, "name": "liaiman", "email": "Eric.Gray@Ericsson.com"}},
|
||||
{"pk": 636, "model": "group.rolehistory", "fields": {"person": 107599, "group": 330, "name": "auth", "email": "tony@jeffree.co.uk"}},
|
||||
{"pk": 637, "model": "group.rolehistory", "fields": {"person": 106897, "group": 331, "name": "techadv", "email": "stewe@stewe.org"}},
|
||||
{"pk": 638, "model": "group.rolehistory", "fields": {"person": 105791, "group": 331, "name": "chair", "email": "fluffy@iii.ca"}},
|
||||
{"pk": 639, "model": "group.rolehistory", "fields": {"person": 2250, "group": 331, "name": "chair", "email": "jdrosen@jdrosen.net"}},
|
||||
{"pk": 640, "model": "group.rolehistory", "fields": {"person": 102154, "group": 332, "name": "techadv", "email": "alexey.melnikov@isode.com"}},
|
||||
{"pk": 641, "model": "group.rolehistory", "fields": {"person": 109430, "group": 332, "name": "chair", "email": "haibin.song@huawei.com"}},
|
||||
{"pk": 642, "model": "group.rolehistory", "fields": {"person": 2690, "group": 332, "name": "chair", "email": "Richard_Woundy@cable.comcast.com"}},
|
||||
{"pk": 643, "model": "group.rolehistory", "fields": {"person": 2324, "group": 333, "name": "chair", "email": "sob@harvard.edu"}},
|
||||
{"pk": 644, "model": "group.rolehistory", "fields": {"person": 104807, "group": 333, "name": "chair", "email": "christopher.liljenstolpe@bigswitch.com"}},
|
||||
{"pk": 645, "model": "group.rolehistory", "fields": {"person": 101104, "group": 333, "name": "chair", "email": "melinda.shore@gmail.com"}},
|
||||
{"pk": 646, "model": "group.rolehistory", "fields": {"person": 19790, "group": 334, "name": "techadv", "email": "tim.polk@nist.gov"}},
|
||||
{"pk": 647, "model": "group.rolehistory", "fields": {"person": 6842, "group": 334, "name": "chair", "email": "bertietf@bwijnen.net"}},
|
||||
{"pk": 648, "model": "group.rolehistory", "fields": {"person": 105537, "group": 334, "name": "chair", "email": "mehmet.ersue@nsn.com"}},
|
||||
{"pk": 649, "model": "group.rolehistory", "fields": {"person": 19790, "group": 336, "name": "techadv", "email": "tim.polk@nist.gov"}},
|
||||
{"pk": 650, "model": "group.rolehistory", "fields": {"person": 6842, "group": 336, "name": "chair", "email": "bertietf@bwijnen.net"}},
|
||||
{"pk": 651, "model": "group.rolehistory", "fields": {"person": 105537, "group": 336, "name": "chair", "email": "mehmet.ersue@nsn.com"}},
|
||||
{"pk": 652, "model": "group.rolehistory", "fields": {"person": 112773, "group": 338, "name": "chair", "email": "lars@netapp.com"}},
|
||||
{"pk": 653, "model": "group.rolehistory", "fields": {"person": 112330, "group": 338, "name": "chair", "email": "mirja.kuehlewind@ikr.uni-stuttgart.de"}},
|
||||
{"pk": 654, "model": "group.rolehistory", "fields": {"person": 112773, "group": 339, "name": "chair", "email": "lars@netapp.com"}},
|
||||
{"pk": 655, "model": "group.rolehistory", "fields": {"person": 112330, "group": 339, "name": "chair", "email": "mirja.kuehlewind@ikr.uni-stuttgart.de"}},
|
||||
{"pk": 656, "model": "group.rolehistory", "fields": {"person": 18321, "group": 340, "name": "chair", "email": "presnick@qualcomm.com"}},
|
||||
{"pk": 657, "model": "group.rolehistory", "fields": {"person": 21684, "group": 340, "name": "chair", "email": "barryleiba@computer.org"}},
|
||||
{"pk": 658, "model": "group.rolehistory", "fields": {"person": 18321, "group": 341, "name": "chair", "email": "presnick@qualcomm.com"}},
|
||||
{"pk": 659, "model": "group.rolehistory", "fields": {"person": 21684, "group": 341, "name": "chair", "email": "barryleiba@computer.org"}},
|
||||
{"pk": 660, "model": "group.rolehistory", "fields": {"person": 18321, "group": 341, "name": "chair", "email": "presnick@qti.qualcomm.com"}},
|
||||
{"pk": 661, "model": "group.rolehistory", "fields": {"person": 18321, "group": 342, "name": "ad", "email": "presnick@qualcomm.com"}},
|
||||
{"pk": 662, "model": "group.rolehistory", "fields": {"person": 21684, "group": 342, "name": "ad", "email": "barryleiba@computer.org"}},
|
||||
{"pk": 663, "model": "group.rolehistory", "fields": {"person": 18321, "group": 343, "name": "pre-ad", "email": "presnick@qti.qualcomm.com"}},
|
||||
{"pk": 664, "model": "group.rolehistory", "fields": {"person": 18321, "group": 343, "name": "ad", "email": "presnick@qualcomm.com"}},
|
||||
{"pk": 665, "model": "group.rolehistory", "fields": {"person": 21684, "group": 343, "name": "ad", "email": "barryleiba@computer.org"}},
|
||||
{"pk": 666, "model": "group.rolehistory", "fields": {"person": 18321, "group": 344, "name": "pre-ad", "email": "presnick@qti.qualcomm.com"}},
|
||||
{"pk": 667, "model": "group.rolehistory", "fields": {"person": 18321, "group": 344, "name": "ad", "email": "presnick@qualcomm.com"}},
|
||||
{"pk": 668, "model": "group.rolehistory", "fields": {"person": 21684, "group": 344, "name": "ad", "email": "barryleiba@computer.org"}},
|
||||
{"pk": 669, "model": "group.rolehistory", "fields": {"person": 18321, "group": 345, "name": "ad", "email": "presnick@qti.qualcomm.com"}},
|
||||
{"pk": 670, "model": "group.rolehistory", "fields": {"person": 18321, "group": 345, "name": "ad", "email": "presnick@qualcomm.com"}},
|
||||
{"pk": 671, "model": "group.rolehistory", "fields": {"person": 21684, "group": 345, "name": "ad", "email": "barryleiba@computer.org"}},
|
||||
{"pk": 672, "model": "group.rolehistory", "fields": {"person": 2324, "group": 346, "name": "chair", "email": "sob@harvard.edu"}},
|
||||
{"pk": 673, "model": "group.rolehistory", "fields": {"person": 104807, "group": 346, "name": "chair", "email": "christopher.liljenstolpe@bigswitch.com"}},
|
||||
{"pk": 674, "model": "group.rolehistory", "fields": {"person": 101104, "group": 346, "name": "chair", "email": "melinda.shore@gmail.com"}},
|
||||
{"pk": 675, "model": "group.rolehistory", "fields": {"person": 103881, "group": 347, "name": "chair", "email": "mnot@pobox.com"}},
|
||||
{"pk": 676, "model": "group.rolehistory", "fields": {"person": 23057, "group": 349, "name": "chair", "email": "dward@cisco.com"}},
|
||||
{"pk": 677, "model": "group.rolehistory", "fields": {"person": 111584, "group": 354, "name": "chair", "email": "kerlyn@ieee.org"}},
|
||||
{"pk": 678, "model": "group.rolehistory", "fields": {"person": 105992, "group": 356, "name": "chair", "email": "sarikaya@ieee.org"}},
|
||||
{"pk": 679, "model": "group.rolehistory", "fields": {"person": 102154, "group": 358, "name": "chair", "email": "alexey.melnikov@isode.com"}},
|
||||
{"pk": 680, "model": "group.rolehistory", "fields": {"person": 103881, "group": 358, "name": "chair", "email": "mnot@pobox.com"}},
|
||||
{"pk": 681, "model": "group.rolehistory", "fields": {"person": 102154, "group": 359, "name": "chair", "email": "alexey.melnikov@isode.com"}},
|
||||
{"pk": 682, "model": "group.rolehistory", "fields": {"person": 103881, "group": 359, "name": "chair", "email": "mnot@pobox.com"}},
|
||||
{"pk": 683, "model": "group.rolehistory", "fields": {"person": 103881, "group": 360, "name": "chair", "email": "mnot@pobox.com"}},
|
||||
{"pk": 684, "model": "group.rolehistory", "fields": {"person": 8698, "group": 362, "name": "chair", "email": "derek@ihtfp.com"}},
|
||||
{"pk": 685, "model": "group.rolehistory", "fields": {"person": 15448, "group": 365, "name": "chair", "email": "shanna@juniper.net"}},
|
||||
{"pk": 686, "model": "group.rolehistory", "fields": {"person": 2399, "group": 366, "name": "techadv", "email": "dkatz@juniper.net"}},
|
||||
{"pk": 687, "model": "group.rolehistory", "fields": {"person": 23057, "group": 366, "name": "chair", "email": "dward@cisco.com"}},
|
||||
{"pk": 688, "model": "group.rolehistory", "fields": {"person": 105046, "group": 366, "name": "chair", "email": "jhaas@pfrc.org"}},
|
||||
{"pk": 689, "model": "group.rolehistory", "fields": {"person": 103881, "group": 367, "name": "chair", "email": "mnot@pobox.com"}},
|
||||
{"pk": 690, "model": "group.rolehistory", "fields": {"person": 101214, "group": 368, "name": "chair", "email": "rkoodli@cisco.com"}},
|
||||
{"pk": 691, "model": "group.rolehistory", "fields": {"person": 103283, "group": 368, "name": "chair", "email": "basavaraj.patil@nokia.com"}},
|
||||
{"pk": 692, "model": "group.rolehistory", "fields": {"person": 101214, "group": 369, "name": "chair", "email": "rkoodli@cisco.com"}},
|
||||
{"pk": 693, "model": "group.rolehistory", "fields": {"person": 103283, "group": 369, "name": "chair", "email": "basavaraj.patil@nokia.com"}},
|
||||
{"pk": 694, "model": "group.rolehistory", "fields": {"person": 103283, "group": 369, "name": "chair", "email": "bpatil1+ietf@gmail.com"}},
|
||||
{"pk": 695, "model": "group.rolehistory", "fields": {"person": 103881, "group": 370, "name": "chair", "email": "mnot@pobox.com"}},
|
||||
{"pk": 696, "model": "group.rolehistory", "fields": {"person": 102191, "group": 371, "name": "chair", "email": "tlyu@mit.edu"}},
|
||||
{"pk": 697, "model": "group.rolehistory", "fields": {"person": 107956, "group": 371, "name": "chair", "email": "shawn.emery@oracle.com"}},
|
||||
{"pk": 698, "model": "group.rolehistory", "fields": {"person": 102154, "group": 371, "name": "chair", "email": "alexey.melnikov@isode.com"}},
|
||||
{"pk": 699, "model": "group.rolehistory", "fields": {"person": 104978, "group": 372, "name": "chair", "email": "jhutz@cmu.edu"}},
|
||||
{"pk": 700, "model": "group.rolehistory", "fields": {"person": 106376, "group": 372, "name": "chair", "email": "larry.zhu@microsoft.com"}},
|
||||
{"pk": 701, "model": "group.rolehistory", "fields": {"person": 103048, "group": 372, "name": "chair", "email": "hartmans-ietf@mit.edu"}},
|
||||
{"pk": 702, "model": "group.rolehistory", "fields": {"person": 103881, "group": 373, "name": "chair", "email": "mnot@pobox.com"}},
|
||||
{"pk": 703, "model": "group.rolehistory", "fields": {"person": 107729, "group": 374, "name": "liaiman", "email": "Eric.Gray@Ericsson.com"}},
|
||||
{"pk": 704, "model": "group.rolehistory", "fields": {"person": 107599, "group": 374, "name": "auth", "email": "tony@jeffree.co.uk"}},
|
||||
{"pk": 705, "model": "group.rolehistory", "fields": {"person": 114106, "group": 374, "name": "auth", "email": "r.b.marks@ieee.org"}},
|
||||
{"pk": 706, "model": "group.rolehistory", "fields": {"person": 104851, "group": 375, "name": "chair", "email": "Kathleen.Moriarty@emc.com"}},
|
||||
{"pk": 707, "model": "group.rolehistory", "fields": {"person": 113031, "group": 376, "name": "auth", "email": "gunilla.berndtsson@ericsson.com"}},
|
||||
{"pk": 708, "model": "group.rolehistory", "fields": {"person": 113032, "group": 376, "name": "auth", "email": "catherine.quinquis@orange.com"}},
|
||||
{"pk": 709, "model": "group.rolehistory", "fields": {"person": 113672, "group": 376, "name": "auth", "email": "sarah.scott@itu.int"}},
|
||||
{"pk": 710, "model": "group.rolehistory", "fields": {"person": 111584, "group": 377, "name": "chair", "email": "kerlyn@ieee.org"}},
|
||||
{"pk": 711, "model": "group.rolehistory", "fields": {"person": 106462, "group": 378, "name": "editor", "email": "edward.beili@actelis.com"}},
|
||||
{"pk": 712, "model": "group.rolehistory", "fields": {"person": 107067, "group": 378, "name": "editor", "email": "moti.Morgenstern@ecitele.com"}},
|
||||
{"pk": 713, "model": "group.rolehistory", "fields": {"person": 105024, "group": 378, "name": "editor", "email": "scott.baillie@nec.com.au"}},
|
||||
{"pk": 714, "model": "group.rolehistory", "fields": {"person": 107258, "group": 378, "name": "editor", "email": "umberto.bonollo@nec.com.au"}},
|
||||
{"pk": 715, "model": "group.rolehistory", "fields": {"person": 106345, "group": 378, "name": "chair", "email": "Menachem.Dodge@ecitele.com"}},
|
||||
{"pk": 716, "model": "group.rolehistory", "fields": {"person": 106462, "group": 379, "name": "editor", "email": "edward.beili@actelis.com"}},
|
||||
{"pk": 717, "model": "group.rolehistory", "fields": {"person": 107067, "group": 379, "name": "editor", "email": "moti.Morgenstern@ecitele.com"}},
|
||||
{"pk": 718, "model": "group.rolehistory", "fields": {"person": 105024, "group": 379, "name": "editor", "email": "scott.baillie@nec.com.au"}},
|
||||
{"pk": 719, "model": "group.rolehistory", "fields": {"person": 107258, "group": 379, "name": "editor", "email": "umberto.bonollo@nec.com.au"}},
|
||||
{"pk": 720, "model": "group.rolehistory", "fields": {"person": 106199, "group": 380, "name": "secr", "email": "Wassim.Haddad@ericsson.com"}},
|
||||
{"pk": 721, "model": "group.rolehistory", "fields": {"person": 108833, "group": 380, "name": "secr", "email": "luigi@net.t-labs.tu-berlin.de"}},
|
||||
{"pk": 722, "model": "group.rolehistory", "fields": {"person": 108822, "group": 380, "name": "chair", "email": "terry.manderson@icann.org"}},
|
||||
{"pk": 723, "model": "group.rolehistory", "fields": {"person": 3862, "group": 380, "name": "chair", "email": "jmh@joelhalpern.com"}},
|
||||
{"pk": 724, "model": "group.rolehistory", "fields": {"person": 106199, "group": 381, "name": "secr", "email": "Wassim.Haddad@ericsson.com"}},
|
||||
{"pk": 725, "model": "group.rolehistory", "fields": {"person": 108833, "group": 381, "name": "secr", "email": "luigi@net.t-labs.tu-berlin.de"}},
|
||||
{"pk": 726, "model": "group.rolehistory", "fields": {"person": 108822, "group": 381, "name": "chair", "email": "terry.manderson@icann.org"}},
|
||||
{"pk": 727, "model": "group.rolehistory", "fields": {"person": 3862, "group": 381, "name": "chair", "email": "jmh@joelhalpern.com"}},
|
||||
{"pk": 728, "model": "group.rolehistory", "fields": {"person": 108833, "group": 381, "name": "secr", "email": "ggx@gigix.net"}},
|
||||
{"pk": 729, "model": "group.rolehistory", "fields": {"person": 2324, "group": 382, "name": "chair", "email": "sob@harvard.edu"}},
|
||||
{"pk": 730, "model": "group.rolehistory", "fields": {"person": 104807, "group": 382, "name": "chair", "email": "christopher.liljenstolpe@bigswitch.com"}},
|
||||
{"pk": 731, "model": "group.rolehistory", "fields": {"person": 101104, "group": 382, "name": "chair", "email": "melinda.shore@gmail.com"}},
|
||||
{"pk": 732, "model": "group.rolehistory", "fields": {"person": 107956, "group": 384, "name": "chair", "email": "shawn.emery@oracle.com"}},
|
||||
{"pk": 733, "model": "group.rolehistory", "fields": {"person": 111163, "group": 384, "name": "chair", "email": "josh.howlett@ja.net"}},
|
||||
{"pk": 734, "model": "group.rolehistory", "fields": {"person": 103048, "group": 384, "name": "chair", "email": "hartmans-ietf@mit.edu"}},
|
||||
{"pk": 735, "model": "group.rolehistory", "fields": {"person": 107956, "group": 385, "name": "chair", "email": "shawn.emery@oracle.com"}},
|
||||
{"pk": 736, "model": "group.rolehistory", "fields": {"person": 111163, "group": 385, "name": "chair", "email": "josh.howlett@ja.net"}},
|
||||
{"pk": 737, "model": "group.rolehistory", "fields": {"person": 103048, "group": 385, "name": "chair", "email": "hartmans-ietf@mit.edu"}},
|
||||
{"pk": 738, "model": "group.rolehistory", "fields": {"person": 111086, "group": 386, "name": "chair", "email": "ldunbar@huawei.com"}},
|
||||
{"pk": 739, "model": "group.rolehistory", "fields": {"person": 112438, "group": 386, "name": "chair", "email": "bensons@queuefull.net"}},
|
||||
{"pk": 740, "model": "group.rolehistory", "fields": {"person": 105328, "group": 388, "name": "chair", "email": "adurand@juniper.net"}},
|
||||
{"pk": 741, "model": "group.rolehistory", "fields": {"person": 15927, "group": 388, "name": "chair", "email": "dthaler@microsoft.com"}},
|
||||
{"pk": 742, "model": "group.rolehistory", "fields": {"person": 105328, "group": 389, "name": "chair", "email": "adurand@juniper.net"}},
|
||||
{"pk": 743, "model": "group.rolehistory", "fields": {"person": 15927, "group": 389, "name": "chair", "email": "dthaler@microsoft.com"}},
|
||||
{"pk": 744, "model": "group.rolehistory", "fields": {"person": 104985, "group": 389, "name": "chair", "email": "repenno@cisco.com"}},
|
||||
{"pk": 745, "model": "group.rolehistory", "fields": {"person": 106897, "group": 390, "name": "liaiman", "email": "stewe@stewe.org"}},
|
||||
{"pk": 746, "model": "group.rolehistory", "fields": {"person": 112510, "group": 391, "name": "liaiman", "email": "nan@metroethernetforum.org"}},
|
||||
{"pk": 747, "model": "group.rolehistory", "fields": {"person": 112511, "group": 391, "name": "liaiman", "email": "bill@metroethernetforum.net"}},
|
||||
{"pk": 748, "model": "group.rolehistory", "fields": {"person": 112512, "group": 391, "name": "liaiman", "email": "rraghu@ciena.com"}},
|
||||
{"pk": 749, "model": "group.rolehistory", "fields": {"person": 105907, "group": 392, "name": "chair", "email": "stpeter@stpeter.im"}},
|
||||
{"pk": 750, "model": "group.rolehistory", "fields": {"person": 17681, "group": 394, "name": "techadv", "email": "paul.congdon@hp.com"}},
|
||||
{"pk": 751, "model": "group.rolehistory", "fields": {"person": 109800, "group": 394, "name": "chair", "email": "jouni.nospam@gmail.com"}},
|
||||
{"pk": 752, "model": "group.rolehistory", "fields": {"person": 111434, "group": 394, "name": "chair", "email": "mauricio.sanchez@hp.com"}},
|
||||
{"pk": 753, "model": "group.rolehistory", "fields": {"person": 17681, "group": 395, "name": "techadv", "email": "paul.congdon@hp.com"}},
|
||||
{"pk": 754, "model": "group.rolehistory", "fields": {"person": 109800, "group": 395, "name": "chair", "email": "jouni.nospam@gmail.com"}},
|
||||
{"pk": 755, "model": "group.rolehistory", "fields": {"person": 111434, "group": 395, "name": "chair", "email": "mauricio.sanchez@hp.com"}},
|
||||
{"pk": 756, "model": "group.rolehistory", "fields": {"person": 17681, "group": 396, "name": "techadv", "email": "paul.congdon@hp.com"}},
|
||||
{"pk": 757, "model": "group.rolehistory", "fields": {"person": 109800, "group": 396, "name": "chair", "email": "jouni.nospam@gmail.com"}},
|
||||
{"pk": 758, "model": "group.rolehistory", "fields": {"person": 111434, "group": 396, "name": "chair", "email": "mauricio.sanchez@hp.com"}},
|
||||
{"pk": 759, "model": "group.rolehistory", "fields": {"person": 17681, "group": 397, "name": "techadv", "email": "paul.congdon@hp.com"}},
|
||||
{"pk": 760, "model": "group.rolehistory", "fields": {"person": 109800, "group": 397, "name": "chair", "email": "jouni.nospam@gmail.com"}},
|
||||
{"pk": 761, "model": "group.rolehistory", "fields": {"person": 111434, "group": 397, "name": "chair", "email": "mauricio.sanchez@hp.com"}},
|
||||
{"pk": 762, "model": "group.rolehistory", "fields": {"person": 17681, "group": 398, "name": "techadv", "email": "paul.congdon@hp.com"}},
|
||||
{"pk": 763, "model": "group.rolehistory", "fields": {"person": 109800, "group": 398, "name": "chair", "email": "jouni.nospam@gmail.com"}},
|
||||
{"pk": 764, "model": "group.rolehistory", "fields": {"person": 111434, "group": 398, "name": "chair", "email": "mauricio.sanchez@hp.com"}},
|
||||
{"pk": 765, "model": "group.rolehistory", "fields": {"person": 104196, "group": 399, "name": "chair", "email": "eburger@standardstrack.com"}},
|
||||
{"pk": 766, "model": "group.rolehistory", "fields": {"person": 773, "group": 399, "name": "chair", "email": "oran@cisco.com"}},
|
||||
{"pk": 767, "model": "group.rolehistory", "fields": {"person": 2324, "group": 400, "name": "chair", "email": "sob@harvard.edu"}},
|
||||
{"pk": 768, "model": "group.rolehistory", "fields": {"person": 107131, "group": 400, "name": "chair", "email": "martin.thomson@gmail.com"}},
|
||||
{"pk": 769, "model": "group.rolehistory", "fields": {"person": 108717, "group": 401, "name": "chair", "email": "simon.perreault@viagenie.ca"}},
|
||||
{"pk": 770, "model": "group.rolehistory", "fields": {"person": 21684, "group": 402, "name": "secr", "email": "barryleiba@computer.org"}},
|
||||
{"pk": 771, "model": "group.rolehistory", "fields": {"person": 101054, "group": 402, "name": "chair", "email": "cyrus@daboo.name"}},
|
||||
{"pk": 772, "model": "group.rolehistory", "fields": {"person": 110093, "group": 402, "name": "chair", "email": "aaron@serendipity.cx"}},
|
||||
{"pk": 773, "model": "group.rolehistory", "fields": {"person": 104331, "group": 403, "name": "chair", "email": "gorry@erg.abdn.ac.uk"}},
|
||||
{"pk": 774, "model": "group.rolehistory", "fields": {"person": 104267, "group": 403, "name": "chair", "email": "jmpolk@cisco.com"}},
|
||||
{"pk": 775, "model": "group.rolehistory", "fields": {"person": 110070, "group": 403, "name": "chair", "email": "rolf.winter@neclab.eu"}},
|
||||
{"pk": 776, "model": "group.rolehistory", "fields": {"person": 104331, "group": 404, "name": "chair", "email": "gorry@erg.abdn.ac.uk"}},
|
||||
{"pk": 777, "model": "group.rolehistory", "fields": {"person": 104267, "group": 404, "name": "chair", "email": "jmpolk@cisco.com"}},
|
||||
{"pk": 778, "model": "group.rolehistory", "fields": {"person": 19483, "group": 405, "name": "techadv", "email": "turners@ieca.com"}},
|
||||
{"pk": 779, "model": "group.rolehistory", "fields": {"person": 106405, "group": 405, "name": "chair", "email": "tobias.gondrom@gondrom.org"}},
|
||||
{"pk": 780, "model": "group.rolehistory", "fields": {"person": 102154, "group": 405, "name": "chair", "email": "alexey.melnikov@isode.com"}},
|
||||
{"pk": 781, "model": "group.rolehistory", "fields": {"person": 106745, "group": 405, "name": "chair", "email": "ynir@checkpoint.com"}},
|
||||
{"pk": 782, "model": "group.rolehistory", "fields": {"person": 23057, "group": 406, "name": "chair", "email": "dward@cisco.com"}},
|
||||
{"pk": 783, "model": "group.rolehistory", "fields": {"person": 103539, "group": 406, "name": "chair", "email": "gonzalo.camarillo@ericsson.com"}},
|
||||
{"pk": 784, "model": "group.rolehistory", "fields": {"person": 109727, "group": 407, "name": "chair", "email": "muraris@microsoft.com"}},
|
||||
{"pk": 785, "model": "group.rolehistory", "fields": {"person": 103877, "group": 407, "name": "chair", "email": "michawe@ifi.uio.no"}},
|
||||
{"pk": 786, "model": "group.rolehistory", "fields": {"person": 103877, "group": 408, "name": "chair", "email": "michawe@ifi.uio.no"}},
|
||||
{"pk": 787, "model": "group.rolehistory", "fields": {"person": 12620, "group": 411, "name": "chair", "email": "iab-chair@ietf.org"}},
|
||||
{"pk": 788, "model": "group.rolehistory", "fields": {"person": 102830, "group": 411, "name": "execdir", "email": "mary.ietf.barnes@gmail.com"}},
|
||||
{"pk": 789, "model": "group.rolehistory", "fields": {"person": 102830, "group": 411, "name": "delegate", "email": "mary.ietf.barnes@gmail.com"}},
|
||||
{"pk": 790, "model": "group.rolehistory", "fields": {"person": 101818, "group": 412, "name": "chair", "email": "matt@internet2.edu"}},
|
||||
{"pk": 791, "model": "group.rolehistory", "fields": {"person": 100603, "group": 412, "name": "chair", "email": "henk@uijterwaal.nl"}},
|
||||
{"pk": 792, "model": "group.rolehistory", "fields": {"person": 100603, "group": 413, "name": "chair", "email": "henk@uijterwaal.nl"}},
|
||||
{"pk": 793, "model": "group.rolehistory", "fields": {"person": 113573, "group": 413, "name": "chair", "email": "bill@wjcerveny.com"}},
|
||||
{"pk": 794, "model": "group.rolehistory", "fields": {"person": 101818, "group": 413, "name": "chair", "email": "matt@internet2.edu"}},
|
||||
{"pk": 795, "model": "group.rolehistory", "fields": {"person": 109354, "group": 413, "name": "chair", "email": "trammell@tik.ee.ethz.ch"}},
|
||||
{"pk": 796, "model": "group.rolehistory", "fields": {"person": 101742, "group": 414, "name": "chair", "email": "tphelan@sonusnet.com"}},
|
||||
{"pk": 797, "model": "group.rolehistory", "fields": {"person": 109321, "group": 414, "name": "chair", "email": "pasi.sarolahti@iki.fi"}},
|
||||
{"pk": 798, "model": "group.rolehistory", "fields": {"person": 8209, "group": 415, "name": "chair", "email": "ttalpey@microsoft.com"}},
|
||||
{"pk": 799, "model": "group.rolehistory", "fields": {"person": 103156, "group": 415, "name": "chair", "email": "black_david@emc.com"}},
|
||||
{"pk": 800, "model": "group.rolehistory", "fields": {"person": 103156, "group": 416, "name": "chair", "email": "david.black@emc.com"}},
|
||||
{"pk": 801, "model": "group.rolehistory", "fields": {"person": 8209, "group": 416, "name": "chair", "email": "ttalpey@microsoft.com"}},
|
||||
{"pk": 802, "model": "group.rolehistory", "fields": {"person": 103156, "group": 416, "name": "chair", "email": "black_david@emc.com"}},
|
||||
{"pk": 803, "model": "group.rolehistory", "fields": {"person": 104331, "group": 417, "name": "chair", "email": "gorry@erg.abdn.ac.uk"}},
|
||||
{"pk": 804, "model": "group.rolehistory", "fields": {"person": 104267, "group": 417, "name": "chair", "email": "jmpolk@cisco.com"}},
|
||||
{"pk": 805, "model": "group.rolehistory", "fields": {"person": 103156, "group": 417, "name": "chair", "email": "black_david@emc.com"}},
|
||||
{"pk": 806, "model": "group.rolehistory", "fields": {"person": 104331, "group": 418, "name": "chair", "email": "gorry@erg.abdn.ac.uk"}},
|
||||
{"pk": 807, "model": "group.rolehistory", "fields": {"person": 103156, "group": 418, "name": "chair", "email": "david.black@emc.com"}},
|
||||
{"pk": 808, "model": "group.rolehistory", "fields": {"person": 104267, "group": 418, "name": "chair", "email": "jmpolk@cisco.com"}},
|
||||
{"pk": 809, "model": "group.rolehistory", "fields": {"person": 103156, "group": 418, "name": "chair", "email": "black_david@emc.com"}},
|
||||
{"pk": 810, "model": "group.rolehistory", "fields": {"person": 10083, "group": 419, "name": "chair", "email": "paul.hoffman@vpnc.org"}},
|
||||
{"pk": 811, "model": "group.rolehistory", "fields": {"person": 104278, "group": 419, "name": "chair", "email": "yaronf.ietf@gmail.com"}},
|
||||
{"pk": 812, "model": "group.rolehistory", "fields": {"person": 17681, "group": 420, "name": "techadv", "email": "paul.congdon@hp.com"}},
|
||||
{"pk": 813, "model": "group.rolehistory", "fields": {"person": 109800, "group": 420, "name": "chair", "email": "jouni.nospam@gmail.com"}},
|
||||
{"pk": 814, "model": "group.rolehistory", "fields": {"person": 111434, "group": 420, "name": "chair", "email": "mauricio.sanchez@hp.com"}},
|
||||
{"pk": 815, "model": "group.rolehistory", "fields": {"person": 102391, "group": 421, "name": "chair", "email": "d3e3e3@gmail.com"}},
|
||||
{"pk": 816, "model": "group.rolehistory", "fields": {"person": 8243, "group": 421, "name": "chair", "email": "nordmark@acm.org"}},
|
||||
{"pk": 817, "model": "group.rolehistory", "fields": {"person": 10083, "group": 422, "name": "chair", "email": "paul.hoffman@vpnc.org"}},
|
||||
{"pk": 818, "model": "group.rolehistory", "fields": {"person": 104278, "group": 422, "name": "chair", "email": "yaronf.ietf@gmail.com"}},
|
||||
{"pk": 819, "model": "group.rolehistory", "fields": {"person": 10083, "group": 423, "name": "chair", "email": "paul.hoffman@vpnc.org"}},
|
||||
{"pk": 820, "model": "group.rolehistory", "fields": {"person": 104278, "group": 423, "name": "chair", "email": "yaronf.ietf@gmail.com"}},
|
||||
{"pk": 821, "model": "group.rolehistory", "fields": {"person": 105519, "group": 424, "name": "techadv", "email": "martin.stiemerling@neclab.eu"}},
|
||||
{"pk": 822, "model": "group.rolehistory", "fields": {"person": 19869, "group": 424, "name": "chair", "email": "Marc.Blanchet@viagenie.ca"}},
|
||||
{"pk": 823, "model": "group.rolehistory", "fields": {"person": 2329, "group": 424, "name": "techadv", "email": "stbryant@cisco.com"}},
|
||||
{"pk": 824, "model": "group.rolehistory", "fields": {"person": 2853, "group": 424, "name": "techadv", "email": "fred@cisco.com"}},
|
||||
{"pk": 825, "model": "group.rolehistory", "fields": {"person": 112160, "group": 424, "name": "chair", "email": "wesley.george@twcable.com"}},
|
||||
{"pk": 826, "model": "group.rolehistory", "fields": {"person": 112837, "group": 425, "name": "auth", "email": "christophe.alter@orange-ftgroup.com"}},
|
||||
{"pk": 827, "model": "group.rolehistory", "fields": {"person": 109476, "group": 425, "name": "liaiman", "email": "david.sinicrope@ericsson.com"}},
|
||||
{"pk": 828, "model": "group.rolehistory", "fields": {"person": 10083, "group": 426, "name": "chair", "email": "paul.hoffman@vpnc.org"}},
|
||||
{"pk": 829, "model": "group.rolehistory", "fields": {"person": 104278, "group": 426, "name": "chair", "email": "yaronf.ietf@gmail.com"}},
|
||||
{"pk": 830, "model": "group.rolehistory", "fields": {"person": 106284, "group": 427, "name": "auth", "email": "dstanley@arubanetworks.com"}},
|
||||
{"pk": 831, "model": "group.rolehistory", "fields": {"person": 110070, "group": 428, "name": "chair", "email": "rolf.winter@neclab.eu"}},
|
||||
{"pk": 832, "model": "group.rolehistory", "fields": {"person": 109727, "group": 428, "name": "chair", "email": "muraris@microsoft.com"}},
|
||||
{"pk": 833, "model": "group.rolehistory", "fields": {"person": 106224, "group": 429, "name": "auth", "email": "mmorrow@cisco.com"}},
|
||||
{"pk": 834, "model": "group.rolehistory", "fields": {"person": 10083, "group": 434, "name": "chair", "email": "paul.hoffman@vpnc.org"}},
|
||||
{"pk": 835, "model": "group.rolehistory", "fields": {"person": 104278, "group": 434, "name": "chair", "email": "yaronf.ietf@gmail.com"}},
|
||||
{"pk": 836, "model": "group.rolehistory", "fields": {"person": 10083, "group": 435, "name": "chair", "email": "paul.hoffman@vpnc.org"}},
|
||||
{"pk": 837, "model": "group.rolehistory", "fields": {"person": 104278, "group": 435, "name": "chair", "email": "yaronf.ietf@gmail.com"}},
|
||||
{"pk": 838, "model": "group.rolehistory", "fields": {"person": 105519, "group": 436, "name": "techadv", "email": "martin.stiemerling@neclab.eu"}},
|
||||
{"pk": 839, "model": "group.rolehistory", "fields": {"person": 19869, "group": 436, "name": "chair", "email": "Marc.Blanchet@viagenie.ca"}},
|
||||
{"pk": 840, "model": "group.rolehistory", "fields": {"person": 2329, "group": 436, "name": "techadv", "email": "stbryant@cisco.com"}},
|
||||
{"pk": 841, "model": "group.rolehistory", "fields": {"person": 2853, "group": 436, "name": "techadv", "email": "fred@cisco.com"}},
|
||||
{"pk": 842, "model": "group.rolehistory", "fields": {"person": 112160, "group": 436, "name": "chair", "email": "wesley.george@twcable.com"}},
|
||||
{"pk": 843, "model": "group.rolehistory", "fields": {"person": 105519, "group": 437, "name": "techadv", "email": "martin.stiemerling@neclab.eu"}},
|
||||
{"pk": 844, "model": "group.rolehistory", "fields": {"person": 19869, "group": 437, "name": "chair", "email": "Marc.Blanchet@viagenie.ca"}},
|
||||
{"pk": 845, "model": "group.rolehistory", "fields": {"person": 2329, "group": 437, "name": "techadv", "email": "stbryant@cisco.com"}},
|
||||
{"pk": 846, "model": "group.rolehistory", "fields": {"person": 2853, "group": 437, "name": "techadv", "email": "fred@cisco.com"}},
|
||||
{"pk": 847, "model": "group.rolehistory", "fields": {"person": 112160, "group": 437, "name": "chair", "email": "wesley.george@twcable.com"}},
|
||||
{"pk": 848, "model": "group.rolehistory", "fields": {"person": 105519, "group": 438, "name": "techadv", "email": "martin.stiemerling@neclab.eu"}},
|
||||
{"pk": 849, "model": "group.rolehistory", "fields": {"person": 19869, "group": 438, "name": "chair", "email": "Marc.Blanchet@viagenie.ca"}},
|
||||
{"pk": 850, "model": "group.rolehistory", "fields": {"person": 2329, "group": 438, "name": "techadv", "email": "stbryant@cisco.com"}},
|
||||
{"pk": 851, "model": "group.rolehistory", "fields": {"person": 2853, "group": 438, "name": "techadv", "email": "fred@cisco.com"}},
|
||||
{"pk": 852, "model": "group.rolehistory", "fields": {"person": 112160, "group": 438, "name": "chair", "email": "wesley.george@twcable.com"}},
|
||||
{"pk": 853, "model": "group.rolehistory", "fields": {"person": 15448, "group": 439, "name": "chair", "email": "shanna@juniper.net"}},
|
||||
{"pk": 854, "model": "group.rolehistory", "fields": {"person": 110367, "group": 439, "name": "chair", "email": "tim.moses@entrust.com"}},
|
||||
{"pk": 855, "model": "group.rolehistory", "fields": {"person": 110367, "group": 440, "name": "chair", "email": "tim.moses@entrust.com"}},
|
||||
{"pk": 856, "model": "group.rolehistory", "fields": {"person": 112837, "group": 441, "name": "auth", "email": "christophe.alter@orange-ftgroup.com"}},
|
||||
{"pk": 857, "model": "group.rolehistory", "fields": {"person": 109476, "group": 441, "name": "liaiman", "email": "david.sinicrope@ericsson.com"}},
|
||||
{"pk": 858, "model": "group.rolehistory", "fields": {"person": 114696, "group": 441, "name": "auth", "email": "KEN.KO@adtran.com"}},
|
||||
{"pk": 859, "model": "group.rolehistory", "fields": {"person": 114099, "group": 442, "name": "chair", "email": "andrewmcgr@gmail.com"}},
|
||||
{"pk": 860, "model": "group.rolehistory", "fields": {"person": 11843, "group": 442, "name": "chair", "email": "cabo@tzi.org"}},
|
||||
{"pk": 861, "model": "group.rolehistory", "fields": {"person": 114099, "group": 443, "name": "chair", "email": "andrewmcgr@gmail.com"}},
|
||||
{"pk": 862, "model": "group.rolehistory", "fields": {"person": 11843, "group": 443, "name": "chair", "email": "cabo@tzi.org"}},
|
||||
{"pk": 863, "model": "group.rolehistory", "fields": {"person": 114099, "group": 443, "name": "chair", "email": "andrewmcgr@google.com"}},
|
||||
{"pk": 864, "model": "group.rolehistory", "fields": {"person": 10083, "group": 447, "name": "chair", "email": "paul.hoffman@vpnc.org"}},
|
||||
{"pk": 865, "model": "group.rolehistory", "fields": {"person": 104278, "group": 447, "name": "chair", "email": "yaronf.ietf@gmail.com"}},
|
||||
{"pk": 866, "model": "group.rolehistory", "fields": {"person": 105097, "group": 448, "name": "chair", "email": "keith.drage@alcatel-lucent.com"}},
|
||||
{"pk": 867, "model": "group.rolehistory", "fields": {"person": 104294, "group": 448, "name": "chair", "email": "magnus.westerlund@ericsson.com"}},
|
||||
{"pk": 868, "model": "group.rolehistory", "fields": {"person": 107031, "group": 449, "name": "chair", "email": "fandreas@cisco.com"}},
|
||||
{"pk": 869, "model": "group.rolehistory", "fields": {"person": 102848, "group": 449, "name": "chair", "email": "miguel.a.garcia@ericsson.com"}},
|
||||
{"pk": 870, "model": "group.rolehistory", "fields": {"person": 106897, "group": 450, "name": "techadv", "email": "stewe@stewe.org"}},
|
||||
{"pk": 871, "model": "group.rolehistory", "fields": {"person": 2250, "group": 450, "name": "chair", "email": "jdrosen@jdrosen.net"}},
|
||||
{"pk": 872, "model": "group.rolehistory", "fields": {"person": 105791, "group": 450, "name": "chair", "email": "fluffy@iii.ca"}},
|
||||
{"pk": 873, "model": "group.rolehistory", "fields": {"person": 112724, "group": 450, "name": "chair", "email": "tterriberry@mozilla.com"}},
|
||||
{"pk": 874, "model": "group.rolehistory", "fields": {"person": 103708, "group": 451, "name": "chair", "email": "dmm@1-4-5.net"}},
|
||||
{"pk": 875, "model": "group.rolehistory", "fields": {"person": 103708, "group": 452, "name": "chair", "email": "dmm@1-4-5.net"}},
|
||||
{"pk": 876, "model": "group.rolehistory", "fields": {"person": 110367, "group": 453, "name": "chair", "email": "tim.moses@entrust.com"}},
|
||||
{"pk": 877, "model": "group.rolehistory", "fields": {"person": 112547, "group": 456, "name": "chair", "email": "chris@lookout.net"}},
|
||||
{"pk": 878, "model": "group.rolehistory", "fields": {"person": 105907, "group": 456, "name": "chair", "email": "stpeter@stpeter.im"}},
|
||||
{"pk": 879, "model": "group.rolehistory", "fields": {"person": 107956, "group": 457, "name": "chair", "email": "shawn.emery@oracle.com"}},
|
||||
{"pk": 880, "model": "group.rolehistory", "fields": {"person": 111163, "group": 457, "name": "chair", "email": "josh.howlett@ja.net"}},
|
||||
{"pk": 881, "model": "group.rolehistory", "fields": {"person": 103048, "group": 457, "name": "chair", "email": "hartmans-ietf@mit.edu"}},
|
||||
{"pk": 882, "model": "group.rolehistory", "fields": {"person": 104569, "group": 457, "name": "secr", "email": "simon@josefsson.org"}},
|
||||
{"pk": 883, "model": "group.rolehistory", "fields": {"person": 107956, "group": 459, "name": "chair", "email": "shawn.emery@oracle.com"}},
|
||||
{"pk": 884, "model": "group.rolehistory", "fields": {"person": 111163, "group": 459, "name": "chair", "email": "josh.howlett@ja.net"}},
|
||||
{"pk": 885, "model": "group.rolehistory", "fields": {"person": 103048, "group": 459, "name": "chair", "email": "hartmans-ietf@mit.edu"}},
|
||||
{"pk": 886, "model": "group.rolehistory", "fields": {"person": 104569, "group": 459, "name": "secr", "email": "simon@josefsson.org"}},
|
||||
{"pk": 887, "model": "group.rolehistory", "fields": {"person": 107956, "group": 460, "name": "chair", "email": "shawn.emery@oracle.com"}},
|
||||
{"pk": 888, "model": "group.rolehistory", "fields": {"person": 111163, "group": 460, "name": "chair", "email": "josh.howlett@ja.net"}},
|
||||
{"pk": 889, "model": "group.rolehistory", "fields": {"person": 103048, "group": 460, "name": "chair", "email": "hartmans-ietf@mit.edu"}},
|
||||
{"pk": 890, "model": "group.rolehistory", "fields": {"person": 104569, "group": 460, "name": "secr", "email": "simon@josefsson.org"}},
|
||||
{"pk": 891, "model": "group.rolehistory", "fields": {"person": 106742, "group": 463, "name": "chair", "email": "akatlas@juniper.net"}},
|
||||
{"pk": 892, "model": "group.rolehistory", "fields": {"person": 104147, "group": 463, "name": "chair", "email": "edc@google.com"}},
|
||||
{"pk": 893, "model": "group.rolehistory", "fields": {"person": 106742, "group": 464, "name": "chair", "email": "akatlas@juniper.net"}},
|
||||
{"pk": 894, "model": "group.rolehistory", "fields": {"person": 104147, "group": 464, "name": "chair", "email": "edc@google.com"}},
|
||||
{"pk": 895, "model": "group.rolehistory", "fields": {"person": 5376, "group": 465, "name": "ad", "email": "housley@vigilsec.com"}},
|
||||
{"pk": 896, "model": "group.rolehistory", "fields": {"person": 2348, "group": 466, "name": "ad", "email": "rdroms.ietf@gmail.com"}},
|
||||
{"pk": 897, "model": "group.rolehistory", "fields": {"person": 100664, "group": 466, "name": "ad", "email": "brian@innovationslab.net"}},
|
||||
{"pk": 898, "model": "group.rolehistory", "fields": {"person": 101568, "group": 467, "name": "ad", "email": "rbonica@juniper.net"}},
|
||||
{"pk": 899, "model": "group.rolehistory", "fields": {"person": 105682, "group": 467, "name": "ad", "email": "bclaise@cisco.com"}},
|
||||
{"pk": 900, "model": "group.rolehistory", "fields": {"person": 103539, "group": 468, "name": "ad", "email": "gonzalo.camarillo@ericsson.com"}},
|
||||
{"pk": 901, "model": "group.rolehistory", "fields": {"person": 103961, "group": 468, "name": "ad", "email": "rjsparks@nostrum.com"}},
|
||||
{"pk": 902, "model": "group.rolehistory", "fields": {"person": 102154, "group": 469, "name": "chair", "email": "alexey.melnikov@isode.com"}},
|
||||
{"pk": 903, "model": "group.rolehistory", "fields": {"person": 4397, "group": 469, "name": "chair", "email": "ned.freed@mrochek.com"}},
|
||||
{"pk": 904, "model": "group.rolehistory", "fields": {"person": 110367, "group": 470, "name": "chair", "email": "tim.moses@entrust.com"}},
|
||||
{"pk": 905, "model": "group.rolehistory", "fields": {"person": 106745, "group": 472, "name": "chair", "email": "ynir@checkpoint.com"}},
|
||||
{"pk": 906, "model": "group.rolehistory", "fields": {"person": 8698, "group": 472, "name": "chair", "email": "derek@ihtfp.com"}},
|
||||
{"pk": 907, "model": "group.rolehistory", "fields": {"person": 2723, "group": 477, "name": "chair", "email": "rcallon@juniper.net"}},
|
||||
{"pk": 908, "model": "group.rolehistory", "fields": {"person": 107256, "group": 478, "name": "chair", "email": "marshall.eubanks@gmail.com"}},
|
||||
{"pk": 909, "model": "group.rolehistory", "fields": {"person": 11928, "group": 478, "name": "chair", "email": "johnl@taugh.com"}},
|
||||
{"pk": 910, "model": "group.rolehistory", "fields": {"person": 10083, "group": 479, "name": "chair", "email": "paul.hoffman@vpnc.org"}},
|
||||
{"pk": 911, "model": "group.rolehistory", "fields": {"person": 108722, "group": 480, "name": "chair", "email": "spromano@unina.it"}},
|
||||
{"pk": 912, "model": "group.rolehistory", "fields": {"person": 106987, "group": 480, "name": "chair", "email": "br@brianrosen.net"}},
|
||||
{"pk": 913, "model": "group.rolehistory", "fields": {"person": 110721, "group": 481, "name": "chair", "email": "ted.ietf@gmail.com"}},
|
||||
{"pk": 914, "model": "group.rolehistory", "fields": {"person": 113697, "group": 481, "name": "chair", "email": "plale@cs.indiana.edu"}},
|
||||
{"pk": 915, "model": "group.rolehistory", "fields": {"person": 105992, "group": 482, "name": "chair", "email": "sarikaya@ieee.org"}},
|
||||
{"pk": 916, "model": "group.rolehistory", "fields": {"person": 109878, "group": 482, "name": "chair", "email": "dirk.von-hugo@telekom.de"}},
|
||||
{"pk": 917, "model": "group.rolehistory", "fields": {"person": 107190, "group": 484, "name": "chair", "email": "spencer@wonderhamster.org"}},
|
||||
{"pk": 918, "model": "group.rolehistory", "fields": {"person": 106812, "group": 484, "name": "chair", "email": "vkg@bell-labs.com"}},
|
||||
{"pk": 919, "model": "group.rolehistory", "fields": {"person": 23057, "group": 485, "name": "chair", "email": "dward@cisco.com"}},
|
||||
{"pk": 920, "model": "group.rolehistory", "fields": {"person": 2723, "group": 485, "name": "chair", "email": "rcallon@juniper.net"}},
|
||||
{"pk": 921, "model": "group.rolehistory", "fields": {"person": 111584, "group": 486, "name": "chair", "email": "kerlyn@ieee.org"}},
|
||||
{"pk": 922, "model": "group.rolehistory", "fields": {"person": 106461, "group": 486, "name": "chair", "email": "tjc@ecs.soton.ac.uk"}},
|
||||
{"pk": 923, "model": "group.rolehistory", "fields": {"person": 106315, "group": 487, "name": "chair", "email": "gjshep@gmail.com"}},
|
||||
{"pk": 924, "model": "group.rolehistory", "fields": {"person": 107256, "group": 487, "name": "chair", "email": "marshall.eubanks@gmail.com"}},
|
||||
{"pk": 925, "model": "group.rolehistory", "fields": {"person": 113431, "group": 488, "name": "chair", "email": "hlflanagan@gmail.com"}},
|
||||
{"pk": 926, "model": "group.rolehistory", "fields": {"person": 10083, "group": 489, "name": "chair", "email": "paul.hoffman@vpnc.org"}},
|
||||
{"pk": 927, "model": "group.rolehistory", "fields": {"person": 10064, "group": 490, "name": "chair", "email": "lberger@labn.net"}},
|
||||
{"pk": 928, "model": "group.rolehistory", "fields": {"person": 112160, "group": 490, "name": "chair", "email": "wesley.george@twcable.com"}},
|
||||
{"pk": 929, "model": "group.rolehistory", "fields": {"person": 105907, "group": 491, "name": "chair", "email": "stpeter@stpeter.im"}},
|
||||
{"pk": 930, "model": "group.rolehistory", "fields": {"person": 102830, "group": 491, "name": "chair", "email": "mary.ietf.barnes@gmail.com"}},
|
||||
{"pk": 931, "model": "group.rolehistory", "fields": {"person": 10083, "group": 492, "name": "chair", "email": "paul.hoffman@vpnc.org"}},
|
||||
{"pk": 932, "model": "group.rolehistory", "fields": {"person": 108049, "group": 492, "name": "chair", "email": "rbarnes@bbn.com"}},
|
||||
{"pk": 933, "model": "group.rolehistory", "fields": {"person": 103539, "group": 493, "name": "ad", "email": "gonzalo.camarillo@ericsson.com"}},
|
||||
{"pk": 934, "model": "group.rolehistory", "fields": {"person": 103961, "group": 493, "name": "ad", "email": "rjsparks@nostrum.com"}},
|
||||
{"pk": 935, "model": "group.rolehistory", "fields": {"person": 108049, "group": 493, "name": "pre-ad", "email": "rbarnes@bbn.com"}},
|
||||
{"pk": 936, "model": "group.rolehistory", "fields": {"person": 103539, "group": 494, "name": "ad", "email": "gonzalo.camarillo@ericsson.com"}},
|
||||
{"pk": 937, "model": "group.rolehistory", "fields": {"person": 103961, "group": 494, "name": "ad", "email": "rjsparks@nostrum.com"}},
|
||||
{"pk": 938, "model": "group.rolehistory", "fields": {"person": 108049, "group": 494, "name": "pre-ad", "email": "rbarnes@bbn.com"}},
|
||||
{"pk": 939, "model": "group.rolehistory", "fields": {"person": 108049, "group": 494, "name": "pre-ad", "email": "rlb@ipv.sx"}},
|
||||
{"pk": 940, "model": "group.rolehistory", "fields": {"person": 103539, "group": 495, "name": "ad", "email": "gonzalo.camarillo@ericsson.com"}},
|
||||
{"pk": 941, "model": "group.rolehistory", "fields": {"person": 103961, "group": 495, "name": "ad", "email": "rjsparks@nostrum.com"}},
|
||||
{"pk": 942, "model": "group.rolehistory", "fields": {"person": 108049, "group": 495, "name": "pre-ad", "email": "rbarnes@bbn.com"}},
|
||||
{"pk": 943, "model": "group.rolehistory", "fields": {"person": 108049, "group": 495, "name": "pre-ad", "email": "rlb@ipv.sx"}},
|
||||
{"pk": 944, "model": "group.rolehistory", "fields": {"person": 103539, "group": 496, "name": "ad", "email": "gonzalo.camarillo@ericsson.com"}},
|
||||
{"pk": 945, "model": "group.rolehistory", "fields": {"person": 103961, "group": 496, "name": "ad", "email": "rjsparks@nostrum.com"}},
|
||||
{"pk": 946, "model": "group.rolehistory", "fields": {"person": 108049, "group": 496, "name": "pre-ad", "email": "rbarnes@bbn.com"}},
|
||||
{"pk": 947, "model": "group.rolehistory", "fields": {"person": 108049, "group": 496, "name": "pre-ad", "email": "rlb@ipv.sx"}},
|
||||
{"pk": 948, "model": "group.rolehistory", "fields": {"person": 103961, "group": 497, "name": "delegate", "email": "rjsparks@nostrum.com"}},
|
||||
{"pk": 949, "model": "group.rolehistory", "fields": {"person": 22971, "group": 497, "name": "techadv", "email": "lisa.dusseault@gmail.com"}},
|
||||
{"pk": 950, "model": "group.rolehistory", "fields": {"person": 110077, "group": 497, "name": "chair", "email": "acooper@cdt.org"}},
|
||||
{"pk": 951, "model": "group.rolehistory", "fields": {"person": 108049, "group": 497, "name": "chair", "email": "rbarnes@bbn.com"}},
|
||||
{"pk": 952, "model": "group.rolehistory", "fields": {"person": 103961, "group": 498, "name": "delegate", "email": "rjsparks@nostrum.com"}},
|
||||
{"pk": 953, "model": "group.rolehistory", "fields": {"person": 22971, "group": 498, "name": "techadv", "email": "lisa.dusseault@gmail.com"}},
|
||||
{"pk": 954, "model": "group.rolehistory", "fields": {"person": 110077, "group": 498, "name": "chair", "email": "acooper@cdt.org"}},
|
||||
{"pk": 955, "model": "group.rolehistory", "fields": {"person": 106289, "group": 499, "name": "chair", "email": "alan.b.johnston@gmail.com"}},
|
||||
{"pk": 956, "model": "group.rolehistory", "fields": {"person": 108049, "group": 499, "name": "chair", "email": "rbarnes@bbn.com"}},
|
||||
{"pk": 957, "model": "group.rolehistory", "fields": {"person": 106289, "group": 500, "name": "chair", "email": "alan.b.johnston@gmail.com"}},
|
||||
{"pk": 958, "model": "group.rolehistory", "fields": {"person": 10083, "group": 501, "name": "chair", "email": "paul.hoffman@vpnc.org"}},
|
||||
{"pk": 959, "model": "group.rolehistory", "fields": {"person": 108049, "group": 501, "name": "chair", "email": "rbarnes@bbn.com"}},
|
||||
{"pk": 960, "model": "group.rolehistory", "fields": {"person": 10083, "group": 502, "name": "chair", "email": "paul.hoffman@vpnc.org"}},
|
||||
{"pk": 961, "model": "group.rolehistory", "fields": {"person": 108049, "group": 503, "name": "liaiman", "email": "rbarnes@bbn.com"}}
|
||||
]
|
12
ietf/group/fixtures/groups.json
Normal file
12
ietf/group/fixtures/groups.json
Normal file
|
@ -0,0 +1,12 @@
|
|||
[
|
||||
{"pk": 1, "model": "group.group", "fields": {"charter": null, "unused_states": [], "ad": null, "parent": null, "list_email": "", "acronym": "ietf", "comments": "", "list_subscribe": "", "state": "active", "time": "2012-02-26 00:21:36", "unused_tags": [], "list_archive": "", "type": "ietf", "name": "IETF"}},
|
||||
{"pk": 2, "model": "group.group", "fields": {"charter": "charter-ietf-iesg", "unused_states": [], "ad": 5376, "parent": 1, "list_email": "iesg@ietf.org", "acronym": "iesg", "comments": "", "list_subscribe": "", "state": "active", "time": "2011-12-09 12:00:00", "unused_tags": [], "list_archive": "", "type": "ietf", "name": "Internet Engineering Steering Group"}},
|
||||
{"pk": 3, "model": "group.group", "fields": {"charter": null, "unused_states": [81, 82, 83, 84, 85, 86, 87, 88, 1, 2, 3, 4, 5, 6, 16, 13, 21, 14, 15, 19, 20, 12, 18, 9, 10, 17, 7, 22, 23, 11, 8, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 79, 80, 77, 78], "ad": null, "parent": null, "list_email": "", "acronym": "irtf", "comments": "", "list_subscribe": "", "state": "active", "time": "2012-02-26 00:21:36", "unused_tags": ["app-min", "errata", "iesg-com", "missref", "need-sh", "ref", "rfc-rev", "via-rfc", "w-dep", "need-ed", "point", "w-expert", "ad-f-up", "w-extern", "w-part", "extpty", "w-merge", "w-review", "need-aut", "sh-f-up", "need-rev", "w-refdoc", "w-refing", "rev-wglc", "rev-ad", "rev-iesg", "sheph-u", "other"], "list_archive": "", "type": "irtf", "name": "IRTF"}},
|
||||
{"pk": 4, "model": "group.group", "fields": {"charter": null, "unused_states": [], "ad": null, "parent": null, "list_email": "", "acronym": "secretariat", "comments": "", "list_subscribe": "", "state": "active", "time": "2012-02-26 00:21:36", "unused_tags": [], "list_archive": "", "type": "ietf", "name": "IETF Secretariat"}},
|
||||
{"pk": 5, "model": "group.group", "fields": {"charter": null, "unused_states": [], "ad": null, "parent": null, "list_email": "", "acronym": "ise", "comments": "", "list_subscribe": "", "state": "active", "time": "2012-02-26 00:21:36", "unused_tags": [], "list_archive": "", "type": "ietf", "name": "Independent Submission Editor"}},
|
||||
{"pk": 6, "model": "group.group", "fields": {"charter": null, "unused_states": [], "ad": null, "parent": null, "list_email": "", "acronym": "rsoc", "comments": "", "list_subscribe": "", "state": "active", "time": "2012-02-26 00:21:36", "unused_tags": [], "list_archive": "", "type": "ietf", "name": "RFC Series Oversight Committee"}},
|
||||
{"pk": 7, "model": "group.group", "fields": {"charter": "charter-ietf-iab", "unused_states": [], "ad": 5376, "parent": 1, "list_email": "iab@iab.org", "acronym": "iab", "comments": "1st meeting at 35th IETF - Los Angeles, CA - March 1996", "list_subscribe": "", "state": "active", "time": "2011-12-09 12:00:00", "unused_tags": [], "list_archive": "", "type": "ietf", "name": "Internet Architecture Board"}},
|
||||
{"pk": 9, "model": "group.group", "fields": {"charter": null, "unused_states": [], "ad": null, "parent": null, "list_email": "", "acronym": "iepg", "comments": "", "list_subscribe": "", "state": "active", "time": "2012-02-26 00:21:36", "unused_tags": [], "list_archive": "", "type": "ietf", "name": "IEPG"}},
|
||||
{"pk": 1027, "model": "group.group", "fields": {"charter": null, "unused_states": [], "ad": 5376, "parent": 1008, "list_email": "", "acronym": "none", "comments": "This is here so that 'none' can be entered in, for example, idform.", "list_subscribe": "", "state": "active", "time": "2011-12-09 12:00:00", "unused_tags": [], "list_archive": "", "type": "individ", "name": "Individual Submissions"}}
|
||||
|
||||
]
|
10
ietf/group/fixtures/roles.json
Normal file
10
ietf/group/fixtures/roles.json
Normal file
|
@ -0,0 +1,10 @@
|
|||
[
|
||||
{"pk": 314, "model": "group.role", "fields": {"person": 5376, "group": 2, "name": "chair", "email": "housley@vigilsec.com"}},
|
||||
{"pk": 75, "model": "group.role", "fields": {"person": 5376, "group": 1, "name": "chair", "email": "chair@ietf.org"}},
|
||||
{"pk": 76, "model": "group.role", "fields": {"person": 12620, "group": 7, "name": "chair", "email": "Bernard_Aboba@hotmail.com"}},
|
||||
{"pk": 78, "model": "group.role", "fields": {"person": 112773, "group": 3, "name": "chair", "email": "lars@netapp.com"}},
|
||||
{"pk": 79, "model": "group.role", "fields": {"person": 14966, "group": 1, "name": "admdir", "email": "iad@ietf.org"}},
|
||||
{"pk": 80, "model": "group.role", "fields": {"person": 2853, "group": 6, "name": "chair", "email": "rsoc-chair@iab.org"}},
|
||||
{"pk": 81, "model": "group.role", "fields": {"person": 6766, "group": 5, "name": "chair", "email": "rfc-ise@rfc-editor.org"}},
|
||||
{"pk": 1614, "model": "group.role", "fields": {"person": 108757, "group": 4, "name": "secr", "email": "wlo@amsl.com"}}
|
||||
]
|
1015
ietf/group/fixtures/workinggroups.json
Normal file
1015
ietf/group/fixtures/workinggroups.json
Normal file
File diff suppressed because it is too large
Load diff
|
@ -1,13 +1,17 @@
|
|||
# Copyright The IETF Trust 2007, All Rights Reserved
|
||||
|
||||
from urlparse import urljoin
|
||||
|
||||
from django.db import models
|
||||
from django.db.models import Q
|
||||
|
||||
from ietf.name.models import *
|
||||
from ietf.person.models import Email, Person
|
||||
from ietf.group.colors import fg_group_colors, bg_group_colors
|
||||
|
||||
import datetime
|
||||
|
||||
import debug
|
||||
|
||||
class GroupInfo(models.Model):
|
||||
time = models.DateTimeField(default=datetime.datetime.now)
|
||||
name = models.CharField(max_length=80)
|
||||
|
@ -74,6 +78,39 @@ class Group(GroupInfo):
|
|||
members = self.role_set.filter(name__slug__in=["chair", "member", "advisor", "liaison"])
|
||||
return members
|
||||
|
||||
# these are copied to Group because it is still proxied.
|
||||
@property
|
||||
def upcase_acronym(self):
|
||||
return self.acronym.upper()
|
||||
|
||||
@property
|
||||
def fg_color(self):
|
||||
return fg_group_colors[self.upcase_acronym]
|
||||
|
||||
@property
|
||||
def bg_color(self):
|
||||
return bg_group_colors[self.upcase_acronym]
|
||||
|
||||
def json_url(self):
|
||||
return "/group/%s.json" % (self.acronym,)
|
||||
|
||||
def json_dict(self, host_scheme):
|
||||
group1= dict()
|
||||
group1['href'] = urljoin(host_scheme, self.json_url())
|
||||
group1['acronym'] = self.acronym
|
||||
group1['name'] = self.name
|
||||
group1['state'] = self.state.slug
|
||||
group1['type'] = self.type.slug
|
||||
group1['parent_href'] = urljoin(host_scheme, self.parent.json_url())
|
||||
# uncomment when people URL handle is created
|
||||
#if self.ad is not None:
|
||||
# group1['ad_href'] = urljoin(host_scheme, self.ad.url())
|
||||
group1['list_email'] = self.list_email
|
||||
group1['list_subscribe'] = self.list_subscribe
|
||||
group1['list_archive'] = self.list_archive
|
||||
group1['comments'] = self.comments
|
||||
return group1
|
||||
|
||||
class GroupHistory(GroupInfo):
|
||||
group = models.ForeignKey(Group, related_name='history_set')
|
||||
acronym = models.CharField(max_length=40)
|
||||
|
|
13
ietf/group/tests/__init__.py
Normal file
13
ietf/group/tests/__init__.py
Normal file
|
@ -0,0 +1,13 @@
|
|||
# Copyright The IETF Trust 2012, All Rights Reserved
|
||||
|
||||
"""
|
||||
The test cases are split into multiple files.
|
||||
"""
|
||||
|
||||
import sys
|
||||
from ietf.utils import TestCase
|
||||
from datetime import datetime
|
||||
|
||||
# actual tests are distributed among a set of files in subdir tests/
|
||||
from ietf.group.tests.workinggroups import WorkingGroupTestCase
|
||||
|
19
ietf/group/tests/workinggroups.py
Normal file
19
ietf/group/tests/workinggroups.py
Normal file
|
@ -0,0 +1,19 @@
|
|||
import sys
|
||||
from ietf.utils import TestCase
|
||||
from ietf.group.models import Group
|
||||
|
||||
class WorkingGroupTestCase(TestCase):
|
||||
# See ietf.utils.test_utils.TestCase for the use of perma_fixtures vs. fixtures
|
||||
fixtures = [ 'workinggroups', ]
|
||||
perma_fixtures = []
|
||||
|
||||
def test_FindOneWg(self):
|
||||
one = Group.objects.filter(acronym = 'roll')
|
||||
self.assertIsNotNone(one)
|
||||
|
||||
def test_ActiveWgGroupList(self):
|
||||
groups = Group.objects.active_wgs()
|
||||
self.assertEqual(groups.count(), 151)
|
||||
|
||||
|
||||
|
11
ietf/group/urls.py
Normal file
11
ietf/group/urls.py
Normal file
|
@ -0,0 +1,11 @@
|
|||
# Copyright The IETF Trust 2007, All Rights Reserved
|
||||
|
||||
from django.conf.urls.defaults import patterns, url, include
|
||||
from django.views.generic.simple import redirect_to
|
||||
from ietf.group import ajax
|
||||
|
||||
urlpatterns = patterns('',
|
||||
(r'^(?P<groupname>[a-z0-9]+).json$', ajax.group_json),
|
||||
)
|
||||
|
||||
|
|
@ -5,7 +5,7 @@ unittest). These will both pass when you run "manage.py test".
|
|||
Replace these with more appropriate tests for your application.
|
||||
"""
|
||||
|
||||
from django.test import TestCase
|
||||
from ietf.utils import TestCase
|
||||
|
||||
class SimpleTest(TestCase):
|
||||
def test_basic_addition(self):
|
||||
|
|
|
@ -25,7 +25,6 @@ def index(request):
|
|||
|
||||
def state(request, doc, type=None):
|
||||
slug = "%s-%s" % (doc,type) if type else doc
|
||||
debug.show('slug')
|
||||
statetype = get_object_or_404(StateType, slug=slug)
|
||||
states = State.objects.filter(used=True, type=statetype).order_by('order')
|
||||
return render_to_response('help/states.html', {"doc": doc, "type": statetype, "states":states},
|
||||
|
|
|
@ -1,16 +1,17 @@
|
|||
import datetime, shutil
|
||||
|
||||
import django.test
|
||||
from django.core.urlresolvers import reverse as urlreverse
|
||||
|
||||
from ietf.utils.test_data import make_test_data
|
||||
from ietf.utils import TestCase
|
||||
|
||||
from ietf.doc.models import *
|
||||
from ietf.idindex.index import *
|
||||
|
||||
|
||||
class IndexTestCase(django.test.TestCase):
|
||||
fixtures = ['names']
|
||||
class IndexTestCase(TestCase):
|
||||
# See ietf.utils.test_utils.TestCase for the use of perma_fixtures vs. fixtures
|
||||
perma_fixtures = ['names']
|
||||
|
||||
def setUp(self):
|
||||
self.id_dir = os.path.abspath("tmp-id-dir")
|
||||
|
|
|
@ -11,6 +11,7 @@ from ietf.utils import FKAsOneToOne
|
|||
from ietf.utils.broken_foreign_key import BrokenForeignKey
|
||||
from ietf.utils.cached_lookup_field import CachedLookupField
|
||||
from ietf.utils.admin import admin_link
|
||||
from ietf.group.colors import fg_group_colors, bg_group_colors
|
||||
|
||||
class Acronym(models.Model):
|
||||
INDIVIDUAL_SUBMITTER = 1027
|
||||
|
@ -101,6 +102,17 @@ class Area(models.Model):
|
|||
def active_areas():
|
||||
return Area.objects.filter(status=Area.ACTIVE).order_by('area_acronym__acronym')
|
||||
active_areas = staticmethod(active_areas)
|
||||
|
||||
# these are copied to Group because it is still proxied.
|
||||
def upcase_acronym(self):
|
||||
return self.area_acronym.upper()
|
||||
|
||||
def fg_color(self):
|
||||
return fg_group_colors[self.upcase_area_acronym]
|
||||
|
||||
def bg_color(self):
|
||||
return bg_group_colors[self.upcase_area_acronym]
|
||||
|
||||
class Meta:
|
||||
db_table = 'areas'
|
||||
verbose_name="area"
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
from datetime import timedelta
|
||||
import os, shutil
|
||||
|
||||
import django.test
|
||||
from django.core.urlresolvers import reverse as urlreverse
|
||||
from django.conf import settings
|
||||
|
||||
|
@ -9,11 +8,12 @@ from pyquery import PyQuery
|
|||
|
||||
from ietf.idtracker.models import *
|
||||
from ietf.iesg.models import *
|
||||
from ietf.utils.test_utils import SimpleUrlTestCase, RealDatabaseTest, canonicalize_feed, login_testing_unauthorized
|
||||
from ietf.utils.test_utils import TestCase, SimpleUrlTestCase, RealDatabaseTest, canonicalize_feed, login_testing_unauthorized
|
||||
from ietf.ietfworkflows.models import Stream
|
||||
|
||||
class RescheduleOnAgendaTestCase(django.test.TestCase):
|
||||
fixtures = ['base', 'draft']
|
||||
class RescheduleOnAgendaTestCase(TestCase):
|
||||
# See ietf.utils.test_utils.TestCase for the use of perma_fixtures vs. fixtures
|
||||
perma_fixtures = ['base', 'draft']
|
||||
|
||||
def test_reschedule(self):
|
||||
draft = InternetDraft.objects.get(filename="draft-ietf-mipshop-pfmipv6")
|
||||
|
@ -54,8 +54,8 @@ class RescheduleOnAgendaTestCase(django.test.TestCase):
|
|||
self.assertEquals(draft.idinternal.comments().count(), comments_before + 1)
|
||||
self.assertTrue("Telechat" in draft.idinternal.comments()[0].comment_text)
|
||||
|
||||
class RescheduleOnAgendaTestCaseREDESIGN(django.test.TestCase):
|
||||
fixtures = ['names']
|
||||
class RescheduleOnAgendaTestCaseREDESIGN(TestCase):
|
||||
perma_fixtures = ['names']
|
||||
|
||||
def test_reschedule(self):
|
||||
from ietf.utils.test_data import make_test_data
|
||||
|
@ -111,8 +111,8 @@ class RescheduleOnAgendaTestCaseREDESIGN(django.test.TestCase):
|
|||
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
||||
RescheduleOnAgendaTestCase = RescheduleOnAgendaTestCaseREDESIGN
|
||||
|
||||
class ManageTelechatDatesTestCase(django.test.TestCase):
|
||||
fixtures = ['base', 'draft']
|
||||
class ManageTelechatDatesTestCase(TestCase):
|
||||
perma_fixtures = ['base', 'draft']
|
||||
|
||||
def test_set_dates(self):
|
||||
dates = TelechatDates.objects.all()[0]
|
||||
|
@ -152,8 +152,8 @@ class ManageTelechatDatesTestCase(django.test.TestCase):
|
|||
self.assertTrue(dates.date4 == new_date)
|
||||
self.assertTrue(dates.date1 == old_date2)
|
||||
|
||||
# class ManageTelechatDatesTestCaseREDESIGN(django.test.TestCase):
|
||||
# fixtures = ['names']
|
||||
# class ManageTelechatDatesTestCaseREDESIGN(TestCase):
|
||||
# perma_fixtures = ['names']
|
||||
|
||||
# def test_set_dates(self):
|
||||
# from ietf.utils.test_data import make_test_data
|
||||
|
@ -203,8 +203,8 @@ if settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
|||
#ManageTelechatDatesTestCase = ManageTelechatDatesTestCaseREDESIGN
|
||||
del ManageTelechatDatesTestCase
|
||||
|
||||
class WorkingGroupActionsTestCase(django.test.TestCase):
|
||||
fixtures = ['base', 'wgactions']
|
||||
class WorkingGroupActionsTestCase(TestCase):
|
||||
perma_fixtures = ['base', 'wgactions']
|
||||
|
||||
def setUp(self):
|
||||
super(self.__class__, self).setUp()
|
||||
|
@ -313,8 +313,8 @@ class WorkingGroupActionsTestCase(django.test.TestCase):
|
|||
|
||||
self.assertTrue('(sieve)' not in r.content)
|
||||
|
||||
class WorkingGroupActionsTestCaseREDESIGN(django.test.TestCase):
|
||||
fixtures = ['names']
|
||||
class WorkingGroupActionsTestCaseREDESIGN(TestCase):
|
||||
perma_fixtures = ['names']
|
||||
|
||||
def setUp(self):
|
||||
super(self.__class__, self).setUp()
|
||||
|
@ -473,9 +473,9 @@ class IesgUrlTestCase(SimpleUrlTestCase):
|
|||
|
||||
from ietf.doc.models import Document,TelechatDocEvent,State
|
||||
from ietf.group.models import Person
|
||||
class DeferUndeferTestCase(django.test.TestCase):
|
||||
class DeferUndeferTestCase(TestCase):
|
||||
|
||||
fixtures=['names']
|
||||
perma_fixtures = ['names']
|
||||
|
||||
def helper_test_defer(self,name):
|
||||
|
||||
|
|
|
@ -48,6 +48,7 @@ def has_role(user, role_names, *args, **kwargs):
|
|||
"RFC Editor": Q(person=person, name="auth", group__acronym="rfceditor"),
|
||||
"IAD": Q(person=person, name="admdir", group__acronym="ietf"),
|
||||
"IETF Chair": Q(person=person, name="chair", group__acronym="ietf"),
|
||||
"IRTF Chair": Q(person=person, name="chair", group__acronym="irtf"),
|
||||
"IAB Chair": Q(person=person, name="chair", group__acronym="iab"),
|
||||
"WG Chair": Q(person=person,name="chair", group__type="wg", group__state="active"),
|
||||
"WG Secretary": Q(person=person,name="secr", group__type="wg", group__state="active"),
|
||||
|
|
|
@ -3,13 +3,13 @@ import datetime, os, shutil
|
|||
from django.conf import settings
|
||||
from django.contrib.auth.models import User
|
||||
from django.core.urlresolvers import reverse as urlreverse
|
||||
import django.test
|
||||
from StringIO import StringIO
|
||||
from pyquery import PyQuery
|
||||
|
||||
from ietf.utils.test_utils import login_testing_unauthorized
|
||||
from ietf.utils.test_data import make_test_data
|
||||
from ietf.utils.mail import outbox
|
||||
from ietf.utils import TestCase
|
||||
|
||||
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
||||
from ietf.person.models import Person, Email
|
||||
|
@ -18,8 +18,9 @@ if settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
|||
from ietf.doc.utils import *
|
||||
from ietf.name.models import DocTagName
|
||||
|
||||
class EditStreamInfoTestCase(django.test.TestCase):
|
||||
fixtures = ['names']
|
||||
class EditStreamInfoTestCase(TestCase):
|
||||
# See ietf.utils.test_utils.TestCase for the use of perma_fixtures vs. fixtures
|
||||
perma_fixtures = ['names']
|
||||
|
||||
def test_adopt_document(self):
|
||||
draft = make_test_data()
|
||||
|
|
|
@ -3,13 +3,13 @@ import datetime, os, shutil
|
|||
from django.conf import settings
|
||||
from django.contrib.auth.models import User
|
||||
from django.core.urlresolvers import reverse as urlreverse
|
||||
import django.test
|
||||
from StringIO import StringIO
|
||||
from pyquery import PyQuery
|
||||
|
||||
from ietf.utils.test_utils import SimpleUrlTestCase, canonicalize_feed, canonicalize_sitemap, login_testing_unauthorized
|
||||
from ietf.utils.test_data import make_test_data
|
||||
from ietf.utils.mail import outbox
|
||||
from ietf.utils import TestCase
|
||||
|
||||
class LiaisonsUrlTestCase(SimpleUrlTestCase):
|
||||
def testUrls(self):
|
||||
|
@ -91,12 +91,19 @@ def make_liaison_models():
|
|||
return l
|
||||
|
||||
|
||||
class LiaisonManagementTestCase(django.test.TestCase):
|
||||
fixtures = ['names']
|
||||
class LiaisonManagementTestCase(TestCase):
|
||||
# See ietf.utils.test_utils.TestCase for the use of perma_fixtures vs. fixtures
|
||||
perma_fixtures = ['names']
|
||||
|
||||
def setUp(self):
|
||||
self.liaison_dir = os.path.abspath("tmp-liaison-dir")
|
||||
os.mkdir(self.liaison_dir)
|
||||
try:
|
||||
os.mkdir(self.liaison_dir)
|
||||
except OSError, e:
|
||||
if "File exists" in str(e):
|
||||
pass
|
||||
else:
|
||||
raise
|
||||
|
||||
settings.LIAISON_ATTACH_PATH = self.liaison_dir
|
||||
|
||||
|
|
|
@ -27,7 +27,7 @@ admin.site.register(Meeting, MeetingAdmin)
|
|||
class TimeSlotAdmin(admin.ModelAdmin):
|
||||
list_display = ["meeting", "type", "name", "time", "duration", "location", "session_desc"]
|
||||
list_filter = ["meeting", ]
|
||||
raw_id_fields = ["location", "session"]
|
||||
raw_id_fields = ["location"]
|
||||
ordering = ["-time"]
|
||||
|
||||
def session_desc(self, instance):
|
||||
|
|
487
ietf/meeting/ajax.py
Normal file
487
ietf/meeting/ajax.py
Normal file
|
@ -0,0 +1,487 @@
|
|||
from urlparse import urljoin
|
||||
|
||||
from django.utils import simplejson as json
|
||||
from dajaxice.core import dajaxice_functions
|
||||
from dajaxice.decorators import dajaxice_register
|
||||
from django.views.decorators.cache import cache_page
|
||||
from django.core import serializers
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.shortcuts import get_object_or_404
|
||||
|
||||
from ietf.ietfauth.decorators import group_required, has_role
|
||||
from ietf.name.models import TimeSlotTypeName
|
||||
from django.http import HttpResponseRedirect, HttpResponse, Http404, QueryDict
|
||||
|
||||
from ietf.meeting.helpers import get_meeting, get_schedule, get_schedule_by_id, agenda_permissions
|
||||
from ietf.meeting.views import edit_timeslots, edit_agenda
|
||||
|
||||
|
||||
# New models
|
||||
from ietf.meeting.models import Meeting, TimeSlot, Session
|
||||
from ietf.meeting.models import Schedule, ScheduledSession, Room
|
||||
from ietf.group.models import Group
|
||||
import datetime
|
||||
|
||||
import logging
|
||||
import sys
|
||||
from ietf.settings import LOG_DIR
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
@dajaxice_register
|
||||
def readonly(request, meeting_num, schedule_id):
|
||||
meeting = get_meeting(meeting_num)
|
||||
schedule = get_schedule_by_id(meeting, schedule_id)
|
||||
|
||||
secretariat = False
|
||||
write_perm = False
|
||||
|
||||
cansee,canedit = agenda_permissions(meeting, schedule, request.user)
|
||||
read_only = not canedit
|
||||
|
||||
user = request.user
|
||||
if has_role(user, "Secretariat"):
|
||||
secretariat = True
|
||||
write_perm = True
|
||||
|
||||
if has_role(user, "Area Director"):
|
||||
write_perm = True
|
||||
|
||||
try:
|
||||
person = user.get_profile()
|
||||
if person is not None and schedule.owner == user.person:
|
||||
read_only = False
|
||||
except:
|
||||
# specific error if user has no profile...
|
||||
pass
|
||||
|
||||
return json.dumps(
|
||||
{'secretariat': secretariat,
|
||||
'write_perm': write_perm,
|
||||
'owner_href': request.build_absolute_uri(schedule.owner.json_url()),
|
||||
'read_only': read_only})
|
||||
|
||||
@group_required('Area Director','Secretariat')
|
||||
@dajaxice_register
|
||||
def update_timeslot(request, schedule_id, session_id, scheduledsession_id=None, extended_from_id=None, duplicate=False):
|
||||
schedule = get_object_or_404(Schedule, pk = int(schedule_id))
|
||||
meeting = schedule.meeting
|
||||
ss_id = 0
|
||||
ess_id = 0
|
||||
ess = None
|
||||
ss = None
|
||||
|
||||
#print "duplicate: %s schedule.owner: %s user: %s" % (duplicate, schedule.owner, request.user.get_profile())
|
||||
cansee,canedit = agenda_permissions(meeting, schedule, request.user)
|
||||
|
||||
if not canedit:
|
||||
#raise Exception("Not permitted")
|
||||
return json.dumps({'error':'no permission'})
|
||||
|
||||
session_id = int(session_id)
|
||||
session = get_object_or_404(meeting.session_set, pk=session_id)
|
||||
|
||||
if scheduledsession_id is not None:
|
||||
ss_id = int(scheduledsession_id)
|
||||
|
||||
if extended_from_id is not None:
|
||||
ess_id = int(extended_from_id)
|
||||
|
||||
if ss_id != 0:
|
||||
ss = get_object_or_404(schedule.scheduledsession_set, pk=ss_id)
|
||||
|
||||
# this cleans up up two sessions in one slot situation, the
|
||||
# ... extra scheduledsessions need to be cleaned up.
|
||||
|
||||
if ess_id == 0:
|
||||
# if this is None, then we must be moving.
|
||||
for ssO in schedule.scheduledsession_set.filter(session = session):
|
||||
#print "sched(%s): removing session %s from slot %u" % ( schedule, session, ssO.pk )
|
||||
#if ssO.extendedfrom is not None:
|
||||
# ssO.extendedfrom.session = None
|
||||
# ssO.extendedfrom.save()
|
||||
ssO.session = None
|
||||
ssO.extendedfrom = None
|
||||
ssO.save()
|
||||
else:
|
||||
ess = get_object_or_404(schedule.scheduledsession_set, pk = ess_id)
|
||||
ss.extendedfrom = ess
|
||||
|
||||
try:
|
||||
# find the scheduledsession, assign the Session to it.
|
||||
if ss:
|
||||
#print "ss.session: %s session:%s duplicate=%s"%(ss, session, duplicate)
|
||||
ss.session = session
|
||||
if(duplicate):
|
||||
ss.id = None
|
||||
ss.save()
|
||||
except Exception as e:
|
||||
return json.dumps({'error':'invalid scheduledsession'})
|
||||
|
||||
return json.dumps({'message':'valid'})
|
||||
|
||||
@group_required('Secretariat')
|
||||
@dajaxice_register
|
||||
def update_timeslot_purpose(request, timeslot_id=None, purpose=None):
|
||||
ts_id = int(timeslot_id)
|
||||
try:
|
||||
timeslot = TimeSlot.objects.get(pk=ts_id)
|
||||
except:
|
||||
return json.dumps({'error':'invalid timeslot'})
|
||||
|
||||
try:
|
||||
timeslottypename = TimeSlotTypeName.objects.get(pk = purpose)
|
||||
except:
|
||||
return json.dumps({'error':'invalid timeslot type',
|
||||
'extra': purpose})
|
||||
|
||||
timeslot.type = timeslottypename
|
||||
timeslot.save()
|
||||
|
||||
return json.dumps(timeslot.json_dict(request.build_absolute_uri('/')))
|
||||
|
||||
#############################################################################
|
||||
## ROOM API
|
||||
#############################################################################
|
||||
from django.forms.models import modelform_factory
|
||||
AddRoomForm = modelform_factory(Room, exclude=('meeting',))
|
||||
|
||||
# no authorization required
|
||||
def timeslot_roomlist(request, mtg):
|
||||
rooms = mtg.room_set.all()
|
||||
json_array=[]
|
||||
for room in rooms:
|
||||
json_array.append(room.json_dict(request.build_absolute_uri('/')))
|
||||
return HttpResponse(json.dumps(json_array),
|
||||
mimetype="application/json")
|
||||
|
||||
@group_required('Secretariat')
|
||||
def timeslot_addroom(request, meeting):
|
||||
# authorization was enforced by the @group_require decorator above.
|
||||
|
||||
newroomform = AddRoomForm(request.POST)
|
||||
if not newroomform.is_valid():
|
||||
return HttpResponse(status=404)
|
||||
|
||||
newroom = newroomform.save(commit=False)
|
||||
newroom.meeting = meeting
|
||||
newroom.save()
|
||||
newroom.create_timeslots()
|
||||
|
||||
if "HTTP_ACCEPT" in request.META and "application/json" in request.META['HTTP_ACCEPT']:
|
||||
url = reverse(timeslot_roomurl, args=[meeting.number, newroom.pk])
|
||||
#log.debug("Returning timeslot_roomurl: %s " % (url))
|
||||
return HttpResponseRedirect(url)
|
||||
else:
|
||||
return HttpResponseRedirect(
|
||||
reverse(edit_timeslots, args=[meeting.number]))
|
||||
|
||||
@group_required('Secretariat')
|
||||
def timeslot_delroom(request, meeting, roomid):
|
||||
# authorization was enforced by the @group_require decorator above.
|
||||
room = get_object_or_404(meeting.room_set, pk=roomid)
|
||||
|
||||
room.delete_timeslots()
|
||||
room.delete()
|
||||
return HttpResponse('{"error":"none"}', status = 200)
|
||||
|
||||
def timeslot_roomsurl(request, num=None):
|
||||
meeting = get_meeting(num)
|
||||
|
||||
if request.method == 'GET':
|
||||
return timeslot_roomlist(request, meeting)
|
||||
elif request.method == 'POST':
|
||||
return timeslot_addroom(request, meeting)
|
||||
|
||||
# unacceptable reply
|
||||
return HttpResponse(status=406)
|
||||
|
||||
def timeslot_roomurl(request, num=None, roomid=None):
|
||||
meeting = get_meeting(num)
|
||||
|
||||
if request.method == 'GET':
|
||||
room = get_object_or_404(meeting.room_set, pk=roomid)
|
||||
return HttpResponse(json.dumps(room.json_dict(request.build_absolute_uri('/'))),
|
||||
mimetype="application/json")
|
||||
elif request.method == 'PUT':
|
||||
return timeslot_updroom(request, meeting)
|
||||
elif request.method == 'DELETE':
|
||||
return timeslot_delroom(request, meeting, roomid)
|
||||
|
||||
#############################################################################
|
||||
## DAY/SLOT API
|
||||
#############################################################################
|
||||
AddSlotForm = modelform_factory(TimeSlot, exclude=('meeting','name','location','sessions', 'modified'))
|
||||
|
||||
# no authorization required to list.
|
||||
def timeslot_slotlist(request, mtg):
|
||||
slots = mtg.timeslot_set.all()
|
||||
json_array=[]
|
||||
for slot in slots:
|
||||
json_array.append(slot.json_dict(request.build_absolute_uri('/')))
|
||||
return HttpResponse(json.dumps(json_array),
|
||||
mimetype="application/json")
|
||||
|
||||
@group_required('Secretariat')
|
||||
def timeslot_addslot(request, meeting):
|
||||
|
||||
# authorization was enforced by the @group_require decorator above.
|
||||
addslotform = AddSlotForm(request.POST)
|
||||
#log.debug("newslot: %u" % ( addslotform.is_valid() ))
|
||||
if not addslotform.is_valid():
|
||||
return HttpResponse(status=404)
|
||||
|
||||
newslot = addslotform.save(commit=False)
|
||||
newslot.meeting = meeting
|
||||
newslot.save()
|
||||
|
||||
newslot.create_concurrent_timeslots()
|
||||
|
||||
if "HTTP_ACCEPT" in request.META and "application/json" in request.META['HTTP_ACCEPT']:
|
||||
return HttpResponseRedirect(
|
||||
reverse(timeslot_dayurl, args=[meeting.number, newroom.pk]))
|
||||
else:
|
||||
return HttpResponseRedirect(
|
||||
reverse(edit_timeslots, args=[meeting.number]))
|
||||
|
||||
@group_required('Secretariat')
|
||||
def timeslot_delslot(request, meeting, slotid):
|
||||
# authorization was enforced by the @group_require decorator above.
|
||||
slot = get_object_or_404(meeting.timeslot_set, pk=slotid)
|
||||
|
||||
# this will delete self as well.
|
||||
slot.delete_concurrent_timeslots()
|
||||
return HttpResponse('{"error":"none"}', status = 200)
|
||||
|
||||
def timeslot_slotsurl(request, num=None):
|
||||
meeting = get_meeting(num)
|
||||
|
||||
if request.method == 'GET':
|
||||
return timeslot_slotlist(request, meeting)
|
||||
elif request.method == 'POST':
|
||||
return timeslot_addslot(request, meeting)
|
||||
|
||||
# unacceptable reply
|
||||
return HttpResponse(status=406)
|
||||
|
||||
def timeslot_sloturl(request, num=None, slotid=None):
|
||||
meeting = get_meeting(num)
|
||||
|
||||
if request.method == 'GET':
|
||||
slot = get_object_or_404(meeting.timeslot_set, pk=slotid)
|
||||
return HttpResponse(json.dumps(slot.json_dict(request.build_absolute_uri('/'))),
|
||||
mimetype="application/json")
|
||||
elif request.method == 'PUT':
|
||||
# not yet implemented!
|
||||
#return timeslot_updslot(request, meeting)
|
||||
return HttpResponse(status=406)
|
||||
elif request.method == 'DELETE':
|
||||
return timeslot_delslot(request, meeting, slotid)
|
||||
|
||||
#############################################################################
|
||||
## Agenda List API
|
||||
#############################################################################
|
||||
AgendaEntryForm = modelform_factory(Schedule, exclude=('meeting','owner'))
|
||||
EditAgendaEntryForm = modelform_factory(Schedule, exclude=('meeting','owner', 'name'))
|
||||
|
||||
@group_required('Area Director','Secretariat')
|
||||
def agenda_list(request, mtg):
|
||||
agendas = mtg.schedule_set.all()
|
||||
json_array=[]
|
||||
for agenda in agendas:
|
||||
json_array.append(agenda.json_dict(request.build_absolute_uri('/')))
|
||||
return HttpResponse(json.dumps(json_array),
|
||||
mimetype="application/json")
|
||||
|
||||
# duplicates save-as functionality below.
|
||||
@group_required('Area Director','Secretariat')
|
||||
def agenda_add(request, meeting):
|
||||
# authorization was enforced by the @group_require decorator above.
|
||||
|
||||
newagendaform = AgendaEntryForm(request.POST)
|
||||
if not newagendaform.is_valid():
|
||||
return HttpResponse(status=404)
|
||||
|
||||
newagenda = newagendaform.save(commit=False)
|
||||
newagenda.meeting = meeting
|
||||
newagenda.owner = request.user.get_profile()
|
||||
newagenda.save()
|
||||
|
||||
if "HTTP_ACCEPT" in request.META and "application/json" in request.META['HTTP_ACCEPT']:
|
||||
url = reverse(agenda_infourl, args=[meeting.number, newagenda.name])
|
||||
#log.debug("Returning agenda_infourl: %s " % (url))
|
||||
return HttpResponseRedirect(url)
|
||||
else:
|
||||
return HttpResponseRedirect(
|
||||
reverse(edit_agenda, args=[meeting.number, newagenda.name]))
|
||||
|
||||
@group_required('Area Director','Secretariat')
|
||||
def agenda_update(request, meeting, schedule):
|
||||
# authorization was enforced by the @group_require decorator above.
|
||||
|
||||
# forms are completely useless for update actions that want to
|
||||
# accept a subset of values.
|
||||
update_dict = QueryDict(request.raw_post_data, encoding=request._encoding)
|
||||
|
||||
#log.debug("99 meeting.agenda: %s / %s / %s" %
|
||||
# (schedule, update_dict, request.raw_post_data))
|
||||
|
||||
user = request.user
|
||||
if has_role(user, "Secretariat"):
|
||||
if "public" in update_dict:
|
||||
value1 = True
|
||||
value = update_dict["public"]
|
||||
if value == "0" or value == 0 or value=="false":
|
||||
value1 = False
|
||||
log.debug("setting public for %s to %s" % (schedule, value1))
|
||||
schedule.public = value1
|
||||
|
||||
if "visible" in update_dict:
|
||||
value1 = True
|
||||
value = update_dict["visible"]
|
||||
if value == "0" or value == 0 or value=="false":
|
||||
value1 = False
|
||||
log.debug("setting visible for %s to %s" % (schedule, value1))
|
||||
schedule.visible = value1
|
||||
|
||||
if "name" in update_dict:
|
||||
value = update_dict["name"]
|
||||
log.debug("setting name for %s to %s" % (schedule, value))
|
||||
schedule.name = value
|
||||
|
||||
schedule.save()
|
||||
|
||||
# enforce that a non-public schedule can not be the public one.
|
||||
if meeting.agenda == schedule and not schedule.public:
|
||||
meeting.agenda = None
|
||||
meeting.save()
|
||||
|
||||
if "HTTP_ACCEPT" in request.META and "application/json" in request.META['HTTP_ACCEPT']:
|
||||
return HttpResponse(json.dumps(schedule.json_dict(request.build_absolute_uri('/'))),
|
||||
mimetype="application/json")
|
||||
else:
|
||||
return HttpResponseRedirect(
|
||||
reverse(edit_agenda, args=[meeting.number, schedule.name]))
|
||||
|
||||
@group_required('Secretariat')
|
||||
def agenda_del(request, meeting, schedule):
|
||||
schedule.delete_scheduledsessions()
|
||||
#log.debug("deleting meeting: %s agenda: %s" % (meeting, meeting.agenda))
|
||||
if meeting.agenda == schedule:
|
||||
meeting.agenda = None
|
||||
meeting.save()
|
||||
schedule.delete()
|
||||
return HttpResponse('{"error":"none"}', status = 200)
|
||||
|
||||
def agenda_infosurl(request, num=None):
|
||||
meeting = get_meeting(num)
|
||||
|
||||
if request.method == 'GET':
|
||||
return agenda_list(request, meeting)
|
||||
elif request.method == 'POST':
|
||||
return agenda_add(request, meeting)
|
||||
|
||||
# unacceptable action
|
||||
return HttpResponse(status=406)
|
||||
|
||||
def agenda_infourl(request, num=None, schedule_name=None):
|
||||
meeting = get_meeting(num)
|
||||
#log.debug("agenda: %s / %s" % (meeting, schedule_name))
|
||||
|
||||
schedule = get_schedule(meeting, schedule_name)
|
||||
#log.debug("results in agenda: %u / %s" % (schedule.id, request.method))
|
||||
|
||||
if request.method == 'GET':
|
||||
return HttpResponse(json.dumps(schedule.json_dict(request.build_absolute_uri('/'))),
|
||||
mimetype="application/json")
|
||||
elif request.method == 'PUT':
|
||||
return agenda_update(request, meeting, schedule)
|
||||
elif request.method == 'DELETE':
|
||||
return agenda_del(request, meeting, schedule)
|
||||
else:
|
||||
return HttpResponse(status=406)
|
||||
|
||||
#############################################################################
|
||||
## Meeting API (very limited)
|
||||
#############################################################################
|
||||
|
||||
def meeting_get(request, meeting):
|
||||
return HttpResponse(json.dumps(meeting.json_dict(request.build_absolute_uri('/')),
|
||||
sort_keys=True, indent=2),
|
||||
mimetype="application/json")
|
||||
|
||||
@group_required('Secretariat')
|
||||
def meeting_update(request, meeting):
|
||||
# authorization was enforced by the @group_require decorator above.
|
||||
|
||||
# at present, only the official agenda can be updated from this interface.
|
||||
update_dict = QueryDict(request.raw_post_data, encoding=request._encoding)
|
||||
|
||||
#log.debug("1 meeting.agenda: %s / %s / %s" % (meeting.agenda, update_dict, request.raw_post_data))
|
||||
if "agenda" in update_dict:
|
||||
value = update_dict["agenda"]
|
||||
#log.debug("4 meeting.agenda: %s" % (value))
|
||||
if value is None or value == "None":
|
||||
meeting.agenda = None
|
||||
else:
|
||||
schedule = get_schedule(meeting, value)
|
||||
if not schedule.public:
|
||||
return HttpResponse(status = 406)
|
||||
#log.debug("3 meeting.agenda: %s" % (schedule))
|
||||
meeting.agenda = schedule
|
||||
|
||||
#log.debug("2 meeting.agenda: %s" % (meeting.agenda))
|
||||
meeting.save()
|
||||
return meeting_get(request, meeting)
|
||||
|
||||
def meeting_json(request, meeting_num):
|
||||
meeting = get_meeting(meeting_num)
|
||||
|
||||
if request.method == 'GET':
|
||||
return meeting_get(request, meeting)
|
||||
elif request.method == 'PUT':
|
||||
return meeting_update(request, meeting)
|
||||
elif request.method == 'POST':
|
||||
return meeting_update(request, meeting)
|
||||
|
||||
else:
|
||||
return HttpResponse(status=406)
|
||||
|
||||
|
||||
#############################################################################
|
||||
## Agenda Editing API functions
|
||||
#############################################################################
|
||||
|
||||
def session_json(request, num, sessionid):
|
||||
meeting = get_meeting(num)
|
||||
|
||||
try:
|
||||
session = meeting.session_set.get(pk=int(sessionid))
|
||||
except Session.DoesNotExist:
|
||||
return json.dumps({'error':"no such session %s" % sessionid})
|
||||
|
||||
sess1 = session.json_dict(request.build_absolute_uri('/'))
|
||||
return HttpResponse(json.dumps(sess1, sort_keys=True, indent=2),
|
||||
mimetype="application/json")
|
||||
|
||||
# Would like to cache for 1 day, but there are invalidation issues.
|
||||
#@cache_page(86400)
|
||||
def session_constraints(request, num, sessionid):
|
||||
meeting = get_meeting(num)
|
||||
|
||||
#print "Getting meeting=%s session contraints for %s" % (num, sessionid)
|
||||
try:
|
||||
session = meeting.session_set.get(pk=int(sessionid))
|
||||
except Session.DoesNotExist:
|
||||
return json.dumps({"error":"no such session"})
|
||||
|
||||
constraint_list = session.constraints_dict(request.build_absolute_uri('/'))
|
||||
|
||||
json_str = json.dumps(constraint_list,
|
||||
sort_keys=True, indent=2),
|
||||
#print " gives: %s" % (json_str)
|
||||
|
||||
return HttpResponse(json_str, mimetype="application/json")
|
||||
|
||||
|
||||
|
1458
ietf/meeting/fixtures/constraint83.json
Normal file
1458
ietf/meeting/fixtures/constraint83.json
Normal file
File diff suppressed because it is too large
Load diff
523
ietf/meeting/fixtures/meeting83.json
Normal file
523
ietf/meeting/fixtures/meeting83.json
Normal file
|
@ -0,0 +1,523 @@
|
|||
[
|
||||
{"pk": 83, "model": "meeting.meeting",
|
||||
"fields":
|
||||
{"city": "Paris",
|
||||
"venue_name": "",
|
||||
"country": "FR",
|
||||
"time_zone": "Europe/Paris",
|
||||
"reg_area": "Hall Maillot A",
|
||||
"number": "83",
|
||||
"break_area": "Hall Maillot A",
|
||||
"date": "2012-03-25",
|
||||
"type": "ietf",
|
||||
"venue_addr": "",
|
||||
"agenda": 24
|
||||
}
|
||||
},
|
||||
|
||||
{"pk": 24, "model": "meeting.schedule", "fields": {"owner": 108757, "visible": true, "name": "mtg:83", "public": true, "meeting": 83}},
|
||||
{"pk": 25, "model": "meeting.schedule", "fields": {"owner": 108757, "visible": false, "name": "inv_83", "public": true, "meeting": 83}},
|
||||
{"pk": 26, "model": "meeting.schedule", "fields": {"owner": 108757, "visible": true, "name": "priv_83", "public": false, "meeting": 83}},
|
||||
{"pk": 27, "model": "meeting.schedule", "fields": {"owner": 5376, "visible": false, "name": "russ_83_inv", "public": false, "meeting": 83}},
|
||||
{"pk": 28, "model": "meeting.schedule", "fields": {"owner": 5376, "visible": true, "name": "russ_83_visible", "public": false, "meeting": 83}},
|
||||
{"pk": 29, "model": "meeting.schedule", "fields": {"owner": 19177, "visible": false, "name": "sf_83_invisible", "public": false, "meeting": 83}},
|
||||
{"pk": 30, "model": "meeting.schedule", "fields": {"owner": 19177, "visible": true, "name": "sf_83_visible", "public": false, "meeting": 83}},
|
||||
{"pk": 2371, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2157, "timeslot": 2371}},
|
||||
{"pk": 2372, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2158, "timeslot": 2372}},
|
||||
{"pk": 2373, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2159, "timeslot": 2373}},
|
||||
{"pk": 2374, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2160, "timeslot": 2374}},
|
||||
{"pk": 2375, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2161, "timeslot": 2375}},
|
||||
{"pk": 2376, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2162, "timeslot": 2376}},
|
||||
{"pk": 2377, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 12162, "timeslot": 2377}},
|
||||
{"pk": 2378, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2163, "timeslot": 2378}},
|
||||
{"pk": 2379, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2164, "timeslot": 2379}},
|
||||
{"pk": 2380, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2165, "timeslot": 2380}},
|
||||
{"pk": 2381, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2166, "timeslot": 2381}},
|
||||
{"pk": 2382, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2167, "timeslot": 2382}},
|
||||
{"pk": 2383, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2168, "timeslot": 2383}},
|
||||
{"pk": 2384, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2169, "timeslot": 2384}},
|
||||
{"pk": 2385, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2170, "timeslot": 2385}},
|
||||
{"pk": 2386, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2171, "timeslot": 2386}},
|
||||
{"pk": 2387, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2172, "timeslot": 2387}},
|
||||
{"pk": 2388, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2173, "timeslot": 2388}},
|
||||
{"pk": 2389, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2174, "timeslot": 2389}},
|
||||
{"pk": 2390, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 12174, "timeslot": 2390}},
|
||||
{"pk": 2391, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2175, "timeslot": 2391}},
|
||||
{"pk": 2392, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 12175, "timeslot": 2392}},
|
||||
{"pk": 2393, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 22084, "timeslot": 2393}},
|
||||
{"pk": 2394, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2177, "timeslot": 2394}},
|
||||
{"pk": 2395, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2178, "timeslot": 2395}},
|
||||
{"pk": 2396, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2179, "timeslot": 2396}},
|
||||
{"pk": 2397, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2180, "timeslot": 2397}},
|
||||
{"pk": 2398, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2182, "timeslot": 2398}},
|
||||
{"pk": 2399, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2206, "timeslot": 2399}},
|
||||
{"pk": 2400, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2184, "timeslot": 2400}},
|
||||
{"pk": 2401, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2185, "timeslot": 2401}},
|
||||
{"pk": 2402, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2186, "timeslot": 2402}},
|
||||
{"pk": 2403, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2187, "timeslot": 2403}},
|
||||
{"pk": 2404, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2188, "timeslot": 2404}},
|
||||
{"pk": 2405, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 12188, "timeslot": 2405}},
|
||||
{"pk": 2406, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2189, "timeslot": 2406}},
|
||||
{"pk": 2407, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2190, "timeslot": 2407}},
|
||||
{"pk": 2408, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2191, "timeslot": 2408}},
|
||||
{"pk": 2409, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2192, "timeslot": 2409}},
|
||||
{"pk": 2410, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 12192, "timeslot": 2410}},
|
||||
{"pk": 2411, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2193, "timeslot": 2411}},
|
||||
{"pk": 2412, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 12193, "timeslot": 2412}},
|
||||
{"pk": 2413, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2194, "timeslot": 2413}},
|
||||
{"pk": 2414, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 12194, "timeslot": 2414}},
|
||||
{"pk": 2415, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2195, "timeslot": 2415}},
|
||||
{"pk": 2416, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 12195, "timeslot": 2416}},
|
||||
{"pk": 2417, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2196, "timeslot": 2417}},
|
||||
{"pk": 2418, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 12196, "timeslot": 2418}},
|
||||
{"pk": 2419, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2197, "timeslot": 2419}},
|
||||
{"pk": 2420, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2198, "timeslot": 2420}},
|
||||
{"pk": 2421, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2199, "timeslot": 2421}},
|
||||
{"pk": 2422, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2200, "timeslot": 2422}},
|
||||
{"pk": 2423, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2201, "timeslot": 2423}},
|
||||
{"pk": 2424, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2202, "timeslot": 2424}},
|
||||
{"pk": 2425, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2203, "timeslot": 2425}},
|
||||
{"pk": 2426, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2204, "timeslot": 2426}},
|
||||
{"pk": 2427, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2205, "timeslot": 2427}},
|
||||
{"pk": 2428, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2183, "timeslot": 2428}},
|
||||
{"pk": 2429, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2207, "timeslot": 2429}},
|
||||
{"pk": 2430, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2208, "timeslot": 2430}},
|
||||
{"pk": 2431, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2209, "timeslot": 2431}},
|
||||
{"pk": 2432, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2210, "timeslot": 2432}},
|
||||
{"pk": 2433, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2211, "timeslot": 2433}},
|
||||
{"pk": 2434, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2212, "timeslot": 2434}},
|
||||
{"pk": 2435, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2213, "timeslot": 2435}},
|
||||
{"pk": 2436, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2214, "timeslot": 2436}},
|
||||
{"pk": 2437, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2215, "timeslot": 2437}},
|
||||
{"pk": 2438, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2216, "timeslot": 2438}},
|
||||
{"pk": 2439, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2216, "timeslot": 2439, "extendedfrom":2438}},
|
||||
{"pk": 2440, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2217, "timeslot": 2440}},
|
||||
{"pk": 2441, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2218, "timeslot": 2441}},
|
||||
{"pk": 2442, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2219, "timeslot": 2442}},
|
||||
{"pk": 2443, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2220, "timeslot": 2443}},
|
||||
{"pk": 2444, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2221, "timeslot": 2444}},
|
||||
{"pk": 2445, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2222, "timeslot": 2445}},
|
||||
{"pk": 2446, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2223, "timeslot": 2446}},
|
||||
{"pk": 2447, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2223, "timeslot": 2447}},
|
||||
{"pk": 2448, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2224, "timeslot": 2448}},
|
||||
{"pk": 2449, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2225, "timeslot": 2449}},
|
||||
{"pk": 2450, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2227, "timeslot": 2450}},
|
||||
{"pk": 2451, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2228, "timeslot": 2451}},
|
||||
{"pk": 2452, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2229, "timeslot": 2452}},
|
||||
{"pk": 2453, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2230, "timeslot": 2453}},
|
||||
{"pk": 2454, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2231, "timeslot": 2454}},
|
||||
{"pk": 2455, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2232, "timeslot": 2455}},
|
||||
{"pk": 2456, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2232, "timeslot": 2456}},
|
||||
{"pk": 2457, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2233, "timeslot": 2457}},
|
||||
{"pk": 2458, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2234, "timeslot": 2458}},
|
||||
{"pk": 2459, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2235, "timeslot": 2459}},
|
||||
{"pk": 2460, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2236, "timeslot": 2460}},
|
||||
{"pk": 2461, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2237, "timeslot": 2461}},
|
||||
{"pk": 2462, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2238, "timeslot": 2462}},
|
||||
{"pk": 2463, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 12238, "timeslot": 2463}},
|
||||
{"pk": 2464, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2239, "timeslot": 2464}},
|
||||
{"pk": 2465, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2240, "timeslot": 2465}},
|
||||
{"pk": 2466, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2241, "timeslot": 2466}},
|
||||
{"pk": 2467, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2242, "timeslot": 2467}},
|
||||
{"pk": 2468, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2243, "timeslot": 2468}},
|
||||
{"pk": 2469, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2244, "timeslot": 2469}},
|
||||
{"pk": 2470, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2245, "timeslot": 2470}},
|
||||
{"pk": 2471, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2246, "timeslot": 2471}},
|
||||
{"pk": 2472, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2247, "timeslot": 2472}},
|
||||
{"pk": 2473, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2248, "timeslot": 2473}},
|
||||
{"pk": 2474, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2249, "timeslot": 2474}},
|
||||
{"pk": 2475, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2250, "timeslot": 2475}},
|
||||
{"pk": 2476, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2251, "timeslot": 2476}},
|
||||
{"pk": 2477, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2252, "timeslot": 2477}},
|
||||
{"pk": 2478, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2253, "timeslot": 2478}},
|
||||
{"pk": 2479, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2254, "timeslot": 2479}},
|
||||
{"pk": 2480, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2255, "timeslot": 2480}},
|
||||
{"pk": 2481, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2256, "timeslot": 2481}},
|
||||
{"pk": 2482, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2257, "timeslot": 2482}},
|
||||
{"pk": 2483, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2258, "timeslot": 2483}},
|
||||
{"pk": 2484, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2259, "timeslot": 2484}},
|
||||
{"pk": 2485, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2260, "timeslot": 2485}},
|
||||
{"pk": 2486, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 12260, "timeslot": 2486}},
|
||||
{"pk": 2487, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2261, "timeslot": 2487}},
|
||||
{"pk": 2488, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2262, "timeslot": 2488}},
|
||||
{"pk": 2489, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2281, "timeslot": 2489}},
|
||||
{"pk": 2490, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2265, "timeslot": 2490}},
|
||||
{"pk": 2491, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2266, "timeslot": 2491}},
|
||||
{"pk": 2492, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2267, "timeslot": 2492}},
|
||||
{"pk": 2493, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2268, "timeslot": 2493}},
|
||||
{"pk": 2494, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2270, "timeslot": 2494}},
|
||||
{"pk": 2495, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2270, "timeslot": 2495}},
|
||||
{"pk": 2496, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2271, "timeslot": 2496}},
|
||||
{"pk": 2497, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2272, "timeslot": 2497}},
|
||||
{"pk": 2498, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2273, "timeslot": 2498}},
|
||||
{"pk": 2499, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2274, "timeslot": 2499}},
|
||||
{"pk": 2500, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2275, "timeslot": 2500}},
|
||||
{"pk": 2501, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2276, "timeslot": 2501}},
|
||||
{"pk": 2502, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2277, "timeslot": 2502}},
|
||||
{"pk": 2503, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2278, "timeslot": 2503}},
|
||||
{"pk": 2504, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2279, "timeslot": 2504}},
|
||||
{"pk": 2505, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2280, "timeslot": 2505}},
|
||||
{"pk": 2506, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 22087, "timeslot": 2506}},
|
||||
{"pk": 2507, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2282, "timeslot": 2507}},
|
||||
{"pk": 2508, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2283, "timeslot": 2508}},
|
||||
{"pk": 2509, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2284, "timeslot": 2509}},
|
||||
{"pk": 2510, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2285, "timeslot": 2510}},
|
||||
{"pk": 2511, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2286, "timeslot": 2511}},
|
||||
{"pk": 2512, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2287, "timeslot": 2512}},
|
||||
{"pk": 2513, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2287, "timeslot": 2513}},
|
||||
{"pk": 2514, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2288, "timeslot": 2514}},
|
||||
{"pk": 2515, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 22081, "timeslot": 2920}},
|
||||
{"pk": 2516, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 22083, "timeslot": 2923}},
|
||||
{"pk": 2517, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 22085, "timeslot": 2924}},
|
||||
{"pk": 2518, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 2263, "timeslot": 2925}},
|
||||
{"pk": 2519, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "Auto created", "session": 22089, "timeslot": 2926}},
|
||||
{"pk": 92520, "model": "meeting.scheduledsession", "fields": {"schedule": 24, "notes": "manually created", "timeslot": 2933}},
|
||||
|
||||
{"pk": 206, "model": "meeting.room", "fields": {"meeting": 83, "name": "212/213", "capacity": 60}},
|
||||
{"pk": 207, "model": "meeting.room", "fields": {"meeting": 83, "name": "243", "capacity": 100}},
|
||||
{"pk": 208, "model": "meeting.room", "fields": {"meeting": 83, "name": "253", "capacity": 100}},
|
||||
{"pk": 209, "model": "meeting.room", "fields": {"meeting": 83, "name": "252A", "capacity": 100}},
|
||||
{"pk": 210, "model": "meeting.room", "fields": {"meeting": 83, "name": "241", "capacity": 200}},
|
||||
{"pk": 211, "model": "meeting.room", "fields": {"meeting": 83, "name": "252B", "capacity": 200}},
|
||||
{"pk": 212, "model": "meeting.room", "fields": {"meeting": 83, "name": "242AB", "capacity": 260}},
|
||||
{"pk": 213, "model": "meeting.room", "fields": {"meeting": 83, "name": "Maillot", "capacity": 380}},
|
||||
{"pk": 214, "model": "meeting.room", "fields": {"meeting": 83, "name": "Amphitheatre Bleu", "capacity": 826}},
|
||||
{"pk": 215, "model": "meeting.room", "fields": {"meeting": 83, "name": "Hall Maillot A", "capacity": 1000}},
|
||||
{"pk": 216, "model": "meeting.room", "fields": {"meeting": 83, "name": "Salon Etoile d'Or (Concorde Hotel)", "capacity": 1000}},
|
||||
|
||||
|
||||
{"pk": 2371, "model": "meeting.timeslot", "fields": {"name": "Morning Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 206, "show_location": true, "time": "2012-03-27 09:00:00", "duration": 9000, "type": "session"}},
|
||||
{"pk": 2372, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session III", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 211, "show_location": true, "time": "2012-03-29 17:40:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2373, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 212, "show_location": true, "time": "2012-03-26 13:00:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2374, "model": "meeting.timeslot", "fields": {"name": "Morning Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 211, "show_location": true, "time": "2012-03-26 09:00:00", "duration": 9000, "type": "session"}},
|
||||
{"pk": 2375, "model": "meeting.timeslot", "fields": {"name": "Morning Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 209, "show_location": true, "time": "2012-03-26 09:00:00", "duration": 9000, "type": "session"}},
|
||||
{"pk": 2376, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 213, "show_location": true, "time": "2012-03-26 13:00:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2377, "model": "meeting.timeslot", "fields": {"name": "Morning Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 213, "show_location": true, "time": "2012-03-28 09:00:00", "duration": 9000, "type": "session"}},
|
||||
{"pk": 2378, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session II", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 212, "show_location": true, "time": "2012-03-29 15:20:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2379, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session II", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 211, "show_location": true, "time": "2012-03-27 15:20:00", "duration": 6000, "type": "session"}},
|
||||
{"pk": 2380, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session III", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 206, "show_location": true, "time": "2012-03-29 17:40:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2381, "model": "meeting.timeslot", "fields": {"name": "Morning Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 207, "show_location": true, "time": "2012-03-26 09:00:00", "duration": 9000, "type": "session"}},
|
||||
{"pk": 2382, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session III", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 210, "show_location": true, "time": "2012-03-29 17:40:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2383, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 207, "show_location": true, "time": "2012-03-26 13:00:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2384, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session III", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 208, "show_location": true, "time": "2012-03-27 17:10:00", "duration": 3600, "type": "session"}},
|
||||
{"pk": 2385, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session II", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 210, "show_location": true, "time": "2012-03-27 15:20:00", "duration": 6000, "type": "session"}},
|
||||
{"pk": 2386, "model": "meeting.timeslot", "fields": {"name": "Morning Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 208, "show_location": true, "time": "2012-03-29 09:00:00", "duration": 9000, "type": "session"}},
|
||||
{"pk": 2387, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 212, "show_location": true, "time": "2012-03-27 13:00:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2388, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 212, "show_location": true, "time": "2012-03-28 13:00:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2389, "model": "meeting.timeslot", "fields": {"name": "Morning Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 210, "show_location": true, "time": "2012-03-26 09:00:00", "duration": 9000, "type": "session"}},
|
||||
{"pk": 2390, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 212, "show_location": true, "time": "2012-03-30 11:20:00", "duration": 3600, "type": "session"}},
|
||||
{"pk": 2391, "model": "meeting.timeslot", "fields": {"name": "Morning Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 213, "show_location": true, "time": "2012-03-26 09:00:00", "duration": 9000, "type": "session"}},
|
||||
{"pk": 2392, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session II", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 213, "show_location": true, "time": "2012-03-29 15:20:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2393, "model": "meeting.timeslot", "fields": {"name": "Morning Session I", "meeting": 83, "modified": "2012-03-05 13:56:51", "location": 210, "show_location": true, "time": "2012-03-29 09:00:00", "duration": 9000, "type": "session"}},
|
||||
{"pk": 2394, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 207, "show_location": true, "time": "2012-03-27 13:00:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2395, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 210, "show_location": true, "time": "2012-03-28 13:00:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2396, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session II", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 207, "show_location": true, "time": "2012-03-29 15:20:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2397, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session II", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 208, "show_location": true, "time": "2012-03-26 15:10:00", "duration": 3600, "type": "session"}},
|
||||
{"pk": 2398, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session III", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 207, "show_location": true, "time": "2012-03-27 17:10:00", "duration": 3600, "type": "session"}},
|
||||
{"pk": 2399, "model": "meeting.timeslot", "fields": {"name": "Morning Session I", "meeting": 83, "modified": "2012-03-01 08:29:17", "location": 213, "show_location": true, "time": "2012-03-27 09:00:00", "duration": 9000, "type": "session"}},
|
||||
{"pk": 2400, "model": "meeting.timeslot", "fields": {"name": "Morning Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 208, "show_location": true, "time": "2012-03-28 09:00:00", "duration": 9000, "type": "session"}},
|
||||
{"pk": 2401, "model": "meeting.timeslot", "fields": {"name": "Morning Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 206, "show_location": true, "time": "2012-03-29 09:00:00", "duration": 9000, "type": "session"}},
|
||||
{"pk": 2402, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 210, "show_location": true, "time": "2012-03-29 13:00:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2403, "model": "meeting.timeslot", "fields": {"name": "Morning Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 209, "show_location": true, "time": "2012-03-28 09:00:00", "duration": 9000, "type": "session"}},
|
||||
{"pk": 2404, "model": "meeting.timeslot", "fields": {"name": "Morning Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 212, "show_location": true, "time": "2012-03-27 09:00:00", "duration": 9000, "type": "session"}},
|
||||
{"pk": 2405, "model": "meeting.timeslot", "fields": {"name": "Morning Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 213, "show_location": true, "time": "2012-03-30 09:00:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2406, "model": "meeting.timeslot", "fields": {"name": "Morning Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 207, "show_location": true, "time": "2012-03-30 09:00:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2407, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 213, "show_location": true, "time": "2012-03-27 13:00:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2408, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 209, "show_location": true, "time": "2012-03-30 11:20:00", "duration": 3600, "type": "session"}},
|
||||
{"pk": 2409, "model": "meeting.timeslot", "fields": {"name": "Morning Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 211, "show_location": true, "time": "2012-03-28 09:00:00", "duration": 9000, "type": "session"}},
|
||||
{"pk": 2410, "model": "meeting.timeslot", "fields": {"name": "Morning Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 213, "show_location": true, "time": "2012-03-29 09:00:00", "duration": 9000, "type": "session"}},
|
||||
{"pk": 2411, "model": "meeting.timeslot", "fields": {"name": "Morning Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 207, "show_location": true, "time": "2012-03-27 09:00:00", "duration": 9000, "type": "session"}},
|
||||
{"pk": 2412, "model": "meeting.timeslot", "fields": {"name": "Morning Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 208, "show_location": true, "time": "2012-03-30 09:00:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2413, "model": "meeting.timeslot", "fields": {"name": "Morning Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 211, "show_location": true, "time": "2012-03-27 09:00:00", "duration": 9000, "type": "session"}},
|
||||
{"pk": 2414, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session III", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 213, "show_location": true, "time": "2012-03-29 17:40:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2415, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session II", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 212, "show_location": true, "time": "2012-03-28 15:10:00", "duration": 3600, "type": "session"}},
|
||||
{"pk": 2416, "model": "meeting.timeslot", "fields": {"name": "Morning Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 211, "show_location": true, "time": "2012-03-30 09:00:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2417, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session II", "meeting": 83, "modified": "2012-02-24 00:00:00", "location": 213, "show_location": true, "time": "2012-03-26 15:10:00", "duration": 3600, "type": "session"}},
|
||||
{"pk": 2418, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session I", "meeting": 83, "modified": "2012-02-24 00:00:00", "location": 211, "show_location": true, "time": "2012-03-27 13:00:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2419, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 207, "show_location": true, "time": "2012-03-28 13:00:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2420, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session II", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 206, "show_location": true, "time": "2012-03-26 15:10:00", "duration": 3600, "type": "session"}},
|
||||
{"pk": 2421, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session II", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 211, "show_location": true, "time": "2012-03-28 15:10:00", "duration": 3600, "type": "session"}},
|
||||
{"pk": 2422, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session II", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 210, "show_location": true, "time": "2012-03-30 12:30:00", "duration": 3600, "type": "session"}},
|
||||
{"pk": 2423, "model": "meeting.timeslot", "fields": {"name": "Morning Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 211, "show_location": true, "time": "2012-03-29 09:00:00", "duration": 9000, "type": "session"}},
|
||||
{"pk": 2424, "model": "meeting.timeslot", "fields": {"name": "Morning Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 212, "show_location": true, "time": "2012-03-26 09:00:00", "duration": 9000, "type": "session"}},
|
||||
{"pk": 2425, "model": "meeting.timeslot", "fields": {"name": "Morning Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 210, "show_location": true, "time": "2012-03-28 09:00:00", "duration": 9000, "type": "session"}},
|
||||
{"pk": 2426, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session II", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 208, "show_location": true, "time": "2012-03-29 15:20:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2427, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session II", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 209, "show_location": true, "time": "2012-03-29 15:20:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2428, "model": "meeting.timeslot", "fields": {"name": "Morning Session I", "meeting": 83, "modified": "2012-03-01 08:28:55", "location": 212, "show_location": true, "time": "2012-03-28 09:00:00", "duration": 9000, "type": "session"}},
|
||||
{"pk": 2429, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session II", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 209, "show_location": true, "time": "2012-03-28 15:10:00", "duration": 3600, "type": "session"}},
|
||||
{"pk": 2430, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 207, "show_location": true, "time": "2012-03-29 13:00:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2431, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session III", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 209, "show_location": true, "time": "2012-03-29 17:40:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2432, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session III", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 211, "show_location": true, "time": "2012-03-27 17:10:00", "duration": 3600, "type": "session"}},
|
||||
{"pk": 2433, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 208, "show_location": true, "time": "2012-03-28 13:00:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2434, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session II", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 213, "show_location": true, "time": "2012-03-27 15:20:00", "duration": 6000, "type": "session"}},
|
||||
{"pk": 2435, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 210, "show_location": true, "time": "2012-03-30 11:20:00", "duration": 3600, "type": "session"}},
|
||||
{"pk": 2436, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session III", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 212, "show_location": true, "time": "2012-03-27 17:10:00", "duration": 3600, "type": "session"}},
|
||||
{"pk": 2437, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session III", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 208, "show_location": true, "time": "2012-03-29 17:40:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2438, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 211, "show_location": true, "time": "2012-03-26 13:00:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2439, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session II", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 211, "show_location": true, "time": "2012-03-26 15:10:00", "duration": 3600, "type": "session"}},
|
||||
{"pk": 2440, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session III", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 207, "show_location": true, "time": "2012-03-29 17:40:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2441, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 209, "show_location": true, "time": "2012-03-28 13:00:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2442, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session III", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 212, "show_location": true, "time": "2012-03-29 17:40:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2443, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session II", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 206, "show_location": true, "time": "2012-03-29 15:20:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2444, "model": "meeting.timeslot", "fields": {"name": "Morning Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 210, "show_location": true, "time": "2012-03-30 09:00:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2445, "model": "meeting.timeslot", "fields": {"name": "Morning Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 208, "show_location": true, "time": "2012-03-26 09:00:00", "duration": 9000, "type": "session"}},
|
||||
{"pk": 2446, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session II", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 209, "show_location": true, "time": "2012-03-27 15:20:00", "duration": 6000, "type": "session"}},
|
||||
{"pk": 2447, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session III", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 209, "show_location": true, "time": "2012-03-27 17:10:00", "duration": 3600, "type": "session"}},
|
||||
{"pk": 2448, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 213, "show_location": true, "time": "2012-03-30 11:20:00", "duration": 3600, "type": "session"}},
|
||||
{"pk": 2449, "model": "meeting.timeslot", "fields": {"name": "Morning Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 206, "show_location": true, "time": "2012-03-28 09:00:00", "duration": 9000, "type": "session"}},
|
||||
{"pk": 2450, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session III", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 206, "show_location": true, "time": "2012-03-27 17:10:00", "duration": 3600, "type": "session"}},
|
||||
{"pk": 2451, "model": "meeting.timeslot", "fields": {"name": "Morning Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 206, "show_location": true, "time": "2012-03-30 09:00:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2452, "model": "meeting.timeslot", "fields": {"name": "Morning Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 207, "show_location": true, "time": "2012-03-29 09:00:00", "duration": 9000, "type": "session"}},
|
||||
{"pk": 2453, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session II", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 209, "show_location": true, "time": "2012-03-26 15:10:00", "duration": 3600, "type": "session"}},
|
||||
{"pk": 2454, "model": "meeting.timeslot", "fields": {"name": "Morning Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 210, "show_location": true, "time": "2012-03-27 09:00:00", "duration": 9000, "type": "session"}},
|
||||
{"pk": 2455, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 211, "show_location": true, "time": "2012-03-30 11:20:00", "duration": 3600, "type": "session"}},
|
||||
{"pk": 2456, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session II", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 211, "show_location": true, "time": "2012-03-30 12:30:00", "duration": 3600, "type": "session"}},
|
||||
{"pk": 2457, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 212, "show_location": true, "time": "2012-03-29 13:00:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2458, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session II", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 207, "show_location": true, "time": "2012-03-26 15:10:00", "duration": 3600, "type": "session"}},
|
||||
{"pk": 2459, "model": "meeting.timeslot", "fields": {"name": "Morning Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 212, "show_location": true, "time": "2012-03-29 09:00:00", "duration": 9000, "type": "session"}},
|
||||
{"pk": 2460, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session II", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 206, "show_location": true, "time": "2012-03-27 15:20:00", "duration": 6000, "type": "session"}},
|
||||
{"pk": 2461, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 210, "show_location": true, "time": "2012-03-27 13:00:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2462, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 209, "show_location": true, "time": "2012-03-27 13:00:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2463, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session II", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 210, "show_location": true, "time": "2012-03-29 15:20:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2464, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session II", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 208, "show_location": true, "time": "2012-03-30 12:30:00", "duration": 3600, "type": "session"}},
|
||||
{"pk": 2465, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session II", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 213, "show_location": true, "time": "2012-03-28 15:10:00", "duration": 3600, "type": "session"}},
|
||||
{"pk": 2466, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 208, "show_location": true, "time": "2012-03-29 13:00:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2467, "model": "meeting.timeslot", "fields": {"name": "Morning Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 208, "show_location": true, "time": "2012-03-27 09:00:00", "duration": 9000, "type": "session"}},
|
||||
{"pk": 2468, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 206, "show_location": true, "time": "2012-03-27 13:00:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2469, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session III", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 210, "show_location": true, "time": "2012-03-27 17:10:00", "duration": 3600, "type": "session"}},
|
||||
{"pk": 2470, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session II", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 212, "show_location": true, "time": "2012-03-27 15:20:00", "duration": 6000, "type": "session"}},
|
||||
{"pk": 2471, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 206, "show_location": true, "time": "2012-03-28 13:00:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2472, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session II", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 212, "show_location": true, "time": "2012-03-26 15:10:00", "duration": 3600, "type": "session"}},
|
||||
{"pk": 2473, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 208, "show_location": true, "time": "2012-03-26 13:00:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2474, "model": "meeting.timeslot", "fields": {"name": "Morning Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 207, "show_location": true, "time": "2012-03-28 09:00:00", "duration": 9000, "type": "session"}},
|
||||
{"pk": 2475, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 208, "show_location": true, "time": "2012-03-27 13:00:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2476, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 206, "show_location": true, "time": "2012-03-29 13:00:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2477, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session II", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 208, "show_location": true, "time": "2012-03-28 15:10:00", "duration": 3600, "type": "session"}},
|
||||
{"pk": 2478, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 208, "show_location": true, "time": "2012-03-27 13:00:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2479, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session II", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 207, "show_location": true, "time": "2012-03-28 15:10:00", "duration": 3600, "type": "session"}},
|
||||
{"pk": 2480, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session II", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 211, "show_location": true, "time": "2012-03-29 15:20:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2481, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 211, "show_location": true, "time": "2012-03-28 13:00:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2482, "model": "meeting.timeslot", "fields": {"name": "Morning Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 206, "show_location": true, "time": "2012-03-26 09:00:00", "duration": 9000, "type": "session"}},
|
||||
{"pk": 2483, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session II", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 210, "show_location": true, "time": "2012-03-28 15:10:00", "duration": 3600, "type": "session"}},
|
||||
{"pk": 2484, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 209, "show_location": true, "time": "2012-03-29 13:00:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2485, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 211, "show_location": true, "time": "2012-03-29 13:00:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2486, "model": "meeting.timeslot", "fields": {"name": "Morning Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 212, "show_location": true, "time": "2012-03-30 09:00:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2487, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session II", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 206, "show_location": true, "time": "2012-03-28 15:10:00", "duration": 3600, "type": "session"}},
|
||||
{"pk": 2488, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 213, "show_location": true, "time": "2012-03-29 13:00:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2489, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session I", "meeting": 83, "modified": "2012-03-24 03:15:31", "location": 209, "show_location": true, "time": "2012-03-26 13:00:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2490, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 206, "show_location": true, "time": "2012-03-26 13:00:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2491, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 208, "show_location": true, "time": "2012-03-30 11:20:00", "duration": 3600, "type": "session"}},
|
||||
{"pk": 2492, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session II", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 212, "show_location": true, "time": "2012-03-30 12:30:00", "duration": 3600, "type": "session"}},
|
||||
{"pk": 2493, "model": "meeting.timeslot", "fields": {"name": "Morning Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 209, "show_location": true, "time": "2012-03-30 09:00:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2494, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 206, "show_location": true, "time": "2012-03-30 11:20:00", "duration": 3600, "type": "session"}},
|
||||
{"pk": 2495, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session II", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 206, "show_location": true, "time": "2012-03-30 12:30:00", "duration": 3600, "type": "session"}},
|
||||
{"pk": 2496, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session II", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 208, "show_location": true, "time": "2012-03-27 15:20:00", "duration": 6000, "type": "session"}},
|
||||
{"pk": 2497, "model": "meeting.timeslot", "fields": {"name": "IETF Operations and Administration Plenary", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 214, "show_location": true, "time": "2012-03-28 16:30:00", "duration": 10800, "type": "plenary"}},
|
||||
{"pk": 2498, "model": "meeting.timeslot", "fields": {"name": "Technical Plenary", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 214, "show_location": true, "time": "2012-03-26 16:30:00", "duration": 10800, "type": "plenary"}},
|
||||
{"pk": 2499, "model": "meeting.timeslot", "fields": {"name": "Tools for Creating Internet-Drafts Tutorial", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 210, "show_location": true, "time": "2012-03-25 13:00:00", "duration": 6600, "type": "other"}},
|
||||
{"pk": 2500, "model": "meeting.timeslot", "fields": {"name": "Newcomers' Orientation", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 211, "show_location": true, "time": "2012-03-25 13:00:00", "duration": 6600, "type": "other"}},
|
||||
{"pk": 2501, "model": "meeting.timeslot", "fields": {"name": "Operations, Administration, and Maintenance Tutorial", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 210, "show_location": true, "time": "2012-03-25 15:00:00", "duration": 6600, "type": "other"}},
|
||||
{"pk": 2502, "model": "meeting.timeslot", "fields": {"name": "Newcomers' Orientation (French)", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 211, "show_location": true, "time": "2012-03-25 15:00:00", "duration": 6600, "type": "other"}},
|
||||
{"pk": 2503, "model": "meeting.timeslot", "fields": {"name": "Meetecho Tutorial for Participants and WG Chairs", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 209, "show_location": true, "time": "2012-03-25 13:00:00", "duration": 6600, "type": "other"}},
|
||||
{"pk": 2504, "model": "meeting.timeslot", "fields": {"name": "Welcome Reception", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 215, "show_location": true, "time": "2012-03-25 17:00:00", "duration": 7200, "type": "other"}},
|
||||
{"pk": 2505, "model": "meeting.timeslot", "fields": {"name": "Newcomers' Meet and Greet (open to Newcomers and WG chairs only)", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 216, "show_location": true, "time": "2012-03-25 16:00:00", "duration": 3600, "type": "other"}},
|
||||
{"pk": 2506, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session I", "meeting": 83, "modified": "2012-03-24 03:16:22", "location": 210, "show_location": true, "time": "2012-03-26 13:00:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2507, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session II", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 210, "show_location": true, "time": "2012-03-26 15:10:00", "duration": 3600, "type": "session"}},
|
||||
{"pk": 2508, "model": "meeting.timeslot", "fields": {"name": "Morning Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 209, "show_location": true, "time": "2012-03-27 09:00:00", "duration": 9000, "type": "session"}},
|
||||
{"pk": 2509, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session II", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 207, "show_location": true, "time": "2012-03-27 15:20:00", "duration": 6000, "type": "session"}},
|
||||
{"pk": 2510, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 213, "show_location": true, "time": "2012-03-28 13:00:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2511, "model": "meeting.timeslot", "fields": {"name": "Morning Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 209, "show_location": true, "time": "2012-03-29 09:00:00", "duration": 9000, "type": "session"}},
|
||||
{"pk": 2512, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session I", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 207, "show_location": true, "time": "2012-03-30 11:20:00", "duration": 3600, "type": "session"}},
|
||||
{"pk": 2513, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session II", "meeting": 83, "modified": "2012-02-23 00:00:00", "location": 207, "show_location": true, "time": "2012-03-30 12:30:00", "duration": 3600, "type": "session"}},
|
||||
{"pk": 2514, "model": "meeting.timeslot", "fields": {"name": "IEPG Meeting", "meeting": 83, "modified": "2012-02-24 00:00:00", "location": 210, "show_location": true, "time": "2012-03-25 10:00:00", "duration": 7200, "type": "other"}},
|
||||
|
||||
{"pk": 2898, "model": "meeting.timeslot", "fields": {"name": "IETF Registration", "meeting": 83, "modified": "2012-02-26 00:36:50", "location": null, "show_location": true, "time": "2012-03-25 11:00:00", "duration": 28800, "type": "reg"}},
|
||||
{"pk": 2899, "model": "meeting.timeslot", "fields": {"name": "IETF Registration", "meeting": 83, "modified": "2012-02-26 00:36:50", "location": null, "show_location": true, "time": "2012-03-26 08:00:00", "duration": 36000, "type": "reg"}},
|
||||
{"pk": 2900, "model": "meeting.timeslot", "fields": {"name": "IETF Registration", "meeting": 83, "modified": "2012-02-26 00:36:50", "location": null, "show_location": true, "time": "2012-03-27 08:00:00", "duration": 36000, "type": "reg"}},
|
||||
{"pk": 2901, "model": "meeting.timeslot", "fields": {"name": "IETF Registration", "meeting": 83, "modified": "2012-02-26 00:36:50", "location": null, "show_location": true, "time": "2012-03-28 08:00:00", "duration": 32400, "type": "reg"}},
|
||||
{"pk": 2902, "model": "meeting.timeslot", "fields": {"name": "IETF Registration", "meeting": 83, "modified": "2012-02-26 00:36:50", "location": null, "show_location": true, "time": "2012-03-29 08:00:00", "duration": 32400, "type": "reg"}},
|
||||
{"pk": 2903, "model": "meeting.timeslot", "fields": {"name": "IETF Registration", "meeting": 83, "modified": "2012-02-26 00:36:50", "location": null, "show_location": true, "time": "2012-03-30 08:00:00", "duration": 10800, "type": "reg"}},
|
||||
{"pk": 2904, "model": "meeting.timeslot", "fields": {"name": "Break", "meeting": 83, "modified": "2012-02-26 00:36:50", "location": null, "show_location": true, "time": "2012-03-25 11:30:00", "duration": 5400, "type": "break"}},
|
||||
{"pk": 2905, "model": "meeting.timeslot", "fields": {"name": "Break", "meeting": 83, "modified": "2012-02-26 00:36:50", "location": null, "show_location": true, "time": "2012-03-26 11:30:00", "duration": 5400, "type": "break"}},
|
||||
{"pk": 2906, "model": "meeting.timeslot", "fields": {"name": "Break", "meeting": 83, "modified": "2012-02-26 00:36:50", "location": null, "show_location": true, "time": "2012-03-27 11:30:00", "duration": 5400, "type": "break"}},
|
||||
{"pk": 2907, "model": "meeting.timeslot", "fields": {"name": "Break", "meeting": 83, "modified": "2012-02-26 00:36:50", "location": null, "show_location": true, "time": "2012-03-28 11:30:00", "duration": 5400, "type": "break"}},
|
||||
{"pk": 2908, "model": "meeting.timeslot", "fields": {"name": "Break", "meeting": 83, "modified": "2012-02-26 00:36:50", "location": null, "show_location": true, "time": "2012-03-29 11:30:00", "duration": 5400, "type": "break"}},
|
||||
{"pk": 2909, "model": "meeting.timeslot", "fields": {"name": "Beverages", "meeting": 83, "modified": "2012-02-26 00:36:50", "location": null, "show_location": true, "time": "2012-03-26 08:00:00", "duration": 3600, "type": "break"}},
|
||||
{"pk": 2910, "model": "meeting.timeslot", "fields": {"name": "Beverages", "meeting": 83, "modified": "2012-02-26 00:36:50", "location": null, "show_location": true, "time": "2012-03-27 08:00:00", "duration": 3600, "type": "break"}},
|
||||
{"pk": 2911, "model": "meeting.timeslot", "fields": {"name": "Beverages", "meeting": 83, "modified": "2012-02-26 00:36:50", "location": null, "show_location": true, "time": "2012-03-28 08:00:00", "duration": 3600, "type": "break"}},
|
||||
{"pk": 2912, "model": "meeting.timeslot", "fields": {"name": "Beverages", "meeting": 83, "modified": "2012-02-26 00:36:50", "location": null, "show_location": true, "time": "2012-03-29 08:00:00", "duration": 3600, "type": "break"}},
|
||||
{"pk": 2913, "model": "meeting.timeslot", "fields": {"name": "Beverages", "meeting": 83, "modified": "2012-02-26 00:36:50", "location": null, "show_location": true, "time": "2012-03-30 08:00:00", "duration": 3600, "type": "break"}},
|
||||
{"pk": 2914, "model": "meeting.timeslot", "fields": {"name": "Beverage and Snack Break I", "meeting": 83, "modified": "2012-02-26 00:36:50", "location": null, "show_location": true, "time": "2012-03-26 16:10:00", "duration": 1200, "type": "break"}},
|
||||
{"pk": 2915, "model": "meeting.timeslot", "fields": {"name": "Beverage and Snack Break I", "meeting": 83, "modified": "2012-02-26 00:36:50", "location": null, "show_location": true, "time": "2012-03-27 15:00:00", "duration": 1200, "type": "break"}},
|
||||
{"pk": 2916, "model": "meeting.timeslot", "fields": {"name": "Beverage and Snack Break I", "meeting": 83, "modified": "2012-02-26 00:36:50", "location": null, "show_location": true, "time": "2012-03-28 16:10:00", "duration": 1200, "type": "break"}},
|
||||
{"pk": 2917, "model": "meeting.timeslot", "fields": {"name": "Beverage and Snack Break I", "meeting": 83, "modified": "2012-02-26 00:36:50", "location": null, "show_location": true, "time": "2012-03-30 11:00:00", "duration": 1200, "type": "break"}},
|
||||
{"pk": 2918, "model": "meeting.timeslot", "fields": {"name": "Beverage and Snack Break II", "meeting": 83, "modified": "2012-02-26 00:36:50", "location": null, "show_location": true, "time": "2012-03-29 17:20:00", "duration": 1200, "type": "break"}},
|
||||
{"pk": 2919, "model": "meeting.timeslot", "fields": {"name": "Beverage Break", "meeting": 83, "modified": "2012-02-26 00:36:50", "location": null, "show_location": true, "time": "2012-03-29 15:00:00", "duration": 1200, "type": "break"}},
|
||||
{"pk": 2920, "model": "meeting.timeslot", "fields": {"name": "", "meeting": 83, "modified": "2012-02-27 19:16:01", "location": 213, "show_location": true, "time": "2012-03-27 17:10:00", "duration": 3600, "type": "session"}},
|
||||
{"pk": 2921, "model": "meeting.timeslot", "fields": {"name": "", "meeting": 83, "modified": "2012-02-27 19:21:15", "location": 213, "show_location": true, "time": "2012-03-30 12:30:00", "duration": 3600, "type": "session"}},
|
||||
{"pk": 2923, "model": "meeting.timeslot", "fields": {"name": "Code Sprint", "meeting": 83, "modified": "2012-03-05 11:15:18", "location": 215, "show_location": true, "time": "2012-03-24 09:30:00", "duration": 30600, "type": "other"}},
|
||||
{"pk": 2924, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session I", "meeting": 83, "modified": "2012-03-10 13:38:37", "location": 208, "show_location": true, "time": "2012-03-28 09:00:00", "duration": 9000, "type": "session"}},
|
||||
{"pk": 2925, "model": "meeting.timeslot", "fields": {"name": "Afternoon Session I", "meeting": 83, "modified": "2012-03-24 03:24:15", "location": 206, "show_location": true, "time": "2012-03-26 13:00:00", "duration": 7200, "type": "session"}},
|
||||
{"pk": 2926, "model": "meeting.timeslot", "fields": {"name": "Working Group Chairs' Lunch Tutorial", "meeting": 83, "modified": "2012-03-28 09:52:00", "location": 211, "show_location": false, "time": "2012-03-28 11:30:00", "duration": 5400, "type": "other"}},
|
||||
|
||||
{"pk": 2927, "model": "meeting.timeslot", "fields": {"name": "Lunch BOF session", "meeting": 83, "modified": "2012-03-28 09:52:00", "location": 206, "show_location": true, "time": "2012-03-28 11:30:00", "duration": 5400, "type": "session"}},
|
||||
{"pk": 2928, "model": "meeting.timeslot", "fields": {"name": "Lunch BOF session", "meeting": 83, "modified": "2012-03-28 09:52:00", "location": 207, "show_location": true, "time": "2012-03-28 11:30:00", "duration": 5400, "type": "session"}},
|
||||
{"pk": 2929, "model": "meeting.timeslot", "fields": {"name": "Lunch BOF session", "meeting": 83, "modified": "2012-03-28 09:52:00", "location": 209, "show_location": true, "time": "2012-03-28 11:30:00", "duration": 5400, "type": "session"}},
|
||||
{"pk": 2930, "model": "meeting.timeslot", "fields": {"name": "Lunch BOF session", "meeting": 83, "modified": "2012-03-28 09:52:00", "location": 210, "show_location": true, "time": "2012-03-28 11:30:00", "duration": 5400, "type": "session"}},
|
||||
{"pk": 2931, "model": "meeting.timeslot", "fields": {"name": "Lunch BOF session", "meeting": 83, "modified": "2012-03-28 09:52:00", "location": 212, "show_location": true, "time": "2012-03-28 11:30:00", "duration": 5400, "type": "session"}},
|
||||
{"pk": 2932, "model": "meeting.timeslot", "fields": {"name": "Lunch BOF session", "meeting": 83, "modified": "2012-03-28 09:52:00", "location": 216, "show_location": true, "time": "2012-03-28 11:30:00", "duration": 5400, "type": "session"}},
|
||||
{"pk": 2933, "model": "meeting.timeslot", "fields": {"name": "Afternoon session II", "meeting": 83, "modified": "2012-03-28 09:52:00", "location": 209, "show_location": true, "time": "2012-03-30 12:30:00", "duration": 3600, "type": "session"}},
|
||||
|
||||
{"pk": 2157, "model": "meeting.session", "fields": {"status": "sched", "requested": "2011-12-19 00:00:00", "short": "", "attendees": 45, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "please, no evening sessions.", "requested_by": 630, "scheduled": "2012-02-23 00:00:00", "group": 1223, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2158, "model": "meeting.session", "fields": {"status": "sched", "requested": "2011-12-19 00:00:00", "short": "", "attendees": 100, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 109802, "scheduled": "2012-02-23 00:00:00", "group": 1619, "meeting": 83, "requested_duration": 5400}},
|
||||
{"pk": 2159, "model": "meeting.session", "fields": {"status": "sched", "requested": "2011-12-19 00:00:00", "short": "", "attendees": 120, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 102154, "scheduled": "2012-02-23 00:00:00", "group": 1802, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2160, "model": "meeting.session", "fields": {"status": "sched", "requested": "2011-12-19 00:00:00", "short": "", "attendees": 100, "name": "", "agenda_note": "Combined with APPAREA", "modified": "2012-02-23 00:00:00", "comments": "Please list this on the schedule as shared with the AppsArea meeting (Monday morning). (other conflicts: All Apps and Sec Area BoFs)", "requested_by": 102154, "scheduled": "2012-02-23 00:00:00", "group": 1805, "meeting": 83, "requested_duration": 9000}},
|
||||
{"pk": 2161, "model": "meeting.session", "fields": {"status": "sched", "requested": "2011-12-19 00:00:00", "short": "", "attendees": 50, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "we would prefer meeting on Mon/Tue", "requested_by": 105992, "scheduled": "2012-02-23 00:00:00", "group": 1747, "meeting": 83, "requested_duration": 9000}},
|
||||
{"pk": 2162, "model": "meeting.session", "fields": {"status": "sched", "requested": "2011-12-19 00:00:00", "short": "", "attendees": 150, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "(other conflicts: IRTF RRG, RTG BOFs, VNRG, SDN)", "requested_by": 10064, "scheduled": "2012-02-23 00:00:00", "group": 1524, "meeting": 83, "requested_duration": 9000}},
|
||||
{"pk": 12162, "model": "meeting.session", "fields": {"status": "sched", "requested": "2011-12-19 00:00:00", "short": "", "attendees": 150, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "(other conflicts: IRTF RRG, RTG BOFs, VNRG, SDN)", "requested_by": 10064, "scheduled": "2012-02-23 00:00:00", "group": 1524, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2163, "model": "meeting.session", "fields": {"status": "sched", "requested": "2011-12-19 00:00:00", "short": "", "attendees": 120, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "French Ice Cream for ADs (other conflicts: IRTF RRG, RTG BOFs)", "requested_by": 106471, "scheduled": "2012-02-23 00:00:00", "group": 1404, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2164, "model": "meeting.session", "fields": {"status": "sched", "requested": "2011-12-19 00:00:00", "short": "", "attendees": 75, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 108822, "scheduled": "2012-02-23 00:00:00", "group": 1751, "meeting": 83, "requested_duration": 5400}},
|
||||
{"pk": 2165, "model": "meeting.session", "fields": {"status": "sched", "requested": "2011-12-19 00:00:00", "short": "", "attendees": 50, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "none", "requested_by": 6766, "scheduled": "2012-02-23 00:00:00", "group": 1546, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2166, "model": "meeting.session", "fields": {"status": "sched", "requested": "2011-12-19 00:00:00", "short": "", "attendees": 50, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 102848, "scheduled": "2012-02-23 00:00:00", "group": 1138, "meeting": 83, "requested_duration": 9000}},
|
||||
{"pk": 2167, "model": "meeting.session", "fields": {"status": "sched", "requested": "2011-12-20 00:00:00", "short": "", "attendees": 80, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 108213, "scheduled": "2012-02-23 00:00:00", "group": 1630, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2168, "model": "meeting.session", "fields": {"status": "sched", "requested": "2011-12-20 00:00:00", "short": "", "attendees": 50, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "NETCONF is very much related to NETMOD. If possible please schedule NETCONF and NETMOD sessions on subsequent days. (other conflicts: nmrg)", "requested_by": 21106, "scheduled": "2012-02-23 00:00:00", "group": 1638, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2169, "model": "meeting.session", "fields": {"status": "sched", "requested": "2011-12-20 00:00:00", "short": "", "attendees": 45, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "(other conflicts: nmrg ncrg)", "requested_by": 109354, "scheduled": "2012-02-23 00:00:00", "group": 1831, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 2170, "model": "meeting.session", "fields": {"status": "sched", "requested": "2011-12-20 00:00:00", "short": "", "attendees": 90, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "would like to have meetecho available", "requested_by": 6771, "scheduled": "2012-02-23 00:00:00", "group": 1830, "meeting": 83, "requested_duration": 5400}},
|
||||
{"pk": 2171, "model": "meeting.session", "fields": {"status": "sched", "requested": "2011-12-20 00:00:00", "short": "", "attendees": 75, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "We also wish to avoid the following sessions:\r\n\r\nmext\r\nsoftwire\r\ndnsext\r\nbehave\r\nv6ops\r\nhomenet\r\n\r\nDue to travel scheduling we would prefer a Thursday session if possible.", "requested_by": 107618, "scheduled": "2012-02-23 00:00:00", "group": 988, "meeting": 83, "requested_duration": 9000}},
|
||||
{"pk": 2172, "model": "meeting.session", "fields": {"status": "sched", "requested": "2011-12-20 00:00:00", "short": "", "attendees": 80, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 10784, "scheduled": "2012-02-23 00:00:00", "group": 1188, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2173, "model": "meeting.session", "fields": {"status": "sched", "requested": "2011-12-21 00:00:00", "short": "", "attendees": 100, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "(other conflicts: rrg, kidns, armd, nbs, plasma)", "requested_by": 21395, "scheduled": "2012-02-23 00:00:00", "group": 1737, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2174, "model": "meeting.session", "fields": {"status": "sched", "requested": "2011-12-29 00:00:00", "short": "", "attendees": 80, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "Please schedule early in the week.\r\nThanks.", "requested_by": 102391, "scheduled": "2012-02-23 00:00:00", "group": 1650, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 12174, "model": "meeting.session", "fields": {"status": "sched", "requested": "2011-12-29 00:00:00", "short": "", "attendees": 80, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "Please schedule early in the week.\r\nThanks.", "requested_by": 102391, "scheduled": "2012-02-23 00:00:00", "group": 1650, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 2175, "model": "meeting.session", "fields": {"status": "sched", "requested": "2011-12-31 00:00:00", "short": "", "attendees": 300, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 20959, "scheduled": "2012-02-23 00:00:00", "group": 1578, "meeting": 83, "requested_duration": 9000}},
|
||||
{"pk": 12175, "model": "meeting.session", "fields": {"status": "sched", "requested": "2011-12-31 00:00:00", "short": "", "attendees": 300, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 20959, "scheduled": "2012-02-23 00:00:00", "group": 1578, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2176, "model": "meeting.session", "fields": {"status": "schedw", "requested": "2012-01-02 00:00:00", "short": "", "attendees": 100, "name": "", "agenda_note": "", "modified": "2012-03-05 13:55:42", "comments": "", "requested_by": 109800, "scheduled": "2012-02-23 00:00:00", "group": 1720, "meeting": 83, "requested_duration": 9000}},
|
||||
{"pk": 2177, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-03 00:00:00", "short": "", "attendees": 50, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "Please schedule Tuesday if possible. It's been on Tuesday lately which has been perfect. (other conflicts: multrans)", "requested_by": 106173, "scheduled": "2012-02-23 00:00:00", "group": 1397, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2178, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-04 00:00:00", "short": "", "attendees": 100, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 106269, "scheduled": "2012-02-23 00:00:00", "group": 1730, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2179, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-04 00:00:00", "short": "", "attendees": 30, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 109800, "scheduled": "2012-02-23 00:00:00", "group": 1682, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2180, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-04 00:00:00", "short": "", "attendees": 30, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "Please try to schedule a session early in the week as we used to have always in the past. Thanks, Patrick", "requested_by": 19925, "scheduled": "2012-02-23 00:00:00", "group": 1518, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 2182, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-05 00:00:00", "short": "", "attendees": 40, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "NETCONF is related to NETMOD. If possible please schedule NETCONF and NETMOD sessions on subsequent days at the beginning of the week, e.g. NETCONF on Monday and NETMOD on Tuesday. Thank you. (other conflicts: nmrg dc IoT)", "requested_by": 105537, "scheduled": "2012-02-23 00:00:00", "group": 1575, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 2183, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-06 00:00:00", "short": "", "attendees": 200, "name": "", "agenda_note": "", "modified": "2012-03-01 08:28:55", "comments": "", "requested_by": 109059, "scheduled": "2012-02-23 00:00:00", "group": 1803, "meeting": 83, "requested_duration": 9000}},
|
||||
{"pk": 2184, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-06 00:00:00", "short": "", "attendees": 100, "name": "", "agenda_note": "Combined with OPSAWG", "modified": "2012-03-07 09:02:17", "comments": "List this session as both the O&M Area Open meeting and the OPSAWG meeting", "requested_by": 101568, "scheduled": "2012-02-23 00:00:00", "group": 1399, "meeting": 83, "requested_duration": 9000}},
|
||||
{"pk": 2185, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-06 00:00:00", "short": "", "attendees": 50, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "Would prefer a mtg on Tues/Wed/Thurs", "requested_by": 104329, "scheduled": "2012-02-23 00:00:00", "group": 1118, "meeting": 83, "requested_duration": 9000}},
|
||||
{"pk": 2186, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-06 00:00:00", "short": "", "attendees": 50, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "Several of the key WG member cannot participate Friday. So please restrict times to other days.", "requested_by": 18331, "scheduled": "2012-02-23 00:00:00", "group": 1132, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2187, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-08 00:00:00", "short": "", "attendees": 80, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "Friday is not preferred (other conflicts: p2prg, vnrg)", "requested_by": 109919, "scheduled": "2012-02-23 00:00:00", "group": 1771, "meeting": 83, "requested_duration": 9000}},
|
||||
{"pk": 2188, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-09 00:00:00", "short": "", "attendees": 200, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "WebEx (mainly for mpls-tp related sessions as many actors of mpls-tp design are not necessarily able to travel) (other conflicts: rrg)", "requested_by": 108279, "scheduled": "2012-02-23 00:00:00", "group": 1140, "meeting": 83, "requested_duration": 9000}},
|
||||
{"pk": 12188, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-09 00:00:00", "short": "", "attendees": 200, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "WebEx (mainly for mpls-tp related sessions as many actors of mpls-tp design are not necessarily able to travel) (other conflicts: rrg)", "requested_by": 108279, "scheduled": "2012-02-23 00:00:00", "group": 1140, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2189, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-09 00:00:00", "short": "", "attendees": 50, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 111091, "scheduled": "2012-02-23 00:00:00", "group": 1788, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2190, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-09 00:00:00", "short": "", "attendees": 125, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 105791, "scheduled": "2012-02-23 00:00:00", "group": 1763, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2191, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-09 00:00:00", "short": "", "attendees": 40, "name": "", "agenda_note": "CANCELED", "modified": "2012-03-16 11:54:56", "comments": "", "requested_by": 105791, "scheduled": "2012-02-23 00:00:00", "group": 1765, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 2192, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-09 00:00:00", "short": "", "attendees": 150, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 105791, "scheduled": "2012-02-23 00:00:00", "group": 1820, "meeting": 83, "requested_duration": 9000}},
|
||||
{"pk": 12192, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-09 00:00:00", "short": "", "attendees": 150, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 105791, "scheduled": "2012-02-23 00:00:00", "group": 1820, "meeting": 83, "requested_duration": 9000}},
|
||||
{"pk": 2193, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-09 00:00:00", "short": "", "attendees": 50, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 105791, "scheduled": "2012-02-23 00:00:00", "group": 1789, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 12193, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-09 00:00:00", "short": "", "attendees": 50, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 105791, "scheduled": "2012-02-23 00:00:00", "group": 1789, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2194, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-09 00:00:00", "short": "", "attendees": 150, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 102830, "scheduled": "2012-02-23 00:00:00", "group": 1816, "meeting": 83, "requested_duration": 9000}},
|
||||
{"pk": 12194, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-09 00:00:00", "short": "", "attendees": 150, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 102830, "scheduled": "2012-02-23 00:00:00", "group": 1816, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2195, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-11 00:00:00", "short": "", "attendees": 100, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 105328, "scheduled": "2012-02-23 00:00:00", "group": 1678, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 12195, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-11 00:00:00", "short": "", "attendees": 100, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 105328, "scheduled": "2012-02-23 00:00:00", "group": 1678, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2196, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-11 00:00:00", "short": "", "attendees": 75, "name": "", "agenda_note": "", "modified": "2012-02-24 00:00:00", "comments": "", "requested_by": 105328, "scheduled": "2012-02-24 00:00:00", "group": 1800, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 12196, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-11 00:00:00", "short": "", "attendees": 75, "name": "", "agenda_note": "", "modified": "2012-02-24 00:00:00", "comments": "", "requested_by": 105328, "scheduled": "2012-02-24 00:00:00", "group": 1800, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2197, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-11 00:00:00", "short": "", "attendees": 50, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "Please schedule for afternoon. A number of key participants will be participating remotely, from the U.S.\r\n\r\nThanks!\r\n\r\n/d", "requested_by": 100927, "scheduled": "2012-02-23 00:00:00", "group": 1827, "meeting": 83, "requested_duration": 5400}},
|
||||
{"pk": 2198, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-12 00:00:00", "short": "", "attendees": 20, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "An early in the week slot would be preferred.", "requested_by": 12671, "scheduled": "2012-02-23 00:00:00", "group": 1437, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 2199, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-12 00:00:00", "short": "", "attendees": 75, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 105046, "scheduled": "2012-02-23 00:00:00", "group": 1628, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 2200, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-13 00:00:00", "short": "", "attendees": 50, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 106812, "scheduled": "2012-02-23 00:00:00", "group": 1796, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 2201, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-13 00:00:00", "short": "", "attendees": 100, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "(other conflicts: p2prg)", "requested_by": 106812, "scheduled": "2012-02-23 00:00:00", "group": 1744, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2202, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-13 00:00:00", "short": "", "attendees": 110, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 4836, "scheduled": "2012-02-23 00:00:00", "group": 1041, "meeting": 83, "requested_duration": 9000}},
|
||||
{"pk": 2203, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-13 00:00:00", "short": "", "attendees": 120, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 13219, "scheduled": "2012-02-23 00:00:00", "group": 1680, "meeting": 83, "requested_duration": 9000}},
|
||||
{"pk": 2204, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-15 00:00:00", "short": "", "attendees": 50, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "(other conflicts: sdnp)", "requested_by": 109430, "scheduled": "2012-02-23 00:00:00", "group": 1780, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2205, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-16 00:00:00", "short": "", "attendees": 60, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 108624, "scheduled": "2012-02-23 00:00:00", "group": 1674, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2206, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-16 00:00:00", "short": "", "attendees": 150, "name": "", "agenda_note": "", "modified": "2012-03-01 08:29:17", "comments": "Please avoid any IAOC meetings,", "requested_by": 100664, "scheduled": "2012-02-23 00:00:00", "group": 1723, "meeting": 83, "requested_duration": 9000}},
|
||||
{"pk": 2207, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-16 00:00:00", "short": "", "attendees": 50, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "(other conflicts: P2PRG)", "requested_by": 107491, "scheduled": "2012-02-23 00:00:00", "group": 1791, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 2208, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-17 00:00:00", "short": "", "attendees": 20, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 107520, "scheduled": "2012-02-23 00:00:00", "group": 1815, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2209, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-17 00:00:00", "short": "", "attendees": 80, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 109884, "scheduled": "2012-02-23 00:00:00", "group": 1755, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2210, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-17 00:00:00", "short": "", "attendees": 100, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 103769, "scheduled": "2012-02-23 00:00:00", "group": 1762, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 2211, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-17 00:00:00", "short": "", "attendees": 70, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 103283, "scheduled": "2012-02-23 00:00:00", "group": 1756, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2212, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-17 00:00:00", "short": "", "attendees": 100, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "Please consider placing this in a consecutive sequence with AVTCORE, such that we can run as a single session with a change of chairs. This may be dependent also on the needs of XRBLOCK to meet or not meet.", "requested_by": 105097, "scheduled": "2012-02-23 00:00:00", "group": 1813, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 2213, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-17 00:00:00", "short": "", "attendees": 50, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 105097, "scheduled": "2012-02-23 00:00:00", "group": 1832, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 2214, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-17 00:00:00", "short": "", "attendees": 150, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "Please no Friday,", "requested_by": 3760, "scheduled": "2012-02-23 00:00:00", "group": 1479, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 2215, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-17 00:00:00", "short": "", "attendees": 200, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "We can live with 2 slots of one hour if that facilitates the scheduling (other conflicts: ICCRG, Complexity RG)", "requested_by": 105255, "scheduled": "2012-02-23 00:00:00", "group": 1775, "meeting": 83, "requested_duration": 7200}},
|
||||
|
||||
{"pk": 2216, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-17 00:00:00", "short": "", "attendees": 100, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 105873, "scheduled": "2012-02-23 00:00:00", "group": 1812, "meeting": 83, "requested_duration": 9000}},
|
||||
|
||||
{"pk": 2217, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-17 00:00:00", "short": "", "attendees": 60, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 108049, "scheduled": "2012-02-23 00:00:00", "group": 1543, "meeting": 83, "requested_duration": 5400}},
|
||||
{"pk": 2218, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-17 00:00:00", "short": "", "attendees": 80, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "not on Friday, please", "requested_by": 108049, "scheduled": "2012-02-23 00:00:00", "group": 1643, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2219, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-17 00:00:00", "short": "", "attendees": 125, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "Can we have the last session on Thursday? We used to do it right after lunch, last time we moved it one slot later in the day, but this time we'd like to have the last 2hr slot of Thursday. Thanks!", "requested_by": 19483, "scheduled": "2012-02-23 00:00:00", "group": 1187, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2220, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-17 00:00:00", "short": "", "attendees": 20, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 107406, "scheduled": "2012-02-23 00:00:00", "group": 1739, "meeting": 83, "requested_duration": 5400}},
|
||||
{"pk": 2221, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-18 00:00:00", "short": "", "attendees": 60, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "(other conflicts: ICCRG, rmcat BoF (RTP congestion control))", "requested_by": 110636, "scheduled": "2012-02-23 00:00:00", "group": 1620, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2222, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-18 00:00:00", "short": "", "attendees": 50, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "(other conflicts: nmrg)", "requested_by": 13775, "scheduled": "2012-02-23 00:00:00", "group": 47, "meeting": 83, "requested_duration": 9000}},
|
||||
{"pk": 2223, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-18 00:00:00", "short": "", "attendees": 50, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "Monday-Wednesday preferred (other conflicts: any TSV BOFs, e.g. there has been talk about doing a BOF on RTP congestion control, that would collide)", "requested_by": 103877, "scheduled": "2012-02-23 00:00:00", "group": 42, "meeting": 83, "requested_duration": 9000}},
|
||||
{"pk": 2224, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-18 00:00:00", "short": "", "attendees": 100, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 107363, "scheduled": "2012-02-23 00:00:00", "group": 1452, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 2225, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-18 00:00:00", "short": "", "attendees": 20, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 21097, "scheduled": "2012-02-23 00:00:00", "group": 1152, "meeting": 83, "requested_duration": 9000}},
|
||||
{"pk": 2227, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-19 00:00:00", "short": "", "attendees": 20, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "Please avoid conflict with any App or Sec area BoFs.", "requested_by": 106842, "scheduled": "2012-02-23 00:00:00", "group": 1783, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 2228, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-19 00:00:00", "short": "", "attendees": 25, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 111434, "scheduled": "2012-02-23 00:00:00", "group": 1612, "meeting": 83, "requested_duration": 5400}},
|
||||
{"pk": 2229, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-20 00:00:00", "short": "", "attendees": 40, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "we have been on the Friday 4 times in a row now, would be nice to be on another day for a change, but no big deal if not. (other conflicts: in general any Security Area WG or BOFs)", "requested_by": 109496, "scheduled": "2012-02-23 00:00:00", "group": 1804, "meeting": 83, "requested_duration": 5400}},
|
||||
{"pk": 2230, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-20 00:00:00", "short": "", "attendees": 40, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "Could also be 1.5 hours. Can *not* be on Friday because one chair (Paul Hoffman) will be hosting a BoF on Friday.", "requested_by": 10083, "scheduled": "2012-02-23 00:00:00", "group": 1740, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 2231, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-22 00:00:00", "short": "", "attendees": 100, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "Please schedule Mon-Wed (co-chair needs to be in Orlando at IEEE Global Internet Symposium on Friday and hence leave on Thursday morning) (other conflicts: ICN, Internet-of-Things)", "requested_by": 11842, "scheduled": "2012-02-23 00:00:00", "group": 32, "meeting": 83, "requested_duration": 9000}},
|
||||
{"pk": 2232, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-23 00:00:00", "short": "", "attendees": 70, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 107998, "scheduled": "2012-02-23 00:00:00", "group": 1764, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2233, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-23 00:00:00", "short": "", "attendees": 125, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 104935, "scheduled": "2012-02-23 00:00:00", "group": 1593, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2234, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-23 00:00:00", "short": "", "attendees": 20, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "(other conflicts: WEIRDS)", "requested_by": 106296, "scheduled": "2012-02-23 00:00:00", "group": 1792, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 2235, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-23 00:00:00", "short": "", "attendees": 120, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 105786, "scheduled": "2012-02-23 00:00:00", "group": 1538, "meeting": 83, "requested_duration": 9000}},
|
||||
{"pk": 2236, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-23 00:00:00", "short": "", "attendees": 30, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 105786, "scheduled": "2012-02-23 00:00:00", "group": 1693, "meeting": 83, "requested_duration": 5400}},
|
||||
{"pk": 2237, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-23 00:00:00", "short": "", "attendees": 75, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "WebEx (we always have remote attendees).", "requested_by": 111529, "scheduled": "2012-02-23 00:00:00", "group": 1801, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2238, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-23 00:00:00", "short": "", "attendees": 70, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "Monday and Tuesday preferable. 2.5 hour slot(s) are fine too.", "requested_by": 103881, "scheduled": "2012-02-23 00:00:00", "group": 1718, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 12238, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-23 00:00:00", "short": "", "attendees": 70, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "Monday and Tuesday preferable. 2.5 hour slot(s) are fine too.", "requested_by": 103881, "scheduled": "2012-02-23 00:00:00", "group": 1718, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2239, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-23 00:00:00", "short": "", "attendees": 30, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 107131, "scheduled": "2012-02-23 00:00:00", "group": 1760, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 2240, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-24 00:00:00", "short": "", "attendees": 125, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "(other conflicts: rrg cloud dcops sdnp sdn)", "requested_by": 112438, "scheduled": "2012-02-23 00:00:00", "group": 1807, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 2241, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-24 00:00:00", "short": "", "attendees": 40, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "not Friday", "requested_by": 107041, "scheduled": "2012-02-23 00:00:00", "group": 1798, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2242, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-24 00:00:00", "short": "", "attendees": 75, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "Please avoid all other TSV area sessions, including tsvarea. (other conflicts: iccrg, tmrg \r\nand, if possible, all BoFs in TSV or RAI)", "requested_by": 104331, "scheduled": "2012-02-23 00:00:00", "group": 1463, "meeting": 83, "requested_duration": 9000}},
|
||||
{"pk": 2243, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-25 00:00:00", "short": "", "attendees": 25, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 102900, "scheduled": "2012-02-23 00:00:00", "group": 945, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2244, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-25 00:00:00", "short": "", "attendees": 75, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 22933, "scheduled": "2012-02-23 00:00:00", "group": 1102, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 2245, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-26 00:00:00", "short": "", "attendees": 75, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "No request per se for WebEx as yet, could be handy to have available if requested later.", "requested_by": 106461, "scheduled": "2012-02-23 00:00:00", "group": 1824, "meeting": 83, "requested_duration": 5400}},
|
||||
{"pk": 2246, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-26 00:00:00", "short": "", "attendees": 30, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "Please do not schedule the NEA WG meeting on Friday. Chair cannot attend on that day.", "requested_by": 15448, "scheduled": "2012-02-23 00:00:00", "group": 1688, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2247, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-26 00:00:00", "short": "", "attendees": 60, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 108304, "scheduled": "2012-02-23 00:00:00", "group": 1599, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 2248, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-27 00:00:00", "short": "", "attendees": 50, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 100603, "scheduled": "2012-02-23 00:00:00", "group": 1089, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2249, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-27 00:00:00", "short": "", "attendees": 60, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 108123, "scheduled": "2012-02-23 00:00:00", "group": 1819, "meeting": 83, "requested_duration": 9000}},
|
||||
{"pk": 2250, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-27 00:00:00", "short": "", "attendees": 40, "name": "", "agenda_note": "Combined with KITTEN", "modified": "2012-02-23 00:00:00", "comments": "This will be a combined session for krb-wg and kitten. Please be sure to consider any requests made by other WGs to avoid conflicts with either krb-wg or kitten.\r\n\r\nWe're still working out how to handle the agendas; we may end up publishing a combined agenda or separate agendas for each group.\r\n\r\nExtra microphones (at least 2) to pass around the room. Wireless mics are nice, but wired ones will also work.", "requested_by": 104978, "scheduled": "2012-02-23 00:00:00", "group": 1496, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2251, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-27 00:00:00", "short": "", "attendees": 15, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "(other conflicts: IRTF open meeting, P2PRG, multrans BoF)", "requested_by": 106348, "scheduled": "2012-02-23 00:00:00", "group": 41, "meeting": 83, "requested_duration": 5400}},
|
||||
{"pk": 2252, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-27 00:00:00", "short": "", "attendees": 50, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 104140, "scheduled": "2012-02-23 00:00:00", "group": 1761, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 2253, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-28 00:00:00", "short": "", "attendees": 40, "name": "", "agenda_note": "Combined with KRB-WG", "modified": "2012-02-23 00:00:00", "comments": "This will be a combined session for krb-wg and kitten. Please be sure to consider any requests made by other WGs to avoid conflicts with either krb-wg or kitten. We're still working out how to handle the agendas; we may end up publishing a combined agenda or separate agendas for each group. Extra microphones (at least 2) to pass around the room. Wireless mics are nice, but wired ones will also work.", "requested_by": 107956, "scheduled": "2012-02-23 00:00:00", "group": 1634, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2254, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-29 00:00:00", "short": "", "attendees": 50, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 101208, "scheduled": "2012-02-23 00:00:00", "group": 1326, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 2255, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-30 00:00:00", "short": "", "attendees": 100, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 110531, "scheduled": "2012-02-23 00:00:00", "group": 1817, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2256, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-30 00:00:00", "short": "", "attendees": 100, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 107491, "scheduled": "2012-02-23 00:00:00", "group": 1777, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2257, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-30 00:00:00", "short": "", "attendees": 35, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 4857, "scheduled": "2012-02-23 00:00:00", "group": 1709, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2258, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-30 00:00:00", "short": "", "attendees": 60, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "(other conflicts: P2PRG as First Priority)", "requested_by": 106438, "scheduled": "2012-02-23 00:00:00", "group": 1705, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 2259, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-30 00:00:00", "short": "", "attendees": 50, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "(other conflicts: Please avoid conflict with any App or Sec area BoFs.)", "requested_by": 21684, "scheduled": "2012-02-23 00:00:00", "group": 1748, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2260, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-30 00:00:00", "short": "", "attendees": 120, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 101685, "scheduled": "2012-02-23 00:00:00", "group": 1822, "meeting": 83, "requested_duration": 5400}},
|
||||
{"pk": 12260, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-30 00:00:00", "short": "", "attendees": 120, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 101685, "scheduled": "2012-02-23 00:00:00", "group": 1822, "meeting": 83, "requested_duration": 5400}},
|
||||
{"pk": 2261, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-30 00:00:00", "short": "", "attendees": 30, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 106638, "scheduled": "2012-02-23 00:00:00", "group": 1701, "meeting": 83, "requested_duration": 5400}},
|
||||
{"pk": 2262, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-30 00:00:00", "short": "", "attendees": 150, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 106412, "scheduled": "2012-02-23 00:00:00", "group": 1665, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2263, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-30 00:00:00", "short": "", "attendees": 50, "name": "", "agenda_note": "Room Changed From 252A", "modified": "2012-03-24 03:24:15", "comments": "", "requested_by": 106412, "scheduled": "2012-02-23 00:00:00", "group": 37, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2265, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-30 00:00:00", "short": "", "attendees": 50, "name": "", "agenda_note": "CANCELED", "modified": "2012-03-16 11:08:40", "comments": "additional 2nd priority conflict to avoid: all other APP area WGs and BOFs\r\n\r\nthanks (other conflicts: WEIRD (if became BOF), and all other BOFs in app-area)", "requested_by": 111335, "scheduled": "2012-02-23 00:00:00", "group": 1686, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2266, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-30 00:00:00", "short": "", "attendees": 25, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "We will require remote participation for most of the editors and the WG chair. Since editors and WG chairs are in the US and Japan it will be tough to find a good time. \r\n\r\nRequesting the earliest session either 8am or 9am, or the afternoon at 3pm.", "requested_by": 112547, "scheduled": "2012-02-23 00:00:00", "group": 1778, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 2267, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-02-01 00:00:00", "short": "", "attendees": 90, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 108757, "scheduled": "2012-02-23 00:00:00", "group": 1584, "meeting": 83, "requested_duration": 5400}},
|
||||
{"pk": 2268, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-02-03 00:00:00", "short": "", "attendees": 50, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 108757, "scheduled": "2012-02-23 00:00:00", "group": 1836, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2270, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-02-09 00:00:00", "short": "", "attendees": 20, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 108757, "scheduled": "2012-02-23 00:00:00", "group": 31, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2271, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-02-10 00:00:00", "short": "", "attendees": 50, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 108757, "scheduled": "2012-02-23 00:00:00", "group": 1823, "meeting": 83, "requested_duration": 5400}},
|
||||
{"pk": 2272, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-02-23 00:00:00", "short": "", "attendees": null, "name": "IETF Operations and Administration Plenary", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 0, "scheduled": "2012-02-23 00:00:00", "group": 2, "meeting": 83, "requested_duration": 0}},
|
||||
{"pk": 2273, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-02-23 00:00:00", "short": "", "attendees": null, "name": "Technical Plenary", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 0, "scheduled": "2012-02-23 00:00:00", "group": 7, "meeting": 83, "requested_duration": 0}},
|
||||
{"pk": 2274, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-02-23 00:00:00", "short": "", "attendees": null, "name": "Tools for Creating Internet-Drafts Tutorial", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 0, "scheduled": "2012-02-23 00:00:00", "group": 1591, "meeting": 83, "requested_duration": 0}},
|
||||
{"pk": 2275, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-02-23 00:00:00", "short": "", "attendees": null, "name": "Newcomers' Orientation", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 0, "scheduled": "2012-02-23 00:00:00", "group": 1591, "meeting": 83, "requested_duration": 0}},
|
||||
{"pk": 2276, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-02-23 00:00:00", "short": "", "attendees": null, "name": "Operations, Administration, and Maintenance Tutorial", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 0, "scheduled": "2012-02-23 00:00:00", "group": 1591, "meeting": 83, "requested_duration": 0}},
|
||||
{"pk": 2277, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-02-23 00:00:00", "short": "", "attendees": null, "name": "Newcomers' Orientation (French)", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 0, "scheduled": "2012-02-23 00:00:00", "group": 1591, "meeting": 83, "requested_duration": 0}},
|
||||
{"pk": 2278, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-02-23 00:00:00", "short": "", "attendees": null, "name": "Meetecho Tutorial for Participants and WG Chairs", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 0, "scheduled": "2012-02-23 00:00:00", "group": 1, "meeting": 83, "requested_duration": 0}},
|
||||
{"pk": 2279, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-02-23 00:00:00", "short": "", "attendees": null, "name": "Welcome Reception", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 0, "scheduled": "2012-02-23 00:00:00", "group": 1, "meeting": 83, "requested_duration": 0}},
|
||||
{"pk": 2280, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-02-23 00:00:00", "short": "", "attendees": null, "name": "Newcomers' Meet and Greet (open to Newcomers and WG chairs only)", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 0, "scheduled": "2012-02-23 00:00:00", "group": 1, "meeting": 83, "requested_duration": 0}},
|
||||
{"pk": 2281, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-02-23 00:00:00", "short": "", "attendees": null, "name": "", "agenda_note": "Room Changed From 241", "modified": "2012-03-24 03:15:56", "comments": "", "requested_by": 0, "scheduled": "2012-02-23 00:00:00", "group": 1841, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 2282, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-02-23 00:00:00", "short": "", "attendees": null, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 0, "scheduled": "2012-02-23 00:00:00", "group": 1839, "meeting": 83, "requested_duration": 0}},
|
||||
{"pk": 2283, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-02-23 00:00:00", "short": "", "attendees": null, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 0, "scheduled": "2012-02-23 00:00:00", "group": 1844, "meeting": 83, "requested_duration": 0}},
|
||||
{"pk": 2284, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-02-23 00:00:00", "short": "", "attendees": null, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 0, "scheduled": "2012-02-23 00:00:00", "group": 1834, "meeting": 83, "requested_duration": 0}},
|
||||
{"pk": 2285, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-02-23 00:00:00", "short": "", "attendees": null, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 0, "scheduled": "2012-02-23 00:00:00", "group": 1840, "meeting": 83, "requested_duration": 0}},
|
||||
{"pk": 2286, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-02-23 00:00:00", "short": "", "attendees": null, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 0, "scheduled": "2012-02-23 00:00:00", "group": 1842, "meeting": 83, "requested_duration": 0}},
|
||||
{"pk": 2287, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-02-23 00:00:00", "short": "", "attendees": null, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 0, "scheduled": "2012-02-23 00:00:00", "group": 1843, "meeting": 83, "requested_duration": 0}},
|
||||
{"pk": 2288, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-02-24 00:00:00", "short": "", "attendees": null, "name": "IEPG Meeting", "agenda_note": "", "modified": "2012-02-24 00:00:00", "comments": "", "requested_by": 0, "scheduled": "2012-02-24 00:00:00", "group": 9, "meeting": 83, "requested_duration": 0}},
|
||||
{"pk": 22038, "model": "meeting.session", "fields": {"status": "notmeet", "requested": "2012-02-26 00:36:50", "short": "", "attendees": null, "name": "", "agenda_note": "", "modified": "2012-02-26 00:36:50", "comments": "", "requested_by": 0, "scheduled": null, "group": 1799, "meeting": 83, "requested_duration": 0}},
|
||||
{"pk": 22039, "model": "meeting.session", "fields": {"status": "notmeet", "requested": "2012-02-26 00:36:50", "short": "", "attendees": null, "name": "", "agenda_note": "", "modified": "2012-02-26 00:36:50", "comments": "", "requested_by": 0, "scheduled": null, "group": 1642, "meeting": 83, "requested_duration": 0}},
|
||||
{"pk": 22040, "model": "meeting.session", "fields": {"status": "notmeet", "requested": "2012-02-26 00:36:50", "short": "", "attendees": null, "name": "", "agenda_note": "", "modified": "2012-02-26 00:36:50", "comments": "", "requested_by": 0, "scheduled": null, "group": 1814, "meeting": 83, "requested_duration": 0}},
|
||||
{"pk": 22041, "model": "meeting.session", "fields": {"status": "notmeet", "requested": "2012-02-26 00:36:50", "short": "", "attendees": null, "name": "", "agenda_note": "", "modified": "2012-02-26 00:36:50", "comments": "", "requested_by": 0, "scheduled": null, "group": 1829, "meeting": 83, "requested_duration": 0}},
|
||||
{"pk": 22042, "model": "meeting.session", "fields": {"status": "notmeet", "requested": "2012-02-26 00:36:50", "short": "", "attendees": null, "name": "", "agenda_note": "", "modified": "2012-02-26 00:36:50", "comments": "", "requested_by": 0, "scheduled": null, "group": 1527, "meeting": 83, "requested_duration": 0}},
|
||||
{"pk": 22081, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-02-27 14:36:39", "short": "", "attendees": 50, "name": "", "agenda_note": "", "modified": "2012-02-27 19:16:01", "comments": "", "requested_by": 108757, "scheduled": null, "group": 1845, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 22083, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-03-05 11:15:18", "short": "", "attendees": null, "name": "Code Sprint", "agenda_note": "", "modified": "2012-03-05 11:15:18", "comments": "", "requested_by": 0, "scheduled": null, "group": 1712, "meeting": 83, "requested_duration": 0}},
|
||||
{"pk": 22084, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-03-05 13:54:42", "short": "", "attendees": 100, "name": "", "agenda_note": "", "modified": "2012-03-05 13:56:51", "comments": "", "requested_by": 108757, "scheduled": null, "group": 1847, "meeting": 83, "requested_duration": 9000}},
|
||||
{"pk": 22085, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-03-07 09:01:03", "short": "", "attendees": 100, "name": "", "agenda_note": "Combined with OPSAREA", "modified": "2012-03-12 13:25:11", "comments": "", "requested_by": 108757, "scheduled": null, "group": 1714, "meeting": 83, "requested_duration": 9000}},
|
||||
{"pk": 22087, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-03-24 02:51:38", "short": "", "attendees": 120, "name": "", "agenda_note": "", "modified": "2012-03-24 03:16:22", "comments": "", "requested_by": 108757, "scheduled": null, "group": 1680, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 22089, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-03-28 09:52:00", "short": "", "attendees": null, "name": "Working Group Chairs' Training", "agenda_note": "", "modified": "2012-03-28 09:52:00", "comments": "", "requested_by": 0, "scheduled": null, "group": 1591, "meeting": 83, "requested_duration": 0}}
|
||||
]
|
152
ietf/meeting/fixtures/session83.json
Normal file
152
ietf/meeting/fixtures/session83.json
Normal file
|
@ -0,0 +1,152 @@
|
|||
[
|
||||
{"pk": 2157, "model": "meeting.session", "fields": {"status": "sched", "requested": "2011-12-19 00:00:00", "short": "", "attendees": 45, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "please, no evening sessions.", "requested_by": 630, "materials": ["agenda-83-pkix", "minutes-83-pkix", "slides-83-pkix-0", "slides-83-pkix-1", "slides-83-pkix-10", "slides-83-pkix-2", "slides-83-pkix-3", "slides-83-pkix-4", "slides-83-pkix-5", "slides-83-pkix-6", "slides-83-pkix-7", "slides-83-pkix-8", "slides-83-pkix-9"], "scheduled": "2012-02-23 00:00:00", "group": 1223, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2158, "model": "meeting.session", "fields": {"status": "sched", "requested": "2011-12-19 00:00:00", "short": "", "attendees": 100, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 109802, "materials": ["agenda-83-rtgwg", "minutes-83-rtgwg", "slides-83-rtgwg-0", "slides-83-rtgwg-1", "slides-83-rtgwg-10", "slides-83-rtgwg-11", "slides-83-rtgwg-2", "slides-83-rtgwg-3", "slides-83-rtgwg-4", "slides-83-rtgwg-5", "slides-83-rtgwg-6", "slides-83-rtgwg-7", "slides-83-rtgwg-8", "slides-83-rtgwg-9"], "scheduled": "2012-02-23 00:00:00", "group": 1619, "meeting": 83, "requested_duration": 5400}},
|
||||
{"pk": 2159, "model": "meeting.session", "fields": {"status": "sched", "requested": "2011-12-19 00:00:00", "short": "", "attendees": 120, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 102154, "materials": ["agenda-83-websec", "minutes-83-websec", "slides-83-websec-0", "slides-83-websec-1", "slides-83-websec-2", "slides-83-websec-3", "slides-83-websec-4", "slides-83-websec-5"], "scheduled": "2012-02-23 00:00:00", "group": 1802, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2160, "model": "meeting.session", "fields": {"status": "sched", "requested": "2011-12-19 00:00:00", "short": "", "attendees": 100, "name": "", "agenda_note": "Combined with APPAREA", "modified": "2012-02-23 00:00:00", "comments": "Please list this on the schedule as shared with the AppsArea meeting (Monday morning). (other conflicts: All Apps and Sec Area BoFs)", "requested_by": 102154, "materials": ["agenda-83-appsawg", "minutes-83-appsawg", "slides-83-appsawg-0", "slides-83-appsawg-1", "slides-83-appsawg-2", "slides-83-appsawg-3", "slides-83-appsawg-4"], "scheduled": "2012-02-23 00:00:00", "group": 1805, "meeting": 83, "requested_duration": 9000}},
|
||||
{"pk": 2161, "model": "meeting.session", "fields": {"status": "sched", "requested": "2011-12-19 00:00:00", "short": "", "attendees": 50, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "we would prefer meeting on Mon/Tue", "requested_by": 105992, "materials": ["agenda-83-multimob", "minutes-83-multimob", "slides-83-multimob-0", "slides-83-multimob-1", "slides-83-multimob-2", "slides-83-multimob-3", "slides-83-multimob-4", "slides-83-multimob-5", "slides-83-multimob-6", "slides-83-multimob-7"], "scheduled": "2012-02-23 00:00:00", "group": 1747, "meeting": 83, "requested_duration": 9000}},
|
||||
{"pk": 2162, "model": "meeting.session", "fields": {"status": "sched", "requested": "2011-12-19 00:00:00", "short": "", "attendees": 150, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "(other conflicts: IRTF RRG, RTG BOFs, VNRG, SDN)", "requested_by": 10064, "materials": ["agenda-83-ccamp", "minutes-83-ccamp", "slides-83-ccamp-0", "slides-83-ccamp-1", "slides-83-ccamp-10", "slides-83-ccamp-11", "slides-83-ccamp-12", "slides-83-ccamp-13", "slides-83-ccamp-14", "slides-83-ccamp-15", "slides-83-ccamp-16", "slides-83-ccamp-17", "slides-83-ccamp-18", "slides-83-ccamp-19", "slides-83-ccamp-2", "slides-83-ccamp-20", "slides-83-ccamp-21", "slides-83-ccamp-22", "slides-83-ccamp-23", "slides-83-ccamp-24", "slides-83-ccamp-25", "slides-83-ccamp-26", "slides-83-ccamp-27", "slides-83-ccamp-28", "slides-83-ccamp-29", "slides-83-ccamp-3", "slides-83-ccamp-30", "slides-83-ccamp-4", "slides-83-ccamp-5", "slides-83-ccamp-6", "slides-83-ccamp-7", "slides-83-ccamp-8", "slides-83-ccamp-9"], "scheduled": "2012-02-23 00:00:00", "group": 1524, "meeting": 83, "requested_duration": 9000}},
|
||||
{"pk": 12162, "model": "meeting.session", "fields": {"status": "sched", "requested": "2011-12-19 00:00:00", "short": "", "attendees": 150, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "(other conflicts: IRTF RRG, RTG BOFs, VNRG, SDN)", "requested_by": 10064, "materials": ["agenda-83-ccamp", "minutes-83-ccamp", "slides-83-ccamp-0", "slides-83-ccamp-1", "slides-83-ccamp-10", "slides-83-ccamp-11", "slides-83-ccamp-12", "slides-83-ccamp-13", "slides-83-ccamp-14", "slides-83-ccamp-15", "slides-83-ccamp-16", "slides-83-ccamp-17", "slides-83-ccamp-18", "slides-83-ccamp-19", "slides-83-ccamp-2", "slides-83-ccamp-20", "slides-83-ccamp-21", "slides-83-ccamp-22", "slides-83-ccamp-23", "slides-83-ccamp-24", "slides-83-ccamp-25", "slides-83-ccamp-26", "slides-83-ccamp-27", "slides-83-ccamp-28", "slides-83-ccamp-29", "slides-83-ccamp-3", "slides-83-ccamp-30", "slides-83-ccamp-4", "slides-83-ccamp-5", "slides-83-ccamp-6", "slides-83-ccamp-7", "slides-83-ccamp-8", "slides-83-ccamp-9"], "scheduled": "2012-02-23 00:00:00", "group": 1524, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2163, "model": "meeting.session", "fields": {"status": "sched", "requested": "2011-12-19 00:00:00", "short": "", "attendees": 120, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "French Ice Cream for ADs (other conflicts: IRTF RRG, RTG BOFs)", "requested_by": 106471, "materials": ["agenda-83-rtgarea", "minutes-83-rtgarea", "slides-83-rtgarea-0", "slides-83-rtgarea-1", "slides-83-rtgarea-2", "slides-83-rtgarea-3", "slides-83-rtgarea-4", "slides-83-rtgarea-5", "slides-83-rtgarea-6", "slides-83-rtgarea-7"], "scheduled": "2012-02-23 00:00:00", "group": 1404, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2164, "model": "meeting.session", "fields": {"status": "sched", "requested": "2011-12-19 00:00:00", "short": "", "attendees": 75, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 108822, "materials": ["agenda-83-lisp", "minutes-83-lisp", "slides-83-lisp-0", "slides-83-lisp-1", "slides-83-lisp-10", "slides-83-lisp-2", "slides-83-lisp-3", "slides-83-lisp-4", "slides-83-lisp-5", "slides-83-lisp-6", "slides-83-lisp-7", "slides-83-lisp-8", "slides-83-lisp-9"], "scheduled": "2012-02-23 00:00:00", "group": 1751, "meeting": 83, "requested_duration": 5400}},
|
||||
{"pk": 2165, "model": "meeting.session", "fields": {"status": "sched", "requested": "2011-12-19 00:00:00", "short": "", "attendees": 50, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "none", "requested_by": 6766, "materials": ["agenda-83-ipfix", "minutes-83-ipfix", "slides-83-ipfix-0", "slides-83-ipfix-1", "slides-83-ipfix-10", "slides-83-ipfix-11", "slides-83-ipfix-12", "slides-83-ipfix-13", "slides-83-ipfix-2", "slides-83-ipfix-3", "slides-83-ipfix-4", "slides-83-ipfix-5", "slides-83-ipfix-6", "slides-83-ipfix-7", "slides-83-ipfix-8", "slides-83-ipfix-9"], "scheduled": "2012-02-23 00:00:00", "group": 1546, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2166, "model": "meeting.session", "fields": {"status": "sched", "requested": "2011-12-19 00:00:00", "short": "", "attendees": 50, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 102848, "materials": ["agenda-83-mmusic", "minutes-83-mmusic", "slides-83-mmusic-0", "slides-83-mmusic-1", "slides-83-mmusic-10", "slides-83-mmusic-2", "slides-83-mmusic-3", "slides-83-mmusic-4", "slides-83-mmusic-5", "slides-83-mmusic-6", "slides-83-mmusic-7", "slides-83-mmusic-8", "slides-83-mmusic-9"], "scheduled": "2012-02-23 00:00:00", "group": 1138, "meeting": 83, "requested_duration": 9000}},
|
||||
{"pk": 2167, "model": "meeting.session", "fields": {"status": "sched", "requested": "2011-12-20 00:00:00", "short": "", "attendees": 80, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 108213, "materials": ["agenda-83-pce", "minutes-83-pce", "slides-83-pce-0", "slides-83-pce-1", "slides-83-pce-10", "slides-83-pce-11", "slides-83-pce-12", "slides-83-pce-2", "slides-83-pce-3", "slides-83-pce-4", "slides-83-pce-5", "slides-83-pce-6", "slides-83-pce-7", "slides-83-pce-8", "slides-83-pce-9"], "scheduled": "2012-02-23 00:00:00", "group": 1630, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2168, "model": "meeting.session", "fields": {"status": "sched", "requested": "2011-12-20 00:00:00", "short": "", "attendees": 50, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "NETCONF is very much related to NETMOD. If possible please schedule NETCONF and NETMOD sessions on subsequent days. (other conflicts: nmrg)", "requested_by": 21106, "materials": ["agenda-83-netmod", "minutes-83-netmod", "slides-83-netmod-0", "slides-83-netmod-1", "slides-83-netmod-2", "slides-83-netmod-3", "slides-83-netmod-4"], "scheduled": "2012-02-23 00:00:00", "group": 1638, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2169, "model": "meeting.session", "fields": {"status": "sched", "requested": "2011-12-20 00:00:00", "short": "", "attendees": 45, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "(other conflicts: nmrg ncrg)", "requested_by": 109354, "materials": ["agenda-83-mile", "minutes-83-mile", "slides-83-mile-0", "slides-83-mile-1", "slides-83-mile-2", "slides-83-mile-3", "slides-83-mile-4"], "scheduled": "2012-02-23 00:00:00", "group": 1831, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 2170, "model": "meeting.session", "fields": {"status": "sched", "requested": "2011-12-20 00:00:00", "short": "", "attendees": 90, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "would like to have meetecho available", "requested_by": 6771, "materials": ["agenda-83-jose", "minutes-83-jose", "slides-83-jose-0", "slides-83-jose-1", "slides-83-jose-2", "slides-83-jose-3", "slides-83-jose-4", "slides-83-jose-5", "slides-83-jose-6", "slides-83-jose-7", "slides-83-jose-8"], "scheduled": "2012-02-23 00:00:00", "group": 1830, "meeting": 83, "requested_duration": 5400}},
|
||||
{"pk": 2171, "model": "meeting.session", "fields": {"status": "sched", "requested": "2011-12-20 00:00:00", "short": "", "attendees": 75, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "We also wish to avoid the following sessions:\r\n\r\nmext\r\nsoftwire\r\ndnsext\r\nbehave\r\nv6ops\r\nhomenet\r\n\r\nDue to travel scheduling we would prefer a Thursday session if possible.", "requested_by": 107618, "materials": ["agenda-83-dhc", "minutes-83-dhc", "slides-83-dhc-0", "slides-83-dhc-1", "slides-83-dhc-10", "slides-83-dhc-11", "slides-83-dhc-12", "slides-83-dhc-13", "slides-83-dhc-14", "slides-83-dhc-15", "slides-83-dhc-2", "slides-83-dhc-3", "slides-83-dhc-4", "slides-83-dhc-5", "slides-83-dhc-6", "slides-83-dhc-7", "slides-83-dhc-8", "slides-83-dhc-9"], "scheduled": "2012-02-23 00:00:00", "group": 988, "meeting": 83, "requested_duration": 9000}},
|
||||
{"pk": 2172, "model": "meeting.session", "fields": {"status": "sched", "requested": "2011-12-20 00:00:00", "short": "", "attendees": 80, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 10784, "materials": ["agenda-83-ospf", "minutes-83-ospf", "slides-83-ospf-0", "slides-83-ospf-1", "slides-83-ospf-2", "slides-83-ospf-3", "slides-83-ospf-4"], "scheduled": "2012-02-23 00:00:00", "group": 1188, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2173, "model": "meeting.session", "fields": {"status": "sched", "requested": "2011-12-21 00:00:00", "short": "", "attendees": 100, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "(other conflicts: rrg, kidns, armd, nbs, plasma)", "requested_by": 21395, "materials": ["agenda-83-karp", "minutes-83-karp", "slides-83-karp-0", "slides-83-karp-1", "slides-83-karp-2", "slides-83-karp-3", "slides-83-karp-4", "slides-83-karp-5", "slides-83-karp-6", "slides-83-karp-7"], "scheduled": "2012-02-23 00:00:00", "group": 1737, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2174, "model": "meeting.session", "fields": {"status": "sched", "requested": "2011-12-29 00:00:00", "short": "", "attendees": 80, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "Please schedule early in the week.\r\nThanks.", "requested_by": 102391, "materials": ["agenda-83-trill", "minutes-83-trill", "slides-83-trill-0", "slides-83-trill-1", "slides-83-trill-10", "slides-83-trill-11", "slides-83-trill-12", "slides-83-trill-13", "slides-83-trill-14", "slides-83-trill-15", "slides-83-trill-2", "slides-83-trill-3", "slides-83-trill-4", "slides-83-trill-5", "slides-83-trill-6", "slides-83-trill-7", "slides-83-trill-8", "slides-83-trill-9"], "scheduled": "2012-02-23 00:00:00", "group": 1650, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 12174, "model": "meeting.session", "fields": {"status": "sched", "requested": "2011-12-29 00:00:00", "short": "", "attendees": 80, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "Please schedule early in the week.\r\nThanks.", "requested_by": 102391, "materials": ["agenda-83-trill", "minutes-83-trill", "slides-83-trill-0", "slides-83-trill-1", "slides-83-trill-10", "slides-83-trill-11", "slides-83-trill-12", "slides-83-trill-13", "slides-83-trill-14", "slides-83-trill-15", "slides-83-trill-2", "slides-83-trill-3", "slides-83-trill-4", "slides-83-trill-5", "slides-83-trill-6", "slides-83-trill-7", "slides-83-trill-8", "slides-83-trill-9"], "scheduled": "2012-02-23 00:00:00", "group": 1650, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 2175, "model": "meeting.session", "fields": {"status": "sched", "requested": "2011-12-31 00:00:00", "short": "", "attendees": 300, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 20959, "materials": ["agenda-83-v6ops", "minutes-83-v6ops", "slides-83-v6ops-0", "slides-83-v6ops-1", "slides-83-v6ops-10", "slides-83-v6ops-11", "slides-83-v6ops-12", "slides-83-v6ops-13", "slides-83-v6ops-2", "slides-83-v6ops-3", "slides-83-v6ops-4", "slides-83-v6ops-5", "slides-83-v6ops-6", "slides-83-v6ops-7", "slides-83-v6ops-8", "slides-83-v6ops-9"], "scheduled": "2012-02-23 00:00:00", "group": 1578, "meeting": 83, "requested_duration": 9000}},
|
||||
{"pk": 12175, "model": "meeting.session", "fields": {"status": "sched", "requested": "2011-12-31 00:00:00", "short": "", "attendees": 300, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 20959, "materials": ["agenda-83-v6ops", "minutes-83-v6ops", "slides-83-v6ops-0", "slides-83-v6ops-1", "slides-83-v6ops-10", "slides-83-v6ops-11", "slides-83-v6ops-12", "slides-83-v6ops-13", "slides-83-v6ops-2", "slides-83-v6ops-3", "slides-83-v6ops-4", "slides-83-v6ops-5", "slides-83-v6ops-6", "slides-83-v6ops-7", "slides-83-v6ops-8", "slides-83-v6ops-9"], "scheduled": "2012-02-23 00:00:00", "group": 1578, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2176, "model": "meeting.session", "fields": {"status": "schedw", "requested": "2012-01-02 00:00:00", "short": "", "attendees": 100, "name": "", "agenda_note": "", "modified": "2012-03-05 13:55:42", "comments": "", "requested_by": 109800, "materials": [], "scheduled": "2012-02-23 00:00:00", "group": 1720, "meeting": 83, "requested_duration": 9000}},
|
||||
{"pk": 2177, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-03 00:00:00", "short": "", "attendees": 50, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "Please schedule Tuesday if possible. It's been on Tuesday lately which has been perfect. (other conflicts: multrans)", "requested_by": 106173, "materials": ["agenda-83-pim", "minutes-83-pim", "slides-83-pim-0", "slides-83-pim-1", "slides-83-pim-2", "slides-83-pim-3", "slides-83-pim-4", "slides-83-pim-5", "slides-83-pim-6"], "scheduled": "2012-02-23 00:00:00", "group": 1397, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2178, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-04 00:00:00", "short": "", "attendees": 100, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 106269, "materials": ["agenda-83-roll", "minutes-83-roll", "slides-83-roll-0", "slides-83-roll-1", "slides-83-roll-2", "slides-83-roll-3", "slides-83-roll-4", "slides-83-roll-5", "slides-83-roll-6"], "scheduled": "2012-02-23 00:00:00", "group": 1730, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2179, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-04 00:00:00", "short": "", "attendees": 30, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 109800, "materials": ["agenda-83-dime", "minutes-83-dime", "slides-83-dime-0", "slides-83-dime-1", "slides-83-dime-2", "slides-83-dime-3", "slides-83-dime-4"], "scheduled": "2012-02-23 00:00:00", "group": 1682, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2180, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-04 00:00:00", "short": "", "attendees": 30, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "Please try to schedule a session early in the week as we used to have always in the past. Thanks, Patrick", "requested_by": 19925, "materials": ["agenda-83-forces", "minutes-83-forces", "slides-83-forces-0", "slides-83-forces-1", "slides-83-forces-2", "slides-83-forces-3", "slides-83-forces-4", "slides-83-forces-5"], "scheduled": "2012-02-23 00:00:00", "group": 1518, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 2182, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-05 00:00:00", "short": "", "attendees": 40, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "NETCONF is related to NETMOD. If possible please schedule NETCONF and NETMOD sessions on subsequent days at the beginning of the week, e.g. NETCONF on Monday and NETMOD on Tuesday. Thank you. (other conflicts: nmrg dc IoT)", "requested_by": 105537, "materials": ["agenda-83-netconf", "minutes-83-netconf", "slides-83-netconf-0", "slides-83-netconf-1", "slides-83-netconf-2", "slides-83-netconf-3"], "scheduled": "2012-02-23 00:00:00", "group": 1575, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 2183, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-06 00:00:00", "short": "", "attendees": 200, "name": "", "agenda_note": "", "modified": "2012-03-01 08:28:55", "comments": "", "requested_by": 109059, "materials": ["agenda-83-homenet", "minutes-83-homenet", "slides-83-homenet-0", "slides-83-homenet-1", "slides-83-homenet-2", "slides-83-homenet-3", "slides-83-homenet-4", "slides-83-homenet-5", "slides-83-homenet-6", "slides-83-homenet-7"], "scheduled": "2012-02-23 00:00:00", "group": 1803, "meeting": 83, "requested_duration": 9000}},
|
||||
{"pk": 2184, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-06 00:00:00", "short": "", "attendees": 100, "name": "", "agenda_note": "Combined with OPSAWG", "modified": "2012-03-07 09:02:17", "comments": "List this session as both the O&M Area Open meeting and the OPSAWG meeting", "requested_by": 101568, "materials": ["agenda-83-opsarea", "slides-83-opsarea-0"], "scheduled": "2012-02-23 00:00:00", "group": 1399, "meeting": 83, "requested_duration": 9000}},
|
||||
{"pk": 2185, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-06 00:00:00", "short": "", "attendees": 50, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "Would prefer a mtg on Tues/Wed/Thurs", "requested_by": 104329, "materials": ["agenda-83-mboned", "minutes-83-mboned", "slides-83-mboned-0", "slides-83-mboned-1", "slides-83-mboned-10", "slides-83-mboned-2", "slides-83-mboned-3", "slides-83-mboned-4", "slides-83-mboned-5", "slides-83-mboned-6", "slides-83-mboned-7", "slides-83-mboned-8", "slides-83-mboned-9"], "scheduled": "2012-02-23 00:00:00", "group": 1118, "meeting": 83, "requested_duration": 9000}},
|
||||
{"pk": 2186, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-06 00:00:00", "short": "", "attendees": 50, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "Several of the key WG member cannot participate Friday. So please restrict times to other days.", "requested_by": 18331, "materials": ["agenda-83-manet", "minutes-83-manet", "slides-83-manet-0", "slides-83-manet-1", "slides-83-manet-2", "slides-83-manet-3", "slides-83-manet-4", "slides-83-manet-5", "slides-83-manet-6", "slides-83-manet-7", "slides-83-manet-8", "slides-83-manet-9"], "scheduled": "2012-02-23 00:00:00", "group": 1132, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2187, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-08 00:00:00", "short": "", "attendees": 80, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "Friday is not preferred (other conflicts: p2prg, vnrg)", "requested_by": 109919, "materials": ["agenda-83-ppsp", "minutes-83-ppsp", "slides-83-ppsp-0", "slides-83-ppsp-1", "slides-83-ppsp-2", "slides-83-ppsp-3", "slides-83-ppsp-4"], "scheduled": "2012-02-23 00:00:00", "group": 1771, "meeting": 83, "requested_duration": 9000}},
|
||||
{"pk": 2188, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-09 00:00:00", "short": "", "attendees": 200, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "WebEx (mainly for mpls-tp related sessions as many actors of mpls-tp design are not necessarily able to travel) (other conflicts: rrg)", "requested_by": 108279, "materials": ["agenda-83-mpls", "minutes-83-mpls", "slides-83-mpls-0", "slides-83-mpls-1", "slides-83-mpls-10", "slides-83-mpls-11", "slides-83-mpls-12", "slides-83-mpls-13", "slides-83-mpls-14", "slides-83-mpls-15", "slides-83-mpls-16", "slides-83-mpls-17", "slides-83-mpls-18", "slides-83-mpls-19", "slides-83-mpls-2", "slides-83-mpls-20", "slides-83-mpls-21", "slides-83-mpls-22", "slides-83-mpls-23", "slides-83-mpls-24", "slides-83-mpls-25", "slides-83-mpls-26", "slides-83-mpls-27", "slides-83-mpls-3", "slides-83-mpls-4", "slides-83-mpls-5", "slides-83-mpls-6", "slides-83-mpls-7", "slides-83-mpls-8", "slides-83-mpls-9"], "scheduled": "2012-02-23 00:00:00", "group": 1140, "meeting": 83, "requested_duration": 9000}},
|
||||
{"pk": 12188, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-09 00:00:00", "short": "", "attendees": 200, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "WebEx (mainly for mpls-tp related sessions as many actors of mpls-tp design are not necessarily able to travel) (other conflicts: rrg)", "requested_by": 108279, "materials": ["agenda-83-mpls", "minutes-83-mpls", "slides-83-mpls-0", "slides-83-mpls-1", "slides-83-mpls-10", "slides-83-mpls-11", "slides-83-mpls-12", "slides-83-mpls-13", "slides-83-mpls-14", "slides-83-mpls-15", "slides-83-mpls-16", "slides-83-mpls-17", "slides-83-mpls-18", "slides-83-mpls-19", "slides-83-mpls-2", "slides-83-mpls-20", "slides-83-mpls-21", "slides-83-mpls-22", "slides-83-mpls-23", "slides-83-mpls-24", "slides-83-mpls-25", "slides-83-mpls-26", "slides-83-mpls-27", "slides-83-mpls-3", "slides-83-mpls-4", "slides-83-mpls-5", "slides-83-mpls-6", "slides-83-mpls-7", "slides-83-mpls-8", "slides-83-mpls-9"], "scheduled": "2012-02-23 00:00:00", "group": 1140, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2189, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-09 00:00:00", "short": "", "attendees": 50, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 111091, "materials": ["agenda-83-siprec", "minutes-83-siprec", "slides-83-siprec-0", "slides-83-siprec-1", "slides-83-siprec-2", "slides-83-siprec-3", "slides-83-siprec-4"], "scheduled": "2012-02-23 00:00:00", "group": 1788, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2190, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-09 00:00:00", "short": "", "attendees": 125, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 105791, "materials": ["agenda-83-dispatch", "minutes-83-dispatch", "slides-83-dispatch-0", "slides-83-dispatch-1", "slides-83-dispatch-2", "slides-83-dispatch-3"], "scheduled": "2012-02-23 00:00:00", "group": 1763, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2191, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-09 00:00:00", "short": "", "attendees": 40, "name": "", "agenda_note": "CANCELED", "modified": "2012-03-16 11:54:56", "comments": "", "requested_by": 105791, "materials": ["agenda-83-codec", "minutes-83-codec", "slides-83-codec-0"], "scheduled": "2012-02-23 00:00:00", "group": 1765, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 2192, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-09 00:00:00", "short": "", "attendees": 150, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 105791, "materials": ["agenda-83-rtcweb", "minutes-83-rtcweb", "slides-83-rtcweb-0", "slides-83-rtcweb-1", "slides-83-rtcweb-2", "slides-83-rtcweb-3", "slides-83-rtcweb-4", "slides-83-rtcweb-5", "slides-83-rtcweb-6", "slides-83-rtcweb-7", "slides-83-rtcweb-8"], "scheduled": "2012-02-23 00:00:00", "group": 1820, "meeting": 83, "requested_duration": 9000}},
|
||||
{"pk": 12192, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-09 00:00:00", "short": "", "attendees": 150, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 105791, "materials": ["agenda-83-rtcweb", "minutes-83-rtcweb", "slides-83-rtcweb-0", "slides-83-rtcweb-1", "slides-83-rtcweb-2", "slides-83-rtcweb-3", "slides-83-rtcweb-4", "slides-83-rtcweb-5", "slides-83-rtcweb-6", "slides-83-rtcweb-7", "slides-83-rtcweb-8"], "scheduled": "2012-02-23 00:00:00", "group": 1820, "meeting": 83, "requested_duration": 9000}},
|
||||
{"pk": 2193, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-09 00:00:00", "short": "", "attendees": 50, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 105791, "materials": ["agenda-83-core", "minutes-83-core", "slides-83-core-0"], "scheduled": "2012-02-23 00:00:00", "group": 1789, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 12193, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-09 00:00:00", "short": "", "attendees": 50, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 105791, "materials": ["agenda-83-core", "minutes-83-core", "slides-83-core-0"], "scheduled": "2012-02-23 00:00:00", "group": 1789, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2194, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-09 00:00:00", "short": "", "attendees": 150, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 102830, "materials": ["agenda-83-clue", "minutes-83-clue", "slides-83-clue-0", "slides-83-clue-1", "slides-83-clue-10", "slides-83-clue-11", "slides-83-clue-2", "slides-83-clue-3", "slides-83-clue-4", "slides-83-clue-5", "slides-83-clue-6", "slides-83-clue-7", "slides-83-clue-8", "slides-83-clue-9"], "scheduled": "2012-02-23 00:00:00", "group": 1816, "meeting": 83, "requested_duration": 9000}},
|
||||
{"pk": 12194, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-09 00:00:00", "short": "", "attendees": 150, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 102830, "materials": ["agenda-83-clue", "minutes-83-clue", "slides-83-clue-0", "slides-83-clue-1", "slides-83-clue-10", "slides-83-clue-11", "slides-83-clue-2", "slides-83-clue-3", "slides-83-clue-4", "slides-83-clue-5", "slides-83-clue-6", "slides-83-clue-7", "slides-83-clue-8", "slides-83-clue-9"], "scheduled": "2012-02-23 00:00:00", "group": 1816, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2195, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-11 00:00:00", "short": "", "attendees": 100, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 105328, "materials": ["agenda-83-softwire", "minutes-83-softwire", "slides-83-softwire-0", "slides-83-softwire-1", "slides-83-softwire-10", "slides-83-softwire-11", "slides-83-softwire-12", "slides-83-softwire-13", "slides-83-softwire-14", "slides-83-softwire-2", "slides-83-softwire-3", "slides-83-softwire-4", "slides-83-softwire-5", "slides-83-softwire-6", "slides-83-softwire-7", "slides-83-softwire-8", "slides-83-softwire-9"], "scheduled": "2012-02-23 00:00:00", "group": 1678, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 12195, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-11 00:00:00", "short": "", "attendees": 100, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 105328, "materials": ["agenda-83-softwire", "minutes-83-softwire", "slides-83-softwire-0", "slides-83-softwire-1", "slides-83-softwire-10", "slides-83-softwire-11", "slides-83-softwire-12", "slides-83-softwire-13", "slides-83-softwire-14", "slides-83-softwire-2", "slides-83-softwire-3", "slides-83-softwire-4", "slides-83-softwire-5", "slides-83-softwire-6", "slides-83-softwire-7", "slides-83-softwire-8", "slides-83-softwire-9"], "scheduled": "2012-02-23 00:00:00", "group": 1678, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2196, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-11 00:00:00", "short": "", "attendees": 75, "name": "", "agenda_note": "", "modified": "2012-02-24 00:00:00", "comments": "", "requested_by": 105328, "materials": ["agenda-83-pcp", "minutes-83-pcp", "slides-83-pcp-0", "slides-83-pcp-1", "slides-83-pcp-10", "slides-83-pcp-11", "slides-83-pcp-12", "slides-83-pcp-13", "slides-83-pcp-14", "slides-83-pcp-2", "slides-83-pcp-3", "slides-83-pcp-4", "slides-83-pcp-5", "slides-83-pcp-6", "slides-83-pcp-7", "slides-83-pcp-8", "slides-83-pcp-9"], "scheduled": "2012-02-24 00:00:00", "group": 1800, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 12196, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-11 00:00:00", "short": "", "attendees": 75, "name": "", "agenda_note": "", "modified": "2012-02-24 00:00:00", "comments": "", "requested_by": 105328, "materials": ["agenda-83-pcp", "minutes-83-pcp", "slides-83-pcp-0", "slides-83-pcp-1", "slides-83-pcp-10", "slides-83-pcp-11", "slides-83-pcp-12", "slides-83-pcp-13", "slides-83-pcp-14", "slides-83-pcp-2", "slides-83-pcp-3", "slides-83-pcp-4", "slides-83-pcp-5", "slides-83-pcp-6", "slides-83-pcp-7", "slides-83-pcp-8", "slides-83-pcp-9"], "scheduled": "2012-02-24 00:00:00", "group": 1800, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2197, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-11 00:00:00", "short": "", "attendees": 50, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "Please schedule for afternoon. A number of key participants will be participating remotely, from the U.S.\r\n\r\nThanks!\r\n\r\n/d", "requested_by": 100927, "materials": ["agenda-83-repute", "minutes-83-repute"], "scheduled": "2012-02-23 00:00:00", "group": 1827, "meeting": 83, "requested_duration": 5400}},
|
||||
{"pk": 2198, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-12 00:00:00", "short": "", "attendees": 20, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "An early in the week slot would be preferred.", "requested_by": 12671, "materials": ["agenda-83-rmt", "minutes-83-rmt", "slides-83-rmt-0", "slides-83-rmt-1", "slides-83-rmt-2", "slides-83-rmt-3"], "scheduled": "2012-02-23 00:00:00", "group": 1437, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 2199, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-12 00:00:00", "short": "", "attendees": 75, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 105046, "materials": ["agenda-83-bfd", "minutes-83-bfd", "slides-83-bfd-0", "slides-83-bfd-1", "slides-83-bfd-2", "slides-83-bfd-3"], "scheduled": "2012-02-23 00:00:00", "group": 1628, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 2200, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-13 00:00:00", "short": "", "attendees": 50, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 106812, "materials": ["agenda-83-cuss", "minutes-83-cuss", "slides-83-cuss-0", "slides-83-cuss-1", "slides-83-cuss-2", "slides-83-cuss-3"], "scheduled": "2012-02-23 00:00:00", "group": 1796, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 2201, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-13 00:00:00", "short": "", "attendees": 100, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "(other conflicts: p2prg)", "requested_by": 106812, "materials": ["agenda-83-alto", "minutes-83-alto", "slides-83-alto-0", "slides-83-alto-1", "slides-83-alto-2", "slides-83-alto-3", "slides-83-alto-4", "slides-83-alto-5", "slides-83-alto-6", "slides-83-alto-7", "slides-83-alto-8"], "scheduled": "2012-02-23 00:00:00", "group": 1744, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2202, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-13 00:00:00", "short": "", "attendees": 110, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 4836, "materials": ["agenda-83-idr", "minutes-83-idr", "slides-83-idr-0", "slides-83-idr-1", "slides-83-idr-10", "slides-83-idr-11", "slides-83-idr-12", "slides-83-idr-13", "slides-83-idr-14", "slides-83-idr-2", "slides-83-idr-3", "slides-83-idr-4", "slides-83-idr-5", "slides-83-idr-6", "slides-83-idr-7", "slides-83-idr-8", "slides-83-idr-9"], "scheduled": "2012-02-23 00:00:00", "group": 1041, "meeting": 83, "requested_duration": 9000}},
|
||||
{"pk": 2203, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-13 00:00:00", "short": "", "attendees": 120, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 13219, "materials": ["agenda-83-sidr", "minutes-83-sidr", "slides-83-sidr-0", "slides-83-sidr-1", "slides-83-sidr-10", "slides-83-sidr-11", "slides-83-sidr-12", "slides-83-sidr-13", "slides-83-sidr-14", "slides-83-sidr-15", "slides-83-sidr-16", "slides-83-sidr-17", "slides-83-sidr-2", "slides-83-sidr-3", "slides-83-sidr-4", "slides-83-sidr-5", "slides-83-sidr-6", "slides-83-sidr-7", "slides-83-sidr-8", "slides-83-sidr-9"], "scheduled": "2012-02-23 00:00:00", "group": 1680, "meeting": 83, "requested_duration": 9000}},
|
||||
{"pk": 2204, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-15 00:00:00", "short": "", "attendees": 50, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "(other conflicts: sdnp)", "requested_by": 109430, "materials": ["agenda-83-decade", "minutes-83-decade", "slides-83-decade-0", "slides-83-decade-1", "slides-83-decade-2", "slides-83-decade-3", "slides-83-decade-4", "slides-83-decade-5"], "scheduled": "2012-02-23 00:00:00", "group": 1780, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2205, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-16 00:00:00", "short": "", "attendees": 60, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 108624, "materials": ["agenda-83-emu", "minutes-83-emu", "slides-83-emu-0", "slides-83-emu-1", "slides-83-emu-2", "slides-83-emu-3", "slides-83-emu-4", "slides-83-emu-5", "slides-83-emu-6", "slides-83-emu-7"], "scheduled": "2012-02-23 00:00:00", "group": 1674, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2206, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-16 00:00:00", "short": "", "attendees": 150, "name": "", "agenda_note": "", "modified": "2012-03-01 08:29:17", "comments": "Please avoid any IAOC meetings,", "requested_by": 100664, "materials": ["agenda-83-6man", "minutes-83-6man", "slides-83-6man-0", "slides-83-6man-1", "slides-83-6man-10", "slides-83-6man-11", "slides-83-6man-12", "slides-83-6man-2", "slides-83-6man-3", "slides-83-6man-4", "slides-83-6man-5", "slides-83-6man-6", "slides-83-6man-7", "slides-83-6man-8", "slides-83-6man-9"], "scheduled": "2012-02-23 00:00:00", "group": 1723, "meeting": 83, "requested_duration": 9000}},
|
||||
{"pk": 2207, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-16 00:00:00", "short": "", "attendees": 50, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "(other conflicts: P2PRG)", "requested_by": 107491, "materials": ["agenda-83-soc", "minutes-83-soc", "slides-83-soc-0", "slides-83-soc-1", "slides-83-soc-2", "slides-83-soc-3"], "scheduled": "2012-02-23 00:00:00", "group": 1791, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 2208, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-17 00:00:00", "short": "", "attendees": 20, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 107520, "materials": ["agenda-83-xrblock", "minutes-83-xrblock", "slides-83-xrblock-0", "slides-83-xrblock-1", "slides-83-xrblock-2", "slides-83-xrblock-3", "slides-83-xrblock-4", "slides-83-xrblock-5", "slides-83-xrblock-6", "slides-83-xrblock-7", "slides-83-xrblock-8", "slides-83-xrblock-9"], "scheduled": "2012-02-23 00:00:00", "group": 1815, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2209, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-17 00:00:00", "short": "", "attendees": 80, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 109884, "materials": ["agenda-83-mif", "minutes-83-mif", "slides-83-mif-0", "slides-83-mif-1", "slides-83-mif-10", "slides-83-mif-11", "slides-83-mif-2", "slides-83-mif-3", "slides-83-mif-4", "slides-83-mif-5", "slides-83-mif-6", "slides-83-mif-7", "slides-83-mif-8", "slides-83-mif-9"], "scheduled": "2012-02-23 00:00:00", "group": 1755, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2210, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-17 00:00:00", "short": "", "attendees": 100, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 103769, "materials": ["agenda-83-sipcore", "minutes-83-sipcore", "slides-83-sipcore-0", "slides-83-sipcore-1", "slides-83-sipcore-2"], "scheduled": "2012-02-23 00:00:00", "group": 1762, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 2211, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-17 00:00:00", "short": "", "attendees": 70, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 103283, "materials": ["agenda-83-netext", "minutes-83-netext", "slides-83-netext-0", "slides-83-netext-1", "slides-83-netext-2", "slides-83-netext-3", "slides-83-netext-4", "slides-83-netext-5", "slides-83-netext-6", "slides-83-netext-7", "slides-83-netext-8"], "scheduled": "2012-02-23 00:00:00", "group": 1756, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2212, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-17 00:00:00", "short": "", "attendees": 100, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "Please consider placing this in a consecutive sequence with AVTCORE, such that we can run as a single session with a change of chairs. This may be dependent also on the needs of XRBLOCK to meet or not meet.", "requested_by": 105097, "materials": ["agenda-83-avtext", "minutes-83-avtext", "slides-83-avtext-0", "slides-83-avtext-1", "slides-83-avtext-2", "slides-83-avtext-3", "slides-83-avtext-4", "slides-83-avtext-5", "slides-83-avtext-6", "slides-83-avtext-7"], "scheduled": "2012-02-23 00:00:00", "group": 1813, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 2213, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-17 00:00:00", "short": "", "attendees": 50, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 105097, "materials": ["agenda-83-bfcpbis", "minutes-83-bfcpbis", "slides-83-bfcpbis-0", "slides-83-bfcpbis-1"], "scheduled": "2012-02-23 00:00:00", "group": 1832, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 2214, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-17 00:00:00", "short": "", "attendees": 150, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "Please no Friday,", "requested_by": 3760, "materials": ["agenda-83-dnsext", "minutes-83-dnsext", "slides-83-dnsext-0", "slides-83-dnsext-1", "slides-83-dnsext-2", "slides-83-dnsext-3", "slides-83-dnsext-4", "slides-83-dnsext-5", "slides-83-dnsext-6", "slides-83-dnsext-7"], "scheduled": "2012-02-23 00:00:00", "group": 1479, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 2215, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-17 00:00:00", "short": "", "attendees": 200, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "We can live with 2 slots of one hour if that facilitates the scheduling (other conflicts: ICCRG, Complexity RG)", "requested_by": 105255, "materials": ["agenda-83-conex", "minutes-83-conex", "slides-83-conex-0", "slides-83-conex-1", "slides-83-conex-2", "slides-83-conex-3", "slides-83-conex-4", "slides-83-conex-5"], "scheduled": "2012-02-23 00:00:00", "group": 1775, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2216, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-17 00:00:00", "short": "", "attendees": 100, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 105873, "materials": ["agenda-83-avtcore", "minutes-83-avtcore", "slides-83-avtcore-0", "slides-83-avtcore-1", "slides-83-avtcore-2", "slides-83-avtcore-3", "slides-83-avtcore-4", "slides-83-avtcore-5", "slides-83-avtcore-6", "slides-83-avtcore-7", "slides-83-avtcore-8", "slides-83-avtcore-9"], "scheduled": "2012-02-23 00:00:00", "group": 1812, "meeting": 83, "requested_duration": 9000}},
|
||||
{"pk": 2217, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-17 00:00:00", "short": "", "attendees": 60, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 108049, "materials": ["agenda-83-geopriv", "minutes-83-geopriv", "slides-83-geopriv-0", "slides-83-geopriv-1"], "scheduled": "2012-02-23 00:00:00", "group": 1543, "meeting": 83, "requested_duration": 5400}},
|
||||
{"pk": 2218, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-17 00:00:00", "short": "", "attendees": 80, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "not on Friday, please", "requested_by": 108049, "materials": ["agenda-83-ecrit", "minutes-83-ecrit", "slides-83-ecrit-0", "slides-83-ecrit-1", "slides-83-ecrit-2", "slides-83-ecrit-3", "slides-83-ecrit-4", "slides-83-ecrit-5", "slides-83-ecrit-6"], "scheduled": "2012-02-23 00:00:00", "group": 1643, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2219, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-17 00:00:00", "short": "", "attendees": 125, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "Can we have the last session on Thursday? We used to do it right after lunch, last time we moved it one slot later in the day, but this time we'd like to have the last 2hr slot of Thursday. Thanks!", "requested_by": 19483, "materials": ["agenda-83-saag", "minutes-83-saag", "slides-83-saag-0", "slides-83-saag-1", "slides-83-saag-2", "slides-83-saag-3"], "scheduled": "2012-02-23 00:00:00", "group": 1187, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2220, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-17 00:00:00", "short": "", "attendees": 20, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 107406, "materials": ["agenda-83-drinks", "minutes-83-drinks", "slides-83-drinks-0", "slides-83-drinks-1", "slides-83-drinks-2", "slides-83-drinks-3", "slides-83-drinks-4", "slides-83-drinks-5", "slides-83-drinks-6", "slides-83-drinks-7"], "scheduled": "2012-02-23 00:00:00", "group": 1739, "meeting": 83, "requested_duration": 5400}},
|
||||
{"pk": 2221, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-18 00:00:00", "short": "", "attendees": 60, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "(other conflicts: ICCRG, rmcat BoF (RTP congestion control))", "requested_by": 110636, "materials": ["agenda-83-tcpm", "minutes-83-tcpm", "slides-83-tcpm-0", "slides-83-tcpm-1", "slides-83-tcpm-2", "slides-83-tcpm-3", "slides-83-tcpm-4", "slides-83-tcpm-5", "slides-83-tcpm-6", "slides-83-tcpm-7", "slides-83-tcpm-8"], "scheduled": "2012-02-23 00:00:00", "group": 1620, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2222, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-18 00:00:00", "short": "", "attendees": 50, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "(other conflicts: nmrg)", "requested_by": 13775, "materials": ["agenda-83-ncrg", "minutes-83-ncrg", "slides-83-ncrg-0", "slides-83-ncrg-1", "slides-83-ncrg-2", "slides-83-ncrg-3"], "scheduled": "2012-02-23 00:00:00", "group": 47, "meeting": 83, "requested_duration": 9000}},
|
||||
{"pk": 2223, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-18 00:00:00", "short": "", "attendees": 50, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "Monday-Wednesday preferred (other conflicts: any TSV BOFs, e.g. there has been talk about doing a BOF on RTP congestion control, that would collide)", "requested_by": 103877, "materials": ["agenda-83-iccrg", "minutes-83-iccrg", "slides-83-iccrg-0", "slides-83-iccrg-1", "slides-83-iccrg-2", "slides-83-iccrg-3", "slides-83-iccrg-4", "slides-83-iccrg-5", "slides-83-iccrg-6", "slides-83-iccrg-7", "slides-83-iccrg-8", "slides-83-iccrg-9"], "scheduled": "2012-02-23 00:00:00", "group": 42, "meeting": 83, "requested_duration": 9000}},
|
||||
{"pk": 2224, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-18 00:00:00", "short": "", "attendees": 100, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 107363, "materials": ["agenda-83-dnsop", "minutes-83-dnsop", "slides-83-dnsop-0", "slides-83-dnsop-1", "slides-83-dnsop-2", "slides-83-dnsop-3", "slides-83-dnsop-4", "slides-83-dnsop-5"], "scheduled": "2012-02-23 00:00:00", "group": 1452, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 2225, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-18 00:00:00", "short": "", "attendees": 20, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 21097, "materials": ["agenda-83-nfsv4", "minutes-83-nfsv4", "slides-83-nfsv4-0", "slides-83-nfsv4-1", "slides-83-nfsv4-2", "slides-83-nfsv4-3", "slides-83-nfsv4-4", "slides-83-nfsv4-5"], "scheduled": "2012-02-23 00:00:00", "group": 1152, "meeting": 83, "requested_duration": 9000}},
|
||||
{"pk": 2227, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-19 00:00:00", "short": "", "attendees": 20, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "Please avoid conflict with any App or Sec area BoFs.", "requested_by": 106842, "materials": ["agenda-83-marf", "minutes-83-marf", "slides-83-marf-0"], "scheduled": "2012-02-23 00:00:00", "group": 1783, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 2228, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-19 00:00:00", "short": "", "attendees": 25, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 111434, "materials": ["agenda-83-radext", "minutes-83-radext", "slides-83-radext-0", "slides-83-radext-1", "slides-83-radext-2", "slides-83-radext-3"], "scheduled": "2012-02-23 00:00:00", "group": 1612, "meeting": 83, "requested_duration": 5400}},
|
||||
{"pk": 2229, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-20 00:00:00", "short": "", "attendees": 40, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "we have been on the Friday 4 times in a row now, would be nice to be on another day for a change, but no big deal if not. (other conflicts: in general any Security Area WG or BOFs)", "requested_by": 109496, "materials": ["agenda-83-abfab", "minutes-83-abfab", "slides-83-abfab-0", "slides-83-abfab-1", "slides-83-abfab-2", "slides-83-abfab-3", "slides-83-abfab-4"], "scheduled": "2012-02-23 00:00:00", "group": 1804, "meeting": 83, "requested_duration": 5400}},
|
||||
{"pk": 2230, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-20 00:00:00", "short": "", "attendees": 40, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "Could also be 1.5 hours. Can *not* be on Friday because one chair (Paul Hoffman) will be hosting a BoF on Friday.", "requested_by": 10083, "materials": ["agenda-83-ipsecme", "minutes-83-ipsecme", "slides-83-ipsecme-0", "slides-83-ipsecme-1", "slides-83-ipsecme-2", "slides-83-ipsecme-3", "slides-83-ipsecme-4", "slides-83-ipsecme-5"], "scheduled": "2012-02-23 00:00:00", "group": 1740, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 2231, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-22 00:00:00", "short": "", "attendees": 100, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "Please schedule Mon-Wed (co-chair needs to be in Orlando at IEEE Global Internet Symposium on Friday and hence leave on Thursday morning) (other conflicts: ICN, Internet-of-Things)", "requested_by": 11842, "materials": ["agenda-83-dtnrg", "minutes-83-dtnrg", "slides-83-dtnrg-0", "slides-83-dtnrg-1", "slides-83-dtnrg-2", "slides-83-dtnrg-3", "slides-83-dtnrg-4", "slides-83-dtnrg-5", "slides-83-dtnrg-6", "slides-83-dtnrg-7"], "scheduled": "2012-02-23 00:00:00", "group": 32, "meeting": 83, "requested_duration": 9000}},
|
||||
{"pk": 2232, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-23 00:00:00", "short": "", "attendees": 70, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 107998, "materials": ["agenda-83-mptcp", "minutes-83-mptcp", "slides-83-mptcp-0", "slides-83-mptcp-1", "slides-83-mptcp-2", "slides-83-mptcp-3", "slides-83-mptcp-4", "slides-83-mptcp-5", "slides-83-mptcp-6"], "scheduled": "2012-02-23 00:00:00", "group": 1764, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2233, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-23 00:00:00", "short": "", "attendees": 125, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 104935, "materials": ["agenda-83-l2vpn", "minutes-83-l2vpn", "slides-83-l2vpn-0", "slides-83-l2vpn-1", "slides-83-l2vpn-2", "slides-83-l2vpn-3", "slides-83-l2vpn-4", "slides-83-l2vpn-5", "slides-83-l2vpn-6", "slides-83-l2vpn-7", "slides-83-l2vpn-8"], "scheduled": "2012-02-23 00:00:00", "group": 1593, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2234, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-23 00:00:00", "short": "", "attendees": 20, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "(other conflicts: WEIRDS)", "requested_by": 106296, "materials": ["agenda-83-urnbis", "minutes-83-urnbis", "slides-83-urnbis-0", "slides-83-urnbis-1", "slides-83-urnbis-2"], "scheduled": "2012-02-23 00:00:00", "group": 1792, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 2235, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-23 00:00:00", "short": "", "attendees": 120, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 105786, "materials": ["agenda-83-pwe3", "minutes-83-pwe3", "slides-83-pwe3-0", "slides-83-pwe3-1", "slides-83-pwe3-2", "slides-83-pwe3-3", "slides-83-pwe3-4", "slides-83-pwe3-5", "slides-83-pwe3-6", "slides-83-pwe3-7", "slides-83-pwe3-8"], "scheduled": "2012-02-23 00:00:00", "group": 1538, "meeting": 83, "requested_duration": 9000}},
|
||||
{"pk": 2236, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-23 00:00:00", "short": "", "attendees": 30, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 105786, "materials": ["agenda-83-ancp", "minutes-83-ancp", "slides-83-ancp-0", "slides-83-ancp-1", "slides-83-ancp-2", "slides-83-ancp-3"], "scheduled": "2012-02-23 00:00:00", "group": 1693, "meeting": 83, "requested_duration": 5400}},
|
||||
{"pk": 2237, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-23 00:00:00", "short": "", "attendees": 75, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "WebEx (we always have remote attendees).", "requested_by": 111529, "materials": ["agenda-83-eman", "minutes-83-eman", "slides-83-eman-0", "slides-83-eman-1", "slides-83-eman-2", "slides-83-eman-3", "slides-83-eman-4", "slides-83-eman-5", "slides-83-eman-6", "slides-83-eman-7"], "scheduled": "2012-02-23 00:00:00", "group": 1801, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2238, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-23 00:00:00", "short": "", "attendees": 70, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "Monday and Tuesday preferable. 2.5 hour slot(s) are fine too.", "requested_by": 103881, "materials": ["agenda-83-httpbis", "minutes-83-httpbis", "slides-83-httpbis-0", "slides-83-httpbis-1", "slides-83-httpbis-2", "slides-83-httpbis-3", "slides-83-httpbis-4", "slides-83-httpbis-5", "slides-83-httpbis-6"], "scheduled": "2012-02-23 00:00:00", "group": 1718, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 12238, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-23 00:00:00", "short": "", "attendees": 70, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "Monday and Tuesday preferable. 2.5 hour slot(s) are fine too.", "requested_by": 103881, "materials": ["agenda-83-httpbis", "minutes-83-httpbis", "slides-83-httpbis-0", "slides-83-httpbis-1", "slides-83-httpbis-2", "slides-83-httpbis-3", "slides-83-httpbis-4", "slides-83-httpbis-5", "slides-83-httpbis-6"], "scheduled": "2012-02-23 00:00:00", "group": 1718, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2239, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-23 00:00:00", "short": "", "attendees": 30, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 107131, "materials": ["agenda-83-atoca", "minutes-83-atoca", "slides-83-atoca-0", "slides-83-atoca-1", "slides-83-atoca-2"], "scheduled": "2012-02-23 00:00:00", "group": 1760, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 2240, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-24 00:00:00", "short": "", "attendees": 125, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "(other conflicts: rrg cloud dcops sdnp sdn)", "requested_by": 112438, "materials": ["agenda-83-armd", "minutes-83-armd", "slides-83-armd-0", "slides-83-armd-1"], "scheduled": "2012-02-23 00:00:00", "group": 1807, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 2241, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-24 00:00:00", "short": "", "attendees": 40, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "not Friday", "requested_by": 107041, "materials": ["agenda-83-precis", "minutes-83-precis", "slides-83-precis-0", "slides-83-precis-1", "slides-83-precis-2", "slides-83-precis-3", "slides-83-precis-4", "slides-83-precis-5"], "scheduled": "2012-02-23 00:00:00", "group": 1798, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2242, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-24 00:00:00", "short": "", "attendees": 75, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "Please avoid all other TSV area sessions, including tsvarea. (other conflicts: iccrg, tmrg \r\nand, if possible, all BoFs in TSV or RAI)", "requested_by": 104331, "materials": ["agenda-83-tsvwg", "minutes-83-tsvwg", "slides-83-tsvwg-0", "slides-83-tsvwg-1", "slides-83-tsvwg-10", "slides-83-tsvwg-11", "slides-83-tsvwg-2", "slides-83-tsvwg-3", "slides-83-tsvwg-4", "slides-83-tsvwg-5", "slides-83-tsvwg-6", "slides-83-tsvwg-7", "slides-83-tsvwg-8", "slides-83-tsvwg-9"], "scheduled": "2012-02-23 00:00:00", "group": 1463, "meeting": 83, "requested_duration": 9000}},
|
||||
{"pk": 2243, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-25 00:00:00", "short": "", "attendees": 25, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 102900, "materials": ["agenda-83-bmwg", "minutes-83-bmwg", "slides-83-bmwg-0", "slides-83-bmwg-1", "slides-83-bmwg-2", "slides-83-bmwg-3", "slides-83-bmwg-4", "slides-83-bmwg-5"], "scheduled": "2012-02-23 00:00:00", "group": 945, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2244, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-25 00:00:00", "short": "", "attendees": 75, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 22933, "materials": ["agenda-83-isis", "minutes-83-isis", "slides-83-isis-0", "slides-83-isis-1", "slides-83-isis-2", "slides-83-isis-3", "slides-83-isis-4", "slides-83-isis-5", "slides-83-isis-6", "slides-83-isis-7", "slides-83-isis-8"], "scheduled": "2012-02-23 00:00:00", "group": 1102, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 2245, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-26 00:00:00", "short": "", "attendees": 75, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "No request per se for WebEx as yet, could be handy to have available if requested later.", "requested_by": 106461, "materials": ["agenda-83-6renum", "minutes-83-6renum", "slides-83-6renum-0", "slides-83-6renum-1", "slides-83-6renum-2", "slides-83-6renum-3", "slides-83-6renum-4", "slides-83-6renum-5"], "scheduled": "2012-02-23 00:00:00", "group": 1824, "meeting": 83, "requested_duration": 5400}},
|
||||
{"pk": 2246, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-26 00:00:00", "short": "", "attendees": 30, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "Please do not schedule the NEA WG meeting on Friday. Chair cannot attend on that day.", "requested_by": 15448, "materials": ["agenda-83-nea", "minutes-83-nea", "slides-83-nea-0"], "scheduled": "2012-02-23 00:00:00", "group": 1688, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2247, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-26 00:00:00", "short": "", "attendees": 60, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 108304, "materials": ["agenda-83-opsec", "minutes-83-opsec", "slides-83-opsec-0", "slides-83-opsec-1", "slides-83-opsec-2", "slides-83-opsec-3", "slides-83-opsec-4", "slides-83-opsec-5", "slides-83-opsec-6"], "scheduled": "2012-02-23 00:00:00", "group": 1599, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 2248, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-27 00:00:00", "short": "", "attendees": 50, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 100603, "materials": ["agenda-83-ippm", "minutes-83-ippm", "slides-83-ippm-0", "slides-83-ippm-1", "slides-83-ippm-2"], "scheduled": "2012-02-23 00:00:00", "group": 1089, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2249, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-27 00:00:00", "short": "", "attendees": 60, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 108123, "materials": ["agenda-83-paws", "minutes-83-paws", "slides-83-paws-0", "slides-83-paws-1", "slides-83-paws-2", "slides-83-paws-3", "slides-83-paws-4"], "scheduled": "2012-02-23 00:00:00", "group": 1819, "meeting": 83, "requested_duration": 9000}},
|
||||
{"pk": 2250, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-27 00:00:00", "short": "", "attendees": 40, "name": "", "agenda_note": "Combined with KITTEN", "modified": "2012-02-23 00:00:00", "comments": "This will be a combined session for krb-wg and kitten. Please be sure to consider any requests made by other WGs to avoid conflicts with either krb-wg or kitten.\r\n\r\nWe're still working out how to handle the agendas; we may end up publishing a combined agenda or separate agendas for each group.\r\n\r\nExtra microphones (at least 2) to pass around the room. Wireless mics are nice, but wired ones will also work.", "requested_by": 104978, "materials": ["agenda-83-krb-wg", "minutes-83-krb-wg", "slides-83-krb-wg-0", "slides-83-krb-wg-1", "slides-83-krb-wg-2"], "scheduled": "2012-02-23 00:00:00", "group": 1496, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2251, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-27 00:00:00", "short": "", "attendees": 15, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "(other conflicts: IRTF open meeting, P2PRG, multrans BoF)", "requested_by": 106348, "materials": ["agenda-83-samrg", "minutes-83-samrg", "slides-83-samrg-0", "slides-83-samrg-1", "slides-83-samrg-2", "slides-83-samrg-3", "slides-83-samrg-4"], "scheduled": "2012-02-23 00:00:00", "group": 41, "meeting": 83, "requested_duration": 5400}},
|
||||
{"pk": 2252, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-27 00:00:00", "short": "", "attendees": 50, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 104140, "materials": ["agenda-83-xmpp", "minutes-83-xmpp", "slides-83-xmpp-0", "slides-83-xmpp-1", "slides-83-xmpp-2", "slides-83-xmpp-3", "slides-83-xmpp-4", "slides-83-xmpp-5", "slides-83-xmpp-6", "slides-83-xmpp-7"], "scheduled": "2012-02-23 00:00:00", "group": 1761, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 2253, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-28 00:00:00", "short": "", "attendees": 40, "name": "", "agenda_note": "Combined with KRB-WG", "modified": "2012-02-23 00:00:00", "comments": "This will be a combined session for krb-wg and kitten. Please be sure to consider any requests made by other WGs to avoid conflicts with either krb-wg or kitten. We're still working out how to handle the agendas; we may end up publishing a combined agenda or separate agendas for each group. Extra microphones (at least 2) to pass around the room. Wireless mics are nice, but wired ones will also work.", "requested_by": 107956, "materials": ["agenda-83-kitten", "minutes-83-kitten", "slides-83-kitten-0", "slides-83-kitten-1", "slides-83-kitten-2", "slides-83-kitten-3", "slides-83-kitten-4", "slides-83-kitten-5"], "scheduled": "2012-02-23 00:00:00", "group": 1634, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2254, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-29 00:00:00", "short": "", "attendees": 50, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 101208, "materials": ["agenda-83-tls", "minutes-83-tls", "slides-83-tls-0", "slides-83-tls-1", "slides-83-tls-2", "slides-83-tls-3", "slides-83-tls-4", "slides-83-tls-5", "slides-83-tls-6", "slides-83-tls-7", "slides-83-tls-8"], "scheduled": "2012-02-23 00:00:00", "group": 1326, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 2255, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-30 00:00:00", "short": "", "attendees": 100, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 110531, "materials": ["agenda-83-lwig", "minutes-83-lwig", "slides-83-lwig-0", "slides-83-lwig-1", "slides-83-lwig-2", "slides-83-lwig-3", "slides-83-lwig-4", "slides-83-lwig-5", "slides-83-lwig-6", "slides-83-lwig-7"], "scheduled": "2012-02-23 00:00:00", "group": 1817, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2256, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-30 00:00:00", "short": "", "attendees": 100, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 107491, "materials": ["agenda-83-hybi", "minutes-83-hybi", "slides-83-hybi-0", "slides-83-hybi-1", "slides-83-hybi-2"], "scheduled": "2012-02-23 00:00:00", "group": 1777, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2257, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-30 00:00:00", "short": "", "attendees": 35, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 4857, "materials": ["agenda-83-tictoc", "minutes-83-tictoc", "slides-83-tictoc-0", "slides-83-tictoc-1", "slides-83-tictoc-2", "slides-83-tictoc-3", "slides-83-tictoc-4", "slides-83-tictoc-5", "slides-83-tictoc-6"], "scheduled": "2012-02-23 00:00:00", "group": 1709, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2258, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-30 00:00:00", "short": "", "attendees": 60, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "(other conflicts: P2PRG as First Priority)", "requested_by": 106438, "materials": ["agenda-83-p2psip", "minutes-83-p2psip", "slides-83-p2psip-0", "slides-83-p2psip-1", "slides-83-p2psip-2", "slides-83-p2psip-3", "slides-83-p2psip-4", "slides-83-p2psip-5", "slides-83-p2psip-6"], "scheduled": "2012-02-23 00:00:00", "group": 1705, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 2259, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-30 00:00:00", "short": "", "attendees": 50, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "(other conflicts: Please avoid conflict with any App or Sec area BoFs.)", "requested_by": 21684, "materials": ["agenda-83-oauth", "minutes-83-oauth", "slides-83-oauth-0", "slides-83-oauth-1"], "scheduled": "2012-02-23 00:00:00", "group": 1748, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2260, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-30 00:00:00", "short": "", "attendees": 120, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 101685, "materials": ["agenda-83-cdni", "minutes-83-cdni", "slides-83-cdni-0", "slides-83-cdni-1", "slides-83-cdni-10", "slides-83-cdni-11", "slides-83-cdni-12", "slides-83-cdni-13", "slides-83-cdni-14", "slides-83-cdni-15", "slides-83-cdni-16", "slides-83-cdni-2", "slides-83-cdni-3", "slides-83-cdni-4", "slides-83-cdni-5", "slides-83-cdni-6", "slides-83-cdni-7", "slides-83-cdni-8", "slides-83-cdni-9"], "scheduled": "2012-02-23 00:00:00", "group": 1822, "meeting": 83, "requested_duration": 5400}},
|
||||
{"pk": 12260, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-30 00:00:00", "short": "", "attendees": 120, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 101685, "materials": ["agenda-83-cdni", "minutes-83-cdni", "slides-83-cdni-0", "slides-83-cdni-1", "slides-83-cdni-10", "slides-83-cdni-11", "slides-83-cdni-12", "slides-83-cdni-13", "slides-83-cdni-14", "slides-83-cdni-15", "slides-83-cdni-16", "slides-83-cdni-2", "slides-83-cdni-3", "slides-83-cdni-4", "slides-83-cdni-5", "slides-83-cdni-6", "slides-83-cdni-7", "slides-83-cdni-8", "slides-83-cdni-9"], "scheduled": "2012-02-23 00:00:00", "group": 1822, "meeting": 83, "requested_duration": 5400}},
|
||||
{"pk": 2261, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-30 00:00:00", "short": "", "attendees": 30, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 106638, "materials": ["agenda-83-pcn", "minutes-83-pcn", "slides-83-pcn-0", "slides-83-pcn-1", "slides-83-pcn-2"], "scheduled": "2012-02-23 00:00:00", "group": 1701, "meeting": 83, "requested_duration": 5400}},
|
||||
{"pk": 2262, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-30 00:00:00", "short": "", "attendees": 150, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 106412, "materials": ["agenda-83-intarea", "minutes-83-intarea", "slides-83-intarea-0", "slides-83-intarea-1", "slides-83-intarea-2", "slides-83-intarea-3", "slides-83-intarea-4", "slides-83-intarea-5", "slides-83-intarea-6", "slides-83-intarea-7", "slides-83-intarea-8", "slides-83-intarea-9"], "scheduled": "2012-02-23 00:00:00", "group": 1665, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2263, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-30 00:00:00", "short": "", "attendees": 50, "name": "", "agenda_note": "Room Changed From 252A", "modified": "2012-03-24 03:24:15", "comments": "", "requested_by": 106412, "materials": ["agenda-83-mobopts", "minutes-83-mobopts", "slides-83-mobopts-0", "slides-83-mobopts-1", "slides-83-mobopts-2", "slides-83-mobopts-3"], "scheduled": "2012-02-23 00:00:00", "group": 37, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2265, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-30 00:00:00", "short": "", "attendees": 50, "name": "", "agenda_note": "CANCELED", "modified": "2012-03-16 11:08:40", "comments": "additional 2nd priority conflict to avoid: all other APP area WGs and BOFs\r\n\r\nthanks (other conflicts: WEIRD (if became BOF), and all other BOFs in app-area)", "requested_by": 111335, "materials": [], "scheduled": "2012-02-23 00:00:00", "group": 1686, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2266, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-01-30 00:00:00", "short": "", "attendees": 25, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "We will require remote participation for most of the editors and the WG chair. Since editors and WG chairs are in the US and Japan it will be tough to find a good time. \r\n\r\nRequesting the earliest session either 8am or 9am, or the afternoon at 3pm.", "requested_by": 112547, "materials": ["agenda-83-iri", "minutes-83-iri", "slides-83-iri-0", "slides-83-iri-1", "slides-83-iri-2", "slides-83-iri-3"], "scheduled": "2012-02-23 00:00:00", "group": 1778, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 2267, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-02-01 00:00:00", "short": "", "attendees": 90, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 108757, "materials": ["agenda-83-grow", "minutes-83-grow", "slides-83-grow-0", "slides-83-grow-1"], "scheduled": "2012-02-23 00:00:00", "group": 1584, "meeting": 83, "requested_duration": 5400}},
|
||||
{"pk": 2268, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-02-03 00:00:00", "short": "", "attendees": 50, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 108757, "materials": ["agenda-83-spfbis", "minutes-83-spfbis", "slides-83-spfbis-0", "slides-83-spfbis-1"], "scheduled": "2012-02-23 00:00:00", "group": 1836, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2270, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-02-09 00:00:00", "short": "", "attendees": 20, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 108757, "materials": ["agenda-83-cfrg", "minutes-83-cfrg", "slides-83-cfrg-0", "slides-83-cfrg-1", "slides-83-cfrg-2", "slides-83-cfrg-3", "slides-83-cfrg-4", "slides-83-cfrg-5", "slides-83-cfrg-6", "slides-83-cfrg-7"], "scheduled": "2012-02-23 00:00:00", "group": 31, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 2271, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-02-10 00:00:00", "short": "", "attendees": 50, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 108757, "materials": ["agenda-83-vipr", "minutes-83-vipr", "slides-83-vipr-0", "slides-83-vipr-1", "slides-83-vipr-2", "slides-83-vipr-3"], "scheduled": "2012-02-23 00:00:00", "group": 1823, "meeting": 83, "requested_duration": 5400}},
|
||||
{"pk": 2272, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-02-23 00:00:00", "short": "", "attendees": null, "name": "IETF Operations and Administration Plenary", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 0, "materials": ["agenda-83-iesg-ietf-operations-and-administration-plenary", "agenda-83-none-ietf-operations-and-administration-plenary", "minutes-83-iesg-ietf-operations-and-administration-plenary", "slides-83-iesg-0-ietf-operations-and-administration-plenary", "slides-83-iesg-1-ietf-operations-and-administration-plenary", "slides-83-iesg-10-ietf-operations-and-administration-plenary", "slides-83-iesg-11-ietf-operations-and-administration-plenary", "slides-83-iesg-12-ietf-operations-and-administration-plenary", "slides-83-iesg-2-ietf-operations-and-administration-plenary", "slides-83-iesg-3-ietf-operations-and-administration-plenary", "slides-83-iesg-4-ietf-operations-and-administration-plenary", "slides-83-iesg-5-ietf-operations-and-administration-plenary", "slides-83-iesg-6-ietf-operations-and-administration-plenary", "slides-83-iesg-7-ietf-operations-and-administration-plenary", "slides-83-iesg-8-ietf-operations-and-administration-plenary", "slides-83-iesg-9-ietf-operations-and-administration-plenary"], "scheduled": "2012-02-23 00:00:00", "group": 2, "meeting": 83, "requested_duration": 0}},
|
||||
{"pk": 2273, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-02-23 00:00:00", "short": "", "attendees": null, "name": "Technical Plenary", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 0, "materials": ["agenda-83-iab-technical-plenary", "minutes-83-iab-technical-plenary", "slides-83-iab-0-technical-plenary", "slides-83-iab-1-technical-plenary", "slides-83-iab-10-technical-plenary", "slides-83-iab-11-technical-plenary", "slides-83-iab-12-technical-plenary", "slides-83-iab-13-technical-plenary", "slides-83-iab-2-technical-plenary", "slides-83-iab-3", "slides-83-iab-4", "slides-83-iab-5-technical-plenary", "slides-83-iab-6-technical-plenary", "slides-83-iab-7-technical-plenary", "slides-83-iab-8-technical-plenary", "slides-83-iab-9-technical-plenary"], "scheduled": "2012-02-23 00:00:00", "group": 7, "meeting": 83, "requested_duration": 0}},
|
||||
{"pk": 2274, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-02-23 00:00:00", "short": "", "attendees": null, "name": "Tools for Creating Internet-Drafts Tutorial", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 0, "materials": ["slides-83-edu-0-tools-for-creating-internet-drafts-tutorial"], "scheduled": "2012-02-23 00:00:00", "group": 1591, "meeting": 83, "requested_duration": 0}},
|
||||
{"pk": 2275, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-02-23 00:00:00", "short": "", "attendees": null, "name": "Newcomers' Orientation", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 0, "materials": ["slides-83-edu-0-newcomers-orientation", "slides-83-edu-1-newcomers-orientation"], "scheduled": "2012-02-23 00:00:00", "group": 1591, "meeting": 83, "requested_duration": 0}},
|
||||
{"pk": 2276, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-02-23 00:00:00", "short": "", "attendees": null, "name": "Operations, Administration, and Maintenance Tutorial", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 0, "materials": ["slides-83-ietf-0-operations-administration-and-maintenance-tutorial"], "scheduled": "2012-02-23 00:00:00", "group": 1591, "meeting": 83, "requested_duration": 0}},
|
||||
{"pk": 2277, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-02-23 00:00:00", "short": "", "attendees": null, "name": "Newcomers' Orientation (French)", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 0, "materials": ["slides-83-ietf-0-newcomers-orientation-french"], "scheduled": "2012-02-23 00:00:00", "group": 1591, "meeting": 83, "requested_duration": 0}},
|
||||
{"pk": 2278, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-02-23 00:00:00", "short": "", "attendees": null, "name": "Meetecho Tutorial for Participants and WG Chairs", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 0, "materials": [], "scheduled": "2012-02-23 00:00:00", "group": 1, "meeting": 83, "requested_duration": 0}},
|
||||
{"pk": 2279, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-02-23 00:00:00", "short": "", "attendees": null, "name": "Welcome Reception", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 0, "materials": [], "scheduled": "2012-02-23 00:00:00", "group": 1, "meeting": 83, "requested_duration": 0}},
|
||||
{"pk": 2280, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-02-23 00:00:00", "short": "", "attendees": null, "name": "Newcomers' Meet and Greet (open to Newcomers and WG chairs only)", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 0, "materials": [], "scheduled": "2012-02-23 00:00:00", "group": 1, "meeting": 83, "requested_duration": 0}},
|
||||
{"pk": 2281, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-02-23 00:00:00", "short": "", "attendees": null, "name": "", "agenda_note": "Room Changed From 241", "modified": "2012-03-24 03:15:56", "comments": "", "requested_by": 0, "materials": ["agenda-83-i2aex", "minutes-83-i2aex", "slides-83-i2aex-0", "slides-83-i2aex-1", "slides-83-i2aex-2", "slides-83-i2aex-3", "slides-83-i2aex-4", "slides-83-i2aex-5"], "scheduled": "2012-02-23 00:00:00", "group": 1841, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 2282, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-02-23 00:00:00", "short": "", "attendees": null, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 0, "materials": ["agenda-83-insipid", "minutes-83-insipid", "slides-83-insipid-0", "slides-83-insipid-1", "slides-83-insipid-2", "slides-83-insipid-3", "slides-83-insipid-4", "slides-83-insipid-5"], "scheduled": "2012-02-23 00:00:00", "group": 1839, "meeting": 83, "requested_duration": 0}},
|
||||
{"pk": 2283, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-02-23 00:00:00", "short": "", "attendees": null, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 0, "materials": ["agenda-83-antitrust", "minutes-83-antitrust", "slides-83-antitrust-0", "slides-83-antitrust-1", "slides-83-antitrust-2"], "scheduled": "2012-02-23 00:00:00", "group": 1844, "meeting": 83, "requested_duration": 0}},
|
||||
{"pk": 2284, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-02-23 00:00:00", "short": "", "attendees": null, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 0, "materials": ["agenda-83-weirds", "minutes-83-weirds", "slides-83-weirds-0"], "scheduled": "2012-02-23 00:00:00", "group": 1834, "meeting": 83, "requested_duration": 0}},
|
||||
{"pk": 2285, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-02-23 00:00:00", "short": "", "attendees": null, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 0, "materials": ["agenda-83-nvo3", "minutes-83-nvo3", "slides-83-nvo3-0", "slides-83-nvo3-1", "slides-83-nvo3-2", "slides-83-nvo3-3", "slides-83-nvo3-4", "slides-83-nvo3-5", "slides-83-nvo3-6"], "scheduled": "2012-02-23 00:00:00", "group": 1840, "meeting": 83, "requested_duration": 0}},
|
||||
{"pk": 2286, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-02-23 00:00:00", "short": "", "attendees": null, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 0, "materials": ["agenda-83-scim", "minutes-83-scim", "slides-83-scim-0", "slides-83-scim-1", "slides-83-scim-2", "slides-83-scim-3"], "scheduled": "2012-02-23 00:00:00", "group": 1842, "meeting": 83, "requested_duration": 0}},
|
||||
{"pk": 2287, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-02-23 00:00:00", "short": "", "attendees": null, "name": "", "agenda_note": "", "modified": "2012-02-23 00:00:00", "comments": "", "requested_by": 0, "materials": ["agenda-83-rpsreqs", "minutes-83-rpsreqs", "slides-83-rpsreqs-0"], "scheduled": "2012-02-23 00:00:00", "group": 1843, "meeting": 83, "requested_duration": 0}},
|
||||
{"pk": 2288, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-02-24 00:00:00", "short": "", "attendees": null, "name": "IEPG Meeting", "agenda_note": "", "modified": "2012-02-24 00:00:00", "comments": "", "requested_by": 0, "materials": [], "scheduled": "2012-02-24 00:00:00", "group": 9, "meeting": 83, "requested_duration": 0}},
|
||||
{"pk": 22038, "model": "meeting.session", "fields": {"status": "notmeet", "requested": "2012-02-26 00:36:50", "short": "", "attendees": null, "name": "", "agenda_note": "", "modified": "2012-02-26 00:36:50", "comments": "", "requested_by": 0, "materials": [], "scheduled": null, "group": 1799, "meeting": 83, "requested_duration": 0}},
|
||||
{"pk": 22039, "model": "meeting.session", "fields": {"status": "notmeet", "requested": "2012-02-26 00:36:50", "short": "", "attendees": null, "name": "", "agenda_note": "", "modified": "2012-02-26 00:36:50", "comments": "", "requested_by": 0, "materials": [], "scheduled": null, "group": 1642, "meeting": 83, "requested_duration": 0}},
|
||||
{"pk": 22040, "model": "meeting.session", "fields": {"status": "notmeet", "requested": "2012-02-26 00:36:50", "short": "", "attendees": null, "name": "", "agenda_note": "", "modified": "2012-02-26 00:36:50", "comments": "", "requested_by": 0, "materials": [], "scheduled": null, "group": 1814, "meeting": 83, "requested_duration": 0}},
|
||||
{"pk": 22041, "model": "meeting.session", "fields": {"status": "notmeet", "requested": "2012-02-26 00:36:50", "short": "", "attendees": null, "name": "", "agenda_note": "", "modified": "2012-02-26 00:36:50", "comments": "", "requested_by": 0, "materials": [], "scheduled": null, "group": 1829, "meeting": 83, "requested_duration": 0}},
|
||||
{"pk": 22042, "model": "meeting.session", "fields": {"status": "notmeet", "requested": "2012-02-26 00:36:50", "short": "", "attendees": null, "name": "", "agenda_note": "", "modified": "2012-02-26 00:36:50", "comments": "", "requested_by": 0, "materials": [], "scheduled": null, "group": 1527, "meeting": 83, "requested_duration": 0}},
|
||||
{"pk": 22081, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-02-27 14:36:39", "short": "", "attendees": 50, "name": "", "agenda_note": "", "modified": "2012-02-27 19:16:01", "comments": "", "requested_by": 108757, "materials": ["agenda-83-rfcform", "minutes-83-rfcform", "slides-83-rfcform-0", "slides-83-rfcform-1", "slides-83-rfcform-2", "slides-83-rfcform-3", "slides-83-rfcform-4", "slides-83-rfcform-5"], "scheduled": null, "group": 1845, "meeting": 83, "requested_duration": 3600}},
|
||||
{"pk": 22083, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-03-05 11:15:18", "short": "", "attendees": null, "name": "Code Sprint", "agenda_note": "", "modified": "2012-03-05 11:15:18", "comments": "", "requested_by": 0, "materials": [], "scheduled": null, "group": 1712, "meeting": 83, "requested_duration": 0}},
|
||||
{"pk": 22084, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-03-05 13:54:42", "short": "", "attendees": 100, "name": "", "agenda_note": "", "modified": "2012-03-05 13:56:51", "comments": "", "requested_by": 108757, "materials": ["agenda-83-dmm", "minutes-83-dmm", "slides-83-dmm-0", "slides-83-dmm-1", "slides-83-dmm-10", "slides-83-dmm-11", "slides-83-dmm-2", "slides-83-dmm-3", "slides-83-dmm-4", "slides-83-dmm-5", "slides-83-dmm-6", "slides-83-dmm-7", "slides-83-dmm-8", "slides-83-dmm-9"], "scheduled": null, "group": 1847, "meeting": 83, "requested_duration": 9000}},
|
||||
{"pk": 22085, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-03-07 09:01:03", "short": "", "attendees": 100, "name": "", "agenda_note": "Combined with OPSAREA", "modified": "2012-03-12 13:25:11", "comments": "", "requested_by": 108757, "materials": ["agenda-83-opsawg", "slides-83-opsawg-0", "slides-83-opsawg-1", "slides-83-opsawg-2", "slides-83-opsawg-3", "slides-83-opsawg-4", "slides-83-opsawg-5", "slides-83-opsawg-6", "slides-83-opsawg-7", "slides-83-opsawg-8"], "scheduled": null, "group": 1714, "meeting": 83, "requested_duration": 9000}},
|
||||
{"pk": 22087, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-03-24 02:51:38", "short": "", "attendees": 120, "name": "", "agenda_note": "", "modified": "2012-03-24 03:16:22", "comments": "", "requested_by": 108757, "materials": ["agenda-83-sidr", "minutes-83-sidr", "slides-83-sidr-10", "slides-83-sidr-11", "slides-83-sidr-12", "slides-83-sidr-13", "slides-83-sidr-14", "slides-83-sidr-15", "slides-83-sidr-16", "slides-83-sidr-17", "slides-83-sidr-3", "slides-83-sidr-4", "slides-83-sidr-5", "slides-83-sidr-6", "slides-83-sidr-7", "slides-83-sidr-8", "slides-83-sidr-9"], "scheduled": null, "group": 1680, "meeting": 83, "requested_duration": 7200}},
|
||||
{"pk": 22089, "model": "meeting.session", "fields": {"status": "sched", "requested": "2012-03-28 09:52:00", "short": "", "attendees": null, "name": "Working Group Chairs' Training", "agenda_note": "", "modified": "2012-03-28 09:52:00", "comments": "", "requested_by": 0, "materials": ["slides-83-edu-0-working-group-chairs-lunch-tutorial"], "scheduled": null, "group": 1591, "meeting": 83, "requested_duration": 0}}
|
||||
]
|
346
ietf/meeting/helpers.py
Normal file
346
ietf/meeting/helpers.py
Normal file
|
@ -0,0 +1,346 @@
|
|||
# Copyright The IETF Trust 2007, All Rights Reserved
|
||||
|
||||
#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.db.models import Max, Q
|
||||
from django.conf import settings
|
||||
|
||||
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
|
||||
|
||||
from ietf.proceedings.models import Meeting as OldMeeting, IESGHistory, Switches
|
||||
|
||||
# New models
|
||||
from ietf.meeting.models import Meeting, TimeSlot, Session
|
||||
from ietf.meeting.models import Schedule, ScheduledSession
|
||||
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
|
||||
|
||||
@property
|
||||
def is_plenaryw(self):
|
||||
return self.timeslot.is_plenary_type("plenaryw")
|
||||
|
||||
@property
|
||||
def is_plenaryt(self):
|
||||
return self.timeslot.is_plenary_type("plenaryt")
|
||||
|
||||
@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")
|
||||
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))
|
||||
|
||||
num = 0
|
||||
# get list of ADs which are/were active at the time of the meeting.
|
||||
# (previous [x for x in y] syntax changed to aid debugging)
|
||||
for g in Group.objects.filter(type="area").order_by("acronym"):
|
||||
history = find_history_active_at(g, meeting_time)
|
||||
num = num +1
|
||||
if history and history != g:
|
||||
#print " history[%u]: %s" % (num, history)
|
||||
if history.state_id == "active":
|
||||
for x in history.rolehistory_set.filter(name="ad").select_related():
|
||||
#print "xh[%u]: %s" % (num, x)
|
||||
ads.append(IESGHistory().from_role(x, meeting_time))
|
||||
else:
|
||||
#print " group[%u]: %s" % (num, g)
|
||||
if g.state_id == "active":
|
||||
for x in g.role_set.filter(name="ad").select_related('group', 'person'):
|
||||
#print "xg[%u]: %s (#%u)" % (num, x, x.pk)
|
||||
ads.append(IESGHistory().from_role(x, meeting_time))
|
||||
return ads
|
||||
|
||||
def agenda_info(num=None, name=None):
|
||||
"""
|
||||
XXX this should really be a method on Meeting
|
||||
"""
|
||||
|
||||
try:
|
||||
if num != None:
|
||||
meeting = OldMeeting.objects.get(number=num)
|
||||
else:
|
||||
meeting = OldMeeting.objects.all().order_by('-date')[:1].get()
|
||||
except OldMeeting.DoesNotExist:
|
||||
raise Http404("No meeting information for meeting %s available" % num)
|
||||
|
||||
if name is not None:
|
||||
try:
|
||||
agenda = meeting.schedule_set.get(name=name)
|
||||
except Schedule.DoesNotExist:
|
||||
raise Http404("Meeting %s has no agenda named %s" % (num, name))
|
||||
else:
|
||||
agenda = meeting.agenda
|
||||
|
||||
if agenda is None:
|
||||
raise Http404("Meeting %s has no agenda set yet" % (num))
|
||||
|
||||
ntimeslots,scheduledsessions = get_ntimeslots_from_agenda(agenda)
|
||||
|
||||
update = Switches().from_object(meeting)
|
||||
venue = meeting.meeting_venue
|
||||
|
||||
ads = find_ads_for_meeting(meeting)
|
||||
|
||||
active_agenda = State.objects.get(type='agenda', slug='active')
|
||||
plenary_agendas = Document.objects.filter(session__meeting=meeting, session__scheduledsession__timeslot__type="plenary", type="agenda", ).distinct()
|
||||
plenaryw_agenda = plenaryt_agenda = "The Plenary has not been scheduled"
|
||||
for agenda in plenary_agendas:
|
||||
if active_agenda in agenda.states.all():
|
||||
# we use external_url at the moment, should probably regularize
|
||||
# the filenames to match the document name instead
|
||||
path = os.path.join(settings.AGENDA_PATH, meeting.number, "agenda", agenda.external_url)
|
||||
try:
|
||||
f = open(path)
|
||||
s = f.read()
|
||||
f.close()
|
||||
except IOError:
|
||||
s = "THE AGENDA HAS NOT BEEN UPLOADED YET"
|
||||
|
||||
if "tech" in agenda.name.lower():
|
||||
plenaryt_agenda = s
|
||||
else:
|
||||
plenaryw_agenda = s
|
||||
|
||||
return ntimeslots, scheduledsessions, update, meeting, venue, ads, plenaryw_agenda, plenaryt_agenda
|
||||
|
||||
# get list of all areas, + IRTF + IETF (plenaries).
|
||||
def get_pseudo_areas():
|
||||
return Group.objects.filter(Q(state="active", name="IRTF")|
|
||||
Q(state="active", name="IETF")|
|
||||
Q(state="active", type="area")).order_by('acronym')
|
||||
|
||||
# get list of all areas, + IRTF.
|
||||
def get_areas():
|
||||
return Group.objects.filter(Q(state="active",
|
||||
name="IRTF")|
|
||||
Q(state="active", type="area")).order_by('acronym')
|
||||
|
||||
# get list of areas that are referenced.
|
||||
def get_area_list_from_sessions(scheduledsessions, num):
|
||||
return scheduledsessions.filter(timeslot__type = 'Session',
|
||||
session__group__parent__isnull = False).order_by(
|
||||
'session__group__parent__acronym').distinct(
|
||||
'session__group__parent__acronym').values_list(
|
||||
'session__group__parent__acronym',flat=True)
|
||||
|
||||
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()
|
||||
|
||||
if ymd not in date_slices and ss.timeslot.location != None:
|
||||
date_slices[ymd] = []
|
||||
time_slices.append(ymd)
|
||||
|
||||
if ymd in date_slices:
|
||||
if [ss.timeslot.time, ss.timeslot.time+ss.timeslot.duration] not in date_slices[ymd]: # only keep unique entries
|
||||
date_slices[ymd].append([ss.timeslot.time, ss.timeslot.time+ss.timeslot.duration])
|
||||
|
||||
time_slices.sort()
|
||||
return time_slices,date_slices
|
||||
|
||||
|
||||
def get_scheduledsessions_from_schedule(schedule):
|
||||
ss = schedule.scheduledsession_set.filter(timeslot__location__isnull = False).exclude(session__isnull = True).order_by('timeslot__time','timeslot__name','session__group__group')
|
||||
|
||||
return ss
|
||||
|
||||
def get_all_scheduledsessions_from_schedule(schedule):
|
||||
ss = schedule.scheduledsession_set.filter(timeslot__location__isnull = False).order_by('timeslot__time','timeslot__name')
|
||||
|
||||
return ss
|
||||
|
||||
def get_modified_from_scheduledsessions(scheduledsessions):
|
||||
return scheduledsessions.aggregate(Max('timeslot__modified'))['timeslot__modified__max']
|
||||
|
||||
def get_wg_name_list(scheduledsessions):
|
||||
return scheduledsessions.filter(timeslot__type = 'Session',
|
||||
session__group__isnull = False,
|
||||
session__group__parent__isnull = False).order_by(
|
||||
'session__group__acronym').distinct(
|
||||
'session__group').values_list(
|
||||
'session__group__acronym',flat=True)
|
||||
|
||||
def get_wg_list(scheduledsessions):
|
||||
wg_name_list = get_wg_name_list(scheduledsessions)
|
||||
return Group.objects.filter(acronym__in = set(wg_name_list)).order_by('parent__acronym','acronym')
|
||||
|
||||
|
||||
def get_meeting(num=None):
|
||||
if (num == None):
|
||||
meeting = Meeting.objects.filter(type="ietf").order_by("-date")[:1].get()
|
||||
else:
|
||||
meeting = get_object_or_404(Meeting, number=num)
|
||||
return meeting
|
||||
|
||||
def get_schedule(meeting, name=None):
|
||||
if name is None:
|
||||
schedule = meeting.agenda
|
||||
else:
|
||||
schedule = get_object_or_404(meeting.schedule_set, name=name)
|
||||
return schedule
|
||||
|
||||
def get_schedule_by_id(meeting, schedid):
|
||||
if schedid is None:
|
||||
schedule = meeting.agenda
|
||||
else:
|
||||
schedule = get_object_or_404(meeting.schedule_set, id=int(schedid))
|
||||
return schedule
|
||||
|
||||
def agenda_permissions(meeting, schedule, user):
|
||||
# do this in positive logic.
|
||||
cansee = False
|
||||
canedit= False
|
||||
requestor= None
|
||||
|
||||
try:
|
||||
requestor = user.get_profile()
|
||||
except:
|
||||
pass
|
||||
|
||||
#sys.stdout.write("requestor: %s for sched: %s \n" % ( requestor, schedule ))
|
||||
if has_role(user, 'Secretariat'):
|
||||
cansee = True
|
||||
# secretariat is not superuser for edit!
|
||||
|
||||
if (has_role(user, 'Area Director') and schedule.visible):
|
||||
cansee = True
|
||||
|
||||
if (has_role(user, 'IAB Chair') and schedule.visible):
|
||||
cansee = True
|
||||
|
||||
if (has_role(user, 'IRTF Chair') and schedule.visible):
|
||||
cansee = True
|
||||
|
||||
if schedule.public:
|
||||
cansee = True
|
||||
|
||||
if requestor is not None and schedule.owner == requestor:
|
||||
cansee = True
|
||||
canedit = True
|
||||
|
||||
return cansee,canedit
|
43
ietf/meeting/management/commands/schedwrite.py
Normal file
43
ietf/meeting/management/commands/schedwrite.py
Normal file
|
@ -0,0 +1,43 @@
|
|||
from django.core.management.base import BaseCommand
|
||||
from django.core import serializers
|
||||
from optparse import make_option
|
||||
import sys
|
||||
|
||||
class Command(BaseCommand):
|
||||
option_list = BaseCommand.option_list + (
|
||||
make_option('--format', default='json', dest='format',
|
||||
help='Specifies the output serialization format for fixtures.'),
|
||||
make_option('--indent', default=None, dest='indent', type='int',
|
||||
help='Specifies the indent level to use when pretty-printing output'),
|
||||
# make_option('--schedulename', action='store', dest='schedulename', default=False,
|
||||
# help='Tells Django to stop running the test suite after first failed test.')
|
||||
)
|
||||
help = 'Saves the scheduled information for a named schedule in JSON format'
|
||||
args = 'meetingname [owner] schedname'
|
||||
|
||||
def handle(self, *labels, **options):
|
||||
from django.conf import settings
|
||||
from django.test.utils import get_runner
|
||||
|
||||
meetingname = labels[0]
|
||||
schedname = labels[1]
|
||||
|
||||
from ietf.meeting.helpers import get_meeting,get_schedule
|
||||
|
||||
format = options.get('format','json')
|
||||
indent = options.get('indent', 2)
|
||||
meeting = get_meeting(meetingname)
|
||||
schedule = get_schedule(meeting, schedname)
|
||||
|
||||
scheduledsessions = schedule.scheduledsession_set.all()
|
||||
|
||||
# cribbed from django/core/management/commands/dumpdata.py
|
||||
# Check that the serialization format exists; this is a shortcut to
|
||||
# avoid collating all the objects and _then_ failing.
|
||||
if format not in serializers.get_public_serializer_formats():
|
||||
raise CommandError("Unknown serialization format: %s" % format)
|
||||
|
||||
return serializers.serialize(format, scheduledsessions, indent=indent,
|
||||
use_natural_keys=True)
|
||||
|
||||
|
|
@ -0,0 +1,391 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
import datetime
|
||||
from south.db import db
|
||||
from south.v2 import SchemaMigration
|
||||
from django.db import models
|
||||
|
||||
|
||||
class Migration(SchemaMigration):
|
||||
|
||||
def forwards(self, orm):
|
||||
# Adding model 'ScheduledSession'
|
||||
db.create_table('meeting_scheduledsession', (
|
||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('timeslot', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['meeting.TimeSlot'])),
|
||||
('session', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['meeting.Session'])),
|
||||
('schedule', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['meeting.Schedule'])),
|
||||
('notes', self.gf('django.db.models.fields.TextField')(blank=True)),
|
||||
))
|
||||
db.send_create_signal('meeting', ['ScheduledSession'])
|
||||
|
||||
# Adding model 'Schedule'
|
||||
db.create_table('meeting_schedule', (
|
||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('name', self.gf('django.db.models.fields.CharField')(max_length=16)),
|
||||
('owner', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['person.Person'])),
|
||||
('visible', self.gf('django.db.models.fields.BooleanField')(default=True)),
|
||||
('public', self.gf('django.db.models.fields.BooleanField')(default=True)),
|
||||
))
|
||||
db.send_create_signal('meeting', ['Schedule'])
|
||||
|
||||
# Adding field 'Meeting.agenda'
|
||||
db.add_column('meeting_meeting', 'agenda',
|
||||
self.gf('django.db.models.fields.related.ForeignKey')(to=orm['meeting.Schedule'], blank=True, null=True),
|
||||
keep_default=False)
|
||||
|
||||
# Adding field 'Room.capacity'
|
||||
db.add_column('meeting_room', 'capacity',
|
||||
self.gf('django.db.models.fields.IntegerField')(default=50),
|
||||
keep_default=False)
|
||||
|
||||
# Adding field 'Constraint.person'
|
||||
db.add_column('meeting_constraint', 'person',
|
||||
self.gf('django.db.models.fields.related.ForeignKey')(to=orm['person.Person'], null=True, blank=True),
|
||||
keep_default=False)
|
||||
|
||||
# Adding field 'Constraint.day'
|
||||
db.add_column('meeting_constraint', 'day',
|
||||
self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True),
|
||||
keep_default=False)
|
||||
|
||||
|
||||
# Changing field 'Constraint.target'
|
||||
db.alter_column('meeting_constraint', 'target_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, to=orm['group.Group']))
|
||||
|
||||
def backwards(self, orm):
|
||||
# Deleting model 'ScheduledSession'
|
||||
db.delete_table('meeting_scheduledsession')
|
||||
|
||||
# Deleting model 'Schedule'
|
||||
db.delete_table('meeting_schedule')
|
||||
|
||||
# Deleting field 'Meeting.agenda'
|
||||
db.delete_column('meeting_meeting', 'agenda_id')
|
||||
|
||||
# Deleting field 'Room.capacity'
|
||||
db.delete_column('meeting_room', 'capacity')
|
||||
|
||||
# Deleting field 'Constraint.person'
|
||||
db.delete_column('meeting_constraint', 'person_id')
|
||||
|
||||
# Deleting field 'Constraint.day'
|
||||
db.delete_column('meeting_constraint', 'day')
|
||||
|
||||
|
||||
# Changing field 'Constraint.target'
|
||||
db.alter_column('meeting_constraint', 'target_id', self.gf('django.db.models.fields.related.ForeignKey')(default=1, to=orm['group.Group']))
|
||||
|
||||
models = {
|
||||
'auth.group': {
|
||||
'Meta': {'object_name': 'Group'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
|
||||
},
|
||||
'auth.permission': {
|
||||
'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
|
||||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||
},
|
||||
'auth.user': {
|
||||
'Meta': {'object_name': 'User'},
|
||||
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
|
||||
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '64'})
|
||||
},
|
||||
'contenttypes.contenttype': {
|
||||
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
|
||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||
},
|
||||
'doc.docalias': {
|
||||
'Meta': {'object_name': 'DocAlias'},
|
||||
'document': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['doc.Document']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'})
|
||||
},
|
||||
'doc.document': {
|
||||
'Meta': {'object_name': 'Document'},
|
||||
'abstract': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'ad': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'ad_document_set'", 'null': 'True', 'to': "orm['person.Person']"}),
|
||||
'authors': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['person.Email']", 'symmetrical': 'False', 'through': "orm['doc.DocumentAuthor']", 'blank': 'True'}),
|
||||
'expires': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'external_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['group.Group']", 'null': 'True', 'blank': 'True'}),
|
||||
'intended_std_level': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['name.IntendedStdLevelName']", 'null': 'True', 'blank': 'True'}),
|
||||
'internal_comments': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'primary_key': 'True'}),
|
||||
'note': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'notify': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '1', 'blank': 'True'}),
|
||||
'pages': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'related': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'reversely_related_document_set'", 'blank': 'True', 'through': "orm['doc.RelatedDocument']", 'to': "orm['doc.DocAlias']"}),
|
||||
'rev': ('django.db.models.fields.CharField', [], {'max_length': '16', 'blank': 'True'}),
|
||||
'shepherd': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'shepherd_document_set'", 'null': 'True', 'to': "orm['person.Person']"}),
|
||||
'states': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['doc.State']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'std_level': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['name.StdLevelName']", 'null': 'True', 'blank': 'True'}),
|
||||
'stream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['name.StreamName']", 'null': 'True', 'blank': 'True'}),
|
||||
'tags': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['name.DocTagName']", 'null': 'True', 'blank': 'True'}),
|
||||
'time': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'title': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['name.DocTypeName']", 'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'doc.documentauthor': {
|
||||
'Meta': {'ordering': "['document', 'order']", 'object_name': 'DocumentAuthor'},
|
||||
'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['person.Email']"}),
|
||||
'document': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['doc.Document']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '1'})
|
||||
},
|
||||
'doc.relateddocument': {
|
||||
'Meta': {'object_name': 'RelatedDocument'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'relationship': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['name.DocRelationshipName']"}),
|
||||
'source': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['doc.Document']"}),
|
||||
'target': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['doc.DocAlias']"})
|
||||
},
|
||||
'doc.state': {
|
||||
'Meta': {'ordering': "['type', 'order']", 'object_name': 'State'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'next_states': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'previous_states'", 'symmetrical': 'False', 'to': "orm['doc.State']"}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.SlugField', [], {'max_length': '50'}),
|
||||
'type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['doc.StateType']"}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'doc.statetype': {
|
||||
'Meta': {'object_name': 'StateType'},
|
||||
'label': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '30', 'primary_key': 'True'})
|
||||
},
|
||||
'group.group': {
|
||||
'Meta': {'object_name': 'Group'},
|
||||
'acronym': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '40'}),
|
||||
'ad': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['person.Person']", 'null': 'True', 'blank': 'True'}),
|
||||
'charter': ('django.db.models.fields.related.OneToOneField', [], {'blank': 'True', 'related_name': "'chartered_group'", 'unique': 'True', 'null': 'True', 'to': "orm['doc.Document']"}),
|
||||
'comments': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'list_archive': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'list_email': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}),
|
||||
'list_subscribe': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '80'}),
|
||||
'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['group.Group']", 'null': 'True', 'blank': 'True'}),
|
||||
'state': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['name.GroupStateName']", 'null': 'True'}),
|
||||
'time': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['name.GroupTypeName']", 'null': 'True'}),
|
||||
'unused_states': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['doc.State']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'unused_tags': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['name.DocTagName']", 'symmetrical': 'False', 'blank': 'True'})
|
||||
},
|
||||
'meeting.constraint': {
|
||||
'Meta': {'object_name': 'Constraint'},
|
||||
'day': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'meeting': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['meeting.Meeting']"}),
|
||||
'name': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['name.ConstraintName']"}),
|
||||
'person': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['person.Person']", 'null': 'True', 'blank': 'True'}),
|
||||
'source': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'constraint_source_set'", 'to': "orm['group.Group']"}),
|
||||
'target': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'constraint_target_set'", 'null': 'True', 'to': "orm['group.Group']"})
|
||||
},
|
||||
'meeting.meeting': {
|
||||
'Meta': {'object_name': 'Meeting'},
|
||||
'break_area': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'city': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'country': ('django.db.models.fields.CharField', [], {'max_length': '2', 'blank': 'True'}),
|
||||
'date': ('django.db.models.fields.DateField', [], {}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'number': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '64'}),
|
||||
'agenda': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['meeting.Schedule']", 'blank': 'True'}),
|
||||
'reg_area': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'time_zone': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['name.MeetingTypeName']"}),
|
||||
'venue_addr': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'venue_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'})
|
||||
},
|
||||
'meeting.schedule': {
|
||||
'Meta': {'object_name': 'Schedule'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
|
||||
'owner': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['person.Person']"}),
|
||||
'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'visible': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'meeting.room': {
|
||||
'Meta': {'object_name': 'Room'},
|
||||
'capacity': ('django.db.models.fields.IntegerField', [], {'default': '50'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'meeting': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['meeting.Meeting']"}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
|
||||
},
|
||||
'meeting.scheduledsession': {
|
||||
'Meta': {'object_name': 'ScheduledSession'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'schedule': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['meeting.Schedule']"}),
|
||||
'session': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['meeting.Session']"}),
|
||||
'timeslot': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['meeting.TimeSlot']"})
|
||||
},
|
||||
'meeting.session': {
|
||||
'Meta': {'object_name': 'Session'},
|
||||
'agenda_note': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'attendees': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'comments': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['group.Group']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'materials': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['doc.Document']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'meeting': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['meeting.Meeting']"}),
|
||||
'modified': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'requested': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'requested_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['person.Person']"}),
|
||||
'requested_duration': ('ietf.meeting.timedeltafield.TimedeltaField', [], {'default': '0'}),
|
||||
'scheduled': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'short': ('django.db.models.fields.CharField', [], {'max_length': '32', 'blank': 'True'}),
|
||||
'status': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['name.SessionStatusName']"})
|
||||
},
|
||||
'meeting.timeslot': {
|
||||
'Meta': {'object_name': 'TimeSlot'},
|
||||
'duration': ('ietf.meeting.timedeltafield.TimedeltaField', [], {}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'location': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['meeting.Room']", 'null': 'True', 'blank': 'True'}),
|
||||
'meeting': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['meeting.Meeting']"}),
|
||||
'modified': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'session': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['meeting.Session']", 'null': 'True', 'blank': 'True'}),
|
||||
'sessions': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'slots'", 'to': "orm['meeting.Session']", 'through': "orm['meeting.ScheduledSession']", 'blank': 'True', 'symmetrical': 'False', 'null': 'True'}),
|
||||
'show_location': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'time': ('django.db.models.fields.DateTimeField', [], {}),
|
||||
'type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['name.TimeSlotTypeName']"})
|
||||
},
|
||||
'name.constraintname': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'ConstraintName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.docrelationshipname': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'DocRelationshipName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.doctagname': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'DocTagName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.doctypename': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'DocTypeName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.groupstatename': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'GroupStateName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.grouptypename': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'GroupTypeName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.intendedstdlevelname': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'IntendedStdLevelName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.meetingtypename': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'MeetingTypeName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.sessionstatusname': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'SessionStatusName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.stdlevelname': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'StdLevelName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.streamname': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'StreamName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.timeslottypename': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'TimeSlotTypeName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'person.email': {
|
||||
'Meta': {'object_name': 'Email'},
|
||||
'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'address': ('django.db.models.fields.CharField', [], {'max_length': '64', 'primary_key': 'True'}),
|
||||
'person': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['person.Person']", 'null': 'True'}),
|
||||
'time': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'})
|
||||
},
|
||||
'person.person': {
|
||||
'Meta': {'object_name': 'Person'},
|
||||
'address': ('django.db.models.fields.TextField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'affiliation': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'ascii': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'ascii_short': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
|
||||
'time': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'user': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True', 'null': 'True', 'blank': 'True'})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['meeting']
|
|
@ -0,0 +1,352 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
import datetime
|
||||
from south.db import db
|
||||
from south.v2 import SchemaMigration
|
||||
from django.db import models
|
||||
|
||||
|
||||
class Migration(SchemaMigration):
|
||||
|
||||
def forwards(self, orm):
|
||||
# Adding field 'ScheduledSession.modified'
|
||||
db.add_column('meeting_scheduledsession', 'modified',
|
||||
self.gf('django.db.models.fields.DateTimeField')(default=datetime.datetime.now),
|
||||
keep_default=False)
|
||||
|
||||
# Adding field 'Schedule.meeting'
|
||||
db.add_column('meeting_schedule', 'meeting',
|
||||
self.gf('django.db.models.fields.related.ForeignKey')(to=orm['meeting.Meeting'], null=True),
|
||||
keep_default=False)
|
||||
|
||||
# Changing field 'ScheduledSession.session'
|
||||
db.alter_column('meeting_scheduledsession', 'session_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['meeting.Session'], null=True))
|
||||
|
||||
# Changing field 'Room.capacity'
|
||||
db.alter_column('meeting_room', 'capacity', self.gf('django.db.models.fields.IntegerField')(null=True))
|
||||
|
||||
def backwards(self, orm):
|
||||
# Deleting field 'ScheduledSession.modified'
|
||||
db.delete_column('meeting_scheduledsession', 'modified')
|
||||
|
||||
# Changing field 'Room.capacity'
|
||||
db.alter_column('meeting_room', 'capacity', self.gf('django.db.models.fields.IntegerField')())
|
||||
|
||||
# Deleting field 'Schedule.meeting'
|
||||
db.delete_column('meeting_schedule', 'meeting_id')
|
||||
|
||||
models = {
|
||||
'auth.group': {
|
||||
'Meta': {'object_name': 'Group'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
|
||||
},
|
||||
'auth.permission': {
|
||||
'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
|
||||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||
},
|
||||
'auth.user': {
|
||||
'Meta': {'object_name': 'User'},
|
||||
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
|
||||
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '64'})
|
||||
},
|
||||
'contenttypes.contenttype': {
|
||||
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
|
||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||
},
|
||||
'doc.docalias': {
|
||||
'Meta': {'object_name': 'DocAlias'},
|
||||
'document': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['doc.Document']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'})
|
||||
},
|
||||
'doc.document': {
|
||||
'Meta': {'object_name': 'Document'},
|
||||
'abstract': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'ad': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'ad_document_set'", 'null': 'True', 'to': "orm['person.Person']"}),
|
||||
'authors': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['person.Email']", 'symmetrical': 'False', 'through': "orm['doc.DocumentAuthor']", 'blank': 'True'}),
|
||||
'expires': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'external_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['group.Group']", 'null': 'True', 'blank': 'True'}),
|
||||
'intended_std_level': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['name.IntendedStdLevelName']", 'null': 'True', 'blank': 'True'}),
|
||||
'internal_comments': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'primary_key': 'True'}),
|
||||
'note': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'notify': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '1', 'blank': 'True'}),
|
||||
'pages': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'related': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'reversely_related_document_set'", 'blank': 'True', 'through': "orm['doc.RelatedDocument']", 'to': "orm['doc.DocAlias']"}),
|
||||
'rev': ('django.db.models.fields.CharField', [], {'max_length': '16', 'blank': 'True'}),
|
||||
'shepherd': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'shepherd_document_set'", 'null': 'True', 'to': "orm['person.Person']"}),
|
||||
'states': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['doc.State']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'std_level': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['name.StdLevelName']", 'null': 'True', 'blank': 'True'}),
|
||||
'stream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['name.StreamName']", 'null': 'True', 'blank': 'True'}),
|
||||
'tags': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['name.DocTagName']", 'null': 'True', 'blank': 'True'}),
|
||||
'time': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'title': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['name.DocTypeName']", 'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'doc.documentauthor': {
|
||||
'Meta': {'ordering': "['document', 'order']", 'object_name': 'DocumentAuthor'},
|
||||
'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['person.Email']"}),
|
||||
'document': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['doc.Document']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '1'})
|
||||
},
|
||||
'doc.relateddocument': {
|
||||
'Meta': {'object_name': 'RelatedDocument'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'relationship': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['name.DocRelationshipName']"}),
|
||||
'source': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['doc.Document']"}),
|
||||
'target': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['doc.DocAlias']"})
|
||||
},
|
||||
'doc.state': {
|
||||
'Meta': {'ordering': "['type', 'order']", 'object_name': 'State'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'next_states': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'previous_states'", 'blank': 'True', 'to': "orm['doc.State']"}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.SlugField', [], {'max_length': '50'}),
|
||||
'type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['doc.StateType']"}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'doc.statetype': {
|
||||
'Meta': {'object_name': 'StateType'},
|
||||
'label': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '30', 'primary_key': 'True'})
|
||||
},
|
||||
'group.group': {
|
||||
'Meta': {'object_name': 'Group'},
|
||||
'acronym': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '40'}),
|
||||
'ad': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['person.Person']", 'null': 'True', 'blank': 'True'}),
|
||||
'charter': ('django.db.models.fields.related.OneToOneField', [], {'blank': 'True', 'related_name': "'chartered_group'", 'unique': 'True', 'null': 'True', 'to': "orm['doc.Document']"}),
|
||||
'comments': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'list_archive': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'list_email': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}),
|
||||
'list_subscribe': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '80'}),
|
||||
'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['group.Group']", 'null': 'True', 'blank': 'True'}),
|
||||
'state': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['name.GroupStateName']", 'null': 'True'}),
|
||||
'time': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['name.GroupTypeName']", 'null': 'True'}),
|
||||
'unused_states': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['doc.State']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'unused_tags': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['name.DocTagName']", 'symmetrical': 'False', 'blank': 'True'})
|
||||
},
|
||||
'meeting.constraint': {
|
||||
'Meta': {'object_name': 'Constraint'},
|
||||
'day': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'meeting': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['meeting.Meeting']"}),
|
||||
'name': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['name.ConstraintName']"}),
|
||||
'person': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['person.Person']", 'null': 'True', 'blank': 'True'}),
|
||||
'source': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'constraint_source_set'", 'to': "orm['group.Group']"}),
|
||||
'target': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'constraint_target_set'", 'null': 'True', 'to': "orm['group.Group']"})
|
||||
},
|
||||
'meeting.meeting': {
|
||||
'Meta': {'object_name': 'Meeting'},
|
||||
'agenda': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['meeting.Schedule']"}),
|
||||
'agenda_note': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'break_area': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'city': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'country': ('django.db.models.fields.CharField', [], {'max_length': '2', 'blank': 'True'}),
|
||||
'date': ('django.db.models.fields.DateField', [], {}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'number': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '64'}),
|
||||
'reg_area': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'time_zone': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['name.MeetingTypeName']"}),
|
||||
'venue_addr': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'venue_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'})
|
||||
},
|
||||
'meeting.room': {
|
||||
'Meta': {'object_name': 'Room'},
|
||||
'capacity': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'meeting': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['meeting.Meeting']"}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
|
||||
},
|
||||
'meeting.schedule': {
|
||||
'Meta': {'object_name': 'Schedule'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'meeting': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['meeting.Meeting']", 'null': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
|
||||
'owner': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['person.Person']"}),
|
||||
'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'visible': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'meeting.scheduledsession': {
|
||||
'Meta': {'object_name': 'ScheduledSession'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'modified': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'schedule': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['meeting.Schedule']"}),
|
||||
'session': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': "orm['meeting.Session']", 'null': 'True'}),
|
||||
'timeslot': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['meeting.TimeSlot']"})
|
||||
},
|
||||
'meeting.session': {
|
||||
'Meta': {'object_name': 'Session'},
|
||||
'agenda_note': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'attendees': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'comments': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['group.Group']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'materials': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['doc.Document']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'meeting': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['meeting.Meeting']"}),
|
||||
'modified': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'requested': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'requested_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['person.Person']"}),
|
||||
'requested_duration': ('ietf.meeting.timedeltafield.TimedeltaField', [], {'default': '0'}),
|
||||
'scheduled': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'short': ('django.db.models.fields.CharField', [], {'max_length': '32', 'blank': 'True'}),
|
||||
'status': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['name.SessionStatusName']"})
|
||||
},
|
||||
'meeting.timeslot': {
|
||||
'Meta': {'object_name': 'TimeSlot'},
|
||||
'duration': ('ietf.meeting.timedeltafield.TimedeltaField', [], {}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'location': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['meeting.Room']", 'null': 'True', 'blank': 'True'}),
|
||||
'meeting': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['meeting.Meeting']"}),
|
||||
'modified': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'sessions': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'slots'", 'to': "orm['meeting.Session']", 'through': "orm['meeting.ScheduledSession']", 'blank': 'True', 'symmetrical': 'False', 'null': 'True'}),
|
||||
'show_location': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'time': ('django.db.models.fields.DateTimeField', [], {}),
|
||||
'type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['name.TimeSlotTypeName']"})
|
||||
},
|
||||
'name.constraintname': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'ConstraintName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.docrelationshipname': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'DocRelationshipName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.doctagname': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'DocTagName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.doctypename': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'DocTypeName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.groupstatename': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'GroupStateName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.grouptypename': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'GroupTypeName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.intendedstdlevelname': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'IntendedStdLevelName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.meetingtypename': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'MeetingTypeName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.sessionstatusname': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'SessionStatusName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.stdlevelname': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'StdLevelName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.streamname': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'StreamName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.timeslottypename': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'TimeSlotTypeName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'person.email': {
|
||||
'Meta': {'object_name': 'Email'},
|
||||
'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'address': ('django.db.models.fields.CharField', [], {'max_length': '64', 'primary_key': 'True'}),
|
||||
'person': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['person.Person']", 'null': 'True'}),
|
||||
'time': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'})
|
||||
},
|
||||
'person.person': {
|
||||
'Meta': {'object_name': 'Person'},
|
||||
'address': ('django.db.models.fields.TextField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'affiliation': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'ascii': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'ascii_short': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
|
||||
'time': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'user': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True', 'null': 'True', 'blank': 'True'})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['meeting']
|
375
ietf/meeting/migrations/0006_scheduled_session_fixup.py
Normal file
375
ietf/meeting/migrations/0006_scheduled_session_fixup.py
Normal file
|
@ -0,0 +1,375 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
import datetime
|
||||
import sys
|
||||
from south.db import db
|
||||
from south.v2 import DataMigration
|
||||
from django.db import models
|
||||
|
||||
class Migration(DataMigration):
|
||||
|
||||
def forwards(self, orm):
|
||||
#from ietf.person.models import Person
|
||||
Person = orm['person.Person']
|
||||
# can not use custom manager
|
||||
wanda = Person.objects.get(user__username = 'wnl') # Wanda Lo
|
||||
Meeting = orm['meeting.meeting']
|
||||
ScheduledSession = orm['meeting.ScheduledSession']
|
||||
Schedule = orm['meeting.Schedule']
|
||||
for mtg in Meeting.objects.all():
|
||||
sys.stdout.write ("Processing meeting %s.." % (mtg.number))
|
||||
try:
|
||||
if mtg.agenda is not None:
|
||||
# assume that we have done this meeting already.
|
||||
sys.stdout.write("already done\n")
|
||||
continue
|
||||
except Meeting.DoesNotExist:
|
||||
pass
|
||||
|
||||
na = Schedule(name=("official_%s"%(mtg.number))[0:15],
|
||||
owner=wanda,
|
||||
meeting = mtg,
|
||||
visible=True, public=True)
|
||||
na.save()
|
||||
mtg.agenda = na
|
||||
mtg.save()
|
||||
sys.stdout.write("\n creating schedule %s\n" %(na.name))
|
||||
|
||||
for slot in mtg.timeslot_set.all():
|
||||
session = slot.session
|
||||
|
||||
# skip slots with no sessions.
|
||||
if session is None:
|
||||
wg = "none"
|
||||
else:
|
||||
wg = session.group.acronym
|
||||
|
||||
sys.stdout.write (" session for wg:%s \r" % (wg))
|
||||
ss = ScheduledSession(timeslot = slot,
|
||||
session = slot.session,
|
||||
schedule = na,
|
||||
notes = "Auto created")
|
||||
ss.save()
|
||||
sys.stdout.write("\n")
|
||||
#
|
||||
#
|
||||
|
||||
def backwards(self, orm):
|
||||
"Write your backwards methods here."
|
||||
|
||||
models = {
|
||||
'auth.group': {
|
||||
'Meta': {'object_name': 'Group'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
|
||||
},
|
||||
'auth.permission': {
|
||||
'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
|
||||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||
},
|
||||
'auth.user': {
|
||||
'Meta': {'object_name': 'User'},
|
||||
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
|
||||
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '64'})
|
||||
},
|
||||
'contenttypes.contenttype': {
|
||||
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
|
||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||
},
|
||||
'doc.docalias': {
|
||||
'Meta': {'object_name': 'DocAlias'},
|
||||
'document': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['doc.Document']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'})
|
||||
},
|
||||
'doc.document': {
|
||||
'Meta': {'object_name': 'Document'},
|
||||
'abstract': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'ad': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'ad_document_set'", 'null': 'True', 'to': "orm['person.Person']"}),
|
||||
'authors': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['person.Email']", 'symmetrical': 'False', 'through': "orm['doc.DocumentAuthor']", 'blank': 'True'}),
|
||||
'expires': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'external_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['group.Group']", 'null': 'True', 'blank': 'True'}),
|
||||
'intended_std_level': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['name.IntendedStdLevelName']", 'null': 'True', 'blank': 'True'}),
|
||||
'internal_comments': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'primary_key': 'True'}),
|
||||
'note': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'notify': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '1', 'blank': 'True'}),
|
||||
'pages': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'related': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'reversely_related_document_set'", 'blank': 'True', 'through': "orm['doc.RelatedDocument']", 'to': "orm['doc.DocAlias']"}),
|
||||
'rev': ('django.db.models.fields.CharField', [], {'max_length': '16', 'blank': 'True'}),
|
||||
'shepherd': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'shepherd_document_set'", 'null': 'True', 'to': "orm['person.Person']"}),
|
||||
'states': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['doc.State']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'std_level': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['name.StdLevelName']", 'null': 'True', 'blank': 'True'}),
|
||||
'stream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['name.StreamName']", 'null': 'True', 'blank': 'True'}),
|
||||
'tags': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['name.DocTagName']", 'null': 'True', 'blank': 'True'}),
|
||||
'time': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'title': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['name.DocTypeName']", 'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'doc.documentauthor': {
|
||||
'Meta': {'ordering': "['document', 'order']", 'object_name': 'DocumentAuthor'},
|
||||
'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['person.Email']"}),
|
||||
'document': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['doc.Document']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '1'})
|
||||
},
|
||||
'doc.relateddocument': {
|
||||
'Meta': {'object_name': 'RelatedDocument'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'relationship': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['name.DocRelationshipName']"}),
|
||||
'source': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['doc.Document']"}),
|
||||
'target': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['doc.DocAlias']"})
|
||||
},
|
||||
'doc.state': {
|
||||
'Meta': {'ordering': "['type', 'order']", 'object_name': 'State'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'next_states': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'previous_states'", 'symmetrical': 'False', 'to': "orm['doc.State']"}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.SlugField', [], {'max_length': '50'}),
|
||||
'type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['doc.StateType']"}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'doc.statetype': {
|
||||
'Meta': {'object_name': 'StateType'},
|
||||
'label': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '30', 'primary_key': 'True'})
|
||||
},
|
||||
'group.group': {
|
||||
'Meta': {'object_name': 'Group'},
|
||||
'acronym': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '40'}),
|
||||
'ad': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['person.Person']", 'null': 'True', 'blank': 'True'}),
|
||||
'charter': ('django.db.models.fields.related.OneToOneField', [], {'blank': 'True', 'related_name': "'chartered_group'", 'unique': 'True', 'null': 'True', 'to': "orm['doc.Document']"}),
|
||||
'comments': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'list_archive': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'list_email': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}),
|
||||
'list_subscribe': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '80'}),
|
||||
'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['group.Group']", 'null': 'True', 'blank': 'True'}),
|
||||
'state': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['name.GroupStateName']", 'null': 'True'}),
|
||||
'time': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['name.GroupTypeName']", 'null': 'True'}),
|
||||
'unused_states': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['doc.State']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'unused_tags': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['name.DocTagName']", 'symmetrical': 'False', 'blank': 'True'})
|
||||
},
|
||||
'meeting.constraint': {
|
||||
'Meta': {'object_name': 'Constraint'},
|
||||
'day': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'meeting': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['meeting.Meeting']"}),
|
||||
'name': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['name.ConstraintName']"}),
|
||||
'person': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['person.Person']", 'null': 'True', 'blank': 'True'}),
|
||||
'source': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'constraint_source_set'", 'to': "orm['group.Group']"}),
|
||||
'target': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'constraint_target_set'", 'null': 'True', 'to': "orm['group.Group']"})
|
||||
},
|
||||
'meeting.meeting': {
|
||||
'Meta': {'object_name': 'Meeting'},
|
||||
'break_area': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'city': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'country': ('django.db.models.fields.CharField', [], {'max_length': '2', 'blank': 'True'}),
|
||||
'date': ('django.db.models.fields.DateField', [], {}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'number': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '64'}),
|
||||
'agenda': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['meeting.Schedule']", 'blank': 'True', 'null': 'True'}),
|
||||
'reg_area': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'time_zone': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['name.MeetingTypeName']"}),
|
||||
'venue_addr': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'venue_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'})
|
||||
},
|
||||
'meeting.schedule': {
|
||||
'Meta': {'object_name': 'Schedule'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'meeting': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['meeting.Meeting']", 'null': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
|
||||
'owner': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['person.Person']"}),
|
||||
'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'visible': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'meeting.room': {
|
||||
'Meta': {'object_name': 'Room'},
|
||||
'capacity': ('django.db.models.fields.IntegerField', [], {'default': '50'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'meeting': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['meeting.Meeting']"}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
|
||||
},
|
||||
'meeting.scheduledsession': {
|
||||
'Meta': {'object_name': 'ScheduledSession'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'modified': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'schedule': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['meeting.Schedule']"}),
|
||||
'session': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': "orm['meeting.Session']", 'null': 'True'}),
|
||||
'timeslot': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['meeting.TimeSlot']"})
|
||||
},
|
||||
'meeting.session': {
|
||||
'Meta': {'object_name': 'Session'},
|
||||
'agenda_note': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'attendees': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'comments': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['group.Group']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'materials': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['doc.Document']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'meeting': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['meeting.Meeting']"}),
|
||||
'modified': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'requested': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'requested_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['person.Person']"}),
|
||||
'requested_duration': ('ietf.meeting.timedeltafield.TimedeltaField', [], {'default': '0'}),
|
||||
'scheduled': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'short': ('django.db.models.fields.CharField', [], {'max_length': '32', 'blank': 'True'}),
|
||||
'status': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['name.SessionStatusName']"})
|
||||
},
|
||||
'meeting.timeslot': {
|
||||
'Meta': {'object_name': 'TimeSlot'},
|
||||
'duration': ('ietf.meeting.timedeltafield.TimedeltaField', [], {}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'location': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['meeting.Room']", 'null': 'True', 'blank': 'True'}),
|
||||
'meeting': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['meeting.Meeting']"}),
|
||||
'modified': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'session': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['meeting.Session']", 'null': 'True', 'blank': 'True'}),
|
||||
'sessions': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'slots'", 'to': "orm['meeting.Session']", 'through': "orm['meeting.ScheduledSession']", 'blank': 'True', 'symmetrical': 'False', 'null': 'True'}),
|
||||
'show_location': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'time': ('django.db.models.fields.DateTimeField', [], {}),
|
||||
'type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['name.TimeSlotTypeName']"})
|
||||
},
|
||||
'name.constraintname': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'ConstraintName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.docrelationshipname': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'DocRelationshipName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.doctagname': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'DocTagName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.doctypename': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'DocTypeName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.groupstatename': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'GroupStateName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.grouptypename': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'GroupTypeName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.intendedstdlevelname': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'IntendedStdLevelName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.meetingtypename': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'MeetingTypeName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.sessionstatusname': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'SessionStatusName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.stdlevelname': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'StdLevelName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.streamname': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'StreamName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.timeslottypename': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'TimeSlotTypeName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'person.email': {
|
||||
'Meta': {'object_name': 'Email'},
|
||||
'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'address': ('django.db.models.fields.CharField', [], {'max_length': '64', 'primary_key': 'True'}),
|
||||
'person': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['person.Person']", 'null': 'True'}),
|
||||
'time': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'})
|
||||
},
|
||||
'person.person': {
|
||||
'Meta': {'object_name': 'Person'},
|
||||
'address': ('django.db.models.fields.TextField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'affiliation': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'ascii': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'ascii_short': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
|
||||
'time': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'user': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True', 'null': 'True', 'blank': 'True'})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['meeting']
|
||||
symmetrical = True
|
334
ietf/meeting/migrations/0007_auto__del_field_timeslot_session.py
Normal file
334
ietf/meeting/migrations/0007_auto__del_field_timeslot_session.py
Normal file
|
@ -0,0 +1,334 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
import datetime
|
||||
from south.db import db
|
||||
from south.v2 import SchemaMigration
|
||||
from django.db import models
|
||||
|
||||
|
||||
class Migration(SchemaMigration):
|
||||
|
||||
def forwards(self, orm):
|
||||
# Deleting field 'TimeSlot.session'
|
||||
db.delete_column('meeting_timeslot', 'session_id')
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
# Adding field 'TimeSlot.session'
|
||||
db.add_column('meeting_timeslot', 'session',
|
||||
self.gf('django.db.models.fields.related.ForeignKey')(to=orm['meeting.Session'], null=True, blank=True),
|
||||
keep_default=False)
|
||||
|
||||
|
||||
models = {
|
||||
'auth.group': {
|
||||
'Meta': {'object_name': 'Group'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
|
||||
},
|
||||
'auth.permission': {
|
||||
'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
|
||||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||
},
|
||||
'auth.user': {
|
||||
'Meta': {'object_name': 'User'},
|
||||
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
|
||||
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '64'})
|
||||
},
|
||||
'contenttypes.contenttype': {
|
||||
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
|
||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||
},
|
||||
'doc.docalias': {
|
||||
'Meta': {'object_name': 'DocAlias'},
|
||||
'document': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['doc.Document']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'})
|
||||
},
|
||||
'doc.document': {
|
||||
'Meta': {'object_name': 'Document'},
|
||||
'abstract': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'ad': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'ad_document_set'", 'null': 'True', 'to': "orm['person.Person']"}),
|
||||
'authors': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['person.Email']", 'symmetrical': 'False', 'through': "orm['doc.DocumentAuthor']", 'blank': 'True'}),
|
||||
'expires': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'external_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['group.Group']", 'null': 'True', 'blank': 'True'}),
|
||||
'intended_std_level': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['name.IntendedStdLevelName']", 'null': 'True', 'blank': 'True'}),
|
||||
'internal_comments': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'primary_key': 'True'}),
|
||||
'note': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'notify': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '1', 'blank': 'True'}),
|
||||
'pages': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'related': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'reversely_related_document_set'", 'blank': 'True', 'through': "orm['doc.RelatedDocument']", 'to': "orm['doc.DocAlias']"}),
|
||||
'rev': ('django.db.models.fields.CharField', [], {'max_length': '16', 'blank': 'True'}),
|
||||
'shepherd': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'shepherd_document_set'", 'null': 'True', 'to': "orm['person.Person']"}),
|
||||
'states': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['doc.State']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'std_level': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['name.StdLevelName']", 'null': 'True', 'blank': 'True'}),
|
||||
'stream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['name.StreamName']", 'null': 'True', 'blank': 'True'}),
|
||||
'tags': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['name.DocTagName']", 'null': 'True', 'blank': 'True'}),
|
||||
'time': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'title': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['name.DocTypeName']", 'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'doc.documentauthor': {
|
||||
'Meta': {'ordering': "['document', 'order']", 'object_name': 'DocumentAuthor'},
|
||||
'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['person.Email']"}),
|
||||
'document': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['doc.Document']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '1'})
|
||||
},
|
||||
'doc.relateddocument': {
|
||||
'Meta': {'object_name': 'RelatedDocument'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'relationship': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['name.DocRelationshipName']"}),
|
||||
'source': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['doc.Document']"}),
|
||||
'target': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['doc.DocAlias']"})
|
||||
},
|
||||
'doc.state': {
|
||||
'Meta': {'ordering': "['type', 'order']", 'object_name': 'State'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'next_states': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'previous_states'", 'symmetrical': 'False', 'to': "orm['doc.State']"}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.SlugField', [], {'max_length': '50'}),
|
||||
'type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['doc.StateType']"}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'doc.statetype': {
|
||||
'Meta': {'object_name': 'StateType'},
|
||||
'label': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '30', 'primary_key': 'True'})
|
||||
},
|
||||
'group.group': {
|
||||
'Meta': {'object_name': 'Group'},
|
||||
'acronym': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '40'}),
|
||||
'ad': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['person.Person']", 'null': 'True', 'blank': 'True'}),
|
||||
'charter': ('django.db.models.fields.related.OneToOneField', [], {'blank': 'True', 'related_name': "'chartered_group'", 'unique': 'True', 'null': 'True', 'to': "orm['doc.Document']"}),
|
||||
'comments': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'list_archive': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'list_email': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}),
|
||||
'list_subscribe': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '80'}),
|
||||
'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['group.Group']", 'null': 'True', 'blank': 'True'}),
|
||||
'state': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['name.GroupStateName']", 'null': 'True'}),
|
||||
'time': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['name.GroupTypeName']", 'null': 'True'}),
|
||||
'unused_states': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['doc.State']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'unused_tags': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['name.DocTagName']", 'symmetrical': 'False', 'blank': 'True'})
|
||||
},
|
||||
'meeting.constraint': {
|
||||
'Meta': {'object_name': 'Constraint'},
|
||||
'day': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'meeting': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['meeting.Meeting']"}),
|
||||
'name': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['name.ConstraintName']"}),
|
||||
'person': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['person.Person']", 'null': 'True', 'blank': 'True'}),
|
||||
'source': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'constraint_source_set'", 'to': "orm['group.Group']"}),
|
||||
'target': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'constraint_target_set'", 'null': 'True', 'to': "orm['group.Group']"})
|
||||
},
|
||||
'meeting.meeting': {
|
||||
'Meta': {'object_name': 'Meeting'},
|
||||
'break_area': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'city': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'country': ('django.db.models.fields.CharField', [], {'max_length': '2', 'blank': 'True'}),
|
||||
'date': ('django.db.models.fields.DateField', [], {}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'number': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '64'}),
|
||||
'agenda': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['meeting.Schedule']", 'null': 'True', 'blank': 'True'}),
|
||||
'reg_area': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'time_zone': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['name.MeetingTypeName']"}),
|
||||
'venue_addr': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'venue_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'})
|
||||
},
|
||||
'meeting.schedule': {
|
||||
'Meta': {'object_name': 'Schedule'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
|
||||
'owner': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['person.Person']"}),
|
||||
'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'visible': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'meeting.room': {
|
||||
'Meta': {'object_name': 'Room'},
|
||||
'capacity': ('django.db.models.fields.IntegerField', [], {'default': '50'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'meeting': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['meeting.Meeting']"}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
|
||||
},
|
||||
'meeting.scheduledsession': {
|
||||
'Meta': {'object_name': 'ScheduledSession'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'schedule': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['meeting.Schedule']"}),
|
||||
'session': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['meeting.Session']"}),
|
||||
'timeslot': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['meeting.TimeSlot']"})
|
||||
},
|
||||
'meeting.session': {
|
||||
'Meta': {'object_name': 'Session'},
|
||||
'agenda_note': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'attendees': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'comments': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['group.Group']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'materials': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['doc.Document']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'meeting': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['meeting.Meeting']"}),
|
||||
'modified': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'requested': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'requested_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['person.Person']"}),
|
||||
'requested_duration': ('ietf.meeting.timedeltafield.TimedeltaField', [], {'default': '0'}),
|
||||
'scheduled': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'short': ('django.db.models.fields.CharField', [], {'max_length': '32', 'blank': 'True'}),
|
||||
'status': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['name.SessionStatusName']"})
|
||||
},
|
||||
'meeting.timeslot': {
|
||||
'Meta': {'object_name': 'TimeSlot'},
|
||||
'duration': ('ietf.meeting.timedeltafield.TimedeltaField', [], {}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'location': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['meeting.Room']", 'null': 'True', 'blank': 'True'}),
|
||||
'meeting': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['meeting.Meeting']"}),
|
||||
'modified': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'sessions': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'slots'", 'to': "orm['meeting.Session']", 'through': "orm['meeting.ScheduledSession']", 'blank': 'True', 'symmetrical': 'False', 'null': 'True'}),
|
||||
'show_location': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'time': ('django.db.models.fields.DateTimeField', [], {}),
|
||||
'type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['name.TimeSlotTypeName']"})
|
||||
},
|
||||
'name.constraintname': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'ConstraintName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.docrelationshipname': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'DocRelationshipName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.doctagname': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'DocTagName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.doctypename': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'DocTypeName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.groupstatename': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'GroupStateName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.grouptypename': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'GroupTypeName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.intendedstdlevelname': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'IntendedStdLevelName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.meetingtypename': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'MeetingTypeName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.sessionstatusname': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'SessionStatusName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.stdlevelname': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'StdLevelName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.streamname': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'StreamName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.timeslottypename': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'TimeSlotTypeName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'person.email': {
|
||||
'Meta': {'object_name': 'Email'},
|
||||
'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'address': ('django.db.models.fields.CharField', [], {'max_length': '64', 'primary_key': 'True'}),
|
||||
'person': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['person.Person']", 'null': 'True'}),
|
||||
'time': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'})
|
||||
},
|
||||
'person.person': {
|
||||
'Meta': {'object_name': 'Person'},
|
||||
'address': ('django.db.models.fields.TextField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'affiliation': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'ascii': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'ascii_short': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
|
||||
'time': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'user': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True', 'null': 'True', 'blank': 'True'})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['meeting']
|
|
@ -0,0 +1,336 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
import datetime
|
||||
from south.db import db
|
||||
from south.v2 import SchemaMigration
|
||||
from django.db import models
|
||||
|
||||
|
||||
class Migration(SchemaMigration):
|
||||
|
||||
def forwards(self, orm):
|
||||
# Adding field 'ScheduledSession.extendedfrom'
|
||||
db.add_column('meeting_scheduledsession', 'extendedfrom',
|
||||
self.gf('django.db.models.fields.related.ForeignKey')(default=None, to=orm['meeting.ScheduledSession'], null=True),
|
||||
keep_default=False)
|
||||
|
||||
def backwards(self, orm):
|
||||
# Deleting field 'ScheduledSession.extendedfrom'
|
||||
db.delete_column('meeting_scheduledsession', 'extendedfrom_id')
|
||||
|
||||
models = {
|
||||
'auth.group': {
|
||||
'Meta': {'object_name': 'Group'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
|
||||
},
|
||||
'auth.permission': {
|
||||
'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
|
||||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||
},
|
||||
'auth.user': {
|
||||
'Meta': {'object_name': 'User'},
|
||||
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
|
||||
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '64'})
|
||||
},
|
||||
'contenttypes.contenttype': {
|
||||
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
|
||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||
},
|
||||
'doc.docalias': {
|
||||
'Meta': {'object_name': 'DocAlias'},
|
||||
'document': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['doc.Document']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'})
|
||||
},
|
||||
'doc.document': {
|
||||
'Meta': {'object_name': 'Document'},
|
||||
'abstract': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'ad': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'ad_document_set'", 'null': 'True', 'to': "orm['person.Person']"}),
|
||||
'authors': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['person.Email']", 'symmetrical': 'False', 'through': "orm['doc.DocumentAuthor']", 'blank': 'True'}),
|
||||
'expires': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'external_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['group.Group']", 'null': 'True', 'blank': 'True'}),
|
||||
'intended_std_level': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['name.IntendedStdLevelName']", 'null': 'True', 'blank': 'True'}),
|
||||
'internal_comments': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'primary_key': 'True'}),
|
||||
'note': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'notify': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '1', 'blank': 'True'}),
|
||||
'pages': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'related': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'reversely_related_document_set'", 'blank': 'True', 'through': "orm['doc.RelatedDocument']", 'to': "orm['doc.DocAlias']"}),
|
||||
'rev': ('django.db.models.fields.CharField', [], {'max_length': '16', 'blank': 'True'}),
|
||||
'shepherd': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'shepherd_document_set'", 'null': 'True', 'to': "orm['person.Person']"}),
|
||||
'states': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['doc.State']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'std_level': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['name.StdLevelName']", 'null': 'True', 'blank': 'True'}),
|
||||
'stream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['name.StreamName']", 'null': 'True', 'blank': 'True'}),
|
||||
'tags': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['name.DocTagName']", 'null': 'True', 'blank': 'True'}),
|
||||
'time': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'title': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['name.DocTypeName']", 'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'doc.documentauthor': {
|
||||
'Meta': {'ordering': "['document', 'order']", 'object_name': 'DocumentAuthor'},
|
||||
'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['person.Email']"}),
|
||||
'document': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['doc.Document']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '1'})
|
||||
},
|
||||
'doc.relateddocument': {
|
||||
'Meta': {'object_name': 'RelatedDocument'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'relationship': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['name.DocRelationshipName']"}),
|
||||
'source': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['doc.Document']"}),
|
||||
'target': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['doc.DocAlias']"})
|
||||
},
|
||||
'doc.state': {
|
||||
'Meta': {'ordering': "['type', 'order']", 'object_name': 'State'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'next_states': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'previous_states'", 'blank': 'True', 'to': "orm['doc.State']"}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.SlugField', [], {'max_length': '50'}),
|
||||
'type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['doc.StateType']"}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'doc.statetype': {
|
||||
'Meta': {'object_name': 'StateType'},
|
||||
'label': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '30', 'primary_key': 'True'})
|
||||
},
|
||||
'group.group': {
|
||||
'Meta': {'object_name': 'Group'},
|
||||
'acronym': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '40'}),
|
||||
'ad': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['person.Person']", 'null': 'True', 'blank': 'True'}),
|
||||
'charter': ('django.db.models.fields.related.OneToOneField', [], {'blank': 'True', 'related_name': "'chartered_group'", 'unique': 'True', 'null': 'True', 'to': "orm['doc.Document']"}),
|
||||
'comments': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'list_archive': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'list_email': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}),
|
||||
'list_subscribe': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '80'}),
|
||||
'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['group.Group']", 'null': 'True', 'blank': 'True'}),
|
||||
'state': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['name.GroupStateName']", 'null': 'True'}),
|
||||
'time': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['name.GroupTypeName']", 'null': 'True'}),
|
||||
'unused_states': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['doc.State']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'unused_tags': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['name.DocTagName']", 'symmetrical': 'False', 'blank': 'True'})
|
||||
},
|
||||
'meeting.constraint': {
|
||||
'Meta': {'object_name': 'Constraint'},
|
||||
'day': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'meeting': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['meeting.Meeting']"}),
|
||||
'name': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['name.ConstraintName']"}),
|
||||
'person': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['person.Person']", 'null': 'True', 'blank': 'True'}),
|
||||
'source': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'constraint_source_set'", 'to': "orm['group.Group']"}),
|
||||
'target': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'constraint_target_set'", 'null': 'True', 'to': "orm['group.Group']"})
|
||||
},
|
||||
'meeting.meeting': {
|
||||
'Meta': {'object_name': 'Meeting'},
|
||||
'agenda': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['meeting.Schedule']"}),
|
||||
'agenda_note': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'break_area': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'city': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'country': ('django.db.models.fields.CharField', [], {'max_length': '2', 'blank': 'True'}),
|
||||
'date': ('django.db.models.fields.DateField', [], {}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'number': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '64'}),
|
||||
'reg_area': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'time_zone': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['name.MeetingTypeName']"}),
|
||||
'venue_addr': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'venue_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'})
|
||||
},
|
||||
'meeting.room': {
|
||||
'Meta': {'object_name': 'Room'},
|
||||
'capacity': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'meeting': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['meeting.Meeting']"}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
|
||||
},
|
||||
'meeting.schedule': {
|
||||
'Meta': {'object_name': 'Schedule'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'meeting': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['meeting.Meeting']", 'null': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
|
||||
'owner': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['person.Person']"}),
|
||||
'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'visible': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'meeting.scheduledsession': {
|
||||
'Meta': {'object_name': 'ScheduledSession'},
|
||||
'extendedfrom': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': "orm['meeting.ScheduledSession']", 'null': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'modified': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'schedule': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['meeting.Schedule']"}),
|
||||
'session': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': "orm['meeting.Session']", 'null': 'True'}),
|
||||
'timeslot': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['meeting.TimeSlot']"})
|
||||
},
|
||||
'meeting.session': {
|
||||
'Meta': {'object_name': 'Session'},
|
||||
'agenda_note': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'attendees': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'comments': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['group.Group']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'materials': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['doc.Document']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'meeting': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['meeting.Meeting']"}),
|
||||
'modified': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'requested': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'requested_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['person.Person']"}),
|
||||
'requested_duration': ('ietf.meeting.timedeltafield.TimedeltaField', [], {'default': '0'}),
|
||||
'scheduled': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'short': ('django.db.models.fields.CharField', [], {'max_length': '32', 'blank': 'True'}),
|
||||
'status': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['name.SessionStatusName']"})
|
||||
},
|
||||
'meeting.timeslot': {
|
||||
'Meta': {'object_name': 'TimeSlot'},
|
||||
'duration': ('ietf.meeting.timedeltafield.TimedeltaField', [], {}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'location': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['meeting.Room']", 'null': 'True', 'blank': 'True'}),
|
||||
'meeting': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['meeting.Meeting']"}),
|
||||
'modified': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'sessions': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'slots'", 'to': "orm['meeting.Session']", 'through': "orm['meeting.ScheduledSession']", 'blank': 'True', 'symmetrical': 'False', 'null': 'True'}),
|
||||
'show_location': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'time': ('django.db.models.fields.DateTimeField', [], {}),
|
||||
'type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['name.TimeSlotTypeName']"})
|
||||
},
|
||||
'name.constraintname': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'ConstraintName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.docrelationshipname': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'DocRelationshipName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.doctagname': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'DocTagName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.doctypename': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'DocTypeName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.groupstatename': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'GroupStateName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.grouptypename': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'GroupTypeName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.intendedstdlevelname': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'IntendedStdLevelName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.meetingtypename': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'MeetingTypeName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.sessionstatusname': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'SessionStatusName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.stdlevelname': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'StdLevelName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.streamname': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'StreamName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.timeslottypename': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'TimeSlotTypeName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'person.email': {
|
||||
'Meta': {'object_name': 'Email'},
|
||||
'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'address': ('django.db.models.fields.CharField', [], {'max_length': '64', 'primary_key': 'True'}),
|
||||
'person': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['person.Person']", 'null': 'True'}),
|
||||
'time': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'})
|
||||
},
|
||||
'person.person': {
|
||||
'Meta': {'object_name': 'Person'},
|
||||
'address': ('django.db.models.fields.TextField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'affiliation': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'ascii': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'ascii_short': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
|
||||
'time': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'user': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True', 'null': 'True', 'blank': 'True'})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['meeting']
|
|
@ -1,11 +1,17 @@
|
|||
# old meeting models can be found in ../proceedings/models.py
|
||||
|
||||
import pytz, datetime
|
||||
from urlparse import urljoin
|
||||
import copy
|
||||
|
||||
from django.db import models
|
||||
from django.conf import settings
|
||||
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
|
||||
from ietf.doc.models import Document
|
||||
|
@ -17,6 +23,22 @@ countries.sort(lambda x,y: cmp(x[1], y[1]))
|
|||
timezones = [(name, name) for name in pytz.common_timezones]
|
||||
timezones.sort()
|
||||
|
||||
|
||||
# this is used in models to format dates, as the simplejson serializer
|
||||
# can not deal with them, and the django provided serializer is inaccessible.
|
||||
from django.utils import datetime_safe
|
||||
DATE_FORMAT = "%Y-%m-%d"
|
||||
TIME_FORMAT = "%H:%M:%S"
|
||||
|
||||
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/...
|
||||
|
@ -25,7 +47,7 @@ class Meeting(models.Model):
|
|||
# Date is useful when generating a set of timeslot for this meeting, but
|
||||
# is not used to determine date for timeslot instances thereafter, as
|
||||
# they have their own datetime field.
|
||||
date = models.DateField()
|
||||
date = models.DateField()
|
||||
city = models.CharField(blank=True, max_length=255)
|
||||
country = models.CharField(blank=True, max_length=2, choices=countries)
|
||||
# We can't derive time-zone from country, as there are some that have
|
||||
|
@ -37,6 +59,7 @@ class Meeting(models.Model):
|
|||
break_area = models.CharField(blank=True, max_length=255)
|
||||
reg_area = models.CharField(blank=True, max_length=255)
|
||||
agenda_note = models.TextField(blank=True, help_text="Text in this field will be placed at the top of the html agenda page for the meeting. HTML can be used, but will not validated.")
|
||||
agenda = models.ForeignKey('Schedule',null=True,blank=True, related_name='+')
|
||||
|
||||
def __unicode__(self):
|
||||
if self.type_id == "ietf":
|
||||
|
@ -83,20 +106,122 @@ class Meeting(models.Model):
|
|||
def get_submission_correction_date(self):
|
||||
return self.date + datetime.timedelta(days=settings.SUBMISSION_CORRECTION_DAYS)
|
||||
|
||||
def get_schedule_by_name(self, name):
|
||||
qs = self.schedule_set.filter(name=name)
|
||||
if qs:
|
||||
return qs[0]
|
||||
return None
|
||||
|
||||
def json_url(self):
|
||||
return "/meeting/%s.json" % (self.number, )
|
||||
|
||||
def base_url(self):
|
||||
return "/meeting/%s" % (self.number, )
|
||||
|
||||
def json_dict(self, host_scheme):
|
||||
# unfortunately, using the datetime aware json encoder seems impossible,
|
||||
# so the dates are formatted as strings here.
|
||||
agenda_url = ""
|
||||
if self.agenda:
|
||||
agenda_url = urljoin(host_scheme, self.agenda.base_url())
|
||||
return {
|
||||
'href': urljoin(host_scheme, self.base_url()),
|
||||
'name': self.number,
|
||||
'submission_start_date': fmt_date(self.get_submission_start_date()),
|
||||
'submission_cut_off_date': fmt_date(self.get_submission_cut_off_date()),
|
||||
'submission_correction_date': fmt_date(self.get_submission_correction_date()),
|
||||
'date': fmt_date(self.date),
|
||||
'agenda_href': agenda_url,
|
||||
'city': self.city,
|
||||
'country': self.country,
|
||||
'time_zone': self.time_zone,
|
||||
'venue_name': self.venue_name,
|
||||
'venue_addr': self.venue_addr,
|
||||
'break_area': self.break_area,
|
||||
'reg_area': self.reg_area
|
||||
}
|
||||
|
||||
def build_timeslices(self):
|
||||
days = [] # the days of the meetings
|
||||
time_slices = {} # the times on each day
|
||||
slots = {}
|
||||
|
||||
ids = []
|
||||
for ts in self.timeslot_set.all():
|
||||
if ts.location is None:
|
||||
continue
|
||||
ymd = ts.time.date()
|
||||
if ymd not in time_slices:
|
||||
time_slices[ymd] = []
|
||||
slots[ymd] = []
|
||||
days.append(ymd)
|
||||
|
||||
if ymd in time_slices:
|
||||
# only keep unique entries
|
||||
if [ts.time, ts.time + ts.duration] not in time_slices[ymd]:
|
||||
time_slices[ymd].append([ts.time, ts.time + ts.duration])
|
||||
slots[ymd].append(ts)
|
||||
|
||||
days.sort()
|
||||
for ymd in time_slices:
|
||||
time_slices[ymd].sort()
|
||||
slots[ymd].sort(lambda x,y: cmp(x.time, y.time))
|
||||
return days,time_slices,slots
|
||||
|
||||
# this functions makes a list of timeslices and rooms, and
|
||||
# makes sure that all schedules have all of them.
|
||||
def create_all_timeslots(self):
|
||||
alltimeslots = self.timeslot_set.all()
|
||||
for sched in self.schedule_set.all():
|
||||
ts_hash = {}
|
||||
for ss in sched.scheduledsession_set.all():
|
||||
ts_hash[ss.timeslot] = ss
|
||||
for ts in alltimeslots:
|
||||
if not (ts in ts_hash):
|
||||
ScheduledSession.objects.create(schedule = sched,
|
||||
timeslot = ts)
|
||||
|
||||
class Room(models.Model):
|
||||
meeting = models.ForeignKey(Meeting)
|
||||
name = models.CharField(max_length=255)
|
||||
capacity = models.IntegerField(null=True, blank=True)
|
||||
|
||||
def __unicode__(self):
|
||||
return self.name
|
||||
|
||||
def delete_timeslots(self):
|
||||
for ts in self.timeslot_set.all():
|
||||
ts.scheduledsession_set.all().delete()
|
||||
ts.delete()
|
||||
|
||||
def create_timeslots(self):
|
||||
days, time_slices, slots = self.meeting.build_timeslices()
|
||||
for day in days:
|
||||
for ts in slots[day]:
|
||||
ts0 = TimeSlot.objects.create(type_id=ts.type_id,
|
||||
meeting=self.meeting,
|
||||
name=ts.name,
|
||||
time=ts.time,
|
||||
location=self,
|
||||
duration=ts.duration)
|
||||
self.meeting.create_all_timeslots()
|
||||
|
||||
def json_url(self):
|
||||
return "/meeting/%s/room/%s.json" % (self.meeting.number, self.id)
|
||||
|
||||
def json_dict(self, host_scheme):
|
||||
return {
|
||||
'href': urljoin(host_scheme, self.json_url()),
|
||||
'name': self.name,
|
||||
'capacity': self.capacity,
|
||||
}
|
||||
|
||||
|
||||
class TimeSlot(models.Model):
|
||||
"""
|
||||
Everything that would appear on the meeting agenda of a meeting is
|
||||
mapped to a time slot, including breaks. Sessions are connected to
|
||||
TimeSlots during scheduling. A template function to populate a
|
||||
meeting with an appropriate set of TimeSlots is probably also
|
||||
needed.
|
||||
TimeSlots during scheduling.
|
||||
"""
|
||||
meeting = models.ForeignKey(Meeting)
|
||||
type = models.ForeignKey(TimeSlotTypeName)
|
||||
|
@ -105,14 +230,36 @@ class TimeSlot(models.Model):
|
|||
duration = TimedeltaField()
|
||||
location = models.ForeignKey(Room, blank=True, null=True)
|
||||
show_location = models.BooleanField(default=True, help_text="Show location in agenda")
|
||||
session = models.ForeignKey('Session', null=True, blank=True, help_text=u"Scheduled session, if any")
|
||||
sessions = models.ManyToManyField('Session', related_name='slots', through='ScheduledSession', null=True, blank=True, help_text=u"Scheduled session, if any")
|
||||
modified = models.DateTimeField(default=datetime.datetime.now)
|
||||
#
|
||||
|
||||
@property
|
||||
def time_desc(self):
|
||||
return u"%s-%s" % (self.time.strftime("%H%M"), (self.time + self.duration).strftime("%H%M"))
|
||||
|
||||
def meeting_date(self):
|
||||
return self.time.date()
|
||||
|
||||
def registration(self):
|
||||
# below implements a object local cache
|
||||
# it tries to find a timeslot of type registration which starts at the same time as this slot
|
||||
# so that it can be shown at the top of the agenda.
|
||||
if not hasattr(self, '_reg_info'):
|
||||
try:
|
||||
self._reg_info = TimeSlot.objects.get(meeting=self.meeting, time__month=self.time.month, time__day=self.time.day, type="reg")
|
||||
except TimeSlot.DoesNotExist:
|
||||
self._reg_info = None
|
||||
return self._reg_info
|
||||
|
||||
def reg_info(self):
|
||||
return (self.registration() is not None)
|
||||
|
||||
def __unicode__(self):
|
||||
location = self.get_location()
|
||||
if not location:
|
||||
location = "(no location)"
|
||||
|
||||
|
||||
return u"%s: %s-%s %s, %s" % (self.meeting.number, self.time.strftime("%m-%d %H:%M"), (self.time + self.duration).strftime("%H:%M"), self.name, location)
|
||||
def end_time(self):
|
||||
return self.time + self.duration
|
||||
|
@ -151,17 +298,378 @@ 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.
|
||||
# {{s.timeslot.time|date:'Y-m-d'}}_{{ s.timeslot.time|date:'Hi' }}"
|
||||
# also must match:
|
||||
# {{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"
|
||||
|
||||
@property
|
||||
def is_plenary_type(self, name, agenda=None):
|
||||
return self.scheduledsessions_at_same_time(agenda)[0].acronym == 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
|
||||
ts['room'] = slugify(self.location)
|
||||
ts['roomtype'] = self.type.slug
|
||||
ts["time"] = date_format(self.time, 'Hi')
|
||||
ts["date"] = time_format(self.time, 'Y-m-d')
|
||||
ts["domid"] = self.js_identifier
|
||||
return ts
|
||||
|
||||
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):
|
||||
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.
|
||||
"""
|
||||
def delete_concurrent_timeslots(self):
|
||||
# can not include duration in filter, because there is no support
|
||||
# for having it a WHERE clause.
|
||||
# below will delete self as well.
|
||||
for ts in self.meeting.timeslot_set.filter(time=self.time).all():
|
||||
if ts.duration!=self.duration:
|
||||
continue
|
||||
|
||||
# now remove any schedule that might have been made to this
|
||||
# timeslot.
|
||||
ts.scheduledsession_set.all().delete()
|
||||
ts.delete()
|
||||
|
||||
"""
|
||||
Find a timeslot that comes next, in the same room. It must be on the same day,
|
||||
and it must have a gap of 11 minutes or less. (10 is the spec)
|
||||
"""
|
||||
@property
|
||||
def slot_to_the_right(self):
|
||||
things = self.meeting.timeslot_set.filter(location = self.location, # same room!
|
||||
type = self.type, # must be same type (usually session)
|
||||
time__gt = self.time + self.duration, # must be after this session.
|
||||
time__lt = self.time + self.duration + datetime.timedelta(0,11*60))
|
||||
if things:
|
||||
return things[0]
|
||||
else:
|
||||
return None
|
||||
|
||||
# end of TimeSlot
|
||||
|
||||
class Schedule(models.Model):
|
||||
"""
|
||||
Each person may have multiple agendas saved.
|
||||
An Agenda may be made visible, which means that it will show up in
|
||||
public drop down menus, etc. It may also be made public, which means
|
||||
that someone who knows about it by name/id would be able to reference
|
||||
it. A non-visible, public agenda might be passed around by the
|
||||
Secretariat to IESG members for review. Only the owner may edit the
|
||||
agenda, others may copy it
|
||||
"""
|
||||
meeting = models.ForeignKey(Meeting, null=True)
|
||||
name = models.CharField(max_length=16, blank=False)
|
||||
owner = models.ForeignKey(Person)
|
||||
visible = models.BooleanField(default=True, help_text=u"Make this agenda available to those who know about it")
|
||||
public = models.BooleanField(default=True, help_text=u"Make this agenda publically available")
|
||||
# considering copiedFrom = models.ForeignKey('Schedule', blank=True, null=True)
|
||||
|
||||
def __unicode__(self):
|
||||
return u"%s:%s(%s)" % (self.meeting, self.name, self.owner)
|
||||
|
||||
def base_url(self):
|
||||
return "/meeting/%s/agenda/%s" % (self.meeting.number, self.name)
|
||||
|
||||
def url_edit(self):
|
||||
return "/meeting/%s/agenda/%s/edit" % (self.meeting.number, self.name)
|
||||
|
||||
@property
|
||||
def visible_token(self):
|
||||
if self.visible:
|
||||
return "visible"
|
||||
else:
|
||||
return "hidden"
|
||||
|
||||
@property
|
||||
def public_token(self):
|
||||
if self.public:
|
||||
return "public"
|
||||
else:
|
||||
return "private"
|
||||
|
||||
@property
|
||||
def is_official(self):
|
||||
return (self.meeting.agenda == self)
|
||||
|
||||
@property
|
||||
def official_class(self):
|
||||
if self.is_official:
|
||||
return "agenda_official"
|
||||
else:
|
||||
return "agenda_unofficial"
|
||||
|
||||
@property
|
||||
def official_token(self):
|
||||
if self.is_official:
|
||||
return "official"
|
||||
else:
|
||||
return "unofficial"
|
||||
|
||||
def delete_scheduledsessions(self):
|
||||
self.scheduledsession_set.all().delete()
|
||||
|
||||
# I'm loath to put calls to reverse() in there.
|
||||
# is there a better way?
|
||||
def json_url(self):
|
||||
# XXX need to include owner.
|
||||
return "/meeting/%s/agendas/%s.json" % (self.meeting.number, self.name)
|
||||
|
||||
def json_dict(self, host_scheme):
|
||||
sch = dict()
|
||||
sch['schedule_id'] = self.id
|
||||
sch['href'] = urljoin(host_scheme, self.json_url())
|
||||
if self.visible:
|
||||
sch['visible'] = "visible"
|
||||
else:
|
||||
sch['visible'] = "hidden"
|
||||
if self.public:
|
||||
sch['public'] = "public"
|
||||
else:
|
||||
sch['public'] = "private"
|
||||
sch['owner'] = urljoin(host_scheme, self.owner.json_url())
|
||||
# should include href to list of scheduledsessions, but they have no direct API yet.
|
||||
return sch
|
||||
|
||||
class ScheduledSession(models.Model):
|
||||
"""
|
||||
This model provides an N:M relationship between Session and TimeSlot.
|
||||
Each relationship is attached to the named agenda, which is owned by
|
||||
a specific person/user.
|
||||
"""
|
||||
timeslot = models.ForeignKey('TimeSlot', null=False, blank=False, help_text=u"")
|
||||
session = models.ForeignKey('Session', null=True, default=None, help_text=u"Scheduled session")
|
||||
schedule = models.ForeignKey('Schedule', null=False, blank=False, help_text=u"Who made this agenda")
|
||||
extendedfrom = models.ForeignKey('ScheduledSession', null=True, default=None, help_text=u"Timeslot this session is an extension of")
|
||||
modified = models.DateTimeField(default=datetime.datetime.now)
|
||||
notes = models.TextField(blank=True)
|
||||
|
||||
def __unicode__(self):
|
||||
return u"%s [%s<->%s]" % (self.schedule, self.session, self.timeslot)
|
||||
|
||||
@property
|
||||
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:
|
||||
return self.session.group.acronym
|
||||
|
||||
@property
|
||||
def slot_to_the_right(self):
|
||||
ss1 = self.schedule.scheduledsession_set.filter(timeslot = self.timeslot.slot_to_the_right)
|
||||
if ss1:
|
||||
return ss1[0]
|
||||
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:
|
||||
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 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:
|
||||
return ""
|
||||
if self.session.group and self.session.group.type_id == "wg":
|
||||
if self.session.group.state_id == "bof":
|
||||
return "BOF"
|
||||
else:
|
||||
return "WG"
|
||||
|
||||
return ""
|
||||
|
||||
@property
|
||||
def slottype(self):
|
||||
if self.timeslot and self.timeslot.type:
|
||||
return self.timeslot.type.slug
|
||||
else:
|
||||
return ""
|
||||
|
||||
@property
|
||||
def empty_str(self):
|
||||
# return JS happy value
|
||||
if self.session:
|
||||
return "False"
|
||||
else:
|
||||
return "True"
|
||||
|
||||
def json_dict(self, selfurl):
|
||||
ss = dict()
|
||||
ss['scheduledsession_id'] = self.id
|
||||
#ss['href'] = self.url(host_scheme)
|
||||
ss['empty'] = self.empty_str
|
||||
ss['timeslot_id'] = self.timeslot.id
|
||||
if self.session:
|
||||
ss['session_id'] = self.session.id
|
||||
ss['room'] = slugify(self.timeslot.location)
|
||||
ss['roomtype'] = self.timeslot.type.slug
|
||||
ss["time"] = date_format(self.timeslot.time, 'Hi')
|
||||
ss["date"] = time_format(self.timeslot.time, 'Y-m-d')
|
||||
ss["domid"] = self.timeslot.js_identifier
|
||||
return ss
|
||||
|
||||
|
||||
class Constraint(models.Model):
|
||||
"""Specifies a constraint on the scheduling between source and
|
||||
target, e.g. some kind of conflict."""
|
||||
"""
|
||||
Specifies a constraint on the scheduling.
|
||||
One type (name=conflic?) of constraint is between source WG and target WG,
|
||||
e.g. some kind of conflict.
|
||||
Another type (name=adpresent) of constraing is between source WG and
|
||||
availability of a particular Person, usually an AD.
|
||||
A third type (name=avoidday) of constraing is between source WG and
|
||||
a particular day of the week, specified in day.
|
||||
"""
|
||||
meeting = models.ForeignKey(Meeting)
|
||||
source = models.ForeignKey(Group, related_name="constraint_source_set")
|
||||
target = models.ForeignKey(Group, related_name="constraint_target_set")
|
||||
name = models.ForeignKey(ConstraintName)
|
||||
target = models.ForeignKey(Group, related_name="constraint_target_set", null=True)
|
||||
person = models.ForeignKey(Person, null=True, blank=True)
|
||||
day = models.DateTimeField(null=True, blank=True)
|
||||
name = models.ForeignKey(ConstraintName)
|
||||
|
||||
def __unicode__(self):
|
||||
return u"%s %s %s" % (self.source, self.name.name.lower(), self.target)
|
||||
|
||||
def json_url(self):
|
||||
return "/meeting/%s/constraint/%s.json" % (self.meeting.number, self.id)
|
||||
|
||||
def json_dict(self, host_scheme):
|
||||
ct1 = dict()
|
||||
ct1['constraint_id'] = self.id
|
||||
ct1['href'] = urljoin(host_scheme, self.json_url())
|
||||
ct1['name'] = self.name.slug
|
||||
if self.person is not None:
|
||||
ct1['person_href'] = urljoin(host_scheme, self.person.json_url())
|
||||
if self.source is not None:
|
||||
ct1['source_href'] = urljoin(host_scheme, self.source.json_url())
|
||||
if self.target is not None:
|
||||
ct1['target_href'] = urljoin(host_scheme, self.target.json_url())
|
||||
ct1['meeting_href'] = urljoin(host_scheme, self.meeting.json_url())
|
||||
return ct1
|
||||
|
||||
|
||||
|
||||
class Session(models.Model):
|
||||
"""Session records that a group should have a session on the
|
||||
meeting (time and location is stored in a TimeSlot) - if multiple
|
||||
|
@ -185,9 +693,10 @@ class Session(models.Model):
|
|||
materials = models.ManyToManyField(Document, blank=True)
|
||||
|
||||
def agenda(self):
|
||||
try:
|
||||
return self.materials.get(type="agenda",states__type="agenda",states__slug="active")
|
||||
except Exception:
|
||||
items = self.materials.filter(type="agenda",states__type="agenda",states__slug="active")
|
||||
if items and items[0] is not None:
|
||||
return items[0]
|
||||
else:
|
||||
return None
|
||||
|
||||
def minutes(self):
|
||||
|
@ -206,11 +715,73 @@ class Session(models.Model):
|
|||
if self.meeting.type_id == "interim":
|
||||
return self.meeting.number
|
||||
|
||||
timeslots = self.timeslot_set.order_by('time')
|
||||
return u"%s: %s %s" % (self.meeting, self.group.acronym, timeslots[0].time.strftime("%H%M") if timeslots else "(unscheduled)")
|
||||
ss0name = "(unscheduled)"
|
||||
ss = self.scheduledsession_set.order_by('timeslot__time')
|
||||
if ss:
|
||||
ss0name = ss[0].timeslot.time.strftime("%H%M")
|
||||
return u"%s: %s %s" % (self.meeting, self.group.acronym, ss0name)
|
||||
|
||||
@property
|
||||
def short_name(self):
|
||||
if self.name:
|
||||
return self.name
|
||||
if self.short:
|
||||
return self.short
|
||||
if self.group:
|
||||
return self.group.acronym
|
||||
return u"req#%u" % (id)
|
||||
|
||||
@property
|
||||
def special_request_token(self):
|
||||
if self.comments is not None and len(self.comments)>0:
|
||||
return "*"
|
||||
else:
|
||||
return ""
|
||||
|
||||
def constraints(self):
|
||||
return Constraint.objects.filter(source=self.group, meeting=self.meeting).order_by('name__name')
|
||||
|
||||
def reverse_constraints(self):
|
||||
return Constraint.objects.filter(target=self.group, meeting=self.meeting).order_by('name__name')
|
||||
|
||||
def scheduledsession_for_agenda(self, schedule):
|
||||
return self.scheduledsession_set.filter(schedule=schedule)[0]
|
||||
|
||||
def official_scheduledsession(self):
|
||||
return self.scheduledsession_for_agenda(self.meeting.agenda)
|
||||
|
||||
def constraints_dict(self, host_scheme):
|
||||
constraint_list = []
|
||||
for constraint in self.group.constraint_source_set.filter(meeting=self.meeting):
|
||||
ct1 = constraint.json_dict(host_scheme)
|
||||
constraint_list.append(ct1)
|
||||
|
||||
for constraint in self.group.constraint_target_set.filter(meeting=self.meeting):
|
||||
ct1 = constraint.json_dict(host_scheme)
|
||||
constraint_list.append(ct1)
|
||||
return constraint_list
|
||||
|
||||
def json_url(self):
|
||||
return "/meeting/%s/session/%s.json" % (self.meeting.number, self.id)
|
||||
|
||||
def json_dict(self, host_scheme):
|
||||
sess1 = dict()
|
||||
sess1['href'] = urljoin(host_scheme, self.json_url())
|
||||
sess1['group_href'] = urljoin(host_scheme, self.group.json_url())
|
||||
sess1['group_acronym'] = str(self.group.acronym)
|
||||
sess1['name'] = str(self.name)
|
||||
sess1['short_name'] = str(self.name)
|
||||
sess1['agenda_note'] = str(self.agenda_note)
|
||||
sess1['attendees'] = str(self.attendees)
|
||||
sess1['status'] = str(self.status)
|
||||
if self.comments is not None:
|
||||
sess1['comments'] = str(self.comments)
|
||||
sess1['requested_time'] = str(self.requested.strftime("%Y-%m-%d"))
|
||||
sess1['requested_by'] = str(self.requested_by)
|
||||
sess1['requested_duration']= "%.1f h" % (float(self.requested_duration.seconds) / 3600)
|
||||
sess1['area'] = str(self.group.parent.acronym)
|
||||
sess1['responsible_ad'] = str(self.group.ad)
|
||||
sess1['GroupInfo_state']= str(self.group.state)
|
||||
return sess1
|
||||
|
||||
|
||||
|
|
|
@ -5,6 +5,8 @@ from django.conf import settings
|
|||
from ietf.utils.proxy import TranslatingManager
|
||||
from models import *
|
||||
|
||||
import debug
|
||||
|
||||
class MeetingProxy(Meeting):
|
||||
objects = TranslatingManager(dict(meeting_num="number"), always_filter=dict(type="ietf"))
|
||||
|
||||
|
@ -113,8 +115,12 @@ class SwitchesProxy(Meeting):
|
|||
#updated_time = models.TimeField(null=True, blank=True)
|
||||
def updated(self):
|
||||
from django.db.models import Max
|
||||
return max(self.timeslot_set.aggregate(Max('modified'))["modified__max"],
|
||||
import pytz
|
||||
ts = max(self.timeslot_set.aggregate(Max('modified'))["modified__max"],
|
||||
self.session_set.aggregate(Max('modified'))["modified__max"])
|
||||
tz = pytz.timezone(settings.PRODUCTION_TIMEZONE)
|
||||
ts = tz.localize(ts)
|
||||
return ts
|
||||
class Meta:
|
||||
proxy = True
|
||||
|
||||
|
@ -145,100 +151,6 @@ class MeetingVenueProxy(Meeting):
|
|||
class Meta:
|
||||
proxy = True
|
||||
|
||||
class MeetingTimeProxy(TimeSlot):
|
||||
# the old MeetingTimes did not include a room, so there we can't
|
||||
# do a proper mapping - instead this proxy is one TimeSlot and
|
||||
# uses the information in that to emulate a MeetingTime and enable
|
||||
# retrieval of the other related TimeSlots
|
||||
objects = TranslatingManager(dict(day_id="time", time_desc="time"))
|
||||
|
||||
def from_object(self, base):
|
||||
for f in base._meta.fields:
|
||||
setattr(self, f.name, getattr(base, f.name))
|
||||
return self
|
||||
|
||||
#time_id = models.AutoField(primary_key=True)
|
||||
@property
|
||||
def time_id(self):
|
||||
return self.pk
|
||||
#time_desc = models.CharField(max_length=100)
|
||||
@property
|
||||
def time_desc(self):
|
||||
return u"%s-%s" % (self.time.strftime("%H%M"), (self.time + self.duration).strftime("%H%M"))
|
||||
#meeting = models.ForeignKey(Meeting, db_column='meeting_num') # same name
|
||||
#day_id = models.IntegerField()
|
||||
@property
|
||||
def day_id(self):
|
||||
return (self.time.date() - self.meeting.date).days
|
||||
#session_name = models.ForeignKey(SessionName,null=True)
|
||||
@property
|
||||
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 __str__(self):
|
||||
return "[%s] |%s| %s" % (self.meeting.number, self.time.strftime('%A'), self.time_desc)
|
||||
def sessions(self):
|
||||
if not hasattr(self, "sessions_cache"):
|
||||
self.sessions_cache = WgMeetingSessionProxy.objects.filter(meeting=self.meeting, time=self.time, type__in=("session", "plenary", "other")).exclude(type="session", session=None)
|
||||
|
||||
return self.sessions_cache
|
||||
def sessions_by_area(self):
|
||||
return [ {"area":session.area()+session.acronym(), "info":session} for session in self.sessions() ]
|
||||
def meeting_date(self):
|
||||
return self.time.date()
|
||||
def registration(self):
|
||||
if not hasattr(self, '_reg_info'):
|
||||
try:
|
||||
self._reg_info = MeetingTimeProxy.objects.get(meeting=self.meeting, time__month=self.time.month, time__day=self.time.day, type="reg")
|
||||
except MeetingTimeProxy.DoesNotExist:
|
||||
self._reg_info = None
|
||||
return self._reg_info
|
||||
def reg_info(self):
|
||||
reg_info = self.registration()
|
||||
if reg_info and reg_info.time_desc:
|
||||
return "%s %s" % (reg_info.time_desc, reg_info.name)
|
||||
else:
|
||||
return ""
|
||||
def break_info(self):
|
||||
breaks = MeetingTimeProxy.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 is_plenary(self):
|
||||
return self.type_id == "plenary"
|
||||
|
||||
# from NonSession
|
||||
#non_session_id = models.AutoField(primary_key=True)
|
||||
@property
|
||||
def non_session_id(self):
|
||||
return self.id
|
||||
#day_id = models.IntegerField(blank=True, null=True) # already wrapped
|
||||
#non_session_ref = models.ForeignKey(NonSessionRef)
|
||||
@property
|
||||
def non_session_ref(self):
|
||||
return 1 if self.type_id == "reg" else 3
|
||||
#meeting = models.ForeignKey(Meeting, db_column='meeting_num') 3 same name
|
||||
#time_desc = models.CharField(blank=True, max_length=75) # already wrapped
|
||||
#show_break_location = models.BooleanField()
|
||||
@property
|
||||
def show_break_location(self):
|
||||
return self.show_location
|
||||
def day(self):
|
||||
return self.time.strftime("%A")
|
||||
|
||||
class Meta:
|
||||
proxy = True
|
||||
|
||||
NonSessionProxy = MeetingTimeProxy
|
||||
|
||||
class WgMeetingSessionProxy(TimeSlot):
|
||||
# we model WgMeetingSession as a TimeSlot, to make the illusion
|
||||
# complete we thus have to forward all the session stuff to the
|
||||
|
|
0
ietf/meeting/templatetags/__init__.py
Normal file
0
ietf/meeting/templatetags/__init__.py
Normal file
58
ietf/meeting/templatetags/agenda_custom_tags.py
Normal file
58
ietf/meeting/templatetags/agenda_custom_tags.py
Normal file
|
@ -0,0 +1,58 @@
|
|||
from django import template
|
||||
|
||||
register = template.Library()
|
||||
|
||||
|
||||
|
||||
# returns the a dictioary's value from it's key.
|
||||
@register.filter(name='lookup')
|
||||
def lookup(dict, index):
|
||||
if index in dict:
|
||||
return dict[index]
|
||||
return ''
|
||||
|
||||
# returns the length of the value of a dict.
|
||||
# We are doing this to how long the title for the calendar should be. (this should return the number of time slots)
|
||||
@register.filter(name='colWidth')
|
||||
def get_col_width(dict, index):
|
||||
if index in dict:
|
||||
return len(dict[index])
|
||||
return 0
|
||||
|
||||
# Replaces characters that are not acceptable html ID's
|
||||
@register.filter(name='to_acceptable_id')
|
||||
def to_acceptable_id(inp):
|
||||
# see http://api.jquery.com/category/selectors/?rdfrom=http%3A%2F%2Fdocs.jquery.com%2Fmw%2Findex.php%3Ftitle%3DSelectors%26redirect%3Dno
|
||||
# for more information.
|
||||
invalid = ["!","\"", "#","$","%","&","'","(",")","*","+",",",".","/",":",";","<","=",">","?","@","[","\\","]","^","`","{","|","}","~"," "]
|
||||
out = str(inp)
|
||||
for i in invalid:
|
||||
out = out.replace(i,'_')
|
||||
return out
|
||||
|
||||
|
||||
@register.filter(name='durationFormat')
|
||||
def durationFormat(inp):
|
||||
return "%.1f" % (float(inp)/3600)
|
||||
|
||||
# from:
|
||||
# http://www.sprklab.com/notes/13-passing-arguments-to-functions-in-django-template
|
||||
#
|
||||
@register.filter(name="call")
|
||||
def callMethod(obj, methodName):
|
||||
method = getattr(obj, methodName)
|
||||
|
||||
if obj.__dict__.has_key("__callArg"):
|
||||
ret = method(*obj.__callArg)
|
||||
del obj.__callArg
|
||||
return ret
|
||||
return method()
|
||||
|
||||
@register.filter(name="args")
|
||||
def args(obj, arg):
|
||||
if not obj.__dict__.has_key("__callArg"):
|
||||
obj.__callArg = []
|
||||
|
||||
obj.__callArg += [arg]
|
||||
return obj
|
||||
|
3
ietf/meeting/templatetags/ams_filters.py
Normal file
3
ietf/meeting/templatetags/ams_filters.py
Normal file
|
@ -0,0 +1,3 @@
|
|||
from django import template
|
||||
from secr.proceedings.templatetags.ams_filters import register
|
||||
|
20
ietf/meeting/tests/__init__.py
Normal file
20
ietf/meeting/tests/__init__.py
Normal file
|
@ -0,0 +1,20 @@
|
|||
# Copyright The IETF Trust 2012, All Rights Reserved
|
||||
|
||||
"""
|
||||
The test cases are split into multiple files.
|
||||
"""
|
||||
|
||||
import sys
|
||||
from ietf.utils import TestCase
|
||||
from datetime import datetime
|
||||
|
||||
# actual tests are distributed among a set of files in subdir tests/
|
||||
from ietf.meeting.tests.meetingurls import MeetingUrlTestCase
|
||||
from ietf.meeting.tests.agenda import AgendaInfoTestCase
|
||||
from ietf.meeting.tests.api import ApiTestCase
|
||||
from ietf.meeting.tests.edit import EditTestCase
|
||||
from ietf.meeting.tests.auths import AuthDataTestCase
|
||||
from ietf.meeting.tests.view import ViewTestCase
|
||||
from ietf.meeting.tests.urlgen import UrlGenTestCase
|
||||
|
||||
|
230
ietf/meeting/tests/agenda-83-txt-output.txt
Normal file
230
ietf/meeting/tests/agenda-83-txt-output.txt
Normal file
|
@ -0,0 +1,230 @@
|
|||
|
||||
|
||||
Agenda of the 83rd IETF Meeting
|
||||
|
||||
March 25-30, 2012
|
||||
Updated 2012-03-28 09:52:00 PDT
|
||||
|
||||
IETF agendas are subject to change, up to and during the meeting.
|
||||
|
||||
|
||||
|
||||
SATURDAY, March 24, 2012
|
||||
0930-1800 Code Sprint - Hall Maillot A
|
||||
|
||||
|
||||
SUNDAY, March 25, 2012
|
||||
1100-1900 IETF Registration - Hall Maillot A
|
||||
1000-1200 IEPG Meeting - 241
|
||||
1300-1450 Tools for Creating Internet-Drafts Tutorial - 241
|
||||
1300-1450 Newcomers' Orientation - 252B
|
||||
1300-1450 Meetecho Tutorial for Participants and WG Chairs - 252A
|
||||
1500-1650 Operations, Administration, and Maintenance Tutorial - 241
|
||||
1500-1650 Newcomers' Orientation (French) - 252B
|
||||
1600-1700 Newcomers' Meet and Greet (open to Newcomers and WG chairs only) - Salon Etoile d'Or (Concorde Hotel)
|
||||
1700-1900 Welcome Reception - Hall Maillot A
|
||||
|
||||
|
||||
MONDAY, March 26, 2012
|
||||
0800-1800 IETF Registration - Hall Maillot A
|
||||
0900-1130 Morning Session I
|
||||
252B APP appsawg Applications Area Working Group WG - Combined with APPAREA
|
||||
252A INT multimob Multicast Mobility WG
|
||||
212/213 INT tictoc Timing over IP Connection and Transfer of Clock WG
|
||||
241 INT trill Transparent Interconnection of Lots of Links WG
|
||||
253 IRTF ncrg Network Complexity Research Group
|
||||
Maillot OPS v6ops IPv6 Operations WG
|
||||
243 RAI mmusic Multiparty Multimedia Session Control WG
|
||||
242AB RTG idr Inter-Domain Routing WG
|
||||
|
||||
1300-1500 Afternoon Session I
|
||||
212/213 APP eai Email Address Internationalization WG - CANCELED
|
||||
242AB APP websec Web Security WG
|
||||
212/213 IRTF mobopts IP Mobility Optimizations Research Group - Room Changed From 252A
|
||||
243 OPS netmod NETCONF Data Modeling Language WG
|
||||
252B RAI avtcore Audio/Video Transport Core Maintenance WG
|
||||
Maillot RTG ccamp Common Control and Measurement Plane WG
|
||||
241 RTG sidr Secure Inter-Domain Routing WG
|
||||
253 TSV ippm IP Performance Metrics WG
|
||||
252A TSV i2aex Infrastructure-to-Application Information Exposure WG - Room Changed From 241
|
||||
|
||||
1510-1610 Afternoon Session II
|
||||
243 APP urnbis Uniform Resource Names, Revised WG
|
||||
Maillot INT pcp Port Control Protocol WG
|
||||
242AB OPS opsec Operational Security Capabilities for IP Network Infrastructure WG
|
||||
252B RAI avtcore Audio/Video Transport Core Maintenance WG
|
||||
241 RAI insipid INtermediary-safe SIP session ID WG
|
||||
253 RTG forces Forwarding and Control Element Separation WG
|
||||
252A SEC ipsecme IP Security Maintenance and Extensions WG
|
||||
212/213 TSV rmt Reliable Multicast Transport WG
|
||||
|
||||
1630-1930 Technical Plenary - Amphitheatre Bleu
|
||||
|
||||
|
||||
|
||||
TUESDAY, March 27, 2012
|
||||
0800-1800 IETF Registration - Hall Maillot A
|
||||
0900-1130 Morning Session I
|
||||
243 APP core Constrained RESTful Environments WG
|
||||
252A GEN antitrust Does the IETF Need an Anti-Trust Policy WG
|
||||
Maillot INT 6man IPv6 Maintenance WG
|
||||
241 IRTF dtnrg Delay-Tolerant Networking Research Group
|
||||
252B RAI clue ControLling mUltiple streams for tElepresence WG
|
||||
242AB RTG mpls Multiprotocol Label Switching WG
|
||||
212/213 SEC pkix Public-Key Infrastructure (X.509) WG
|
||||
253 TSV tsvwg Transport Area Working Group WG
|
||||
|
||||
1300-1500 Afternoon Session I
|
||||
252A APP httpbis Hypertext Transfer Protocol Bis WG
|
||||
252B INT pcp Port Control Protocol WG
|
||||
212/213 OPS bmwg Benchmarking Methodology WG
|
||||
241 OPS eman Energy Management WG
|
||||
Maillot RAI dispatch Dispatch WG
|
||||
242AB RTG ospf Open Shortest Path First IGP WG
|
||||
243 RTG pim Protocol Independent Multicast WG
|
||||
253 SEC kitten Common Authentication Technology Next Generation WG - Combined with KRB-WG
|
||||
253 SEC krb-wg Kerberos WG - Combined with KITTEN
|
||||
|
||||
1520-1700 Afternoon Session II
|
||||
243 APP weirds Web Extensible Internet Registration Data Service WG
|
||||
212/213 INT ancp Access Node Control Protocol WG
|
||||
252B INT lisp Locator/ID Separation Protocol WG
|
||||
252A IRTF iccrg Internet Congestion Control Research Group
|
||||
242AB OPS 6renum IPv6 Site Renumbering WG
|
||||
Maillot RAI avtext Audio/Video Transport Extensions WG
|
||||
253 RAI vipr Verification Involving PSTN Reachability WG
|
||||
241 SEC jose Javascript Object Signing and Encryption WG
|
||||
|
||||
1710-1810 Afternoon Session III
|
||||
212/213 APP marf Messaging Abuse Reporting Format WG
|
||||
Maillot GEN rfcform RFC Format WG
|
||||
242AB INT dnsext DNS Extensions WG
|
||||
252A IRTF iccrg Internet Congestion Control Research Group
|
||||
243 OPS netconf Network Configuration WG
|
||||
252B RAI sipcore Session Initiation Protocol Core WG
|
||||
241 RTG isis IS-IS for IP Internets WG
|
||||
253 SEC mile Managed Incident Lightweight Exchange WG
|
||||
|
||||
|
||||
|
||||
WEDNESDAY, March 28, 2012
|
||||
0800-1700 IETF Registration - Hall Maillot A
|
||||
0900-1130 Morning Session I
|
||||
243 APP paws Protocol to Access WS database WG
|
||||
242AB INT homenet Home Networking WG
|
||||
253 OPS opsarea Operations & Management Area Open Meeting - Combined with OPSAWG
|
||||
253 OPS opsawg Operations and Management Area Working Group WG - Combined with OPSAREA
|
||||
252B RAI rtcweb Real-Time Communication in WEB-browsers WG
|
||||
Maillot RTG ccamp Common Control and Measurement Plane WG
|
||||
241 RTG sidr Secure Inter-Domain Routing WG
|
||||
212/213 TSV nfsv4 Network File System Version 4 WG
|
||||
252A TSV ppsp Peer to Peer Streaming Protocol WG
|
||||
|
||||
1130-1300 Working Group Chairs' Training - 252B
|
||||
1300-1500 Afternoon Session I
|
||||
252B APP hybi BiDirectional or Server-Initiated HTTP WG
|
||||
243 APP repute Reputation Services WG
|
||||
253 INT netext Network-Based Mobility Extensions WG
|
||||
252A RAI ecrit Emergency Context Resolution with Internet Technologies WG
|
||||
242AB RTG karp Keying and Authentication for Routing Protocols WG
|
||||
Maillot RTG nvo3 Network Virtualization Overlays WG
|
||||
241 RTG roll Routing Over Low power and Lossy networks WG
|
||||
212/213 SEC nea Network Endpoint Assessment WG
|
||||
|
||||
1510-1610 Afternoon Session II
|
||||
242AB INT softwire Softwires WG
|
||||
Maillot OPS armd Address Resolution for Massive numbers of hosts in the Data center WG
|
||||
253 RAI xmpp Extensible Messaging and Presence Protocol WG
|
||||
241 RAI p2psip Peer-to-Peer Session Initiation Protocol WG
|
||||
252A RAI soc SIP Overload Control WG
|
||||
252B RTG bfd Bidirectional Forwarding Detection WG
|
||||
243 SEC tls Transport Layer Security WG
|
||||
212/213 TSV pcn Congestion and Pre-Congestion Notification WG
|
||||
|
||||
1630-1930 IETF Operations and Administration Plenary - Amphitheatre Bleu
|
||||
|
||||
|
||||
|
||||
THURSDAY, March 29, 2012
|
||||
0800-1700 IETF Registration - Hall Maillot A
|
||||
0900-1130 Morning Session I
|
||||
252A APP scim System for Cross-domain Identity Management WG
|
||||
241 INT dmm Distributed Mobility Management WG
|
||||
253 INT dhc Dynamic Host Configuration WG
|
||||
212/213 OPS mboned MBONE Deployment WG
|
||||
Maillot RAI rtcweb Real-Time Communication in WEB-browsers WG
|
||||
242AB RTG pwe3 Pseudowire Emulation Edge to Edge WG
|
||||
243 SEC abfab Application Bridging for Federated Access Beyond web WG
|
||||
252B TSV alto Application-Layer Traffic Optimization WG
|
||||
|
||||
1300-1500 Afternoon Session I
|
||||
253 APP precis Preparation and Comparison of Internationalized Strings WG
|
||||
Maillot INT intarea Internet Area Working Group WG
|
||||
212/213 IRTF samrg Scalable Adaptive Multicast Research Group
|
||||
243 RAI xrblock Metric Blocks for use with RTCP's Extended Report Framework WG
|
||||
242AB RTG l2vpn Layer 2 Virtual Private Networks WG
|
||||
241 RTG manet Mobile Ad-hoc Networks WG
|
||||
252A SEC oauth Web Authorization Protocol WG
|
||||
252B TSV cdni Content Delivery Networks Interconnection WG
|
||||
|
||||
1520-1720 Afternoon Session II
|
||||
241 APP httpbis Hypertext Transfer Protocol Bis WG
|
||||
252B INT lwig Light-Weight Implementation Guidance WG
|
||||
243 OPS dime Diameter Maintenance and Extensions WG
|
||||
Maillot OPS v6ops IPv6 Operations WG
|
||||
212/213 RAI drinks Data for Reachability of Inter/tra-NetworK SIP WG
|
||||
242AB RTG rtgarea Routing Area Open Meeting
|
||||
252A SEC emu EAP Method Update WG
|
||||
253 TSV decade Decoupled Application Data Enroute WG
|
||||
|
||||
1740-1940 Afternoon Session III
|
||||
252A INT mif Multiple Interfaces WG
|
||||
212/213 OPS ipfix IP Flow Information Export WG
|
||||
Maillot RAI clue ControLling mUltiple streams for tElepresence WG
|
||||
243 RAI geopriv Geographic Location/Privacy WG
|
||||
241 RTG pce Path Computation Element WG
|
||||
252B RTG rtgwg Routing Area Working Group WG
|
||||
242AB SEC saag Security Area Open Meeting
|
||||
253 TSV conex Congestion Exposure WG
|
||||
|
||||
|
||||
|
||||
FRIDAY, March 30, 2012
|
||||
0800-1100 IETF Registration - Hall Maillot A
|
||||
0900-1100 Morning Session I
|
||||
253 APP core Constrained RESTful Environments WG
|
||||
252A APP spfbis SPF Update WG
|
||||
252B INT softwire Softwires WG
|
||||
212/213 OPS radext RADIUS EXTensions WG
|
||||
243 RAI siprec SIP Recording WG
|
||||
Maillot RTG mpls Multiprotocol Label Switching WG
|
||||
242AB TSV cdni Content Delivery Networks Interconnection WG
|
||||
241 TSV tcpm TCP Maintenance and Minor Extensions WG
|
||||
|
||||
1120-1220 Afternoon Session I
|
||||
253 APP iri Internationalized Resource Identifiers WG
|
||||
243 GEN rpsreqs Remote Participation System Requirements WG
|
||||
242AB INT trill Transparent Interconnection of Lots of Links WG
|
||||
212/213 IRTF cfrg Crypto Forum Research Group
|
||||
Maillot OPS dnsop Domain Name System Operations WG
|
||||
241 RAI bfcpbis Binary Floor Control Protocol Bis WG
|
||||
252A RAI codec Internet Wideband Audio Codec WG - CANCELED
|
||||
252B TSV mptcp Multipath TCP WG
|
||||
|
||||
1230-1330 Afternoon Session II
|
||||
243 GEN rpsreqs Remote Participation System Requirements WG
|
||||
212/213 IRTF cfrg Crypto Forum Research Group
|
||||
242AB OPS grow Global Routing Operations WG
|
||||
253 RAI atoca Authority-to-Citizen Alert WG
|
||||
241 RAI cuss Call Control UUI Service for SIP WG
|
||||
252B TSV mptcp Multipath TCP WG
|
||||
|
||||
|
||||
====================================================================
|
||||
AREA DIRECTORS
|
||||
|
||||
APP Applications Area Barry Leiba/Huawei Technologies & Pete Resnick/QTI, a Qualcomm company
|
||||
GEN General Area Russ Housley/Vigil Security, LLC
|
||||
OPS Operations and Man Ron Bonica/Juniper Networks & Benoit Claise/Cisco
|
||||
SEC Security Area Stephen Farrell/Trinity College Dublin & Sean Turner/IECA
|
||||
|
5306
ietf/meeting/tests/agenda-83-utc-output.html
Normal file
5306
ietf/meeting/tests/agenda-83-utc-output.html
Normal file
File diff suppressed because it is too large
Load diff
156
ietf/meeting/tests/agenda.py
Normal file
156
ietf/meeting/tests/agenda.py
Normal file
|
@ -0,0 +1,156 @@
|
|||
import sys
|
||||
from django.test import Client
|
||||
from ietf.utils import TestCase
|
||||
from ietf.name.models import SessionStatusName
|
||||
from ietf.person.models import Person
|
||||
from ietf.group.models import Group
|
||||
from ietf.meeting.models import TimeSlot, Session, Meeting, ScheduledSession
|
||||
from ietf.meeting.helpers import get_meeting, get_schedule
|
||||
|
||||
class AgendaInfoTestCase(TestCase):
|
||||
# See ietf.utils.test_utils.TestCase for the use of perma_fixtures vs. fixtures
|
||||
perma_fixtures = [ 'names.xml', # ietf/names/fixtures/names.xml for MeetingTypeName, and TimeSlotTypeName
|
||||
'meeting83.json',
|
||||
'constraint83.json',
|
||||
'workinggroups.json',
|
||||
'groupgroup.json',
|
||||
'person.json', 'users.json' ]
|
||||
|
||||
def test_SessionUnicode(self):
|
||||
m1 = get_meeting("83")
|
||||
g1 = Group.objects.get(acronym = "pkix")
|
||||
p1 = Person.objects.get(pk = 5376) # Russ Housley
|
||||
st1 = SessionStatusName.objects.get(slug = "appr")
|
||||
s1 = m1.session_set.create(name = "newone", group = g1, requested_by = p1, status = st1)
|
||||
self.assertEqual(s1.__unicode__(), "IETF-83: pkix (unscheduled)")
|
||||
|
||||
def test_AgendaInfo(self):
|
||||
from ietf.meeting.views import agenda_info
|
||||
num = '83'
|
||||
timeslots, scheduledsessions, update, meeting, venue, ads, plenaryw_agenda, plenaryt_agenda = agenda_info(num)
|
||||
# I think that "timeslots" here, is unique times, not actually
|
||||
# the timeslots array itself.
|
||||
self.assertEqual(len(timeslots),26)
|
||||
self.assertEqual(meeting.number,'83')
|
||||
self.assertEqual(venue.meeting_num, "83")
|
||||
self.assertTrue(len(ads) > 0)
|
||||
|
||||
def test_AgendaInfoReturnsSortedTimeSlots(self):
|
||||
from ietf.meeting.views import agenda_info
|
||||
num = '83'
|
||||
timeslots, scheduledsessions, update, meeting, venue, ads, plenaryw_agenda, plenaryt_agenda = agenda_info(num)
|
||||
for slotnum in range(0,len(timeslots)-1):
|
||||
# debug
|
||||
#sys.stdout.write("%d: %s vs %d: %s\n" % (timeslots[slotnum].pk,
|
||||
# timeslots[slotnum].time,
|
||||
# timeslots[slotnum+1].pk,
|
||||
# timeslots[slotnum+1].time))
|
||||
self.assertTrue(timeslots[slotnum].time < timeslots[slotnum+1].time)
|
||||
|
||||
# this tests that a slot at 11:20 AM on Friday, has slot 10 minutes later
|
||||
# after it
|
||||
def test_TimeSlot2408_has_SlotToTheRight(self):
|
||||
ss2408 = ScheduledSession.objects.get(pk = 2408)
|
||||
self.assertTrue(ss2408.slot_to_the_right)
|
||||
|
||||
# this tests that a slot 9-11:30am on Wednesday, has no following slot,
|
||||
# as the slot purpose to the right is non-session.
|
||||
def test_TimeSlot2517_hasno_SlotToTheRight(self):
|
||||
ss2517 = ScheduledSession.objects.get(pk = 2517)
|
||||
self.assertFalse(ss2517.slot_to_the_right)
|
||||
|
||||
# this tests that a slot 13:00-15:00 on Tuesday has no following slot,
|
||||
# as the gap to the next slot (at 15:20) is too long (there is a break)
|
||||
def test_TimeSlot2418_hasno_SlotToTheRight(self):
|
||||
ss2418 = ScheduledSession.objects.get(pk = 2418)
|
||||
self.assertFalse(ss2418.slot_to_the_right)
|
||||
|
||||
def test_AgendaInfoNotFound(self):
|
||||
from django.http import Http404
|
||||
from ietf.meeting.views import agenda_info
|
||||
num = '83b'
|
||||
try:
|
||||
timeslots, scheduledsessions, update, meeting, venue, ads, plenaryw_agenda, plenaryt_agenda = agenda_info(num)
|
||||
# fail!!!
|
||||
self.assertFalse(True)
|
||||
except Http404:
|
||||
pass
|
||||
|
||||
|
||||
def test_TimeSlotHasRegistrationInfo(self):
|
||||
# find the registration slot, and confirm that it can find the registration
|
||||
regslot = TimeSlot.objects.get(pk=2900)
|
||||
self.assertEqual(regslot.type.slug, "reg")
|
||||
slot1 = TimeSlot.objects.get(pk=2371) # "name": "Morning Session I"
|
||||
self.assertEqual(slot1.registration(), regslot)
|
||||
|
||||
def test_DoNotGetSchedule(self):
|
||||
from django.http import Http404
|
||||
num = '83'
|
||||
from ietf.meeting.views import get_meeting, get_schedule
|
||||
meeting = get_meeting(num)
|
||||
try:
|
||||
na = get_schedule(meeting, "none:83")
|
||||
except Http404:
|
||||
False
|
||||
|
||||
def test_GetSchedule(self):
|
||||
num = '83'
|
||||
from ietf.meeting.views import get_meeting, get_schedule
|
||||
meeting = get_meeting(num)
|
||||
na = get_schedule(meeting, "mtg:83")
|
||||
self.assertIsNotNone(na)
|
||||
|
||||
def test_sessionstr(self):
|
||||
num = '83'
|
||||
from ietf.meeting.views import get_meeting
|
||||
meeting = get_meeting(num)
|
||||
session1= Session.objects.get(pk=2157)
|
||||
self.assertEqual(session1.__unicode__(), u"IETF-83: pkix 0900")
|
||||
|
||||
def test_sessionstr_interim(self):
|
||||
"""
|
||||
Need a fixture for a meeting that is interim
|
||||
"""
|
||||
pass
|
||||
|
||||
def test_AgendaInfoNamedSlotSessionsByArea(self):
|
||||
from ietf.meeting.views import agenda_info
|
||||
num = '83'
|
||||
timeslots, scheduledsessions, update, meeting, venue, ads, plenaryw_agenda, plenaryt_agenda = agenda_info(num)
|
||||
for slot in timeslots:
|
||||
for ss in slot.scheduledsessions_by_area:
|
||||
self.assertIsNotNone(ss)
|
||||
self.assertIsNotNone(ss["area"])
|
||||
self.assertIsNotNone(ss["info"])
|
||||
|
||||
def test_AgendaInfoNamedSlotSessionsByArea(self):
|
||||
from ietf.meeting.views import agenda_info
|
||||
num = '83'
|
||||
timeslots, scheduledsessions, update, meeting, venue, ads, plenaryw_agenda, plenaryt_agenda = agenda_info(num)
|
||||
# the third timeslot should be 1300-1450 on Sunday March 25.
|
||||
# it should have three things:
|
||||
#1300-1450 Tools for Creating Internet-Drafts Tutorial - 241
|
||||
#1300-1450 Newcomers' Orientation - 252B
|
||||
#1300-1450 Meetecho Tutorial for Participants and WG Chairs - 252A
|
||||
#import pdb
|
||||
#pdb.set_trace()
|
||||
slot3 = timeslots[2]
|
||||
self.assertEqual(slot3.time_desc, "1300-1450")
|
||||
events = slot3.scheduledsessions_at_same_time
|
||||
self.assertEqual(len(events), 3)
|
||||
|
||||
def test_serialize_constraint(self):
|
||||
session1 = Session.objects.get(pk=2157)
|
||||
host_scheme = "http://datatracker.ietf.org"
|
||||
json_dict = session1.constraints_dict(host_scheme)
|
||||
self.assertEqual(len(json_dict), 25)
|
||||
|
||||
def test_avtcore_has_two_slots(self):
|
||||
mtg83 = get_meeting(83)
|
||||
sch83 = get_schedule(mtg83, "mtg:83")
|
||||
avtcore = mtg83.session_set.get(group__acronym='avtcore')
|
||||
self.assertEqual(avtcore.pk, 2216) # sanity check
|
||||
self.assertEqual(len(avtcore.scheduledsession_set.filter(schedule = sch83)), 2)
|
||||
|
||||
|
562
ietf/meeting/tests/api.py
Normal file
562
ietf/meeting/tests/api.py
Normal file
|
@ -0,0 +1,562 @@
|
|||
import base64
|
||||
import sys, datetime
|
||||
from django.test import Client
|
||||
from ietf.utils import TestCase
|
||||
|
||||
#from ietf.person.models import Person
|
||||
from django.contrib.auth.models import User
|
||||
from ietf.meeting.models import TimeSlot, Session, ScheduledSession, Meeting
|
||||
from ietf.ietfauth.decorators import has_role
|
||||
from auths import auth_joeblow, auth_wlo, auth_ietfchair, auth_ferrel
|
||||
from django.utils import simplejson as json
|
||||
from ietf.meeting.helpers import get_meeting
|
||||
|
||||
import debug
|
||||
|
||||
class ApiTestCase(TestCase):
|
||||
# See ietf.utils.test_utils.TestCase for the use of perma_fixtures vs. fixtures
|
||||
perma_fixtures = [ 'names.xml', # ietf/names/fixtures/names.xml for MeetingTypeName, and TimeSlotTypeName
|
||||
'meeting83.json',
|
||||
'constraint83.json',
|
||||
'workinggroups.json',
|
||||
'groupgroup.json',
|
||||
'person.json', 'users.json' ]
|
||||
|
||||
def test_noAuthenticationUpdateAgendaItem(self):
|
||||
ts_one = TimeSlot.objects.get(pk=2371)
|
||||
ts_two = TimeSlot.objects.get(pk=2372)
|
||||
ss_one = ScheduledSession.objects.get(pk=2371)
|
||||
|
||||
# confirm that it has old timeslot value
|
||||
self.assertEqual(ss_one.timeslot, ts_one)
|
||||
|
||||
# move this session from one timeslot to another.
|
||||
self.client.post('/dajaxice/ietf.meeting.update_timeslot/', {
|
||||
'argv': '{"schedule_id":"%u", "session_id":"%u", "scheduledsession_id":"2372"}' % (ss_one.schedule.id,ts_one.id)
|
||||
})
|
||||
|
||||
# confirm that without login, it does not have new value
|
||||
ss_one = ScheduledSession.objects.get(pk=2371)
|
||||
self.assertEqual(ss_one.timeslot, ts_one)
|
||||
|
||||
def test_noAuthorizationUpdateAgendaItem(self):
|
||||
ts_one = TimeSlot.objects.get(pk=2371)
|
||||
ts_two = TimeSlot.objects.get(pk=2372)
|
||||
ss_one = ScheduledSession.objects.get(pk=2371)
|
||||
|
||||
# confirm that it has old timeslot value
|
||||
self.assertEqual(ss_one.timeslot, ts_one)
|
||||
|
||||
# move this session from one timeslot to another.
|
||||
self.client.post('/dajaxice/ietf.meeting.update_timeslot/', {
|
||||
'argv': '{"schedule_id":"%u", "session_id":"%u", "scheduledsession_id":"2372"}' % (ss_one.schedule.id,ts_one.id)
|
||||
}, **auth_ferrel)
|
||||
|
||||
# confirm that without login, it does not have new value
|
||||
ss_one = ScheduledSession.objects.get(pk=2371)
|
||||
self.assertEqual(ss_one.timeslot, ts_one)
|
||||
|
||||
|
||||
def test_wrongAuthorizationUpdateAgendaItem(self):
|
||||
s2157 = Session.objects.get(pk=2157)
|
||||
ss_one = ScheduledSession.objects.get(pk=2371)
|
||||
ss_two = ScheduledSession.objects.get(pk=2372)
|
||||
|
||||
old_two_s = ss_two.session
|
||||
|
||||
# confirm that it has old timeslot value
|
||||
self.assertEqual(ss_one.session, s2157)
|
||||
|
||||
# move this session from one timeslot to another.
|
||||
self.client.post('/dajaxice/ietf.meeting.update_timeslot/', {
|
||||
'argv': '{"schedule_id":"%u", "session_id":"%u", "scheduledsession_id":"2372"}' % (ss_one.schedule.id,s2157.id)
|
||||
}, **auth_joeblow)
|
||||
|
||||
# confirm that without login, it does not have new value
|
||||
ss_one = ScheduledSession.objects.get(pk=2371)
|
||||
self.assertEqual(ss_one.session, s2157)
|
||||
|
||||
# confirm that the new scheduledsession has not changed.
|
||||
ss_two = ScheduledSession.objects.get(pk=2372)
|
||||
self.assertEqual(ss_two.session, old_two_s)
|
||||
|
||||
def test_wloUpdateAgendaItem(self):
|
||||
s2157 = Session.objects.get(pk=2157)
|
||||
ss_one = ScheduledSession.objects.get(pk=2371)
|
||||
|
||||
# confirm that it has old timeslot value
|
||||
self.assertEqual(ss_one.session, s2157)
|
||||
|
||||
# move this session from one timeslot to another.
|
||||
self.client.post('/dajaxice/ietf.meeting.update_timeslot/', {
|
||||
'argv': '{"schedule_id":"%u", "session_id":"%u", "scheduledsession_id":"2372"}' % (ss_one.schedule.id,s2157.id)
|
||||
}, **auth_wlo)
|
||||
|
||||
# confirm that it new scheduledsession object has new session.
|
||||
ss_two = ScheduledSession.objects.get(pk=2372)
|
||||
self.assertEqual(ss_two.session, s2157)
|
||||
|
||||
# confirm that it old scheduledsession object has no session.
|
||||
ss_one = ScheduledSession.objects.get(pk=2371)
|
||||
self.assertEqual(ss_one.session, None)
|
||||
|
||||
def test_wloUpdateAgendaItemToUnscheduled(self):
|
||||
s2157 = Session.objects.get(pk=2157)
|
||||
ss_one = ScheduledSession.objects.get(pk=2371)
|
||||
|
||||
# confirm that it has old timeslot value
|
||||
self.assertEqual(ss_one.session, s2157)
|
||||
|
||||
# move this session from one timeslot to another.
|
||||
self.client.post('/dajaxice/ietf.meeting.update_timeslot/', {
|
||||
'argv': '{"schedule_id":"%u", "session_id":"%u", "scheduledsession_id":"0"}' % (ss_one.schedule.id,s2157.id)
|
||||
}, **auth_wlo)
|
||||
|
||||
# confirm that it old scheduledsession object has no session.
|
||||
ss_one = ScheduledSession.objects.get(pk=2371)
|
||||
self.assertEqual(ss_one.session, None)
|
||||
|
||||
def test_wloUpdateAgendaItemToNone(self):
|
||||
s2157 = Session.objects.get(pk=2157)
|
||||
ss_one = ScheduledSession.objects.get(pk=2371)
|
||||
|
||||
# confirm that it has old timeslot value
|
||||
self.assertEqual(ss_one.session, s2157)
|
||||
|
||||
# move this session from one timeslot to another.
|
||||
self.client.post('/dajaxice/ietf.meeting.update_timeslot/', {
|
||||
'argv': '{"schedule_id":"%u", "session_id":"%u"}' % (ss_one.schedule.id,s2157.id)
|
||||
}, **auth_wlo)
|
||||
|
||||
# confirm that it old scheduledsession object has no session.
|
||||
ss_one = ScheduledSession.objects.get(pk=2371)
|
||||
self.assertEqual(ss_one.session, None)
|
||||
|
||||
def test_chairUpdateAgendaItemFails(self):
|
||||
s2157 = Session.objects.get(pk=2157)
|
||||
ss_one = ScheduledSession.objects.get(pk=2371)
|
||||
|
||||
# confirm that it has old timeslot value
|
||||
self.assertEqual(ss_one.session, s2157)
|
||||
|
||||
# confirm that the slot was none empty.
|
||||
ss_two_saved = ScheduledSession.objects.get(pk=2372)
|
||||
|
||||
# move this session from one timeslot to another.
|
||||
self.client.post('/dajaxice/ietf.meeting.update_timeslot/', {
|
||||
'argv': '{"schedule_id":"%u", "session_id":"%u", "scheduledsession_id":"%u"}' % (ss_one.schedule.id,s2157.id, 2372)
|
||||
}, **auth_ietfchair)
|
||||
|
||||
# confirm that it new scheduledsession object has no new session.
|
||||
ss_two = ScheduledSession.objects.get(pk=2372)
|
||||
self.assertEqual(ss_two, ss_two_saved)
|
||||
|
||||
# confirm that it old scheduledsession object still has old session.
|
||||
ss_one = ScheduledSession.objects.get(pk=2371)
|
||||
self.assertEqual(ss_one.session, s2157)
|
||||
|
||||
|
||||
def test_anyoneGetConflictInfo(self):
|
||||
s2157 = Session.objects.get(pk=2157)
|
||||
|
||||
# confirm that a constraint json is generated properly
|
||||
resp = self.client.get('/meeting/83/session/2157/constraints.json')
|
||||
conflicts = json.loads(resp.content)
|
||||
self.assertNotEqual(conflicts, None)
|
||||
|
||||
def test_getMeetingInfoJson(self):
|
||||
resp = self.client.get('/meeting/83.json')
|
||||
mtginfo = json.loads(resp.content)
|
||||
self.assertNotEqual(mtginfo, None)
|
||||
|
||||
def test_getRoomJson(self):
|
||||
mtg83 = get_meeting(83)
|
||||
rm243 = mtg83.room_set.get(name = '243')
|
||||
|
||||
resp = self.client.get('/meeting/83/room/%s.json' % rm243.pk)
|
||||
rm243json = json.loads(resp.content)
|
||||
self.assertNotEqual(rm243json, None)
|
||||
|
||||
def test_createNewRoomNonSecretariat(self):
|
||||
mtg83 = get_meeting(83)
|
||||
rm221 = mtg83.room_set.filter(name = '221')
|
||||
self.assertEqual(len(rm221), 0)
|
||||
|
||||
# try to create a new room.
|
||||
self.client.post('/meeting/83/rooms', {
|
||||
'name' : '221',
|
||||
'capacity': 50,
|
||||
}, **auth_joeblow)
|
||||
|
||||
# see that in fact the room was not created
|
||||
rm221 = mtg83.room_set.filter(name = '221')
|
||||
self.assertEqual(len(rm221), 0)
|
||||
|
||||
def test_createNewRoomSecretariat(self):
|
||||
mtg83 = get_meeting(83)
|
||||
rm221 = mtg83.room_set.filter(name = '221')
|
||||
self.assertEqual(len(rm221), 0)
|
||||
|
||||
timeslots = mtg83.timeslot_set.all()
|
||||
timeslot_initial_len = len(timeslots)
|
||||
self.assertTrue(timeslot_initial_len>0)
|
||||
|
||||
extra_headers = auth_wlo
|
||||
extra_headers['HTTP_ACCEPT']='text/json'
|
||||
|
||||
# try to create a new room
|
||||
self.client.post('/meeting/83/rooms', {
|
||||
'name' : '221',
|
||||
'capacity': 50,
|
||||
}, **extra_headers)
|
||||
|
||||
# see that in fact wlo can create a new room.
|
||||
rm221 = mtg83.room_set.filter(name = '221')
|
||||
self.assertEqual(len(rm221), 1)
|
||||
|
||||
timeslots = mtg83.timeslot_set.all()
|
||||
timeslot_final_len = len(timeslots)
|
||||
self.assertEqual((timeslot_final_len - timeslot_initial_len), 26)
|
||||
|
||||
def test_deleteNewRoomSecretariat(self):
|
||||
mtg83 = get_meeting(83)
|
||||
rm243 = mtg83.room_set.get(name = '243')
|
||||
slotcount = len(rm243.timeslot_set.all())
|
||||
self.assertNotEqual(rm243, None)
|
||||
|
||||
timeslots = mtg83.timeslot_set.all()
|
||||
timeslot_initial_len = len(timeslots)
|
||||
self.assertTrue(timeslot_initial_len>0)
|
||||
|
||||
# try to delete a new room
|
||||
self.client.delete('/meeting/83/room/%s.json' % (rm243.pk), **auth_wlo)
|
||||
|
||||
# see that in fact wlo can delete an existing room.
|
||||
rm243 = mtg83.room_set.filter(name = '243')
|
||||
self.assertEqual(len(rm243), 0)
|
||||
|
||||
timeslots = mtg83.timeslot_set.all()
|
||||
timeslot_final_len = len(timeslots)
|
||||
self.assertEqual((timeslot_final_len-timeslot_initial_len), -slotcount)
|
||||
|
||||
def test_getGroupInfoJson(self):
|
||||
resp = self.client.get('/group/pkix.json')
|
||||
#print "json: %s" % (resp.content)
|
||||
mtginfo = json.loads(resp.content)
|
||||
self.assertNotEqual(mtginfo, None)
|
||||
|
||||
def test_getSlotJson(self):
|
||||
mtg83 = get_meeting(83)
|
||||
slot0 = mtg83.timeslot_set.all()[0]
|
||||
|
||||
resp = self.client.get('/meeting/83/timeslot/%s.json' % slot0.pk)
|
||||
slot0json = json.loads(resp.content)
|
||||
self.assertNotEqual(slot0json, None)
|
||||
|
||||
def test_createNewSlotNonSecretariat(self):
|
||||
mtg83 = get_meeting(83)
|
||||
slot23 = mtg83.timeslot_set.filter(time=datetime.date(year=2012,month=3,day=23))
|
||||
self.assertEqual(len(slot23), 0)
|
||||
|
||||
# try to create a new room.
|
||||
resp = self.client.post('/meeting/83/timeslots', {
|
||||
'type' : 'plenary',
|
||||
'name' : 'Workshop on Smart Object Security',
|
||||
'time' : '2012-03-23',
|
||||
'duration_days' : 0,
|
||||
'duration_hours': 8,
|
||||
'duration_minutes' : 0,
|
||||
'duration_seconds' : 0,
|
||||
}, **auth_joeblow)
|
||||
|
||||
self.assertEqual(resp.status_code, 403)
|
||||
# see that in fact the room was not created
|
||||
slot23 = mtg83.timeslot_set.filter(time=datetime.date(year=2012,month=3,day=23))
|
||||
self.assertEqual(len(slot23), 0)
|
||||
|
||||
def test_createNewSlotSecretariat(self):
|
||||
mtg83 = get_meeting(83)
|
||||
slot23 = mtg83.timeslot_set.filter(time=datetime.date(year=2012,month=3,day=23))
|
||||
self.assertEqual(len(slot23), 0)
|
||||
|
||||
extra_headers = auth_wlo
|
||||
extra_headers['HTTP_ACCEPT']='text/json'
|
||||
|
||||
# try to create a new room.
|
||||
resp = self.client.post('/meeting/83/timeslots', {
|
||||
'type' : 'plenary',
|
||||
'name' : 'Workshop on Smart Object Security',
|
||||
'time' : '2012-03-23',
|
||||
'duration': '08:00:00',
|
||||
}, **extra_headers)
|
||||
self.assertEqual(resp.status_code, 302)
|
||||
|
||||
# see that in fact wlo can create a new timeslot
|
||||
mtg83 = get_meeting(83)
|
||||
slot23 = mtg83.timeslot_set.filter(time=datetime.date(year=2012,month=3,day=23))
|
||||
self.assertEqual(len(slot23), 11)
|
||||
|
||||
def test_deleteNewSlotSecretariat(self):
|
||||
mtg83 = get_meeting(83)
|
||||
slot0 = mtg83.timeslot_set.all()[0]
|
||||
|
||||
# try to delete a new room
|
||||
self.client.delete('/meeting/83/timeslot/%s.json' % (slot0.pk), **auth_wlo)
|
||||
|
||||
# see that in fact wlo can delete an existing room.
|
||||
slot0n = mtg83.timeslot_set.filter(pk = slot0.pk)
|
||||
self.assertEqual(len(slot0n), 0)
|
||||
|
||||
#
|
||||
# AGENDA API
|
||||
#
|
||||
def test_getAgendaJson(self):
|
||||
mtg83 = get_meeting(83)
|
||||
a83 = mtg83.agenda
|
||||
|
||||
resp = self.client.get('/meeting/83/agendas/%s.json' % a83.name)
|
||||
a83json = json.loads(resp.content)
|
||||
self.assertNotEqual(a83json, None)
|
||||
|
||||
def test_createNewAgendaNonSecretariat(self):
|
||||
mtg83 = get_meeting(83)
|
||||
|
||||
# try to create a new agenda
|
||||
resp = self.client.post('/meeting/83/agendas', {
|
||||
'type' : 'plenary',
|
||||
'name' : 'Workshop on Smart Object Security',
|
||||
'time' : '2012-03-23',
|
||||
'duration_days' : 0,
|
||||
'duration_hours': 8,
|
||||
'duration_minutes' : 0,
|
||||
'duration_seconds' : 0,
|
||||
}, **auth_joeblow)
|
||||
|
||||
self.assertEqual(resp.status_code, 403)
|
||||
# see that in fact the room was not created
|
||||
slot23 = mtg83.timeslot_set.filter(time=datetime.date(year=2012,month=3,day=23))
|
||||
self.assertEqual(len(slot23), 0)
|
||||
|
||||
def test_createNewAgendaSecretariat(self):
|
||||
mtg83 = get_meeting(83)
|
||||
a83 = mtg83.agenda
|
||||
|
||||
extra_headers = auth_wlo
|
||||
extra_headers['HTTP_ACCEPT']='text/json'
|
||||
|
||||
# try to create a new agenda
|
||||
resp = self.client.post('/meeting/83/agendas', {
|
||||
'name' : 'fakeagenda1',
|
||||
}, **extra_headers)
|
||||
|
||||
self.assertEqual(resp.status_code, 302)
|
||||
|
||||
# see that in fact wlo can create a new timeslot
|
||||
mtg83 = get_meeting(83)
|
||||
n83 = mtg83.schedule_set.filter(name='fakeagenda1')
|
||||
self.assertNotEqual(n83, None)
|
||||
|
||||
def test_updateAgendaSecretariat(self):
|
||||
mtg83 = get_meeting(83)
|
||||
a83 = mtg83.agenda
|
||||
self.assertTrue(a83.visible)
|
||||
|
||||
extra_headers = auth_wlo
|
||||
extra_headers['HTTP_ACCEPT']='application/json'
|
||||
|
||||
# try to create a new agenda
|
||||
resp = self.client.put('/meeting/83/agendas/%s.json' % (a83.name),
|
||||
data='visible=0',
|
||||
content_type="application/x-www-form-urlencoded",
|
||||
**extra_headers)
|
||||
|
||||
self.assertEqual(resp.status_code, 200)
|
||||
|
||||
# see that in fact wlo can create a new timeslot
|
||||
mtg83 = get_meeting(83)
|
||||
a83 = mtg83.agenda
|
||||
self.assertFalse(a83.visible)
|
||||
|
||||
def test_deleteAgendaSecretariat(self):
|
||||
mtg83 = get_meeting(83)
|
||||
a83 = mtg83.agenda
|
||||
self.assertNotEqual(a83, None)
|
||||
|
||||
# try to delete an agenda
|
||||
resp = self.client.delete('/meeting/83/agendas/%s.json' % (a83.name), **auth_wlo)
|
||||
self.assertEqual(resp.status_code, 200)
|
||||
|
||||
# see that in fact wlo can delete an existing room.
|
||||
mtg83 = get_meeting(83)
|
||||
a83c = mtg83.schedule_set.filter(pk = a83.pk).count()
|
||||
self.assertEqual(a83c, 0)
|
||||
self.assertEqual(mtg83.agenda, None)
|
||||
|
||||
#
|
||||
# MEETING API
|
||||
#
|
||||
def test_getMeetingJson(self):
|
||||
resp = self.client.get('/meeting/83.json')
|
||||
m83json = json.loads(resp.content)
|
||||
self.assertNotEqual(m83json, None)
|
||||
|
||||
def test_setMeetingAgendaNonSecretariat(self):
|
||||
mtg83 = get_meeting(83)
|
||||
self.assertNotEqual(mtg83.agenda, None)
|
||||
|
||||
# try to create a new agenda
|
||||
resp = self.client.put('/meeting/83.json',
|
||||
data="agenda=None",
|
||||
content_type="application/x-www-form-urlencoded",
|
||||
**auth_joeblow)
|
||||
|
||||
self.assertEqual(resp.status_code, 403)
|
||||
self.assertNotEqual(mtg83.agenda, None)
|
||||
|
||||
def test_setMeetingAgendaNoneSecretariat(self):
|
||||
mtg83 = get_meeting(83)
|
||||
self.assertNotEqual(mtg83.agenda, None)
|
||||
|
||||
extra_headers = auth_wlo
|
||||
extra_headers['HTTP_ACCEPT']='application/json'
|
||||
|
||||
# try to create a new agenda
|
||||
resp = self.client.post('/meeting/83.json',
|
||||
data="agenda=None",
|
||||
content_type="application/x-www-form-urlencoded",
|
||||
**extra_headers)
|
||||
self.assertEqual(resp.status_code, 200)
|
||||
|
||||
# new to reload the object
|
||||
mtg83 = get_meeting(83)
|
||||
self.assertEqual(mtg83.agenda, None)
|
||||
|
||||
def test_setMeetingAgendaSecretariat(self):
|
||||
mtg83 = get_meeting(83)
|
||||
new_sched = mtg83.schedule_set.create(name="funny",
|
||||
meeting=mtg83,
|
||||
public=True,
|
||||
owner=mtg83.agenda.owner)
|
||||
self.assertNotEqual(mtg83.agenda, new_sched)
|
||||
|
||||
extra_headers = auth_wlo
|
||||
extra_headers['HTTP_ACCEPT']='text/json'
|
||||
|
||||
# try to create a new agenda
|
||||
resp = self.client.put('/meeting/83.json',
|
||||
data="agenda=%s" % new_sched.name,
|
||||
content_type="application/x-www-form-urlencoded",
|
||||
**extra_headers)
|
||||
self.assertEqual(resp.status_code, 200)
|
||||
|
||||
# new to reload the object
|
||||
mtg83 = get_meeting(83)
|
||||
self.assertEqual(mtg83.agenda, new_sched)
|
||||
|
||||
def test_setNonPublicMeetingAgendaSecretariat(self):
|
||||
mtg83 = get_meeting(83)
|
||||
new_sched = mtg83.schedule_set.create(name="funny",
|
||||
meeting=mtg83,
|
||||
public=False,
|
||||
owner=mtg83.agenda.owner)
|
||||
self.assertNotEqual(mtg83.agenda, new_sched)
|
||||
|
||||
extra_headers = auth_wlo
|
||||
extra_headers['HTTP_ACCEPT']='text/json'
|
||||
|
||||
# try to create a new agenda
|
||||
resp = self.client.put('/meeting/83.json',
|
||||
data="agenda=%s" % new_sched.name,
|
||||
content_type="application/x-www-form-urlencoded",
|
||||
**extra_headers)
|
||||
self.assertEqual(resp.status_code, 406)
|
||||
|
||||
# new to reload the object
|
||||
mtg83 = get_meeting(83)
|
||||
self.assertNotEqual(mtg83.agenda, new_sched)
|
||||
|
||||
def test_wlo_isSecretariatCanEditSched24(self):
|
||||
extra_headers = auth_wlo
|
||||
extra_headers['HTTP_ACCEPT']='text/json'
|
||||
|
||||
# check that wlo
|
||||
resp = self.client.post('/dajaxice/ietf.meeting.readonly/', {
|
||||
'argv': '{"meeting_num":"83","schedule_id":"24"}'
|
||||
}, **extra_headers)
|
||||
|
||||
m83perm = json.loads(resp.content)
|
||||
self.assertEqual(m83perm['secretariat'], True)
|
||||
self.assertEqual(m83perm['owner_href'], "http://testserver/person/108757.json")
|
||||
self.assertEqual(m83perm['read_only'], False)
|
||||
self.assertEqual(m83perm['write_perm'], True)
|
||||
|
||||
def test_joeblow_isNonUserCanNotSave(self):
|
||||
extra_headers = auth_joeblow
|
||||
extra_headers['HTTP_ACCEPT']='text/json'
|
||||
|
||||
# check that wlo
|
||||
resp = self.client.post('/dajaxice/ietf.meeting.readonly/', {
|
||||
'argv': '{"meeting_num":"83","schedule_id":"24"}'
|
||||
}, **extra_headers)
|
||||
|
||||
m83perm = json.loads(resp.content)
|
||||
self.assertEqual(m83perm['secretariat'], False)
|
||||
self.assertEqual(m83perm['owner_href'], "http://testserver/person/108757.json")
|
||||
self.assertEqual(m83perm['read_only'], True)
|
||||
self.assertEqual(m83perm['write_perm'], False)
|
||||
|
||||
def test_af_IsReadOnlySched24(self):
|
||||
"""
|
||||
This test case validates that despite being an AD, and having a login, a schedule
|
||||
that does not belong to him will be marked as readonly.
|
||||
"""
|
||||
extra_headers = auth_ferrel
|
||||
extra_headers['HTTP_ACCEPT']='text/json'
|
||||
|
||||
resp = self.client.post('/dajaxice/ietf.meeting.readonly/', {
|
||||
'argv': '{"meeting_num":"83","schedule_id":"24"}'
|
||||
}, **extra_headers)
|
||||
|
||||
m83perm = json.loads(resp.content)
|
||||
self.assertEqual(m83perm['secretariat'], False)
|
||||
self.assertEqual(m83perm['owner_href'], "http://testserver/person/108757.json")
|
||||
self.assertEqual(m83perm['read_only'], True)
|
||||
self.assertEqual(m83perm['write_perm'], True)
|
||||
self.assertEqual(resp.status_code, 200)
|
||||
|
||||
def test_wlo_isNonUserCanNotSave(self):
|
||||
extra_headers = auth_joeblow
|
||||
extra_headers['HTTP_ACCEPT']='text/json'
|
||||
|
||||
# check that wlo
|
||||
resp = self.client.post('/dajaxice/ietf.meeting.readonly/', {
|
||||
'argv': '{"meeting_num":"83","schedule_id":"24"}'
|
||||
}, **extra_headers)
|
||||
|
||||
m83perm = json.loads(resp.content)
|
||||
self.assertEqual(m83perm['secretariat'], False)
|
||||
self.assertEqual(m83perm['owner_href'], "http://testserver/person/108757.json")
|
||||
self.assertEqual(m83perm['read_only'], True)
|
||||
self.assertEqual(m83perm['write_perm'], False)
|
||||
|
||||
def test_setMeetingAgendaSecretariat2(self):
|
||||
mtg83 = get_meeting(83)
|
||||
new_sched = mtg83.schedule_set.create(name="funny",
|
||||
meeting=mtg83,
|
||||
owner=mtg83.agenda.owner)
|
||||
self.assertNotEqual(mtg83.agenda, new_sched)
|
||||
|
||||
extra_headers = auth_wlo
|
||||
extra_headers['HTTP_ACCEPT']='text/json'
|
||||
|
||||
# try to create a new agenda
|
||||
resp = self.client.put('/meeting/83.json',
|
||||
data="agenda=%s" % new_sched.name,
|
||||
content_type="application/x-www-form-urlencoded",
|
||||
**extra_headers)
|
||||
self.assertEqual(resp.status_code, 200)
|
||||
|
||||
# new to reload the object
|
||||
mtg83 = get_meeting(83)
|
||||
self.assertEqual(mtg83.agenda, new_sched)
|
||||
|
51
ietf/meeting/tests/auths.py
Normal file
51
ietf/meeting/tests/auths.py
Normal file
|
@ -0,0 +1,51 @@
|
|||
import sys
|
||||
from django.test import Client
|
||||
from ietf.utils import TestCase
|
||||
#from ietf.person.models import Person
|
||||
from django.contrib.auth.models import User
|
||||
from ietf.ietfauth.decorators import has_role
|
||||
|
||||
# from http://djangosnippets.org/snippets/850/
|
||||
|
||||
auth_wlo = {'REMOTE_USER':'wnl'}
|
||||
|
||||
auth_ietfchair = {'REMOTE_USER':'rhousley'}
|
||||
|
||||
# this is a generic user who has no special role
|
||||
auth_joeblow = {'REMOTE_USER':'joeblow'}
|
||||
|
||||
# this is user who is an AD
|
||||
auth_ferrel = {'REMOTE_USER':'stephen.farrell@cs.tcd.ie'}
|
||||
|
||||
|
||||
class AuthDataTestCase(TestCase):
|
||||
# See ietf.utils.test_utils.TestCase for the use of perma_fixtures vs. fixtures
|
||||
perma_fixtures = [ 'names.xml', # ietf/names/fixtures/names.xml for MeetingTypeName, and TimeSlotTypeName
|
||||
'meeting83.json',
|
||||
'constraint83.json',
|
||||
'workinggroups.json',
|
||||
'groupgroup.json',
|
||||
'person.json', 'users.json' ]
|
||||
|
||||
def test_wlo_is_secretariat(self):
|
||||
wnl = User.objects.filter(pk = 509)[0]
|
||||
self.assertIsNotNone(wnl)
|
||||
self.assertTrue(has_role(wnl, "Secretariat"))
|
||||
|
||||
def test_housley_is_ad(self):
|
||||
rh = User.objects.filter(pk = 432)[0]
|
||||
self.assertIsNotNone(rh)
|
||||
self.assertTrue(has_role(rh, "Area Director"))
|
||||
|
||||
def test_ferrel_is_ad(self):
|
||||
sf = User.objects.filter(pk = 491)[0]
|
||||
self.assertIsNotNone(sf)
|
||||
self.assertTrue(has_role(sf, "Area Director"))
|
||||
|
||||
def test_joeblow_is_mortal(self):
|
||||
jb = User.objects.filter(pk = 99870)[0]
|
||||
self.assertIsNotNone(jb)
|
||||
self.assertFalse(has_role(jb, "Area Director"))
|
||||
self.assertFalse(has_role(jb, "Secretariat"))
|
||||
|
||||
|
42
ietf/meeting/tests/edit.py
Normal file
42
ietf/meeting/tests/edit.py
Normal file
|
@ -0,0 +1,42 @@
|
|||
import re
|
||||
import sys
|
||||
from settings import BASE_DIR
|
||||
from django.test import Client
|
||||
from ietf.utils import TestCase
|
||||
#from ietf.person.models import Person
|
||||
from django.contrib.auth.models import User
|
||||
from django.test.client import Client
|
||||
from ietf.meeting.models import TimeSlot, Session, ScheduledSession
|
||||
from auths import auth_joeblow, auth_wlo, auth_ietfchair, auth_ferrel
|
||||
|
||||
capture_output = False
|
||||
|
||||
class EditTestCase(TestCase):
|
||||
# See ietf.utils.test_utils.TestCase for the use of perma_fixtures vs. fixtures
|
||||
perma_fixtures = [ 'names.xml', # ietf/names/fixtures/names.xml for MeetingTypeName, and TimeSlotTypeName
|
||||
'meeting83.json',
|
||||
'constraint83.json',
|
||||
'workinggroups.json',
|
||||
'groupgroup.json',
|
||||
'person.json', 'users.json' ]
|
||||
|
||||
def test_getEditData(self):
|
||||
# confirm that we can get edit data from the edit interface
|
||||
resp = self.client.get('/meeting/83/schedule/edit',{},
|
||||
**auth_wlo)
|
||||
m = re.search(".*session_obj.*", resp.content)
|
||||
# to capture new output (and check it for correctness)
|
||||
if capture_output:
|
||||
out = open("%s/meeting/tests/edit_out.html" % BASE_DIR, "w")
|
||||
out.write(resp.content)
|
||||
out.close()
|
||||
self.assertIsNotNone(m)
|
||||
|
||||
def test_schedule_lookup(self):
|
||||
from ietf.meeting.views import get_meeting
|
||||
|
||||
# determine that there isn't a schedule called "fred"
|
||||
mtg = get_meeting(83)
|
||||
sched83 = mtg.get_schedule_by_name("mtg:83")
|
||||
self.assertIsNotNone(sched83, "sched83 not found")
|
||||
|
|
@ -9,3 +9,4 @@ class MeetingUrlTestCase(SimpleUrlTestCase):
|
|||
return canonicalize_feed(content)
|
||||
else:
|
||||
return content
|
||||
|
|
@ -1,5 +1,6 @@
|
|||
302 /meeting/
|
||||
200 /meeting/agenda/
|
||||
200 /meeting/agenda-utc
|
||||
200 /meeting/agenda/?_testiphone=1
|
||||
200 /meeting/agenda.html
|
||||
200 /meeting/agenda.txt
|
||||
|
@ -13,3 +14,15 @@
|
|||
404 /meeting/99/agenda.txt
|
||||
404 /meeting/99/materials.html
|
||||
200 /feed/wg-proceedings/
|
||||
200 /meeting/83/schedule/edit
|
||||
200 /meeting/83/timeslots/edit
|
||||
404 /meeting/83/timeslots/foobar
|
||||
404 /meeting/83/schedule/doesnotexist
|
||||
404 /meeting/83/schedule/doesnotexist/edit
|
||||
200 /meeting/83/agenda.ics?APP,-~Other,-~Plenary
|
||||
200 /meeting/83/agenda-utc/
|
||||
200 /meeting/83/rooms
|
||||
200 /meeting/83/room/206.json
|
||||
200 /meeting/83/timeslots
|
||||
200 /meeting/83/timeslot/2371.json
|
||||
302 /meeting/83/agendas
|
48
ietf/meeting/tests/ttest.py
Normal file
48
ietf/meeting/tests/ttest.py
Normal file
|
@ -0,0 +1,48 @@
|
|||
from django.test import TestCase
|
||||
from django.core.management import call_command
|
||||
from django.db import transaction, connections, DEFAULT_DB_ALIAS
|
||||
from django.test.testcases import connections_support_transactions, disable_transaction_methods
|
||||
|
||||
class AgendaTransactionalTestCase(TestCase):
|
||||
"""
|
||||
Does basically the same as TransactionTestCase, but surrounds every test
|
||||
with a transaction, which is started after the fixtures are loaded.
|
||||
"""
|
||||
|
||||
def _fixture_setup(self):
|
||||
if not connections_support_transactions():
|
||||
return super(TestCase, self)._fixture_setup()
|
||||
|
||||
# If the test case has a multi_db=True flag, setup all databases.
|
||||
# Otherwise, just use default.
|
||||
if getattr(self, 'multi_db', False):
|
||||
databases = connections
|
||||
else:
|
||||
databases = [DEFAULT_DB_ALIAS]
|
||||
|
||||
if not TestCase.fixtures_loaded:
|
||||
|
||||
print "Loading agenda fixtures for the first time"
|
||||
from django.contrib.sites.models import Site
|
||||
Site.objects.clear_cache()
|
||||
for db in databases:
|
||||
# should be a no-op, but another test case method might have left junk.
|
||||
call_command('flush', verbosity=0, interactive=False, database=db)
|
||||
|
||||
# BUG, if the set of fixtures changes between test cases,
|
||||
# then it might not get reloaded properly.
|
||||
if hasattr(self, 'fixtures'):
|
||||
print " fixtures: %s" % (self.fixtures)
|
||||
call_command('loaddata', *self.fixtures, **{
|
||||
'verbosity': 0,
|
||||
'commit': False,
|
||||
'database': db
|
||||
})
|
||||
TestCase.fixtures_loaded = True
|
||||
|
||||
# now start a transaction.
|
||||
for db in databases:
|
||||
transaction.enter_transaction_management(using=db)
|
||||
transaction.managed(True, using=db)
|
||||
disable_transaction_methods()
|
||||
|
43
ietf/meeting/tests/urlgen.py
Normal file
43
ietf/meeting/tests/urlgen.py
Normal file
|
@ -0,0 +1,43 @@
|
|||
import base64
|
||||
import sys
|
||||
from urlparse import urljoin
|
||||
|
||||
from django.test import Client
|
||||
from ietf.utils import TestCase
|
||||
|
||||
from django.contrib.auth.models import User
|
||||
from ietf.person.models import Person
|
||||
from ietf.meeting.models import Meeting, TimeSlot, Session, ScheduledSession
|
||||
from ietf.meeting.models import Constraint
|
||||
from ietf.group.models import Group
|
||||
|
||||
|
||||
class UrlGenTestCase(TestCase):
|
||||
# See ietf.utils.test_utils.TestCase for the use of perma_fixtures vs. fixtures
|
||||
perma_fixtures = [ 'names.xml', # ietf/names/fixtures/names.xml for MeetingTypeName, and TimeSlotTypeName
|
||||
'meeting83.json',
|
||||
'constraint83.json',
|
||||
'workinggroups.json',
|
||||
'groupgroup.json',
|
||||
'person.json', 'users.json' ]
|
||||
|
||||
def test_meetingGeneratesUrl(self):
|
||||
mtg83 = Meeting.objects.get(pk=83)
|
||||
hostport = "http://datatracker.ietf.org"
|
||||
self.assertEqual(urljoin(hostport, mtg83.json_url()), "http://datatracker.ietf.org/meeting/83.json")
|
||||
|
||||
def test_constraintGeneratesUrl(self):
|
||||
const1 = Constraint.objects.get(pk=21037)
|
||||
hostport = "http://datatracker.ietf.org"
|
||||
self.assertEqual(urljoin(hostport, const1.json_url()), "http://datatracker.ietf.org/meeting/83/constraint/21037.json")
|
||||
|
||||
def test_groupGeneratesUrl(self):
|
||||
group1 = Group.objects.get(pk=1730)
|
||||
hostport = "http://datatracker.ietf.org"
|
||||
self.assertEqual(urljoin(hostport, group1.json_url()), "http://datatracker.ietf.org/group/roll.json")
|
||||
|
||||
def test_sessionGeneratesUrl(self):
|
||||
sess1 = Session.objects.get(pk=22087)
|
||||
hostport = "http://datatracker.ietf.org"
|
||||
self.assertEqual(urljoin(hostport, sess1.json_url()), "http://datatracker.ietf.org/meeting/83/session/22087.json")
|
||||
|
171
ietf/meeting/tests/view.py
Normal file
171
ietf/meeting/tests/view.py
Normal file
|
@ -0,0 +1,171 @@
|
|||
import re
|
||||
import sys
|
||||
from django.test.client import Client
|
||||
from ietf.utils import TestCase
|
||||
#from ietf.person.models import Person
|
||||
from django.contrib.auth.models import User
|
||||
from settings import BASE_DIR
|
||||
from ietf.meeting.models import TimeSlot, Session, ScheduledSession
|
||||
from auths import auth_joeblow, auth_wlo, auth_ietfchair, auth_ferrel
|
||||
from ietf.meeting.helpers import get_meeting
|
||||
from django.core.urlresolvers import reverse
|
||||
from ietf.meeting.views import edit_agenda
|
||||
|
||||
class ViewTestCase(TestCase):
|
||||
# See ietf.utils.test_utils.TestCase for the use of perma_fixtures vs. fixtures
|
||||
perma_fixtures = [ 'names.xml', # ietf/names/fixtures/names.xml for MeetingTypeName, and TimeSlotTypeName
|
||||
'meeting83.json',
|
||||
'constraint83.json',
|
||||
'workinggroups.json',
|
||||
'groupgroup.json',
|
||||
'person.json', 'users.json' ]
|
||||
|
||||
def test_agenda83txt(self):
|
||||
# verify that the generated text has not changed.
|
||||
import io
|
||||
agenda83txtio = open("%s/meeting/tests/agenda-83-txt-output.txt" % BASE_DIR, "r")
|
||||
agenda83txt = agenda83txtio.read(); # read entire file
|
||||
resp = self.client.get('/meeting/83/agenda.txt')
|
||||
# to capture new output (and check it for correctness)
|
||||
fn = ""
|
||||
if resp.content != agenda83txt:
|
||||
fn = "%s/meeting/tests/agenda-83-txt-output-out.txt" % BASE_DIR
|
||||
out = open(fn, "w")
|
||||
out.write(resp.content)
|
||||
out.close()
|
||||
self.assertEqual(resp.content, agenda83txt, "The /meeting/83/agenda.txt page changed.\nThe newly generated agenda has been written to file: %s" % fn)
|
||||
|
||||
def test_agenda83utc(self):
|
||||
# verify that the generated html has not changed.
|
||||
import io
|
||||
agenda83utcio = open("%s/meeting/tests/agenda-83-utc-output.html" % BASE_DIR, "r")
|
||||
agenda83utc_valid = agenda83utcio.read(); # read entire file
|
||||
resp = self.client.get('/meeting/83/agenda-utc.html')
|
||||
# both agendas will have a software version indication inside a
|
||||
# comment. This will change. Remove comments before comparing.
|
||||
agenda83utc_valid = re.sub("<!-- v.*-->","", agenda83utc_valid)
|
||||
agenda83utc_response = re.sub("<!-- v.*-->","", resp.content)
|
||||
fn = ""
|
||||
# to capture new output (and check it for correctness)
|
||||
if agenda83utc_valid != agenda83utc_response:
|
||||
fn = "%s/meeting/tests/agenda-83-utc-output-out.html" % BASE_DIR
|
||||
out = open(fn, "w")
|
||||
out.write(resp.content)
|
||||
out.close()
|
||||
self.assertEqual(agenda83utc_valid, agenda83utc_response, "The /meeting/83/agenda-utc.html page changed.\nThe newly generated agenda has been written to file: %s" % fn)
|
||||
|
||||
def test_nameOfClueWg(self):
|
||||
clue_session = Session.objects.get(pk=2194)
|
||||
self.assertEqual(clue_session.short_name, "clue")
|
||||
|
||||
def test_nameOfIEPG(self):
|
||||
iepg_session = Session.objects.get(pk=2288)
|
||||
self.assertEqual(iepg_session.short_name, "IEPG Meeting")
|
||||
|
||||
def test_nameOfEdu1(self):
|
||||
edu1_session = Session.objects.get(pk=2274)
|
||||
self.assertEqual(edu1_session.short_name, "Tools for Creating Internet-Drafts Tutorial")
|
||||
|
||||
def test_js_identifier_clue(self):
|
||||
iepg_ss = ScheduledSession.objects.get(pk=2413)
|
||||
slot = iepg_ss.timeslot
|
||||
self.assertEqual(slot.js_identifier, "252b_2012-03-27_0900")
|
||||
|
||||
def test_agenda_save(self):
|
||||
#
|
||||
# determine that there isn't a schedule called "fred"
|
||||
mtg = get_meeting(83)
|
||||
fred = mtg.get_schedule_by_name("fred")
|
||||
self.assertIsNone(fred)
|
||||
#
|
||||
# move this session from one timeslot to another.
|
||||
self.client.post('/meeting/83/schedule/edit', {
|
||||
'savename': "fred",
|
||||
'saveas': "saveas",
|
||||
}, **auth_wlo)
|
||||
#
|
||||
# confirm that a new schedule has been created
|
||||
fred = mtg.get_schedule_by_name("fred")
|
||||
self.assertNotEqual(fred, None, "fred not found")
|
||||
|
||||
def test_agenda_edit_url(self):
|
||||
url = reverse(edit_agenda,
|
||||
args=['83', 'fred'])
|
||||
self.assertEqual(url, "/meeting/83/schedule/fred/edit")
|
||||
|
||||
def test_agenda_edit_visible_farrel(self):
|
||||
# farrel is an AD
|
||||
url = reverse(edit_agenda,
|
||||
args=['83', 'russ_83_visible'])
|
||||
resp = self.client.get(url, **auth_ferrel)
|
||||
# a visible agenda can be seen by any logged in AD/Secretariat
|
||||
self.assertEqual(resp.status_code, 200)
|
||||
|
||||
def test_agenda_edit_visible_joeblow(self):
|
||||
url = reverse(edit_agenda,
|
||||
args=['83', 'russ_83_visible'])
|
||||
resp = self.client.get(url, **auth_joeblow)
|
||||
# a visible agenda can not be seen unless logged in
|
||||
self.assertEqual(resp.status_code, 403)
|
||||
|
||||
def test_agenda_edit_visible_authwlo(self):
|
||||
url = reverse(edit_agenda,
|
||||
args=['83', 'russ_83_visible'])
|
||||
resp = self.client.get(url, **auth_wlo)
|
||||
# secretariat can always see things
|
||||
self.assertEqual(resp.status_code, 200)
|
||||
|
||||
def test_agenda_edit_public_farrel(self):
|
||||
# farrel is an AD
|
||||
url = reverse(edit_agenda,
|
||||
args=['83', 'mtg:83'])
|
||||
resp = self.client.get(url, **auth_ferrel)
|
||||
self.assertEqual(resp.status_code, 200) # a public agenda can be seen by any logged in AD/Secretariat
|
||||
|
||||
def test_agenda_edit_public_joeblow(self):
|
||||
url = reverse(edit_agenda,
|
||||
args=['83', 'mtg:83'])
|
||||
resp = self.client.get(url, **auth_joeblow)
|
||||
self.assertEqual(resp.status_code, 200) # a public agenda can be seen by unlogged in people (read-only) XXX
|
||||
#self.assertEqual(resp.status_code, 403) # a public agenda can not be seen by unlogged in people
|
||||
|
||||
def test_agenda_edit_public_authwlo(self):
|
||||
url = reverse(edit_agenda,
|
||||
args=['83', 'mtg:83'])
|
||||
resp = self.client.get(url, **auth_wlo)
|
||||
self.assertEqual(resp.status_code, 200) # a public agenda can be seen by the secretariat
|
||||
|
||||
def test_agenda_edit_private_russ(self):
|
||||
# farrel is an AD
|
||||
url = reverse(edit_agenda,
|
||||
args=['83', 'russ_83_inv'])
|
||||
resp = self.client.get(url, **auth_ferrel)
|
||||
# a private agenda can only be seen its owner
|
||||
self.assertEqual(resp.status_code, 403) # even a logged in AD can not see another
|
||||
|
||||
def test_agenda_edit_private_farrel(self):
|
||||
url = reverse(edit_agenda,
|
||||
args=['83', 'sf_83_invisible'])
|
||||
resp = self.client.get(url, **auth_ferrel)
|
||||
self.assertEqual(resp.status_code, 200) # a private agenda can only be seen its owner XXX
|
||||
|
||||
def test_agenda_edit_private_joeblow(self):
|
||||
url = reverse(edit_agenda,
|
||||
args=['83', 'sf_83_invisible'])
|
||||
resp = self.client.get(url, **auth_joeblow)
|
||||
self.assertEqual(resp.status_code, 403) # a private agenda can not be seen by the public
|
||||
|
||||
def test_agenda_edit_private_authwlo(self):
|
||||
url = reverse(edit_agenda,
|
||||
args=['83', 'sf_83_invisible'])
|
||||
self.assertEqual(url, "/meeting/83/schedule/sf_83_invisible/edit")
|
||||
resp = self.client.get(url, **auth_wlo)
|
||||
self.assertEqual(resp.status_code, 200) # secretariat can see any agenda, even a private one.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,15 +1,16 @@
|
|||
# Copyright The IETF Trust 2007, All Rights Reserved
|
||||
|
||||
from django.conf.urls.defaults import patterns
|
||||
from django.conf.urls.defaults import patterns, url, include
|
||||
from django.views.generic.simple import redirect_to
|
||||
|
||||
from ietf.meeting import views
|
||||
from ietf.meeting import ajax
|
||||
|
||||
urlpatterns = patterns('',
|
||||
(r'^(?P<meeting_num>\d+)/materials.html$', views.materials),
|
||||
(r'^agenda/$', views.html_agenda),
|
||||
(r'^agenda(?:.html)?$', views.html_agenda),
|
||||
(r'^agenda/$', views.agenda_html_request),
|
||||
(r'^agenda-utc(?:.html)?$', views.html_agenda_utc),
|
||||
(r'^agenda(?:.html)?$', views.agenda_html_request),
|
||||
(r'^agenda/edit$', views.edit_agenda),
|
||||
(r'^requests.html$', redirect_to, {"url": '/meeting/requests', "permanent": True}),
|
||||
(r'^requests$', views.meeting_requests),
|
||||
(r'^agenda.txt$', views.text_agenda),
|
||||
|
@ -18,17 +19,34 @@ urlpatterns = patterns('',
|
|||
(r'^agenda.csv$', views.csv_agenda),
|
||||
(r'^agenda/week-view.html$', views.week_view),
|
||||
(r'^week-view.html$', views.week_view),
|
||||
(r'^(?P<num>\d+)/agenda(?:.html)?/?$', views.html_agenda),
|
||||
(r'^(?P<num>\d+)/schedule/edit$', views.edit_agenda),
|
||||
(r'^(?P<num>\d+)/schedule/(?P<schedule_name>[A-Za-z0-9-:_]+)/edit$', views.edit_agenda),
|
||||
(r'^(?P<num>\d+)/schedule/(?P<schedule_name>[A-Za-z0-9-:_]+)/details$', views.edit_agenda_properties),
|
||||
(r'^(?P<num>\d+)/schedule/(?P<schedule_name>[A-Za-z0-9-:_]+)(?:.html)?/?$', views.agenda_html_request),
|
||||
(r'^(?P<num>\d+)/agenda(?:.html)?/?$', views.agenda_html_request),
|
||||
(r'^(?P<num>\d+)/agenda-utc(?:.html)?/?$', views.html_agenda_utc),
|
||||
(r'^(?P<num>\d+)/requests.html$', redirect_to, {"url": '/meeting/%(num)s/requests', "permanent": True}),
|
||||
(r'^(?P<num>\d+)/requests$', views.meeting_requests),
|
||||
(r'^(?P<num>\d+)/agenda.txt$', views.text_agenda),
|
||||
(r'^(?P<num>\d+)/agenda.ics$', views.ical_agenda),
|
||||
(r'^(?P<num>\d+)/agenda.csv$', views.csv_agenda),
|
||||
(r'^(?P<num>\d+)/agendas/edit$', views.edit_agendas),
|
||||
(r'^(?P<num>\d+)/timeslots/edit$', views.edit_timeslots),
|
||||
(r'^(?P<num>\d+)/rooms$', ajax.timeslot_roomsurl),
|
||||
(r'^(?P<num>\d+)/room/(?P<roomid>\d+).json$', ajax.timeslot_roomurl),
|
||||
(r'^(?P<num>\d+)/timeslots$', ajax.timeslot_slotsurl),
|
||||
(r'^(?P<num>\d+)/timeslot/(?P<slotid>\d+).json$', ajax.timeslot_sloturl),
|
||||
(r'^(?P<num>\d+)/agendas/(?P<schedule_name>[A-Za-z0-9-:_]+).json$', ajax.agenda_infourl),
|
||||
(r'^(?P<num>\d+)/agendas$', ajax.agenda_infosurl),
|
||||
(r'^(?P<num>\d+)/week-view.html$', views.week_view),
|
||||
(r'^(?P<num>\d+)/agenda/week-view.html$', views.week_view),
|
||||
(r'^(?P<num>\d+)/agenda/(?P<session>[A-Za-z0-9-]+)-drafts.pdf$', views.session_draft_pdf),
|
||||
(r'^(?P<num>\d+)/agenda/(?P<session>[A-Za-z0-9-]+)-drafts.tgz$', views.session_draft_tarfile),
|
||||
(r'^(?P<num>\d+)/agenda/(?P<session>[A-Za-z0-9-]+)/?$', views.session_agenda),
|
||||
(r'^(?P<num>\d+)/session/(?P<sessionid>\d+).json', ajax.session_json),
|
||||
(r'^(?P<num>\d+)/session/(?P<sessionid>\d+)/constraints.json', ajax.session_constraints),
|
||||
(r'^(?P<meeting_num>\d+).json$', ajax.meeting_json),
|
||||
(r'^$', views.current_materials),
|
||||
)
|
||||
|
||||
|
||||
|
|
|
@ -2,12 +2,14 @@
|
|||
|
||||
#import models
|
||||
import datetime
|
||||
import sys
|
||||
import os
|
||||
import re
|
||||
import tarfile
|
||||
|
||||
from tempfile import mkstemp
|
||||
|
||||
from django import forms
|
||||
from django.shortcuts import render_to_response, get_object_or_404
|
||||
from ietf.idtracker.models import IETFWG, IRTF, Area
|
||||
from django.http import HttpResponseRedirect, HttpResponse, Http404
|
||||
|
@ -17,27 +19,38 @@ from django.template import RequestContext
|
|||
from django.template.loader import render_to_string
|
||||
from django.conf import settings
|
||||
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
|
||||
import urllib
|
||||
|
||||
from ietf.idtracker.models import InternetDraft
|
||||
from ietf.utils.pipe import pipe
|
||||
from ietf.utils.history import find_history_active_at
|
||||
from ietf.doc.models import Document, State
|
||||
|
||||
# Old model -- needs to be removed
|
||||
from ietf.proceedings.models import Meeting as OldMeeting, MeetingTime, WgMeetingSession, MeetingVenue, IESGHistory, Proceeding, Switches
|
||||
from ietf.proceedings.models import Meeting as OldMeeting, WgMeetingSession, MeetingVenue, IESGHistory, 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.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 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
|
||||
from ietf.meeting.helpers import get_wg_list, get_meeting, get_schedule, agenda_permissions
|
||||
|
||||
|
||||
@decorator_from_middleware(GZipMiddleware)
|
||||
def materials(request, meeting_num=None):
|
||||
def materials(request, meeting_num=None, schedule_name=None):
|
||||
proceeding = get_object_or_404(Proceeding, meeting_num=meeting_num)
|
||||
begin_date = proceeding.sub_begin_date
|
||||
cut_off_date = proceeding.sub_cut_off_date
|
||||
|
@ -50,12 +63,17 @@ def materials(request, meeting_num=None):
|
|||
sub_began = 0
|
||||
if now > begin_date:
|
||||
sub_began = 1
|
||||
sessions = Session.objects.filter(meeting__number=meeting_num, timeslot__isnull=False)
|
||||
plenaries = sessions.filter(name__icontains='plenary')
|
||||
ietf = sessions.filter(group__parent__type__slug = 'area').exclude(group__acronym='edu')
|
||||
irtf = sessions.filter(group__parent__acronym = 'irtf')
|
||||
training = sessions.filter(group__acronym='edu')
|
||||
iab = sessions.filter(group__parent__acronym = 'iab')
|
||||
|
||||
meeting = get_meeting(meeting_num)
|
||||
schedule = get_schedule(meeting, schedule_name)
|
||||
|
||||
scheduledsessions = get_scheduledsessions_from_schedule(schedule)
|
||||
|
||||
plenaries = scheduledsessions.filter(session__name__icontains='plenary')
|
||||
ietf = scheduledsessions.filter(session__group__parent__type__slug = 'area').exclude(session__group__acronym='edu')
|
||||
irtf = scheduledsessions.filter(session__group__parent__acronym = 'irtf')
|
||||
training = scheduledsessions.filter(session__group__acronym='edu')
|
||||
iab = scheduledsessions.filter(session__group__parent__acronym = 'iab')
|
||||
|
||||
cache_version = Document.objects.filter(session__meeting__number=meeting_num).aggregate(Max('time'))["time__max"]
|
||||
#
|
||||
|
@ -84,104 +102,29 @@ def get_plenary_agenda(meeting_num, id):
|
|||
except WgMeetingSession.DoesNotExist:
|
||||
return "The Plenary has not been scheduled"
|
||||
|
||||
def agenda_info(num=None):
|
||||
if num:
|
||||
meetings = [ num ]
|
||||
##########################################################################################################################
|
||||
## 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:
|
||||
meetings =list(Meeting.objects.all())
|
||||
meetings.reverse()
|
||||
meetings = [ meeting.meeting_num for meeting in meetings ]
|
||||
for n in meetings:
|
||||
try:
|
||||
timeslots = MeetingTime.objects.select_related().filter(meeting=n).order_by("day_id", "time_desc")
|
||||
update = Switches.objects.get(id=1)
|
||||
meeting= OldMeeting.objects.get(meeting_num=n)
|
||||
venue = MeetingVenue.objects.get(meeting_num=n)
|
||||
break
|
||||
except (MeetingTime.DoesNotExist, Switches.DoesNotExist, OldMeeting.DoesNotExist, MeetingVenue.DoesNotExist):
|
||||
continue
|
||||
else:
|
||||
raise Http404("No meeting information for meeting %s available" % num)
|
||||
ads = list(IESGHistory.objects.select_related().filter(meeting=n))
|
||||
if not ads:
|
||||
ads = list(IESGHistory.objects.select_related().filter(meeting=str(int(n)-1)))
|
||||
ads.sort(key=(lambda item: item.area.area_acronym.acronym))
|
||||
plenaryw_agenda = get_plenary_agenda(n, -1)
|
||||
plenaryt_agenda = get_plenary_agenda(n, -2)
|
||||
return timeslots, update, meeting, venue, ads, plenaryw_agenda, plenaryt_agenda
|
||||
# GET and HEAD.
|
||||
return html_agenda(request, num, schedule_name)
|
||||
|
||||
def agenda_infoREDESIGN(num=None):
|
||||
try:
|
||||
if num != None:
|
||||
meeting = OldMeeting.objects.get(number=num)
|
||||
else:
|
||||
meeting = OldMeeting.objects.all().order_by('-date')[:1].get()
|
||||
except OldMeeting.DoesNotExist:
|
||||
raise Http404("No meeting information for meeting %s available" % num)
|
||||
|
||||
# now go through the timeslots, only keeping those that are
|
||||
# sessions/plenary/training and don't occur at the same time
|
||||
timeslots = []
|
||||
time_seen = set()
|
||||
for t in MeetingTime.objects.filter(meeting=meeting, type__in=("session", "plenary", "other")).order_by("time").select_related():
|
||||
if not t.time in time_seen:
|
||||
time_seen.add(t.time)
|
||||
timeslots.append(t)
|
||||
|
||||
update = Switches().from_object(meeting)
|
||||
venue = meeting.meeting_venue
|
||||
|
||||
ads = []
|
||||
meeting_time = datetime.datetime.combine(meeting.date, datetime.time(0, 0, 0))
|
||||
for g in Group.objects.filter(type="area").order_by("acronym"):
|
||||
history = find_history_active_at(g, meeting_time)
|
||||
if history and history != g:
|
||||
if history.state_id == "active":
|
||||
ads.extend(IESGHistory().from_role(x, meeting_time) for x in history.rolehistory_set.filter(name="ad").select_related())
|
||||
else:
|
||||
if g.state_id == "active":
|
||||
ads.extend(IESGHistory().from_role(x, meeting_time) for x in g.role_set.filter(name="ad").select_related('group', 'person'))
|
||||
|
||||
active_agenda = State.objects.get(used=True, type='agenda', slug='active')
|
||||
plenary_agendas = Document.objects.filter(session__meeting=meeting, session__timeslot__type="plenary", type="agenda", ).distinct()
|
||||
plenaryw_agenda = plenaryt_agenda = "The Plenary has not been scheduled"
|
||||
for agenda in plenary_agendas:
|
||||
if active_agenda in agenda.states.all():
|
||||
# we use external_url at the moment, should probably regularize
|
||||
# the filenames to match the document name instead
|
||||
path = os.path.join(settings.AGENDA_PATH, meeting.number, "agenda", agenda.external_url)
|
||||
try:
|
||||
f = open(path)
|
||||
s = f.read()
|
||||
f.close()
|
||||
except IOError:
|
||||
s = "THE AGENDA HAS NOT BEEN UPLOADED YET"
|
||||
|
||||
if "tech" in agenda.name.lower():
|
||||
plenaryt_agenda = s
|
||||
else:
|
||||
plenaryw_agenda = s
|
||||
|
||||
return timeslots, update, meeting, venue, ads, plenaryw_agenda, plenaryt_agenda
|
||||
|
||||
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
||||
agenda_info = agenda_infoREDESIGN
|
||||
|
||||
def get_agenda_info(request, num=None):
|
||||
def get_agenda_info(request, num=None, schedule_name=None):
|
||||
meeting = get_meeting(num)
|
||||
timeslots = TimeSlot.objects.filter(Q(meeting__id = meeting.id)).order_by('time','name')
|
||||
modified = timeslots.aggregate(Max('modified'))['modified__max']
|
||||
schedule = get_schedule(meeting, schedule_name)
|
||||
scheduledsessions = get_scheduledsessions_from_schedule(schedule)
|
||||
modified = get_modified_from_scheduledsessions(scheduledsessions)
|
||||
|
||||
area_list = timeslots.filter(type = 'Session', session__group__parent__isnull = False).order_by('session__group__parent__acronym').distinct('session__group__parent__acronym').values_list('session__group__parent__acronym',flat=True)
|
||||
area_list = get_areas()
|
||||
wg_list = get_wg_list(scheduledsessions)
|
||||
time_slices,date_slices = build_all_agenda_slices(scheduledsessions, False)
|
||||
rooms = meeting.room_set
|
||||
|
||||
wg_name_list = timeslots.filter(type = 'Session', session__group__isnull = False, session__group__parent__isnull = False).order_by('session__group__acronym').distinct('session__group').values_list('session__group__acronym',flat=True)
|
||||
return scheduledsessions, schedule, modified, meeting, area_list, wg_list, time_slices, date_slices, rooms
|
||||
|
||||
wg_list = Group.objects.filter(acronym__in = set(wg_name_list)).order_by('parent__acronym','acronym')
|
||||
|
||||
return timeslots, modified, meeting, area_list, wg_list
|
||||
|
||||
@decorator_from_middleware(GZipMiddleware)
|
||||
def html_agenda(request, num=None):
|
||||
def mobile_user_agent_detect(request):
|
||||
if settings.SERVER_MODE != 'production' and '_testiphone' in request.REQUEST:
|
||||
user_agent = "iPhone"
|
||||
elif 'user_agent' in request.REQUEST:
|
||||
|
@ -190,65 +133,302 @@ def html_agenda(request, num=None):
|
|||
user_agent = request.META["HTTP_USER_AGENT"]
|
||||
else:
|
||||
user_agent = ""
|
||||
if "iPhone" in user_agent:
|
||||
return iphone_agenda(request, num)
|
||||
|
||||
timeslots, modified, meeting, area_list, wg_list = get_agenda_info(request, num)
|
||||
return HttpResponse(render_to_string("meeting/agenda.html",
|
||||
{"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")
|
||||
return user_agent
|
||||
|
||||
@decorator_from_middleware(GZipMiddleware)
|
||||
def html_agenda_utc(request, num=None):
|
||||
if settings.SERVER_MODE != 'production' and '_testiphone' in request.REQUEST:
|
||||
user_agent = "iPhone"
|
||||
elif 'user_agent' in request.REQUEST:
|
||||
user_agent = request.REQUEST['user_agent']
|
||||
elif 'HTTP_USER_AGENT' in request.META:
|
||||
user_agent = request.META["HTTP_USER_AGENT"]
|
||||
else:
|
||||
user_agent = ""
|
||||
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)
|
||||
return iphone_agenda(request, num, schedule_name)
|
||||
|
||||
timeslots, modified, meeting, area_list, wg_list = get_agenda_info(request, num)
|
||||
return HttpResponse(render_to_string("meeting/agenda_utc.html",
|
||||
{"timeslots":timeslots, "modified": modified, "meeting":meeting,
|
||||
"area_list": area_list, "wg_list": wg_list ,
|
||||
scheduledsessions, schedule, modified, meeting, area_list, wg_list, time_slices, date_slices, rooms = get_agenda_info(request, num, schedule_name)
|
||||
areas = get_areas()
|
||||
|
||||
return HttpResponse(render_to_string(template_version,
|
||||
{"scheduledsessions":scheduledsessions,
|
||||
"rooms":rooms,
|
||||
"areas":areas,
|
||||
"time_slices":time_slices,
|
||||
"date_slices":date_slices,
|
||||
"modified": modified, "meeting":meeting,
|
||||
"area_list": area_list, "wg_list": wg_list,
|
||||
"fg_group_colors": fg_group_colors,
|
||||
"bg_group_colors": bg_group_colors,
|
||||
"show_inline": set(["txt","htm","html"]) },
|
||||
RequestContext(request)), mimetype="text/html")
|
||||
|
||||
def iphone_agenda(request, num):
|
||||
timeslots, update, meeting, venue, ads, plenaryw_agenda, plenaryt_agenda = agenda_info(num)
|
||||
def html_agenda(request, num=None, schedule_name=None):
|
||||
return html_agenda_1(request, num, schedule_name, "meeting/agenda.html")
|
||||
|
||||
groups_meeting = [];
|
||||
for slot in timeslots:
|
||||
for session in slot.sessions():
|
||||
groups_meeting.append(session.acronym())
|
||||
groups_meeting = set(groups_meeting);
|
||||
@decorator_from_middleware(GZipMiddleware)
|
||||
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)
|
||||
|
||||
@group_required('Area Director','Secretariat')
|
||||
def agenda_create(request, num=None, schedule_name=None):
|
||||
meeting = get_meeting(num)
|
||||
schedule = get_schedule(meeting, schedule_name)
|
||||
|
||||
if schedule is None:
|
||||
# here we have to return some ajax to display an error.
|
||||
raise Http404("No meeting information for meeting %s schedule %s available" % (num,schedule_name))
|
||||
|
||||
# authorization was enforced by the @group_require decorator above.
|
||||
|
||||
saveasform = SaveAsForm(request.POST)
|
||||
if not saveasform.is_valid():
|
||||
return HttpResponse(status=404)
|
||||
|
||||
savedname = saveasform.cleaned_data['savename']
|
||||
|
||||
# create the new schedule, and copy the scheduledsessions
|
||||
try:
|
||||
sched = meeting.schedule_set.get(name=savedname, owner=request.user.person)
|
||||
if sched:
|
||||
# XXX needs to record a session error and redirect to where?
|
||||
return HttpResponseRedirect(
|
||||
reverse(edit_agenda,
|
||||
args=[meeting.number, sched.name]))
|
||||
|
||||
except Schedule.DoesNotExist:
|
||||
pass
|
||||
|
||||
# must be done
|
||||
newschedule = Schedule(name=savedname,
|
||||
owner=request.user.person,
|
||||
meeting=meeting,
|
||||
visible=False,
|
||||
public=False)
|
||||
|
||||
newschedule.save()
|
||||
if newschedule is None:
|
||||
return HttpResponse(status=500)
|
||||
|
||||
# keep a mapping so that extendedfrom references can be chased.
|
||||
mapping = {};
|
||||
for ss in schedule.scheduledsession_set.all():
|
||||
# hack to copy the object, creating a new one
|
||||
# just reset the key, and save it again.
|
||||
oldid = ss.pk
|
||||
ss.pk = None
|
||||
ss.schedule=newschedule
|
||||
ss.save()
|
||||
mapping[oldid] = ss.pk
|
||||
|
||||
# now fix up any extendedfrom references to new set.
|
||||
for ss in newschedule.scheduledsession_set.all():
|
||||
if ss.extendedfrom is not None:
|
||||
ss.extendedfrom = newschedule.scheduledsession_set.get(pk = mapping[ss.extendedfrom.id])
|
||||
ss.save()
|
||||
|
||||
|
||||
# now redirect to this new schedule.
|
||||
return HttpResponseRedirect(
|
||||
reverse(edit_agenda,
|
||||
args=[meeting.number, newschedule.name]))
|
||||
|
||||
|
||||
@decorator_from_middleware(GZipMiddleware)
|
||||
def edit_timeslots(request, num=None):
|
||||
|
||||
meeting = get_meeting(num)
|
||||
timeslots = meeting.timeslot_set.exclude(location__isnull = True).all()
|
||||
|
||||
time_slices,date_slices,slots = meeting.build_timeslices()
|
||||
|
||||
meeting_base_url = request.build_absolute_uri(meeting.base_url())
|
||||
site_base_url =request.build_absolute_uri('/')
|
||||
rooms = meeting.room_set.order_by("capacity")
|
||||
rooms = rooms.all()
|
||||
|
||||
from ietf.meeting.ajax import timeslot_roomsurl, AddRoomForm, timeslot_slotsurl, AddSlotForm
|
||||
|
||||
roomsurl =reverse(timeslot_roomsurl, args=[meeting.number])
|
||||
adddayurl =reverse(timeslot_slotsurl, args=[meeting.number])
|
||||
|
||||
return HttpResponse(render_to_string("meeting/timeslot_edit.html",
|
||||
{"timeslots": timeslots,
|
||||
"meeting_base_url": meeting_base_url,
|
||||
"site_base_url": site_base_url,
|
||||
"rooms":rooms,
|
||||
"addroom": AddRoomForm(),
|
||||
"roomsurl": roomsurl,
|
||||
"addday": AddSlotForm(),
|
||||
"adddayurl":adddayurl,
|
||||
"time_slices":time_slices,
|
||||
"slot_slices": slots,
|
||||
"date_slices":date_slices,
|
||||
"meeting":meeting},
|
||||
RequestContext(request)), mimetype="text/html")
|
||||
|
||||
##############################################################################
|
||||
#@group_required('Area Director','Secretariat')
|
||||
# disable the above security for now, check it below.
|
||||
@decorator_from_middleware(GZipMiddleware)
|
||||
def edit_agenda(request, num=None, schedule_name=None):
|
||||
|
||||
if request.method == 'POST':
|
||||
return agenda_create(request, num, schedule_name)
|
||||
|
||||
user = request.user
|
||||
requestor = "AnonymousUser"
|
||||
if not user.is_anonymous():
|
||||
#print "user: %s" % (user)
|
||||
try:
|
||||
requestor = user.get_profile()
|
||||
except Person.DoesNotExist:
|
||||
# if we can not find them, leave them alone, only used for debugging.
|
||||
pass
|
||||
|
||||
meeting = get_meeting(num)
|
||||
#sys.stdout.write("requestor: %s for sched_name: %s \n" % ( requestor, schedule_name ))
|
||||
schedule = get_schedule(meeting, schedule_name)
|
||||
#sys.stdout.write("2 requestor: %u for sched owned by: %u \n" % ( requestor.id, schedule.owner.id ))
|
||||
|
||||
meeting_base_url = request.build_absolute_uri(meeting.base_url())
|
||||
site_base_url =request.build_absolute_uri('/')
|
||||
rooms = meeting.room_set.order_by("capacity")
|
||||
rooms = rooms.all()
|
||||
saveas = SaveAsForm()
|
||||
saveasurl=reverse(edit_agenda,
|
||||
args=[meeting.number, schedule.name])
|
||||
|
||||
cansee,canedit = agenda_permissions(meeting, schedule, user)
|
||||
|
||||
if not cansee:
|
||||
#sys.stdout.write("visible: %s public: %s owner: %s request from: %s\n" % (
|
||||
# schedule.visible, schedule.public, schedule.owner, requestor))
|
||||
return HttpResponse(render_to_string("meeting/private_agenda.html",
|
||||
{"schedule":schedule,
|
||||
"meeting": meeting,
|
||||
"meeting_base_url":meeting_base_url},
|
||||
RequestContext(request)), status=403, mimetype="text/html")
|
||||
|
||||
sessions = meeting.session_set.exclude(status__slug='deleted').exclude(status__slug='notmeet').order_by("id", "group", "requested_by")
|
||||
scheduledsessions = get_all_scheduledsessions_from_schedule(schedule)
|
||||
|
||||
# get_modified_from needs the query set, not the list
|
||||
modified = get_modified_from_scheduledsessions(scheduledsessions)
|
||||
|
||||
area_list = get_pseudo_areas()
|
||||
wg_name_list = get_wg_name_list(scheduledsessions)
|
||||
wg_list = get_wg_list(wg_name_list)
|
||||
|
||||
time_slices,date_slices = build_all_agenda_slices(scheduledsessions, True)
|
||||
|
||||
return HttpResponse(render_to_string("meeting/landscape_edit.html",
|
||||
{"schedule":schedule,
|
||||
"saveas": saveas,
|
||||
"saveasurl": saveasurl,
|
||||
"meeting_base_url": meeting_base_url,
|
||||
"site_base_url": site_base_url,
|
||||
"rooms":rooms,
|
||||
"time_slices":time_slices,
|
||||
"date_slices":date_slices,
|
||||
"modified": modified,
|
||||
"meeting":meeting,
|
||||
"area_list": area_list,
|
||||
"wg_list": wg_list ,
|
||||
"sessions": sessions,
|
||||
"scheduledsessions": scheduledsessions,
|
||||
"show_inline": set(["txt","htm","html"]) },
|
||||
RequestContext(request)), mimetype="text/html")
|
||||
|
||||
##############################################################################
|
||||
# show the properties associated with an agenda (visible, public)
|
||||
# this page uses ajax PUT requests to the API
|
||||
#
|
||||
AgendaPropertiesForm = modelform_factory(Schedule, fields=('name','visible', 'public'))
|
||||
|
||||
@group_required('Area Director','Secretariat')
|
||||
@decorator_from_middleware(GZipMiddleware)
|
||||
def edit_agenda_properties(request, num=None, schedule_name=None):
|
||||
|
||||
meeting = get_meeting(num)
|
||||
schedule = get_schedule(meeting, schedule_name)
|
||||
form = AgendaPropertiesForm(instance=schedule)
|
||||
|
||||
return HttpResponse(render_to_string("meeting/properties_edit.html",
|
||||
{"schedule":schedule,
|
||||
"form":form,
|
||||
"meeting":meeting},
|
||||
RequestContext(request)), mimetype="text/html")
|
||||
|
||||
##############################################################################
|
||||
# show list of agendas.
|
||||
#
|
||||
|
||||
@group_required('Area Director','Secretariat')
|
||||
@decorator_from_middleware(GZipMiddleware)
|
||||
def edit_agendas(request, num=None, order=None):
|
||||
|
||||
#if request.method == 'POST':
|
||||
# return agenda_create(request, num, schedule_name)
|
||||
|
||||
meeting = get_meeting(num)
|
||||
user = request.user
|
||||
|
||||
schedules = meeting.schedule_set
|
||||
if not has_role(user, 'Secretariat'):
|
||||
schedules = schedules.filter(visible = True) | schedules.filter(owner = user.get_profile())
|
||||
|
||||
schedules = schedules.order_by('owner', 'name')
|
||||
|
||||
return HttpResponse(render_to_string("meeting/agenda_list.html",
|
||||
{"meeting": meeting,
|
||||
"schedules": schedules.all()
|
||||
},
|
||||
RequestContext(request)),
|
||||
mimetype="text/html")
|
||||
|
||||
|
||||
##############################################################################
|
||||
def iphone_agenda(request, num, name):
|
||||
timeslots, scheduledsessions, update, meeting, venue, ads, plenaryw_agenda, plenaryt_agenda = agenda_info(num, name)
|
||||
|
||||
groups_meeting = set();
|
||||
for ss in scheduledsessions:
|
||||
if ss.session is not None:
|
||||
groups_meeting.add(ss.session.group.acronym)
|
||||
|
||||
wgs = IETFWG.objects.filter(status=IETFWG.ACTIVE).filter(group_acronym__acronym__in = groups_meeting).order_by('group_acronym__acronym')
|
||||
rgs = IRTF.objects.all().filter(acronym__in = groups_meeting).order_by('acronym')
|
||||
areas = Area.objects.filter(status=Area.ACTIVE).order_by('area_acronym__acronym')
|
||||
areas = get_areas()
|
||||
template = "meeting/m_agenda.html"
|
||||
return render_to_response(template,
|
||||
{"timeslots":timeslots, "update":update, "meeting":meeting, "venue":venue, "ads":ads,
|
||||
"plenaryw_agenda":plenaryw_agenda, "plenaryt_agenda":plenaryt_agenda,
|
||||
"wg_list" : wgs, "rg_list" : rgs, "area_list" : areas},
|
||||
{"timeslots":timeslots,
|
||||
"scheduledsessions":scheduledsessions,
|
||||
"update":update,
|
||||
"meeting":meeting,
|
||||
"venue":venue,
|
||||
"ads":ads,
|
||||
"areas":areas,
|
||||
"plenaryw_agenda":plenaryw_agenda,
|
||||
"plenaryt_agenda":plenaryt_agenda,
|
||||
"wg_list" : wgs,
|
||||
"rg_list" : rgs},
|
||||
context_instance=RequestContext(request))
|
||||
|
||||
|
||||
def text_agenda(request, num=None):
|
||||
timeslots, update, meeting, venue, ads, plenaryw_agenda, plenaryt_agenda = agenda_info(num)
|
||||
|
||||
def text_agenda(request, num=None, name=None):
|
||||
timeslots, scheduledsessions, update, meeting, venue, ads, plenaryw_agenda, plenaryt_agenda = agenda_info(num, name)
|
||||
plenaryw_agenda = " "+plenaryw_agenda.strip().replace("\n", "\n ")
|
||||
plenaryt_agenda = " "+plenaryt_agenda.strip().replace("\n", "\n ")
|
||||
|
||||
return HttpResponse(render_to_string("meeting/agenda.txt",
|
||||
{"timeslots":timeslots, "update":update, "meeting":meeting, "venue":venue, "ads":ads,
|
||||
"plenaryw_agenda":plenaryw_agenda, "plenaryt_agenda":plenaryt_agenda, },
|
||||
{"timeslots":timeslots,
|
||||
"scheduledsessions":scheduledsessions,
|
||||
"update":update,
|
||||
"meeting":meeting,
|
||||
"venue":venue,
|
||||
"ads":ads,
|
||||
"plenaryw_agenda":plenaryw_agenda,
|
||||
"plenaryt_agenda":plenaryt_agenda, },
|
||||
RequestContext(request)), mimetype="text/plain")
|
||||
|
||||
|
||||
def session_agenda(request, num, session):
|
||||
d = Document.objects.filter(type="agenda", session__meeting__number=num)
|
||||
if session == "plenaryt":
|
||||
|
@ -389,7 +569,7 @@ def session_draft_tarfile(request, num, session):
|
|||
tarstream.add(mfn, "manifest.txt")
|
||||
tarstream.close()
|
||||
os.unlink(mfn)
|
||||
return response
|
||||
return response
|
||||
|
||||
def pdf_pages(file):
|
||||
try:
|
||||
|
@ -433,13 +613,6 @@ def session_draft_pdf(request, num, session):
|
|||
os.unlink(pdfn)
|
||||
return HttpResponse(pdf_contents, mimetype="application/pdf")
|
||||
|
||||
def get_meeting(num=None):
|
||||
if (num == None):
|
||||
meeting = Meeting.objects.filter(type="ietf").order_by("-date")[:1].get()
|
||||
else:
|
||||
meeting = get_object_or_404(Meeting, number=num)
|
||||
return meeting
|
||||
|
||||
def week_view(request, num=None):
|
||||
meeting = get_meeting(num)
|
||||
timeslots = TimeSlot.objects.filter(meeting__id = meeting.id)
|
||||
|
@ -448,7 +621,7 @@ def week_view(request, num=None):
|
|||
return render_to_response(template,
|
||||
{"timeslots":timeslots,"render_types":["Session","Other","Break","Plenary"]}, context_instance=RequestContext(request))
|
||||
|
||||
def ical_agenda(request, num=None):
|
||||
def ical_agenda(request, num=None, schedule_name=None):
|
||||
meeting = get_meeting(num)
|
||||
|
||||
q = request.META.get('QUERY_STRING','') or ""
|
||||
|
@ -459,7 +632,7 @@ def ical_agenda(request, num=None):
|
|||
|
||||
# Process the special flags.
|
||||
# "-wgname" will remove a working group from the output.
|
||||
# "~Type" will add that type to the output.
|
||||
# "~Type" will add that type to the output.
|
||||
# "-~Type" will remove that type from the output
|
||||
# Current types are:
|
||||
# Session, Other (default on), Break, Plenary (default on)
|
||||
|
@ -475,13 +648,16 @@ def ical_agenda(request, num=None):
|
|||
elif item[0] == '~':
|
||||
include_types |= set([item[1:2].upper()+item[2:]])
|
||||
|
||||
timeslots = TimeSlot.objects.filter(Q(meeting__id = meeting.id),
|
||||
Q(type__name__in = include_types) |
|
||||
schedule = get_schedule(meeting, schedule_name)
|
||||
scheduledsessions = get_scheduledsessions_from_schedule(schedule)
|
||||
|
||||
scheduledsessions = scheduledsessions.filter(
|
||||
Q(timeslot__type__name__in = include_types) |
|
||||
Q(session__group__acronym__in = filter) |
|
||||
Q(session__group__parent__acronym__in = filter)
|
||||
).exclude(Q(session__group__acronym__in = exclude))
|
||||
#.exclude(Q(session__group__isnull = False),
|
||||
#Q(session__group__acronym__in = exclude) |
|
||||
#Q(session__group__acronym__in = exclude) |
|
||||
#Q(session__group__parent__acronym__in = exclude))
|
||||
|
||||
if meeting.time_zone:
|
||||
|
@ -489,9 +665,7 @@ def ical_agenda(request, num=None):
|
|||
tzfn = os.path.join(settings.TZDATA_ICS_PATH, meeting.time_zone + ".ics")
|
||||
tzf = open(tzfn)
|
||||
icstext = tzf.read()
|
||||
debug.show('icstext[:128]')
|
||||
vtimezone = re.search("(?sm)(\nBEGIN:VTIMEZONE.*\nEND:VTIMEZONE\n)", icstext).group(1).strip()
|
||||
debug.show('vtimezone[:128]')
|
||||
tzf.close()
|
||||
except IOError:
|
||||
vtimezone = None
|
||||
|
@ -499,15 +673,11 @@ def ical_agenda(request, num=None):
|
|||
vtimezone = None
|
||||
|
||||
return HttpResponse(render_to_string("meeting/agendaREDESIGN.ics",
|
||||
{"timeslots":timeslots, "meeting":meeting, "vtimezone": vtimezone },
|
||||
{"scheduledsessions":scheduledsessions, "meeting":meeting, "vtimezone": vtimezone },
|
||||
RequestContext(request)), mimetype="text/calendar")
|
||||
|
||||
def csv_agenda(request, num=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')
|
||||
|
||||
def csv_agenda(request, num=None, name=None):
|
||||
timeslots, update, meeting, venue, ads, plenaryw_agenda, plenaryt_agenda = agenda_info(num, name)
|
||||
# we should really use the Python csv module or something similar
|
||||
# rather than a template file which is one big mess
|
||||
|
||||
|
@ -526,3 +696,4 @@ def meeting_requests(request, num=None) :
|
|||
{"meeting": meeting, "sessions":sessions,
|
||||
"groups_not_meeting": groups_not_meeting},
|
||||
context_instance=RequestContext(request))
|
||||
|
||||
|
|
158
ietf/name/migrations/0016_add_slot_purposes.py
Normal file
158
ietf/name/migrations/0016_add_slot_purposes.py
Normal file
|
@ -0,0 +1,158 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
import datetime
|
||||
from south.db import db
|
||||
from south.v2 import DataMigration
|
||||
from django.db import models
|
||||
from ietf.name.models import TimeSlotTypeName
|
||||
|
||||
class Migration(DataMigration):
|
||||
|
||||
def forwards(self, orm):
|
||||
TimeSlotTypeName(slug='unavail',name='Room Unavailable',desc='A room was not booked for the timeslot indicated',used=True).save()
|
||||
TimeSlotTypeName(slug='reserved',name='Room Reserved',desc='A room has been reserved for use by another body the timeslot indicated',used=True).save()
|
||||
|
||||
def backwards(self, orm):
|
||||
pass
|
||||
|
||||
models = {
|
||||
'name.ballotpositionname': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'BallotPositionName'},
|
||||
'blocking': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.constraintname': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'ConstraintName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.docrelationshipname': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'DocRelationshipName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.docremindertypename': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'DocReminderTypeName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.doctagname': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'DocTagName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.doctypename': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'DocTypeName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.groupballotpositionname': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'GroupBallotPositionName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.groupstatename': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'GroupStateName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.grouptypename': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'GroupTypeName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.intendedstdlevelname': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'IntendedStdLevelName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.liaisonstatementpurposename': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'LiaisonStatementPurposeName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.meetingtypename': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'MeetingTypeName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.rolename': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'RoleName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.sessionstatusname': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'SessionStatusName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.stdlevelname': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'StdLevelName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.streamname': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'StreamName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'name.timeslottypename': {
|
||||
'Meta': {'ordering': "['order']", 'object_name': 'TimeSlotTypeName'},
|
||||
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
|
||||
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['name']
|
||||
symmetrical = True
|
|
@ -54,7 +54,7 @@ class MeetingTypeName(NameModel):
|
|||
class SessionStatusName(NameModel):
|
||||
"""Waiting for Approval, Approved, Waiting for Scheduling, Scheduled, Cancelled, Disapproved"""
|
||||
class TimeSlotTypeName(NameModel):
|
||||
"""Session, Break, Registration"""
|
||||
"""Session, Break, Registration, Other(Non-Session), Reserved, unavail"""
|
||||
class ConstraintName(NameModel):
|
||||
"""Conflict"""
|
||||
penalty = models.IntegerField(default=0, help_text="The penalty for violating this kind of constraint; for instance 10 (small penalty) or 10000 (large penalty)")
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
import os
|
||||
import tempfile
|
||||
|
||||
from django.test import TestCase
|
||||
from ietf.utils import TestCase
|
||||
from django.db import IntegrityError
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.core.files import File
|
||||
|
@ -25,7 +25,8 @@ from ietf.nomcom.utils import get_nomcom_by_year
|
|||
|
||||
class NomcomViewsTest(TestCase):
|
||||
"""Tests to create a new nomcom"""
|
||||
fixtures = ['names', 'nomcom_templates']
|
||||
# See ietf.utils.test_utils.TestCase for the use of perma_fixtures vs. fixtures
|
||||
perma_fixtures = ['names', 'nomcom_templates']
|
||||
|
||||
def check_url_status(self, url, status):
|
||||
response = self.client.get(url)
|
||||
|
@ -589,7 +590,8 @@ class NomcomViewsTest(TestCase):
|
|||
|
||||
class NomineePositionStateSaveTest(TestCase):
|
||||
"""Tests for the NomineePosition save override method"""
|
||||
fixtures = ['names', 'nomcom_templates']
|
||||
# See ietf.utils.test_utils.TestCase for the use of perma_fixtures vs. fixtures
|
||||
perma_fixtures = ['names', 'nomcom_templates']
|
||||
|
||||
def setUp(self):
|
||||
nomcom_test_data()
|
||||
|
@ -621,7 +623,7 @@ class NomineePositionStateSaveTest(TestCase):
|
|||
|
||||
|
||||
class FeedbackTest(TestCase):
|
||||
fixtures = ['names', 'nomcom_templates']
|
||||
perma_fixtures = ['names', 'nomcom_templates']
|
||||
|
||||
def setUp(self):
|
||||
nomcom_test_data()
|
||||
|
|
45
ietf/person/fixtures/persons.json
Normal file
45
ietf/person/fixtures/persons.json
Normal file
|
@ -0,0 +1,45 @@
|
|||
[
|
||||
{"pk":314, "model": "group.role", "fields": { "name": "chair", "group": 2, "person": 5376, "email": "housley@vigilsec.com"}},
|
||||
{"pk":1614, "model": "group.role", "fields": { "name": "secr", "group": 4, "person": 108757, "email": "wlo@amsl.com"}},
|
||||
{"pk":1623, "model": "group.role", "fields": { "name": "ad", "group": 1260, "person": 19177, "email": "stephen.farrell@cs.tcd.ie"}},
|
||||
{"pk":1634, "model": "group.role", "fields": { "name": "ad", "group": 1008, "person": 5376, "email": "housley@vigilsec.com"}},
|
||||
|
||||
{"pk": 5376, "model": "person.person", "fields": { "name": "Russ Housley", "time": "2012-02-26 00:04:18", "affiliation": "Vigil Security, LLC", "user": 432, "address": "", "ascii": "Russ Housley"}},
|
||||
{"pk": 6766, "model": "person.person", "fields": {"name": "Nevil Brownlee", "ascii_short": "", "time": "2012-02-26 00:04:03", "affiliation": "The University of Auckland", "user": 1464, "address": "", "ascii": "Nevil Brownlee"}},
|
||||
{"pk": 8669, "model": "person.person", "fields": {"name": "Jeff T. Johnson", "ascii_short": null, "time": "2012-02-26 00:04:37", "affiliation": "RedBack Networks", "user": null, "address": "", "ascii": "Jeff T. Johnson"}},
|
||||
{"pk": 14966, "model": "person.person", "fields": {"name": "Ray Pelletier", "ascii_short": null, "time": "2012-02-26 00:04:23", "affiliation": "", "user": 2208, "address": "", "ascii": "Ray Pelletier"}},
|
||||
{"pk": 18321, "model": "person.person", "fields": {"name": "Pete Resnick", "ascii_short": "", "time": "2012-02-26 00:04:04", "affiliation": "QTI, a Qualcomm company", "user": 2513, "address": "", "ascii": "Pete Resnick"}},
|
||||
{"pk": 19177, "model": "person.person", "fields": { "name": "Stephen Farrell", "time": "2012-02-26 00:04:11", "affiliation": "Trinity College Dublin", "user": 491, "ascii": "Stephen Farrell"}},
|
||||
{"pk": 19483, "model": "person.person", "fields": { "name": "Sean Turner", "time": "2012-02-26 00:04:11", "affiliation": "IECA", "user": 492, "ascii": "Sean Turner"}},
|
||||
{"pk": 21072, "model": "person.person", "fields": {"name": "Jari Arkko", "ascii_short": null, "time": "2012-02-26 00:04:23", "affiliation": "Ericsson", "user": 430, "address": "", "ascii": "Jari Arkko"}},
|
||||
{"pk": 21684, "model": "person.person", "fields": {"name": "Barry Leiba", "ascii_short": "", "time": "2012-02-26 00:03:53", "affiliation": "Huawei Technologies", "user": 500, "address": "", "ascii": "Barry Leiba"}},
|
||||
{"pk": 99871, "model": "person.person", "fields": { "name": "Joe Blow", "user": 99870, "address": "", "ascii": "Joe Blow"}},
|
||||
{"pk": 101568, "model": "person.person", "fields": {"name": "Ron Bonica", "ascii_short": "", "time": "2012-02-26 00:04:23", "affiliation": "Juniper Networks", "user": 507, "address": "241 West Meadowland Lane\r\nSterling, Virginia 20164-1147", "ascii": "Ron Bonica"}},
|
||||
{"pk": 102900, "model": "person.person", "fields": {"name": "Al C. Morton", "ascii_short": null, "time": "2012-02-26 00:03:52", "affiliation": "AT&T Labs", "user": 551, "address": "", "ascii": "Al C. Morton"}},
|
||||
{"pk": 105682, "model": "person.person", "fields": {"name": "Benoit Claise", "ascii_short": "", "time": "2012-02-26 00:03:53", "affiliation": "Cisco", "user": 740, "address": "", "ascii": "Benoit Claise"}},
|
||||
{"pk": 108757, "model": "person.person", "fields": {"name": "Wanda Lo", "ascii_short": null, "time": "2012-02-26 00:04:12", "affiliation": "", "user": 509, "address": "", "ascii": "Wanda Lo"}},
|
||||
{"pk": 112773, "model": "person.person", "fields": {"name": "Lars Eggert", "ascii_short": "Lars Eggert", "time": "2012-02-26 00:03:59", "affiliation": "NetApp", "user": 1575, "address": "", "ascii": "Lars Eggert"}},
|
||||
|
||||
{"pk": "chair@ietf.org", "model": "person.email", "fields": {"active": true, "person": null, "time": "2012-02-26 00:22:27"}},
|
||||
{"pk": "iab-chair@ietf.org", "model": "person.email", "fields": {"active": true, "person": null, "time": "2012-02-26 00:22:27"}},
|
||||
{"pk": "nomcom-chair@ietf.org", "model": "person.email", "fields": {"active": true, "person": null, "time": "2012-02-26 00:22:42"}},
|
||||
{"pk": "iad@ietf.org", "model": "person.email", "fields": {"active": true, "person": null, "time": "2012-02-26 00:22:27"}},
|
||||
{"pk": "acmorton@att.com", "model": "person.email", "fields": {"active": true, "person": 102900, "time": "1970-01-01 23:59:59"}},
|
||||
{"pk": "kaj@research.telcordia.com", "model": "person.email", "fields": {"active": true, "person": 3798, "time": "1970-01-01 23:59:59"}},
|
||||
{"pk": "jeff@redbacknetworks.com", "model": "person.email", "fields": {"active": true, "person": 8669, "time": "1970-01-01 23:59:59"}},
|
||||
|
||||
{"pk": 430, "model": "auth.user", "fields": {"username": "jari.arkko@ericsson.com", "first_name": "", "last_name": "", "is_active": true, "is_superuser": false, "is_staff": false, "last_login": "2013-09-26 03:32:16", "groups": [], "user_permissions": [], "password": "sha1$229f8$5b7f80e3c40995887a57d4ee8ad3094e99789dc1", "email": "", "date_joined": "2010-01-15 00:39:01"}},
|
||||
{"pk": 432, "model": "auth.user", "fields": {"username": "rhousley", "first_name": "", "last_name": "", "is_active": true, "is_superuser": false, "is_staff": false, "last_login": "2013-09-26 11:05:15", "groups": [], "user_permissions": [], "password": "", "email": "", "date_joined": "2010-01-16 14:45:18"}},
|
||||
{"pk": 491, "model": "auth.user", "fields": {"username": "stephen.farrell@cs.tcd.ie", "first_name": "", "last_name": "", "is_active": true, "is_superuser": false, "is_staff": false, "last_login": "2013-09-27 12:10:15", "groups": [], "user_permissions": [], "password": "", "email": "", "date_joined": "2010-08-16 17:12:35"}},
|
||||
{"pk": 492, "model": "auth.user", "fields": {"username": "tlyu@mit.edu", "first_name": "", "last_name": "", "is_active": true, "is_superuser": false, "is_staff": false, "last_login": "2012-04-26 14:08:12", "groups": [], "user_permissions": [], "password": "", "email": "", "date_joined": "2010-08-16 20:15:05"}},
|
||||
{"pk": 500, "model": "auth.user", "fields": {"username": "barryleiba@computer.org", "first_name": "", "last_name": "", "is_active": true, "is_superuser": false, "is_staff": false, "last_login": "2013-09-28 11:15:05", "groups": [], "user_permissions": [], "password": "", "email": "", "date_joined": "2010-10-31 20:54:03"}},
|
||||
{"pk": 507, "model": "auth.user", "fields": {"username": "rbonica@juniper.net", "first_name": "", "last_name": "", "is_active": true, "is_superuser": false, "is_staff": false, "last_login": "2013-03-14 19:50:11", "groups": [], "user_permissions": [], "password": "", "email": "", "date_joined": "2010-12-01 09:03:30"}},
|
||||
{"pk": 509, "model": "auth.user", "fields": {"username": "wnl", "first_name": "", "last_name": "", "is_active": true, "is_superuser": true, "is_staff": true, "last_login": "2012-10-08 09:24:38", "groups": [], "user_permissions": [], "password": "sha1$e794c$18ae7fe83e0fa2a16350568818e5a9ef3a29930b", "email": "wlo@amsl.com", "date_joined": "2010-12-02 10:52:33"}},
|
||||
{"pk": 740, "model": "auth.user", "fields": {"username": "bclaise@cisco.com", "first_name": "", "last_name": "", "is_active": true, "is_superuser": false, "is_staff": false, "last_login": "2013-09-27 01:07:42", "groups": [], "user_permissions": [], "password": "", "email": "", "date_joined": "2011-09-19 08:21:30"}},
|
||||
{"pk": 1464, "model": "auth.user", "fields": {"username": "n.brownlee@auckland.ac.nz", "first_name": "", "last_name": "", "is_active": true, "is_superuser": false, "is_staff": false, "last_login": "2013-09-25 20:27:21", "groups": [], "user_permissions": [], "password": "", "email": "", "date_joined": "2012-02-22 12:14:53"}},
|
||||
{"pk": 1521, "model": "auth.user", "fields": {"username": "wlo@amsl.com", "first_name": "", "last_name": "", "is_active": true, "is_superuser": false, "is_staff": false, "last_login": "2012-05-10 14:02:52", "groups": [], "user_permissions": [], "password": "", "email": "", "date_joined": "2012-02-22 12:14:58"}},
|
||||
{"pk": 1575, "model": "auth.user", "fields": {"username": "lars@netapp.com", "first_name": "", "last_name": "", "is_active": true, "is_superuser": false, "is_staff": false, "last_login": "2013-09-23 06:23:57", "groups": [], "user_permissions": [], "password": "", "email": "", "date_joined": "2012-02-22 12:15:08"}},
|
||||
{"pk": 2513, "model": "auth.user", "fields": {"username": "presnick@qti.qualcomm.com", "first_name": "", "last_name": "", "is_active": true, "is_superuser": false, "is_staff": false, "last_login": "2013-09-28 07:42:11", "groups": [], "user_permissions": [], "password": "sha1$58c2a$eceb1b40b4adc79f53a5c04ac552db056a93bed3", "email": "presnick@qti.qualcomm.com", "date_joined": "2012-09-24 10:16:39"}},
|
||||
{"pk": 99870, "model": "auth.user", "fields": { "username": "joeblow", "is_staff": 0, "is_active": 1, "is_superuser":0}}
|
||||
|
||||
]
|
4
ietf/person/fixtures/users.json
Normal file
4
ietf/person/fixtures/users.json
Normal file
|
@ -0,0 +1,4 @@
|
|||
[
|
||||
{"pk": 509, "model": "auth.user", "fields": {"username": "wnl", "first_name": "", "last_name": "", "is_active": true, "is_superuser": true, "is_staff": true, "last_login": "2012-10-08 09:24:38", "groups": [], "user_permissions": [], "password": "sha1$e794c$18ae7fe83e0fa2a16350568818e5a9ef3a29930b", "email": "wlo@amsl.com", "date_joined": "2010-12-02 10:52:33"}},
|
||||
{"pk": 492, "model": "auth.user", "fields": {"username": "sean", "first_name": "Sean", "last_name": "Turner", "is_active": true, "is_superuser": false, "is_staff": true, "groups": [], "user_permissions": [], "email": "sean@ietf.org", "date_joined": "2010-12-02 10:52:33"}}
|
||||
]
|
|
@ -71,12 +71,40 @@ class PersonInfo(models.Model):
|
|||
class Meta:
|
||||
abstract = True
|
||||
|
||||
class PersonManager(models.Manager):
|
||||
def by_email(self, email):
|
||||
results = self.get_query_set().filter(user__email = email)
|
||||
if len(results)>0:
|
||||
return results[0]
|
||||
else:
|
||||
return None
|
||||
def by_username(self, username):
|
||||
results = self.get_query_set().filter(user__username = username)
|
||||
if len(results)>0:
|
||||
return results[0]
|
||||
else:
|
||||
return None
|
||||
|
||||
class Person(PersonInfo):
|
||||
objects = PersonManager()
|
||||
user = models.OneToOneField(User, blank=True, null=True)
|
||||
|
||||
def person(self): # little temporary wrapper to help porting to new schema
|
||||
return self
|
||||
|
||||
def json_url(self):
|
||||
return "/person/%s.json" % (self.id, )
|
||||
|
||||
# person json not yet implemented
|
||||
#def json_dict(self, host_scheme):
|
||||
# ct1 = dict()
|
||||
# ct1['person_id'] = self.id
|
||||
# ct1['href'] = self.url(host_scheme)
|
||||
# ct1['name'] = self.name
|
||||
# ct1['ascii'] = self.ascii
|
||||
# ct1['affliation']= self.affliation
|
||||
# return ct1
|
||||
|
||||
class PersonHistory(PersonInfo):
|
||||
person = models.ForeignKey(Person, related_name="history_set")
|
||||
user = models.ForeignKey(User, blank=True, null=True)
|
||||
|
|
1
ietf/person/tests/__init__.py
Normal file
1
ietf/person/tests/__init__.py
Normal file
|
@ -0,0 +1 @@
|
|||
from persons import PersonFetchTestCase
|
25
ietf/person/tests/persons.py
Normal file
25
ietf/person/tests/persons.py
Normal file
|
@ -0,0 +1,25 @@
|
|||
import sys
|
||||
from ietf.utils import TestCase
|
||||
from ietf.group.models import Group
|
||||
from ietf.person.models import Person
|
||||
|
||||
class PersonFetchTestCase(TestCase):
|
||||
# See ietf.utils.test_utils.TestCase for the use of perma_fixtures vs. fixtures
|
||||
perma_fixtures = [ 'persons']
|
||||
|
||||
def test_FindNoPerson(self):
|
||||
one = Person.objects.by_email('wlo@amsl.org')
|
||||
self.assertEqual(one, None)
|
||||
|
||||
def test_FindOnePerson(self):
|
||||
one = Person.objects.by_email('wlo@amsl.com')
|
||||
self.assertNotEqual(one, None)
|
||||
|
||||
def test_FindOnePersonByUsername(self):
|
||||
one = Person.objects.by_username('wnl')
|
||||
self.assertNotEqual(one, None)
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -20,6 +20,7 @@ from django.db import models
|
|||
from django.conf import settings
|
||||
from ietf.idtracker.models import Acronym, PersonOrOrgInfo, IRTF, AreaGroup, Area, IETFWG
|
||||
from ietf.utils.broken_foreign_key import BrokenForeignKey
|
||||
from ietf.meeting.models import TimeSlot
|
||||
import datetime
|
||||
#from ietf.utils import log
|
||||
|
||||
|
@ -273,74 +274,6 @@ class IESGHistory(models.Model):
|
|||
verbose_name = "Meeting AD info"
|
||||
verbose_name_plural = "Meeting AD info"
|
||||
|
||||
class MeetingTime(models.Model):
|
||||
time_id = models.AutoField(primary_key=True)
|
||||
time_desc = models.CharField(max_length=100)
|
||||
meeting = models.ForeignKey(Meeting, db_column='meeting_num')
|
||||
day_id = models.IntegerField()
|
||||
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):
|
||||
"""
|
||||
Get all sessions that are scheduled at this time.
|
||||
"""
|
||||
sessions = WgMeetingSession.objects.filter(
|
||||
models.Q(sched_time_id1=self.time_id) |
|
||||
models.Q(sched_time_id2=self.time_id) |
|
||||
models.Q(sched_time_id3=self.time_id) |
|
||||
models.Q(combined_time_id1=self.time_id) |
|
||||
models.Q(combined_time_id2=self.time_id))
|
||||
for s in sessions:
|
||||
if s.sched_time_id1_id == self.time_id:
|
||||
s.room_id = s.sched_room_id1
|
||||
s.ordinality = 1
|
||||
elif s.sched_time_id2_id == self.time_id:
|
||||
s.room_id = s.sched_room_id2
|
||||
s.ordinality = 2
|
||||
elif s.sched_time_id3_id == self.time_id:
|
||||
s.room_id = s.sched_room_id3
|
||||
s.ordinality = 3
|
||||
elif s.combined_time_id1_id == self.time_id:
|
||||
s.room_id = s.combined_room_id1
|
||||
s.ordinality = 4
|
||||
elif s.combined_time_id2_id == self.time_id:
|
||||
s.room_id = s.combined_room_id2
|
||||
s.ordinality = 5
|
||||
else:
|
||||
s.room_id = 0
|
||||
s.ordinality = 0
|
||||
return sessions
|
||||
def sessions_by_area(self):
|
||||
return [ {"area":session.area()+session.acronym(), "info":session} for session in self.sessions() ]
|
||||
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()
|
||||
if reg_info.time_desc:
|
||||
return "%s %s" % (reg_info.time_desc, reg_info.name)
|
||||
else:
|
||||
return ""
|
||||
def break_info(self):
|
||||
breaks = NonSession.objects.filter(meeting=self.meeting).exclude(non_session_ref=1).filter(models.Q(day_id=self.day_id) | models.Q(day_id__isnull=True)).order_by('time_desc')
|
||||
for brk in breaks:
|
||||
if brk.time_desc[-4:] == self.time_desc[:4]:
|
||||
brk.name = brk.non_session_ref.name
|
||||
return brk
|
||||
return None
|
||||
def is_plenary(self):
|
||||
return self.session_name_id in [9, 10]
|
||||
class Meta:
|
||||
db_table = 'meeting_times'
|
||||
verbose_name = "Meeting slot time"
|
||||
|
||||
class MeetingRoom(models.Model):
|
||||
room_id = models.AutoField(primary_key=True)
|
||||
meeting = models.ForeignKey(Meeting, db_column='meeting_num')
|
||||
|
@ -385,19 +318,19 @@ class WgMeetingSession(models.Model, ResolveAcronym):
|
|||
last_modified_date = models.DateField(null=True, blank=True)
|
||||
ad_comments = models.TextField(blank=True,null=True)
|
||||
sched_room_id1 = models.ForeignKey(MeetingRoom, db_column='sched_room_id1', null=True, blank=True, related_name='here1')
|
||||
sched_time_id1 = BrokenForeignKey(MeetingTime, db_column='sched_time_id1', null=True, blank=True, related_name='now1')
|
||||
sched_time_id1 = BrokenForeignKey(TimeSlot, db_column='sched_time_id1', null=True, blank=True, related_name='now1')
|
||||
sched_date1 = models.DateField(null=True, blank=True)
|
||||
sched_room_id2 = models.ForeignKey(MeetingRoom, db_column='sched_room_id2', null=True, blank=True, related_name='here2')
|
||||
sched_time_id2 = BrokenForeignKey(MeetingTime, db_column='sched_time_id2', null=True, blank=True, related_name='now2')
|
||||
sched_time_id2 = BrokenForeignKey(TimeSlot, db_column='sched_time_id2', null=True, blank=True, related_name='now2')
|
||||
sched_date2 = models.DateField(null=True, blank=True)
|
||||
sched_room_id3 = models.ForeignKey(MeetingRoom, db_column='sched_room_id3', null=True, blank=True, related_name='here3')
|
||||
sched_time_id3 = BrokenForeignKey(MeetingTime, db_column='sched_time_id3', null=True, blank=True, related_name='now3')
|
||||
sched_time_id3 = BrokenForeignKey(TimeSlot, db_column='sched_time_id3', null=True, blank=True, related_name='now3')
|
||||
sched_date3 = models.DateField(null=True, blank=True)
|
||||
special_agenda_note = models.CharField(blank=True, max_length=255)
|
||||
combined_room_id1 = models.ForeignKey(MeetingRoom, db_column='combined_room_id1', null=True, blank=True, related_name='here4')
|
||||
combined_time_id1 = BrokenForeignKey(MeetingTime, db_column='combined_time_id1', null=True, blank=True, related_name='now4')
|
||||
combined_time_id1 = BrokenForeignKey(TimeSlot, db_column='combined_time_id1', null=True, blank=True, related_name='now4')
|
||||
combined_room_id2 = models.ForeignKey(MeetingRoom, db_column='combined_room_id2', null=True, blank=True, related_name='here5')
|
||||
combined_time_id2 = BrokenForeignKey(MeetingTime, db_column='combined_time_id2', null=True, blank=True, related_name='now5')
|
||||
combined_time_id2 = BrokenForeignKey(TimeSlot, db_column='combined_time_id2', null=True, blank=True, related_name='now5')
|
||||
def __str__(self):
|
||||
return "%s at %s" % (self.acronym(), self.meeting)
|
||||
def agenda_file(self,interimvar=0):
|
||||
|
@ -611,12 +544,11 @@ if settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
|||
MeetingOld = Meeting
|
||||
ProceedingOld = Proceeding
|
||||
MeetingVenueOld = MeetingVenue
|
||||
MeetingTimeOld = MeetingTime
|
||||
WgMeetingSessionOld = WgMeetingSession
|
||||
SlideOld = Slide
|
||||
SwitchesOld = Switches
|
||||
IESGHistoryOld = IESGHistory
|
||||
from ietf.meeting.proxy import MeetingProxy as Meeting, ProceedingProxy as Proceeding, MeetingVenueProxy as MeetingVenue, MeetingTimeProxy as MeetingTime, WgMeetingSessionProxy as WgMeetingSession, SlideProxy as Slide, SwitchesProxy as Switches, IESGHistoryProxy as IESGHistory
|
||||
from ietf.meeting.proxy import MeetingProxy as Meeting, ProceedingProxy as Proceeding, MeetingVenueProxy as MeetingVenue, WgMeetingSessionProxy as WgMeetingSession, SlideProxy as Slide, SwitchesProxy as Switches, IESGHistoryProxy as IESGHistory
|
||||
|
||||
# changes done by convert-096.py:changed maxlength to max_length
|
||||
# removed core
|
||||
|
|
|
@ -5,7 +5,7 @@ when you run "manage.py test".
|
|||
Replace this with more appropriate tests for your application.
|
||||
"""
|
||||
|
||||
from django.test import TestCase
|
||||
from ietf.utils import TestCase
|
||||
|
||||
|
||||
class SimpleTest(TestCase):
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
from django.db import connection
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.test import TestCase
|
||||
from ietf.utils import TestCase
|
||||
from django.contrib.auth.models import User
|
||||
|
||||
from ietf.group.models import Group
|
||||
|
@ -22,7 +22,8 @@ AD_USER=''
|
|||
|
||||
|
||||
class MainTestCase(TestCase):
|
||||
fixtures = ['names']
|
||||
# See ietf.utils.test_utils.TestCase for the use of perma_fixtures vs. fixtures
|
||||
perma_fixtures = ['names']
|
||||
|
||||
# ------- Test View -------- #
|
||||
def test_main(self):
|
||||
|
@ -34,22 +35,20 @@ class MainTestCase(TestCase):
|
|||
|
||||
class DummyCase(TestCase):
|
||||
name = connection.settings_dict['NAME']
|
||||
print name
|
||||
|
||||
class UnauthorizedCase(TestCase):
|
||||
fixtures = ['names']
|
||||
perma_fixtures = ['names']
|
||||
|
||||
def test_unauthorized(self):
|
||||
"Unauthorized Test"
|
||||
draft = make_test_data()
|
||||
url = reverse('announcement')
|
||||
# get random working group chair
|
||||
person = Person.objects.filter(role__group__type='wg')[0]
|
||||
person = Person.objects.filter(role__group__acronym='mars')[0]
|
||||
r = self.client.get(url,REMOTE_USER=person.user)
|
||||
self.assertEquals(r.status_code, 403)
|
||||
|
||||
class SubmitCase(TestCase):
|
||||
fixtures = ['names']
|
||||
perma_fixtures = ['names']
|
||||
|
||||
def test_invalid_submit(self):
|
||||
"Invalid Submit"
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue