def profile_edit(request,id): lang=select_language(request) user = request.user.username try: profile_owner = Person.objects.get(id=id) except Person.DoesNotExist: add_error(u"Пользователь с логином %s не найден!" % user,request) return (False,(HttpResponseRedirect("/"))) who_can_edit=[] who_can_edit.extend(admins) who_can_edit.append(profile_owner.login) if user not in who_can_edit: add_error(u"Вы не имеете права редактировать этот профиль!",request) return (False,(HttpResponseRedirect("/"))) if request.method == 'POST': # form = UserCreationFormMY(request.POST) form = get_localized_form('UserEditForm',app,request)(request.POST) if form.is_valid(): data = form.cleaned_data # new_user = form.save() profile_owner.fio = data['fio'] profile_owner.tel = data['tel'] profile_owner.mail = data['mail'] profile_owner.save() return (False,(HttpResponseRedirect("/accounts/profile/show/%s/" % profile_owner.id))) return (True,('register.html',{'UserEditForm':{'fio':profile_owner.fio,'mail':profile_owner.mail,'tel':profile_owner.tel}},{'title':'GMAH.RU','target':u'Редактируем профиль %s' % user},request,app))
def claim_show(request,id): lang=select_language(request) user = request.user.username try: user = Person.objects.get(login=user) except Person.DoesNotExist: add_error(u"Пользователь с логином %s не найден!" % user,request) return (False,(HttpResponseRedirect("/"))) try: claim = Claim.objects.get(id=id) except Claim.DoesNotExist: add_error(u"Заявка с номером %s не найдена!" % id,request) # return (False,(HttpResponseRedirect("/assets_by_type/"+type_id+"/"))) return (False,(HttpResponseRedirect("/"))) # a = str(claim.id) title = u'GMAH.RU - заявка %s' % str(claim.name) files=claim.file.all() if files: first_file = files[0] files = files[1:] else: first_file='' # Получаем список тех, кто может просмотреть данные пользователей can_see_info = str(user.id) in claim.acl.split(u';') or \ user.login in admins or claim.owner.id == user.id return (True,('claim_show.html',{},{'title':title , 'claim':claim, 'files':files, 'first_file':first_file, 'can_see_info':can_see_info, },request,app))
def save_new_model(request,asset_type_id): lang=select_language(request) user = request.user.username try: fio = Person.objects.get(login=user) except Person.DoesNotExist: fio = FioError() method = request.method asset_type = Asset_type.objects.get(id=asset_type_id) form_name = 'NewModel_'+asset_type.catalogue_name ## print form_name aaa = request.method #raise NotImplementedError('ERROR') if request.method == 'POST': # f = ArticleForm(request.POST) f = get_localized_form(form_name,app,request)(request.POST) aaa = f.is_valid() if f.is_valid(): # Save a new object from the form's data. ## print form_name ## print f new_model=f.save() return (True,('OK.html', {},{'html':u'Модель '+new_model.model_name+u' успешно добавлена в базу'},request,app)) else: raise NotImplementedError(f.errors) pass return (True,('OK.html', {},{'html':u'Случилась неведомая фигня в функции api.save_new_model'},request,app))
def claim_accept_request(request,request_id): """ Добавляет для заявки право на просмотра для того, кто отправил запрос на зявку :param request: страндартный параметр :param request_id: id запроса :return: """ lang=select_language(request) user = request.user.username try: info_request = Requests.objects.get(id=request_id) except Requests.DoesNotExist: add_error(u"Запрос с номером %s не найден!" % id,request) return (False,(HttpResponseRedirect("/"))) claim = info_request.claim # Добавляем разрешение для хозяина заявки на просмотр профиля пользователя, который хочет контактные данные result = add_permission(to=claim, for_whom=info_request.person.id) if result!='OK': add_error(u"Результат попытки - %s" % result,request) add_error(u"Не удалось задать разрешения на просмотр ваших " u"данных для заявки %s для пользователя %s!" % ( claim,info_request.person), request) return (False,(HttpResponseRedirect("/accounts/profile/"))) # a = datetime.datetime.now() # c = make_aware(a,get_current_timezone()) # new_request = Requests(claim = claim, # person = user, # claim_owner = claim.owner, # date = c, # seen = False) # new_request.save()g info_request.delete() return (False,(HttpResponseRedirect("/")))
def claim_send_request(request,id): lang=select_language(request) user = request.user.username try: claim = Claim.objects.get(id=id) except Person.DoesNotExist: add_error(u"Заявка с номером %s не найден!" % id,request) return (False,(HttpResponseRedirect("/"))) try: user = Person.objects.get(login=user) except Person.DoesNotExist: add_error(u"Пользователь с логином %s не найден!" % user,request) return (False,(HttpResponseRedirect("/"))) # Добавляем разрешение для хозяина заявки на просмотр профиля пользователя, который хочет контактные данные result = add_permission(to=user, for_whom=claim.id) if result!='OK': add_error(u"Результат попытки - %s" % result,request) add_error(u"Не удалось задать разрешения на просмотр вашего профиля для хозяина заявки!",request) return (False,(HttpResponseRedirect("/"))) a = datetime.datetime.now() c = make_aware(a,get_current_timezone()) new_request = Requests(claim = claim, person = user, claim_owner = claim.owner, date = c, seen = False) new_request.save() return (False,(HttpResponseRedirect("/")))
def profile_show(request,id): class R(): def __init__(self,claim,requester,request): self.claim = claim self.requester = requester self.request = request class P(): def __init__(self,claim,requester): self.claim = claim self.requester = requester lang=select_language(request) user = request.user.username try: profile_owner = Person.objects.get(id=id) except Person.DoesNotExist: add_error(u"Пользователь с id %s не найден!" % id,request) return (False,(HttpResponseRedirect("/"))) who_can_see=[] who_can_see.extend(admins) who_can_see.append(profile_owner.login) # добавляем людей, которые могу просматрить профиль - это # владельцы заявок, к которым он оставлял запрос на получение # контакных данных и он ещё рассматривается или был принят for p in profile_owner.acl.split(';'): try: c = Claim.objects.get(id=p) # person = Person.objects.get(id=c.owner.) who_can_see.append(c.owner.login) except (Claim.DoesNotExist, Person.DoesNotExist, ValueError): pass if user not in who_can_see: add_error(u"Вы не имеете права просматривать этот профиль!",request) return (False,(HttpResponseRedirect("/"))) # Кому мы выдали разрешения на просмотр # Проходимся по нашим заявкам и смотрим my_claims = Claim.objects.filter(owner = profile_owner).filter( deleted = False) given_requests = [] for c in my_claims: for person_id in c.acl.split(';'): try: person = Person.objects.get(id=person_id) given_requests.append(P(c,person)) except (Person.DoesNotExist, ValueError): pass new_requests = Requests.objects.filter(claim_owner = profile_owner).filter(seen=False) claims_with_requests = [] for r in new_requests: r.seen = True r.save() claims_with_requests.append(R(r.claim,r.person,r)) return (True,('profile.html',{},{'title':'GMAH.RU', 'profile_owner':profile_owner, 'user':user, 'claims_with_requests':claims_with_requests, 'given_requests':given_requests}, request,app))
def get_info(request): lang=select_language(request) user = request.user.username try: fio = Person.objects.get(login=user) except Person.DoesNotExist: fio = FioError() method = request.method return lang,user,fio,method
def get_info(request): lang=select_language(request) login = request.user.username try: user = Person.objects.get(login=login) except Person.DoesNotExist: user = FioError() method = request.method return lang,login,user,method
def get_new_contractor_add_form(request, contractor_name): lang=select_language(request) user = request.user.username try: fio = Person.objects.get(login=user) except Person.DoesNotExist: fio = FioError() method = request.method return (True,('get_new_contractor_add_form.html', {'NewContractorForm':{'name':contractor_name}},{'method':method},request,app))
def get_new_asset_type_add_form(request): lang=select_language(request) user = request.user.username try: fio = Person.objects.get(login=user) except Person.DoesNotExist: fio = FioError() method = request.method return (True,('get_new_asset_type_add_form.html', {'NewAssetTypeForm':{}},{'method':method},request,app))
def get_new_asset_model_add_form(request,asset_type_id,asset_model_name): lang=select_language(request) user = request.user.username try: fio = Person.objects.get(login=user) except Person.DoesNotExist: fio = FioError() method = request.method # Имя формы для ввода нового актива получается добавлением каталожного имени к 'NewModel_' asset_type = Asset_type.objects.get(id=asset_type_id) form_name = 'NewModel_'+asset_type.catalogue_name return (True,('get_new_asset_model_add_form.html', {form_name:{'model_name':asset_model_name}}, {'method':method,'form_template_name':'NewModelForm', 'asset_type_id':asset_type_id},request,app))
def get_asset_add_form_header(request): lang=select_language(request) # user = request.user.username # try: # fio = Person.objects.get(login=user) # except Person.DoesNotExist: # fio = FioError() # method = request.method # try: # asset_type = Asset_type.objects.get(id=asset_category) # except Asset_type.DoesNotExist: # return ErrorMessage('Неверно указан код категории актива: '+str(asset_category)) # функция для загрузки последней цены, срока гарантии + установка статуса в {{статус по умолчанию}} и места в {{место по умолчанию}} из настроек раздела [cashless] (из get_asset_add_form.html) # get_bd_option_with_description returns name,opt_id,opt_val,desc # a,b,default_place,c = get_bd_option_with_description('cashless','default_place') # a,b,default_status,c = get_bd_option_with_description('cashless','default_status') # return (True,('get_asset_add_form_header.html', {'NewAssetForm':{'number':0}},{'default_place':default_place,'default_status':default_status,'number':form_number,'asset_type':asset_type, 'method':method},request,app)) return (True,('get_asset_add_form_header.html', {'NewAssetForm':{'number':0}},{},request,app))
def get_contractors_list(request,name_to_select='',internal=False): lang=select_language(request) user = request.user.username try: fio = Person.objects.get(login=user) except Person.DoesNotExist: fio = FioError() try: contractor = Contractor.objects.get(name=name_to_select) except Contractor.DoesNotExist: contractor = '' method = request.method contractors = Contractor.objects.all() if internal: t = loader.get_template(get_localized_name('get_contractors_list.html',request)) c = Context({'contractors':contractors}) return (False,(t.render(c))) return (True,('get_contractors_list.html', {},{'contractors':contractors,'contractor':contractor,'name_to_select':name_to_select},request,app))
def register(request): lang=select_language(request) if request.method == 'POST': # form = UserCreationFormMY(request.POST) form = get_localized_form('UserCreationFormMY',app,request)(request.POST) if form.is_valid(): data = form.cleaned_data new_user = form.save() new_person = Person( fio = data['fio'], tel = data['tel'], mail = data['mail'], login = data['username'] ) new_person.save() return (False,(HttpResponseRedirect("/"))) # else: # form = l_forms[lang]['UserCreationFormMY']() # return render_to_response(languages[lang]+"registration/register.html",{'form':form},RequestContext(request)) return (True,('register.html',{'UserCreationFormMY':{}},{'title':'GMAH.RU','target':'Создать новый профиль',},request,app))
def get_new_asset_type_save(request): lang=select_language(request) user = request.user.username try: fio = Person.objects.get(login=user) except Person.DoesNotExist: fio = FioError() method = request.method if request.method == 'POST': form = get_localized_form('NewAssetTypeForm',app,request)(request.POST) if form.is_valid(): data = form.cleaned_data at=Asset_type(asset_type = data['asset_type'], catalogue_name = data['catalogue_name'], ) at.save() # html='<input type="hidden" id="c_id" value="%s" /><input type="hidden" id="c_name" value="%s" />' % (c.id, c.name) # return (True,('OK.html', {},{},request,app)) # return render_to_response(languages[lang]+'OK.html', {'c':c,'html':html},RequestContext(request)) return (False,(HttpResponseRedirect("/assets_by_type/"+str(at.id)+"/"))) raise IOError("Произошла какая-то ошибка, но не могу представить какая. Надо выяснить и записать для диагностики")
def get_asset_type_list(request,id=-1,internal=False): lang=select_language(request) user = request.user.username try: fio = Person.objects.get(login=user) except Person.DoesNotExist: fio = FioError() type_names = Asset_type.objects.all() for item in type_names: item.name=item.asset_type method = request.method # если для встраивания if internal: t = loader.get_template(get_localized_name('get_list.html',request)) if id!=-1: c = Context({'items':type_names,'input_id_name':'asset_type_id','selected_item_id':id}) return (False,(t.render(c))) c = Context({'items':type_names,'input_id_name':'asset_type_id'}) return (False,(t.render(c))) if id!=-1: return render_to_response(languages[lang]+'get_list.html', {'items':type_names,'input_id_name':'asset_type_id','selected_item_id':id},RequestContext(request)) return (True,('get_list.html', {},{'items':type_names,'input_id_name':'asset_type_id'},request,app))
def save_new_contractor(request): lang=select_language(request) user = request.user.username try: fio = Person.objects.get(login=user) except Person.DoesNotExist: fio = FioError() method = request.method if request.method == 'POST': form = get_localized_form('NewContractorForm',app,request)(request.POST) if form.is_valid(): data = form.cleaned_data c=Contractor(name = data['name'], tel = data['tel'], email = data['email'], tel_of_support = data['tel_of_support'], contact_name = data['contact_name'],) c.save() html=u'<input type="hidden" id="c_id" value="%s" /><input type="hidden" id="c_name" value="%s" />' % (c.id, c.name) return (True,('OK.html', {},{'html':html},request,app)) # return render_to_response(languages[lang]+'OK.html', {'c':c,'html':html},RequestContext(request)) raise IOError("Произошла какая-то ошибка, но не могу представить какая. Надо выяснить и записать для диагностики")
def claim_withdraw_request(request,claim_id,requester_id): """ Добавляет для заявки право на просмотра для того, кто отправил запрос на зявку Мы должны удалить разрешение на просмотр профиля для обоих человек Для заявки удаляем id запрашивающего Для запрашивающего - id заявки :param request: страндартный параметр :param request_id: id запроса :return: """ lang=select_language(request) user = request.user.username try: claim = Claim.objects.get(id=claim_id) except Claim.DoesNotExist: add_error(u"Не нашли заявку id %s" % claim_id,request) return (False,(HttpResponseRedirect("/accounts/profile/"))) try: requester = Person.objects.get(id=requester_id) except Claim.DoesNotExist: add_error(u"Не нашли человека id %s" % requester_id,request) return (False,(HttpResponseRedirect("/accounts/profile/"))) result = remove_permission(to=claim, for_whom=requester.id) if result!='OK': add_error(u"Результат попытки удаления доступа из заявки - " u"%s" % result, request) return (False,(HttpResponseRedirect("/accounts/profile/"))) result = remove_permission(to=requester, for_whom=claim.id) if result!='OK': add_error(u"Результат попытки удаления доступа из " u"пользователя - %s" % result,request) return (False,(HttpResponseRedirect("/accounts/profile/"))) return (False,(HttpResponseRedirect("/")))
def claim_refuse_request(request,request_id): """ Отказ в предоставлении котакных данных. Удаляет объект запроса на просмотр + лишает пользователя возможности просмотреть профиль того, кто хотел получить данные :param request: страндартный параметр :param request_id: id запроса :return: """ lang=select_language(request) user = request.user.username try: info_request = Requests.objects.get(id=request_id) except Requests.DoesNotExist: add_error(u"Запрос с номером %s не найден!" % id,request) return (False,(HttpResponseRedirect("/"))) # Получаем номер заявки для которой хотели получить данные claim = info_request.claim # кто просил данные who_want_info = info_request.person # и для этой заявки удаляем разершение на просмотр данных # профиля того, кто просил данные result = remove_permission(to=who_want_info, for_whom=claim.id) if result!='OK': add_error(u"Результат попытки - %s" % result,request) add_error(u"Не удалось удалить разрешение на " u"просмотр профиля пользователя %s, " u"выданный для получения данных к заявки %s " u"для пользователю %s!" % ( who_want_info, claim,info_request.claim_owner), request) return (False,(HttpResponseRedirect("/accounts/profile/"))) # удаляем сам запрос info_request.delete() return (False,(HttpResponseRedirect("/")))