Esempio n. 1
0
def user_page(request, login):
    if is_login(request):
        user = User.objects.get(id=user_id(request))
        user_page = User.objects.get(login=login)
        if user == user_page:
            data = {
                'login': True,
                'view': True,
                'user': user,
                'user_page': user_page,
                'account_class': 'active',
            }
            data.update(csrf(request))
        else:
            data = {
                'login': True,
                'view': False,
                'user': user,
                'user_page': user_page,
                'account_class': 'active',
            }
            data.update(csrf(request))
        return render(request, 'user_page.html', data)
    else:
        return HttpResponseRedirect('/user/login/')
Esempio n. 2
0
def point_visible(request, unp_unn, id_point):
    if is_login(request):
        try:
            partner = Partner.objects.get(
                unp_unn=int(unp_unn),
                active=True
            )
        except Partner.DoesNotExist:
            raise Http404
        user = User.objects.get(id=user_id(request))
        if user not in partner.user.all():
            raise Http404
        try:
            back = request.META['HTTP_REFERER']
        except KeyError:
            back = '/partner/{}/points/all/1/'.format(unp_unn)
        point = Point.objects.get(id=int(id_point))
        if point.partner_id != partner.id:
            raise Http404
        else:
            point.active = True
            point.save()
            return HttpResponseRedirect(back)
    else:
        return HttpResponseRedirect('/user/login/')
Esempio n. 3
0
def login(request):
    if not is_login(request):
        if request.method == 'POST':
            form = LoginUser(request.POST)
            if form.is_valid():
                fields = form.clean()
                if fields.get('saved'):
                    request.session['user'] = fields.get('shadow_id')
                    return HttpResponseRedirect('/user/{}/'.format(
                        fields.get('user')))
                else:
                    response = HttpResponseRedirect('/user/{}/'.format(
                        fields.get('user')))
                    response.set_cookie('xsstoken', fields.get('shadow_id'))
                    return response
            else:
                data = {
                    'form': form,
                    'account_class': 'active',
                    'login': False
                }
            data.update(csrf(request))
            return render(request, 'user_login.html', data)
        else:
            form = LoginUser()
            data = {'form': form, 'account_class': 'active', 'login': False}
            data.update(csrf(request))
            return render(request, 'user_login.html', data)
    else:
        user = User.objects.get(id=user_id(request))
        return HttpResponseRedirect('/user/{}/'.format(user.login))
Esempio n. 4
0
def country(request, country, page):
    count_pages = count_page(
        News.objects.filter(country__name_en=country, online=True).count(),
        COUNT_ELEMENTS)
    start = int(page) * COUNT_ELEMENTS - COUNT_ELEMENTS
    finish = start + COUNT_ELEMENTS
    all_news = News.objects.filter(country__name_en=country,
                                   online=True)[start:finish]
    for news in all_news:
        content_html = BeautifulSoup(news.content)
        all_content = content_html.get_text()
        list_content = list(all_content)[0:151]
        news.content = ''.join(list_content)
    rubric = Rubric.objects.filter(active=True)
    all_rubric = []
    all_rubric.append('<li><a href="/news/1/">Все</a></li>')
    html = '<li {0}><a href="/news/rubric/{1}/1/">{2}</a></li>'
    for line in rubric:
        all_rubric.append(html.format('', line.name_en.lower(), line.name_ru))
    data = {
        'all_news': all_news,
        'pages': get_html_pages(int(page), count_pages, '/news/'),
        'login': False,
        'news_class': 'active',
        'all_rubric': all_rubric
    }
    if is_login(request):
        user = User.objects.get(id=user_id(request))
        data['login'] = True
        data['user'] = user
    data.update(csrf(request))
    return render(request, 'news.html', data)
Esempio n. 5
0
def parther_page(request, unp_unn):
    '''
    страница партнера
    '''
    if is_login(request):
        user = User.objects.get(id=user_id(request))
        try:
            partner = user.users.get(unp_unn=int(unp_unn), active=True)
        except Exception:
            pass
        data = {
            'login': True,
            'user': user,
            'account_class': 'active',
        }
        if partner:
            data['partner'] = partner
            data['partner_admin'] = True
        else:
            try:
                data['partner'] = Partner.objects.get(
                    unp_unn=int(unp_unn)
                )
            except Partner.DoesNotExist:
                raise Http404
        data.update(csrf(request))
        return render(request, 'partner_page.html', data)
    else:
        return HttpResponseRedirect('/user/login/')
Esempio n. 6
0
def add(request):
    if not is_login(request):
        if request.method == 'POST':
            form = NewUser(request.POST)
            if form.is_valid():
                form.save()
                messages.info(request, 'Вы успешно зареристриваны.')
                messages.info(request,
                              'Проверьте почту указанную при регистрации.')
                return HttpResponseRedirect('/')
            else:
                data = {
                    'form': form,
                    'account_class': 'active',
                    'login': False
                }
                data.update(csrf(request))
                return render(request, 'user_add.html', data)
        else:
            form = NewUser()
            data = {'form': form, 'account_class': 'active', 'login': False}
            data.update(csrf(request))
            return render(request, 'user_add.html', data)
    else:
        return HttpResponseRedirect('/user/login/')
Esempio n. 7
0
def add(request):
    '''
    создание новой страницы партнера
    '''
    if is_login(request):
        user = User.objects.get(id=user_id(request))
        if request.method == 'POST':
            form_partner = FormPatrner(request.POST)
            if form_partner.is_valid():
                form_partner.save(user_id(request))
                messages.info(request, 'Страница партера создана')
                return HttpResponseRedirect('/partner/{}/'.format(request.POST.get('unp_unn')))
            else:
                data = {
                    'form_partner': form_partner,
                    'user': user,
                    'account_class': 'active',
                    'login': True,
                }
                data.update(csrf(request))
                return render(request, 'partner_add.html', data)
        else:
            form_partner = FormPatrner()
            data = {
                'form_partner': form_partner,
                'user': user,
                'account_class': 'active',
                'login': True,
            }
            data.update(csrf(request))
            return render(request, 'partner_add.html', data)
    else:
        return HttpResponseRedirect('/user/login/')
Esempio n. 8
0
def delete_admin(request, unp_unn, login):
    '''
    удаление администратора партнерской страницы
    '''
    if is_login(request):
        try:
            partner = Partner.objects.get(
                unp_unn=int(unp_unn),
                active=True
            )
        except Partner.DoesNotExist:
            raise Http404
        user_admin = User.objects.get(id=user_id(request))
        if user_admin not in partner.user.all():
            raise Http404
        user = User.objects.get(login=login)
        if user in partner.user.all():
            partner.user.remove(user)
            partner.save()
        else:
            raise Http404
        return HttpResponseRedirect(
            '/partner/{}/admin/'.format(unp_unn)
        )
    else:
        return HttpResponseRedirect('/user/login/')
Esempio n. 9
0
def logout(request):
    if is_login(request):
        sess = False
        cook = False
        try:
            secret = Secret.objects.get(id=user_id(request))
        except Secret.DoesNotExcist:
            raise Http404
        else:
            try:
                user = request.session['user']
            except KeyError:
                try:
                    user = request.COOKIES['xsstoken']
                except KeyError:
                    raise Http404
                else:
                    cook = True
            else:
                sess = True
        if secret.shadow_id == user:
            response = HttpResponseRedirect('/')
            if sess:
                del request.session['user']
            if cook:
                response.delete_cookie('xsstoken')
        return response
    else:
        return HttpResponseRedirect('/user/login/')
Esempio n. 10
0
def point_delete(request, unp_unn, id_point):
    '''
    удаление точки
    '''
    if is_login(request):
        try:
            partner = Partner.objects.get(
                unp_unn=int(unp_unn),
                active=True
            )
        except Partner.DoesNotExist:
            raise Http404
        user = User.objects.get(id=user_id(request))
        if user not in partner.user.all():
            raise Http404
        try:
            back = request.META['HTTP_REFERER']
        except KeyError:
            back = '/partner/{}/points/all/1/'.format(unp_unn)
        point = Point.objects.get(id=int(id_point))
        if point.partner_id != partner.id:
            raise Http404
        else:
            cache.set(
                'point_{0}_{1}'.format(unp_unn, id_point),
                point,
                2592000
            )
            point.delete()
            return HttpResponseRedirect(back)
    else:
        return HttpResponseRedirect('/user/login/')
Esempio n. 11
0
def point_filter_region(request, unp_unn, region, page):
    '''
    фильтр точек по названию региона
    '''
    if is_login(request):
        try:
            partner = Partner.objects.get(
                unp_unn=int(unp_unn),
                active=True
            )
        except Partner.DoesNotExist:
            raise Http404
        user = User.objects.get(id=user_id(request))
        if user not in partner.user.all():
            raise Http404
        region = region.replace('_', ' ')
        count_pages = count_page(
            Point.objects.filter(
                partner_id=partner.id,
                region__name_en=region
            ).count(),
            COUNT_ELEMENTS
        )
        start = int(page) * COUNT_ELEMENTS - COUNT_ELEMENTS
        finish = start + COUNT_ELEMENTS
        points = Point.objects.filter(
            partner_id=partner.id,
            region__name_en=region
        ).order_by('-id')[start:finish]
        data = {
            'user': user,
            'account_class': 'active',
            'login': True,
            'partner': partner,
            'points': points,
            'pages': get_html_pages(
                int(page),
                count_pages,
                '/partner/{0}/points/region/{1}/'.format(
                    unp_unn,
                    region.replace(' ', '_').lower()
                )
            ),
            'filter': True,
        }
        data.update(csrf(request))
        return render(request, 'points/points_all.html', data)
    else:
        return HttpResponseRedirect('/user/login/')
Esempio n. 12
0
def edit(request, login):
    if is_login(request):
        user = User.objects.get(id=user_id(request))
        if user.login != login:
            raise Http404
        if request.method == 'POST':
            form = EditUser(request.POST)
            print(request.POST)
            if form.is_valid():
                form.save(user_id(request))
                messages.info(request, 'Ваши данные успешно изменены')
                return HttpResponseRedirect('/user/{}/'.format(user.login))
            else:
                data = {
                    'user': user,
                    'account_class': 'active',
                    'form': form,
                    'login': True
                }
                data.update(csrf(request))
                return render(request, 'user_edit.html', data)
        else:
            user_data = {
                'name': user.name,
                'family': user.family,
                'email': user.email,
                'telephone': user.telephone,
                'country': user.country.name_ru,
                'region': user.region.name_ru,
                'district': user.district.name_ru,
                'city': user.city.name_ru,
                'street': user.street,
                'country_id': user.country.id,
                'region_id': user.region.id,
                'district_id': user.district.id,
                'city_id': user.city.id,
            }
            form = EditUser(initial=user_data)
            data = {
                'user': user,
                'account_class': 'active',
                'form': form,
                'login': True
            }
            data.update(csrf(request))
            return render(request, 'user_edit.html', data)
    else:
        return HttpResponseRedirect('/user/login/')
Esempio n. 13
0
def delete(request, unp_unn):
    '''
    удаление (скрытие) партнерской страницы
    '''
    if is_login(request):
        try:
            partner = Partner.objects.get(
                unp_unn=int(unp_unn),
                active=True
            )
        except Partner.DoesNotExist:
            raise Http404
        user = User.objects.get(id=user_id(request))
        if user not in partner.user.all():
            raise Http404
        if request.method == 'POST':
            form_del_partner = DelPartner(request.POST)
            if form_del_partner.is_valid():
                partner.active = False
                partner.save()
                return HttpResponseRedirect('/partner/all/')
            else:
                data = {
                    'user': user,
                    'account_class': 'active',
                    'login': True,
                    'partner': partner,
                    'form_del_partner': form_del_partner,
                }
                data.update(csrf(request))
                return render(request, 'partner_delete.html', data)
        else:
            form_del_partner = DelPartner(initial={'user_id': user_id(request)})
            data = {
                'user': user,
                'account_class': 'active',
                'login': True,
                'partner': partner,
                'form_del_partner': form_del_partner,
            }
            data.update(csrf(request))
            return render(request, 'partner_delete.html', data)
    else:
        return HttpResponseRedirect('/user/login/')
Esempio n. 14
0
def delete(request, login):
    if is_login(request):
        user = User.objects.get(id=user_id(request))
        if user.login != login:
            raise Http404
        if request.method == 'POST':
            form = DeleteUser(request.POST)
            if form.is_valid():
                User.objects.filter(id=user_id(request)).delete()
                response = HttpResponseRedirect('/')
                try:
                    del request.session['user']
                except KeyError:
                    response.delete_cookie('xsstoken')
                return response
            else:
                data = {
                    'user': user,
                    'account_class': 'active',
                    'form': form,
                    'login': True,
                }
                data.update(csrf(request))
                return render(request, 'user_delete.html', data)
        else:
            user_data = {
                'user_login': user.login,
            }
            form = DeleteUser(initial=user_data)
            data = {
                'user': user,
                'account_class': 'active',
                'form': form,
                'login': True,
            }
            data.update(csrf(request))
            messages.info(
                request,
                'Ваша станица будет удалена без возможности востановления')
            return render(request, 'user_delete.html', data)
    else:
        return HttpResponseRedirect('/user/login/')
Esempio n. 15
0
def activate(request, login, data):
    if is_login(request):
        raise Http404
    else:
        user = User.objects.get(login=login)
        if user.activate:
            raise Http404
        else:
            secret = Secret.objects.get(user_id=user.id)
            key = hash_user_pass(str(secret.sol), str(secret.shadow_id))
            if key == data:
                user.activate = True
                user.save()
                messages.info(request, 'Ваша учетная запись активирована')
                request.session['user'] = secret.shadow_id
                return HttpResponseRedirect('/user/{}/'.format(user.login))
            else:
                messages.info(request,
                              'Ошибка, Обратитесь к администрации сайта')
                return HttpResponseRedirect('/')
Esempio n. 16
0
def view_comments(request, application, model, record_id):
    '''
    добавление на страницу списка добавленных комментариев
    '''
    all_comments = Comments.objects.filter(applications=application,
                                           model=model,
                                           record_id=record_id,
                                           moderation=True)
    data = {'comment_form': False, 'all_comments': all_comments}
    if is_login(request):
        comment_form = CommentsForm(
            initial={
                'applications': application,
                'model': model,
                'record_id': record_id,
                'user': user_id(request)
            })
        data['comment_form'] = comment_form
    data.update(csrf(request))
    return render_to_string('comments.html', data)
Esempio n. 17
0
def one_news(request, news):
    try:
        news = News.objects.get(link=news)
    except News.DoesNotExist:
        raise Http404
    try:
        back = request.META['HTTP_REFERER']
    except KeyError:
        back = False
    images = news.image.all()
    content = news.content.split('\n')
    img_html = '<img src="/media/{0}" alt="{1}" />'
    all_content = []
    for i in range(0, len(images)):
        all_content.append(
            img_html.format(images[i].full_image, images[i].name))
        try:
            all_content.append('{0}\n'.format(content[0]))
            del content[0]
        except IndexError:
            all_content.append('\n')
    if len(content):
        all_content.append('\n'.join(content))
    news.content = '\n'.join(all_content)
    comments = view_comments(request, str(News.__module__), str(News.__name__),
                             news.id)
    data = {
        'news': news,
        'back': back,
        'comments': comments,
        'news_class': 'active',
        'login': False
    }
    if is_login(request):
        user = User.objects.get(id=user_id(request))
        data['login'] = True
        data['user'] = user
    data.update(csrf(request))
    return render(request, 'one_news.html', data)
Esempio n. 18
0
def points(request, unp_unn, page):
    '''
    все точки партнера
    '''
    if is_login(request):
        try:
            partner = Partner.objects.get(
                unp_unn=int(unp_unn),
                active=True
            )
        except Partner.DoesNotExist:
            raise Http404
        user = User.objects.get(id=user_id(request))
        if user not in partner.user.all():
            raise Http404
        count_pages = count_page(
            Point.objects.filter(partner_id=partner.id).count(),
            COUNT_ELEMENTS
        )
        start = int(page) * COUNT_ELEMENTS - COUNT_ELEMENTS
        finish = start + COUNT_ELEMENTS
        points = Point.objects.filter(partner_id=partner.id).order_by('-id')[start:finish]
        data = {
            'user': user,
            'account_class': 'active',
            'login': True,
            'partner': partner,
            'points': points,
            'pages': get_html_pages(
                int(page),
                count_pages,
                '/partner/{}/points/all/'.format(unp_unn)
            ),
        }
        data.update(csrf(request))
        return render(request, 'points/points_all.html', data)
    else:
        return HttpResponseRedirect('/user/login/')
Esempio n. 19
0
def edit_pass(request, login):
    if is_login(request):
        user = User.objects.get(id=user_id(request))
        if user.login != login:
            raise Http404
        if request.method == 'POST':
            form = NewPass(request.POST)
            print(request.POST)
            if form.is_valid():
                form.save(user_id(request))
                messages.info(request, 'Ваш пароль успешно изменен')
                return HttpResponseRedirect('/user/{}/'.format(user.login))
            else:
                data = {
                    'form': form,
                    'account_class': 'active',
                    'user': user,
                    'login': True,
                }
                data.update(csrf(request))
                return render(request, 'user_edit_pass.html', data)
        else:
            user_data = {
                'user_login': user.login,
            }
            form = NewPass(initial=user_data)
            data = {
                'form': form,
                'account_class': 'active',
                'user': user,
                'login': True,
            }
            data.update(csrf(request))
            return render(request, 'user_edit_pass.html', data)
    else:
        return HttpResponseRedirect('/user/login/')
Esempio n. 20
0
def map_load(request):
    data = {
        'services': Services.objects.filter(active=True)
    }
    try:
        url = request.META['PATH_INFO'].replace('_', ' ').replace('+', ' ')
    except KeyError:
        raise Http404
    url_data = url.split('/')[2:-1]
    if len(url_data) > 4:
        url_data = url_data[0:3]
    pool = ThreadPool(len(url_data))
    res = pool.map(find_values_request, url_data)
    pool.close()
    pool.join()
    result = {}
    for line in res:
        for key in line:
            result[key] = line[key]
    # url который отобразится в строке браузера
    response_url = '/map/'

    # получение данных страны (если есть в запросе)
    if result.get('country'):
        if result['country']['accuracy']:
            # если точное совпадение с одиночным результатом
            if result['country']['method'] == 'exact':
                if result['country']['lang'] == 'ru':
                    data['country'] = Country.objects.get(
                        name_ru__iexact=result['country']['value']
                    )
                    response_url += '{}/'.format(
                        data['country'].name_en.lower().replace(' ', '_')
                    )
                if result['country']['lang'] == 'en':
                    data['country'] = Country.objects.get(
                        name_en__iexact=result['country']['value']
                    )
                    response_url += '{}/'.format(
                        data['country'].name_en.lower().replace(' ', '_')
                    )
            # если не точное совпадение с одиночным результатом
            if result['country']['method'] == 'contains':
                if result['country']['lang'] == 'ru':
                    data['country'] = Country.objects.get(
                        name_ru__icontains=result['country']['value']
                    )
                    response_url += '{}/'.format(
                        data['country'].name_en.lower().replace(' ', '_')
                    )
                if result['country']['lang'] == 'en':
                    data['country'] = Country.objects.get(
                        name_en__icontains=result['country']['value']
                    )
                    response_url += '{}/'.format(
                        data['country'].name_en.lower().replace(' ', '_')
                    )
        else:
            # если точное совпадение с множественным результатом
            if result['country']['method'] == 'exact':
                if result['country']['lang'] == 'ru':
                    data['country'] = Country.objects.filter(
                        name_ru__iexact=result['country']['value']
                    )[0]
                    response_url += '{}/'.format(
                        data['country'].name_en.lower().replace(' ', '_')
                    )
                    messages.info(request, 'Уточноите страну поиска')
                    messages.info(request, 'Найдено несколько подходящих значений')
                if result['country']['lang'] == 'en':
                    data['country'] = Country.objects.filter(
                        name_en__iexact=result['country']['value']
                    )[0]
                    response_url += '{}/'.format(
                        data['country'].name_en.lower().replace(' ', '_')
                    )
                    messages.info(request, 'Уточноите страну поиска')
                    messages.info(request, 'Найдено несколько подходящих значений')
            # если не точное совпадение с множественным результатом
            if result['country']['method'] == 'contains':
                if result['country']['lang'] == 'ru':
                    data['country'] = Country.objects.filter(
                        name_ru__icontains=result['country']['value']
                    )[0]
                    response_url += '{}/'.format(
                        data['country'].name_en.lower().replace(' ', '_')
                    )
                    messages.info(request, 'Уточноите страну поиска')
                    messages.info(request, 'Найдено несколько подходящих значений')
                if result['country']['lang'] == 'en':
                    data['country'] = Country.objects.filter(
                        name_en__icontains=result['country']['value']
                    )[0]
                    response_url += '{}/'.format(
                        data['country'].name_en.lower().replace(' ', '_')
                    )
                    messages.info(request, 'Уточноите страну поиска')
                    messages.info(request, 'Найдено несколько подходящих значений')
    else:
        try:
            address = request.META['REMOTE_ADDR']
        except KeyError:
            address = '194.158.192.237'
        if address == '127.0.0.1':
            address = '194.158.192.237'
        data_pos = get_country_by_ip(address)
        data['country'] = data_pos['country']
        response_url += '{}/'.format(
            data['country'].name_en.lower().replace(' ', '_')
        )
    find_region = False
    # получение данных региона (если есть в запросе)
    if result.get('region'):
        if result['region']['accuracy']:
            # если точное совпадение с одиночным результатом
            if result['region']['method'] == 'exact':
                if result['region']['lang'] == 'ru':
                    find_region = Region.objects.get(
                        name_ru__iexact=result['region']['value']
                    )
                if result['region']['lang'] == 'en':
                    find_region = Region.objects.get(
                        name_en__iexact=result['region']['value']
                    )
            # если не точное совпадение с одиночным результатом
            if result['region']['method'] == 'contains':
                if result['region']['lang'] == 'ru':
                    find_region = Region.objects.get(
                        name_ru__icontains=result['region']['value']
                    )
                if result['region']['lang'] == 'en':
                    find_region = Region.objects.get(
                        name_en__icontains=result['region']['value']
                    )
        else:
            # если точное совпадение с множественным результатом
            if result['region']['method'] == 'exact':
                if result['region']['lang'] == 'ru':
                    find_region = Region.objects.filter(
                        name_ru__iexact=result['region']['value']
                    )[0]
                    messages.info(request, 'Уточноите регион поиска')
                    messages.info(request, 'Найдено несколько подходящих значений')
                if result['region']['lang'] == 'en':
                    find_region = Region.objects.filter(
                        name_en__iexact=result['region']['value']
                    )[0]
                    messages.info(request, 'Уточноите регион поиска')
                    messages.info(request, 'Найдено несколько подходящих значений')
            # если не точное совпадение с множественным результатом
            if result['region']['method'] == 'contains':
                if result['region']['lang'] == 'ru':
                    find_region = Region.objects.filter(
                        name_ru__icontains=result['region']['value']
                    )[0]
                    messages.info(request, 'Уточноите регион поиска')
                    messages.info(request, 'Найдено несколько подходящих значений')
                if result['region']['lang'] == 'en':
                    find_region = Region.objects.filter(
                        name_en__icontains=result['region']['value']
                    )[0]
                    messages.info(request, 'Уточноите регион поиска')
                    messages.info(request, 'Найдено несколько подходящих значений')
    data['regions'] = data['country'].region_counrty.all()
    if find_region:
        if find_region in data['regions']:
            data['find_region'] = find_region
            response_url += '{}/'.format(
                find_region.name_en.lower().replace(' ', '_')
            )
        else:
            messages.info(
                request,
                'Данный регион не соответствует стране указанной в запросе'
            )

    find_servis = False
    # получение данных по сервису (если есть в запросе)
    if result.get('servis'):
        if result['servis']['accuracy']:
            # если точное совпадение с одиночным результатом
            if result['servis']['method'] == 'exact':
                if result['servis']['lang'] == 'ru':
                    find_servis = Services.objects.get(
                        name_ru__iexact=result['servis']['value']
                    )
                if result['servis']['lang'] == 'en':
                    find_servis = Services.objects.get(
                        name_en__iexact=result['servis']['value']
                    )
            # если не точное совпадение с одиночным результатом
            if result['servis']['method'] == 'contains':
                if result['servis']['lang'] == 'ru':
                    find_servis = Services.objects.get(
                        name_ru__icontains=result['servis']['value']
                    )
                if result['servis']['lang'] == 'en':
                    find_servis = Services.objects.get(
                        name_en__icontains=result['servis']['value']
                    )
        else:
            # если точное совпадение с множественным результатом
            if result['servis']['method'] == 'exact':
                if result['servis']['lang'] == 'ru':
                    find_servis = Services.objects.filter(
                        name_ru__iexact=result['servis']['value']
                    )[0]
                    messages.info(request, 'Уточноите сервис поиска')
                    messages.info(request, 'Найдено несколько подходящих значений')
                if result['servis']['lang'] == 'en':
                    find_servis = Services.objects.filter(
                        name_en__iexact=result['servis']['value']
                    )[0]
                    messages.info(request, 'Уточноите сервис поиска')
                    messages.info(request, 'Найдено несколько подходящих значений')
            # если не точное совпадение с множественным результатом
            if result['servis']['method'] == 'contains':
                if result['servis']['lang'] == 'ru':
                    find_servis = Services.objects.filter(
                        name_ru__icontains=result['servis']['value']
                    )[0]
                    messages.info(request, 'Уточноите сервис поиска')
                    messages.info(request, 'Найдено несколько подходящих значений')
                if result['servis']['lang'] == 'en':
                    find_servis = Services.objects.filter(
                        name_en__icontains=result['servis']['value']
                    )[0]
                    messages.info(request, 'Уточноите сервис поиска')
                    messages.info(request, 'Найдено несколько подходящих значений')
    if find_servis:
        data['servis'] = find_servis
        response_url += '{}/'.format(
            find_servis.name_en.lower().replace(' ', '_')
        )
    if result.get('search'):
        data['search'] = result.get('search').get('value')
        response_url += '{}/'.format(
            result.get('search').get('value').replace(' ', '+')
        )
    data['response_url'] = response_url
    if is_login(request):
        user = User.objects.get(id=user_id(request))
        data['login'] = True
        data['user'] = user
    data.update(csrf(request))
    return render(request, 'map.html', data)
Esempio n. 21
0
def home(request):
    data = {}
    try:
        address = request.META['REMOTE_ADDR']
    except KeyError:
        address = '194.158.192.237'
    if address == '127.0.0.1':
        address = '194.158.192.237'
    data_pos = get_country_by_ip(address)
    if is_login(request):
        user = User.objects.get(id=user_id(request))
        data['user'] = user
        data_weather = {
            'lat': user.region.latitude,
            'lon': user.region.longitude,
        }
        weather = Thread(target=get_weather, args=(data_weather, ))
        page_data = Thread(target=get_page_data, args=(data, True))
        weather.start()
        page_data.start()
        weather.join()
        page_data.join()
        data['position'] = {
            'city': user.region.name_ru,
            'country': user.country
        }
    else:
        if data_pos['country'].double_code == 'RU':
            data_ip = urlopen(
                'http://ipgeobase.ru:7020/geo?ip={}'.format(address))
            xml = BeautifulSoup(data_ip)
            region_tag = xml.find('region')
            region = region_tag.string
            region = Region.objects.get(name_ru=region)
            data_weather = {
                'lat': region.latitude,
                'lon': region.longitude,
            }
            data['position'] = {
                'city': region.name_ru,
                'country': data_pos['country']
            }
        else:
            data_weather = {
                'lat': data_pos['country'].latitude,
                'lon': data_pos['country'].longitude,
            }
            data['position'] = {
                'city': data_pos['country'].city_country.name_ru,
                'country': data_pos['country']
            }
        weather = Thread(target=get_weather, args=(data_weather, ))
        page_data = Thread(target=get_page_data, args=(data, ))
        weather.start()
        page_data.start()
        weather.join()
        page_data.join()
    offset_hour = data_pos['time_zone'].get_offset_hour()
    offset_minute = data_pos['time_zone'].get_offset_minutes()
    sec = offset_hour * 3600
    if offset_hour > 0:
        sec += (offset_minute * 60)
    elif offset_hour < 0:
        sec -= (offset_minute * 60)
    time_now = int(time.time()) - sec
    time_w = data_weather['weather']['list']
    for i in range(1, len(time_w)):
        if time_w[i]['dt'] > time_now:
            data['weather'] = [
                time_w[i - 1],
                time_w[i],
                time_w[i + 1],
                time_w[i + 2],
            ]
            break
    for line in data['weather']:
        line['dt'] += sec
    data['home_class'] = 'active'
    data.update(csrf(request))
    return render(request, 'home.html', data)
Esempio n. 22
0
def edit(request, unp_unn):
    '''
    редактирование партнерской страницы
    '''
    if is_login(request):
        try:
            partner = Partner.objects.get(
                unp_unn=int(unp_unn),
                active=True
            )
        except Partner.DoesNotExist:
            raise Http404
        user = User.objects.get(id=user_id(request))
        if user not in partner.user.all():
            raise Http404
        if request.method == 'POST':
            form_partner = FormPatrnerEdit(request.POST)
            if form_partner.is_valid():
                cleaned_data = form_partner.clean()
                partner.contact_person = cleaned_data.get('contact_person')
                partner.thelephones = cleaned_data.get('thelephones')
                partner.email = cleaned_data.get('email')
                partner.country_id = cleaned_data.get('country_id')
                partner.region_id = cleaned_data.get('region_id')
                partner.district_id = cleaned_data.get('district_id')
                partner.city_id = cleaned_data.get('city_id')
                partner.street = cleaned_data.get('street')
                partner.save()
                messages.info(request, 'Данные изменены')
                return HttpResponseRedirect('/partner/{}/'.format(partner.unp_unn))
            else:
                data = {
                    'user': user,
                    'account_class': 'active',
                    'login': True,
                    'form_partner': form_partner,
                    'partner': partner,
                }
                data.update(csrf(request))
                return render(request, 'partner_add.html', data)
        else:
            initial_data = {
                'contact_person': partner.contact_person,
                'thelephones': partner.thelephones,
                'email': partner.email,
                'country': partner.country.name_ru,
                'region': partner.region.name_ru,
                'district': partner.district.name_ru,
                'city': partner.city.name_ru,
                'street': partner.street,
                'country_id': partner.country_id,
                'region_id': partner.region_id,
                'district_id': partner.district_id,
                'city_id': partner.city_id,
            }
            form_partner = FormPatrnerEdit(initial=initial_data)
            data = {
                'user': user,
                'account_class': 'active',
                'login': True,
                'form_partner': form_partner,
                'partner': partner,
            }
            data.update(csrf(request))
            return render(request, 'partner_edit.html', data)
    else:
        return HttpResponseRedirect('/user/login/')
Esempio n. 23
0
def point_add(request, unp_unn):
    '''
    добавление новой точки
    '''
    if is_login(request):
        try:
            partner = Partner.objects.get(
                unp_unn=int(unp_unn),
                active=True
            )
        except Partner.DoesNotExist:
            raise Http404
        user = User.objects.get(id=user_id(request))
        if user not in partner.user.all():
            raise Http404
        if request.method == 'POST':
            if cache.get('back_add_{}'.format(user_id(request))) is not None:
                back = cache.get('back_add_{}'.format(user_id(request)))
            else:
                back = '/partner/{}/points/all/1/'.format(unp_unn)
            form_add_point = AddPoint(request.POST)
            if form_add_point.is_valid():
                form_add_point.save(partner.id)
                messages.info(request, 'Точка успешно добавлена на карту')
                return HttpResponseRedirect(back)
            else:
                cache.set(
                    'back_add_{}'.format(user_id(request)),
                    back,
                    1200
                )
                data = {
                    'user': user,
                    'account_class': 'active',
                    'login': True,
                    'partner': partner,
                    'back': back,
                    'form_add_point': form_add_point,
                }
                data.update(csrf(request))
                return render(request, 'points/point_add.html', data)
        else:
            try:
                back = request.META['HTTP_REFERER']
                cache.set(
                    'back_add_{}'.format(user_id(request)),
                    back,
                    1200
                )
            except KeyError:
                back = False
            form_add_point = AddPoint()
            data = {
                'user': user,
                'account_class': 'active',
                'login': True,
                'partner': partner,
                'back': back,
                'form_add_point': form_add_point,
            }
            data.update(csrf(request))
            return render(request, 'points/point_add.html', data)
    else:
        return HttpResponseRedirect('/user/login/')
Esempio n. 24
0
def point_edit(request, unp_unn, id_point):
    '''
    редактирование данных точки
    '''
    if is_login(request):
        try:
            partner = Partner.objects.get(
                unp_unn=int(unp_unn),
                active=True
            )
        except Partner.DoesNotExist:
            raise Http404
        user = User.objects.get(id=user_id(request))
        point = Point.objects.get(id=int(id_point))
        if user not in partner.user.all():
            raise Http404
        if request.method == 'POST':
            if cache.get('back_edit_{}'.format(user_id(request))) is not None:
                back = cache.get('back_edit_{}'.format(user_id(request)))
            else:
                back = '/partner/{}/points/all/1/'.format(unp_unn)
            form_edit_point = AddPoint(request.POST)
            if form_edit_point.is_valid():
                form_edit_point.update(point.id)
                messages.info(request, 'Данные изменены')
                return HttpResponseRedirect(back)
            else:
                cache.set(
                    'back_edit_{}'.format(user_id(request)),
                    back,
                    1200
                )
                data = {
                    'user': user,
                    'account_class': 'active',
                    'login': True,
                    'partner': partner,
                    'back': back,
                    'form_edit_point': form_edit_point,
                    'point': point,
                }
                data.update(csrf(request))
                return render(request, 'points/point_edit.html', data)
        else:
            try:
                back = request.META['HTTP_REFERER']
                cache.set(
                    'back_edit_{}'.format(user_id(request)),
                    back,
                    1200
                )
            except KeyError:
                back = '/partner/{}/points/all/1/'.format(unp_unn)
            form_edit_point = AddPoint(initial={
                'country': point.country,
                'region': point.region,
                'district': point.district,
                'city': point.city,
                'servis': point.servis,
                'name': point.name,
                'transport': point.transport,
                'country_id': point.country_id,
                'region_id': point.region_id,
                'district_id': point.district_id,
                'city_id': point.city_id,
                'street': point.street,
                'time_work': point.time_work,
                'thelephones': point.thelephones,
                'url': point.url,
                'desc': point.desc,
                'lat': point.lat,
                'lon': point.lon,
            })
            data = {
                'user': user,
                'account_class': 'active',
                'login': True,
                'partner': partner,
                'back': back,
                'form_edit_point': form_edit_point,
                'point': point,
            }
            data.update(csrf(request))
            return render(request, 'points/point_edit.html', data)
    else:
        return HttpResponseRedirect('/user/login/')
Esempio n. 25
0
def admin(request, unp_unn):
    '''
    добавление администратора партнерской страницы
    '''
    if is_login(request):
        try:
            partner = Partner.objects.get(
                unp_unn=int(unp_unn),
                active=True
            )
        except Partner.DoesNotExist:
            raise Http404
        user = User.objects.get(id=user_id(request))
        if user not in partner.user.all():
            raise Http404
        if request.method == 'POST':
            # Если поиск по логину
            if request.POST.get('login_search'):
                form_login_search = LoginSearch(request.POST)
                if form_login_search.is_valid():
                    cleaned_data = form_login_search.clean()
                    cache.set(
                        'search_one_user_{}'.format(user_id(request)),
                        cleaned_data.get('user'),
                        1
                    )
                    return HttpResponseRedirect(
                        '/partner/{}/admin/'.format(unp_unn)
                    )
                else:
                    form_data_search = DataSearch()
                    data = {
                        'login': True,
                        'name_server': request.META['SERVER_NAME'],
                        'partner': partner,
                        'user': user,
                        'account_class': 'active',
                        'form_data_search': form_data_search,
                        'form_login_search': form_login_search,
                    }
                    if user in partner.user.all():
                        data['partner_admin'] = True
                    else:
                        raise Http404
                    data.update(csrf(request))
                    return render(request, 'partner_admin.html', data)
            # конец поиска по логину
            elif request.POST.get('data_search'):
                users = False
                if request.POST.get('city_id'):
                    users = User.objects.filter(
                        city_id=request.POST.get('city_id'))
                elif request.POST.get('district_id'):
                    users = User.objects.filter(
                        district_id=request.POST.get('district_id'))
                elif request.POST.get('region_id'):
                    users = User.objects.filter(
                        region_id=request.POST.get('region_id'))
                elif request.POST.get('country_id'):
                    users = User.objects.filter(
                        country_id=request.POST.get('country_id'))
                if users:
                    if request.POST.get('name'):
                        tmp = users.filter(
                            name__icontains=request.POST.get('name')
                        )
                        if tmp:
                            users = tmp
                            del tmp
                    if request.POST.get('family'):
                        tmp = users.filter(
                            family__icontains=request.POST.get('family')
                        )
                        if tmp:
                            users = tmp
                            del tmp
                    if request.POST.get('email'):
                        tmp = users.filter(
                            email__icontains=request.POST.get('email')
                        )
                        if tmp:
                            users = tmp
                            del tmp
                    if request.POST.get('telephone'):
                        tmp = users.filter(
                            telephone__icontains=request.POST.get('telephone')
                        )
                        if tmp:
                            users = tmp
                            del tmp
                if users:
                    cache.set(
                        'search_users_{}'.format(user_id(request)),
                        users,
                        1
                    )
                else:
                    messages.info(request, 'По вашему запросу ничего не найдено')
                return HttpResponseRedirect(
                    '/partner/{}/admin/'.format(unp_unn)
                )
            elif request.POST.get('user_add'):
                fields = {}
                for field in request.POST:
                    fields[field] = request.POST.get(field)
                del fields['csrfmiddlewaretoken']
                del fields['user_add']
                if fields:
                    for user_login in fields:
                        user_add = User.objects.get(login=user_login)
                        partner.user.add(user_add)
                    partner.save()
                    messages.info(request, 'Выбранные пользователи добавлены')
                return HttpResponseRedirect(
                    '/partner/{}/admin/'.format(unp_unn)
                )
        else:
            form_login_search = LoginSearch()
            form_data_search = DataSearch()
            data = {
                'login': True,
                'name_server': request.META['SERVER_NAME'],
                'partner': partner,
                'user': user,
                'account_class': 'active',
                'form_data_search': form_data_search,
                'form_login_search': form_login_search,
                'found_user': cache.get('search_one_user_{}'.format(
                    user_id(request))),
                'found_users': cache.get('search_users_{}'.format(
                    user_id(request)))
            }
            if user in partner.user.all():
                data['partner_admin'] = True
            else:
                raise Http404
            data.update(csrf(request))
            return render(request, 'partner_admin.html', data)
    else:
        return HttpResponseRedirect('/user/login/')