示例#1
0
def process_item(item):
    # Extract infos
    addr = item['address']
    canton = addr['canton']
    locality = addr['locality']
    lat = addr['latitude']
    lng = addr['longitude']
    address = addr['formatted_address']
    # Remove dots from phid. This cause some bugs with django/tastypie urls
    raw_phid = item['phid']
    phid = re.sub('[\W_]', '', item['phid'])
    shortname = item['shortname']
    url = urlparse.urljoin(ZIVI_DOMAIN, item['url'])

    # Create or update into DB
    addr, created = Address.objects.get_or_create(canton=canton,
            locality=locality, defaults={'latitude':lat, 'longitude':lng})
    # Now, the address of the workspec might have changed, in which case
    # we need to delete the old workspec and create a new one
    try:
        ws = WorkSpec.objects.get(phid=phid)
        ws.address = addr
    except WorkSpec.DoesNotExist:
        ws = WorkSpec(phid=phid, address=addr)
    ws.raw_phid = raw_phid
    ws.shortname = shortname
    ws.url = url
    ws.institution_name = item['institution_name']
    ws.institution_description = item['institution_description']
    ws.job_title = item['job_title']
    ws.job_functions = item['job_functions_list']
    ws.activity_domain = item['activity_domain']
    ws.language = item['lang']
    ws.save()
    # Update available dates for this workspec. First remove all previous
    # available dates
    for dr in ws.daterange_set.all():
        dr.delete()

    for daterange in item['available_dates']:
        start, end = daterange
        dr = DateRange(workspec=ws, start=start, end=end)
        dr.save()
示例#2
0
文件: views.py 项目: julienr/myzivi
def index(request):
    # Save current language in session (in case the user used a i18n url)
    lang = translation.get_language()
    request.session['django_language'] = lang

    date_min, date_max = DateRange.get_min_max()
    form = SearchForm(date_min, date_max, request.GET)
    if form.is_valid():
        cd = form.cleaned_data

        first_time_message = not request.session.get('visited', False)
        request.session['visited'] = True

        workspec_search_url = reverse('api_dispatch_list', kwargs={
            'api_name': 'v1',
            'resource_name': 'workspec_search'})
        query = MultiValueDict()
        query['format'] = 'json'
        for lang in cd['languages']:
            query.appendlist('language__in', lang)
        for dom in cd['domains']:
            query.appendlist('activity_domain__in', dom)
        start_min = cd['start_min']
        end_max = cd['end_max']
        if start_min:
            query['start_min'] = start_min
        if end_max:
            query['end_max'] = end_max

        workspec_search_url += '?' + urlencode(query, doseq=True)
        address_url = reverse('api_dispatch_list', kwargs={
            'api_name': 'v1',
            'resource_name': 'address'})

        context = {'search_form' : form,
                   'first_time_message' : first_time_message,
                   'workspec_search_url' : workspec_search_url,
                   'address_url': address_url}

        return render(request, 'index.html', context)
    else:
        return redirect('index')