Exemplo n.º 1
0
 def get(self, project_id):
     """
     Retrieve all playlists related to given project. 
     ---
     tags:
     - Playlists
     description: Result is paginated and can be sorted.
     parameters:
       - in: path
         name: project_id
         required: True
         schema:
             type: UUID
             example: a24a6ea4-ce75-4665-a070-57453082c25
     responses:
         200:
             description: All playlists related to given project
     """
     user_service.block_access_to_vendor()
     user_service.check_project_access(project_id)
     page = self.get_page()
     sort_by = self.get_sort_by()
     task_type_id = self.get_text_parameter("task_type_id")
     return playlists_service.all_playlists_for_project(
         project_id,
         for_client=permissions.has_client_permissions(),
         page=page,
         sort_by=sort_by,
         task_type_id=task_type_id,
     )
Exemplo n.º 2
0
 def get(self, project_id):
     (only_preview, task_type_id, task_status_id, person_id, page,
      page_size, after, before) = self.get_arguments()
     projects_service.get_project(project_id)
     user_service.check_project_access(project_id)
     user_service.block_access_to_vendor()
     after = self.parse_date_parameter(after)
     before = self.parse_date_parameter(before)
     result = news_service.get_last_news_for_project(
         project_id,
         only_preview=only_preview,
         task_type_id=task_type_id,
         task_status_id=task_status_id,
         author_id=person_id,
         page=page,
         page_size=page_size,
         after=after,
         before=before,
     )
     stats = news_service.get_news_stats_for_project(
         project_id,
         task_type_id=task_type_id,
         task_status_id=task_status_id,
         author_id=person_id,
         after=after,
         before=before,
     )
     result["stats"] = stats
     return result
Exemplo n.º 3
0
 def get(self, project_id, episode_id):
     user_service.block_access_to_vendor()
     user_service.check_project_access(project_id)
     if episode_id not in ["main", "all"]:
         shots_service.get_episode(episode_id)
     return playlists_service.all_playlists_for_episode(
         project_id, episode_id, permissions.has_client_permissions())
Exemplo n.º 4
0
 def check_read_permissions(self):
     """
     Overriding so that people without admin credentials can still access
     this resource.
     """
     user_service.block_access_to_vendor()
     return True
Exemplo n.º 5
0
 def delete(self, playlist_id, build_job_id):
     """
     Remove given build job related to given playlist. 
     ---
     tags:
     - Playlists
     parameters:
       - in: path
         name: playlist_id
         required: True
         schema:
             type: UUID
             example: a24a6ea4-ce75-4665-a070-57453082c25
       - in: path
         name: build_job_id
         required: True
         schema:
             type: UUID
             example: a24a6ea4-ce75-4665-a070-57453082c25
     responses:
         204:
             description: Given build job removed
     """
     user_service.block_access_to_vendor()
     playlist = playlists_service.get_playlist(playlist_id)
     user_service.check_playlist_access(playlist)
     playlists_service.remove_build_job(playlist, build_job_id)
     return "", 204
Exemplo n.º 6
0
    def get(self, playlist_id):
        playlist = playlists_service.get_playlist(playlist_id)
        project = projects_service.get_project(playlist["project_id"])
        user_service.block_access_to_vendor()
        user_service.check_playlist_access(playlist)
        zip_file_path = playlists_service.build_playlist_zip_file(playlist)

        context_name = slugify.slugify(project["name"], separator="_")
        if project["production_type"] == "tvshow":
            episode_id = playlist["episode_id"]
            if episode_id is not None:
                episode = shots_service.get_episode(playlist["episode_id"])
                episode_name = episode["name"]
            elif playlist["is_for_all"]:
                episode_name = "all assets"
            else:
                episode_name = "main pack"
            context_name += "_%s" % slugify.slugify(
                episode_name, separator="_"
            )
        attachment_filename = "%s_%s.zip" % (
            context_name,
            slugify.slugify(playlist["name"], separator="_"),
        )

        return flask_send_file(
            zip_file_path,
            conditional=True,
            mimetype="application/zip",
            as_attachment=True,
            attachment_filename=attachment_filename,
        )
Exemplo n.º 7
0
 def get(self, project_id, task_type_id):
     """
     Retrieve sequences schedule items for given task type
     ---
     tags:
       - Projects
     parameters:
       - in: path
         name: project_id
         required: true
         schema:
           type: UUID
           example: 5dc235ec-125e-4ba5-b1db-604d4babc315
       - in: path
         name: task_type_id
         required: true
         schema:
           type: UUID
           example: 5dc235ec-125e-4ba5-b1db-604d4babc315
     responses:
         200:
           description: All sequences schedule items for given task type
     """
     user_service.check_project_access(project_id)
     user_service.block_access_to_vendor()
     return schedule_service.get_sequences_schedule_items(
         project_id, task_type_id)
Exemplo n.º 8
0
 def get(self, project_id, playlist_id):
     """
     Retrieve all playlists related to given project. 
     ---
     tags:
     - Playlists
     parameters:
       - in: path
         name: project_id
         required: True
         schema:
             type: UUID
             example: a24a6ea4-ce75-4665-a070-57453082c25
       - in: path
         name: playlist_id
         required: True
         schema:
             type: UUID
             example: a24a6ea4-ce75-4665-a070-57453082c25
     responses:
         200:
             description: All playlists related to given project
     """
     user_service.block_access_to_vendor()
     user_service.check_project_access(project_id)
     return playlists_service.get_playlist_with_preview_file_revisions(
         playlist_id
     )
Exemplo n.º 9
0
 def get(self, project_id, news_id):
     projects_service.get_project(project_id)
     user_service.check_project_access(project_id)
     user_service.block_access_to_vendor()
     news = news_service.get_news(project_id, news_id)
     if len(news["data"]) > 0:
         return news["data"][0]
     else:
         raise NewsNotFoundException
Exemplo n.º 10
0
 def get(self, project_id):
     user_service.block_access_to_vendor()
     user_service.check_project_access(project_id)
     page = self.get_page()
     sort_by = self.get_sort_by()
     return playlists_service.all_playlists_for_project(
         project_id,
         for_client=permissions.has_client_permissions(),
         page=page,
         sort_by=sort_by,
     )
Exemplo n.º 11
0
 def get(self, project_id, episode_id):
     user_service.block_access_to_vendor()
     user_service.check_project_access(project_id)
     sort_by = self.get_sort_by()
     task_type_id = self.get_text_parameter("task_type_id")
     if episode_id not in ["main", "all"]:
         shots_service.get_episode(episode_id)
     return playlists_service.all_playlists_for_episode(
         project_id,
         episode_id,
         permissions.has_client_permissions(),
         sort_by=sort_by,
         task_type_id=task_type_id,
     )
Exemplo n.º 12
0
    def get(self, playlist_id):
        """
        Download given playlist as zip.
        ---
        tags:
        - Playlists
        parameters:
          - in: path
            name: playlist_id
            required: True
            schema:
                type: UUID
                example: a24a6ea4-ce75-4665-a070-57453082c25
        responses:
            200:
                description: Given playlist downloaded as zip
        """
        playlist = playlists_service.get_playlist(playlist_id)
        project = projects_service.get_project(playlist["project_id"])
        user_service.block_access_to_vendor()
        user_service.check_playlist_access(playlist)
        zip_file_path = playlists_service.build_playlist_zip_file(playlist)

        context_name = slugify.slugify(project["name"], separator="_")
        if project["production_type"] == "tvshow":
            episode_id = playlist["episode_id"]
            if episode_id is not None:
                episode = shots_service.get_episode(playlist["episode_id"])
                episode_name = episode["name"]
            elif playlist["is_for_all"]:
                episode_name = "all assets"
            else:
                episode_name = "main pack"
            context_name += "_%s" % slugify.slugify(
                episode_name, separator="_"
            )
        attachment_filename = "%s_%s.zip" % (
            context_name,
            slugify.slugify(playlist["name"], separator="_"),
        )

        return flask_send_file(
            zip_file_path,
            conditional=True,
            mimetype="application/zip",
            as_attachment=True,
            attachment_filename=attachment_filename,
        )
Exemplo n.º 13
0
 def get(self, project_id):
     (
         only_preview,
         task_type_id,
         task_status_id,
         page,
         page_size,
     ) = self.get_arguments()
     projects_service.get_project(project_id)
     user_service.check_project_access(project_id)
     user_service.block_access_to_vendor()
     return news_service.get_last_news_for_project(
         project_id,
         only_preview=only_preview,
         task_type_id=task_type_id,
         task_status_id=task_status_id,
         page=page,
         page_size=page_size,
     )
Exemplo n.º 14
0
 def get(self, project_id, episode_id):
     """
     Retrieve all playlists related to given episode. 
     ---
     tags:
     - Playlists
     description: The full list is returned because the number of playlists in an episode is not that big.
     parameters:
       - in: path
         name: project_id
         required: True
         schema:
             type: UUID
             example: a24a6ea4-ce75-4665-a070-57453082c25
       - in: path
         name: episode_id
         required: True
         schema:
             type: UUID
             example: a24a6ea4-ce75-4665-a070-57453082c25
     responses:
         200:
             description: All playlists related to given episode
     """
     user_service.block_access_to_vendor()
     user_service.check_project_access(project_id)
     sort_by = self.get_sort_by()
     task_type_id = self.get_text_parameter("task_type_id")
     if episode_id not in ["main", "all"]:
         shots_service.get_episode(episode_id)
     return playlists_service.all_playlists_for_episode(
         project_id,
         episode_id,
         permissions.has_client_permissions(),
         sort_by=sort_by,
         task_type_id=task_type_id,
     )
Exemplo n.º 15
0
 def get(self, project_id, playlist_id):
     user_service.block_access_to_vendor()
     user_service.check_project_access(project_id)
     return playlists_service.get_playlist_with_preview_file_revisions(
         playlist_id
     )
Exemplo n.º 16
0
 def get(self, project_id):
     user_service.block_access_to_vendor()
     user_service.check_project_access(project_id)
     return playlists_service.all_playlists_for_project(
         project_id, permissions.has_client_permissions()
     )
Exemplo n.º 17
0
 def delete(self, playlist_id, build_job_id):
     user_service.block_access_to_vendor()
     playlist = playlists_service.get_playlist(playlist_id)
     user_service.check_playlist_access(playlist)
     playlists_service.remove_build_job(playlist, build_job_id)
     return "", 204
Exemplo n.º 18
0
 def get(self, playlist_id, build_job_id):
     user_service.block_access_to_vendor()
     playlist = playlists_service.get_playlist(playlist_id)
     user_service.check_playlist_access(playlist)
     return playlists_service.get_build_job(build_job_id)
Exemplo n.º 19
0
 def check_read_permissions(self, milestone):
     user_service.check_project_access(milestone["project_id"])
     user_service.block_access_to_vendor()
Exemplo n.º 20
0
 def check_permissions(self, project_id):
     user_service.check_project_access(project_id)
     user_service.block_access_to_vendor()
Exemplo n.º 21
0
 def check_update_permissions(self, playlist, data):
     user_service.check_project_access(playlist["project_id"])
     user_service.block_access_to_vendor()
Exemplo n.º 22
0
 def get(self, project_id, task_type_id):
     user_service.check_project_access(project_id)
     user_service.block_access_to_vendor()
     return schedule_service.get_sequences_schedule_items(
         project_id, task_type_id
     )
Exemplo n.º 23
0
 def get(self, project_id, news_id):
     projects_service.get_project(project_id)
     user_service.check_project_access(project_id)
     user_service.block_access_to_vendor()
     return news_service.get_news(project_id, news_id)
Exemplo n.º 24
0
 def check_read_permissions(self):
     user_service.block_access_to_vendor()
     return True
Exemplo n.º 25
0
 def check_read_permissions(self, instance):
     if instance["project_id"]:
         user_service.check_project_access(instance["project_id"])
     user_service.block_access_to_vendor()
     return True