Esempio n. 1
0
 def get_search_results(self, request, queryset, search_term):
     if is_vod_operator():
         # Leave it as such in this case because it is a search on provider_website
         queryset, use_distinct = super(ContentUpdateAdmin, self).get_search_results(request, queryset, search_term)
     else:
         members = list(Member.objects.filter(email__icontains=search_term.lower()))
         queryset = self.model.objects.filter(member__in=members)
         use_distinct = False
     return queryset, use_distinct
Esempio n. 2
0
class ContentUpdateAdmin(admin.ModelAdmin, ExportMixin):
    list_display = ('add_list_size', 'delete_list_size', 'cost', 'status', 'provider_website') if is_vod_operator()\
        else ('member', 'add_list_size', 'delete_list_size', 'cost', 'status', )
    list_filter = ('status', 'provider_website', ) if is_vod_operator()\
        else ('status', ClientListFilter, )
    search_fields = ('provider_website', ) if is_vod_operator()\
        else ('member_email', )
    readonly_fields = ('add_list', 'add_list_size', 'delete_list', 'delete_list_size', 'cost', 'provider_website', 'status', 'created_on', 'updated_on', ) if is_vod_operator()\
        else ('member', 'add_list', 'add_list_size', 'delete_list', 'delete_list_size', 'created_on', 'updated_on')

    def save_model(self, request, obj, form, change):
        if is_vod_operator():  # VOD Operators cannot edit ContentUpdate
            return
        if obj.status == ContentUpdate.RUNNING:
            return
        if obj.status == ContentUpdate.AUTHORIZED:
            obj.provider = request.user
        elif obj.status == ContentUpdate.DELIVERED:
            size = obj.add_list_size
            prepayment = obj.member.customer.get_last_retail_prepayment()
            prepayment.balance -= size
            prepayment.save()
            from threading import Thread
            thread = Thread(target=sync_changes, args=(obj, ))  # Syncing changes may last long, so run it in another thread.
            thread.start()
        super(ContentUpdateAdmin, self).save_model(request, obj, form, change)

    def get_search_results(self, request, queryset, search_term):
        if is_vod_operator():
            # Leave it as such in this case because it is a search on provider_website
            queryset, use_distinct = super(ContentUpdateAdmin, self).get_search_results(request, queryset, search_term)
        else:
            members = list(Member.objects.filter(email__icontains=search_term.lower()))
            queryset = self.model.objects.filter(member__in=members)
            use_distinct = False
        return queryset, use_distinct
Esempio n. 3
0
 def save_model(self, request, obj, form, change):
     if is_vod_operator():  # VOD Operators cannot edit ContentUpdate
         return
     if obj.status == ContentUpdate.RUNNING:
         return
     if obj.status == ContentUpdate.AUTHORIZED:
         obj.provider = request.user
     elif obj.status == ContentUpdate.DELIVERED:
         size = obj.add_list_size
         prepayment = obj.member.customer.get_last_retail_prepayment()
         prepayment.balance -= size
         prepayment.save()
         from threading import Thread
         thread = Thread(target=sync_changes, args=(obj, ))  # Syncing changes may last long, so run it in another thread.
         thread.start()
     super(ContentUpdateAdmin, self).save_model(request, obj, form, change)
Esempio n. 4
0
class SeriesEpisodeAdmin(ImportExportMixin, admin.ModelAdmin):
    resource_class = SeriesEpisodeResource
    list_display = ('series', 'title', 'orders', 'clicks', 'resource')
    list_filter = ('series', 'created_on')
    fieldsets = (
        (None, {
            'fields': ('series', 'title', 'slug', 'size', 'duration',
                       'resource', 'resource_mob')
        }),
        ('Meta', {
            'fields': ('is_adult', )
        }),
        ('Interest', {
            'fields': ('clicks', ) if is_vod_operator() else ('orders', )
        }),
        ('Important dates', {
            'fields': (
                'created_on',
                'updated_on',
            )
        }),
    )
    ordering = ('-id', '-title')
    search_fields = (
        'series',
        'title',
        'resource',
    )
    save_on_top = True
    prepopulated_fields = {"slug": ("title", )}

    def get_readonly_fields(self, request, obj=None):
        if getattr(settings, 'IS_VOD_OPERATOR', False):
            return 'is_adult', 'clicks', 'size', 'created_on', 'updated_on'
        else:
            return 'is_adult', 'orders', 'size', 'created_on', 'updated_on'

    def save_model(self, request, obj, form, change):
        obj.title = obj.title.strip()
        obj.slug = obj.slug.strip()
        obj.resource = obj.resource.strip()
        if not obj.resource_mob:
            obj.resource_mob = obj.resource
        obj.is_adult = obj.series.is_adult
        obj.release = obj.series.release
        super(SeriesEpisodeAdmin, self).save_model(request, obj, form, change)
Esempio n. 5
0
class SeriesAdmin(ImportExportMixin, admin.ModelAdmin):
    resource_class = SeriesResource
    list_display = ('title', 'season', 'clicks', 'display_size', 'display_duration', 'view_price', 'download_price', 'visible') if is_vod_operator()\
        else ('title', 'season', 'display_duration', 'display_size', 'orders', 'clicks', 'price', 'visible')
    list_filter = (
        SeriesCategoryListFilter,
        'provider',
        'visible',
        'created_on',
    )
    fieldsets = (
        (None, {
            'fields': (
                'title',
                'season',
                'slug',
                'episodes_count',
                'release',
                'synopsis',
                'poster',
            )
        }),
        ('Meta', {
            'fields': (
                'visible',
                'is_adult',
                'view_price',
                'download_price',
                'trailer_resource',
                'groups',
                'tags',
            ) if is_vod_operator() else (
                'visible',
                'is_adult',
                'price',
                'trailer_resource',
                'groups',
                'tags',
            )
        }),
        ('Important dates', {
            'fields': (
                'created_on',
                'updated_on',
            )
        }),
    )
    readonly_fields = ('is_adult', 'created_on', 'updated_on', 'provider')
    ordering = ('-id', '-title', '-release')
    search_fields = ('title', )
    inlines = (SeriesEpisodeInline, )
    save_on_top = True
    prepopulated_fields = {
        "slug": ("title", ),
        "tags": ("title", ),
        "groups": ("title", )
    }

    # actions = [add_movies_to_top20, remove_movies_from_top20]

    def save_model(self, request, obj, form, change):
        obj.title = obj.title.strip()
        obj.slug = obj.slug.strip()
        if obj.trailer_resource:
            obj.trailer_resource = obj.trailer_resource.strip()
        if not change:  # Set provider to 'Myself' if the media is added by the owner of the website
            obj.provider = get_service_instance()
        is_adult = False
        obj.categories = []
        for category in Category.objects.all():
            if request.POST.get('cat_%s' % category.id):
                obj.categories.append(category)
                if category.is_adult:
                    is_adult = True
        obj.is_adult = is_adult
        for episode in obj.seriesepisode_set.all():
            episode.is_adult = obj.is_adult
            episode.release = obj.release
            episode.save()
        super(SeriesAdmin, self).save_model(request, obj, form, change)

    def get_search_results(self, request, queryset, search_term):
        search_term = search_term.split(
            ' ')[0][:4]  # Search is narrowed to maximum 4 chars before space
        return super(SeriesAdmin,
                     self).get_search_results(request, queryset, search_term)

    def render_change_form(self,
                           request,
                           context,
                           add=False,
                           change=False,
                           form_url='',
                           obj=None):
        context['categories'] = Category.objects.all()
        return super(SeriesAdmin,
                     self).render_change_form(request, context, add, change,
                                              form_url, obj)
Esempio n. 6
0
 class Meta:
     model = Series
     skip_unchanged = True
     exclude = ('poster', 'synopsis', 'visible', 'categories')
     import_id_fields = ('title', 'season', 'view_price', 'episodes_count', 'groups', 'tags')\
         if is_vod_operator() else ('title', 'season', 'price', 'view_price', 'episodes_count', 'groups', 'tags')
Esempio n. 7
0
 class Meta:
     model = Movie
     skip_unchanged = True
     exclude = ('poster', 'synopsis', 'visible', 'categories')
     import_id_fields = ('resource', 'view_price', 'size', 'duration', 'groups', 'tags')\
         if is_vod_operator() else ('resource', 'price', 'size', 'duration', 'groups', 'tags')