コード例 #1
0
class VideoEnForm(forms.Form):
    title = forms.CharField(required=True, error_messages=ERROR_MESSAGES)
    text = forms.CharField(required=True, error_messages=ERROR_MESSAGES)
    youtube_id = forms.CharField(required=True, error_messages=ERROR_MESSAGES)
    published_at = forms.DateTimeField(required=True,
                                       error_messages=ERROR_MESSAGES)
    introductions = forms.MultipleChoiceField(
        required=False,
        widget=forms.CheckboxSelectMultiple,
        choices=lambda: [(v.id, v.id) for v in IntroductionEn.get_all()],
        error_messages=ERROR_MESSAGES)
    topics = forms.MultipleChoiceField(
        required=False,
        widget=forms.CheckboxSelectMultiple,
        choices=lambda: [(v.id, v.id) for v in TopicEn.get_all()],
        error_messages=ERROR_MESSAGES)
    categories = forms.MultipleChoiceField(
        required=False,
        widget=forms.CheckboxSelectMultiple,
        choices=lambda: [(v.id, v.id) for v in Category.get_all()],
        error_messages=ERROR_MESSAGES)
    videos = forms.MultipleChoiceField(
        required=False,
        widget=forms.CheckboxSelectMultiple,
        choices=lambda: [(v.id, v.id) for v in VideoEn.get_all()],
        error_messages=ERROR_MESSAGES)
コード例 #2
0
    def get(_, lang, event_id):
        if lang == 'ja':
            cached_event = Cache.get('api_event_' + str(event_id))
            if cached_event is None:
                event = Topic.get_event_published_by_id(event_id)
                if event is None:
                    return JsonResponse({
                        'message': 'Not Found'
                    }, status=404)

                res = EventSerializer(event).data
                Cache.set('api_event_' + str(event_id), res)
            else:
                res = cached_event

        elif lang == 'en':
            cached_event_en = Cache.get('api_event_en_' + str(event_id))
            if cached_event_en is None:
                event = TopicEn.get_event_published_by_id(event_id)
                if event is None:
                    return JsonResponse({
                        'message': 'Not Found'
                    }, status=404)
                res = EventEnSerializer(event).data
                Cache.set('api_event_en_' + str(event_id), res)
            else:
                res = cached_event_en

        else:
            return JsonResponse({
                'message': 'Not Found'
            }, status=404)

        return JsonResponse(res, safe=False)
コード例 #3
0
    def get(request, lang, topic_id):

        if lang == 'ja':
            topic_model = Topic()
        else:
            topic_model = TopicEn()

        topic = topic_model.get_by_id(topic_id)
        if topic is None:
            raise Http404

        title = topic.title
        if lang == 'ja':
            use_videos = topic.video_set.all().order_by('video_topic.id')
            use_images = topic.images.all().order_by('topic_images.id')
        else:
            use_videos = topic.videoen_set.all().order_by('video_en_topic.id')
            use_images = topic.images.all().order_by('topic_en_images.id')

        return TemplateResponse(request, 'topic.html', {
            'title': title + ' | トピックス | FEED App 管理',
            'topic': topic,
            'use_videos': use_videos,
            'use_images': use_images,
            'error_messages': {},
            'form_data': {},
            'lang': lang,
            'post_types': [
                {'name': 'トピック', 'val': 'topic'},
                {'name': 'イベント', 'val': 'event'},
            ]
        })
コード例 #4
0
    def get(_, lang):
        if lang == 'ja':
            cached_topics = Cache.get('api_topics')
            if cached_topics is None:
                res = TopicsSerializer(
                    Topic.get_topic_published_all(), many=True).data
                Cache.set('api_topics', res)
            else:
                res = cached_topics

        elif lang == 'en':
            cached_topics_en = Cache.get('api_topics_en')
            if cached_topics_en is None:
                res = TopicsEnSerializer(
                    TopicEn.get_topic_published_all(), many=True).data
                Cache.set('api_topics_en', res)
            else:
                res = cached_topics_en

        else:
            return JsonResponse({
                'message': 'Not Found'
            }, status=404)

        return JsonResponse(res, safe=False)
コード例 #5
0
    def post(request, lang, topic_id):
        if lang == 'ja':
            topic_model = Topic()
        else:
            topic_model = TopicEn()

        topic = topic_model.get_by_id(topic_id)
        if topic is None:
            return JsonResponse({
                'status': 503, 'message': '投稿が存在しません'}, status=503)

        form = NewForm(request.POST)
        if form.errors:
            messages.add_message(request, messages.INFO,
                                 dict(form.errors.items()))
        if form.is_valid():
            try:
                topic_model.new_change(
                    form.cleaned_data.get('new'), topic_id)
            except:
                return JsonResponse({
                    'status': 500, 'message': 'Not Change'}, status=500)

        else:
            return JsonResponse({
                'status': 500, 'message': get_error_message(request)},
                status=500)

        return JsonResponse({
            'status': 200, 'message': 'Changed'},
            status=200)
コード例 #6
0
    def get(_, lang, topic_id):
        if lang == 'ja':
            cached_topic = Cache.get('api_topic_' + str(topic_id))
            if cached_topic is None:
                topic = Topic.get_topic_published_by_id(topic_id)
                if topic is None:
                    return JsonResponse({
                        'message': 'Not Found'
                    }, status=404)

                res = TopicSerializer(topic).data
                Cache.set('api_topic_' + str(topic_id), res)
            else:
                res = cached_topic

        elif lang == 'en':
            cached_topic_en = Cache.get('api_topic_en_' + str(topic_id))
            if cached_topic_en is None:
                topic = TopicEn.get_topic_published_by_id(topic_id)
                if topic is None:
                    return JsonResponse({
                        'message': 'Not Found'
                    }, status=404)
                res = TopicEnSerializer(topic).data
                Cache.set('api_topic_en_' + str(topic_id), res)
            else:
                res = cached_topic_en

        else:
            return JsonResponse({
                'message': 'Not Found'
            }, status=404)

        return JsonResponse(res, safe=False)
コード例 #7
0
    def get(request, lang, paged=1):

        search = request.GET.get('search', '')

        if lang == 'ja':
            topic_model = Topic()
        else:
            topic_model = TopicEn()

        if search != '':
            total = topic_model.get_topic_search_all(search).count()
        else:
            total = topic_model.get_all().count()

        pagination = Pagination(
            page=paged, per_page=10, total=total, query=search,
            slug='/{}/admin/topics/page/'.format(lang))

        if search != '':
            topics = topic_model.get_topic_search_all(search)[
                pagination.offset:pagination.offset + pagination.per_page]
        else:
            topics = topic_model.get_all()[
                pagination.offset:pagination.offset + pagination.per_page]

        return TemplateResponse(request, 'topics.html', {
            'title': 'トピックス | FEED App 管理',
            'topics': topics,
            'information': pagination.information(),
            'pagination': pagination,
            'lang': lang,
            'search': search,
        })
コード例 #8
0
    def get(_, lang, image_id):

        delete_flag = True

        image_model = Image()
        category_model = Category()

        if lang == 'ja':
            topic_model = Topic()
            introduction_model = Introduction()
        else:
            topic_model = TopicEn()
            introduction_model = IntroductionEn()

        try:
            image = image_model.get_by_image_id(image_id)

            topic_use_flag, topic_use_posts = topic_model.is_use_image(
                image.image_url, image.id)

            if topic_use_flag is True:
                delete_flag = False

            introduction_use_flag, introduction_use_posts = \
                introduction_model.is_use_image(image.image_url)

            if introduction_use_flag is True:
                delete_flag = False

            category_use_flag, category_use_posts = category_model.is_use_image(
                image.image_url)

            if category_use_flag is True:
                delete_flag = False

            use_posts = (
                topic_use_posts +
                category_use_posts +
                introduction_use_posts
            )

            def get_unique_list(seq):
                seen = []
                return [x for x in seq if x not in seen and not seen.append(x)]

            use_posts = get_unique_list(use_posts)

            return JsonResponse({
                'status': 200,
                'delete_flag': delete_flag,
                'use_posts': use_posts,
            }, status=200)

        except Exception as e:
            return JsonResponse({
                'status': 500,
                'message': 'Exception Error ' + str(e)
            }, status=500)
コード例 #9
0
ファイル: models.py プロジェクト: ShinjiroMoriya/cms
    def remove_video_self(cls, video_id):
        all_topic_ids = [v.id for v in TopicEn.get_all()]
        try:
            video = cls.objects.get(id=video_id)
            for v in all_topic_ids:
                video.video.remove(v)

        except:
            pass
コード例 #10
0
ファイル: views.py プロジェクト: ShinjiroMoriya/cms
    def get(_, lang):
        if lang == 'ja':
            cached_home_events = Cache.get('api_home_events')
            if cached_home_events is None:
                events_res = EventsSerializer(
                    Topic.get_event_home_published_all(), many=True).data
                Cache.set('api_home_events', events_res)
            else:
                events_res = cached_home_events

            cached_home_topics = Cache.get('api_home_topics')
            if cached_home_topics is None:
                topics_res = TopicsSerializer(
                    Topic.get_topic_home_published_all(), many=True).data
                Cache.set('api_home_topics', topics_res)
            else:
                topics_res = cached_home_topics

        elif lang == 'en':
            cached_home_categories_en = Cache.get('api_home_categories_en')
            if cached_home_categories_en is None:
                events_res = EventsEnSerializer(
                    TopicEn.get_event_home_published_all(), many=True).data
                Cache.set('api_categories_en', events_res)
            else:
                events_res = cached_home_categories_en

            cached_home_topics_en = Cache.get('api_home_topics_en')
            if cached_home_topics_en is None:
                topics_res = TopicsEnSerializer(
                    TopicEn.get_topic_home_published_all(), many=True).data
                Cache.set('api_home_topics_en', topics_res)
            else:
                topics_res = cached_home_topics_en

        else:
            return JsonResponse({
                'message': 'Not Found'
            }, status=404)
        
        return JsonResponse({
            'events': events_res,
            'topics': topics_res,
        }, safe=False)
コード例 #11
0
ファイル: models.py プロジェクト: ShinjiroMoriya/cms
    def add_topic(cls, video_id, topic_ids):
        topic_ids = list(map(int, topic_ids))
        all_topic_ids = [v.id for v in TopicEn.get_all()]
        try:
            video = cls.objects.get(id=video_id)
            for v in all_topic_ids:
                if v in topic_ids:
                    try:
                        video.topic.add(v)
                    except:
                        pass
                else:
                    video.topic.remove(v)

        except:
            pass
コード例 #12
0
    def get(request, lang, paged=1):
        try:

            value = request.GET.get('value')

            if lang == 'ja':
                topic_model = Topic()
            else:
                topic_model = TopicEn()

            if value != '':
                total = topic_model.get_topic_search_all(value).count()
            else:
                total = topic_model.get_all().count()

            pagination = Pagination(
                page=paged, per_page=10, total=total, slug='')

            if value != '':
                topics = topic_model.get_topic_search_all(value)[
                     pagination.offset:pagination.offset + pagination.per_page]
            else:
                topics = topic_model.get_all()[
                     pagination.offset:pagination.offset + pagination.per_page]

            if lang == 'ja':
                res = TopicsSerializer(topics, many=True).data
            else:
                res = TopicsEnSerializer(topics, many=True).data

            return JsonResponse({
                'total': pagination.pages,
                'paged': paged,
                'topics': res,
            }, safe=False)

        except Exception as e:
            return JsonResponse({
                'status': 500,
                'message': 'Exception Error ' + str(e)
            }, status=500)
コード例 #13
0
    def get(request, lang):
        if lang == 'ja':
            introduction_model = Introduction()
            video_model = Video()
            topic_model = Topic()
        else:
            introduction_model = IntroductionEn()
            video_model = VideoEn()
            topic_model = TopicEn()

        introductions = introduction_model.get_all()[:3]
        videos = video_model.get_all()[:3]
        topics = topic_model.get_all()[:3]

        return TemplateResponse(request, 'top.html', {
            'title': 'FEED App 管理',
            'introductions': introductions,
            'videos': videos,
            'topics': topics,
            'lang': lang,
        })
コード例 #14
0
    def post(_, lang, topic_id):

        sid = transaction.savepoint()
        if lang == 'ja':
            topic_model = Topic()
            video_model = Video()
        else:
            topic_model = TopicEn()
            video_model = VideoEn()

        try:
            video_model.remove_video_from_topic(topic_id)
            topic_model.delete_topic(topic_id)
            topic_model.remove_image(topic_id)
            transaction.savepoint_commit(sid)

        except:

            transaction.savepoint_rollback(sid)
            pass

        return HttpResponseRedirect('/{}/admin/topics'.format(lang))
コード例 #15
0
    def post(request, lang):

        sid = transaction.savepoint()

        if lang == 'ja':
            form = TopicForm(request.POST)
            topic_model = Topic()
            video_model = Video()
        else:
            form = TopicEnForm(request.POST)
            topic_model = TopicEn()
            video_model = VideoEn()

        if form.errors:
            messages.add_message(request, messages.INFO,
                                 dict(form.errors.items()))

        if form.is_valid():
            try:
                res_topic = topic_model.create_topic({
                    'new': form.cleaned_data.get('new'),
                    'post_type': form.cleaned_data.get('post_type'),
                    'title': form.cleaned_data.get('title'),
                    'text': form.cleaned_data.get('text'),
                    'thumbnail': form.cleaned_data.get('thumbnail'),
                    'url': form.cleaned_data.get('url'),
                    'event_date': form.cleaned_data.get('event_date'),
                    'button_label': form.cleaned_data.get('button_label'),
                })
                add_videos = form.cleaned_data.get('videos')
                if add_videos:
                    video_model.add_video_from_topic(res_topic.id, add_videos)

                add_images = form.cleaned_data.get('images')
                if add_images:
                    topic_model.add_image(res_topic.id, add_images)

                transaction.savepoint_commit(sid)

                return HttpResponseRedirect('/{}/admin/topics'.format(lang))

            except:
                transaction.savepoint_rollback(sid)
                pass

        select_videos = []
        if form.cleaned_data.get('videos'):
            video_ids = list(map(int, form.cleaned_data.get('videos')))
            select_videos = video_model.get_by_ids(video_ids)

        select_images = []
        if form.cleaned_data.get('images'):
            image_ids = list(map(int, form.cleaned_data.get('images')))
            select_images = Image.get_by_ids(image_ids)

        return TemplateResponse(
            request, 'topic_create.html', {
                'title': '新規投稿 | トピックス | FEED App 管理',
                'select_videos': select_videos,
                'select_images': select_images,
                'form_data': form.cleaned_data,
                'error_messages': get_error_message(request),
                'lang': lang,
                'post_types': [
                    {'name': 'トピック', 'val': 'topic'},
                    {'name': 'イベント', 'val': 'event'},
                ]
            })
コード例 #16
0
    def post(request, lang):

        sid = transaction.savepoint()

        if lang == 'ja':
            form = VideoForm(request.POST)
            video_model = Video()
        else:
            form = VideoEnForm(request.POST)
            video_model = VideoEn()
        if form.errors:
            messages.add_message(request, messages.INFO,
                                 dict(form.errors.items()))

        if form.is_valid():
            try:
                res_video = video_model.create_video({
                    'published_at':
                    form.cleaned_data.get('published_at'),
                    'title':
                    form.cleaned_data.get('title'),
                    'text':
                    form.cleaned_data.get('text'),
                    'youtube_id':
                    form.cleaned_data.get('youtube_id'),
                })
                add_introductions = form.cleaned_data.get('introductions')
                if add_introductions:
                    video_model.add_introduction(res_video.id,
                                                 add_introductions)
                add_categories = form.cleaned_data.get('categories')
                if add_categories:
                    video_model.add_category(res_video.id, add_categories)
                add_topics = form.cleaned_data.get('topics')
                if add_topics:
                    video_model.add_topic(res_video.id, add_topics)

                transaction.savepoint_commit(sid)

                return HttpResponseRedirect('/{}/admin/videos'.format(lang))

            except:
                transaction.savepoint_rollback(sid)
                pass

        if lang == 'ja':
            topic_model = Topic()
            introduction_model = Introduction()
        else:
            topic_model = TopicEn()
            introduction_model = IntroductionEn()

        select_categories = []
        if form.cleaned_data.get('categories'):
            category_ids = list(map(int, form.cleaned_data.get('categories')))
            select_categories = Category.get_by_ids(category_ids)

        select_introductions = []
        if form.cleaned_data.get('introductions'):
            title_ids = list(map(int, form.cleaned_data.get('introductions')))
            select_introductions = introduction_model.get_by_ids(title_ids)

        select_topics = []
        if form.cleaned_data.get('topics'):
            topic_ids = list(map(int, form.cleaned_data.get('topics')))
            select_topics = topic_model.get_by_ids(topic_ids)

        select_videos = []
        if form.cleaned_data.get('videos'):
            video_ids = list(map(int, form.cleaned_data.get('videos')))
            select_videos = video_model.get_by_ids(video_ids)

        groups = Group.get_all()

        return TemplateResponse(
            request, 'video_create.html', {
                'title': '新規投稿 | 動画 | FEED App 管理',
                'select_categories': select_categories,
                'select_introductions': select_introductions,
                'select_topics': select_topics,
                'select_videos': select_videos,
                'groups': groups,
                'form_data': form.cleaned_data,
                'error_messages': get_error_message(request),
                'lang': lang,
            })