import os
from django.urls import reverse
from builder.base import BuildNew
from pages.models import Page

from .models import Publisher


class BuildPubs(BuildNew):

    def build(self):
        self.build_detail_view()
        self.build_publisher_list()
        self.build_list_view(
            base_path=reverse("resume:list"),
            paginate_by=9999
        )

    def get_model_queryset(self):
        return self.model.objects.all()

    def build_detail_view(self):
        for obj in self.get_model_queryset():
            url = obj.get_absolute_url()
            print(url)
            path, slug = os.path.split(url)
            path = '%s/' % path
            # write html
            response = self.client.get(url)
            print(path, slug)
            self.write_file(path, response.content, filename=slug)

    def build_publisher_list(self):
        publishers = Publisher.objects.all()
        for publisher in publishers:
            self.build_list_view(
                base_path=reverse("resume:list_by_publisher", kwargs={'publisher': publisher.slug, }),
                paginate_by=9999
            )


class BuildResume(BuildNew):

    def build(self):
        self.build_pages()

    def get_model_queryset(self):
        return self.model.objects.all()

    def build_pages(self):
        '''
        build out /work/index.html and work/resume.html
        '''
        pages = self.get_model_queryset().filter(app="resume", build=True)
        for obj in pages:
            path = "work/"
            if obj.slug == "profile":
                url = '/work/'
                slug = "index"
            else:
                url = "/%s%s/" % (path, obj.slug)
                slug = obj.slug
            # write html
            response = self.client.get(url, HTTP_HOST='127.0.0.1')
            self.write_file(path, response.content, filename=slug)


def pub_builder():
    j = BuildPubs("resume", "pubitem")
    j.build()


def resume_builder():
    j = BuildResume("pages", "page")
    j.build()