Ejemplo n.º 1
0
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))
Ejemplo n.º 2
0
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))
Ejemplo n.º 3
0
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))
Ejemplo n.º 4
0
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("/")))
Ejemplo n.º 5
0
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("/")))
Ejemplo n.º 6
0
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))
Ejemplo n.º 7
0
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
Ejemplo n.º 8
0
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
Ejemplo n.º 9
0
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))
Ejemplo n.º 10
0
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))
Ejemplo n.º 11
0
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))
Ejemplo n.º 12
0
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))
Ejemplo n.º 13
0
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))
Ejemplo n.º 14
0
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))
Ejemplo n.º 15
0
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("Произошла какая-то ошибка, но не могу представить какая. Надо выяснить и записать для диагностики")
Ejemplo n.º 16
0
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))
Ejemplo n.º 17
0
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("Произошла какая-то ошибка, но не могу представить какая. Надо выяснить и записать для диагностики")
Ejemplo n.º 18
0
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("/")))
Ejemplo n.º 19
0
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("/")))