Browse Source

Update aned Create from interface

prieto 8 years ago
parent
commit
c41a22c807

+ 4
- 3
plugins/mongodb_datasource/datasource.py View File

75
     #@warning multiple UID broken by this method
75
     #@warning multiple UID broken by this method
76
     #@return an integer
76
     #@return an integer
77
     def new_numeric_id(self, emcomp):
77
     def new_numeric_id(self, emcomp):
78
-        target = emcomp.uid_source()
78
+        target = emcomp #.uid_source()
79
         tuid = target._uid[0] # Multiple UID broken here
79
         tuid = target._uid[0] # Multiple UID broken here
80
         results = self.select(
80
         results = self.select(
81
             target, field_list = [tuid], filters = [], 
81
             target, field_list = [tuid], filters = [], 
181
     #@param relational_filters list : List of relational filters
181
     #@param relational_filters list : List of relational filters
182
     #@return int : number of deleted records
182
     #@return int : number of deleted records
183
     def delete(self, target, filters, relational_filters):
183
     def delete(self, target, filters, relational_filters):
184
-        if target.is_asbtract():
184
+        if target.is_abstract():
185
             #Deletion with abstract LeObject as target (reccursiv calls)
185
             #Deletion with abstract LeObject as target (reccursiv calls)
186
             return self.__act_on_abstract(target, filters,
186
             return self.__act_on_abstract(target, filters,
187
                 relational_filters, self.delete)
187
                 relational_filters, self.delete)
198
     #@param upd_datas dict : datas to update (new values)
198
     #@param upd_datas dict : datas to update (new values)
199
     #@return int : Number of updated records
199
     #@return int : Number of updated records
200
     def update(self, target, filters, relational_filters, upd_datas):
200
     def update(self, target, filters, relational_filters, upd_datas):
201
-        if target.is_asbtract():
201
+        if target.is_abstract():
202
             #Update using abstract LeObject as target (reccursiv calls)
202
             #Update using abstract LeObject as target (reccursiv calls)
203
             return self.__act_on_abstract(target, filters,
203
             return self.__act_on_abstract(target, filters,
204
                 relational_filters, self.update, upd_datas = upd_datas)
204
                 relational_filters, self.update, upd_datas = upd_datas)
213
     # @param new_datas dict : datas to insert
213
     # @param new_datas dict : datas to insert
214
     # @return the inserted uid
214
     # @return the inserted uid
215
     def insert(self, target, new_datas):
215
     def insert(self, target, new_datas):
216
+        new_datas['lodel_id'] = self.new_numeric_id(target)
216
         res = self.__collection(target).insert(new_datas)
217
         res = self.__collection(target).insert(new_datas)
217
         return str(res)
218
         return str(res)
218
 
219
 

+ 65
- 3
plugins/webui/interface/controllers/admin.py View File

10
     return get_response('admin/admin.html')
10
     return get_response('admin/admin.html')
11
 
11
 
12
 def admin_update(request):
12
 def admin_update(request):
13
+    if request.method == 'POST':
14
+        error = None
15
+        datas = list()
16
+        classname = request.form['classname']
17
+        uid = request.form['uid']
18
+        try:
19
+            target_leo = dyncode.Object.name2class(classname)
20
+        except LeApiError:
21
+            classname = None
22
+        if classname is None or target_leo.is_abstract():
23
+            raise HttpException(400)
24
+        fieldnames = target_leo.fieldnames()
25
+        fields = dict()
26
+
27
+        for in_put, in_value in request.form.items():
28
+            if in_put != 'classname' and  in_put != 'uid':
29
+                fields[in_put[12:]] = in_value
30
+        obj = (target_leo.get(('lodel_id = %s' % (uid))))[0]
31
+        inserted = obj.update(fields)
32
+        
33
+        if new_uid==1:
34
+            msg = 'Successfull creation';
35
+        else:
36
+            msg = 'Oops something wrong happened...object not saved'
37
+        return get_response('admin/admin_edit.html', target=target_leo, lodel_id = uid, msg = msg)
38
+
13
     test_valid = 'lodel_id' in request.GET \
39
     test_valid = 'lodel_id' in request.GET \
14
         and len(request.GET['lodel_id']) == 1
40
         and len(request.GET['lodel_id']) == 1
15
 
41
 
25
         obj = dyncode.Object.get(['lodel_id = %d' % lodel_id])
51
         obj = dyncode.Object.get(['lodel_id = %d' % lodel_id])
26
         if len(obj) == 0:
52
         if len(obj) == 0:
27
             raise HttpException(404)
53
             raise HttpException(404)
28
-    return get_response('admin/admin_edit.html', obj = obj)
54
+    template_vars = {
55
+        'params': request.GET
56
+    }
57
+    return get_response('admin/admin_edit.html', tpl_vars=template_vars)
29
 
58
 
30
 def admin_create(request):
59
 def admin_create(request):
31
     classname = None
60
     classname = None
61
+
62
+    if request.method == 'POST':
63
+        error = None
64
+        datas = list()
65
+        classname = request.form['classname']
66
+        try:
67
+            target_leo = dyncode.Object.name2class(classname)
68
+        except LeApiError:
69
+            classname = None
70
+        if classname is None or target_leo.is_abstract():
71
+            raise HttpException(400)
72
+        fieldnames = target_leo.fieldnames()
73
+        fields = dict()
74
+
75
+        for in_put, in_value in request.form.items():
76
+            if in_put != 'classname':
77
+                fields[in_put[12:]] = in_value
78
+        new_uid = target_leo.insert(fields)
79
+        
80
+        if not new_uid is None:
81
+            msg = 'Successfull creation';
82
+        else:
83
+            msg = 'Oops something wrong happened...object not saved'
84
+        return get_response('admin/admin_create.html', target=target_leo, msg = msg)
85
+    
32
     if 'classname' in request.GET:
86
     if 'classname' in request.GET:
33
         classname = request.GET['classname']
87
         classname = request.GET['classname']
34
         if len(classname) > 1:
88
         if len(classname) > 1:
38
             target_leo = dyncode.Object.name2class(classname)
92
             target_leo = dyncode.Object.name2class(classname)
39
         except LeApiError:
93
         except LeApiError:
40
             classname = None
94
             classname = None
95
+    msg = None
96
+    if 'msg' in request.GET:
97
+        msg = request.GET['msg']
41
     if classname is None or target_leo.is_abstract():
98
     if classname is None or target_leo.is_abstract():
42
         raise HttpException(400)
99
         raise HttpException(400)
43
-    
44
-    return get_response('admin/admin_create.html', target=target_leo)
100
+    template_vars = {
101
+        'params': request.GET,
102
+        'msg' : msg
103
+    }
104
+    return get_response('admin/admin_create.html', tpl_vars=template_vars, target=target_leo)
45
 
105
 
46
 def admin(request):
106
 def admin(request):
47
     return get_response('admin/admin.html')
107
     return get_response('admin/admin.html')
48
 
108
 
109
+        
110
+            
49
 
111
 

+ 13
- 1
plugins/webui/templates/admin/admin_create.html View File

1
 {% extends "base_backend.html" %}
1
 {% extends "base_backend.html" %}
2
 {% import "admin/editable_component.html" as edit %}
2
 {% import "admin/editable_component.html" as edit %}
3
+
3
 {% block title %}- Creating a new {{target.__name__}}{% endblock %}
4
 {% block title %}- Creating a new {{target.__name__}}{% endblock %}
4
 {% block body %}
5
 {% block body %}
6
+{% if msg is not none %}
7
+{% block msg %} <p style="color:red; font-size:20pt; font-weight:bold">{{ msg }}</p> {% endblock %}
8
+{% endif %}
9
+<h1>Creating a new {{target.__name__}}</h1>
10
+ <form action="" method ="post">
11
+     <input type="hidden" name="classname" id="classname" value="{{target.__name__}}" />
5
 	{% for fieldname, field in target.fields().items() %}
12
 	{% for fieldname, field in target.fields().items() %}
6
-		{{edit.input(fieldname, field) }}
13
+     <div> {{edit.input(fieldname, field) }}</div>
7
 	{% endfor %}
14
 	{% endfor %}
15
+     <p>&nbsp;</p>
16
+ <input type="submit" value="Save">
17
+ </form>
8
 {% endblock %}
18
 {% endblock %}
19
+
20
+

+ 18
- 0
plugins/webui/templates/admin/admin_edit.html View File

1
 {% extends "base_backend.html" %}
1
 {% extends "base_backend.html" %}
2
+{% import "admin/editable_component.html" as edit %}
3
+{% set my_id = params['lodel_id'].pop() %}
4
+{% set classname = params['classname'].pop() %}}
5
+{% set my_class = leapi.Object.name2class(classname) %}
6
+{% set objects = my_class.get(('lodel_id = %s') % (my_id)) %}
7
+{% set obj = objects.pop() %}
8
+{% block title %}- Edit Object{% endblock %}
9
+{% block body %}
10
+<h1>Lodel 2 - Edit Object {{ my_id }} of {{ classname }}</h1>
11
+    <form action="" method ="post">
12
+    <input type="hidden" name="uid" value="{{ my_id}}" >
13
+    <input type="hidden" name="classname" value={{ classname }} />
14
+    {% for fieldname, fieldvalue in obj.fields().items() %}
15
+       <p> {{edit.input(fieldname, fieldvalue, obj.data(fieldname)) }} </p>
16
+    {% endfor %}
17
+     <input type="submit" value="Save">
18
+    </form>
19
+{% endblock %}

+ 2
- 2
plugins/webui/templates/admin/editable_component.html View File

1
 {% macro input(fieldname, field, value='') -%}
1
 {% macro input(fieldname, field, value='') -%}
2
 	<label for="field_input_{{fieldname}}">{{fieldname}}</label>
2
 	<label for="field_input_{{fieldname}}">{{fieldname}}</label>
3
 	{% if field.base_type == 'bool' %}
3
 	{% if field.base_type == 'bool' %}
4
-		<input id="field_input_{{fieldname}}" type="checkbox" checked="{% if value %}checked{% endif %}" />
4
+		<input id="field_input_{{fieldname}}" name="field_input_{{fieldname}}" type="checkbox" checked="{% if value %}checked{% endif %}" />
5
 	{% elif field.base_type == 'char' or field.base_type == 'int' %}
5
 	{% elif field.base_type == 'char' or field.base_type == 'int' %}
6
-		<input id="field_input_{{fieldname}}" type="text" value="{{value}}" />
6
+		<input id="{{fieldname}}" name="field_input_{{fieldname}}" type="text" value="{{value}}" />
7
 	{% else %}
7
 	{% else %}
8
 		<p>Unsupported base type "{{field.base_type}}" </p>
8
 		<p>Unsupported base type "{{field.base_type}}" </p>
9
 	{% endif %}
9
 	{% endif %}

+ 1
- 1
plugins/webui/templates/components/components.html View File

1
 {% macro input(name, value='', type='text') -%}
1
 {% macro input(name, value='', type='text') -%}
2
-    <input type="{{ type }}" value="{{ value }}" name="{{ name }}" />
2
+    <input type="{{ type }}" value="{{ value }}" name="{{ name }}" id= "{{ name }}"/>
3
 {%- endmacro %}
3
 {%- endmacro %}
4
 
4
 
5
 {% macro textarea(name, value='', rows=10, cols=40) -%}
5
 {% macro textarea(name, value='', rows=10, cols=40) -%}

+ 1
- 1
plugins/webui/templates/index/index.html View File

4
     DASHBOARD <br />
4
     DASHBOARD <br />
5
     {{ lodel.Test().ok() }}
5
     {{ lodel.Test().ok() }}
6
 <ul>
6
 <ul>
7
-    <li><a href="list_classes.html">Tous les types</a></li>
7
+    <li><a href="list_classes">Tous les types</a></li>
8
 </ul>
8
 </ul>
9
 {% endblock %}
9
 {% endblock %}

Loading…
Cancel
Save