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>')
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))
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)
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))
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))
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)
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)
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)
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>')
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))
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>')
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))
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))
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))
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>')
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))
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))
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")
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')
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")
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
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))