Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

# Copyright (C) 2015 Chintalagiri Shashank 

# 

# This file is part of Tendril. 

# 

# This program is free software: you can redistribute it and/or modify 

# it under the terms of the GNU Affero General Public License as published by 

# the Free Software Foundation, either version 3 of the License, or 

# (at your option) any later version. 

# 

# This program is distributed in the hope that it will be useful, 

# but WITHOUT ANY WARRANTY; without even the implied warranty of 

# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 

# GNU Affero General Public License for more details. 

# 

# You should have received a copy of the GNU Affero General Public License 

# along with this program.  If not, see <http://www.gnu.org/licenses/>. 

""" 

This file is part of tendril 

See the COPYING, README, and INSTALL files for more information 

""" 

 

 

from flask import render_template, request 

from flask_user import login_required 

 

import iec60063 

 

from . import conventions as blueprint 

 

from tendril.conventions import electronics 

from tendril.conventions import motifs 

from tendril.inventory import guidelines 

 

from tendril.utils.fsutils import get_path_breadcrumbs 

 

 

def get_motifs(): 

    return motifs.get_motifs_list() 

 

 

def get_motif_render(motifname): 

    return motifs.create_motif_object(motifname + '.1').get_configdict_stub() 

 

 

def get_iec60063_params(): 

    stype = request.args.get('type') 

    if stype and not stype.strip(): 

        stype = None 

 

    series = request.args.get('series') 

    if series and not series.strip(): 

        series = None 

 

    start = request.args.get('start') 

    try: 

        if not start.strip(): 

            start = None 

    except AttributeError: 

        start = None 

 

    end = request.args.get('end') 

    try: 

        if not end.strip(): 

            end = None 

    except AttributeError: 

        end = None 

 

    if series is None: 

        series = 'E24' 

    if stype is None: 

        stype = '' 

 

    return get_iec60063_contextpart(stype, series, start, end) 

 

 

def get_iec60063_contextpart(stype, series, start=None, end=None): 

    return {"iec60063vals": [i for i in iec60063.gen_vals(iec60063.get_series(series),  # noqa 

                                                          iec60063.get_ostr(stype),  # noqa 

                                                          start, end)], 

            "iec60063stype": stype, 

            "iec60063series": series, 

            "iec60063start": start, 

            "iec60063end": end, 

            } 

 

 

@blueprint.route('/motif/<path:motifname>/') 

@login_required 

def motif_description(motifname=None): 

    stage = {'crumbroot': "/conventions", 

             'motifname': motifname, 

             'motif': get_motif_render(motifname), 

             'breadcrumbs': get_path_breadcrumbs(motifname, rootst="Conventions  /  Motifs")}  # noqa 

    return render_template('motif.html', stage=stage, 

                           pagetitle='MOTIF ' + motifname) 

 

 

def get_devices(): 

    rval = [] 

    for device, desc in electronics.DEVICE_CLASSES_DOC: 

        rval.append((device, 

                     electronics.fpiswire(device), 

                     electronics.fpismodlen(device), 

                     electronics.no_fp(device), 

                     desc)) 

    return rval 

 

 

@blueprint.route('/', methods=['GET']) 

@login_required 

def main(): 

 

    stage = {'motifs': get_motifs(), 

             'devices': get_devices(), 

             'guidelines': guidelines.electronics_qty.get_guideline_table()} 

    if request.method == 'GET': 

        stage.update(get_iec60063_params()) 

    return render_template('conventions_main.html', stage=stage, 

                           pagetitle='Conventions')