summaryrefslogtreecommitdiff
path: root/app/unused_apps/publications
diff options
context:
space:
mode:
Diffstat (limited to 'app/unused_apps/publications')
-rw-r--r--app/unused_apps/publications/__init__.py0
-rw-r--r--app/unused_apps/publications/admin.py85
-rw-r--r--app/unused_apps/publications/migrations/0001_initial.py73
-rw-r--r--app/unused_apps/publications/migrations/0002_editor_section.py18
-rw-r--r--app/unused_apps/publications/migrations/0003_auto_20190131_0923.py37
-rw-r--r--app/unused_apps/publications/migrations/0004_pitchidea.py28
-rw-r--r--app/unused_apps/publications/migrations/0005_auto_20190131_1100.py23
-rw-r--r--app/unused_apps/publications/migrations/0006_auto_20190222_1819.py33
-rw-r--r--app/unused_apps/publications/migrations/__init__.py0
-rw-r--r--app/unused_apps/publications/models.py133
-rw-r--r--app/unused_apps/publications/urls.py24
-rw-r--r--app/unused_apps/publications/views.py20
12 files changed, 474 insertions, 0 deletions
diff --git a/app/unused_apps/publications/__init__.py b/app/unused_apps/publications/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/app/unused_apps/publications/__init__.py
diff --git a/app/unused_apps/publications/admin.py b/app/unused_apps/publications/admin.py
new file mode 100644
index 0000000..15456d5
--- /dev/null
+++ b/app/unused_apps/publications/admin.py
@@ -0,0 +1,85 @@
+from django.contrib import admin
+from utils.widgets import LGEntryForm
+
+from .models import Publication, Editor, Pitch, Section, PitchIdea
+
+
+@admin.register(Publication)
+class PublicationAdmin(admin.ModelAdmin):
+ form = LGEntryForm
+ list_display = ('name', 'status')
+ list_filter = ('status',)
+ search_fields = ['name']
+ fieldsets = (
+ ('', {
+ 'fields': (
+ 'name',
+ 'url',
+ 'notes',
+ ('section', 'tags'),
+ ('pays', 'pays_amount'),
+ ('submission_period_start', 'submission_period_end'),
+ 'status'
+ ),
+ 'classes': ('show', 'extrapretty', 'wide')
+ }),
+ )
+
+
+@admin.register(Editor)
+class EditorAdmin(admin.ModelAdmin):
+ list_display = ('last_name', 'first_name', 'publication', 'sections')
+ list_filter = ('publication', 'section')
+ search_fields = ['first_name', 'last_name', 'publication__name', 'section']
+ filter_horizontal = ('section',)
+
+ def sections(self, obj):
+ return [section for section in obj.section.all()]
+ sections.boolean = False
+
+ fieldsets = (
+ ('', {
+ 'fields': ('first_name', 'last_name', 'email', 'publication', 'section', 'notes', 'phone', 'twitter'),
+ 'classes': ('show', 'extrapretty', 'wide')
+ }),
+ )
+
+
+@admin.register(Pitch)
+class PitchAdmin(admin.ModelAdmin):
+ list_display = ('title', 'date_sent', 'accepted', 'editor', 'publication')
+ list_filter = ('editor__publication', 'editor__section')
+
+ def publication(self, obj):
+ return obj.editor.publication
+ publication.boolean = False
+
+ fieldsets = (
+ ('', {
+ 'fields': ('title', 'pitch', 'editor', 'accepted', 'date_sent'),
+ 'classes': ('show', 'extrapretty', 'wide')
+ }),
+ )
+
+
+@admin.register(PitchIdea)
+class PitchIdeaAdmin(admin.ModelAdmin):
+ list_display = ('title', )
+
+ fieldsets = (
+ ('', {
+ 'fields': ('title', 'pitch', 'publication'),
+ 'classes': ('show', 'extrapretty', 'wide')
+ }),
+ )
+
+
+@admin.register(Section)
+class SectionAdmin(admin.ModelAdmin):
+ list_display = ('name',)
+ fieldsets = (
+ ('', {
+ 'fields': ('name',),
+ 'classes': ('show', 'extrapretty', 'wide')
+ }),
+ )
diff --git a/app/unused_apps/publications/migrations/0001_initial.py b/app/unused_apps/publications/migrations/0001_initial.py
new file mode 100644
index 0000000..9212571
--- /dev/null
+++ b/app/unused_apps/publications/migrations/0001_initial.py
@@ -0,0 +1,73 @@
+# Generated by Django 2.1.1 on 2019-01-31 08:56
+
+from django.db import migrations, models
+import django.db.models.deletion
+import taggit.managers
+
+
+class Migration(migrations.Migration):
+
+ initial = True
+
+ dependencies = [
+ ('taxonomy', '0001_initial'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='Editor',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('first_name', models.CharField(max_length=250)),
+ ('last_name', models.CharField(max_length=250)),
+ ('email', models.CharField(blank=True, max_length=250)),
+ ('phone', models.CharField(blank=True, max_length=250)),
+ ('twitter', models.CharField(blank=True, max_length=250)),
+ ('slug', models.SlugField(blank=True)),
+ ('notes', models.TextField(blank=True)),
+ ('date_created', models.DateTimeField(auto_now_add=True)),
+ ('date_updated', models.DateTimeField(auto_now=True)),
+ ],
+ options={
+ 'ordering': ('-last_name', '-date_created'),
+ },
+ ),
+ migrations.CreateModel(
+ name='Pitch',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('title', models.CharField(max_length=250)),
+ ('pitch', models.TextField()),
+ ('slug', models.SlugField(blank=True)),
+ ('accepted', models.BooleanField(blank=True, null=True)),
+ ('date_sent', models.DateTimeField(blank=True, null=True)),
+ ('date_created', models.DateTimeField(auto_now_add=True)),
+ ('date_updated', models.DateTimeField(auto_now=True)),
+ ('editor', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='publications.Editor')),
+ ],
+ options={
+ 'ordering': ('-title', '-date_sent'),
+ },
+ ),
+ migrations.CreateModel(
+ name='Publication',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(max_length=250)),
+ ('slug', models.SlugField(blank=True, unique_for_date='pub_date')),
+ ('notes', models.TextField(blank=True)),
+ ('status', models.IntegerField(choices=[(0, 'Have Published With'), (1, 'Published')], default=0)),
+ ('date_created', models.DateTimeField(auto_now_add=True)),
+ ('date_updated', models.DateTimeField(auto_now=True)),
+ ('tags', taggit.managers.TaggableManager(blank=True, help_text='Topics Covered', through='taxonomy.TaggedItems', to='taxonomy.LuxTag', verbose_name='Tags')),
+ ],
+ options={
+ 'ordering': ('-name', '-date_created'),
+ },
+ ),
+ migrations.AddField(
+ model_name='editor',
+ name='publication',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='publications.Publication'),
+ ),
+ ]
diff --git a/app/unused_apps/publications/migrations/0002_editor_section.py b/app/unused_apps/publications/migrations/0002_editor_section.py
new file mode 100644
index 0000000..a4675ae
--- /dev/null
+++ b/app/unused_apps/publications/migrations/0002_editor_section.py
@@ -0,0 +1,18 @@
+# Generated by Django 2.1.1 on 2019-01-31 09:00
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('publications', '0001_initial'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='editor',
+ name='section',
+ field=models.CharField(blank=True, max_length=50),
+ ),
+ ]
diff --git a/app/unused_apps/publications/migrations/0003_auto_20190131_0923.py b/app/unused_apps/publications/migrations/0003_auto_20190131_0923.py
new file mode 100644
index 0000000..6844c55
--- /dev/null
+++ b/app/unused_apps/publications/migrations/0003_auto_20190131_0923.py
@@ -0,0 +1,37 @@
+# Generated by Django 2.1.1 on 2019-01-31 09:23
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('publications', '0002_editor_section'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='Section',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(max_length=250)),
+ ('slug', models.SlugField(blank=True)),
+ ('date_created', models.DateTimeField(auto_now_add=True)),
+ ('date_updated', models.DateTimeField(auto_now=True)),
+ ],
+ ),
+ migrations.RemoveField(
+ model_name='editor',
+ name='section',
+ ),
+ migrations.AlterField(
+ model_name='publication',
+ name='status',
+ field=models.IntegerField(choices=[(0, 'Not Published'), (1, 'Published')], default=0),
+ ),
+ migrations.AddField(
+ model_name='editor',
+ name='section',
+ field=models.ManyToManyField(blank=True, to='publications.Section'),
+ ),
+ ]
diff --git a/app/unused_apps/publications/migrations/0004_pitchidea.py b/app/unused_apps/publications/migrations/0004_pitchidea.py
new file mode 100644
index 0000000..db72d58
--- /dev/null
+++ b/app/unused_apps/publications/migrations/0004_pitchidea.py
@@ -0,0 +1,28 @@
+# Generated by Django 2.1.1 on 2019-01-31 10:46
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('publications', '0003_auto_20190131_0923'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='PitchIdea',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('title', models.CharField(max_length=250)),
+ ('pitch', models.TextField()),
+ ('date_created', models.DateTimeField(auto_now_add=True)),
+ ('date_updated', models.DateTimeField(auto_now=True)),
+ ('publication', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='publications.Publication')),
+ ],
+ options={
+ 'ordering': ('-title', '-date_created'),
+ },
+ ),
+ ]
diff --git a/app/unused_apps/publications/migrations/0005_auto_20190131_1100.py b/app/unused_apps/publications/migrations/0005_auto_20190131_1100.py
new file mode 100644
index 0000000..a800dcf
--- /dev/null
+++ b/app/unused_apps/publications/migrations/0005_auto_20190131_1100.py
@@ -0,0 +1,23 @@
+# Generated by Django 2.1.1 on 2019-01-31 11:00
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('publications', '0004_pitchidea'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='publication',
+ name='section',
+ field=models.ManyToManyField(blank=True, to='publications.Section'),
+ ),
+ migrations.AddField(
+ model_name='publication',
+ name='url',
+ field=models.CharField(blank=True, max_length=250),
+ ),
+ ]
diff --git a/app/unused_apps/publications/migrations/0006_auto_20190222_1819.py b/app/unused_apps/publications/migrations/0006_auto_20190222_1819.py
new file mode 100644
index 0000000..8c779dd
--- /dev/null
+++ b/app/unused_apps/publications/migrations/0006_auto_20190222_1819.py
@@ -0,0 +1,33 @@
+# Generated by Django 2.1.5 on 2019-02-22 18:19
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('publications', '0005_auto_20190131_1100'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='publication',
+ name='pays',
+ field=models.BooleanField(default=True),
+ ),
+ migrations.AddField(
+ model_name='publication',
+ name='pays_amount',
+ field=models.CharField(blank=True, max_length=100),
+ ),
+ migrations.AddField(
+ model_name='publication',
+ name='submission_period_end',
+ field=models.DateField(blank=True, null=True),
+ ),
+ migrations.AddField(
+ model_name='publication',
+ name='submission_period_start',
+ field=models.DateField(blank=True, null=True),
+ ),
+ ]
diff --git a/app/unused_apps/publications/migrations/__init__.py b/app/unused_apps/publications/migrations/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/app/unused_apps/publications/migrations/__init__.py
diff --git a/app/unused_apps/publications/models.py b/app/unused_apps/publications/models.py
new file mode 100644
index 0000000..05f7267
--- /dev/null
+++ b/app/unused_apps/publications/models.py
@@ -0,0 +1,133 @@
+from django.contrib.gis.db import models
+from django.utils import timezone
+from django.utils.text import slugify
+from django.urls import reverse
+
+from taggit.managers import TaggableManager
+
+from taxonomy.models import TaggedItems
+
+
+class Section(models.Model):
+ """ Generic model for Categories """
+ name = models.CharField(max_length=250)
+ slug = models.SlugField(blank=True)
+ date_created = models.DateTimeField(blank=True, auto_now_add=True, editable=False)
+ date_updated = models.DateTimeField(blank=True, auto_now=True, editable=False)
+
+ def __str__(self):
+ return self.name
+
+ def save(self, *args, **kwargs):
+ if self._state.adding:
+ self.slug = slugify(self.name)[:50]
+ super(Section, self).save()
+
+
+class Publication(models.Model):
+ name = models.CharField(max_length=250)
+ url = models.CharField(max_length=250, blank=True)
+ section = models.ManyToManyField(Section, blank=True)
+ slug = models.SlugField(unique_for_date='pub_date', blank=True)
+ notes = models.TextField(blank=True)
+ tags = TaggableManager(through=TaggedItems, blank=True, help_text='Topics Covered')
+ PUB_STATUS = (
+ (0, 'Not Published'),
+ (1, 'Published'),
+ )
+ status = models.IntegerField(choices=PUB_STATUS, default=0)
+ date_created = models.DateTimeField(blank=True, auto_now_add=True, editable=False)
+ date_updated = models.DateTimeField(blank=True, auto_now=True, editable=False)
+ pays = models.BooleanField(default=True)
+ pays_amount = models.CharField(max_length=100, blank=True)
+ submission_period_start = models.DateField(blank=True, null=True)
+ submission_period_end = models.DateField(blank=True, null=True)
+
+ class Meta:
+ ordering = ('-name', '-date_created')
+
+ def __str__(self):
+ return self.name
+
+ def get_absolute_url(self):
+ return reverse("publications:pub-detail", kwargs={"slug": self.slug})
+
+ def save(self, *args, **kwargs):
+ if not self.id:
+ self.date_created = timezone.now()
+ self.date_updated = timezone.now()
+ super(Publication, self).save()
+
+
+class Editor(models.Model):
+ first_name = models.CharField(max_length=250)
+ last_name = models.CharField(max_length=250)
+ email = models.CharField(max_length=250, blank=True)
+ phone = models.CharField(max_length=250, blank=True)
+ twitter = models.CharField(max_length=250, blank=True)
+ slug = models.SlugField(blank=True)
+ notes = models.TextField(blank=True)
+ publication = models.ForeignKey(Publication, on_delete=models.SET_NULL, blank=True, null=True)
+ section = models.ManyToManyField(Section, blank=True)
+ date_created = models.DateTimeField(blank=True, auto_now_add=True, editable=False)
+ date_updated = models.DateTimeField(blank=True, auto_now=True, editable=False)
+
+ class Meta:
+ ordering = ('-last_name', '-date_created')
+
+ def __str__(self):
+ return "{0} {1}".format(self.first_name, self.last_name)
+
+ def get_absolute_url(self):
+ return reverse("publications:pub-detail", kwargs={"slug": self.slug})
+
+ def save(self, *args, **kwargs):
+ if self._state.adding:
+ self.slug = slugify('%s %s' % (self.first_name, self.last_name))[:50]
+ self.date_created = timezone.now()
+ self.date_updated = timezone.now()
+ super(Editor, self).save()
+
+
+class Pitch(models.Model):
+ title = models.CharField(max_length=250)
+ pitch = models.TextField()
+ slug = models.SlugField(blank=True)
+ editor = models.ForeignKey(Editor, on_delete=models.SET_NULL, blank=True, null=True)
+ accepted = models.BooleanField(null=True, blank=True)
+ date_sent = models.DateTimeField(blank=True, null=True)
+ date_created = models.DateTimeField(blank=True, auto_now_add=True, editable=False)
+ date_updated = models.DateTimeField(blank=True, auto_now=True, editable=False)
+
+ class Meta:
+ ordering = ('-title', '-date_sent')
+
+ def __str__(self):
+ return self.title
+
+ def save(self, *args, **kwargs):
+ if self._state.adding:
+ self.slug = slugify(self.title)[:50]
+ self.date_created = timezone.now()
+ self.date_updated = timezone.now()
+ super(Pitch, self).save()
+
+
+class PitchIdea(models.Model):
+ title = models.CharField(max_length=250)
+ pitch = models.TextField()
+ publication = models.ForeignKey(Publication, on_delete=models.SET_NULL, blank=True, null=True)
+ date_created = models.DateTimeField(blank=True, auto_now_add=True, editable=False)
+ date_updated = models.DateTimeField(blank=True, auto_now=True, editable=False)
+
+ class Meta:
+ ordering = ('-title', '-date_created')
+
+ def __str__(self):
+ return self.title
+
+ def save(self, *args, **kwargs):
+ if self._state.adding:
+ self.date_created = timezone.now()
+ self.date_updated = timezone.now()
+ super(PitchIdea, self).save()
diff --git a/app/unused_apps/publications/urls.py b/app/unused_apps/publications/urls.py
new file mode 100644
index 0000000..3f43b32
--- /dev/null
+++ b/app/unused_apps/publications/urls.py
@@ -0,0 +1,24 @@
+from django.urls import path
+
+from . import views
+
+app_name = "publications"
+
+urlpatterns = [
+ path(
+ r'',
+ views.PubListView.as_view(),
+ {'page': 1},
+ name="list"
+ ),
+ path(
+ r'<int:page>/',
+ views.PubListView.as_view(),
+ name="list"
+ ),
+ path(
+ r'<str:slug>',
+ views.PubsDetailView.as_view(),
+ name="pub-detail"
+ ),
+]
diff --git a/app/unused_apps/publications/views.py b/app/unused_apps/publications/views.py
new file mode 100644
index 0000000..0398dcb
--- /dev/null
+++ b/app/unused_apps/publications/views.py
@@ -0,0 +1,20 @@
+from django.views.generic.detail import DetailView
+
+from utils.views import PaginatedListView
+
+from .models import Publication
+
+
+class PubListView(PaginatedListView):
+ """
+ Return a list of Publications
+ """
+ queryset = Publication.objects.all()
+
+
+class PubDetailView(DetailView):
+ """
+ Return a detail view of Publication
+ """
+ model = Publication
+ slug_field = "slug"