-{% if can_make_last_call %}
-Make Last Call
-{% endif %}
-
-{% if can_announce %}
-Approve ballot
-{% endif %}
-
-{% endif %}
-{% endblock%}
diff --git a/ietf/templates/idrfc/doc_tab_document.html b/ietf/templates/idrfc/doc_tab_document.html
index 62256bb3a..e4f91e1bd 100644
--- a/ietf/templates/idrfc/doc_tab_document.html
+++ b/ietf/templates/idrfc/doc_tab_document.html
@@ -58,7 +58,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
{% else %}
{% if stream_info.stream.name == 'ISE' or stream_info.stream.name == 'IRTF' %}
{% if user|in_group:"Secretariat" and not info.conflict_reviews %}
-{% url conflict_review_start name=doc.draft_name as start_review_url %}{% if start_review_url %}Begin IETF Conflict Review{% endif %}
+{% url conflict_review_start name=doc.draft_name as start_review_url %}{% if start_review_url %}Begin IETF Conflict Review {% if not doc.underlying_document.intended_std_level %}(note that intended status is not set){% endif %}{% endif %}
{% endif %}
{% else %}
{% if stream_info.stream.name == 'IETF'%}{%if not doc.in_ietf_process %}
diff --git a/ietf/templates/idrfc/doc_tab_document_id.html b/ietf/templates/idrfc/doc_tab_document_id.html
index 90a621879..ef8e4107a 100644
--- a/ietf/templates/idrfc/doc_tab_document_id.html
+++ b/ietf/templates/idrfc/doc_tab_document_id.html
@@ -58,7 +58,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/ietf/templates/meeting/week-view.html b/ietf/templates/meeting/week-view.html
index ddb4384dc..8b68e9b9f 100644
--- a/ietf/templates/meeting/week-view.html
+++ b/ietf/templates/meeting/week-view.html
@@ -9,7 +9,7 @@ var items = new Array();
{% autoescape off %}
{% for slot in timeslots %} {% if slot.type.name in render_types %}
-items.push({day:{{slot.time|date:"w"}}, time:"{{slot.time|date:"Hi"}}-{{slot.end_time|date:"Hi"}}", duration:{{slot.duration.seconds}}, time_id:"{{slot.time|date:"mdHi"}}", type:"{{slot.type}}", {% if slot.session.name %}name:"{{slot.session.name}}",{% else %}{% if slot.type.name == "Break" %}name:"{{slot.name}}", area:"break", wg:"break",{% else %}name:"{{slot.session.group.name}}{%if slot.session.group.state.name = "BOF"%} BOF{%endif%}",wg:"{{slot.session.group.acronym}}",area:"{{slot.session.group.parent.acronym}}",{% endif %}{% endif %} {% if slot.show_location %}room:"{{slot.get_location}}",{% endif %} dayname:"{{ slot.time|date:"l"|upper }}, {{ slot.time|date:"F j, Y" }}"{% if slot.session.agenda %}, agenda:"http://www.ietf.org{{slot.session.agenda.get_absolute_url}}"{% endif %} });{% endif %}{% endfor %}
+items.push({key:"{{slot.pk}}",day:{{slot.time|date:"w"}}, time:"{{slot.time|date:"Hi"}}-{{slot.end_time|date:"Hi"}}", duration:{{slot.duration.seconds}}, time_id:"{{slot.time|date:"mdHi"}}", type:"{{slot.type}}", {% if slot.session.name %}name:"{{slot.session.name}}",{% if slot.session.group.acronym %} wg:"{{slot.session.group.acronym}}",{%endif%}{% else %}{% if slot.type.name == "Break" %}name:"{{slot.name}}", area:"break", wg:"break",{% else %}name:"{{slot.session.group.name}}{%if slot.session.group.state.name = "BOF"%} BOF{%endif%}",wg:"{{slot.session.group.acronym}}",state:"{{slot.session.group.state}}",area:"{{slot.session.group.parent.acronym}}",{% endif %}{% endif %} {% if slot.show_location %}room:"{{slot.get_location}}",{% endif %} dayname:"{{ slot.time|date:"l"|upper }}, {{ slot.time|date:"F j, Y" }}"{% if slot.session.agenda %}, agenda:"http://www.ietf.org{{slot.session.agenda.get_absolute_url}}"{% endif %} });{% endif %}{% endfor %}
{% endautoescape %}
/* Saturday events need to be moved to the day -1 */
@@ -63,8 +63,40 @@ var lastwidth;
var padding = 2;
var border = 1;
+var include = Array();
+
setInterval("animate()",50);
+function is_visible(item)
+{
+ // "-wgname" will remove a working group from the output.
+ // "~Type" will add that type to the output.
+ // "-~Type" will remove that type from the output
+ // "@bof" will include all BOFs
+ // Current types are:
+ // Session, Other, Break, Plenary
+
+ if ("wg" in item)
+ {
+ if (include[(item.wg).toLowerCase()]) { return true; }
+ if (include["-"+(item.wg).toLowerCase()]) { return false; }
+ }
+ if ("state" in item)
+ {
+ if (include["@"+(item.state).toLowerCase()]) { return true; }
+ }
+ if (include["~"+(item.type).toLowerCase()]) { return true; }
+ if (include["-~"+(item.type).toLowerCase()]) { return false; }
+ if ("area" in item)
+ {
+ if (include[(item.area).toLowerCase()]) { return true; }
+ }
+ if (item.type === "Plenary") { return true; }
+ if (item.type === "Other") { return true; }
+
+ return false;
+}
+
function draw_calendar()
{
window.setTimeout("draw_calendar()",1000);
@@ -88,7 +120,7 @@ function draw_calendar()
var day_start = 0;
var day_end = 0;
- var include = Array();
+ include = [];
var frag = window.location.hash.replace("#",'').split(',');
for (i = 0; i < frag.length; i++)
@@ -99,8 +131,11 @@ function draw_calendar()
/* Find our boundaries */
for (i = 0; i < items.length; i++)
{
+ if (is_visible(items[i]))
+ /*
if (!("wg" in items[i]) || (include[(items[i].wg).toLowerCase()]
|| include[(items[i].area).toLowerCase()]))
+ */
{
var start_time = parseInt(items[i].time.substr(0,2),10) * 60 +
parseInt(items[i].time.substr(2,2),10);
@@ -207,8 +242,11 @@ function draw_calendar()
for (i = 0; i < items.length; i++)
{
- if (!("wg" in items[i])|| (include[(items[i].wg).toLowerCase()]
+ if (is_visible(items[i]))
+ /*
+ if (!("wg" in items[i]) || (include[(items[i].wg).toLowerCase()]
|| include[(items[i].area).toLowerCase()]))
+ */
{
var start_time = parseInt(items[i].time.substr(0,2),10) * 60 +
parseInt(items[i].time.substr(2,2),10);
diff --git a/ietf/wgchairs/tests.py b/ietf/wgchairs/tests.py
index 7e9275d27..14b77a0e0 100644
--- a/ietf/wgchairs/tests.py
+++ b/ietf/wgchairs/tests.py
@@ -287,13 +287,13 @@ class ManageWriteupTestCase(django.test.TestCase):
confirm="1",
followup="1",
comment="Starting on write up",
- modify_tag="Modify"))
+ complete_tag="Modify"))
self.assertEquals(r.status_code, 200)
e = draft.latest_event(WriteupDocEvent, type="changed_protocol_writeup")
self.assertTrue(e)
self.assertEquals(e.text, "New writeup")
self.assertEquals(e.by.user.username, "secretary")
- self.assertTrue(draft.tags.filter(slug="sheph-u"))
+ self.assertFalse(draft.tags.filter(slug="sheph-u"))
if not settings.USE_DB_REDESIGN_PROXY_CLASSES:
diff --git a/magic.py b/magic.py
new file mode 100644
index 000000000..41a42ee55
--- /dev/null
+++ b/magic.py
@@ -0,0 +1,204 @@
+#!/usr/bin/env python
+'''
+Python bindings for libmagic
+'''
+
+import ctypes
+
+from ctypes import *
+from ctypes.util import find_library
+
+def _init():
+ """
+ Loads the shared library through ctypes and returns a library
+ L{ctypes.CDLL} instance
+ """
+ return ctypes.cdll.LoadLibrary(find_library('magic'))
+
+_libraries = {}
+_libraries['magic'] = _init()
+
+# Flag constants for open and setflags
+MAGIC_NONE = NONE = 0
+MAGIC_DEBUG = DEBUG = 1
+MAGIC_SYMLINK = SYMLINK = 2
+MAGIC_COMPRESS = COMPRESS = 4
+MAGIC_DEVICES = DEVICES = 8
+MAGIC_MIME_TYPE = MIME_TYPE = 16
+MAGIC_CONTINUE = CONTINUE = 32
+MAGIC_CHECK = CHECK = 64
+MAGIC_PRESERVE_ATIME = PRESERVE_ATIME = 128
+MAGIC_RAW = RAW = 256
+MAGIC_ERROR = ERROR = 512
+MAGIC_MIME_ENCODING = MIME_ENCODING = 1024
+MAGIC_MIME = MIME = 1040
+MAGIC_APPLE = APPLE = 2048
+
+MAGIC_NO_CHECK_COMPRESS = NO_CHECK_COMPRESS = 4096
+MAGIC_NO_CHECK_TAR = NO_CHECK_TAR = 8192
+MAGIC_NO_CHECK_SOFT = NO_CHECK_SOFT = 16384
+MAGIC_NO_CHECK_APPTYPE = NO_CHECK_APPTYPE = 32768
+MAGIC_NO_CHECK_ELF = NO_CHECK_ELF = 65536
+MAGIC_NO_CHECK_TEXT = NO_CHECK_TEXT = 131072
+MAGIC_NO_CHECK_CDF = NO_CHECK_CDF = 262144
+MAGIC_NO_CHECK_TOKENS = NO_CHECK_TOKENS = 1048576
+MAGIC_NO_CHECK_ENCODING = NO_CHECK_ENCODING = 2097152
+
+MAGIC_NO_CHECK_BUILTIN = NO_CHECK_BUILTIN = 4173824
+
+class magic_set(Structure):
+ pass
+magic_set._fields_ = []
+magic_t = POINTER(magic_set)
+
+_open = _libraries['magic'].magic_open
+_open.restype = magic_t
+_open.argtypes = [c_int]
+
+_close = _libraries['magic'].magic_close
+_close.restype = None
+_close.argtypes = [magic_t]
+
+_file = _libraries['magic'].magic_file
+_file.restype = c_char_p
+_file.argtypes = [magic_t, c_char_p]
+
+_descriptor = _libraries['magic'].magic_descriptor
+_descriptor.restype = c_char_p
+_descriptor.argtypes = [magic_t, c_int]
+
+_buffer = _libraries['magic'].magic_buffer
+_buffer.restype = c_char_p
+_buffer.argtypes = [magic_t, c_void_p, c_size_t]
+
+_error = _libraries['magic'].magic_error
+_error.restype = c_char_p
+_error.argtypes = [magic_t]
+
+_setflags = _libraries['magic'].magic_setflags
+_setflags.restype = c_int
+_setflags.argtypes = [magic_t, c_int]
+
+_load = _libraries['magic'].magic_load
+_load.restype = c_int
+_load.argtypes = [magic_t, c_char_p]
+
+_compile = _libraries['magic'].magic_compile
+_compile.restype = c_int
+_compile.argtypes = [magic_t, c_char_p]
+
+_check = _libraries['magic'].magic_check
+_check.restype = c_int
+_check.argtypes = [magic_t, c_char_p]
+
+_list = _libraries['magic'].magic_list
+_list.restype = c_int
+_list.argtypes = [magic_t, c_char_p]
+
+_errno = _libraries['magic'].magic_errno
+_errno.restype = c_int
+_errno.argtypes = [magic_t]
+
+class Magic(object):
+ def __init__(self, ms):
+ self._magic_t = ms
+
+ def close(self):
+ """
+ Closes the magic database and deallocates any resources used.
+ """
+ _close(self._magic_t)
+
+ def file(self, file):
+ """
+ Returns a textual description of the contents of the argument passed
+ as a filename or None if an error occurred and the MAGIC_ERROR flag
+ is set. A call to errno() will return the numeric error code.
+ """
+ return _file(self._magic_t, file)
+
+ def descriptor(self, fd):
+ """
+ Like the file method, but the argument is a file descriptor.
+ """
+ return _descriptor(self._magic_t, fd)
+
+ def buffer(self, buf):
+ """
+ Returns a textual description of the contents of the argument passed
+ as a buffer or None if an error occurred and the MAGIC_ERROR flag
+ is set. A call to errno() will return the numeric error code.
+ """
+ return _buffer(self._magic_t, buf, len(buf))
+
+ def error(self):
+ """
+ Returns a textual explanation of the last error or None
+ if there was no error.
+ """
+ return _error(self._magic_t)
+
+ def setflags(self, flags):
+ """
+ Set flags on the magic object which determine how magic checking behaves;
+ a bitwise OR of the flags described in libmagic(3), but without the MAGIC_
+ prefix.
+
+ Returns -1 on systems that don't support utime(2) or utimes(2)
+ when PRESERVE_ATIME is set.
+ """
+ return _setflags(self._magic_t, flags)
+
+ def load(self, file=None):
+ """
+ Must be called to load entries in the colon separated list of database files
+ passed as argument or the default database file if no argument before
+ any magic queries can be performed.
+
+ Returns 0 on success and -1 on failure.
+ """
+ return _load(self._magic_t, file)
+
+ def compile(self, dbs):
+ """
+ Compile entries in the colon separated list of database files
+ passed as argument or the default database file if no argument.
+ Returns 0 on success and -1 on failure.
+ The compiled files created are named from the basename(1) of each file
+ argument with ".mgc" appended to it.
+ """
+ return _compile(self._magic_t, dbs)
+
+ def check(self, dbs):
+ """
+ Check the validity of entries in the colon separated list of
+ database files passed as argument or the default database file
+ if no argument.
+ Returns 0 on success and -1 on failure.
+ """
+ return _check(self._magic_t, dbs)
+
+ def list(self, dbs):
+ """
+ Check the validity of entries in the colon separated list of
+ database files passed as argument or the default database file
+ if no argument.
+ Returns 0 on success and -1 on failure.
+ """
+ return _list(self._magic_t, dbs)
+
+ def errno(self):
+ """
+ Returns a numeric error code. If return value is 0, an internal
+ magic error occurred. If return value is non-zero, the value is
+ an OS error code. Use the errno module or os.strerror() can be used
+ to provide detailed error information.
+ """
+ return _errno(self._magic_t)
+
+def open(flags):
+ """
+ Returns a magic object on success and None on failure.
+ Flags argument as for setflags.
+ """
+ return Magic(_open(flags))