Esempio n. 1
0
def index(request):
    ctx = RequestContext(request)
    if request.user.is_authenticated():
        API_KEY = request.user.api_key
        ENDPOINT = request.build_absolute_uri(get_endpoint())
        from ..rest.rester import DtuRester
        with DtuRester(API_KEY, endpoint=ENDPOINT) as mpr:
            try:
                prov = mpr.get_provenance()
                ctx['title'] = prov.pop('title')
                ctx['provenance'] = render_dict(prov, webapp=True)
                ctx['filters'] = {}
                filters = ['C']
                keys, subkeys = ['ΔE-KS', 'ΔE-QP'], ['indirect', 'direct']
                filters += ['_'.join([k, sk]) for k in keys for sk in subkeys]
                if request.method == 'POST':
                    ctx['filters'] = dict(
                        (f, map(float, request.POST['{}_slider'.format(f)].split(',')))
                        for f in filters
                    )
                df = mpr.get_contributions(bandgap_range=ctx['filters'])
                if request.method == 'GET':
                    for f in filters:
                        values = [float(v.split()[0]) for i,v in df[f.replace('_', '##')].iteritems()]
                        ctx['filters'][f] = [min(values), max(values)]
                ctx['nresults'] = df.shape[0]
                ctx['table'] = render_dataframe(df, webapp=True)
            except Exception as ex:
                ctx['alert'] = str(ex)
    else:
        ctx.update({'alert': 'Please log in!'})
    return render_to_response("dtu_explorer_index.html", ctx)
Esempio n. 2
0
def index(request):
    ctx = RequestContext(request)
    if request.user.is_authenticated():
        if request.user.groups.filter(name='slac_mose2').exists():
            from webtzite.models import RegisteredUser
            user = RegisteredUser.objects.get(username=request.user.username)
            from ..rest.rester import SlacMose2Rester
            with SlacMose2Rester(user.api_key, endpoint=get_endpoint(request)) as mpr:
                try:
                    prov = mpr.get_provenance()
                    ctx['title'] = prov.pop('title')
                    ctx['provenance'] = render_dict(prov, webapp=True)

                    contribs = mpr.get_contributions()
                    ctx['graphs'], ctx['uuids'] = [], []
                    for plot in contribs['graphs']:
                        rplot = render_plot(plot, webapp=True)
                        ctx['graphs'].append(rplot[0])
                        ctx['uuids'].append(str(rplot[1]))

                    ctx['traces'] = dumps(contribs['traces'])
                    ctx['trace_names'] = [trace['name'] for trace in contribs['traces']]
                except Exception as ex:
                    ctx.update({'alert': str(ex)})
        else:
            ctx.update({'alert': msg})
    else:
        return redirect('{}?next={}'.format(reverse('cas_ng_login'), request.path))
    return render_to_response("slac_mose2_explorer_index.html", ctx)
Esempio n. 3
0
def index(request):
    ctx = RequestContext(request)
    if request.user.is_authenticated():
        if request.user.groups.filter(name='slac_mose2').exists():
            API_KEY = request.user.api_key
            ENDPOINT = request.build_absolute_uri(get_endpoint())
            from ..rest.rester import SlacMose2Rester
            with SlacMose2Rester(API_KEY, endpoint=ENDPOINT) as mpr:
                try:
                    prov = mpr.get_provenance()
                    ctx['title'] = prov.pop('title')
                    ctx['provenance'] = render_dict(prov, webapp=True)

                    contribs = mpr.get_contributions()
                    ctx['graphs'], ctx['uuids'] = [], []
                    for plot in contribs['graphs']:
                        rplot = render_plot(plot, webapp=True)
                        ctx['graphs'].append(rplot[0])
                        ctx['uuids'].append(str(rplot[1]))

                    ctx['traces'] = dumps(contribs['traces'])
                    ctx['trace_names'] = [trace['name'] for trace in contribs['traces']]
                    mod = os.path.dirname(__file__).split(os.sep)[-2]
                    ctx['static_url'] = '_'.join([STATIC_URL[:-1], mod])
                except Exception as ex:
                    ctx.update({'alert': str(ex)})
        else:
            ctx.update({'alert': 'access restricted to "slac_mose2" user group!'})
    else:
        ctx.update({'alert': 'Please log in!'})
    return render_to_response("slac_mose2_explorer_index.html", ctx)
Esempio n. 4
0
def index(request):
    ctx = RequestContext(request)
    if request.user.is_authenticated():
        if request.user.groups.filter(name='slac_mose2').exists():
            from webtzite.models import RegisteredUser
            user = RegisteredUser.objects.get(username=request.user.username)
            from ..rest.rester import SlacMose2Rester
            with SlacMose2Rester(user.api_key,
                                 endpoint=get_endpoint(request)) as mpr:
                try:
                    prov = mpr.get_provenance()
                    ctx['title'] = prov.pop('title')
                    ctx['provenance'] = render_dict(prov, webapp=True)

                    contribs = mpr.get_contributions()
                    ctx['graphs'], ctx['uuids'] = [], []
                    for plot in contribs['graphs']:
                        rplot = render_plot(plot, webapp=True)
                        ctx['graphs'].append(rplot[0])
                        ctx['uuids'].append(str(rplot[1]))

                    ctx['traces'] = dumps(contribs['traces'])
                    ctx['trace_names'] = [
                        trace['name'] for trace in contribs['traces']
                    ]
                except Exception as ex:
                    ctx.update({'alert': str(ex)})
        else:
            ctx.update({'alert': msg})
    else:
        return redirect('{}?next={}'.format(reverse('cas_ng_login'),
                                            request.path))
    return render_to_response("slac_mose2_explorer_index.html", ctx)
Esempio n. 5
0
def index(request):
    ctx = RequestContext(request)
    if request.user.is_authenticated():
        from webtzite.models import RegisteredUser
        user = RegisteredUser.objects.get(username=request.user.username)
        from ..rest.rester import DtuRester
        with DtuRester(user.api_key, endpoint=get_endpoint(request)) as mpr:
            try:
                prov = mpr.get_provenance()
                ctx['title'] = prov.pop('title')
                ctx['provenance'] = render_dict(prov, webapp=True)
                ctx['filters'] = {}
                filters = ['C']
                keys, subkeys = ['ΔE-KS', 'ΔE-QP'], ['indirect', 'direct']
                filters += ['_'.join([k, sk]) for k in keys for sk in subkeys]
                if request.method == 'POST':
                    ctx['filters'] = dict(
                        (f, map(float, request.POST['{}_slider'.format(f)].split(',')))
                        for f in filters
                    )
                df = mpr.get_contributions(bandgap_range=ctx['filters'])
                if request.method == 'GET':
                    for f in filters:
                        values = [float(v.split()[0]) for i,v in df[f.replace('_', '##')].iteritems()]
                        ctx['filters'][f] = [min(values), max(values)]
                ctx['nresults'] = df.shape[0]
                ctx['table'] = render_dataframe(df, webapp=True)
            except Exception as ex:
                ctx['alert'] = str(ex)
    else:
        return redirect('{}?next={}'.format(reverse('cas_ng_login'), request.path))
    return render_to_response("dtu_explorer_index.html", ctx)
Esempio n. 6
0
def index(request):
    ctx = RequestContext(request)
    if request.user.is_authenticated():
        from ..rest.rester import PerovskitesDiffusionRester
        with PerovskitesDiffusionRester(user.api_key, endpoint=get_endpoint(request)) as mpr:
            try:
                prov = mpr.get_provenance()
                ctx['title'] = prov.pop('title')
                ctx['provenance'] = render_dict(prov, webapp=True)
                ctx['abbreviations'] = render_dict(mpr.get_abbreviations(), webapp=True)
                ctx['table'] = render_dataframe(mpr.get_contributions(), webapp=True)
            except Exception as ex:
                ctx.update({'alert': str(ex)})
    else:
        return redirect('{}?next={}'.format(reverse('cas_ng_login'), request.path))
    return render_to_response("perovskites_diffusion_explorer_index.html", ctx)
Esempio n. 7
0
def index(request):
    ctx = RequestContext(request)
    if request.user.is_authenticated():
        API_KEY = request.user.api_key
        ENDPOINT = request.build_absolute_uri(get_endpoint())
        from ..rest.rester import PerovskitesDiffusionRester
        with PerovskitesDiffusionRester(API_KEY, endpoint=ENDPOINT) as mpr:
            try:
                prov = mpr.get_provenance()
                ctx['title'] = prov.pop('title')
                ctx['provenance'] = render_dict(prov, webapp=True)
                ctx['abbreviations'] = render_dict(mpr.get_abbreviations(), webapp=True)
                ctx['table'] = render_dataframe(mpr.get_contributions(), webapp=True)
            except Exception as ex:
                ctx.update({'alert': str(ex)})
    else:
        ctx.update({'alert': 'Please log in!'})
    return render_to_response("perovskites_diffusion_explorer_index.html", ctx)
Esempio n. 8
0
def index(request):
    ctx = RequestContext(request)
    if request.user.is_authenticated():
        API_KEY = request.user.api_key
        ENDPOINT = request.build_absolute_uri(get_endpoint())
        from ..rest.rester import PerovskitesDiffusionRester
        with PerovskitesDiffusionRester(API_KEY, endpoint=ENDPOINT) as mpr:
            try:
                prov = mpr.get_provenance()
                title = prov.get('title')
                provenance = render_dict(prov, webapp=True)
                abbreviations = render_dict(mpr.get_abbreviations(),
                                            webapp=True)
                table = render_dataframe(mpr.get_contributions(), webapp=True)
            except Exception as ex:
                ctx.update({'alert': str(ex)})
    else:
        ctx.update({'alert': 'Please log in!'})
    return render_to_response("perovskites_diffusion_explorer_index.html",
                              locals(), ctx)
Esempio n. 9
0
def index(request):
    ctx = RequestContext(request)
    if request.user.is_authenticated():
        API_KEY = request.user.api_key
        ENDPOINT = request.build_absolute_uri(get_endpoint())
        with DtuRester(API_KEY, endpoint=ENDPOINT) as mpr:
            try:
                provenance = render_dict(mpr.get_provenance(), webapp=True)
                table = render_dataframe(mpr.get_contributions(), webapp=True)
            except Exception as ex:
                ctx.update({'alert': str(ex)})
    else:
        ctx.update({'alert': 'Please log in!'})
    return render_to_response("dtu_explorer_index.html", locals(), ctx)
Esempio n. 10
0
def index(request):
    ctx = RequestContext(request)
    if request.user.is_authenticated():
        API_KEY = request.user.api_key
        ENDPOINT = request.build_absolute_uri(get_endpoint())
        with SlacMoSe2Rester(API_KEY, endpoint=ENDPOINT) as mpr:
            try:
                provenance = render_dict(mpr.get_provenance(), webapp=True)
                graphs = {}
                for key, plot in mpr.get_graphs().items():
                    graphs[key] = render_plot(plot, webapp=True)
            except Exception as ex:
                ctx.update({'alert': str(ex)})
    else:
        ctx.update({'alert': 'Please log in!'})
    return render_to_response("slac_mose2_explorer_index.html", locals(), ctx)
Esempio n. 11
0
def index(request):
    ctx = RequestContext(request)
    if request.user.is_authenticated():
        from ..rest.rester import DiluteSoluteDiffusionRester
        with DiluteSoluteDiffusionRester(
                user.api_key, endpoint=get_endpoint(request)) as mpr:
            try:
                prov = mpr.get_provenance()
                ctx['title'] = prov.pop('title')
                ctx['provenance'] = render_dict(prov, webapp=True)
                ranges, contribs = {}, []

                for host in mpr.get_hosts():
                    contrib = {}
                    df = mpr.get_contributions(host)
                    contrib['table'] = render_dataframe(df,
                                                        webapp=True,
                                                        paginate=False)
                    contrib['formula'] = host
                    contrib.update(mpr.get_table_info(host))
                    contrib['short_cid'] = get_short_object_id(contrib['cid'])
                    contribs.append(contrib)

                    for col in df.columns:
                        if col == 'El.':
                            continue
                        low, upp = min(df[col]), max(df[col])
                        if col == 'Z':
                            low -= 1
                            upp += 1
                        if col not in ranges:
                            ranges[col] = [low, upp]
                        else:
                            if low < ranges[col][0]:
                                ranges[col][0] = low
                            if upp > ranges[col][1]:
                                ranges[col][1] = upp

                ctx['ranges'] = dumps(ranges)
                ctx['contribs'] = contribs
            except Exception as ex:
                ctx['alert'] = str(ex)
    else:
        return redirect('{}?next={}'.format(reverse('cas_ng_login'),
                                            request.path))
    return render_to_response("dilute_solute_diffusion_explorer_index.html",
                              ctx)
Esempio n. 12
0
def index(request):
    from webtzite.models import RegisteredUser
    ctx = RequestContext(request)
    if request.user.is_authenticated():
        user = RegisteredUser.objects.get(username=request.user.username)
        from ..rest.rester import DefectGenomePcfcMaterialsRester
        with DefectGenomePcfcMaterialsRester(user.api_key, endpoint=get_endpoint(request)) as mpr:
            try:
                prov = mpr.get_provenance()
                ctx['title'] = prov.pop('title')
                ctx['provenance'] = render_dict(prov, webapp=True)
                ctx['table'] = render_dataframe(mpr.get_contributions(), webapp=True)
            except Exception as ex:
                ctx.update({'alert': str(ex)})
    else:
        return redirect('{}?next={}'.format(reverse('cas_ng_login'), request.path))
    return render_to_response("defect_genome_pcfc_materials_explorer_index.html", ctx)
Esempio n. 13
0
def index(request):
    ctx = RequestContext(request)
    if request.user.is_authenticated():
        API_KEY = request.user.api_key
        ENDPOINT = request.build_absolute_uri(get_endpoint())
        from ..rest.rester import DiluteSoluteDiffusionRester
        with DiluteSoluteDiffusionRester(API_KEY, endpoint=ENDPOINT) as mpr:
            try:
                prov = mpr.get_provenance()
                ctx['title'] = prov.pop('title')
                ctx['provenance'] = render_dict(prov, webapp=True)
                ranges, contribs = {}, []

                for host in mpr.get_hosts():
                    contrib = {}
                    df = mpr.get_contributions(host)
                    contrib['table'] = render_dataframe(df, webapp=True, paginate=False)
                    contrib['formula'] = host
                    contrib.update(mpr.get_table_info(host))
                    contrib['short_cid'] = get_short_object_id(contrib['cid'])
                    contribs.append(contrib)

                    for col in df.columns:
                        if col == 'El.':
                            continue
                        low, upp = min(df[col]), max(df[col])
                        if col == 'Z':
                            low -= 1
                            upp += 1
                        if col not in ranges:
                            ranges[col] = [low, upp]
                        else:
                            if low < ranges[col][0]:
                                ranges[col][0] = low
                            if upp > ranges[col][1]:
                                ranges[col][1] = upp

                ctx['ranges'] = dumps(ranges)
                ctx['contribs'] = contribs
            except Exception as ex:
                ctx['alert'] = str(ex)
    else:
        ctx['alert'] = 'Please log in!'
    return render_to_response("dilute_solute_diffusion_explorer_index.html", ctx)
Esempio n. 14
0
def index(request):
    ctx = RequestContext(request)
    if request.user.is_authenticated():
        from webtzite.models import RegisteredUser
        user = RegisteredUser.objects.get(username=request.user.username)
        from ..rest.rester import SwfRester
        with SwfRester(user.api_key, endpoint=get_endpoint(request)) as mpr:
            try:
                prov = mpr.get_provenance()
                ctx['title'] = prov.pop('title')
                ctx['provenance'] = render_dict(prov, webapp=True)
                df = mpr.get_contributions()
                ctx['table'] = render_dataframe(df, webapp=True)
            except Exception as ex:
                ctx.update({'alert': str(ex)})
    else:
        return redirect('{}?next={}'.format(reverse('cas_ng_login'),
                                            request.path))
    return render_to_response("swf_explorer_index.html", ctx)
Esempio n. 15
0
def index(request):
    ctx = RequestContext(request)
    if request.user.is_authenticated():
        API_KEY = request.user.api_key
        ENDPOINT = request.build_absolute_uri(get_endpoint())
        from ..rest.rester import SwfRester
        with SwfRester(API_KEY, endpoint=ENDPOINT) as mpr:
            try:
                prov = mpr.get_provenance()
                title = prov.get('title')
                provenance = render_dict(prov, webapp=True)
                table = render_dataframe(mpr.get_contributions(), webapp=True)
                mod = os.path.dirname(__file__).split(os.sep)[-2]
                static_url = '_'.join([STATIC_URL[:-1], mod])
            except Exception as ex:
                ctx.update({'alert': str(ex)})
    else:
        ctx.update({'alert': 'Please log in!'})
    return render_to_response("swf_explorer_index.html", locals(), ctx)
Esempio n. 16
0
def index(request):
    ctx = RequestContext(request)
    if request.user.is_authenticated():
        API_KEY = request.user.api_key
        ENDPOINT = request.build_absolute_uri(get_endpoint())
        from ..rest.rester import BoltztrapRester
        with BoltztrapRester(API_KEY, endpoint=ENDPOINT) as mpr:
            try:
                prov = mpr.get_provenance()
                title = prov.get('title')
                provenance = render_dict(prov, webapp=True)
                tables = {}
                for doping in ['n', 'p']:
                    df = mpr.get_contributions(doping=doping)
                    tables[doping] = render_dataframe(df, webapp=True)
            except Exception as ex:
                ctx.update({'alert': str(ex)})
    else:
        ctx.update({'alert': 'Please log in!'})
    return render_to_response("boltztrap_explorer_index.html", locals(), ctx)
Esempio n. 17
0
def index(request):
    ctx = RequestContext(request)
    if request.user.is_authenticated():
        API_KEY = request.user.api_key
        ENDPOINT = request.build_absolute_uri(get_endpoint())
        from ..rest.rester import AlsBeamlineRester
        with AlsBeamlineRester(API_KEY, endpoint=ENDPOINT) as mpr:
            try:
                prov = mpr.get_provenance()
                ctx['title'] = prov.pop('title')
                ctx['provenance'] = render_dict(prov, webapp=True)
                ctx['table'] = render_dataframe(mpr.get_contributions(), webapp=True)
                for typ in ['XAS', 'XMCD']:
                    html, divid = render_plot(mpr.get_all_spectra(typ), webapp=True)
                    ctx[typ] = {'html': html, 'divid': divid}
            except Exception as ex:
                ctx.update({'alert': str(ex)})
    else:
        ctx.update({'alert': 'Please log in!'})
    return render_to_response("als_beamline_explorer_index.html", ctx)
Esempio n. 18
0
def index(request):
    ctx = RequestContext(request)
    if request.user.is_authenticated():
        API_KEY = request.user.api_key
        ENDPOINT = request.build_absolute_uri(get_endpoint())
        from ..rest.rester import SwfRester
        with SwfRester(API_KEY, endpoint=ENDPOINT) as mpr:
            try:
                prov = mpr.get_provenance()
                ctx['title'] = prov.pop('title')
                ctx['provenance'] = render_dict(prov, webapp=True)
                df = mpr.get_contributions()
                ctx['table'] = render_dataframe(df, webapp=True)
                mod = os.path.dirname(__file__).split(os.sep)[-2]
                ctx['static_url'] = '_'.join([STATIC_URL[:-1], mod])
            except Exception as ex:
                ctx.update({'alert': str(ex)})
    else:
        ctx.update({'alert': 'Please log in!'})
    return render_to_response("swf_explorer_index.html", ctx)
Esempio n. 19
0
def index(request):
    ctx = RequestContext(request)
    if request.user.is_authenticated():
        API_KEY = request.user.api_key
        ENDPOINT = request.build_absolute_uri(get_endpoint())
        from ..rest.rester import Mno2PhaseSelectionRester
        with Mno2PhaseSelectionRester(API_KEY, endpoint=ENDPOINT) as mpr:
            try:
                prov = mpr.get_provenance()
                ctx['title'] = prov.pop('title')
                ctx['provenance'] = render_dict(prov, webapp=True)
                tables = {}
                for phase in mpr.get_phases():
                    df = mpr.get_contributions(phase=phase)
                    tables[phase] = render_dataframe(df, webapp=True)
                ctx['tables'] = tables
            except Exception as ex:
                ctx.update({'alert': str(ex)})
    else:
        ctx.update({'alert': 'Please log in!'})
    return render_to_response("MnO2_phase_selection_explorer_index.html", ctx)
Esempio n. 20
0
def index(request):
    ctx = RequestContext(request)
    if request.user.is_authenticated():
        API_KEY = request.user.api_key
        ENDPOINT = request.build_absolute_uri(get_endpoint())
        from ..rest.rester import Mno2PhaseSelectionRester
        with Mno2PhaseSelectionRester(API_KEY, endpoint=ENDPOINT) as mpr:
            try:
                prov = mpr.get_provenance()
                title = prov.get('title')
                provenance = render_dict(prov, webapp=True)
                tables = {}
                for phase in mpr.get_phases():
                    df = mpr.get_contributions(phase=phase)
                    tables[phase] = render_dataframe(df, webapp=True)
            except Exception as ex:
                ctx.update({'alert': str(ex)})
    else:
        ctx.update({'alert': 'Please log in!'})
    return render_to_response("MnO2_phase_selection_explorer_index.html",
                              locals(), ctx)
Esempio n. 21
0
def index(request):
    ctx = RequestContext(request)
    if request.user.is_authenticated():
        API_KEY = request.user.api_key
        ENDPOINT = request.build_absolute_uri(get_endpoint())
        from ..rest.rester import BoltztrapRester
        with BoltztrapRester(API_KEY, endpoint=ENDPOINT) as mpr:
            try:
                prov = mpr.get_provenance()
                ctx['title'] = prov.pop('title')
                ctx['provenance'] = render_dict(prov, webapp=True)
                df = mpr.get_contributions(limit=3)
                url = request.build_absolute_uri(request.path) + 'rest/table'
                ctx['table'] = render_dataframe(
                    df, url=url, total_records=mpr.count(), webapp=True
                )
            except Exception as ex:
                ctx.update({'alert': str(ex)})
    else:
        ctx.update({'alert': 'Please log in!'})
    return render_to_response("boltztrap_explorer_index.html", ctx)
Esempio n. 22
0
def index(request):
    ctx = RequestContext(request)
    if request.user.is_authenticated():
        user = RegisteredUser.objects.get(username=request.user.username)
        from ..rest.rester import Mno2PhaseSelectionRester
        with Mno2PhaseSelectionRester(user.api_key,
                                      endpoint=get_endpoint(request)) as mpr:
            try:
                prov = mpr.get_provenance()
                ctx['title'] = prov.pop('title')
                ctx['provenance'] = render_dict(prov, webapp=True)
                tables = {}
                for phase in mpr.get_phases():
                    df = mpr.get_contributions(phase=phase)
                    tables[phase] = render_dataframe(df, webapp=True)
                ctx['tables'] = tables
            except Exception as ex:
                ctx.update({'alert': str(ex)})
    else:
        return redirect('{}?next={}'.format(reverse('cas_ng_login'),
                                            request.path))
    return render_to_response("MnO2_phase_selection_explorer_index.html", ctx)
Esempio n. 23
0
def isographs(request):
    ctx = RequestContext(request)
    if request.user.is_authenticated:
        user = RegisteredUser.objects.get(username=request.user.username)
        if user.groups.filter(name='redox_thermo_csp').exists():
            from ..rest.rester import RedoxThermoCspRester
            with RedoxThermoCspRester(user.api_key, endpoint=get_endpoint(request)) as mpr:
                try:
                    prov = mpr.get_provenance()
                    ctx['title'] = prov.pop('title')
                    ctx['provenance'] = render_dict(prov, webapp=True)
                    df = mpr.get_contributions()
                    url = request.build_absolute_uri(request.path) + 'rest/table'
                    ctx['table'] = render_dataframe(
                        df, webapp=True,
                        #url=url, total_records=mpr.count()
                    )
                except Exception as ex:
                    ctx.update({'alert': str(ex)})
        else:
            ctx.update({'alert': access_msg})
    else:
        return redirect('{}?next={}'.format(reverse('webtzite:cas_ng_login'), request.path))
    return render_to_response("redox_thermo_csp_explorer_isographs.html", ctx.flatten())
Esempio n. 24
0
def index(request):
    ctx = RequestContext(request)
    if request.user.is_authenticated():
        from webtzite.models import RegisteredUser
        user = RegisteredUser.objects.get(username=request.user.username)
        from ..rest.rester import DtuRester
        with DtuRester(user.api_key, endpoint=get_endpoint(request)) as mpr:
            try:
                prov = mpr.get_provenance()
                ctx['title'] = prov.pop('title')
                ctx['provenance'] = render_dict(prov, webapp=True)
                ctx['filters'] = {}
                filters = ['C']
                keys, subkeys = ['ΔE-KS', 'ΔE-QP'], ['indirect', 'direct']
                filters += ['_'.join([k, sk]) for k in keys for sk in subkeys]
                if request.method == 'POST':
                    ctx['filters'] = dict(
                        (f,
                         map(float, request.POST['{}_slider'.format(f)].split(
                             ','))) for f in filters)
                df = mpr.get_contributions(bandgap_range=ctx['filters'])
                if request.method == 'GET':
                    for f in filters:
                        values = [
                            float(v.split()[0])
                            for i, v in df[f.replace('_', '##')].iteritems()
                        ]
                        ctx['filters'][f] = [min(values), max(values)]
                ctx['nresults'] = df.shape[0]
                ctx['table'] = render_dataframe(df, webapp=True)
            except Exception as ex:
                ctx['alert'] = str(ex)
    else:
        return redirect('{}?next={}'.format(reverse('cas_ng_login'),
                                            request.path))
    return render_to_response("dtu_explorer_index.html", ctx)
Esempio n. 25
0
def index(request):
    from webtzite.models import RegisteredUser
    ctx = RequestContext(request)
    if request.user.is_authenticated():
        user = RegisteredUser.objects.get(username=request.user.username)
        from ..rest.rester import AlsBeamlineRester
        with AlsBeamlineRester(user.api_key,
                               endpoint=get_endpoint(request)) as mpr:
            try:
                prov = mpr.get_provenance()
                ctx['title'] = prov.pop('title')
                ctx['provenance'] = render_dict(prov, webapp=True)
                ctx['table'] = render_dataframe(mpr.get_contributions(),
                                                webapp=True)
                for typ in ['XAS', 'XMCD']:
                    html, divid = render_plot(mpr.get_all_spectra(typ),
                                              webapp=True)
                    ctx[typ] = {'html': html, 'divid': divid}
            except Exception as ex:
                ctx.update({'alert': str(ex)})
    else:
        return redirect('{}?next={}'.format(reverse('cas_ng_login'),
                                            request.path))
    return render_to_response("als_beamline_explorer_index.html", ctx)
Esempio n. 26
0
def get_card(request, cid, db_type=None, mdb=None):
    """
    @api {post} /card/:cid?API_KEY=:api_key Contribution Card/Preview
    @apiVersion 0.2.0
    @apiName PostGetCard
    @apiGroup Contribution

    @apiDescription Either returns a string containing html for hierarchical
    data, or if existent, a list of URLs for static versions of embedded graphs.

    @apiParam {String} api_key User's unique API_KEY
    @apiParam {json} provenance_keys List of provenance keys

    @apiSuccess {String} created_at Response timestamp
    @apiSuccess {Bool} valid_response Response is valid
    @apiSuccess {String} response Response preview of h- or t-data/graphs ("card")

    @apiSuccessExample Success-Response:
        HTTP/1.1 200 OK
        {
            "created_at": "2017-08-09T19:59:59.936618",
            "valid_response": true,
            "response": ["<graph-url>"]
        }
    """
    from mpcontribs.io.core.components import Tree, Plots, render_plot
    from mpcontribs.io.core.utils import nested_dict_iter
    from mpcontribs.io.core.recdict import RecursiveDict, render_dict
    from django.template import Template, Context
    from django.core.urlresolvers import reverse
    from mpcontribs.config import mp_id_pattern
    prov_keys = loads(request.POST.get('provenance_keys', '["title"]'))
    contrib = mdb.contrib_ad.query_contributions(
        {'_id': ObjectId(cid)},
        projection={'_id': 0, 'mp_cat_id': 1, 'content': 1, 'collaborators': 1}
    )[0]
    mpid = contrib['mp_cat_id']
    hdata = Tree(contrib['content'])
    plots = Plots(contrib['content'])
    title = hdata.get('title', 'No title available.')
    descriptions = hdata.get('description', 'No description available.').strip().split('.', 1)
    description = '{}.'.format(descriptions[0])
    if len(descriptions) > 1 and descriptions[1]:
        description += '''<a href="#"
        class="read_more">More &raquo;</a><span class="more_text"
        hidden>{}</span>'''.format(descriptions[1])
    authors = hdata.get('authors', 'No authors available.').split(',', 1)
    provenance = '<h5>{}'.format(authors[0])
    if len(authors) > 1:
        provenance += '''<button class="btn-sm btn-link" type=button
        data-toggle="tooltip" data-placement="bottom"
        data-container="body" title="{}" style="padding: 0px 0px 0px 3px;"
        >et al.</a>'''.format(authors[1].strip())
    provenance += '</h5>'
    dois = hdata.get('dois', hdata.get('urls', '')).split(' ')
    doi_urls = []
    for x in dois:
        if x.startswith('http'):
            doi_urls.append(x)
        else:
            doi_urls.append('https://doi.org/{}'.format(x))
    provenance += ''.join(['''<a href={}
        class="btn btn-link" role=button style="padding: 0"
        target="_blank"><i class="fa fa-book fa-border fa-lg"></i></a>'''.format(x, y)
        for x, y in zip(doi_urls, dois) if x
    ])
    #if plots:
    #    card = []
    #    for name, plot in plots.items():
    #        filename = '{}_{}.png'.format(mpid, name)
    #        cwd = os.path.dirname(__file__)
    #        filepath = os.path.abspath(os.path.join(
    #            cwd, '..', '..', 'webtzite', 'static', 'img', filename
    #        ))
    #        if not os.path.exists(filepath):
    #            render_plot(plot, filename=filepath)
    #        index = request.build_absolute_uri(reverse('webtzite_index')[:-1])
    #        imgdir = '/'.join([index.rsplit('/', 1)[0], 'static', 'img'])
    #        fileurl = '/'.join([imgdir, filename])
    #        card.append(fileurl)
    #else:
    data = RecursiveDict()
    for idx, (k,v) in enumerate(hdata.get('data', {}).items()):
        data[k] = v
        if idx >= 6:
            break # humans can grasp 7 items quickly
    data = render_dict(data, webapp=True)
    is_mp_id = mp_id_pattern.match(mpid)
    collection = 'materials' if is_mp_id else 'compositions'
    more = reverse('mpcontribs_explorer_contribution', args=[collection, cid])
    card = '''
    <div class="panel panel-default">
        <div class="panel-heading">
            <h4 class="panel-title">
                {}
                <a class="btn-sm btn-default pull-right" role="button"
                   style=" margin-top:-6px;"
                   href="{}" target="_blank">More Info</a>
            </h4>
        </div>
        <div class="panel-body" style="padding-left: 0px">
            <div class="col-md-8" style="padding-top: 0px">
                <blockquote class="blockquote" style="font-size: 13px;">{}</blockquote>
            </div>
            <div class="col-md-4 well" style="padding: 0px 0px 5px 5px;">{}</div>
            <div class="col-md-12" style="padding-right: 0px;">{}</div>
        </div>
    </div>
    <script>
    requirejs(['main'], function() {{
        require(['jquery'], function() {{
            $(function(){{
                $("a.read_more").click(function(event){{
                    event.preventDefault();
                    $(this).parents(".blockquote").find(".more_text").show();
                    $(this).parents(".blockquote").find(".read_more").hide();
                }});
            }});
        }});
    }});
    </script>
    '''.format(
            title, more, description, provenance, data
    )
    return {"valid_response": True, "response": card}