示例#1
0
 def test_get_main_address(self):
     domeciles = DomecileFactory.build_batch(
         3,
         address_2='34',
         postcode='DD2 9XE',
         postcode_point__postcode='DD29XE')
     domeciles[0].address_1 = 'Flat 16'
     domeciles[1].address_1 = 'Flat 17'
     domeciles[2].address_1 = 'Flat 18'
     with mock.patch('core.models.Domecile.objects.filter') as my_mock:
         my_mock.return_value = domeciles
         test_result = Domecile.get_main_address(domeciles[0].postcode)
         my_mock.assert_called_with(postcode=domeciles[0].postcode)
         self.assertEqual(test_result.prefix, 'Flat')
         self.assertEqual(test_result.suffix, '34 Snookit Street Dundee')
         domeciles[0].address_1 = 'Flat'
         test_result = Domecile.get_main_address(domeciles[0].postcode)
         self.assertEqual(test_result.prefix, 'Flat')
         self.assertEqual(test_result.suffix, '34 Snookit Street Dundee')
         domeciles[2].address_2 = '33'
         test_result = Domecile.get_main_address(domeciles[0].postcode)
         self.assertEqual(test_result.prefix, 'Flat')
         self.assertEqual(test_result.suffix, 'Snookit Street Dundee')
         domeciles[0].address_1 = ''
         test_result = Domecile.get_main_address(domeciles[0].postcode)
         self.assertEqual(test_result.prefix, '')
         self.assertEqual(test_result.suffix, 'Snookit Street Dundee')
示例#2
0
def domecile_list_to_string(domecile_list):
    from core.models import Domecile
    domecile_list = sorted(domecile_list, key=domecile_key)

    if len(domecile_list) == 1:
        return unicode(domecile_list[0])
    elif len(domecile_list) == 0:
        return ''

    # Find out if they're all even, or odd numbers
    number_types = ''
    domecile_indices = [consume_int(x.address_2) for x in domecile_list]
    comparisons = [x % 2 for x in domecile_indices]
    if all([x == 1 for x in comparisons]):
        number_types = '(Odds)'
    elif all([x == 0 for x in comparisons]):
        number_types = '(Evens)'

    first_index = 0
    for i, domecile in enumerate(domecile_list):
        if consume_int(domecile.address_2) > 0:
            first_index = i
            break

    first_domecile = domecile_list[first_index]
    suffix = Domecile.get_main_address(first_domecile.postcode).suffix
    # suffix = ", ".join(y for y in [first_domecile.address_4, first_domecile.address_5, first_domecile.address_6,
    #                                 first_domecile.postcode] if y)
    return " ".join(x for x in [
        str(consume_int(first_domecile.address_2)) + "-" +
        str(consume_int(domecile_list[-1].address_2)),
        number_types,
        suffix,
    ] if x), len(domecile_list)
示例#3
0
def separate_contacts_and_domiciles(line):
    domecile = {
        key.replace('Domecile.', ''): y
        for key, y in line.items() if 'Domecile.' in key
    }
    try:
        matched = Domecile.objects.get(
            **{
                key.replace('Domecile.', ''): y
                for key, y in line.items() if 'Domecile.' in key
            })
    except Domecile.DoesNotExist:
        matched = Domecile(**domecile)
        matched.save()
    contact = {
        key.replace('Contact.', ''): y
        for key, y in line.items() if 'Contact.' in key
    }
    contact = Contact(**contact)
    contact.domecile = matched
    return contact
示例#4
0
文件: views.py 项目: scotm/canvassing
def domecile_map_view(request):
    if 'region' in request.GET:
        klass = Region
        area = request.GET['region']
    elif 'ward' in request.GET:
        klass = Ward
        area = request.GET['ward']
    else:
        return JsonResponse(data={})
    bbox = request.GET['BBox'].split(',')
    query_type = request.GET['query_type']
    data = Domecile.get_postcode_points(southwest=(bbox[0], bbox[1]),
                                        northeast=(bbox[2], bbox[3]),
                                        region=klass.objects.get(pk=int(area)),
                                        query_type=query_type)
    for i in data:
        i['point'][0] = round(i['point'][0], 6)
        i['point'][1] = round(i['point'][1], 6)
    return JsonResponse(data={'data': data})
示例#5
0
文件: views.py 项目: scotm/canvassing
def domecile_address_view(request):
    from postcode_locator.models import PostcodeMapping
    if not request.GET.get('postcode', None):
        return JsonResponse(data={})
    try:
        summary = Domecile.get_summary_of_postcode(request.GET['postcode'])
        contacts_count = Contact.objects.filter(
            domecile__postcode_point=PostcodeMapping.match_postcode(
                request.GET['postcode'])).count()
        data = {
            'postcode': request.GET['postcode'],
            'summary': summary[0],
            'buildings': summary[1],
            'contacts': contacts_count
        }
    except:
        data = {
            'postcode': request.GET['postcode'],
            'summary': 'No data found',
            'buildings': 0,
            'contacts': 0
        }
    return JsonResponse(data=data)
示例#6
0
 def test_get_main_address_none(self):
     with mock.patch('core.models.Domecile.objects.filter') as my_mock:
         my_mock.return_value = []
         test_result = Domecile.get_main_address('EH6 4SZ')
         self.assertEqual(test_result, None)
         my_mock.assert_called_with(postcode='EH6 4SZ')
示例#7
0
 def test_domecile_lists(self):
     d = Domecile.get_sorted_addresses(self.contact.domecile.postcode)
     ContactFactory.create_batch(5)
     self.assertEqual(
         d, Domecile.get_sorted_addresses(self.contact.domecile.postcode))