def status(request): def errorHandle(error): return render_to_response('status.html', { 'error' : error, }) if not check_premissions(request,'VC-HD-Access'): return HttpResponseRedirect("/request/") try: list_awaiting=ProjectCreation.objects.filter(status='awaiting_account') cmd="" all="" for account in list_awaiting: try: cmd="getent passwd " + account.libuser #all=all+cmd+"\n" #retrcode = call(cmd,shell=True) retrcode=system(cmd) if retrcode==0: account.status="requested_repository" account.save() else: pass except OSError, e: error="Execution failed: "+ e return errorHandle(error) list_account=ProjectCreation.objects.filter(status='requested_account') list_repository=ProjectCreation.objects.filter(status='requested_repository') list_awaiting=ProjectCreation.objects.filter(status='awaiting_account') list_requested=ProjectCreation.objects.filter(status='requested') return render_to_response('status.html', {'list_account':list_account, 'list_repository':list_repository, 'list_awaiting':list_awaiting, 'list_requested':list_requested})
def create_repository(request, repo): def errorHandle(error,form): return render_to_response('create_repository.html', { 'error' : error, 'form' : form, }) if not check_premissions(request,'VC-HD-Access'): return HttpResponseRedirect("/request/") if request.method == 'POST': form = ProjectMainForm(request.POST) if form.is_valid(): form.cleaned_data['status']="active" try: tmp = ProjectCreation.objects.get(shortname=form.cleaned_data['shortname']) except : raise Http404 tmp.status=form.cleaned_data['status'] realQuota=int(tmp.quota)*1024 form.save() tmp.save() pers="" if tmp.personal==True: pers="yes" else: pers="no" use_existing="" if tmp.use_existing_account==True: use_existing="yes" else: use_existing="no" #executing script: command2 ="cd "+ CreateHD + "; ./create-projectHD.sh " + form.cleaned_data['shortname'] +' \''+ form.cleaned_data['longname'] +'\' \''+ form.cleaned_data['respuser'] +'\' \''+ form.cleaned_data['respemail'] +'\' \''+ form.cleaned_data['libuser'] +'\' \''+ tmp.userwrite +'\' \''+ tmp.password +'\' \''+ form.cleaned_data['restrictionlevel'] +'\' \''+ tmp.useradmin +'\' \''+ tmp.userread +'\' \''+ pers +'\' \''+ str(realQuota)+'\'' out=open(LOGS+tmp.shortname+"-ProjectCreation.log","w") err=open(LOGS+tmp.shortname+"-ProjectCreationErrors.log","w") try: if settings.DEBUG: pass else: Popen(MAGIC_SCRIPT+"\""+command2+"\"", shell=True, stdout=out, stderr=err) except OSError, e: error="Execution failed: "+ e return errorHandle(error) return HttpResponseRedirect("/HD/"+tmp.shortname+"/waiting/") else: return errorHandle("Form is not Valid", form)
def check_all_data(request, repo): def errorHandle(error, form): form = form return render_to_response('check_all_data.html', { 'error' : error, 'form' : form, }) if not check_premissions(request,'VC-HD-Access'): return HttpResponseRedirect("/request/") if request.method == 'POST': try: tmp = ProjectCreation.objects.get(shortname=repo) form = ProjectForm(data = request.POST, instance = tmp) except: raise Http404 if form.is_valid(): if form.cleaned_data['use_existing_account']==True:#if user uses existing librarian form.cleaned_data['status']='requested_repository'#we don't need to create another one so we push project to 'create_repository' form.save() return HttpResponseRedirect("/HD/"+tmp.shortname+"/create_repository/") else: form.cleaned_data['status']='requested_account'#if not we must first create a librarian account in 'create_librarian' form.save() return HttpResponseRedirect("/HD/"+tmp.shortname+"/create_librarian/") else: errorHandle("Form is not valid",form) else: try: tmp = ProjectCreation.objects.get(shortname=repo) except: raise Http404 form=ProjectForm(instance=tmp) if tmp.status=="requested": return render_to_response('check_all_data.html', {'form':form}) elif tmp.status=="requested_repository": return errorHandle("Account created. go to status page!", None) elif tmp.status=="awaiting_account": return errorHandle("Awaiting for account!", None) elif tmp.status=="active": return errorHandle("Repository already created and active!", None) else: return errorHandle("Unknown status of this repository", None)
def create_librarian(request, repo): def errorHandle(error,login): return render_to_response('create_account.html', { 'error' : error, 'login' : login, }) if not check_premissions(request,'VC-HD-Access'): return HttpResponseRedirect("/request/") if request.method == 'POST': try: tmp = ProjectCreation.objects.get(shortname=repo) except : raise Http404 account_name=request.POST['login'] passwd=request.POST['password'] if len(passwd)<8: return errorHandle("Password is to short",tmp.libuser) tmp.libuser=account_name tmp.password=passwd tmp.status="awaiting_account" tmp.save() return HttpResponseRedirect("/ status/") else: try: tmp = ProjectCreation.objects.get(shortname=repo) except : raise Http404 #form=ProjectForm(instance=tmp) if tmp.use_existing_account==True: empty=ProjectForm() return errorHandle("Repository "+tmp.longname+" ("+tmp.shortname+") have existing librarian account already2",empty) else: if tmp.status=="requested_account": return render_to_response('create_account.html', {'login': tmp.libuser}) elif tmp.status=="requested_repository": return errorHandle("Account created. go to status page!", None) elif tmp.status=="awaiting_account": return errorHandle("Awaiting for account!", None) elif tmp.status=="active": return errorHandle("Repository already created and active!", None) else: return errorHandle("Unknown status of this repository", None)
def waiting(request, repo): if not check_premissions(request,'VC-HD-Access'): return HttpResponseRedirect("/request/") out_str=[] err_str=[] errors=0 warnings=0 done=False try: out=open(LOGS+tmp.shortname+"-ProjectCreation.log","w") tmp=out.readlines() except: tmp=[] tmp.append("ERROR: Cannot open Log") done=True for line in tmp: if line.find("ERROR")==0: errors+=1 line='<font color="red"><b>'+line+'</b></font>' elif line.find("WARNING")==0: warnings+=1 line='<font color="brown"><b>'+line+'</b></font>' elif line.find("SUCCESS: project"): line='<font color="green"><b>'+line+'</b></font>' done=True out.str.replace('\n','<br />') out_str.append(line) try: err=open(LOGS+tmp.shortname+"-ProjectCreationErrors.log","w") err_str=out.readlines() except: err_str="Cannot open Error Log" err_str.replace('/n','<br />') if not done: return render_to_response('create_repository.html', {'out_str': out_str, 'err_str':err_str, 'warnings':warnings, 'errors':errors}) else: return render_to_response('create_repository.html', {'out_str': out_str, 'err_str':err_str, 'warnings':warnings, 'errors':errors, 'done':done})