예제 #1
0
파일: user.py 프로젝트: cgarrard/OTM2
def get_audits_params(request):
    PAGE_MAX = 100
    PAGE_DEFAULT = 20

    r = request.REQUEST

    page_size = min(int(r.get('page_size', PAGE_DEFAULT)), PAGE_MAX)
    page = int(r.get('page', 0))

    models = []

    allowed_models = get_filterable_audit_models()
    models_param = r.get('models', None)

    if models_param:
        for model in models_param.split(','):
            if model.lower() in allowed_models:
                models.append(allowed_models[model.lower()])
            else:
                raise Exception("Invalid model: %s" % model)
    else:
        models = allowed_models.values()

    model_id = r.get('model_id', None)

    if model_id is not None and len(models) != 1:
        raise Exception("You must specific one and only model "
                        "when looking up by id")

    exclude_pending = r.get('exclude_pending', "false") == "true"

    return (page, page_size, models, model_id, exclude_pending)
예제 #2
0
파일: user.py 프로젝트: cgarrard/OTM2
def user(request, username):
    user = get_object_or_404(User, username=username)
    instance_id = request.GET.get('instance_id', None)

    instance = (get_instance_or_404(pk=instance_id)
                if instance_id else None)

    query_vars = {'instance_id': instance_id} if instance_id else {}

    models = get_filterable_audit_models().values()
    audit_dict = get_audits(request.user, instance, query_vars,
                            user, models, 0, should_count=True)

    reputation = user.get_reputation(instance) if instance else None

    public_fields = []
    private_fields = []

    for field in USER_EDIT_FIELDS.values():
        field_tuple = (field['label'], field['identifier'],
                       field.get('template', "treemap/field/div.html"))
        if field['visibility'] == 'public':
            public_fields.append(field_tuple)
        else:
            private_fields.append(field_tuple)

    return {'user': user,
            'reputation': reputation,
            'instance_id': instance_id,
            'instances': _user_instances(request.user, user, instance),
            'total_edits': audit_dict['total_count'],
            'audits': audit_dict['audits'],
            'next_page': audit_dict['next_page'],
            'public_fields': public_fields,
            'private_fields': private_fields}
예제 #3
0
파일: user.py 프로젝트: gapb/OTM2
def get_audits_params(request):
    PAGE_MAX = 100
    PAGE_DEFAULT = 20

    r = request.REQUEST

    page_size = min(int(r.get('page_size', PAGE_DEFAULT)), PAGE_MAX)
    page = int(r.get('page', 0))

    models = []

    allowed_models = get_filterable_audit_models()
    models_param = r.get('models', None)

    if models_param:
        for model in models_param.split(','):
            if model.lower() in allowed_models:
                models.append(allowed_models[model.lower()])
            else:
                raise Exception("Invalid model: %s" % model)
    else:
        models = allowed_models.values()

    model_id = r.get('model_id', None)

    if model_id is not None and len(models) != 1:
        raise Exception("You must specific one and only model "
                        "when looking up by id")

    exclude_pending = r.get('exclude_pending', "false") == "true"

    return (page, page_size, models, model_id, exclude_pending)
예제 #4
0
def user(request, username):
    user = get_object_or_404(User, username=username)
    instance_id = request.GET.get("instance_id", None)

    instance = get_instance_or_404(pk=instance_id) if instance_id else None

    query_vars = {"instance_id": instance_id} if instance_id else {}

    models = get_filterable_audit_models().values()
    audit_dict = get_audits(request.user, instance, query_vars, user, models, 0, should_count=True)

    reputation = user.get_reputation(instance) if instance else None

    public_fields = []
    private_fields = []

    for field in USER_PROFILE_FIELDS.values():
        field_tuple = (field["label"], field["identifier"], field.get("template", "treemap/field/div.html"))
        if field["visibility"] == "public" and user.make_info_public is True:
            public_fields.append(field_tuple)
        else:
            private_fields.append(field_tuple)

    return {
        "user": user,
        "reputation": reputation,
        "instance_id": instance_id,
        "instances": get_user_instances(request.user, user, instance),
        "total_edits": audit_dict["total_count"],
        "audits": audit_dict["audits"],
        "next_page": audit_dict["next_page"],
        "public_fields": public_fields,
        "private_fields": private_fields,
    }
예제 #5
0
def user(request, username):
    user = get_object_or_404(User, username=username)
    instance_id = request.GET.get('instance_id', None)

    instance = (get_instance_or_404(pk=instance_id)
                if instance_id else None)

    query_vars = {'instance_id': instance_id} if instance_id else {}

    models = get_filterable_audit_models().values()
    audit_dict = get_audits(request.user, instance, query_vars,
                            user, models, 0, should_count=True)

    reputation = user.get_reputation(instance) if instance else None

    public_fields = []
    private_fields = []

    for field in USER_PROFILE_FIELDS.values():
        field_tuple = (field['label'], field['identifier'],
                       field.get('template', "treemap/field/div.html"))
        if field['visibility'] == 'public' and user.make_info_public is True:
            public_fields.append(field_tuple)
        else:
            private_fields.append(field_tuple)

    return {'user': user,
            'reputation': reputation,
            'instance_id': instance_id,
            'instances': get_user_instances(request.user, user, instance),
            'total_edits': audit_dict['total_count'],
            'audits': audit_dict['audits'],
            'next_page': audit_dict['next_page'],
            'public_fields': public_fields,
            'private_fields': private_fields}
예제 #6
0
파일: user.py 프로젝트: lorenanicole/OTM2
def user(request, username):
    user = get_object_or_404(User, username=username)
    instance_id = request.GET.get('instance_id', None)

    instance = (get_instance_or_404(pk=instance_id) if instance_id else None)

    query_vars = {'instance_id': instance_id} if instance_id else {}

    models = get_filterable_audit_models().values()
    audit_dict = get_audits(request.user,
                            instance,
                            query_vars,
                            user,
                            models,
                            0,
                            should_count=True)

    reputation = user.get_reputation(instance) if instance else None

    favorites_qs = Favorite.objects.filter(user=user).order_by('-created')
    favorites = [{
        'map_feature': f.map_feature,
        'title': title_for_map_feature(f.map_feature),
        'instance': f.map_feature.instance,
        'address': f.map_feature.address_full,
        'photo': _small_feature_photo_url(f.map_feature)
    } for f in favorites_qs]

    public_fields = []
    private_fields = []

    for field in USER_PROFILE_FIELDS.values():
        field_tuple = (field['label'], field['identifier'],
                       field.get('template', "treemap/field/div.html"))
        if field['visibility'] == 'public' and user.make_info_public is True:
            public_fields.append(field_tuple)
        else:
            private_fields.append(field_tuple)

    return {
        'user': user,
        'its_me': user.id == request.user.id,
        'reputation': reputation,
        'instance_id': instance_id,
        'instances': get_user_instances(request.user, user, instance),
        'total_edits': audit_dict['total_count'],
        'audits': audit_dict['audits'],
        'next_page': audit_dict['next_page'],
        'public_fields': public_fields,
        'private_fields': private_fields,
        'favorites': favorites
    }
예제 #7
0
def user(request, username):
    user = get_object_or_404(User, username=username)
    instance_id = request.GET.get('instance_id', None)

    instance = (get_instance_or_404(pk=instance_id)
                if instance_id else None)

    query_vars = {'instance_id': instance_id} if instance_id else {}

    models = get_filterable_audit_models().values()
    audit_dict = get_audits(request.user, instance, query_vars,
                            user, models, 0, should_count=True)

    reputation = user.get_reputation(instance) if instance else None

    favorites_qs = Favorite.objects.filter(user=user).order_by('-created')
    favorites = [{
        'map_feature': f.map_feature,
        'title': title_for_map_feature(f.map_feature),
        'instance': f.map_feature.instance,
        'address': f.map_feature.address_full,
        'photo': _small_feature_photo_url(f.map_feature)
    } for f in favorites_qs]

    public_fields = []
    private_fields = []

    for field in USER_PROFILE_FIELDS.values():
        field_tuple = (field['label'], field['identifier'],
                       field.get('template', "treemap/field/div.html"))
        if field['visibility'] == 'public' and user.make_info_public is True:
            public_fields.append(field_tuple)
        else:
            private_fields.append(field_tuple)

    return {'user': user,
            'its_me': user.id == request.user.id,
            'reputation': reputation,
            'instance_id': instance_id,
            'instances': get_user_instances(request.user, user, instance),
            'total_edits': audit_dict['total_count'],
            'audits': audit_dict['audits'],
            'next_page': audit_dict['next_page'],
            'public_fields': public_fields,
            'private_fields': private_fields,
            'favorites': favorites}
예제 #8
0
파일: util.py 프로젝트: jjmata/otm-core
def is_filterable_audit_model(model_name):
    allowed_models = get_filterable_audit_models()

    return model_name in allowed_models.values()
예제 #9
0
파일: util.py 프로젝트: grafuls/OTM2
def is_filterable_audit_model(model_name):
    allowed_models = get_filterable_audit_models()

    return model_name in allowed_models.values()
예제 #10
0
from treemap.audit import Audit, Authorizable, get_auditable_class
from treemap.models import Instance, MapFeature, InstanceUser, User
from treemap.util import get_filterable_audit_models
from treemap.lib.object_caches import udf_defs
from treemap.udf import UDFModel


def _instance_ids_edited_by(user):
    return Audit.objects.filter(user=user)\
                        .values_list('instance_id', flat=True)\
                        .exclude(instance_id=None)\
                        .distinct()


PAGE_DEFAULT = 20
ALLOWED_MODELS = get_filterable_audit_models()


def get_audits(logged_in_user, instance, query_vars, user=None,
               models=ALLOWED_MODELS, model_id=None, start_id=None,
               prev_start_ids=[], page_size=PAGE_DEFAULT, exclude_pending=True,
               should_count=False):
    if instance:
        if instance.is_accessible_by(logged_in_user):
            instances = Instance.objects.filter(pk=instance.pk)
        else:
            instances = Instance.objects.none()
    # If we didn't specify an instance we only want to
    # show audits where the user has permission
    else:
        instances = Instance.objects\
예제 #11
0
from treemap.audit import Audit, Authorizable, get_auditable_class
from treemap.models import Instance, MapFeature, InstanceUser, User
from treemap.util import get_filterable_audit_models
from treemap.lib.object_caches import udf_defs
from treemap.udf import UDFModel


def _instance_ids_edited_by(user):
    return Audit.objects.filter(user=user)\
                        .values_list('instance_id', flat=True)\
                        .exclude(instance_id=None)\
                        .distinct()


PAGE_DEFAULT = 20
ALLOWED_MODELS = get_filterable_audit_models()


def get_audits(logged_in_user,
               instance,
               query_vars,
               user=None,
               models=ALLOWED_MODELS,
               model_id=None,
               start_id=None,
               prev_start_ids=[],
               page_size=PAGE_DEFAULT,
               exclude_pending=True,
               should_count=False):
    if instance:
        if instance.is_accessible_by(logged_in_user):