django-bom 1.243__py3-none-any.whl → 1.257__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,26 +1,89 @@
1
1
  {% extends 'bom/bom-base.html' %}
2
-
3
2
  {% load static %}
4
3
  {% load materializecss %}
5
4
 
6
5
  {% block head-title %}{{ title }}{% endblock %}
7
6
 
8
7
  {% block content %}
9
- <div class="container-app">
8
+ <div class="container" style="padding-top: 40px; max-width: 1000px;">
10
9
  {% if profile.role == 'A' %}
11
10
  <div class="row">
12
- <form action="{% url 'bom:part-class-edit' part_class_id=part_class.id %}" method="post" class="col s12">
11
+ <form action="{% url 'bom:part-class-edit' part_class_id=part_class.id %}" method="post"
12
+ class="col s12">
13
13
  {% csrf_token %}
14
- {{ part_class_form.non_field_errors }}
15
- {{ part_class_form.code|materializecss:'s12 m2' }}
16
- {{ part_class_form.name|materializecss:'s12 m6' }}
17
- {{ part_class_form.comment|materializecss:'s12 m12' }}
14
+
18
15
  <div class="row">
19
- <div class="col s6">
20
- <a href="{% url 'bom:settings' %}indabom" class="waves-effect waves-light btn-flat grey-text lighten-1" style="margin-left: -16px;">Cancel</a>
16
+ <div class="col s12 m3">
17
+ {{ part_class_form.code|materializecss }}
18
+ </div>
19
+ <div class="col s12 m9">
20
+ {{ part_class_form.name|materializecss }}
21
+ </div>
22
+ <div class="col s12">
23
+ {{ part_class_form.comment|materializecss }}
24
+ </div>
25
+ </div>
26
+
27
+ <div class="row" style="margin-top: 40px; margin-bottom: 20px;">
28
+ <div class="col s12">
29
+ <h5>Property Definitions</h5>
30
+ <p class="grey-text text-darken-1">Define the custom fields available to parts in this
31
+ class.</p>
32
+ </div>
33
+ </div>
34
+
35
+ <div id="property-definitions-wrapper">
36
+ {{ property_definitions_formset.management_form }}
37
+
38
+ <table class="highlight" style="border-bottom: 1px solid #e0e0e0;">
39
+ <thead>
40
+ <tr class="grey-text">
41
+ <th style="width: 90%;">Property Definition</th>
42
+ <th style="width: 10%;" class="center-align">Action</th>
43
+ </tr>
44
+ </thead>
45
+ <tbody id="property-definitions-body">
46
+ {% for form in property_definitions_formset %}
47
+ <tr class="property-definition-row">
48
+ {% for hidden in form.hidden_fields %}
49
+ {{ hidden }}
50
+ {% endfor %}
51
+
52
+ <td>{{ form.property_definition|materializecss }}</td>
53
+ <td class="center-align">
54
+ {% if forloop.counter0 < property_definitions_formset.initial_form_count %}
55
+ <div style="display:none;">{{ form.DELETE }}</div>
56
+ <a href="#!" class="btn-flat btn-small red-text delete-existing-row">
57
+ <i class="material-icons">delete</i>
58
+ </a>
59
+ {% else %}
60
+ <a href="#!" class="btn-flat btn-small red-text remove-new-row">
61
+ <i class="material-icons">close</i>
62
+ </a>
63
+ {% endif %}
64
+ </td>
65
+ </tr>
66
+ {% endfor %}
67
+ </tbody>
68
+ </table>
69
+
70
+ <div class="row" style="margin-top: 15px;">
71
+ <div class="col s12">
72
+ <button type="button" class="btn-flat waves-effect"
73
+ id="add-property-definition" style="padding-left: 0;">
74
+ <i class="material-icons left">add</i> Add Property
75
+ </button>
76
+ </div>
21
77
  </div>
22
- <div class="col s6 right-align">
23
- <button class="waves-effect waves-light btn btn-primary" type="submit" name="action">Save
78
+ </div>
79
+
80
+ <div class="row" style="margin-top: 50px;">
81
+ <div class="col s12 right-align">
82
+ <a href="{% url 'bom:settings' %}indabom"
83
+ class="btn btn-flat waves-effect"
84
+ style="margin-right: 10px;">Cancel</a>
85
+ <button class="waves-effect waves-light btn btn-primary" type="submit" name="action">
86
+ Save
24
87
  </button>
25
88
  </div>
26
89
  </div>
@@ -30,4 +93,28 @@
30
93
  {% include 'bom/nothing-to-see.html' with required_privilege='Admin' %}
31
94
  {% endif %}
32
95
  </div>
96
+
97
+ <script type="text/template" id="empty-form-template">
98
+ <tr class="property-definition-row">
99
+ <td>{{ property_definitions_formset.empty_form.property_definition|materializecss }}</td>
100
+ <td class="center-align">
101
+ <a href="#!" class="btn-flat btn-small red-text remove-new-row">
102
+ <i class="material-icons">close</i>
103
+ </a>
104
+ </td>
105
+ </tr>
106
+ </script>
107
+
108
+ <script src="{% static 'bom/js/formset-handler.js' %}"></script>
109
+ <script>
110
+ document.addEventListener('DOMContentLoaded', function () {
111
+ initFormset({
112
+ prefix: '{{ property_definitions_formset.prefix }}',
113
+ addBtnId: 'add-property-definition',
114
+ formContainerId: 'property-definitions-body',
115
+ emptyFormTemplateId: 'empty-form-template',
116
+ rowSelector: '.property-definition-row'
117
+ });
118
+ });
119
+ </script>
33
120
  {% endblock %}
@@ -0,0 +1,119 @@
1
+ {% extends 'bom/bom-base.html' %}
2
+ {% load static %}
3
+ {% load materializecss %}
4
+
5
+ {% block head-title %}{{ title }}{% endblock %}
6
+
7
+ {% block content %}
8
+ <div class="container" style="padding-top: 40px; max-width: 1000px;">
9
+ {% if profile.role == 'A' %}
10
+ <div class="row">
11
+ <form action="{% if quantity_of_measure %}{% url 'bom:quantity-of-measure-edit' quantity_of_measure_id=quantity_of_measure.id %}{% else %}{% url 'bom:quantity-of-measure-add' %}{% endif %}" method="post"
12
+ class="col s12">
13
+ {% csrf_token %}
14
+
15
+ <div class="row">
16
+ <div class="col s12">
17
+ {{ form.name|materializecss }}
18
+ </div>
19
+ </div>
20
+
21
+ <div class="row" style="margin-top: 40px; margin-bottom: 20px;">
22
+ <div class="col s12">
23
+ <h5>Units</h5>
24
+ <p class="grey-text text-darken-1">Define the units belonging to this quantity of measure. Base multiplier is relative to the base unit (multiplier 1.0).<br><br>For example, Voltage would have a base multiplier of 1.0, and millivolts would have a base multiplier of 0.001.</p>
25
+ </div>
26
+ </div>
27
+
28
+ <div id="unit-definitions-wrapper">
29
+ {{ unit_formset.management_form }}
30
+
31
+ <table class="highlight" style="border-bottom: 1px solid #e0e0e0;">
32
+ <thead>
33
+ <tr class="grey-text">
34
+ <th style="width: 35%;">Name</th>
35
+ <th style="width: 20%;">Symbol</th>
36
+ <th style="width: 35%;">Base Multiplier</th>
37
+ <th style="width: 10%;" class="center-align">Action</th>
38
+ </tr>
39
+ </thead>
40
+ <tbody id="unit-definitions-body">
41
+ {% for form in unit_formset %}
42
+ <tr class="unit-definition-row">
43
+ {% for hidden in form.hidden_fields %}
44
+ {{ hidden }}
45
+ {% endfor %}
46
+
47
+ <td>{{ form.name|materializecss }}</td>
48
+ <td>{{ form.symbol|materializecss }}</td>
49
+ <td>{{ form.base_multiplier|materializecss }}</td>
50
+ <td class="center-align">
51
+ {% if form.instance.pk %}
52
+ <div style="display:none;">{{ form.DELETE }}</div>
53
+ <a href="#!" class="btn-flat btn-small red-text delete-existing-row">
54
+ <i class="material-icons">delete</i>
55
+ </a>
56
+ {% else %}
57
+ <a href="#!" class="btn-flat btn-small red-text remove-new-row">
58
+ <i class="material-icons">close</i>
59
+ </a>
60
+ {% endif %}
61
+ </td>
62
+ </tr>
63
+ {% endfor %}
64
+ </tbody>
65
+ </table>
66
+
67
+ <div class="row" style="margin-top: 15px;">
68
+ <div class="col s12">
69
+ <button type="button" class="btn-flat waves-effect"
70
+ id="add-unit-definition" style="padding-left: 0;">
71
+ <i class="material-icons left">add</i> Add Unit
72
+ </button>
73
+ </div>
74
+ </div>
75
+ </div>
76
+
77
+ <div class="row" style="margin-top: 50px;">
78
+ <div class="col s12 right-align">
79
+ <a href="{% url 'bom:settings' tab_anchor='indabom' %}"
80
+ class="btn btn-flat waves-effect"
81
+ style="margin-right: 10px;">Cancel</a>
82
+ <button class="waves-effect waves-light btn btn-primary" type="submit" name="action">
83
+ Save
84
+ </button>
85
+ </div>
86
+ </div>
87
+ </form>
88
+ </div>
89
+ {% else %}
90
+ {% include 'bom/nothing-to-see.html' with required_privilege='Admin' %}
91
+ {% endif %}
92
+ </div>
93
+
94
+ <script type="text/template" id="empty-form-template">
95
+ <tr class="unit-definition-row">
96
+ <td>{{ unit_formset.empty_form.name|materializecss }}</td>
97
+ <td>{{ unit_formset.empty_form.symbol|materializecss }}</td>
98
+ <td>{{ unit_formset.empty_form.base_multiplier|materializecss }}</td>
99
+ <td class="center-align">
100
+ <a href="#!" class="btn-flat btn-small red-text remove-new-row">
101
+ <i class="material-icons">close</i>
102
+ </a>
103
+ </td>
104
+ </tr>
105
+ </script>
106
+
107
+ <script src="{% static 'bom/js/formset-handler.js' %}"></script>
108
+ <script>
109
+ document.addEventListener('DOMContentLoaded', function () {
110
+ initFormset({
111
+ prefix: '{{ unit_formset.prefix }}',
112
+ addBtnId: 'add-unit-definition',
113
+ formContainerId: 'unit-definitions-body',
114
+ emptyFormTemplateId: 'empty-form-template',
115
+ rowSelector: '.unit-definition-row'
116
+ });
117
+ });
118
+ </script>
119
+ {% endblock %}
@@ -1,38 +1,70 @@
1
1
  {% extends 'bom/bom-base.html' %}
2
2
 
3
- {% load static %}
4
3
  {% load materializecss %}
4
+ {% load static %}
5
5
 
6
6
  {% block head-title %}{{ title }}{% endblock %}
7
7
 
8
+ {% block bom-menu %}
9
+ <li><a href="javascript:history.back()">Cancel</a></li>
10
+ {% endblock %}
11
+
8
12
  {% block content %}
9
- <div class="container-app">
10
- {% if profile.role == 'A' %}
11
- <div class="row">
12
- <form action="{% url 'bom:user-meta-edit' user_meta_id=user_meta.id %}" method="post" class="col s12">
13
- {% csrf_token %}
14
- {{ user_meta_form.non_field_errors }}
15
- <div class="row">
16
- {{ user_meta_user_form.first_name|materializecss:'s12 m6' }}
17
- {{ user_meta_user_form.last_name|materializecss:'s12 m6' }}
18
- </div>
19
- <div class="row">
20
- {{ user_meta_user_form.email|materializecss:'s12 m6' }}
21
- {{ user_meta_form.role|materializecss:'s12 m6' }}
22
- </div>
23
- <div class="row">
24
- <div class="col s6">
25
- <a href="{% url 'bom:settings' tab_anchor='organization' %}" class="waves-effect waves-light btn-flat grey-text lighten-1" style="margin-left: -16px;">Cancel</a>
26
- </div>
27
- <div class="col s6 right-align">
28
- <button class="waves-effect waves-light btn btn-primary" type="submit" name="action">Save
29
- </button>
13
+ <div class="container container-app">
14
+ <div class="row">
15
+ <div class="col s12 m8 offset-m2">
16
+ <div class="card">
17
+ <div class="card-content">
18
+ {% if h1 %}<span class="card-title">{{ h1 }}</span>{% endif %}
19
+
20
+ <div class="row" style="margin-bottom: 30px;">
21
+ <div class="col s12">
22
+ <ul class="collection" style="border: none;">
23
+ <li class="collection-item avatar"
24
+ style="border-bottom: 1px solid #e0e0e0; min-height: 64px;">
25
+ <i class="material-icons circle">business</i>
26
+ <span class="title">Organization</span>
27
+ <p class="grey-text">{{ organization }}</p>
28
+ </li>
29
+ <li class="collection-item avatar"
30
+ style="border-bottom: 1px solid #e0e0e0; min-height: 64px;">
31
+ <i class="material-icons circle">person</i>
32
+ <span class="title">Username</span>
33
+ <p class="grey-text">{{ user.username }}</p>
34
+ </li>
35
+ <li class="collection-item avatar" style="min-height: 64px;">
36
+ <i class="material-icons circle">email</i>
37
+ <span class="title">Email</span>
38
+ <p class="grey-text">{{ user.email }}</p>
39
+ </li>
40
+ </ul>
41
+ </div>
30
42
  </div>
43
+
44
+ <form name="seller" action="{{ action }}" method="post">
45
+ {% csrf_token %}
46
+ <div class="row">
47
+ {{ form|materializecss:'s12' }}
48
+ </div>
49
+
50
+ <div class="card-action"
51
+ style="padding: 16px 0 0 0; border-top: 1px solid rgba(160,160,160,0.2);">
52
+ <div class="row" style="margin-bottom: 0;">
53
+ <div class="col s6">
54
+ <a href="javascript:history.back()"
55
+ class="waves-effect waves-teal btn-flat grey-text">Cancel</a>
56
+ </div>
57
+ <div class="col s6 right-align">
58
+ <button class="waves-effect waves-light btn btn-primary" type="submit"
59
+ name="action">Save Changes
60
+ </button>
61
+ </div>
62
+ </div>
63
+ </div>
64
+ </form>
31
65
  </div>
32
- </form>
66
+ </div>
33
67
  </div>
34
- {% else %}
35
- {% include 'bom/nothing-to-see.html' with required_privilege='Admin' %}
36
- {% endif %}
68
+ </div>
37
69
  </div>
38
70
  {% endblock %}
@@ -40,9 +40,12 @@
40
40
 
41
41
  <div id="join-organization" style="display: none;">
42
42
  <h3 class="center">Join an existing Organization</h3>
43
- <h5 class="center" style="padding-top: 36px;">To join an existing organization, you must provide the e-mail address you signed up with to your IndaBOM organization owner. <br><br>Your e-mail address is {{ user.email }}, click
44
- <a href="mailto:?subject=Add me to your IndaBOM Organization&body=Hi,%0D%0A%0D%0APlease add me to your IndaBOM organization. To do so, log in, go to Settings > Organization and add me via my e-mail address {{ user.email }}">here</a>
45
- to send an email.</h5>
43
+ <h5 class="center" style="padding-top: 36px;">To join an existing organization, you must provide your
44
+ username (not e-mail) to your IndaBOM organization owner. <br><br>Your username is
45
+ <b>{{ user.username }}</b>
46
+ click
47
+ <a href="mailto:?subject=Add me to your IndaBOM Organization&body=Hi,%0D%0A%0D%0APlease add me to your IndaBOM organization. To do so, log in, go to Settings > Organization and add me via my username {{ user.username }}">here</a>
48
+ to send an e-mail to your organization owner with instructions.</h5>
46
49
  <br><br>
47
50
  <p class="center">Oops! I meant to <a class="modal-trigger" onclick="resetView()">create a new organization</a>.</p>
48
51
  </div>
@@ -142,6 +142,15 @@
142
142
  ){% endif %}
143
143
  </i></div>
144
144
  </div>
145
+ {% for property in part_revision.properties.all %}
146
+ <div class="row">
147
+ <div class="col s4 l2 text-right"
148
+ style="padding-left: 0px;">{{ property.property_definition.name }}:
149
+ </div>
150
+ <div class="col s8 l10">{{ property.value_raw }}{% if property.unit_definition %}
151
+ {{ property.unit_definition.symbol }}{% endif %}</div>
152
+ </div>
153
+ {% endfor %}
145
154
  <div class="row">
146
155
  <div class="col s4 l2 text-right" style="padding-left: 0;">
147
156
  <img title="Via Google Drive" style="width: 16px;" src="{% static 'bom/img/google_drive_logo.svg' %}">&nbsp;Files:
@@ -436,4 +445,4 @@
436
445
  $('#bom-indented').show();
437
446
  }
438
447
  </script>
439
- {% endblock bom-script %}
448
+ {% endblock bom-script %}
@@ -11,7 +11,6 @@ all of the properties of a part revision, as follows:
11
11
  where XXX should be the name of the includee's object that represent its PartRevisionForm.
12
12
 
13
13
  {% endcomment %}
14
- <p>Must include a either a description or electronics value, and value units. The remaining fields are optional.</p>
15
14
  <div class="row">
16
15
  <div class="fieldWrapper">
17
16
  {{ part_revision_form.revision|materializecss:'m2 s12' }}
@@ -23,162 +22,26 @@ where XXX should be the name of the includee's object that represent its PartRev
23
22
 
24
23
  <div class="row">
25
24
  <div class="col s12">
26
- <h4>Electronics</h4>
27
- </div>
28
- </div>
29
-
30
- <div class="row">
31
- <div class="fieldWrapper">
32
- {{ part_revision_form.value|materializecss:'m2 s12' }}
33
- </div>
34
- <div class="fieldWrapper">
35
- {{ part_revision_form.value_units|materializecss:'m1 s12' }}
36
- </div>
37
- <div class="fieldWrapper">
38
- {{ part_revision_form.tolerance|materializecss:'m1 s12' }}
39
- </div>
40
- <div class="fieldWrapper">
41
- {{ part_revision_form.package|materializecss:'m2 s12' }}
42
- </div>
43
- <div class="fieldWrapper">
44
- {{ part_revision_form.pin_count|materializecss:'m1 s12' }}
45
- </div>
46
- <div class="fieldWrapper">
47
- {{ part_revision_form.supply_voltage|materializecss:'m1 s12' }}
48
- </div>
49
- <div class="fieldWrapper">
50
- {{ part_revision_form.supply_voltage_units|materializecss:'m1 s12' }}
51
- </div>
52
- </div>
53
-
54
- <div class="row">
55
- <div class="col s12">
56
- <h4>Ratings</h4>
57
- </div>
58
- </div>
59
-
60
- <div class="row">
61
- <div class="fieldWrapper">
62
- {{ part_revision_form.power_rating|materializecss:'m1 s12' }}
63
- </div>
64
- <div class="fieldWrapper">
65
- {{ part_revision_form.power_rating_units|materializecss:'m1 s12' }}
66
- </div>
67
- <div class="fieldWrapper">
68
- {{ part_revision_form.voltage_rating|materializecss:'m1 s12' }}
69
- </div>
70
- <div class="fieldWrapper">
71
- {{ part_revision_form.voltage_rating_units|materializecss:'m1 s12' }}
72
- </div>
73
- <div class="fieldWrapper">
74
- {{ part_revision_form.current_rating|materializecss:'m1 s12' }}
75
- </div>
76
- <div class="fieldWrapper">
77
- {{ part_revision_form.current_rating_units|materializecss:'m1 s12' }}
78
- </div>
79
- <div class="fieldWrapper">
80
- {{ part_revision_form.temperature_rating|materializecss:'m1 s12' }}
81
- </div>
82
- <div class="fieldWrapper">
83
- {{ part_revision_form.temperature_rating_range_max|materializecss:'m1 s12' }}
84
- </div>
85
- <div class="fieldWrapper">
86
- {{ part_revision_form.temperature_rating_range_min|materializecss:'m1 s12' }}
87
- </div>
88
- <div class="fieldWrapper">
89
- {{ part_revision_form.temperature_rating_units|materializecss:'m1 s12' }}
90
- </div>
91
- </div>
92
-
93
- <div class="row">
94
- <div class="col s12">
95
- <h4>Miscellaneous</h4>
96
- </div>
97
- </div>
98
-
99
- <div class="row">
100
- <div class="fieldWrapper">
101
- {{ part_revision_form.memory|materializecss:'m1 s12' }}
102
- </div>
103
- <div class="fieldWrapper">
104
- {{ part_revision_form.memory_units|materializecss:'m1 s12' }}
105
- </div>
106
- <div class="fieldWrapper">
107
- {{ part_revision_form.interface|materializecss:'m2 s12' }}
108
- </div>
109
- <div class="fieldWrapper">
110
- {{ part_revision_form.frequency|materializecss:'m1 s12' }}
111
- </div>
112
- <div class="fieldWrapper">
113
- {{ part_revision_form.frequency_units|materializecss:'m1 s12' }}
114
- </div>
115
- <div class="fieldWrapper">
116
- {{ part_revision_form.wavelength|materializecss:'m1 s12' }}
117
- </div>
118
- <div class="fieldWrapper">
119
- {{ part_revision_form.wavelength_units|materializecss:'m1 s12' }}
120
- </div>
121
- </div>
122
-
123
- <div class="row">
124
- <div class="col s12">
125
- <h4>Appearance</h4>
126
- </div>
127
- </div>
128
-
129
- <div class="row">
130
- <div class="fieldWrapper">
131
- {{ part_revision_form.color|materializecss:'m2 s12' }}
132
- </div>
133
- <div class="fieldWrapper">
134
- {{ part_revision_form.material|materializecss:'m2 s12' }}
135
- </div>
136
- <div class="fieldWrapper">
137
- {{ part_revision_form.finish|materializecss:'m2 s12' }}
138
- </div>
139
- </div>
140
-
141
- <div class="row">
142
- <div class="col s12">
143
- <h4>Dimensions</h4>
144
- </div>
145
- </div>
146
-
147
- <div class="row">
148
- <div class="fieldWrapper">
149
- {{ part_revision_form.length|materializecss:'m1 s12' }}
150
- </div>
151
- <div class="fieldWrapper">
152
- {{ part_revision_form.length_units|materializecss:'m1 s12' }}
153
- </div>
154
- <div class="fieldWrapper">
155
- {{ part_revision_form.width|materializecss:'m1 s12' }}
156
- </div>
157
- <div class="fieldWrapper">
158
- {{ part_revision_form.width_units|materializecss:'m1 s12' }}
159
- </div>
160
- <div class="fieldWrapper">
161
- {{ part_revision_form.height|materializecss:'m1 s12' }}
162
- </div>
163
- <div class="fieldWrapper">
164
- {{ part_revision_form.height_units|materializecss:'m1 s12' }}
165
- </div>
166
- <div class="fieldWrapper">
167
- {{ part_revision_form.weight|materializecss:'m1 s12' }}
168
- </div>
169
- <div class="fieldWrapper">
170
- {{ part_revision_form.weight_units|materializecss:'m1 s12' }}
171
- </div>
172
- </div>
173
-
174
- <div class="row">
175
- <div class="col s12">
176
- <h4>Other Attributes</h4>
177
- </div>
178
- </div>
179
-
180
- <div class="row">
181
- <div class="fieldWrapper">
182
- {{ part_revision_form.attribute|materializecss:'m12 s12' }}
183
- </div>
25
+ {% if part_revision_form.property_definitions %}
26
+ <h4>Properties</h4>
27
+ {% else %}
28
+ <p><i>You can add part class specific properties (e.g. voltage, width, sheen, etc) after creating the
29
+ part.</i></p>
30
+ {% endif %}
31
+ </div>
32
+ </div>
33
+
34
+ <div class="row">
35
+ {% for group in part_revision_form.property_fields %}
36
+ <div class="row">
37
+ <div class="fieldWrapper">
38
+ {{ group.property|materializecss:'m3 s6' }}
39
+ </div>
40
+ {% if group.unit %}
41
+ <div class="fieldWrapper">
42
+ {{ group.unit|materializecss:'m3 s6' }}
43
+ </div>
44
+ {% endif %}
45
+ </div>
46
+ {% endfor %}
184
47
  </div>