diff options
Diffstat (limited to 'app')
-rw-r--r-- | app/income/__init__.py | 0 | ||||
-rw-r--r-- | app/income/admin.py | 27 | ||||
-rw-r--r-- | app/income/models.py | 36 | ||||
-rw-r--r-- | app/resume/admin.py | 14 | ||||
-rw-r--r-- | app/resume/build.py | 34 | ||||
-rw-r--r-- | app/resume/models.py | 40 | ||||
-rw-r--r-- | app/resume/urls.py | 32 | ||||
-rw-r--r-- | app/resume/views.py | 31 |
8 files changed, 214 insertions, 0 deletions
diff --git a/app/income/__init__.py b/app/income/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/app/income/__init__.py diff --git a/app/income/admin.py b/app/income/admin.py new file mode 100644 index 0000000..4ca6aba --- /dev/null +++ b/app/income/admin.py @@ -0,0 +1,27 @@ +from django.contrib import admin + +from .models import Gig + + +class GigAdmin(admin.ModelAdmin): + list_display = ('title', 'status', 'payment_status', 'publisher', 'pub_date', 'created') + list_filter = ('publisher', 'status', 'payment_status') + fieldsets = ( + ('Gig', { + 'fields': ( + 'title', + 'pitch', + ('payment', 'pay_type'), + ('status', 'pub_date', 'payment_status'), + 'publisher', + 'pub_item' + ), + 'classes': ( + 'show', + 'extrapretty', + 'wide' + ) + } + ), + ) +admin.site.register(Gig, GigAdmin) diff --git a/app/income/models.py b/app/income/models.py new file mode 100644 index 0000000..9cace38 --- /dev/null +++ b/app/income/models.py @@ -0,0 +1,36 @@ +from django.db import models +from django.utils import timezone + +from resume.models import PubItem, Publisher + + +class Gig(models.Model): + title = models.CharField(max_length=200) + pitch = models.TextField(null=True, blank=True) + created = models.DateTimeField(auto_now_add=True) + pub_date = models.DateTimeField(default=timezone.now) + STATUS = ( + (0, "Pitched"), + (1, "Accepted"), + (2, "Rejected"), + (3, "Published"), + ) + status = models.IntegerField(choices=STATUS, default=1) + payment = models.DecimalField(max_digits=10, decimal_places=2) + PAY_STATUS = ( + (0, "NOT SUBMITTED"), + (1, "Invoiced"), + (2, "Paid"), + ) + payment_status = models.IntegerField(choices=PAY_STATUS, default=1) + PAY_TYPE = ( + (0, "Flat Rate"), + (1, "Per Word"), + (2, "Hourly"), + ) + pay_type = models.IntegerField(choices=PAY_TYPE, default=1) + publisher = models.ForeignKey(Publisher, blank=True, null=True) + pub_item = models.ForeignKey(PubItem, blank=True, null=True) + + def __str__(self): + return self.title diff --git a/app/resume/admin.py b/app/resume/admin.py new file mode 100644 index 0000000..0f8b71a --- /dev/null +++ b/app/resume/admin.py @@ -0,0 +1,14 @@ +from django.contrib import admin + +from .models import Publisher, PubItem + + +class PublisherAdmin(admin.ModelAdmin): + pass + + +class PubItemAdmin(admin.ModelAdmin): + pass + +admin.site.register(Publisher, PublisherAdmin) +admin.site.register(PubItem, PubItemAdmin) diff --git a/app/resume/build.py b/app/resume/build.py new file mode 100644 index 0000000..7241a70 --- /dev/null +++ b/app/resume/build.py @@ -0,0 +1,34 @@ +import os +from django.core.urlresolvers import reverse +from builder.base import BuildNew + + +class BuildExpenses(BuildNew): + + def build(self): + self.build_detail_view() + self.build_list_view( + base_path=reverse("expenses:list_trip"), + paginate_by=24 + ) + + def get_model_queryset(self): + return self.model.objects.all() + + def build_detail_view(self): + ''' + write out all the expenses for each trip + ''' + for obj in self.get_model_queryset(): + url = obj.get_absolute_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 builder(): + j = BuildExpenses("expenses", "trip") + j.build() diff --git a/app/resume/models.py b/app/resume/models.py new file mode 100644 index 0000000..4df639e --- /dev/null +++ b/app/resume/models.py @@ -0,0 +1,40 @@ +from django.db import models +from django.core.urlresolvers import reverse + +# http://freewisdom.org/projects/python-markdown/ +import markdown + + +class Publisher(models.Model): + name = models.CharField(max_length=200) + slug = models.SlugField(max_length=50) + body_markdown = models.TextField(null=True, blank=True) + body_html = models.TextField(null=True, blank=True) + url = models.CharField(max_length=200, blank=True, null=True) + + def __str__(self): + return self.name + + +class PubItem(models.Model): + title = models.CharField(max_length=200) + slug = models.CharField(max_length=50) + body_markdown = models.TextField(null=True, blank=True) + body_html = models.TextField(null=True, blank=True) + url = models.CharField(max_length=200, blank=True, null=True) + pub_date = models.CharField(max_length=40, blank=True, null=True) + publisher = models.ForeignKey(Publisher) + + class Meta: + ordering = ('-pub_date',) + + def __str__(self): + return self.title + + def get_absolute_url(self): + return reverse("resume:detail", kwargs={"publisher": self.publisher.slug, "slug": self.slug}) + + def save(self, *args, **kwargs): + if self.body_markdown: + self.body_html = markdown.markdown(self.body_markdown, extensions=['extra'], safe_mode=False) + super(PubItem, self).save() diff --git a/app/resume/urls.py b/app/resume/urls.py new file mode 100644 index 0000000..15b2371 --- /dev/null +++ b/app/resume/urls.py @@ -0,0 +1,32 @@ +from django.conf.urls import url +from django.views.generic.base import RedirectView + +from . import views + +urlpatterns = [ + url( + regex=r'pubs/(?P<page>\d+)/$', + view=views.PublisherListView.as_view(), + name='list', + ), + url( + regex=r'pubs/(?P<publisher>[-\w]+)/(?P<slug>[-\w]+)$', + view=views.PubItemDetailView.as_view(), + name='detail', + ), + url( + regex=r'pubs/$', + view=RedirectView.as_view(url="/resume/pubs/1/", permanent=False), + name="live-redirect" + ), + url( + regex=r'^(?P<slug>[-\w]+)$', + view=views.PageView.as_view(), + name="intro" + ), + url( + regex=r'^$', + view=views.BaseView.as_view(), + name="cv" + ), +] diff --git a/app/resume/views.py b/app/resume/views.py new file mode 100644 index 0000000..bdfd01b --- /dev/null +++ b/app/resume/views.py @@ -0,0 +1,31 @@ +from django.views.generic.detail import DetailView +from django.views.generic.base import TemplateView +from utils.views import PaginatedListView + +from .models import PubItem +from pages.models import Page + + +class PublisherListView(PaginatedListView): + template_name = 'archives/resume-pubs.html' + + def get_queryset(self): + return PubItem.objects.all() + + +class PubItemDetailView(DetailView): + model = PubItem + template_name = "details/resume.html" + slug_field = "slug" + + +class PageView(DetailView): + model = Page + slug_field = "slug" + + def get_template_names(self): + return ["details/%s.html" % self.object.slug, 'details/page.html'] + + +class BaseView(TemplateView): + template_name = "archives/resume.html" |