Beispiel #1
0
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
Beispiel #2
0
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
Beispiel #3
0
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
Beispiel #4
0
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