Ejemplo n.º 1
0
def get_update_detail(update):
    try:
        user = \
            User.objects.get(
                username=update['changeset__social_user__username'])
        profile = get_profile(user)
        update['nickname'] = profile.screen_name
    except (User.DoesNotExist, KeyError) as e:  # noqa
        pass
    return update
Ejemplo n.º 2
0
    def get_context_data(self, *args, **kwargs):
        """
        *debug* toggles GoogleAnalytics support on the main page
        """

        user = get_object_or_404(User, username=kwargs["username"])
        user = get_profile(user)
        context = super(ProfilePage, self).get_context_data(*args, **kwargs)
        context['user'] = user
        return context
Ejemplo n.º 3
0
    def get_context_data(self, *args, **kwargs):
        """
        *debug* toggles GoogleAnalytics support on the main page
        """

        user = get_object_or_404(User, username=kwargs['username'])
        user = get_profile(user)
        context = super(ProfilePage, self).get_context_data(*args, **kwargs)
        context['user'] = user

        context['api_keys'] = None
        if self.request.user == user:
            autogenerate_api_key = False
            if user.is_superuser:
                autogenerate_api_key = True
            context['api_keys'] = UserApiKey.get_user_api_key(
                self.request.user, autogenerate=autogenerate_api_key)
        return context
Ejemplo n.º 4
0
    def get_context_data(self, *args, **kwargs):
        """
        *debug* toggles GoogleAnalytics support on the main page
        """

        user = get_object_or_404(User, username=kwargs['username'])
        user = get_profile(user)
        context = super(ProfilePage, self).get_context_data(*args, **kwargs)
        context['user'] = user

        context['api_keys'] = None
        if self.request.user == user:
            autogenerate_api_key = False
            if user.is_superuser:
                autogenerate_api_key = True
            context['api_keys'] = UserApiKey.get_user_api_key(
                self.request.user, autogenerate=autogenerate_api_key)
        return context
Ejemplo n.º 5
0
    def get_context_data(self, *args, **kwargs):
        """
        *debug* toggles GoogleAnalytics support on the main page
        """

        context = super(ProfilePage, self).get_context_data(*args, **kwargs)
        context['api_keys'] = None
        try:
            user = User.objects.get(username=kwargs['username'])
            user = get_profile(user, self.request)
            osm_user = False

            if self.request.user == user:
                # this is for checking availability old data
                old_data = Locality.objects.filter(
                    changeset__social_user__username=user, migrated=False)

                if old_data:
                    context['old_data_available'] = True

                pathname = \
                    os.path.join(
                        settings.CACHE_DIR, 'data-migration-progress')
                progress_file = \
                    os.path.join(pathname, '{}.txt'.format(user))
                found = os.path.exists(progress_file)

                if found:
                    context['data_migration_in_progress'] = True

                autogenerate_api_key = False
                if user.is_superuser:
                    autogenerate_api_key = True
                context['api_keys'] = UserApiKey.get_user_api_key(
                    self.request.user, autogenerate=autogenerate_api_key)
        except User.DoesNotExist:
            user = {'username': kwargs['username']}
            osm_user = True

        context['user'] = user
        context['osm_user'] = osm_user
        context['osm_API'] = settings.OSM_API_URL
        return context
Ejemplo n.º 6
0
def get_update_detail(update):
    profile = get_profile(
        User.objects.get(username=update['changeset__social_user__username']))
    update['nickname'] = profile.screen_name
    update['changeset__created'] = update['changeset__created']
    return update
Ejemplo n.º 7
0
def get_locality_detail(locality, changes):
    # count completeness based attributes
    obj_repr = locality.repr_dict()
    # get master
    masters = []
    for val in SynonymLocalities.objects.filter(synonym_id=locality.id):
        master_uuid = val.locality.uuid
        master_name = val.locality.name
        masters.append({'name': master_name, 'uuid': master_uuid})

    # get synonyms
    synonyms = []
    for val in SynonymLocalities.objects.filter(locality_id=locality.id):
        synonym_uuid = val.synonym.uuid
        synonym_name = val.synonym.name
        synonyms.append({'name': synonym_name, 'uuid': synonym_uuid})

    # get potential master
    potential_masters = []
    for val in UnconfirmedSynonym.objects.filter(synonym_id=locality.id):
        master_uuid = val.locality.uuid
        master_name = val.locality.name
        potential_masters.append({'name': master_name, 'uuid': master_uuid})

    # get unconfirmed synonyms
    unconfirmed_synonyms = []
    for val in UnconfirmedSynonym.objects.filter(locality_id=locality.id):
        synonym_uuid = val.synonym.uuid
        synonym_name = val.synonym.name
        unconfirmed_synonyms.append({
            'name': synonym_name,
            'uuid': synonym_uuid
        })

    obj_repr[u'masters'] = masters
    obj_repr[u'synonyms'] = synonyms
    obj_repr[u'potential_masters'] = potential_masters
    obj_repr[u'unconfirmed_synonyms'] = unconfirmed_synonyms
    # get latest update
    try:
        updates = []
        last_updates = locality_updates(locality.id, datetime.now())
        for last_update in last_updates:
            updates.append({
                "last_update":
                last_update['changeset__created'],
                "uploader":
                last_update['changeset__social_user__username'],
                "nickname":
                last_update['nickname'],
                "changeset_id":
                last_update['changeset']
            })
        obj_repr.update({'updates': updates})
    except Exception as e:
        pass

    # FOR HISTORY
    obj_repr['history'] = False
    if changes:
        # get updates
        changeset = Changeset.objects.get(id=changes)
        obj_repr['updates'][0]['last_update'] = changeset.created
        obj_repr['updates'][0]['uploader'] = changeset.social_user.username
        obj_repr['updates'][0]['changeset_id'] = changes
        # get profile name
        profile = get_profile(
            User.objects.get(username=changeset.social_user.username))
        obj_repr['updates'][0]['nickname'] = profile.screen_name

        # check archive
        try:
            localityArchives = LocalityArchive.objects.filter(
                changeset=changes).filter(uuid=obj_repr['uuid'])
            for archive in localityArchives:
                obj_repr['geom'] = (archive.geom.x, archive.geom.y)
                obj_repr['history'] = True
        except LocalityArchive.DoesNotExist:
            pass

        try:
            localityArchives = ValueArchive.objects.filter(
                changeset=changes).filter(locality_id=locality.id)
            for archive in localityArchives:
                try:
                    specification = Specification.objects.get(
                        id=archive.specification_id)
                    obj_repr['values'][
                        specification.attribute.key] = archive.data
                    obj_repr['history'] = True
                except Specification.DoesNotExist:
                    pass
        except LocalityArchive.DoesNotExist:
            pass
    return obj_repr
Ejemplo n.º 8
0
def map(request):
    """View for request."""
    if request.user.is_authenticated():
        user = get_object_or_404(User, username=request.user)
        request.user = get_profile(user)

    if request.method == 'POST':
        search_query = request.POST.get('q')
        option = request.POST.get('option')
        if option == 'place':
            map_url = reverse('map')
            return HttpResponseRedirect(
                map_url + '?place=%s' % search_query)
        elif option == 'what3words':
            locality_values = Value.objects.filter(
                specification__attribute__key='what3words').filter(
                data=search_query)
            if locality_values:
                locality_value = locality_values[0]
            else:
                return render_to_response(
                    'map.html',
                    context_instance=RequestContext(request)
                )
            locality_uuid = locality_value.locality.uuid
            map_url = reverse('map')
            return HttpResponseRedirect(
                map_url + '#!/locality/%s' % locality_uuid)
        elif option == 'healthsite':
            localities = Locality.objects.filter(
                name=search_query)
            if len(localities) > 0:
                locality = localities[0]
                locality_uuid = locality.uuid
                map_url = reverse('map')
                return HttpResponseRedirect(
                    map_url + '#!/locality/%s' % locality_uuid)
            else:
                return render_to_response(
                    'map.html',
                    context_instance=RequestContext(request)
                )
    else:
        tag = request.GET.get('tag')
        country = request.GET.get('country')
        place = request.GET.get('place')
        attribute = request.GET.get('attribute')
        result = {}

        if tag:
            result = search_locality_by_tag(tag)
            result['tag'] = tag
        elif country:
            result = get_country_statistic(country)
            result['country'] = country
            result['polygon'] = (
                Country.objects.get(name__iexact=country).polygon_geometry.geojson
            )
            result['shapefile_size'] = 0
            filename = os.path.join(directory_media, country + '_shapefile.zip')
            if (os.path.isfile(filename)):
                result['shapefile_size'] = size(os.path.getsize(filename)) + 'B'
        elif place:
            result = search_place(request, place)
        elif attribute:
            uuid = request.GET.get('uuid')
            result = search_locality_by_spec_data('attribute', attribute, uuid)
            result['attribute'] = {
                'attribute': attribute, 'uuid': uuid, 'name': result['locality_name'],
                'location': result['location']
            }
        elif len(request.GET) == 0:
            result = search_place(request, place)
            # get facilities shapefile size
            result['shapefile_size'] = 0
            filename = os.path.join(directory_media, 'facilities_shapefile.zip')
            if (os.path.isfile(filename)):
                result['shapefile_size'] = size(os.path.getsize(filename)) + 'B'
        else:
            uuid = request.GET.get('uuid')
            for item in request.GET:
                if item != 'uuid':
                    spec = item
                    data = request.GET.get(item)
                    result = search_locality_by_spec_data(spec, data, uuid)
                    result['spec'] = {
                        'spec': spec, 'data': data, 'uuid': uuid,
                        'name': result['locality_name'], 'location': result['location']
                    }

        if 'new_geom' in request.session:
            result['new_geom'] = request.session['new_geom']
            del request.session['new_geom']
        return render_to_response(
            'map.html',
            result,
            context_instance=RequestContext(request)
        )
Ejemplo n.º 9
0
def map(request):
    """View for request."""
    if request.user.is_authenticated():
        user = get_object_or_404(User, username=request.user)
        request.user = get_profile(user)

    if request.method == 'POST':
        search_query = request.POST.get('q')
        option = request.POST.get('option')
        if option == 'place':
            map_url = reverse('map')
            return HttpResponseRedirect(map_url + "?place=%s" % search_query)
        elif option == 'what3words':
            locality_values = Value.objects.filter(
                specification__attribute__key='what3words').filter(
                    data=search_query)
            if locality_values:
                locality_value = locality_values[0]
            else:
                return render_to_response(
                    'map.html', context_instance=RequestContext(request))
            locality_uuid = locality_value.locality.uuid
            map_url = reverse('map')
            return HttpResponseRedirect(map_url +
                                        "#!/locality/%s" % locality_uuid)
        elif option == 'healthsite':
            localities = Locality.objects.filter(name=search_query)
            if len(localities) > 0:
                locality = localities[0]
                locality_uuid = locality.uuid
                map_url = reverse('map')
                return HttpResponseRedirect(map_url +
                                            "#!/locality/%s" % locality_uuid)
            else:
                return render_to_response(
                    'map.html', context_instance=RequestContext(request))
    else:
        tag = request.GET.get('tag')
        country = request.GET.get('country')
        place = request.GET.get('place')
        attribute = request.GET.get('attribute')
        result = {}
        if tag:
            result = search_locality_by_tag(tag)
            result['tag'] = tag
        elif country:
            result = get_country_statistic(country)
            result['country'] = country
            result['polygon'] = Country.objects.get(
                name__iexact=country).polygon_geometry.geojson
        elif place:
            result = search_place(request, place)
        elif attribute:
            uuid = request.GET.get('uuid')
            result = search_locality_by_spec_data("attribute", attribute, uuid)
            result['attribute'] = {
                'attribute': attribute,
                'uuid': uuid,
                'name': result['locality_name'],
                'location': result['location']
            }
        elif len(request.GET) == 0:
            result = search_place(request, place)
        else:
            uuid = request.GET.get('uuid')
            for item in request.GET:
                if item != "uuid":
                    spec = item
                    data = request.GET.get(item)
                    result = search_locality_by_spec_data(spec, data, uuid)
                    result['spec'] = {
                        'spec': spec,
                        'data': data,
                        'uuid': uuid,
                        'name': result['locality_name'],
                        'location': result['location']
                    }

        if 'new_geom' in request.session:
            result["new_geom"] = request.session['new_geom']
            del request.session['new_geom']
        return render_to_response('map.html',
                                  result,
                                  context_instance=RequestContext(request))
Ejemplo n.º 10
0
def map(request):
    """View for request."""
    if request.user.is_authenticated():
        user = get_object_or_404(User, username=request.user)
        request.user = get_profile(user, request)

    if request.method == 'POST':
        search_query = request.POST.get('q')
        option = request.POST.get('option')
        if option == 'place':
            map_url = reverse('map')
            return HttpResponseRedirect(
                map_url + '?place=%s' % search_query)
        elif option == 'what3words':
            locality_values = Value.objects.filter(
                specification__attribute__key='what3words').filter(
                data=search_query)
            if locality_values:
                locality_value = locality_values[0]
            else:
                return render_to_response(
                    'map.html',
                    context_instance=RequestContext(request)
                )
            locality_uuid = locality_value.locality.uuid
            map_url = reverse('map')
            return HttpResponseRedirect(
                map_url + '#!/locality/%s' % locality_uuid)
        elif option == 'healthsite':
            localities = Locality.objects.filter(
                name=search_query)
            if len(localities) > 0:
                locality = localities[0]
                locality_uuid = locality.uuid
                map_url = reverse('map')
                return HttpResponseRedirect(
                    map_url + '#!/locality/%s' % locality_uuid)
            else:
                return render_to_response(
                    'map.html',
                    context_instance=RequestContext(request)
                )
    else:
        tag = request.GET.get('tag')
        country = request.GET.get('country')
        attribute = request.GET.get('attribute')
        uuid = request.GET.get('uuid')
        result = {}

        if tag:
            result = search_locality_by_tag(tag)
            result['tag'] = tag
        elif country:
            pass
        elif attribute:
            uuid = request.GET.get('uuid')
            result = search_locality_by_spec_data('attribute', attribute, uuid)
            result['attribute'] = {
                'attribute': attribute, 'uuid': uuid, 'name': result['locality_name'],
                'location': result['location']
            }
        elif uuid:
            for item in request.GET:
                if item != 'uuid':
                    spec = item
                    data = request.GET.get(item)
                    result = search_locality_by_spec_data(spec, data, uuid)
                    result['spec'] = {
                        'spec': spec, 'data': data, 'uuid': uuid,
                        'name': result['locality_name'], 'location': result['location']
                    }
        else:
            result = search_place(request, None)
            # get facilities shapefile size
            result['shapefile_size'] = 0
            filename = os.path.join(directory_media, 'facilities_shapefile.zip')
            if (os.path.isfile(filename)):
                result['shapefile_size'] = size(os.path.getsize(filename)) + 'B'

        if 'new_geom' in request.session:
            result['new_geom'] = request.session['new_geom']
            del request.session['new_geom']

        result['osm_API'] = settings.OSM_API_URL
        result['map_max_zoom'] = settings.MAX_ZOOM
        result['schema'] = json.dumps(Schema().get_schema())
        return render_to_response(
            'map.html',
            result,
            context_instance=RequestContext(request)
        )
Ejemplo n.º 11
0
def get_update_detail(update):
    profile = get_profile(User.objects.get(username=update['changeset__social_user__username']))
    update['nickname'] = profile.screen_name
    update['changeset__created'] = update['changeset__created']
    return update
Ejemplo n.º 12
0
def get_locality_detail(locality, changes):
    # count completeness based attributes
    obj_repr = locality.repr_dict()
    # get master
    masters = []
    for val in SynonymLocalities.objects.filter(synonym_id=locality.id):
        master_uuid = val.locality.uuid
        master_name = val.locality.name
        masters.append({'name': master_name, 'uuid': master_uuid})

    # get synonyms
    synonyms = []
    for val in SynonymLocalities.objects.filter(locality_id=locality.id):
        synonym_uuid = val.synonym.uuid
        synonym_name = val.synonym.name
        synonyms.append({'name': synonym_name, 'uuid': synonym_uuid})

    # get potential master
    potential_masters = []
    for val in UnconfirmedSynonym.objects.filter(synonym_id=locality.id):
        master_uuid = val.locality.uuid
        master_name = val.locality.name
        potential_masters.append({'name': master_name, 'uuid': master_uuid})

    # get unconfirmed synonyms
    unconfirmed_synonyms = []
    for val in UnconfirmedSynonym.objects.filter(locality_id=locality.id):
        synonym_uuid = val.synonym.uuid
        synonym_name = val.synonym.name
        unconfirmed_synonyms.append({'name': synonym_name, 'uuid': synonym_uuid})

    obj_repr[u'masters'] = masters
    obj_repr[u'synonyms'] = synonyms
    obj_repr[u'potential_masters'] = potential_masters
    obj_repr[u'unconfirmed_synonyms'] = unconfirmed_synonyms
    # get latest update
    try:
        updates = []
        last_updates = locality_updates(locality.id, datetime.now())
        for last_update in last_updates:
            updates.append({'last_update': last_update['changeset__created'],
                            'uploader': last_update['changeset__social_user__username'],
                            'nickname': last_update['nickname'],
                            'changeset_id': last_update['changeset']})
        obj_repr.update({'updates': updates})
    except Exception:
        pass

    # FOR HISTORY
    obj_repr['history'] = False
    if changes:
        # get updates
        changeset = Changeset.objects.get(id=changes)
        obj_repr['updates'][0]['last_update'] = changeset.created
        obj_repr['updates'][0]['uploader'] = changeset.social_user.username
        obj_repr['updates'][0]['changeset_id'] = changes
        # get profile name
        profile = get_profile(User.objects.get(username=changeset.social_user.username))
        obj_repr['updates'][0]['nickname'] = profile.screen_name

        # check archive
        try:
            localityArchives = (
                LocalityArchive.objects.filter(changeset=changes).filter(uuid=obj_repr['uuid'])
            )
            for archive in localityArchives:
                obj_repr['geom'] = (archive.geom.x, archive.geom.y)
                obj_repr['history'] = True
        except LocalityArchive.DoesNotExist:
            pass

        try:
            localityArchives = (
                ValueArchive.objects.filter(changeset=changes).filter(locality_id=locality.id)
            )
            for archive in localityArchives:
                try:
                    specification = Specification.objects.get(id=archive.specification_id)
                    obj_repr['values'][specification.attribute.key] = archive.data
                    obj_repr['history'] = True
                except Specification.DoesNotExist:
                    pass
        except LocalityArchive.DoesNotExist:
            pass
    return obj_repr
Ejemplo n.º 13
0
def map(request):
    """View for request."""
    if request.user.is_authenticated():
        user = get_object_or_404(User, username=request.user)
        request.user = get_profile(user)

    if request.method == 'POST':
        search_query = request.POST.get('q')
        option = request.POST.get('option')
        if option == 'place':
            map_url = reverse('map')
            return HttpResponseRedirect(map_url + '?place=%s' % search_query)
        elif option == 'healthsite':
            localities = Locality.objects.filter(name=search_query)
            if len(localities) > 0:
                locality = localities[0]
                locality_uuid = locality.uuid
                map_url = reverse('map')
                return HttpResponseRedirect(map_url +
                                            '#!/locality/%s' % locality_uuid)
            else:
                return render_to_response(
                    'map.html', context_instance=RequestContext(request))
    else:
        tag = request.GET.get('tag')
        country = request.GET.get('country')
        place = request.GET.get('place')
        attribute = request.GET.get('attribute')
        result = {}

        if tag:
            result = search_locality_by_tag(tag)
            result['tag'] = tag
        elif country:
            result = get_country_statistic(country)
            result['country'] = country
            result['polygon'] = (Country.objects.get(
                name__iexact=country).polygon_geometry.geojson)
            result['shapefile_size'] = 0
            filename = os.path.join(directory_media,
                                    country + '_shapefile.zip')
            if (os.path.isfile(filename)):
                result['shapefile_size'] = size(
                    os.path.getsize(filename)) + 'B'
        elif place:
            result = search_place(request, place)
        elif attribute:
            uuid = request.GET.get('uuid')
            result = search_locality_by_spec_data('attribute', attribute, uuid)
            result['attribute'] = {
                'attribute': attribute,
                'uuid': uuid,
                'name': result['locality_name'],
                'location': result['location']
            }
        elif len(request.GET) == 0:
            result = search_place(request, place)
            # get facilities shapefile size
            result['shapefile_size'] = 0
            filename = os.path.join(directory_media,
                                    'facilities_shapefile.zip')
            if (os.path.isfile(filename)):
                result['shapefile_size'] = size(
                    os.path.getsize(filename)) + 'B'
        else:
            uuid = request.GET.get('uuid')
            for item in request.GET:
                if item != 'uuid':
                    spec = item
                    data = request.GET.get(item)
                    result = search_locality_by_spec_data(spec, data, uuid)
                    result['spec'] = {
                        'spec': spec,
                        'data': data,
                        'uuid': uuid,
                        'name': result['locality_name'],
                        'location': result['location']
                    }

        if 'new_geom' in request.session:
            result['new_geom'] = request.session['new_geom']
            del request.session['new_geom']
        return render_to_response('map.html',
                                  result,
                                  context_instance=RequestContext(request))