module.py
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 ini={}
00012 cm_kernel=None
00013
00014
00015 import string
00016 import os
00017 import hashlib
00018 import base64
00019 import getpass
00020
00021
00022 def init(i):
00023 return {'cm_return':0}
00024
00025
00026 def add_data(i):
00027
00028 """
00029 Add user (and public person profile)
00030
00031 Input: {
00032 cm_username - username (UOA)
00033 cm_user_password - user password
00034 cm_user_password_repeat - repeat user password for checking
00035 name - user real name (will be used as alias)
00036
00037 (cm_array) - Note, that if cm_array is present,
00038 all above parameters should be inside it
00039
00040 (cm_repo_uoa) - repo UOA where to create user entry
00041 }
00042
00043 Output: {
00044 cm_return - return code >0 if error
00045 cm_path - path to created data entry
00046 ... - other paramaters from core add_data function
00047 }
00048 """
00049
00050
00051 if i.get('cm_repo_uoa','')=='':
00052 if cm_kernel.ini['dcfg'].get('cm_default_repo_for_user', '')!='':
00053 i['cm_repo_uoa']=cm_kernel.ini['dcfg'].get('cm_default_repo_for_user')
00054
00055
00056 if i.get('cm_console','')=='web':
00057
00058 if i.get('#form4##cm_access_control#read_groups','')=='': i['#form4##cm_access_control#read_groups']='owner'
00059 if i.get('#form4##cm_access_control#write_groups','')=='': i['#form4##cm_access_control#write_groups']='owner'
00060
00061 i['cm_run_module_uoa']=ini['cfg']['cm_modules']['cm-core']
00062 i['cm_action']='add'
00063 return cm_kernel.access(i)
00064
00065
00066 if 'cm_array' in i: ir=i['cm_array']
00067 else: ir=i
00068
00069
00070
00071 username=''
00072 if ir.get('cm_username', '')=='':
00073 ir['cm_username']=raw_input('Enter unique username: ')
00074 if ir.get('cm_username', '')=='':
00075 return {'cm_return':1, 'cm_error':'unique username is not set'}
00076 username=ir['cm_username']
00077 del(ir['cm_username'])
00078 username=username.strip()
00079
00080
00081 pass1=ir.get('cm_user_password', '')
00082 if pass1=='':
00083 pass1=getpass.getpass('Enter password: ')
00084 ir['cm_user_password']=pass1
00085 if pass1=='':
00086 return {'cm_return':1, 'cm_error':'password is not set'}
00087 del(ir['cm_user_password'])
00088 pass1=pass1.strip()
00089
00090 pass2=ir.get('cm_user_password_repeat', '')
00091 if pass2=='':
00092 pass2=getpass.getpass('Repeat password: ')
00093 ir['cm_user_password_repeat']=pass2
00094 if pass2=='': return {'cm_return':1, 'cm_error':'second password is not set'}
00095 del(ir['cm_user_password_repeat'])
00096 pass2=pass2.strip()
00097 if pass1!=pass2:
00098 return {'cm_return':1, 'cm_error':'passwords do not match'}
00099
00100
00101 rs=cm_kernel.convert_str_to_sha1({'cm_string':pass1})
00102 if rs['cm_return']>0: return rs
00103 hash1=rs['cm_string_sha1_base64']
00104
00105
00106 rs=cm_kernel.convert_str_to_sha1({'cm_string':hash1})
00107 if rs['cm_return']>0: return rs
00108 hash2=rs['cm_string_sha1_base64']
00109
00110 ir['cm_user_password2']=hash2
00111
00112
00113 if cm_kernel.ini.get('web','')=='yes' and i.get('cm_console','')!='json': cm_kernel.print_for_con('<H2>Private profile created!</H2>')
00114
00115 ii={};ii.update(i)
00116 ii['cm_admin']='yes'
00117 ii['cm_run_module_uoa']=ini['cfg']['cm_modules']['cm-core']
00118 ii['cm_module_uoa']=ini['cm_module_uid']
00119 ii['cm_data_uoa']=username
00120 ii['cm_console']=''
00121 if cm_kernel.ini.get('cm_console','')!='web': ii['cm_console']=i.get('cm_console','')
00122 if cm_kernel.ini.get('web','')=='yes' and i.get('cm_console','')!='json': ii['cm_report_in_html']='yes'
00123
00124 ii['cm_access_control']=ini['cfg']["cm_default_private_access_control"]
00125
00126 if 'name' in ir: ir['cm_display_as_alias']=ir['name']
00127 ii['cm_array']=ir
00128
00129 ru=cm_kernel.access(ii)
00130 if ru['cm_return']>0: return ru
00131
00132
00133 p=ru['cm_path']
00134 f=file(os.path.join(p, '.htpasswd'), 'w')
00135 f.write(username+':{SHA}'+hash1+'\n')
00136 f.close()
00137
00138
00139 if cm_kernel.ini.get('web')=='yes' and i.get('cm_console','')!='json':
00140 cm_kernel.print_for_con('<HR class="cm-hr">')
00141 cm_kernel.print_for_con('<H2>Public profile created!</H2>')
00142
00143 ii={};ii.update(i)
00144
00145 ii['cm_admin']='yes'
00146 ii['cm_run_module_uoa']=ini['cfg']['cm_modules']['cm-core']
00147 ii['cm_module_uoa']=ini['cfg']['cm_modules']['cm-person']
00148 ii['cm_data_uoa']=username
00149 ii['cm_data_uid']=ru['cm_uid']
00150 ii['cm_console']=''
00151 if cm_kernel.ini.get('cm_console','')!='web': ii['cm_console']=i.get('cm_console','')
00152 if cm_kernel.ini.get('web','')=='yes' and i.get('cm_console','')!='json': ii['cm_report_in_html']='yes'
00153
00154 if 'cm_user_password2' in ir: del(ir['cm_user_password2'])
00155 if 'cm_user_groups' in ir: del(ir['cm_user_groups'])
00156 if 'cm_default_web_uoa' in ir: del(ir['cm_default_web_uoa'])
00157
00158 ii['cm_access_control']=ini['cfg']["cm_default_public_access_control"]
00159
00160 ii['cm_array']=ir
00161
00162 r=cm_kernel.access(ii)
00163 if r['cm_return']>0: return r
00164
00165
00166 ru['cm_skip_report']='yes'
00167
00168 return ru
00169
00170
00171 def update_data(i):
00172
00173 """
00174 Input: {
00175 }
00176
00177 Output: {
00178 }
00179 """
00180
00181
00182 if i.get('cm_console','')=='web':
00183 i['cm_run_module_uoa']=ini['cfg']['cm_modules']['cm-core']
00184 i['cm_action']='update'
00185 return cm_kernel.access(i)
00186
00187
00188 if 'cm_array' in i: ir=i['cm_array']
00189 else: ir=i
00190
00191
00192 ii={}
00193 ii['cm_run_module_uoa']=ini['cfg']['cm_modules']['cm-core']
00194 ii['cm_action']='load'
00195 if 'cm_module_uoa' in i: ii['cm_module_uoa']=i['cm_module_uoa']
00196 if 'cm_data_uoa' in i: ii['cm_data_uoa']=i['cm_data_uoa']
00197 if i.get('cm_repo_uoa','')=='':
00198 if cm_kernel.ini['dcfg'].get('cm_default_repo_for_add','')!='':
00199 ii['cm_repo_uoa']=cm_kernel.ini['dcfg']['cm_default_repo_for_add']
00200 else:
00201 ii['cm_repo_uoa']=i['cm_repo_uoa']
00202 rx=cm_kernel.access(ii)
00203 if rx['cm_return']>0: return rx
00204
00205
00206 pass1=ir.get('cm_user_password', '')
00207 if 'cm_user_password' in ir: del(ir['cm_user_password'])
00208 pass2=ir.get('cm_user_password_repeat', '')
00209 if 'cm_user_password_repeat' in ir: del(ir['cm_user_password_repeat'])
00210
00211 if pass1!=pass2:
00212 return {'cm_return':1, 'cm_error':'passwords do not match'}
00213
00214 if pass1=='':
00215
00216 if 'cm_user_password2' in ir: del(ir['cm_user_password2'])
00217 else:
00218
00219 rs=cm_kernel.convert_str_to_sha1({'cm_string':pass1})
00220 if rs['cm_return']>0: return rs
00221 hash1=rs['cm_string_sha1_base64']
00222
00223
00224 rs=cm_kernel.convert_str_to_sha1({'cm_string':hash1})
00225 if rs['cm_return']>0: return rs
00226 hash2=rs['cm_string_sha1_base64']
00227
00228 ir['cm_user_password2']=hash2
00229
00230
00231 p=rx['cm_path']
00232 f=file(os.path.join(p, '.htpasswd'), 'w')
00233 f.write(rx['cm_uoa']+':{SHA}'+hash1+'\n')
00234 f.close()
00235
00236 ii={};ii.update(i)
00237 ii['cm_run_module_uoa']=ini['cfg']['cm_modules']['cm-core']
00238 ii['cm_console']=''
00239 if cm_kernel.ini.get('cm_console','')!='web': ii['cm_console']=i.get('cm_console','')
00240 if cm_kernel.ini.get('web','')=='yes': ii['cm_report_in_html']='yes'
00241
00242 if 'name' in ir: ir['cm_display_as_alias']=ir['name']
00243
00244 ii['cm_array']=ir
00245
00246 ru=cm_kernel.access(ii)
00247 if ru['cm_return']>0: return ru
00248
00249
00250 ii['cm_run_module_uoa']=ini['cfg']['cm_modules']['cm-core']
00251 ii['cm_action']='load'
00252 ii['cm_module_uoa']=ini['cfg']['cm_modules']['cm-person']
00253 ii['cm_data_uoa']=ru['cm_uoa']
00254 ii['cm_data_uid']=ru['cm_uid']
00255 r=cm_kernel.access(ii)
00256 if r['cm_return']>0:
00257
00258 if cm_kernel.ini['dcfg'].get('cm_default_repo_for_user', '')!='':
00259 i['cm_repo_uoa']=cm_kernel.ini['dcfg'].get('cm_default_repo_for_user')
00260
00261
00262 if cm_kernel.ini.get('web')=='yes' and i.get('cm_console','')!='json':
00263 cm_kernel.print_for_con('<HR class="cm-hr">')
00264 cm_kernel.print_for_con('<H2>Adding public profile:</H2>')
00265
00266 ii={};ii.update(i)
00267
00268 ii['cm_run_module_uoa']=ini['cfg']['cm_modules']['cm-core']
00269 ii['cm_module_uoa']=ini['cfg']['cm_modules']['cm-person']
00270 ii['cm_data_uoa']=ru['cm_uoa']
00271 ii['cm_data_uid']=ru['cm_uid']
00272 ii['cm_console']=''
00273 if cm_kernel.ini.get('cm_console','')!='web': ii['cm_console']=i.get('cm_console','')
00274 if cm_kernel.ini.get('web','')=='yes': ii['cm_report_in_html']='yes'
00275
00276 if 'cm_user_password2' in ir: del(ir['cm_user_password2'])
00277 if 'cm_user_groups' in ir: del(ir['cm_user_groups'])
00278 if 'cm_default_web_uoa' in ir: del(ir['cm_default_web_uoa'])
00279
00280 ii['cm_access_control']=ini['cfg']["cm_default_public_access_control"]
00281
00282 ii['cm_array']=ir
00283
00284 r=cm_kernel.access(ii)
00285 if r['cm_return']>0: return r
00286
00287
00288 ru['cm_skip_report']='yes'
00289
00290 return ru