Exemplo n.º 1
0
    def save(self, force_insert=False, force_update=False, *args, **kwargs):
        # These are reset after save
        changed_fields = (set(self.get_dirty_fields.keys()) &
                          set(EDITABLE_VIDDLER_FIELDS))
        changed_values = dict([(k, v) for k, v in self.get_dirty_fields().items() if k in changed_fields])
        if not self.slug:
            self.slug = slugify(self.title)

        upload_key_image = (self.key_image_custom and
                            'key_image_custom' in self.get_dirty_fields())

        if not self.key_image_custom and self.status != "not ready":
            filename, size, imgfile = download_image(self.thumbnail_url)
            self.key_image_custom.save(filename, imgfile)
            self._generate_thumbnail()
        super(BaseViddlerVideo, self).save(*args, **kwargs)
        if upload_key_image and self.status != "not ready":
            viddler = get_viddler()
            viddler.videos.setThumbnail(
                self.viddler_id,
                thumbfile=self.key_image_custom.path)
            self._generate_thumbnail()
        if changed_fields and not force_update:
            set_params = {}
            for key, val in changed_values.items():
                set_params[self.UPDATE_PARAM_MAP.get(key, key)] = val
            viddler = get_viddler()
            result = viddler.videos.setDetails(self.viddler_id, **set_params)
            make_model_from_api(result, self.__class__)
Exemplo n.º 2
0
def download(request, videoid):
    """
    Download a specific viddler video into the admin (if it isn't already)
    """
    viddler = get_viddler()
    video_details = viddler.videos.getDetails(videoid)
    video = make_model_from_api(video_details)
    return HttpResponseRedirect(reverse('admin:viewmaster_viddlervideo_change', args=(video.id,)))
Exemplo n.º 3
0
def delete_handler(sender, instance, *args, **kwargs):
    from viddler.settings import get_viddler

    viddler = get_viddler()

    try:
        viddler.videos.delete(instance.viddler_id)
    except viddler.ViddlerAPIException:
        pass
Exemplo n.º 4
0
def progress(request):
    """
    Returns the progress of a video upload
    """
    if 'token' in request.GET:
        viddler = get_viddler()
        try:
            results = viddler.videos.uploadProgress(request.GET['token'])
        except viddler.ViddlerAPIException as e:
            results = {"status": 4, "percent": 0, "error": e.message}
    else:
        results = {"status": 4, "percent": 0, "error": "Upload token not found."}
    return HttpResponse(json.dumps(results), content_type="application/json")
Exemplo n.º 5
0
def sync(request):
    """
    Syncronize all viddler videos from viddler

    ?since=YYYY-MM-DD
    """
    viddler = get_viddler()
    kwargs = {}
    if 'since' in request.GET:
        try:
            kwargs['min_upload_date'] = datetime.datetime.strptime(request.GET['since'], '%Y-%m-%d')
        except ValueError:
            pass
    results = viddler.videos.search_yourvideos(**kwargs)
    for item in results:
        make_model_from_api(item)
    return HttpResponseRedirect(reverse('admin:viewmaster_viddlervideo_changelist'))
Exemplo n.º 6
0
    def handle(self, *args, **options):
        from viddler.models import ViddlerVideo, make_model_from_api
        from viddler.settings import get_viddler
        viddler = get_viddler()
        viddler_kwargs = {'per_page': 100}
        try:
            if options['since']:
                viddler_kwargs['min_upload_date'] = options['since']
            else:
                v = ViddlerVideo.objects.latest('upload_time')
                viddler_kwargs['min_upload_date'] = v.upload_time.strftime('%Y-%m-%d')
        except (ViddlerVideo.DoesNotExist, ValueError):
            pass

        results = viddler.videos.search_yourvideos(**viddler_kwargs)
        for item in results:
            self.stdout.write('Adding: %s' % item['title'])
            make_model_from_api(item)
Exemplo n.º 7
0
def callback(request):
    """
    Handle the Viddler Callback after uploading a video
    """
    video_id = request.GET.get('videoid', '')
    if not video_id:
        error_id = request.GET.get('error', '')
        error = request.GET.get('error_description', '')
        if error_id or error:
            raise Exception("Viddler error %s: %s" % (error_id, error))
        else:
            raise Exception("No video id returned from Viddler")
    viddler = get_viddler()
    video_details = viddler.videos.getDetails(video_id)
    video = make_model_from_api(video_details)
    for relation in DEFAULT_RELATIONS:
        video.relations.create(
            content_type=ContentType.objects.get_for_id(relation[0]),
            object_id=relation[1],
            relation_type=relation[2])
    return HttpResponseRedirect(reverse('admin:viewmaster_viddlervideo_change', args=(video.id,)))
Exemplo n.º 8
0
    def save(self, force_insert=False, force_update=False, *args, **kwargs):
        """
        If a related key image is set, we need to remove the existing key image
        and thumbnail.

        The super class will download the video from viddler if it doesn't exist
        so we will need to handle that as well.

        We will upload the related image to viddler, clear the custom key image
        and thumbnail and let the superclass update them from viddler.
        """
        import os
        from viddler.settings import get_viddler
        # These are reset after save
        changed_fields = (set(self.get_dirty_fields().keys()) &
                          set(EDITABLE_VIDDLER_FIELDS))
        changed_values = dict(
            [(k, v) for k, v in self.get_dirty_fields().items()
             if k in changed_fields])

        if not self.slug:
            self.slug = slugify(self.title)

        generate_thumbnail = False
        upload_key_image = False

        if KEY_IMAGE_MODEL:
            if (self.key_image_related and
                    'key_image_related' in self.get_dirty_fields()):
                viddler = get_viddler()
                viddler.videos.setThumbnail(
                    self.viddler_id,
                    thumbfile=getattr(self.key_image_related,
                                      KEY_IMAGE_FIELD).path)

                if hasattr(self.key_image_custom, "file"):
                    os.remove(self.key_image_custom.path)
                    self.key_image_custom = ''

                if hasattr(self.thumbnail, "file"):
                    os.remove(self.thumbnail.path)
                    self.thumbnail = ''

                generate_thumbnail = True
            elif (self.key_image_custom and
                  'key_image_custom' in self.get_dirty_fields()):
                upload_key_image = True
                generate_thumbnail = True
            elif not self.key_image_custom and self.status != "not ready":
                filename, size, imgfile = download_image(self.thumbnail_url)
                self.key_image_custom.save(filename, imgfile)
                generate_thumbnail = True
        elif (self.key_image_custom and
              'key_image_custom' in self.get_dirty_fields()):
                upload_key_image = True
                generate_thumbnail = True

        models.Model.save(self, force_insert, force_update, *args, **kwargs)

        if upload_key_image and self.status != "not ready":
            viddler = get_viddler()
            viddler.videos.setThumbnail(
                self.viddler_id,
                thumbfile=self.key_image_custom.path)

        if generate_thumbnail:
            self._generate_thumbnail()

        if changed_fields and self.is_source and not force_update:
            set_params = {}

            for key, val in changed_values.items():
                set_params[self.UPDATE_PARAM_MAP.get(key, key)] = val

            viddler = get_viddler()
            result = viddler.videos.setDetails(self.viddler_id, **set_params)

            if self.slug:
                result['slug'] = self.slug

            make_model_from_api(result, self.__class__)
Exemplo n.º 9
0
 def _embed_code(self, **kwargs):
     viddler = get_viddler()
     kwargs['video_id'] = self.viddler_id
     embed_code = viddler.videos.getEmbedCode(**kwargs)
     return embed_code
Exemplo n.º 10
0
 def synchronize(self):
     viddler = get_viddler()
     result = viddler.videos.getDetails(self.viddler_id)
     return make_model_from_api(result, self.__class__)