def set_doc_registry_number(doc): """A doc's registry_number should be set on the item being submitted to parliament. """ # never overwrite a previously set registry_number if doc.registry_number is not None: log.warn("Ignoring attempt to reset doc [%s] registry_number [%s]" % (doc, doc.registry_number)) return mask = get_mask(doc) if mask == "manual" or mask is None: return # ensure that sequences are updated -- independently of whether these are # used by the mask string templates! #registry_number_general = dbutils.get_next_reg() # all docs #registry_number_specific = dbutils.get_next_prog(doc) # per doc type registry_count_general, registry_count_specific = \ dbutils.get_registry_counts(doc.__class__) registry_number_general = 1 + registry_count_general registry_number_specific = 1 + registry_count_specific type_key = doc.type # !+ why not just use string.Template ?! items = re.findall(r"\{(\w+)\}", mask) for name in items: if name == "registry_number": mask = mask.replace("{%s}" % name, str(registry_number_general)) if name == "progressive_number": mask = mask.replace("{%s}" % name, str(registry_number_specific)) if name == "type": mask = mask.replace("{%s}" % name, type_key) doc.registry_number = mask
def set_doc_registry_number(doc): """A doc's registry_number should be set on the item being submitted to parliament. """ # never overwrite a previously set registry_number if doc.registry_number is not None: log.warn("Ignoring attempt to reset doc [%s] registry_number [%s]" % ( doc, doc.registry_number)) return mask = get_mask(doc) if mask == "manual" or mask is None: return # ensure that sequences are updated -- independently of whether these are # used by the mask string templates! #registry_number_general = dbutils.get_next_reg() # all docs #registry_number_specific = dbutils.get_next_prog(doc) # per doc type registry_count_general, registry_count_specific = \ dbutils.get_registry_counts(doc.__class__) registry_number_general = 1 + registry_count_general registry_number_specific = 1 + registry_count_specific type_key = doc.type # !+ why not just use string.Template ?! items = re.findall(r"\{(\w+)\}", mask) for name in items: if name == "registry_number": mask = mask.replace("{%s}" % name, str(registry_number_general)) if name == "progressive_number": mask = mask.replace("{%s}" % name, str(registry_number_specific)) if name == "type": mask = mask.replace("{%s}" % name, type_key) doc.registry_number = mask