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/')
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/')
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/')
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/')
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))
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/')
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/')
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)
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/')
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/')
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/')
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/')
def all(request): ''' вывод всех партнерских страниц пользователя ''' user = User.objects.get(id=user_id(request)) partners = user.users.filter(active=True) data = { 'login': True, 'user': user, 'account_class': 'active', 'partners': partners, } data.update(csrf(request)) return render(request, 'partner_all.html', data)
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/')
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/')
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)
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)
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/')
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/')
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)
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/')
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/')
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)
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/')