-
Notifications
You must be signed in to change notification settings - Fork 25
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Co-authored-by: Harshith Pabbati <pabbatiharshith@gmail.com>
- Loading branch information
1 parent
9013715
commit cb1d1b0
Showing
6 changed files
with
184 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
from django.contrib import admin | ||
from .models import * | ||
from import_export.admin import ImportExportModelAdmin, ExportActionMixin | ||
|
||
|
||
@admin.register(News) | ||
class NewsAdmin(ImportExportModelAdmin, ExportActionMixin, admin.ModelAdmin): | ||
fieldsets = [ | ||
('Basic Details', { | ||
'fields': [ | ||
('author', 'pinned'), | ||
('title', 'slug', 'cover'), | ||
('date', 'category'), | ||
'tags', | ||
'description' | ||
] | ||
}), | ||
] | ||
list_display = ('title', 'category', 'pinned') | ||
list_filter = ('category', 'pinned', 'tags') | ||
|
||
|
||
@admin.register(Tag) | ||
class TagAdmin(ImportExportModelAdmin, ExportActionMixin, admin.ModelAdmin): | ||
fieldsets = [ | ||
('Basic Details', { | ||
'fields': [ | ||
('name', 'author'), | ||
] | ||
}), | ||
] | ||
|
||
|
||
@admin.register(Category) | ||
class CategoryAdmin(ImportExportModelAdmin, ExportActionMixin, admin.ModelAdmin): | ||
fieldsets = [ | ||
('Basic Details', { | ||
'fields': [ | ||
('name', 'author'), | ||
] | ||
}), | ||
] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
from django.apps import AppConfig | ||
|
||
|
||
class ActivityConfig(AppConfig): | ||
name = 'activity' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
from django.db import models | ||
from datetime import date | ||
import uuid | ||
from django.contrib.auth.models import User | ||
from ckeditor.fields import RichTextField | ||
from imagekit.models import ProcessedImageField | ||
from framework.validators import validate_file_size, processed_image_field_specs | ||
|
||
|
||
class Category(models.Model): | ||
name = models.CharField(max_length=100) | ||
author = models.ForeignKey(User, on_delete=models.PROTECT, related_name='Category_Author', blank=True, null=True) | ||
|
||
class Meta: | ||
verbose_name_plural = "Categories" | ||
verbose_name = "Category" | ||
|
||
def __str__(self): | ||
return self.name | ||
|
||
|
||
class Tag(models.Model): | ||
name = models.CharField(max_length=100) | ||
author = models.ForeignKey(User, on_delete=models.PROTECT, related_name='Tag_Author', blank=True, null=True) | ||
|
||
class Meta: | ||
verbose_name_plural = "Tags" | ||
verbose_name = "Tag" | ||
|
||
def __str__(self): | ||
return self.name | ||
|
||
|
||
class News(models.Model): | ||
def get_poster_path(self, filename): | ||
ext = filename.split('.')[-1] | ||
filename = "%s.%s" % (uuid.uuid4(), ext) | ||
return 'static/uploads/news/cover/' + filename | ||
|
||
title = models.CharField(max_length=100) | ||
slug = models.SlugField() | ||
author = models.ForeignKey(User, on_delete=models.PROTECT, related_name='news_author', blank=True, null=True) | ||
pinned = models.BooleanField(default=False) | ||
cover = ProcessedImageField(default='', verbose_name='News Poster', upload_to=get_poster_path, validators=[validate_file_size], **processed_image_field_specs) | ||
date = models.DateField(default=date.today) | ||
category = models.ForeignKey(Category, on_delete=models.PROTECT, related_name='category_author', blank=True, null=True) | ||
tags = models.ManyToManyField(Tag, related_name='tags') | ||
description = RichTextField(max_length=1000, null=True, blank=True) | ||
|
||
class Meta: | ||
verbose_name = "News" | ||
verbose_name_plural = "News" | ||
|
||
def __str__(self): | ||
return self.title |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,79 @@ | ||
import graphene | ||
from .models import * | ||
from framework.api.user import UserBasicObj | ||
from django.db.models import F | ||
|
||
|
||
class CategoryObj(graphene.ObjectType): | ||
name = graphene.String() | ||
author = graphene.Field(UserBasicObj) | ||
|
||
def resolve_name(self, info): | ||
return self['name'] | ||
|
||
def resolve_author(self, info): | ||
return User.objects.values().get(id=self['author_id']) | ||
|
||
|
||
class TagObj(graphene.ObjectType): | ||
name = graphene.String() | ||
|
||
def resolve_name(self, info): | ||
return self['name'] | ||
|
||
|
||
class NewsObj(graphene.ObjectType): | ||
title = graphene.String(required=True) | ||
slug = graphene.String(required=True) | ||
author = graphene.Field(UserBasicObj) | ||
date = graphene.Date(required=True) | ||
category = graphene.Field(CategoryObj) | ||
tags = graphene.List(TagObj) | ||
pinned = graphene.Boolean() | ||
description = graphene.String(required=True) | ||
|
||
def resolve_title(self, info): | ||
return self['title'] | ||
|
||
def resolve_slug(self, info): | ||
return self['slug'] | ||
|
||
def resolve_author(self, info): | ||
return User.objects.values().get(id=self['author_id']) | ||
|
||
def resolve_date(self, info): | ||
return self['date'] | ||
|
||
def resolve_pinned(self, info): | ||
return self['pinned'] | ||
|
||
def resolve_category(self, info): | ||
return Category.objects.values().get(id=self['category_id']) | ||
|
||
@graphene.resolve_only_args | ||
def resolve_tags(self): | ||
return News.objects.values().annotate( | ||
name=F('tags__name'), | ||
).filter(id=self['id']) | ||
|
||
|
||
class Query(graphene.ObjectType): | ||
news = graphene.List(NewsObj, slug=graphene.String()) | ||
tags = graphene.List(TagObj) | ||
categories = graphene.List(CategoryObj) | ||
|
||
def resolve_news(self, info, **kwargs): | ||
slug = kwargs.get('slug') | ||
if slug is not None: | ||
return News.objects.values().get(slug=slug) | ||
else: | ||
return News.objects.values().all() | ||
|
||
def resolve_tags(self, info): | ||
return Tag.objects.values().all() | ||
|
||
def resolve_categories(self, info): | ||
return Category.objects.values().all() | ||
|
||
|
||
schema = graphene.Schema(query=Query) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters