import HEAD into svn+ssh://svn.samba.org/home/svn/samba/trunk
[metze/old/v3-2-winbind-ndr.git] / source / python / py_samr_conv.c
1 /* 
2    Python wrappers for DCERPC/SMB client routines.
3
4    Copyright (C) Tim Potter, 2002
5    
6    This program is free software; you can redistribute it and/or modify
7    it under the terms of the GNU General Public License as published by
8    the Free Software Foundation; either version 2 of the License, or
9    (at your option) any later version.
10    
11    This program is distributed in the hope that it will be useful,
12    but WITHOUT ANY WARRANTY; without even the implied warranty of
13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14    GNU General Public License for more details.
15    
16    You should have received a copy of the GNU General Public License
17    along with this program; if not, write to the Free Software
18    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19 */
20
21 #include "python/py_samr.h"
22 #include "python/py_conv.h"
23
24 /*
25  * Convert between SAM_USER_INFO_10 and Python
26  */
27
28 struct pyconv py_SAM_USER_INFO_10[] = {
29         { "acb_info", PY_UINT32, offsetof(SAM_USER_INFO_10, acb_info) },
30         { NULL }
31 };
32
33 BOOL py_from_SAM_USER_INFO_10(PyObject **dict, SAM_USER_INFO_10 *info)
34 {
35         *dict = from_struct(info, py_SAM_USER_INFO_10);
36         PyDict_SetItemString(*dict, "level", PyInt_FromLong(0x10));
37         return True;
38 }
39
40 BOOL py_to_SAM_USER_INFO_10(SAM_USER_INFO_10 *info, PyObject *dict)
41 {
42         PyObject *obj, *dict_copy = PyDict_Copy(dict);
43         BOOL result = False;
44
45         if (!(obj = PyDict_GetItemString(dict_copy, "level")) ||
46             !PyInt_Check(obj))
47                 goto done;
48
49         PyDict_DelItemString(dict_copy, "level");
50
51         if (!to_struct(info, dict_copy, py_SAM_USER_INFO_10))
52                 goto done;
53
54         result = True;
55
56 done:
57         Py_DECREF(dict_copy);
58         return result;
59 }
60
61 /*
62  * Convert between SAM_USER_INFO_21 and Python
63  */
64
65 struct pyconv py_SAM_USER_INFO_21[] = {
66         { NULL }
67 };
68
69 BOOL py_from_SAM_USER_INFO_21(PyObject **dict, SAM_USER_INFO_21 *info)
70 {
71         *dict = from_struct(info, py_SAM_USER_INFO_21);
72         PyDict_SetItemString(*dict, "level", PyInt_FromLong(21));
73         return True;
74 }
75
76 BOOL py_to_SAM_USER_INFO_21(SAM_USER_INFO_21 *info, PyObject *dict)
77 {
78         PyObject *obj, *dict_copy = PyDict_Copy(dict);
79         BOOL result = False;
80
81         if (!(obj = PyDict_GetItemString(dict_copy, "level")) ||
82             !PyInt_Check(obj))
83                 goto done;
84
85         PyDict_DelItemString(dict_copy, "level");
86
87         if (!to_struct(info, dict_copy, py_SAM_USER_INFO_21))
88                 goto done;
89
90         result = True;
91
92 done:
93         Py_DECREF(dict_copy);
94         return result;
95 }
96
97 /*
98  * Convert between acct_info and Python 
99  */
100
101 BOOL py_from_acct_info(PyObject **array, struct acct_info *info, int num_accts)
102 {
103         int i;
104
105         *array = PyList_New(num_accts);
106
107         for (i = 0; i < num_accts; i++) {
108                 PyObject *obj;  
109
110                 obj = PyDict_New();
111                 
112                 PyDict_SetItemString(
113                         obj, "name", PyString_FromString(info[i].acct_name));
114
115                 PyDict_SetItemString(
116                         obj, "description", 
117                         PyString_FromString(info[i].acct_desc));
118
119                 PyDict_SetItemString(obj, "rid", PyInt_FromLong(info[i].rid));
120
121                 PyList_SetItem(*array, i, obj);
122         }
123
124         return True;
125 }
126
127 BOOL py_to_acct_info(PRINTER_INFO_3 *info, PyObject *dict,
128                      TALLOC_CTX *mem_ctx)
129 {
130         return False;
131 }