def get(self): mark_id = self.request.get_range('mark_id') category = self.request.get_range('category') if category == PERIOD_CATEGORY: back_link = "/mt/materials/periods/list" mark = HistoryPeriod.get_by_id(mark_id) elif category == EVENT_CATEGORY: back_link = '/mt/materials/events/list?mark_id=%s&category=%s' % (mark_id, category) mark = HistoryEvent.get_by_id(mark_id) elif category == PERSON_CATEGORY: back_link = '/mt/materials/persons/list?mark_id=%s&category=%s' % (mark_id, category) mark = HistoryPerson.get_by_id(mark_id) options = [] for mark in HistoryEvent.query().fetch(): options.append({ 'id': '%s_%s' % (mark.key.id(), EVENT_CATEGORY), 'name': mark.name }) for mark in HistoryPerson.query().fetch(): options.append({ 'id': '%s_%s' % (mark.key.id(), PERSON_CATEGORY), 'name': mark.name }) for mark in HistoryPeriod.query().fetch(): options.append({ 'id': '%s_%s' % (mark.key.id(), PERIOD_CATEGORY), 'name': mark.name }) self.render('/materials/dependency_add.html', mark=mark, category=category, options=options, back_link=back_link)
def post(self): dependency_key = self.request.get('dependency').split('_') dependency_mark_id, dependency_category = int(dependency_key[0]), int(dependency_key[1]) if dependency_category == PERIOD_CATEGORY: dependency = HistoryPeriod.get_by_id(dependency_mark_id) elif dependency_category == EVENT_CATEGORY: dependency = HistoryEvent.get_by_id(dependency_mark_id) elif dependency_category == PERSON_CATEGORY: dependency = HistoryPerson.get_by_id(dependency_mark_id) mark_id = self.request.get_range('mark_id') category = self.request.get_range('category') if category == PERIOD_CATEGORY: back_link = "/mt/materials/periods/list" mark = HistoryPeriod.get_by_id(mark_id) elif category == EVENT_CATEGORY: back_link = '/mt/materials/events/list?mark_id=%s&category=%s' % (mark_id, category) mark = HistoryEvent.get_by_id(mark_id) elif category == PERSON_CATEGORY: back_link = '/mt/materials/persons/list?mark_id=%s&category=%s' % (mark_id, category) mark = HistoryPerson.get_by_id(mark_id) found = False for dependency_key in mark.dependencies: if dependency_key.get() == dependency.name: found = True if not found: mark.dependencies.append(dependency.key) mark.put() self.redirect(back_link)
def post(self): parent_mark_id = self.request.get_range('parent_mark_id') parent_category = self.request.get_range('parent_category') test = Test() test.put() video = YoutubeVideo() if parent_category == PERSON_CATEGORY: person = HistoryPerson.get_by_id(parent_mark_id) video.person = person.key elif parent_category == EVENT_CATEGORY: event = HistoryEvent.get_by_id(parent_mark_id) video.event = event.key elif parent_category == PERIOD_CATEGORY: period = HistoryPeriod.get_by_id(parent_mark_id) video.period = period.key video.test = test.key video.youtube_id = self.request.get("youtube_id") video.title = self.request.get("title") video.shortcut = self.request.get("shortcut") video.sort_index = self.request.get_range("sort_index") video.put() save_video_info(video) self.redirect('/mt/materials/videos/list?mark_id=%s&category=%s' % (parent_mark_id, parent_category))
def get_mark_dict(mark): result = memcache.get(key=MEM_CACHE_MARK_INFO_KEY_MASK % (mark.category, mark.key.id())) if result is not None: return result events = sorted_history_marks(HistoryEvent.get_by_mark(mark)) persons = sorted_history_marks(HistoryPerson.get_by_mark(mark)) videos = sorted_history_marks(YoutubeVideo.get_by_mark(mark)) channels = filter(partial(is_not, None), (YoutubeChannel.get_by_channel_id(channel_id=channel_id) for channel_id in set([video.channel_id for video in videos]))) books = sorted_history_marks(Book.get_by_mark(mark)) result = { 'text': mark.text.get().dict(), 'events': [event.dict() for event in events], 'persons': [person.dict() for person in persons], 'videos': [video.dict() for video in videos], 'channels': [channel.dict() for channel in channels], 'books': [book.dict() for book in books], 'test': mark.test.get().dict(), 'dependencies': [{ 'id': str(dependency.id()), 'category': str(get_category(dependency)), } for dependency in mark.dependencies], } memcache.add(key=MEM_CACHE_MARK_INFO_KEY_MASK % (mark.category, mark.key.id()), value=result, time=MEM_CACHE_TIME) return result
def get(self): mark_id = self.request.get_range('mark_id') category = self.request.get_range('category') if category not in MARK_CATEGORIES: self.abort(400) persons = [] back_link = "" add_link = "" if category == PERIOD_CATEGORY: period = HistoryPeriod.get_by_id(mark_id) persons = sorted_history_marks(HistoryPerson.get_by_period(period, consider_avail=False)) back_link = "/mt/materials/periods/list" add_link = "/mt/materials/persons/add?parent_mark_id=%s&parent_category=0" % period.key.id() for person in persons: person.change_url = "/mt/materials/persons/change?person_id=%s&parent_mark_id=%s&parent_category=%s" % (person.key.id(), mark_id, category) person.extra = { 'Видео'.decode("utf-8"): "/mt/materials/videos/list?mark_id=%s&category=2" % person.key.id(), 'Титулы'.decode("utf-8"): '/mt/materials/persons/titles/list?parent_mark_id=%s&parent_category=%s&person_id=%s' % (mark_id, category, person.key.id()) } person.dependencies_obj = get_dependencies(person) self.render('/materials/mark_list.html', marks=persons, parent_mark_id=mark_id, parent_category=category, category=PERSON_CATEGORY, back_link=back_link, add_link=add_link)
def get(self): mark_id = self.request.get_range('mark_id') category = self.request.get_range('category') period = None if category == PERIOD_CATEGORY: self.abort(400) elif category == EVENT_CATEGORY: event = HistoryEvent.get_by_id(mark_id) if not event: self.abort(400) period = event.get_period() elif category == PERSON_CATEGORY: person = HistoryPerson.get_by_id(mark_id) if not person: self.abort(400) period = person.get_period() elif category == VIDEO_CATEGORY: video = YoutubeVideo.get_by_id(mark_id) if not video: self.abort(400) period = video.get_period() if period: self.render_json({ 'period_id': str(period.id()) }) else: self.abort(400)
def post(self): parent_mark_id = self.request.get_range('parent_mark_id') parent_category = self.request.get_range('parent_category') person_id = self.request.get_range('mark_id') person = HistoryPerson.get_by_id(person_id) get_mark_values(self.request, person) person.put() person.country.get().update() self.redirect('/mt/materials/persons/list?mark_id=%s&category=%s' % (parent_mark_id, parent_category))
def post(self): index = self.request.get_range('index') parent_mark_id = self.request.get_range('parent_mark_id') parent_category = self.request.get_range('parent_category') person_id = self.request.get_range('person_id') person = HistoryPerson.get_by_id(person_id) person.person_titles[index].name = self.request.get('name') person.person_titles[index].start = get_date_from_html(self.request.get('start')) person.person_titles[index].end = get_date_from_html(self.request.get('end')) person.put() self.redirect('/mt/materials/persons/titles/list?parent_mark_id=%s&parent_category=%s&person_id=%s' % (parent_mark_id, parent_category, person_id))
def get(self): parent_mark_id = self.request.get_range('parent_mark_id') parent_category = self.request.get_range('parent_category') person_id = self.request.get_range('person_id') person = HistoryPerson.get_by_id(person_id) if not person: self.abort(400) for index, title in enumerate(person.person_titles): title.change_url = '/mt/materials/persons/titles/change?parent_mark_id=%s&parent_category=%s&person_id=%s&index=%s' % (parent_mark_id, parent_category, person_id, index) self.render('/materials/title_list.html', titles=person.person_titles, back_link='/mt/materials/persons/list?mark_id=%s&category=%s' % (parent_mark_id, parent_category), add_link='/mt/materials/persons/titles/add?parent_mark_id=%s&parent_category=%s&person_id=%s' % (parent_mark_id, parent_category, person_id))
def post(self): parent_mark_id = self.request.get_range('parent_mark_id') parent_category = self.request.get_range('parent_category') person_id = self.request.get_range('person_id') person = HistoryPerson.get_by_id(person_id) if not person: self.abort(400) title = HistoryPersonTitle() title.name = self.request.get('name') title.start = get_date_from_html(self.request.get('start')) title.end = get_date_from_html(self.request.get('end')) person.person_titles.append(title) person.put() self.redirect('/mt/materials/persons/titles/list?parent_mark_id=%s&parent_category=%s&person_id=%s' % (parent_mark_id, parent_category, person_id))
def get(self): mark_id = self.request.get_range('mark_id') category = self.request.get_range('category') if category not in [EVENT_CATEGORY, PERSON_CATEGORY]: self.abort(400) elif category == EVENT_CATEGORY: event = HistoryEvent.get_by_id(mark_id) if not event: self.abort(400) self.render_json(event.dict()) elif category == PERSON_CATEGORY: person = HistoryPerson.get_by_id(mark_id) if not person: self.abort(400) self.render_json(person.dict())
def get(self): parent_mark_id = self.request.get_range('parent_mark_id') parent_category = self.request.get_range('parent_category') person_id = self.request.get_range('person_id') person = HistoryPerson.get_by_id(person_id) if not person: self.abort(400) person.start_str = get_html_date_from_str(person.start) person.end_str = get_html_date_from_str(person.end) back_link = '/mt/materials/persons/list?mark_id=%s&category=%s' % (parent_mark_id, parent_category) self.render('/materials/mark_add.html', parent_mark_id=parent_mark_id, parent_category=parent_category, mark=person, default_category=DEFAULT_EVENTS_STRING.decode("utf-8"), back_link=back_link)
def get(self): index = self.request.get_range('index') parent_mark_id = self.request.get_range('parent_mark_id') parent_category = self.request.get_range('parent_category') person_id = self.request.get_range('person_id') person = HistoryPerson.get_by_id(person_id) if not person: self.abort(400) if not index < len(person.person_titles): self.abort(400) person.person_titles[index].start_str = get_html_date_from_str(person.start) person.person_titles[index].end_str = get_html_date_from_str(person.end) back_link = '/mt/materials/persons/titles/list?parent_mark_id=%s&parent_category=%s&person_id=%s' % (parent_mark_id, parent_category, person_id) self.render('/materials/title_add.html', title=person.person_titles[index], index=index, person_id=person.key.id(), parent_mark_id=parent_mark_id, parent_category=parent_category, back_link=back_link)
def post(self): parent_mark_id = self.request.get_range('parent_mark_id') parent_category = self.request.get_range('parent_category') if parent_category == PERIOD_CATEGORY: mark = HistoryPeriod.get_by_id(parent_mark_id) person = HistoryPerson() person.category = PERSON_CATEGORY person.period = mark.key get_mark_values(self.request, person) set_add_defaults(person, mark.country) person.put() person.country.get().update() self.redirect('/mt/materials/persons/list?mark_id=%s&category=%s' % (parent_mark_id, parent_category))
def get(self): mark_id = self.request.get_range('mark_id') category = self.request.get_range('category') if category not in MARK_CATEGORIES: self.abort(400) videos = [] back_link = "" add_link = "/mt/materials/videos/add?parent_mark_id=%s&parent_category=%s" % ( mark_id, category) if category == PERSON_CATEGORY: person = HistoryPerson.get_by_id(mark_id) videos = sorted_history_marks(YoutubeVideo.get_by_mark(person)) # back_link = "/mt/materials/periods/list" elif category == EVENT_CATEGORY: event = HistoryEvent.get_by_id(mark_id) videos = sorted_history_marks(YoutubeVideo.get_by_mark(event)) self.render('/materials/video_list.html', videos=videos, back_link=back_link, add_link=add_link)
def get(self): mark_id = self.request.get_range('mark_id') category = self.request.get_range('category') if category not in MARK_CATEGORIES: self.abort(400) if category == PERIOD_CATEGORY: period = HistoryPeriod.get_by_id(mark_id) if not period: self.abort(400) self.render_json(self.get_mark_dict(period)) elif category == EVENT_CATEGORY: event = HistoryEvent.get_by_id(mark_id) if not event: self.abort(400) self.render_json(self.get_mark_dict(event)) elif category == PERSON_CATEGORY: person = HistoryPerson.get_by_id(mark_id) if not person: self.abort(400) self.render_json(self.get_mark_dict(person))
def get_new_marks_info(): info = memcache.get(key=MEM_CACHE_NEW_MARKS_KEY_MASK % country_id) if not info: events = HistoryEvent.get_new_marks(country, amount, timestamp) persons = HistoryPerson.get_new_marks(country, amount, timestamp) while (len(events) + len(persons)) > amount: if len(events) == 0: persons.remove(persons[len(persons) - 1]) break if len(persons) == 0: events.remove(events[len(events) - 1]) break if events[len(events) - 1].created < persons[len(persons) - 1].created: events.remove(events[len(events) - 1]) else: persons.remove(persons[len(persons) - 1]) info = { 'events': [event.dict() for event in events], 'persons': [person.dict() for person in persons], } memcache.add(key=MEM_CACHE_NEW_MARKS_KEY_MASK % country_id, value=info, time=MEM_CACHE_TIME) return info
def get(self): for mark in HistoryPerson.query().fetch(): deferred.defer(search_mistake, mark.name, mark.text.get())