def ensure_category(cat_name, ord=100): """ Look for the record (or create one, if None) "Others" in Categories. """ cat= RM.get_element(AuthorityCategory, report=False, name=cat_name) if not cat: cat= RM.create_element(AuthorityCategory, False, name=cat_name, order=ord) return cat
def get_category_old(rec): """ Try to find Territory code (TERYT) by given parameters. """ # Trying to find Territory Type. try: category_type= RM.get_element(TerritoryType, report=False, name__in=TYPE_MAP[rec['typ']]) except Exception as e: print "Cannot even find Territory Type for the record %s - %s, here is what system says:\n%s" % ( rec['num'], rec['address_city'], e) return None # Trying to find territory (category). # First try to find by name. # 1. WHERE name = ... category= RM.get_elements(Territory, report=False, name=rec['address_city'], type=category_type) # If 'name =' doesn't work, try 'slug like' (more chances) # 2. WHERE slug LIKE '...%' if len(category) == 0: category= RM.get_elements(Territory, report=False, slug__startswith=rec['slug'], type=category_type) # If slug doesn't work, try name variations. # 3. WHERE name IN (... if len(category) == 0: category= RM.get_elements(Territory, report=False, name__in=rec['name_lookup'], type=category_type) if len(category) == 0: # Now it's really nothing return None elif len(category) == 1: return category[0] elif len(category) > 1: # Search for category in the returned records. for tr in category: woj= rec['woj'] pow= rec['pow'] if tr.parent.name.encode('utf-8') in [woj, pow]: return tr.parent print "WARNING! More than one category found for %s - %s (placed under the category `%s`)!" % ( rec['address_city'], rec['num'], OTHERS_NAME) for tr in category: print '%s%s' % (' ' * 4, tr) return None else: print "Wow, that's weird: the number of records returned by query is %s!" % len(category) return None
def create_element(record, category): """ Creating new Authority record. """ for k in ('num', 'teryt_name', 'woj', 'pow', 'typ', 'post_office', 'name_lookup'): del record[k] # Remove unnecessary keys. record['category']= category # Add category. new_record= RM.create_element(AuthorityProfile, verbose=True, **record) return new_record
def get_category(rec, cat_territory): """ Find or create Category in Territories. cat_territory - global parent of all Territories in AuthorityCategory. """ try: category_type= RM.get_element(TerritoryType, report=False, name__in=TYPE_MAP[rec['typ']]) except Exception as e: print "Cannot even find Territory Type for the record %s - %s, here is what system says:\n%s" % ( rec['num'], rec['address_city'], e) return None # Define Wojewodstwo. type1= RM.create_element(TerritoryType, verbose=False, name=TYPE_MAP['WJ'][0]) territory1= RM.create_element(Territory, verbose=False, name=upper_diacr(rec['woj']), type=type1, parent=cat_territory) # Define Powiat. type2= RM.create_element(TerritoryType, verbose=False, name=TYPE_MAP['PZ'][0]) # Always powiat! territory2= RM.create_element(Territory, verbose=False, name=rec['pow'].strip(), type=type2, parent=territory1) return territory2