Exemple #1
0
def view_dellangmilestone(session, request, collection):
    """ Handle user login """

    referer = request.META.get('HTTP_REFERER', None)
    if referer is None:
        redirect_to='ddtss_index'
    try:
        redirect_to = urlsplit(referer, 'http', False)[2]
    except IndexError:
        redirect_to='ddtss_index'

    user = get_user(request, session)

    if not user.is_coordinator:
        return HttpResponseForbidden('<h1>Forbidden</h1>')

    collectionmilestone = session.query(CollectionMilestone) \
            .filter(CollectionMilestone.collection==collection) \
            .filter(CollectionMilestone.name==user.lastlanguage_ref) \
            .filter(CollectionMilestone.nametype==CollectionMilestone.NAME_TYPE_LANGUAGE) \
            .one()

    if collectionmilestone:
        session.delete(collectionmilestone)
        session.commit()

        return redirect(redirect_to)

    return HttpResponseForbidden('<h1>Forbidden</h1>')
Exemple #2
0
def view_onepart(session, request, part_md5, lang):
    """ Show a single translated part """

    user = get_user(request, session)

    params = dict()

    params['lang'] = lang
    params['part_md5'] = part_md5

    # This part
    part = session.query(Part.part). \
                        filter(Part.part_md5==part_md5).\
                        filter(Part.language==lang).one()
    params['part'] = part

    # list of translations
    langs = session.query(Part.language). \
                        filter(Part.part_md5==part_md5).all()
    params['langs'] = langs

    # list of description
    descrs = session.query(PartDescription.description_id).\
                        filter(PartDescription.part_md5==part_md5).\
                        all()
    params['descrs'] = descrs
    params['user'] = user

    return render_to_response("onepart.html", params, context_instance=RequestContext(request))
Exemple #3
0
def view_addlangmilestone(session, request, collectiontype, collection):
    """ Handle user login """

    referer = request.META.get('HTTP_REFERER', None)
    if referer is None:
        redirect_to='ddtss_index'
    try:
        redirect_to = urlsplit(referer, 'http', False)[2]
    except IndexError:
        redirect_to='ddtss_index'

    user = get_user(request, session)

    if not user.is_coordinator:
        return HttpResponseForbidden('<h1>Forbidden</h1>')

    collectionmilestone = CollectionMilestone(name=user.lastlanguage_ref,\
            nametype=CollectionMilestone.NAME_TYPE_LANGUAGE,\
            collection=collectiontype+':'+collection)
    session.add(collectionmilestone)
    try:
        session.commit()
    except:
        messages.error(request, "Error")

    return redirect(redirect_to)
Exemple #4
0
def view_descr(session, request, descr_id):
    """ Show the page for a single description """

    user = get_user(request, session)

    params = dict()
    params['prefixlist'] = map(chr, range(ord('0'), ord('9')+1))
    params['prefixlist'] += map(chr, range(ord('a'), ord('z')+1))

    # This description
    descr = session.query(Description). \
                        filter(Description.description_id==descr_id).one()
    params['descr'] = descr

    # FIXME... don't use Description.package
    # Other descriptions for this package
    resultset = session.query(Description). \
                        filter(Description.package==descr.package).all()
    params['other_descriptions'] = resultset

    # All languages
    langs = session.query(Translation.language).group_by(Translation.language).order_by(Translation.language).all()
    params['langs'] = [l[0] for l in langs]
    params['user'] = user

    return render_to_response("descr.html", params, context_instance=RequestContext(request))
Exemple #5
0
def stats_milestones_lang(session, request):
    """ Does milestones stats page per language """

    user = get_user(request, session)
    language = user.lastlanguage_ref

    if language is None:
        language = 'xx'
    if language == 'xx':
        return redirect('ddtss_index')

    resultset = session.query(DescriptionMilestone.milestone,func.count(Translation.description_id)). \
                        join(Translation, DescriptionMilestone.description_id == Translation.description_id).\
                        filter(Translation.language==language).\
                        group_by(DescriptionMilestone.milestone).order_by(DescriptionMilestone.milestone).all()

    resultset1 = session.query(DescriptionMilestone.milestone,func.count(PendingTranslation.description_id)). \
                        join(PendingTranslation, DescriptionMilestone.description_id == PendingTranslation.description_id).\
                        filter(PendingTranslation.language_ref == language). \
                        group_by(DescriptionMilestone.milestone).order_by(DescriptionMilestone.milestone).all()

    resultset2 = session.query(DescriptionMilestone.milestone,func.count(DescriptionMilestone.description_id)). \
                        group_by(DescriptionMilestone.milestone).order_by(DescriptionMilestone.milestone).all()

    params = dict()
    resultdict = dict(resultset)
    resultdict1 = dict(resultset1)
    params['lang'] = language
    params['user'] = user
    params['milestones'] = [(r[0], {'total': r[1], 'translated': resultdict.get(r[0],0), 'pending': resultdict1.get(r[0],0), 'percent': (resultdict.get(r[0],0)*100/r[1]) } ) for r in resultset2]

    return render_to_response("milestones-lang.html", params, context_instance=RequestContext(request))
Exemple #6
0
def view_addusermilestone(session, request, collectiontype, collection):
    """ Handle user login """

    referer = request.META.get('HTTP_REFERER', None)
    if referer is None:
        redirect_to = 'ddtss_index'
    try:
        redirect_to = urlsplit(referer, 'http', False)[2]
    except IndexError:
        redirect_to = 'ddtss_index'

    user = get_user(request, session)

    if not user.logged_in:
        return show_message_screen(request, 'Only for login user',
                                   'ddtss_login')

    collectionmilestone = CollectionMilestone(
        name=user.username,
        nametype=CollectionMilestone.NAME_TYPE_USER,
        collection=collectiontype + ':' + collection)
    session.add(collectionmilestone)
    try:
        session.commit()
    except:
        messages.error(request, "Error")

    return redirect(redirect_to)
Exemple #7
0
def view_addusermilestone(session, request, collectiontype, collection):
    """ Handle user login """

    referer = request.META.get('HTTP_REFERER', None)
    if referer is None:
        redirect_to='ddtss_index'
    try:
        redirect_to = urlsplit(referer, 'http', False)[2]
    except IndexError:
        redirect_to='ddtss_index'

    user = get_user(request, session)

    if not user.logged_in:
        return show_message_screen(request, 'Only for login user', 'ddtss_login')

    collectionmilestone = CollectionMilestone(name=user.username,
        nametype=CollectionMilestone.NAME_TYPE_USER,
        collection=collectiontype+':'+collection)
    session.add(collectionmilestone)
    try:
        session.commit()
    except:
        messages.error(request, "Error")

    return redirect(redirect_to)
Exemple #8
0
def view_addlangmilestone(session, request, collectiontype, collection):
    """ Handle user login """

    referer = request.META.get('HTTP_REFERER', None)
    if referer is None:
        redirect_to='ddtss_index'
    try:
        redirect_to = urlsplit(referer, 'http', False)[2]
    except IndexError:
        redirect_to='ddtss_index'

    user = get_user(request, session)

    if not user.is_coordinator:
        return HttpResponseForbidden('<h1>Forbidden</h1>')

    collectionmilestone = CollectionMilestone(name=user.lastlanguage_ref,\
            nametype=2,\
            collection=collectiontype+':'+collection)
    session.add(collectionmilestone)
    try:
        session.commit()
    except:
        messages.error(request, "Error")

    return redirect(redirect_to)
Exemple #9
0
def view_delusermilestone(session, request, collection):
    """ Handle user login """

    referer = request.META.get('HTTP_REFERER', None)
    if referer is None:
        redirect_to = 'ddtss_index'
    try:
        redirect_to = urlsplit(referer, 'http', False)[2]
    except IndexError:
        redirect_to = 'ddtss_index'

    user = get_user(request, session)

    if not user.logged_in:
        return show_message_screen(request, 'Only for login user',
                                   'ddtss_login')

    collectionmilestone = session.query(CollectionMilestone) \
            .filter(CollectionMilestone.collection==collection) \
            .filter(CollectionMilestone.name==user.username) \
            .filter(CollectionMilestone.nametype==CollectionMilestone.NAME_TYPE_USER) \
            .one()

    if collectionmilestone:
        session.delete(collectionmilestone)
        session.commit()

        return redirect(redirect_to)

    return HttpResponseForbidden('<h1>Forbidden</h1>')
Exemple #10
0
def view_onepart(session, request, part_md5, lang):
    """ Show a single translated part """

    user = get_user(request, session)

    params = dict()

    params['lang'] = lang
    params['part_md5'] = part_md5

    # This part
    part = session.query(Part.part). \
                        filter(Part.part_md5==part_md5).\
                        filter(Part.language==lang).one()
    params['part'] = part

    # list of translations
    langs = session.query(Part.language). \
                        filter(Part.part_md5==part_md5).all()
    params['langs'] = langs

    # list of description
    descrs = session.query(PartDescription.description_id).\
                        filter(PartDescription.part_md5==part_md5).\
                        all()
    params['descrs'] = descrs
    params['user'] = user

    return render_to_response("onepart.html",
                              params,
                              context_instance=RequestContext(request))
Exemple #11
0
def view_part(session, request, part_md5):
    """ Show a single translated part """

    user = get_user(request, session)

    params = dict()

    params['part_md5'] = part_md5

    # This part
    parts = session.query(Part). \
                        filter(Part.part_md5==part_md5).\
                        all()
    params['parts'] = parts

    # list of description
    descrs = session.query(PartDescription.description_id).\
                        filter(PartDescription.part_md5==part_md5).\
                        all()
    params['descrs'] = descrs
    params['user'] = user

    return render_to_response("part.html",
                              params,
                              context_instance=RequestContext(request))
Exemple #12
0
def view_dellangmilestone(session, request, collection):
    """ Handle user login """

    referer = request.META.get('HTTP_REFERER', None)
    if referer is None:
        redirect_to='ddtss_index'
    try:
        redirect_to = urlsplit(referer, 'http', False)[2]
    except IndexError:
        redirect_to='ddtss_index'

    user = get_user(request, session)

    if not user.is_coordinator:
        return HttpResponseForbidden('<h1>Forbidden</h1>')

    collectionmilestone = session.query(CollectionMilestone) \
            .filter(CollectionMilestone.collection==collection) \
            .filter(CollectionMilestone.name==user.lastlanguage_ref) \
            .filter(CollectionMilestone.nametype==2) \
            .one()

    if collectionmilestone:
        session.delete(collectionmilestone)
        session.commit()

        return redirect(redirect_to)

    return HttpResponseForbidden('<h1>Forbidden</h1>')
Exemple #13
0
def view_browse(session, request, prefix):
    """ Does overview pages (<foo>.html) """

    user = get_user(request, session)

    resultset = session.query(PackageVersion.package, PackageVersion.description_id, DescriptionTag). \
                        filter(PackageVersion.description_id==DescriptionTag.description_id). \
                        filter(PackageVersion.package.like(prefix+'%')). \
                        order_by(PackageVersion.package, PackageVersion.description_id, DescriptionTag.tag).all()

    # defaultdict would be better here, but django can't iterate over defaultdicts
    params = dict()
    for package, descr_id, tag in resultset:
        if package not in params:
            params[package] = dict()
        if descr_id not in params[package]:
            params[package][descr_id] = list()
        params[package][descr_id].append(tag)

    # We want this sorted, so we need to flatten this to just lists
    params = [(package,
                  [(descr_id, sorted(tags, key=lambda x:x.tag))
                    for descr_id, tags in sorted(descrs.items())])
               for package,descrs in sorted(params.items())]

    return render_to_response("overview.html", {'packages': params, 'prefix': prefix, 'user': user}, context_instance=RequestContext(request))
Exemple #14
0
def view_browse(session, request, prefix):
    """ Does overview pages (<foo>.html) """

    user = get_user(request, session)

    resultset = session.query(PackageVersion.package, PackageVersion.description_id, DescriptionTag). \
                        filter(PackageVersion.description_id==DescriptionTag.description_id). \
                        filter(PackageVersion.package.like(prefix+'%')). \
                        order_by(PackageVersion.package, PackageVersion.description_id, DescriptionTag.tag).all()

    # defaultdict would be better here, but django can't iterate over defaultdicts
    params = dict()
    for package, descr_id, tag in resultset:
        if package not in params:
            params[package] = dict()
        if descr_id not in params[package]:
            params[package][descr_id] = list()
        params[package][descr_id].append(tag)

    # We want this sorted, so we need to flatten this to just lists
    params = [(package, [(descr_id, sorted(tags, key=lambda x: x.tag))
                         for descr_id, tags in sorted(descrs.items())])
              for package, descrs in sorted(params.items())]

    return render_to_response("overview.html", {
        'packages': params,
        'prefix': prefix,
        'user': user
    },
                              context_instance=RequestContext(request))
Exemple #15
0
def view_descr(session, request, descr_id):
    """ Show the page for a single description """

    user = get_user(request, session)

    params = dict()
    params['prefixlist'] = map(chr, range(ord('0'), ord('9') + 1))
    params['prefixlist'] += map(chr, range(ord('a'), ord('z') + 1))

    # This description
    descr = session.query(Description). \
                        filter(Description.description_id==descr_id).one()
    params['descr'] = descr

    # FIXME... don't use Description.package
    # Other descriptions for this package
    resultset = session.query(Description). \
                        filter(Description.package==descr.package).all()
    params['other_descriptions'] = resultset

    # All languages
    langs = session.query(Translation.language).group_by(
        Translation.language).order_by(Translation.language).all()
    params['langs'] = [l[0] for l in langs]
    params['user'] = user

    return render_to_response("descr.html",
                              params,
                              context_instance=RequestContext(request))
Exemple #16
0
def view_delusermilestone(session, request, collection):
    """ Handle user login """

    referer = request.META.get('HTTP_REFERER', None)
    if referer is None:
        redirect_to='ddtss_index'
    try:
        redirect_to = urlsplit(referer, 'http', False)[2]
    except IndexError:
        redirect_to='ddtss_index'

    user = get_user(request, session)

    if not user.logged_in:
        return show_message_screen(request, 'Only for login user', 'ddtss_login')

    collectionmilestone = session.query(CollectionMilestone) \
            .filter(CollectionMilestone.collection==collection) \
            .filter(CollectionMilestone.name==user.username) \
            .filter(CollectionMilestone.nametype==CollectionMilestone.NAME_TYPE_USER) \
            .one()

    if collectionmilestone:
        session.delete(collectionmilestone)
        session.commit()

        return redirect(redirect_to)

    return HttpResponseForbidden('<h1>Forbidden</h1>')
Exemple #17
0
def view_admin_lang(session, request, language):
    """ Handle superuser language management """

    user = get_user(request, session)

    if not user.is_superuser:
        return HttpResponseForbidden('<h1>Forbidden</h1>')

    # Note: this is one of the few places where you're allowed to look at a disable language
    lang = session.query(Languages).get(language)
    if not lang:
        raise Http404()

    if request.method == "POST":
        if 'cancel' in request.POST:
            return redirect('ddtss_admin')
        if 'submit' in request.POST:
            form = LanguageAdminForm(session,data=request.POST)
            if form.is_valid():
                # Modify language
                lang.fullname = form.cleaned_data['name']
                lang.enabled_ddtss = form.cleaned_data['enabled']

                session.commit()

                return redirect('ddtss_admin')
        if 'add' in request.POST:
            # Add user as language coordinator
            new_user = session.query(Users).get(request.POST.get('username'))
            if not new_user:
                messages.error(request, 'User %r not found' % request.POST.get('username'))
            else:
                # User exists, add or update authority
                new_auth = new_user.get_authority(language)
                new_auth.auth_level = UserAuthority.AUTH_LEVEL_COORDINATOR
                session.add(new_auth)
                messages.info(request, 'User %s now coordinator' % new_user.username)
                session.commit()
        if 'del' in request.POST:
            # Remove user as language coordinator
            new_user = session.query(Users).get(request.POST.get('del'))
            if not new_user:
                messages.error(request, 'User %r not found' % request.POST.get('username'))
            else:
                # User exists, drop back to trusted user
                new_auth = new_user.get_authority(language)
                new_auth.auth_level = UserAuthority.AUTH_LEVEL_TRUSTED
                messages.info(request, 'User %s now only trusted' % new_user.username)
                session.commit()

    form = LanguageAdminForm(session,dict(
        language=language,
        name=lang.fullname,
        enabled=lang.enabled_ddtss
        ))

    return render_to_response("ddtss/admin_lang.html", { 'lang': lang, 'form': form, 'user': user },
                              context_instance=RequestContext(request))
Exemple #18
0
def view_admin_lang(session, request, language):
    """ Handle superuser language management """

    user = get_user(request, session)

    if not user.superuser:
        return HttpResponseForbidden('<h1>Forbidden</h1>')

    # Note: this is one of the few places where you're allowed to look at a disable language
    lang = session.query(Languages).get(language)
    if not lang:
        raise Http404()

    if request.method == "POST":
        if 'cancel' in request.POST:
            return redirect('ddtss_admin')
        if 'submit' in request.POST:
            form = LanguageAdminForm(session,data=request.POST)
            if form.is_valid():
                # Modify language
                lang.fullname = form.cleaned_data['name']
                lang.enabled_ddtss = form.cleaned_data['enabled']

                session.commit()

                return redirect('ddtss_admin')
        if 'add' in request.POST:
            # Add user as language coordinator
            new_user = session.query(Users).get(request.POST.get('username'))
            if not new_user:
                messages.error(request, 'User %r not found' % request.POST.get('username'))
            else:
                # User exists, add or update authority
                new_auth = new_user.get_authority(language)
                new_auth.auth_level = UserAuthority.AUTH_LEVEL_COORDINATOR
                session.add(new_auth)
                messages.info(request, 'User %s now coordinator' % new_user.username)
                session.commit()
        if 'del' in request.POST:
            # Remove user as language coordinator
            new_user = session.query(Users).get(request.POST.get('del'))
            if not new_user:
                messages.error(request, 'User %r not found' % request.POST.get('username'))
            else:
                # User exists, drop back to trusted user
                new_auth = new_user.get_authority(language)
                new_auth.auth_level = UserAuthority.AUTH_LEVEL_TRUSTED
                messages.info(request, 'User %s now only trusted' % new_user.username)
                session.commit()

    form = LanguageAdminForm(session,dict( \
        language=language, \
        name=lang.fullname, \
        enabled=lang.enabled_ddtss \
        ))

    return render_to_response("ddtss/admin_lang.html", { 'lang': lang, 'form': form },
                              context_instance=RequestContext(request))
Exemple #19
0
def thisuser_data(session, request):
    """ Generate the this user's statistics """

    user = get_user(request, session)

    # List of (date, translated, reviewed)
    flot_data = user.raw_flot_data()
    
    user_data = [(time.mktime(date.timetuple())*1000, translated, reviewed) for date, translated,reviewed in flot_data]

    return HttpResponse(json.dumps(user_data), mimetype="application/json")
Exemple #20
0
def view_index(session, request):
    """ Main index.html, show summary info """

    user = get_user(request, session)
    lang = user.lastlanguage_ref
    if lang is None:
        lang = 'xx'
    if lang != 'xx':
        return redirect('ddtss_index_lang', lang)

    return redirect('ddtss_index')
Exemple #21
0
def thisuser_data(session, request):
    """ Generate the this user's statistics """

    user = get_user(request, session)

    # List of (date, translated, reviewed)
    flot_data = user.raw_flot_data()

    user_data = [(time.mktime(date.timetuple()) * 1000, translated, reviewed)
                 for date, translated, reviewed in flot_data]

    return HttpResponse(json.dumps(user_data), mimetype="application/json")
Exemple #22
0
def view_logout(session, request):
    """ Handle user logout """
    user = get_user(request, session)
    if user.logged_in:
        # User logout successful
        logger.info("Logout successful" \
                    " - username[%s]", user.username)
        messages.success(request, "Logout successful.")
        django_openid_consumer.views.signout(request)
        del request.session['username']

    # User not logged in or logged out successful
    response = redirect('ddtss_index')

    response.delete_cookie('ddtssuser')
    return response
Exemple #23
0
def view_logout(session, request):
    """ Handle user logout """
    user = get_user(request, session)
    if user.logged_in:
        # User logout successful
        logger.info("Logout successful" \
                    " - username[%s]", user.username)
        messages.success(request, "Logout successful.")
        django_openid_consumer.views.signout(request)
        del request.session['username']

    # User not logged in or logged out successful
    response = redirect('ddtss_index')

    response.delete_cookie('ddtssuser')
    return response
Exemple #24
0
def stats_one_milestones_lang(session, request, language, mile):
    """ Does milestones stats page per language """

    user = get_user(request, session)
    lang = session.query(Languages).get(language)
    if not lang:
        raise Http404()

    resultset = session.query(Description). \
                        join(DescriptionMilestone, DescriptionMilestone.description_id == Description.description_id).\
                        filter(DescriptionMilestone.milestone==mile).\
                        order_by(Description.prioritize).\
                        options(subqueryload('package_versions')).\
                        all()

    resultset1 = session.query(DescriptionMilestone.description_id,PendingTranslation.description_id). \
                        join(PendingTranslation, DescriptionMilestone.description_id == PendingTranslation.description_id).\
                        filter(PendingTranslation.language_ref==language).\
                        filter(DescriptionMilestone.milestone==mile).\
                        all()

    resultset2 = session.query(DescriptionMilestone.description_id,DescriptionMilestone.description_id). \
                        join(Translation, DescriptionMilestone.description_id == Translation.description_id).\
                        filter(Translation.language==language).\
                        filter(DescriptionMilestone.milestone==mile).\
                        all()

    #    resultset2 = session.query(DescriptionMilestone.milestone,func.count(DescriptionMilestone.description_id)). \
    #                        filter(DescriptionMilestone.milestone==milestone).\
    #                        group_by(DescriptionMilestone.milestone).order_by(DescriptionMilestone.milestone).all()

    params = dict()
    resultdict = dict(resultset2)
    resultdict1 = dict(resultset1)
    params['lang'] = lang
    params['user'] = user
    params['milestone'] = mile
    params['descriptions'] = [(r, {
        'translate': resultdict.get(r.description_id, 0),
        'pending': resultdict1.get(r.description_id, 0)
    }) for r in resultset]

    return render_to_response("one_milestones_lang.html",
                              params,
                              context_instance=RequestContext(request))
Exemple #25
0
def view_admin(session, request):
    """ Handle the super admin page """

    user = get_user(request, session)

    if not user.is_superuser:
        return HttpResponseForbidden('<h1>Forbidden</h1>')

    langs = session.query(Languages).all()
    admins = session.query(Users).filter_by(superuser=True).all()

    context = {
        'languages': langs,
        'admins': admins,
        'user': user,
    }
    return render_to_response("ddtss/admin.html", context,
                              context_instance=RequestContext(request))
Exemple #26
0
def view_admin(session, request):
    """ Handle the super admin page """

    user = get_user(request, session)

    if not user.superuser:
        return HttpResponseForbidden('<h1>Forbidden</h1>')

    langs = session.query(Languages).all()
    admins = session.query(Users).filter_by(superuser=True).all()

    context = {
        'languages': langs,
        'admins': admins,
        'user': user,
    }
    return render_to_response("ddtss/admin.html", context,
                              context_instance=RequestContext(request))
Exemple #27
0
def view_preference(session, request):
    """ Handle user login """

    user = get_user(request, session)

    if not user.logged_in:
        return show_message_screen(request, 'Only for login user',
                                   'ddtss_login')

    if request.method == "POST":
        if request.POST.get('cancel'):
            return redirect('ddtss_index')

        form = UserPreference(session, data=request.POST)
        if form.is_valid():
            user.milestone = form.cleaned_data['milestone']
            user.realname = form.cleaned_data['realname']

            if (form.cleaned_data['password1']):
                user.md5password = hashlib.md5(
                    user.key + form.cleaned_data['password1']).hexdigest()

            session.commit()
            messages.success(request, "Preferenc changed")
            return redirect('ddtss_index')
    else:
        form_fields = dict(
            milestone=user.milestone,
            realname=user.realname,
        )
        form = UserPreference(session, form_fields)

    collectionmilestones = session.query(CollectionMilestone).\
            filter(CollectionMilestone.nametype==CollectionMilestone.NAME_TYPE_USER). \
            filter(CollectionMilestone.name==user.username).all()

    context = {
        'user': user,
        'form': form,
        'collectionmilestones': collectionmilestones,
    }
    return render_to_response("ddtss/user_preference.html",
                              context,
                              context_instance=RequestContext(request))
Exemple #28
0
def stats_one_milestones_lang(session, request, mile):
    """ Does milestones stats page per language """

    user = get_user(request, session)
    language = user.lastlanguage_ref

    if language is None:
        language = 'xx'
    if language == 'xx':
        return redirect('ddtss_index')

    flot = session.query(DescriptionMilestone).filter(DescriptionMilestone.milestone==mile).all()[0].Get_flot_data(language);

    resultset = session.query(Description). \
                        join(DescriptionMilestone, DescriptionMilestone.description_id == Description.description_id).\
                        filter(DescriptionMilestone.milestone==mile).\
                        order_by(Description.prioritize).all()

    resultset1 = session.query(DescriptionMilestone.description_id,PendingTranslation.description_id). \
                        join(PendingTranslation, DescriptionMilestone.description_id == PendingTranslation.description_id).\
                        filter(PendingTranslation.language_ref==language).\
                        filter(DescriptionMilestone.milestone==mile).\
                        all()

    resultset2 = session.query(DescriptionMilestone.description_id,DescriptionMilestone.description_id). \
                        join(Translation, DescriptionMilestone.description_id == Translation.description_id).\
                        filter(Translation.language==language).\
                        filter(DescriptionMilestone.milestone==mile).\
                        all()

#    resultset2 = session.query(DescriptionMilestone.milestone,func.count(DescriptionMilestone.description_id)). \
#                        filter(DescriptionMilestone.milestone==milestone).\
#                        group_by(DescriptionMilestone.milestone).order_by(DescriptionMilestone.milestone).all()

    params = dict()
    resultdict = dict(resultset2)
    resultdict1 = dict(resultset1)
    params['lang'] = language
    params['user'] = user
    params['milestone'] = mile
    params['flot'] = flot
    params['descriptions'] = [(r, {'translate': resultdict.get(r.description_id,0), 'pending': resultdict1.get(r.description_id,0)}) for r in resultset]

    return render_to_response("one_milestones-lang.html", params, context_instance=RequestContext(request))
Exemple #29
0
def view_source(session, request, source_name):
    """ Show the page for a single source package """

    user = get_user(request, session)

    params = dict()
    params['prefixlist'] = map(chr, range(ord('0'), ord('9')+1))
    params['prefixlist'] += map(chr, range(ord('a'), ord('z')+1))

    params['source_name'] = source_name

    # FIXME... don't use Description.package
    # All Packages of this source package
    descriptions = session.query(Description.package). \
                        filter(Description.source==source_name).group_by(Description.package).order_by(Description.package).all()
    params['descriptions'] = descriptions
    params['user'] = user

    return render_to_response("source.html", params, context_instance=RequestContext(request))
Exemple #30
0
def view_source(session, request, source_name):
    """ Show the page for a single source package """

    user = get_user(request, session)

    params = dict()
    params['prefixlist'] = map(chr, range(ord('0'), ord('9') + 1))
    params['prefixlist'] += map(chr, range(ord('a'), ord('z') + 1))

    params['source_name'] = source_name

    # FIXME... don't use Description.package
    # All Packages of this source package
    descriptions = session.query(Description.package). \
                        filter(Description.source==source_name).group_by(Description.package).order_by(Description.package).all()
    params['descriptions'] = descriptions
    params['user'] = user

    return render_to_response("source.html",
                              params,
                              context_instance=RequestContext(request))
Exemple #31
0
def view_package(session, request, package_name):
    """ Show the page for a single package """

    user = get_user(request, session)

    params = dict()
    params['prefixlist'] = map(chr, range(ord('0'), ord('9')+1))
    params['prefixlist'] += map(chr, range(ord('a'), ord('z')+1))

    resultset = session.query(Description, PackageVersion, ActiveDescription.description_id). \
                        filter(PackageVersion.package==package_name). \
                        outerjoin(PackageVersion, PackageVersion.description_id == Description.description_id). \
                        outerjoin(ActiveDescription, ActiveDescription.description_id == Description.description_id). \
                        distinct(-Description.description_id). \
                        order_by(-Description.description_id)

    params['package'] = resultset
    params['package_name'] = package_name
    params['user'] = user

    return render_to_response("package.html", params, context_instance=RequestContext(request))
Exemple #32
0
def stats_one_milestones_lang(session, request, language, mile):
    """ Does milestones stats page per language """

    user = get_user(request, session)
    lang = session.query(Languages).get(language)
    if not lang:
        raise Http404()

    resultset = session.query(Description). \
                        join(DescriptionMilestone, DescriptionMilestone.description_id == Description.description_id).\
                        filter(DescriptionMilestone.milestone==mile).\
                        order_by(Description.prioritize).\
                        options(subqueryload('package_versions')).\
                        all()

    resultset1 = session.query(DescriptionMilestone.description_id,PendingTranslation.description_id). \
                        join(PendingTranslation, DescriptionMilestone.description_id == PendingTranslation.description_id).\
                        filter(PendingTranslation.language_ref==language).\
                        filter(DescriptionMilestone.milestone==mile).\
                        all()

    resultset2 = session.query(DescriptionMilestone.description_id,DescriptionMilestone.description_id). \
                        join(Translation, DescriptionMilestone.description_id == Translation.description_id).\
                        filter(Translation.language==language).\
                        filter(DescriptionMilestone.milestone==mile).\
                        all()

#    resultset2 = session.query(DescriptionMilestone.milestone,func.count(DescriptionMilestone.description_id)). \
#                        filter(DescriptionMilestone.milestone==milestone).\
#                        group_by(DescriptionMilestone.milestone).order_by(DescriptionMilestone.milestone).all()

    params = dict()
    resultdict = dict(resultset2)
    resultdict1 = dict(resultset1)
    params['lang'] = lang
    params['user'] = user
    params['milestone'] = mile
    params['descriptions'] = [(r, {'translate': resultdict.get(r.description_id,0), 'pending': resultdict1.get(r.description_id,0)}) for r in resultset]

    return render_to_response("one_milestones_lang.html", params, context_instance=RequestContext(request))
Exemple #33
0
def view_preference(session, request):
    """ Handle user login """

    user = get_user(request, session)

    if not user.logged_in:
        return show_message_screen(request, 'Only for login user', 'ddtss_login')

    if request.method == "POST":
        if request.POST.get('cancel'):
            return redirect('ddtss_index')

        form = UserPreference(session,data=request.POST)
        if form.is_valid():
            user.milestone=form.cleaned_data['milestone']
            user.realname=form.cleaned_data['realname']

            if (form.cleaned_data['password1']):
                user.md5password = hashlib.md5(user.key + form.cleaned_data['password1']).hexdigest()

            session.commit()
            messages.success(request, "Preferenc changed")
            return redirect('ddtss_index')
    else:
        form_fields = dict(milestone=user.milestone,
                realname=user.realname,
                )
        form = UserPreference(session,form_fields)

    collectionmilestones = session.query(CollectionMilestone).\
            filter(CollectionMilestone.nametype==CollectionMilestone.NAME_TYPE_USER). \
            filter(CollectionMilestone.name==user.username).all()

    context = {
        'user': user,
        'form': form,
        'collectionmilestones': collectionmilestones,
    }
    return render_to_response("ddtss/user_preference.html", context,
                              context_instance=RequestContext(request))
Exemple #34
0
def view_transdescr(session, request, descr_id, lang):
    """ Show the page for a single translated description """

    user = get_user(request, session)

    params = dict()
    params['prefixlist'] = map(chr, range(ord('0'), ord('9')+1))
    params['prefixlist'] += map(chr, range(ord('a'), ord('z')+1))

    # This description
    descr = session.query(Description). \
                        filter(Description.description_id==descr_id).one()
    params['descr'] = descr
    params['lang'] = lang

    translation = session.query(Translation). \
                        filter(Translation.description_id==descr_id). \
                        filter(Translation.language==lang).one()
    params['translation'] = translation
    params['user'] = user

    return render_to_response("transdescr.html", params, context_instance=RequestContext(request))
Exemple #35
0
def view_part(session, request, part_md5):
    """ Show a single translated part """

    user = get_user(request, session)

    params = dict()

    params['part_md5'] = part_md5

    # This part
    parts = session.query(Part). \
                        filter(Part.part_md5==part_md5).\
                        all()
    params['parts'] = parts

    # list of description
    descrs = session.query(PartDescription.description_id).\
                        filter(PartDescription.part_md5==part_md5).\
                        all()
    params['descrs'] = descrs
    params['user'] = user

    return render_to_response("part.html", params, context_instance=RequestContext(request))
Exemple #36
0
def view_package(session, request, package_name):
    """ Show the page for a single package """

    user = get_user(request, session)

    params = dict()
    params['prefixlist'] = map(chr, range(ord('0'), ord('9') + 1))
    params['prefixlist'] += map(chr, range(ord('a'), ord('z') + 1))

    resultset = session.query(Description, PackageVersion, ActiveDescription.description_id). \
                        filter(PackageVersion.package==package_name). \
                        outerjoin(PackageVersion, PackageVersion.description_id == Description.description_id). \
                        outerjoin(ActiveDescription, ActiveDescription.description_id == Description.description_id). \
                        distinct(-Description.description_id). \
                        order_by(-Description.description_id)

    params['package'] = resultset
    params['package_name'] = package_name
    params['user'] = user

    return render_to_response("package.html",
                              params,
                              context_instance=RequestContext(request))
Exemple #37
0
def view_transdescr(session, request, descr_id, lang):
    """ Show the page for a single translated description """

    user = get_user(request, session)

    params = dict()
    params['prefixlist'] = map(chr, range(ord('0'), ord('9') + 1))
    params['prefixlist'] += map(chr, range(ord('a'), ord('z') + 1))

    # This description
    descr = session.query(Description). \
                        filter(Description.description_id==descr_id).one()
    params['descr'] = descr
    params['lang'] = lang

    translation = session.query(Translation). \
                        filter(Translation.description_id==descr_id). \
                        filter(Translation.language==lang).one()
    params['translation'] = translation
    params['user'] = user

    return render_to_response("transdescr.html",
                              params,
                              context_instance=RequestContext(request))
Exemple #38
0
def stats_milestones_lang(session, request, language):
    """ Does milestones stats page per language """

    user = get_user(request, session)
    lang = session.query(Languages).get(language)
    if not lang:
        raise Http404()

    resultset = session.query(DescriptionMilestone.milestone,func.count(Translation.description_id)). \
                        join(Translation, DescriptionMilestone.description_id == Translation.description_id).\
                        filter(Translation.language==language).\
                        group_by(DescriptionMilestone.milestone).order_by(DescriptionMilestone.milestone).all()

    resultset1 = session.query(DescriptionMilestone.milestone,func.count(PendingTranslation.description_id)). \
                        join(PendingTranslation, DescriptionMilestone.description_id == PendingTranslation.description_id).\
                        filter(PendingTranslation.language_ref == language). \
                        group_by(DescriptionMilestone.milestone).order_by(DescriptionMilestone.milestone).all()

    resultset2 = session.query(DescriptionMilestone.milestone,func.count(DescriptionMilestone.description_id)). \
                        group_by(DescriptionMilestone.milestone).order_by(DescriptionMilestone.milestone).all()

    params = dict()
    resultdict = dict(resultset)
    resultdict1 = dict(resultset1)
    params['lang'] = lang
    params['user'] = user
    params['milestones'] = [(r[0], {
        'total': r[1],
        'translated': resultdict.get(r[0], 0),
        'pending': resultdict1.get(r[0], 0),
        'percent': (resultdict.get(r[0], 0) * 100 / r[1])
    }) for r in resultset2]

    return render_to_response("milestones_lang.html",
                              params,
                              context_instance=RequestContext(request))
Exemple #39
0
def view_coordinator(session, request):
    """ Handle coordinator language management """

    user = get_user(request, session)
    language = user.lastlanguage_ref

    auth = user.get_authority(language)

    if auth.auth_level != auth.AUTH_LEVEL_COORDINATOR:
        return HttpResponseForbidden('<h1>Forbidden</h1>')

    lang = session.query(Languages).get(language)
    if not lang or not lang.enabled_ddtss:
        raise Http404()

    form = None
    if request.method == "POST":
        if 'cancel' in request.POST:
            return redirect('ddtss_index_lang', language)
        if 'update' in request.POST:
            form = CoordinatorAdminForm(session,data=request.POST)
            if form.is_valid():
                # Modify language
                lang.milestone_high = form.cleaned_data['milestone_high']
                lang.milestone_medium = form.cleaned_data['milestone_medium']
                lang.milestone_low = form.cleaned_data['milestone_low']
                # This little dance is needed because just changing the model doesn't mark the object dirty
                model = lang.translation_model
                session.expire(lang, ['translation_model'])
                model.from_form_fields(form.cleaned_data)
                lang.translation_model = model

                messages.info(request, 'Translation model configuration updated')
                session.commit()
        if 'add' in request.POST:
            # Add user as language coordinator
            new_user = session.query(Users).get(request.POST.get('username'))
            if not new_user:
                messages.error(request, 'User %r not found' % request.POST.get('username'))
            else:
                # User exists, add or update authority
                new_auth = new_user.get_authority(language)
                new_auth.auth_level = UserAuthority.AUTH_LEVEL_TRUSTED
                session.add(new_auth)
                messages.info(request, 'User %s now trusted' % new_user.username)
                session.commit()
        if 'del' in request.POST:
            # Remove user as language coordinator
            new_user = session.query(Users).get(request.POST.get('del'))
            if not new_user:
                messages.error(request, 'User %r not found' % request.POST.get('username'))
            else:
                # User exists, drop back to trusted user
                new_auth = new_user.get_authority(language)
                new_auth.auth_level = UserAuthority.AUTH_LEVEL_NONE
                messages.info(request, 'User %s no longer trusted' % new_user.username)
                session.commit()

    collectionmilestones = session.query(CollectionMilestone).\
            filter(CollectionMilestone.nametype==2). \
            filter(CollectionMilestone.name==language).all()

    if not form:
        form_fields = dict(milestone_high=lang.milestone_high,\
                           milestone_medium=lang.milestone_medium,\
                           milestone_low=lang.milestone_low)
        form_fields.update(lang.translation_model.to_form_fields())
        form = CoordinatorAdminForm(session, form_fields)

    return render_to_response("ddtss/coordinator.html", {\
            'lang': lang,\
            'form': form,\
            'collectionmilestones': collectionmilestones},\
                              context_instance=RequestContext(request))
Exemple #40
0
def view_coordinator(session, request, language):
    """ Handle coordinator language management """

    user = get_user(request, session)

    auth = user.get_authority(language)

    if not user.is_coordinator:
        return HttpResponseForbidden('<h1>Forbidden</h1>')

    lang = session.query(Languages).get(language)
    if not lang or not lang.enabled_ddtss:
        raise Http404()

    user.lastlanguage_ref = language

    form = None
    if request.method == "POST":
        if 'cancel' in request.POST:
            return redirect('ddtss_index_lang', language)
        if 'update' in request.POST:
            form = CoordinatorAdminForm(session,data=request.POST)
            if form.is_valid():
                # Modify language
                lang.milestone_high = form.cleaned_data['milestone_high']
                lang.milestone_medium = form.cleaned_data['milestone_medium']
                lang.milestone_low = form.cleaned_data['milestone_low']
                # This little dance is needed because just changing the model doesn't mark the object dirty
                model = lang.translation_model
                session.expire(lang, ['translation_model'])
                model.from_form_fields(form.cleaned_data)
                lang.translation_model = model

                messages.info(request, 'Translation model configuration updated')
                session.commit()
        if 'add' in request.POST:
            # Add user as language coordinator
            new_user = session.query(Users).get(request.POST.get('username'))
            if not new_user:
                messages.error(request, 'User %r not found' % request.POST.get('username'))
            else:
                # User exists, add or update authority
                new_auth = new_user.get_authority(language)
                new_auth.auth_level = UserAuthority.AUTH_LEVEL_TRUSTED
                session.add(new_auth)
                messages.info(request, 'User %s now trusted' % new_user.username)
                session.commit()
        if 'del' in request.POST:
            # Remove user as language coordinator
            new_user = session.query(Users).get(request.POST.get('del'))
            if not new_user:
                messages.error(request, 'User %r not found' % request.POST.get('username'))
            else:
                # User exists, drop back to trusted user
                new_auth = new_user.get_authority(language)
                new_auth.auth_level = UserAuthority.AUTH_LEVEL_NONE
                messages.info(request, 'User %s no longer trusted' % new_user.username)
                session.commit()

    collectionmilestones = session.query(CollectionMilestone).\
            filter(CollectionMilestone.nametype==CollectionMilestone.NAME_TYPE_LANGUAGE). \
            filter(CollectionMilestone.name==language).all()

    if not form:
        form_fields = dict(milestone_high=lang.milestone_high,\
                           milestone_medium=lang.milestone_medium,\
                           milestone_low=lang.milestone_low)
        form_fields.update(lang.translation_model.to_form_fields())
        form = CoordinatorAdminForm(session, form_fields)

    return render_to_response("ddtss/coordinator.html", {
            'user': user,
            'lang': lang,
            'form': form,
            'collectionmilestones': collectionmilestones},
                              context_instance=RequestContext(request))