00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include "python/py_spoolss.h"
00022
00023
00024
00025 PyObject *spoolss_hnd_addform(PyObject *self, PyObject *args, PyObject *kw)
00026 {
00027 spoolss_policy_hnd_object *hnd = (spoolss_policy_hnd_object *)self;
00028 WERROR werror;
00029 PyObject *info;
00030 FORM form;
00031 int level;
00032 static char *kwlist[] = {"form", NULL};
00033
00034
00035
00036 if (!PyArg_ParseTupleAndKeywords(
00037 args, kw, "O!", kwlist, &PyDict_Type, &info))
00038 return NULL;
00039
00040
00041
00042 if (!py_to_FORM(&form, info)) {
00043 PyErr_SetString(spoolss_error, "invalid form");
00044 return NULL;
00045 }
00046
00047 if (!get_level_value(info, &level)) {
00048 PyErr_SetString(spoolss_error, "invalid info level");
00049 return NULL;
00050 }
00051
00052 if (level != 1) {
00053 PyErr_SetString(spoolss_error, "unsupported info level");
00054 return NULL;
00055 }
00056
00057 switch (level) {
00058 case 1: {
00059 PyObject *obj = PyDict_GetItemString(info, "name");
00060 char *form_name = PyString_AsString(obj);
00061
00062 init_unistr2(&form.name, form_name, UNI_STR_TERMINATE);
00063 break;
00064 }
00065 default:
00066 PyErr_SetString(spoolss_error, "unsupported info level");
00067 return NULL;
00068 }
00069
00070 werror = rpccli_spoolss_addform(hnd->cli, hnd->mem_ctx, &hnd->pol,
00071 level, &form);
00072
00073
00074 if (!W_ERROR_IS_OK(werror)) {
00075 PyErr_SetObject(spoolss_werror, py_werror_tuple(werror));
00076 return NULL;
00077 }
00078
00079 Py_INCREF(Py_None);
00080 return Py_None;
00081 }
00082
00083
00084
00085 PyObject *spoolss_hnd_getform(PyObject *self, PyObject *args, PyObject *kw)
00086 {
00087 spoolss_policy_hnd_object *hnd = (spoolss_policy_hnd_object *)self;
00088 WERROR werror;
00089 PyObject *result;
00090 char *form_name;
00091 int level = 1;
00092 static char *kwlist[] = {"form_name", "level", NULL};
00093 FORM_1 form;
00094
00095
00096
00097 if (!PyArg_ParseTupleAndKeywords(
00098 args, kw, "s|i", kwlist, &form_name, &level))
00099 return NULL;
00100
00101
00102
00103 werror = rpccli_spoolss_getform(
00104 hnd->cli, hnd->mem_ctx, &hnd->pol, form_name, level, &form);
00105
00106 if (!W_ERROR_IS_OK(werror)) {
00107 PyErr_SetObject(spoolss_werror, py_werror_tuple(werror));
00108 return NULL;
00109 }
00110
00111 result = Py_None;
00112
00113 switch(level) {
00114 case 1:
00115 py_from_FORM_1(&result, &form);
00116 break;
00117 }
00118
00119 Py_INCREF(result);
00120 return result;
00121 }
00122
00123
00124
00125 PyObject *spoolss_hnd_setform(PyObject *self, PyObject *args, PyObject *kw)
00126 {
00127 spoolss_policy_hnd_object *hnd = (spoolss_policy_hnd_object *)self;
00128 WERROR werror;
00129 PyObject *info, *form_name;
00130 int level;
00131 static char *kwlist[] = { "form", NULL};
00132 FORM form;
00133
00134
00135
00136 if (!PyArg_ParseTupleAndKeywords(
00137 args, kw, "O!", kwlist, &PyDict_Type, &info))
00138 return NULL;
00139
00140 if (!get_level_value(info, &level)) {
00141 PyErr_SetString(spoolss_error, "invalid info level");
00142 return NULL;
00143 }
00144
00145 if (level != 1) {
00146 PyErr_SetString(spoolss_error, "unsupported info level");
00147 return NULL;
00148 }
00149
00150
00151
00152 if (!py_to_FORM(&form, info)) {
00153 PyErr_SetString(spoolss_error, "invalid form");
00154 return NULL;
00155 }
00156
00157 form_name = PyDict_GetItemString(info, "name");
00158
00159 werror = rpccli_spoolss_setform(
00160 hnd->cli, hnd->mem_ctx, &hnd->pol, level,
00161 PyString_AsString(form_name), &form);
00162
00163 if (!W_ERROR_IS_OK(werror)) {
00164 PyErr_SetObject(spoolss_werror, py_werror_tuple(werror));
00165 return NULL;
00166 }
00167
00168 Py_INCREF(Py_None);
00169 return Py_None;
00170 }
00171
00172
00173
00174 PyObject *spoolss_hnd_deleteform(PyObject *self, PyObject *args, PyObject *kw)
00175 {
00176 spoolss_policy_hnd_object *hnd = (spoolss_policy_hnd_object *)self;
00177 WERROR werror;
00178 static char *kwlist[] = {"form_name", NULL};
00179 char *form_name;
00180
00181
00182
00183 if (!PyArg_ParseTupleAndKeywords(
00184 args, kw, "s", kwlist, &form_name))
00185 return NULL;
00186
00187
00188
00189 werror = rpccli_spoolss_deleteform(
00190 hnd->cli, hnd->mem_ctx, &hnd->pol, form_name);
00191
00192 if (!W_ERROR_IS_OK(werror)) {
00193 PyErr_SetObject(spoolss_werror, py_werror_tuple(werror));
00194 return NULL;
00195 }
00196
00197 Py_INCREF(Py_None);
00198 return Py_None;
00199 }
00200
00201
00202
00203 PyObject *spoolss_hnd_enumforms(PyObject *self, PyObject *args, PyObject *kw)
00204 {
00205 PyObject *result;
00206 spoolss_policy_hnd_object *hnd = (spoolss_policy_hnd_object *)self;
00207 WERROR werror;
00208 uint32 level = 1, num_forms, i;
00209 static char *kwlist[] = {"level", NULL};
00210 FORM_1 *forms;
00211
00212
00213
00214 if (!PyArg_ParseTupleAndKeywords(
00215 args, kw, "|i", kwlist, &level))
00216 return NULL;
00217
00218
00219
00220 werror = rpccli_spoolss_enumforms(
00221 hnd->cli, hnd->mem_ctx, &hnd->pol, level, &num_forms, &forms);
00222
00223 if (!W_ERROR_IS_OK(werror)) {
00224 PyErr_SetObject(spoolss_werror, py_werror_tuple(werror));
00225 return NULL;
00226 }
00227
00228 switch(level) {
00229 case 1:
00230 result = PyDict_New();
00231
00232 for (i = 0; i < num_forms; i++) {
00233 PyObject *value;
00234 fstring name;
00235
00236 rpcstr_pull(name, forms[i].name.buffer,
00237 sizeof(fstring), -1, STR_TERMINATE);
00238
00239 py_from_FORM_1(&value, &forms[i]);
00240
00241 PyDict_SetItemString(
00242 value, "level", PyInt_FromLong(1));
00243
00244 PyDict_SetItemString(result, name, value);
00245 }
00246
00247 break;
00248 default:
00249 PyErr_SetString(spoolss_error, "unknown info level");
00250 return NULL;
00251 }
00252
00253 return result;
00254 }