예제 #1
0
    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)
예제 #2
0
 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)
예제 #3
0
    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))
예제 #4
0
    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
예제 #5
0
 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)
예제 #6
0
 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)
예제 #7
0
 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))
예제 #8
0
 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())
예제 #9
0
 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)
예제 #10
0
 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))
예제 #11
0
 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)
예제 #12
0
 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))
예제 #13
0
 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