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 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): 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') 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 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) events = [] back_link = "" add_link = "" if category == PERIOD_CATEGORY: period = HistoryPeriod.get_by_id(mark_id) events = sorted_history_marks(HistoryEvent.get_by_period(period, consider_avail=False)) back_link = "/mt/materials/periods/list" add_link = "/mt/materials/events/add?parent_mark_id=%s&parent_category=0" % period.key.id() for event in events: event.change_url = "/mt/materials/events/change?event_id=%s&parent_mark_id=%s&parent_category=%s" % (event.key.id(), mark_id, category) event.extra = { 'Видео'.decode("utf-8"): "/mt/materials/videos/list?mark_id=%s&category=1" % event.key.id(), } event.dependencies_obj = get_dependencies(event) self.render('/materials/mark_list.html', marks=events, parent_mark_id=mark_id, parent_category=category, category=EVENT_CATEGORY, back_link=back_link, add_link=add_link)
def post(self): parent_mark_id = self.request.get_range('parent_mark_id') parent_category = self.request.get_range('parent_category') event_id = self.request.get_range('mark_id') event = HistoryEvent.get_by_id(event_id) get_mark_values(self.request, event) event.put() event.country.get().update() self.redirect('/mt/materials/events/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 [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') event_id = self.request.get_range('event_id') event = HistoryEvent.get_by_id(event_id) if not event: self.abort(400) event.start_str = get_html_date_from_str(event.start) event.end_str = get_html_date_from_str(event.end) back_link = '/mt/materials/events/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=event, default_category=DEFAULT_EVENTS_STRING.decode("utf-8"), 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) event = HistoryEvent() event.category = EVENT_CATEGORY event.period = mark.key get_mark_values(self.request, event) set_add_defaults(event, mark.country) event.put() event.country.get().update() self.redirect('/mt/materials/events/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