def imdb_person_data(request, pid, id): try: from release_parser.imdb import imdb_person_data from news.views import cut_description if request.user.is_superuser: # киноинфо person = Person.objects.get(pk=pid) person.iid = id person.save() # киноафиша afisha_person = AfishaPersons.objects.using('afisha').get(pk=person.kid) afisha_person.imdb = id afisha_person.save() result = imdb_person_data(id) country_exist = person.country_id if person.country else 0 try: country = Country.objects.get(name_en=result['country']) result['country'] = country.id except Country.DoesNotExist: result['country'] = country_exist sex = [ {'id': 0, 'name': 'Нет'}, {'id': 1, 'name': 'М'}, {'id': 2, 'name': 'Ж'}, ] result['url'] = 'http://www.imdb.com/name/nm%s/bio' % id result['birth'] = str(result['birth']) result['countries'] = list(Country.objects.all().values('id', 'name').order_by('name')) result['person_sex'] = person.male result['sex'] = sex result['short_bio'] = cut_description(result['bio'], True, 400) result['status'] = True result['pid'] = pid result['imdb_id'] = id return simplejson.dumps(result) return simplejson.dumps({}) except Exception as e: open('errors.txt','a').write('%s * (%s)' % (dir(e), e.args))
def torrents_listing(request, source): from slideblok.views import releasedata from news.views import cut_description from movie_online.IR import check_int_rates_inlist from release_parser.func import get_file_modify_datetime source = ImportSources.objects.get(pk=source) today = datetime.datetime.now().date() yesterday = today - datetime.timedelta(days=1) file_add = 'xml' if source.url == 'http://rutracker.org/' else 'html' file_path = '%s__%s__films.xml' % (file_add, source.dump) parser_time = get_file_modify_datetime(settings.SUCCESS_LOG_PATH, file_path) parser_time = parser_time + datetime.timedelta(hours=3) release, new, rate = (None, None, None) release_filter = { 0: {'id': 0, 'name': u'ВСЕ'}, 1: {'id': 1, 'name': u'Кинопрокат'}, 2: {'id': 2, 'name': u'Прочие'}, } new_filter = { 0: {'id': 0, 'name': u'ВСЕ'}, 1: {'id': 1, 'name': u'Новые'}, } rate_filter = [u'ВСЕ',] if request.POST: if 'checker' in request.POST: checker = request.POST.getlist('checker') if checker: SourceFilms.objects.filter(source_obj=source, pk__in=checker).update(rel_ignore=True) return HttpResponseRedirect(reverse('torrents_listing', kwargs={'source': source.pk})) else: release = request.POST.get('release') new = request.POST.get('new') rate = request.POST.get('rate') kids = list(SourceFilms.objects.filter(source_obj=source, rel_ignore=False).values_list('kid', flat=True)) rates = check_int_rates_inlist(kids) rates_tmp = set([i['int_rate'] for i in rates.values() if i['int_rate']]) for i in rates_tmp: rate_filter.append(i) if rate: try: rate = int(rate) except ValueError: rate = u'ВСЕ' if release: release = int(release) if new: new = int(new) sess_filter = request.session.get('torrents_listing_filter',{}) if rate == None and release == None and new == None: sess_filter = request.session.get('torrents_listing_filter',{}) if sess_filter: rate = sess_filter['rate'] release = sess_filter['release'] new = sess_filter['new'] else: new = 1 if not new: source_films = SourceFilms.objects.filter(source_obj=source, rel_ignore=False) elif new == 1: source_films = SourceFilms.objects.filter(source_obj=source, extra='new', rel_ignore=False) tmp_date = datetime.datetime(3000,1,1) films = {} for i in source_films: new = True if i.extra == 'new' else False films[i.kid] = {'source_id': i.source_id, 'new': new, 'pk': i.id, 'release': tmp_date, 'kid': i.kid} for i in list(Film.objects.using('afisha').filter(pk__in=films.keys(), date__gte=datetime.datetime(1900,1,1)).values('id', 'date')): films[i['id']]['release'] = i['date'] films_sorted = sorted(films.values(), key=operator.itemgetter('release'), reverse=True) page = request.GET.get('page') try: page = int(page) except (ValueError, TypeError): page = 1 p, page = pagi(page, films_sorted, 100) films_ids = {} for i in p.object_list: films_ids[i['kid']] = {} torrents = {} for i in Torrents.objects.filter(film__in=films_ids.keys()).exclude(path=None): if not torrents.get(i.film): torrents[i.film] = {'0': None, '1': None, '2': None} q = i.quality_avg if i.quality_avg else '1' torrents[i.film][q] = i data_tmp = releasedata(films_ids, {}, persons=False, likes=False, trailers=False, reviews=False, poster_size='small') upd = [] data = [] for i in data_tmp: torrent = torrents.get(i['id']) f = films.get(i['id']) txt_cut = cut_description(i['descript'], True, 150) i['descript_cut'] = txt_cut i['descript'] = '' i['new'] = f['new'] i['source_id'] = f['pk'] i['torrent'] = torrent if not i['release_date']: i['release_date'] = datetime.datetime(3000,1,1) if source.url == 'http://cinemate.cc/': i['source_url'] = u'http://cinemate.cc/movie/%s/' % f['source_id'] elif source.url == 'http://rutracker.org/': i['source_url'] = u'http://rutracker.org/forum/viewtopic.php?t=%s' % f['source_id'] if f['new']: upd.append(f['pk']) next = True if release == 1 and i['release_date'].year == 3000: next = False elif release == 2 and i['release_date'].year < 3000: next = False if next: if rate: if rate == u'ВСЕ' or rate == int(i['rate']): data.append(i) else: data.append(i) films = sorted(data, key=operator.itemgetter('release_date'), reverse=True) SourceFilms.objects.filter(pk__in=upd).update(extra=None) request.session['torrents_listing_filter'] = {'rate': rate, 'new': new, 'release': release} return render_to_response('kinoafisha/torrents_listing.html', {'data': films, 'source': source, 'p': p, 'page': page, 'release_filter': release_filter.values(), 'release': release, 'new_filter': new_filter.values(), 'new': new, 'rate_filter': rate_filter, 'rate': rate, 'parser_time': parser_time, 'today': today, 'yesterday': yesterday}, context_instance=RequestContext(request))
def get_mailru_test(request): from api.views import film_poster2 from news.views import cut_description source = ImportSources.objects.get(url='https://afisha.mail.ru/') html = u''' <link rel="stylesheet" href="http://kinoinfo.ru/static/base/css/style.css" type="text/css" media="screen" /> <table class="modern_tbl"> <tr> <th>Релиз</th> <th></th> <th>Фильм</th> <th>Аннотация</th> <th>Постер</th> <th>Источник</th> </tr>''' kids = list( SourceReleases.objects.filter(source_obj=source).values_list( 'film__kid', flat=True)) descriptions = {} for i in list( Film.objects.using('afisha').filter(pk__in=kids).values( 'pk', 'description')): if i['description']: d = cut_description(i['description'], True, 200) descriptions[i['pk']] = d poster_obj = Objxres.objects.using('afisha').select_related( 'extresid').filter(objtypeid=301, objpkvalue__in=kids) posters = {} for p in poster_obj: if posters.get(p.objpkvalue): posters[p.objpkvalue].append(p) else: posters[p.objpkvalue] = [p] for i in list( SourceReleases.objects.filter(source_obj=source).values( 'release', 'film__source_id', 'film__extra', 'film__text', 'film__kid', 'film__name').order_by('release')): poster = posters.get(i['film__kid'], []) poster_path = film_poster2(poster, 'small') mailru_pic = '' if i['film__extra']: mailru_pic = u'<a href="%s" target="_blank"><img src="%s" width="100" /></a>' % ( i['film__extra'], i['film__extra']) mailru_link = u'<a href="%scinema/movies/%s/" target="_blank">перейти</a>' % ( source.url, i['film__source_id']) kinoinfo_link = u'<a href="http://kinoinfo.ru/film/%s/" target="_blank">%s</a>' % ( i['film__kid'], i['film__name']) kinoinfo_pic = u'<div style="width: 100px; height: 150px; background: #CCC;"></div>' if poster_path: kinoinfo_pic = u'<img src="%s" width="100" />' % poster_path kinoinfo_pic = u'<a href="http://posters.kinoafisha.ru/loadtrailers18/detalfilms.php?id=%s&ix=5507931&act=posters&profile=%s" target="_blank">%s</a>' % ( i['film__kid'], request.user.id, kinoinfo_pic) desc = descriptions.get(i['film__kid'], '') if desc: desc = u'<div style="background: #e5ffe5;">%s</div>' % desc txt = i['film__text'] if i['film__text'] else '' html += u'''<tr> <td>%s</td> <td>%s</td> <td>%s</td> <td>%s%s</td> <td>%s</td> <td>%s</td> </tr>''' % (i['release'], kinoinfo_pic, kinoinfo_link, desc, txt, mailru_pic, mailru_link) html += u'</table>' return HttpResponse(str(html.encode('utf-8')))
def answers_admin(request): lang = get_language() all_answers_ids = {} for i in list( News.objects.filter( reader_type='23', translation_for=None).order_by('-dtime').values( 'pk', 'qanswers')): all_answers_ids[i['pk']] = i['qanswers'] page = request.GET.get('page') try: page = int(page) except (ValueError, TypeError): page = 1 p, page = pagi(page, all_answers_ids.keys(), 8) answers_ids = {} for i in list( News.objects.filter(pk__in=p.object_list, reader_type='23').order_by('-dtime').values( 'pk', 'parent')): answers_ids[i['pk']] = i['parent'] q_ids = {} for i in list( News.objects.filter( pk__in=answers_ids.values(), reader_type='22', translation_for=None).distinct('pk').order_by('-dtime').values( 'questionanswer', 'pk')): if i['questionanswer']: q_ids[i['pk']] = i['questionanswer'] answers = News.objects.select_related( 'autor', 'language').filter(pk__in=answers_ids.keys()).order_by('-dtime') langs = [l[0] for l in settings.LANGUAGES] profiles = [] ids = [] translation = {} for i in answers: profiles.append(i.autor) ids.append(i.id) default_langs = {} for lg in langs: default_langs[lg] = False translation[i.id] = default_langs translation[i.id][i.language.code] = True for i in list( News.objects.filter(translation_for__in=ids, reader_type='23').values( 'translation_for', 'language__code')): translation[i['translation_for']][i['language__code']] = True peoples = org_peoples(set(profiles), dic=True) data = [] for i in answers: author = peoples.get(i.autor.user_id) text = cut_description(i.text, True, 60) qid = q_ids.get(i.parent_id) aid = all_answers_ids.get(i.id) translation_languages = translation.get(i.id, []) data.append({ 'id': aid, 'qid': qid, 'dtime': i.dtime, 'text': text, 'author': author, 'lang': i.language.code, 'translation': translation_languages, 'parent': i.parent_id }) vid = 99 if request.domain == '0.0.1:8000' else 95 return render_to_response('imiagroup/question_answer.html', { 'vid': vid, 'data': data, 'p': p, 'page': page, 'lang': lang, 'qtype': 'admin', 'qa_list_type': 'answers' }, context_instance=RequestContext(request))
def question_answer(request, tag=None, qtype=None): lang = get_language() do_query = True filter = {'reader_type': '22', 'language__code': lang} if tag: tag = tag.encode('utf-8') filter['tags__name'] = tag del filter['language__code'] elif qtype: if qtype in ('with', 'without'): if qtype == 'with': #query_result = list(News.objects.filter(Q(parent_rel__language__code=lang) | Q( translation_for__parent_rel__language__code=lang), language__code=lang, reader_type='22').distinct('pk').values('questionanswer', 'pk')) query_result_1 = list( News.objects.filter( parent_rel__language__code=lang, language__code=lang, reader_type='22').distinct('pk').values( 'questionanswer', 'pk')) query_result_2 = list( News.objects.filter( translation_for__parent_rel__language__code=lang, language__code=lang, reader_type='22').distinct('pk').values( 'questionanswer', 'pk')) query_result = query_result_1 + query_result_2 do_query = False elif qtype == 'without': query_result_tmp = list( News.objects.filter( language__code=lang, reader_type='22').exclude( translation_for__parent_rel__language__code=lang). distinct('pk').values_list('pk', flat=True)) query_result = list( News.objects.filter(pk__in=query_result_tmp).exclude( parent_rel__language__code=lang).distinct('pk').values( 'questionanswer', 'pk')) do_query = False else: raise Http404 if do_query: query_result = list( News.objects.filter(**filter).distinct('pk').values( 'questionanswer', 'pk')) q_ids = {} for i in query_result: if i['questionanswer']: q_ids[i['pk']] = i['questionanswer'] questions = News.objects.select_related( 'autor', 'language').filter(pk__in=q_ids.keys()).order_by('-dtime') page = request.GET.get('page') try: page = int(page) except (ValueError, TypeError): page = 1 p, page = pagi(page, questions, 8) profiles = [] ids = [] questionanswers = [] for i in p.object_list: profiles.append(i.autor) ids.append(i.id) qas = q_ids.get(i.id) if qas: questionanswers.append(qas) answers = {} for i in list( News.objects.filter(parent__questionanswer__id__in=questionanswers, reader_type='23', language__code=lang).values( 'pk', 'parent__questionanswer')): if not answers.get(i['parent__questionanswer']): answers[i['parent__questionanswer']] = 0 answers[i['parent__questionanswer']] += 1 peoples = org_peoples(set(profiles), dic=True) tags_list = set( list( NewsTags.objects.filter(news__reader_type='22').values_list( 'name', flat=True))) tags_all = {} for i in list( NewsTags.objects.filter(news__pk__in=ids).values( 'name', 'news__pk')): if not tags_all.get(i['news__pk']): tags_all[i['news__pk']] = [] tags_all[i['news__pk']].append(i['name']) data = [] for i in p.object_list: author = peoples.get(i.autor.user_id) tags = tags_all.get(i.id) text = cut_description(i.text, True, 60) qid = q_ids.get(i.id) answers_count = answers.get(qid, 0) data.append({ 'id': qid, 'dtime': i.dtime, 'subject': i.title, 'text': text, 'author': author, 'tags': tags, 'lang': i.language.code, 'answers': answers_count, 'views': i.views, }) vid = 99 if request.domain == '0.0.1:8000' else 95 return render_to_response('imiagroup/question_answer.html', { 'vid': vid, 'data': data, 'p': p, 'page': page, 'tags_list': tags_list, 'lang': lang, 'qtype': qtype, 'qa_list_type': 'questions' }, context_instance=RequestContext(request))
def question_answer_admin(request): lang = get_language() q_ids = {} for i in list( News.objects.filter( reader_type='22', translation_for=None).distinct('pk').order_by('-dtime').values( 'questionanswer', 'pk')): if i['questionanswer']: q_ids[i['pk']] = i['questionanswer'] questions = News.objects.select_related( 'autor', 'language').filter(pk__in=q_ids.keys()).order_by('-dtime') page = request.GET.get('page') try: page = int(page) except (ValueError, TypeError): page = 1 p, page = pagi(page, questions, 8) langs = [l[0] for l in settings.LANGUAGES] profiles = [] ids = [] translation = {} for i in p.object_list: profiles.append(i.autor) ids.append(i.id) default_langs = {} for lg in langs: default_langs[lg] = False translation[i.id] = default_langs translation[i.id][i.language.code] = True for i in list( News.objects.filter(translation_for__in=ids).values( 'translation_for', 'language__code')): translation[i['translation_for']][i['language__code']] = True peoples = org_peoples(set(profiles), True) tags_list = set( list( NewsTags.objects.filter(news__reader_type='22').values_list( 'name', flat=True))) tags_all = {} for i in list( NewsTags.objects.filter(news__pk__in=ids).values( 'name', 'news__pk')): if not tags_all.get(i['news__pk']): tags_all[i['news__pk']] = [] tags_all[i['news__pk']].append(i['name']) data = [] for i in p.object_list: author = peoples.get(i.autor.user_id) tags = tags_all.get(i.id) text = cut_description(i.text, True, 60) qid = q_ids.get(i.id) translation_languages = translation.get(i.id, []) data.append({ 'id': qid, 'dtime': i.dtime, 'subject': i.title, 'text': text, 'author': author, 'tags': tags, 'lang': i.language.code, 'translation': translation_languages, }) vid = 99 if request.domain == '0.0.1:8000' else 95 return render_to_response('imiagroup/question_answer.html', { 'vid': vid, 'data': data, 'p': p, 'page': page, 'tags_list': tags_list, 'lang': lang, 'qtype': 'admin', 'qa_list_type': 'questions' }, context_instance=RequestContext(request))
def forum_send_msg(request, topic, parent, name, email, subject, text, anonim, mtype, preview=False, edit=['0', '0']): try: from news.views import cut_description mtypes = { u'1': 1, # Новая тема u'2': 2, # Новое сообщение u'3': 3, # Ответ на сообщение } name_error = '' text_error = '' name = name.strip()[:25] email = email.strip()[:50] text = text.strip() subject = subject.strip()[:128] if not name: name_error = u'Слишком короткое имя (не менее 1 символа)' if not text and not subject: text_error = u'Слишком короткая тема или сообщение' subj_end = '' if subject: subject, subj_end = cut_description(subject, False, 47, True) else: subject = text[:128] subject = cut_description(subject, False, 47) if subj_end: text = '%s %s' % (subj_end, text) mtype = mtypes.get(mtype) subject = html_entities_to_tags(subject) text = html_entities_to_tags(text) text = BeautifulSoup(text, from_encoding="utf-8").text subject = BeautifulSoup(subject, from_encoding="utf-8").text name = BeautifulSoup(name, from_encoding="utf-8").text email = BeautifulSoup(email, from_encoding="utf-8").text if mtype: if not name_error and not text_error: tmp_txt = text[:len(subject)] if tmp_txt == subject: text = text[len(subject):] text = text.replace('\n', '<br />') if edit[0] == '0': check_user = True if anonim or not request.profile.kid else False error = False if check_user: try: RegisteredUsers.objects.using('afisha').get( nickname=name) error = True except RegisteredUsers.DoesNotExist: error = False except RegisteredUsers.MultipleObjectsReturned: error = True if not error: try: user = User.objects.get( first_name=name, profile__auth_status=True) error = True except User.DoesNotExist: error = False else: error = False if error: name_error = u'В базе есть такой пользователь, <a class="kinoafisha_button">авторизуйтесь</a> или укажите другое имя!' return simplejson.dumps({ 'status': True, 'nerr': name_error, 'terr': '' }) else: # если новое сообщение if edit[0] == '0': if request.profile.kid: # зарегистрированный юзер kid = request.profile.kid if not anonim: name = '' else: # новый/неавторизованный юзер с уникальным никнэймом anonim = False null_date = datetime.date(1900, 1, 1) reg_obj = RegisteredUsers.objects.using( 'afisha').create( nickname='Bk276lPLIO83hjsdfJsdjj23', date_of_birth=null_date, ) kid = reg_obj.id reg_obj.nickname = name reg_obj.save() name = '' request.profile.kid = kid request.profile.save() # редактирование else: try: t = WFOpinion.objects.using( 'afisha').select_related('user').get( pk=edit[1]) except WFOpinion.DoesNotExist: return simplejson.dumps({'status': False}) else: if t.user_id == request.profile.kid: kid = request.profile.kid name = t.nick if t.nick else t.user.nickname if preview: html = '' for key, val in FORUM_SMILES.iteritems(): text = text.replace( key, '<img src="%sbase/images/forums/smiles/sk_%s.gif"/>' % (settings.STATIC_URL, val['id'])) subject = subject.replace( key, '<img src="%sbase/images/forums/smiles/sk_%s.gif"/>' % (settings.STATIC_URL, val['id'])) date_now = datetime.datetime.now() date_msg = tmp_date(date_now, "d E Y") if name: nick = name else: nick = '' if kid: try: nick = RegisteredUsers.objects.using( 'afisha').get(pk=kid).nickname except RegisteredUsers.DoesNotExist: pass html += u''' <div> <div class="fmsg_h"><b>%s</b><p style="color: #FF5C33;">ПРЕДПРОСМОТР СООБЩЕНИЯ</p></div> <div class="fmsg_b"><b>%s</b> <span>%s</span></div> <div class="fmsg_f"></div> </div> ''' % (nick, subject, text) return simplejson.dumps({ 'status': True, 'content': html }) else: if edit[0] == '0': newmsg = create_forum_msg(parent, topic, mtype, kid, anonim, subject, text, name, email) vcount = 0 if mtype == 1 else 1 WFStat.objects.using('afisha').create( opinion=newmsg.id, count=vcount) WFUser.objects.using('afisha').create( user=kid, opinion=newmsg.id) request.session['wf_new_msg'] = newmsg.id elif edit[0] == '1' and t.user_id == kid: t.subject = subject t.text = text t.save() newmsg = t ref = request.META.get('HTTP_REFERER', '').split('?')[0] mobile = 'm/' if '/m/' in ref else '' redirect_to = '/women/%s' % mobile next = '' if topic: redirect_to = '/women/%stopic/%s/' % (mobile, topic) next = topic if mtype == 1 and newmsg: redirect_to = '/women/%stopic/%s/' % (mobile, newmsg.id) next = newmsg.id new_id = '' if mtype in (2, 3) and newmsg: new_id = newmsg.id return simplejson.dumps({ 'status': True, 'redirect_to': redirect_to, 'mid': new_id, 'next': next }) else: return simplejson.dumps({ 'status': True, 'nerr': name_error, 'terr': text_error }) except Exception as e: open('errors.txt', 'a').write('%s * (%s)' % (dir(e), e.args))
def printTree(L, new, readed_msg, data, margin=0): for i in L: if isinstance(i, list): data = printTree(i, new, readed_msg, data, margin) else: if int(i.parent) == new: margin = 0 else: idnt = tmp_dict.get(i.parent) if not is_mobile: if not idnt: margin = 15 else: margin = idnt + 15 tmp_dict[i.id] = margin idn = '<div class="nxt" style="margin-left: %spx;"></div>' % margin msg_date = i.date.date() time_nav = '' time_txt = '' if msg_date == now: time_nav = u'mt1' time_txt = u'Добавлено сегодня' elif msg_date == (now - datetime.timedelta(days=1)): time_nav = u'mt2' time_txt = u'Добавлено вчера' elif msg_date == (now - datetime.timedelta(days=2)): time_nav = u'mt3' time_txt = u'Добавлено позавчера' elif msg_date < ( now - datetime.timedelta(days=2)) and msg_date >= ( now - datetime.timedelta(days=6)): time_nav = u'mt4' time_txt = u'Добавлено в течении недели' elif msg_date < (now - datetime.timedelta(days=6)): time_nav = u'mt5' time_txt = u'Добавлено давно' if i.id != int(val) and i.id not in readed_msg: time_nav = u'mt6' data['2'] = True if time_txt: time_nav = u'<div id="%s" title="%s"></div>' % ( time_nav, time_txt) try: nick = i.nick if i.nick else i.user.nickname except AttributeError: nick = '' kinoinfo_user_id = None if i.user: kinoinfo_user_id = profiles.get(i.user.id) subject = cut_description( i.subject, True, 48) if len(i.subject) > 58 else i.subject short_txt = cut_description(i.text, False, 80) minus_txt = '' if short_txt: if not is_mobile: if len(short_txt) >= 80: short_txt = ' title="%s..."' % short_txt else: short_txt = ' title="%s"' % short_txt else: short_txt = '' minus_txt = ' (-)' subject = '%s%s' % (subject, minus_txt) data['1'] += u'<tr href="#%s" class="branch"><td>' % i.id if request.user.is_superuser and not is_mobile: if i.deleted: data[ '1'] += u'<div class="wf_reuse wfr item_ho" id="wfr_%s" title="Восстановить"></div>' % i.id else: data[ '1'] += u'<div class="wf_del wfd item_ho" id="wfd_%s" title="Удалить"></div>' % i.id if kinoinfo_user_id and request.user.is_superuser: nick_html = u'<a href="http://ya.vsetiinter.net/user/profile/%s/" target="_blank">%s</a>' % ( kinoinfo_user_id, nick) else: nick_html = nick data['1'] += u''' <div class="tlink item_ho"%s>%s%s%s</div> </td> <td><div>%s<span>%s</span></div></td> <td><div>%s</div></td> </tr> ''' % (short_txt, idn, time_nav, subject, i.date.strftime('%d.%m'), i.date.strftime('%H:%M'), nick_html) return data