diff options
Diffstat (limited to 'app/unused_apps/publications')
-rw-r--r-- | app/unused_apps/publications/__init__.py | 0 | ||||
-rw-r--r-- | app/unused_apps/publications/admin.py | 85 | ||||
-rw-r--r-- | app/unused_apps/publications/migrations/0001_initial.py | 73 | ||||
-rw-r--r-- | app/unused_apps/publications/migrations/0002_editor_section.py | 18 | ||||
-rw-r--r-- | app/unused_apps/publications/migrations/0003_auto_20190131_0923.py | 37 | ||||
-rw-r--r-- | app/unused_apps/publications/migrations/0004_pitchidea.py | 28 | ||||
-rw-r--r-- | app/unused_apps/publications/migrations/0005_auto_20190131_1100.py | 23 | ||||
-rw-r--r-- | app/unused_apps/publications/migrations/0006_auto_20190222_1819.py | 33 | ||||
-rw-r--r-- | app/unused_apps/publications/migrations/__init__.py | 0 | ||||
-rw-r--r-- | app/unused_apps/publications/models.py | 133 | ||||
-rw-r--r-- | app/unused_apps/publications/urls.py | 24 | ||||
-rw-r--r-- | app/unused_apps/publications/views.py | 20 |
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" |