Skip to content

Commit

Permalink
Revert "Unpublish Project Feature (#459)"
Browse files Browse the repository at this point in the history
This reverts commit f73bf35.
  • Loading branch information
ajain1921 committed May 10, 2022
1 parent f73bf35 commit d5eade1
Show file tree
Hide file tree
Showing 32 changed files with 221 additions and 1,181 deletions.
1 change: 0 additions & 1 deletion zubhub_backend/compose/web/dev/start
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ python /zubhub_backend/zubhub/manage.py createcachetable

python /zubhub_backend/zubhub/manage.py populate_countries
python /zubhub_backend/zubhub/manage.py populate_categories
python /zubhub_backend/zubhub/manage.py populate_violation_reasons
python /zubhub_backend/zubhub/manage.py populate_initial_creator_tags

exec /usr/local/bin/gunicorn zubhub.wsgi --reload --threads=3 --timeout 155 --bind 0.0.0.0:8000 \
Expand Down

This file was deleted.

51 changes: 22 additions & 29 deletions zubhub_backend/zubhub/creators/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,6 @@ def activity_notification(activities, **kwargs):
if len(phone_contexts) > 0 and ctx_values:
send_mass_text.delay(template_name=template_name, ctxs=phone_contexts)


def perform_creator_search(user, query_string):
from creators.models import CreatorTag
"""
Expand All @@ -255,28 +254,28 @@ def perform_creator_search(user, query_string):
rank = SearchRank(F('search_vector'), query)
result_creators = None


# fetch all creators whose creatortag(s) matches the search query
result_tags = CreatorTag.objects.filter(
search_vector=query).prefetch_related("creators")

for tag in result_tags:
result_creators = tag.creators.filter(is_active=True).annotate(
rank=rank).order_by('-rank')
result_creators = tag.creators.filter(is_active=True).annotate(rank=rank).order_by('-rank')
############################################################

# fetch all creators that matches the search term
if result_creators:
result_creators.union(get_user_model().objects.annotate(
rank=rank).filter(search_vector=query,
is_active=True).order_by('-rank'))
result_creators.union(get_user_model().objects.annotate(rank=rank).filter(
search_vector=query, is_active=True ).order_by('-rank'))
else:
result_creators = get_user_model().objects.annotate(rank=rank).filter(
search_vector=query, is_active=True).order_by('-rank')
search_vector=query,is_active=True ).order_by('-rank')
##############################################################

return result_creators



def custom_set_creatortags_queryset(creator, creatortags):
"""
Handle the process of assigning a queryset of creatortags to creator.tags
Expand All @@ -299,26 +298,22 @@ def custom_set_creatortags_queryset(creator, creatortags):

tag = CreatorTag.objects.filter(name="staff").first()
if creatortags.filter(name=tag.name).exists():
creator.tags.set(
enforce_creator__creator_tags_constraints(creator, tag))
creator.tags.set(enforce_creator__creator_tags_constraints(creator, tag))
creatortags = creatortags.exclude(name=tag.name)

tag = CreatorTag.objects.filter(name="moderator").first()
if creatortags.filter(name=tag.name).exists():
creator.tags.set(
enforce_creator__creator_tags_constraints(creator, tag))
creator.tags.set(enforce_creator__creator_tags_constraints(creator, tag))
creatortags = creatortags.exclude(name=tag.name)

tag = CreatorTag.objects.filter(name="group").first()
if creatortags.filter(name=tag.name).exists():
creator.tags.set(
enforce_creator__creator_tags_constraints(creator, tag))
creator.tags.set(enforce_creator__creator_tags_constraints(creator, tag))
creatortags = creatortags.exclude(name=tag.name)

tag = CreatorTag.objects.filter(name="creator").first()
if creatortags.filter(name=tag.name).exists():
creator.tags.set(
enforce_creator__creator_tags_constraints(creator, tag))
creator.tags.set(enforce_creator__creator_tags_constraints(creator, tag))
creatortags = creatortags.exclude(name=tag.name)


Expand All @@ -341,29 +336,25 @@ def enforce_creator__creator_tags_constraints(creator, tag):

if tag.name == "creator":
""" If tag is 'creator', ensure that 'staff', 'moderator' and 'group' tags are not in the user's tags list """
diff = CreatorTag.objects.filter(
name__in=["creator", "staff", "group", "moderator"])
diff = CreatorTag.objects.filter(name__in=["creator", "staff", "group", "moderator"])
tags_to_set = creator.tags.difference(diff)
return tags_to_set.union(diff.filter(name=tag.name))

elif tag.name == "staff":
""" If tag is 'staff', ensure that 'creator' and 'group' tags are not in the user's tags list """
diff = CreatorTag.objects.filter(
name__in=["creator", "staff", "group"])
diff = CreatorTag.objects.filter(name__in=["creator", "staff", "group"])
tags_to_set = creator.tags.difference(diff)
return tags_to_set.union(diff.filter(name=tag.name))

elif tag.name == "moderator":
""" If tag is 'moderator', ensure that 'creator' and 'group' tags are not in the user's tags list """
diff = CreatorTag.objects.filter(
name__in=["creator", "group", "moderator"])
diff = CreatorTag.objects.filter(name__in=["creator", "group", "moderator"])
tags_to_set = creator.tags.difference(diff)
return tags_to_set.union(diff.filter(name=tag.name))

elif tag.name == "group":
""" If tag is 'group', ensure that 'staff', 'creator' and 'moderator' tags are not in the user's tags list """
diff = CreatorTag.objects.filter(
name__in=["creator", "staff", "group", "moderator"])
diff = CreatorTag.objects.filter(name__in=["creator", "staff", "group", "moderator"])
tags_to_set = creator.tags.difference(diff)
return tags_to_set.union(diff.filter(name=tag.name))

Expand All @@ -377,14 +368,16 @@ def enforce_creator__creator_tags_constraints(creator, tag):
return creator.tags.all()


ALL_SETTINGS = {Setting.WHATSAPP, Setting.EMAIL, Setting.SMS, Setting.WEB}

enabled_notification_settings: Dict[Notification.Type, Set[int]] = {
Notification.Type.BOOKMARK: {Setting.WEB},
Notification.Type.CLAP: {Setting.WEB},
Notification.Type.COMMENT: ALL_SETTINGS,
Notification.Type.FOLLOW: ALL_SETTINGS,
Notification.Type.FOLLOWING_PROJECT: ALL_SETTINGS,
Notification.Type.PROJECT_VIOLATION: ALL_SETTINGS
Notification.Type.COMMENT:
{Setting.WHATSAPP, Setting.EMAIL, Setting.SMS, Setting.WEB},
Notification.Type.FOLLOW:
{Setting.WHATSAPP, Setting.EMAIL, Setting.SMS, Setting.WEB},
Notification.Type.FOLLOWING_PROJECT:
{Setting.WHATSAPP, Setting.EMAIL, Setting.SMS, Setting.WEB},
}


Expand Down

This file was deleted.

23 changes: 8 additions & 15 deletions zubhub_backend/zubhub/notifications/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,28 +6,21 @@


class Notification(models.Model):

class Type(models.IntegerChoices):
BOOKMARK = 1
CLAP = 2
COMMENT = 3
FOLLOW = 4
FOLLOWING_PROJECT = 5
PROJECT_VIOLATION = 6

id = models.UUIDField(primary_key=True,
default=uuid.uuid4,
editable=False,
unique=True)
type = models.PositiveSmallIntegerField(choices=Type.choices, )
recipient = models.ForeignKey(Creator,
on_delete=models.CASCADE,
null=True,
related_name="notification_recipient",
blank=True)
sources = models.ManyToManyField(Creator,
related_name='notification_source',
blank=True)
id = models.UUIDField(
primary_key=True, default=uuid.uuid4, editable=False, unique=True)
type = models.PositiveSmallIntegerField(
choices=Type.choices,
)
recipient = models.ForeignKey(
Creator, on_delete=models.CASCADE, null=True, related_name="notification_recipient", blank=True)
sources = models.ManyToManyField(Creator, related_name='notification_source', blank=True)
message = models.CharField(max_length=255, blank=True, null=True)
link = models.CharField(max_length=1000, blank=True, null=True)
viewed = models.BooleanField(default=False)
Expand Down
64 changes: 21 additions & 43 deletions zubhub_backend/zubhub/projects/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
from treebeard.admin import TreeAdmin
from treebeard.forms import movenodeform_factory
from django.conf import settings
from .models import (Project, Comment, Image, StaffPick, Category, Tag,
PublishingRule, Violation, ViolationReason)
from .models import (Project, Comment, Image, StaffPick,
Category, Tag, PublishingRule)
from .utils import project_changed, send_staff_pick_notification
from projects.tasks import delete_file_task
from creators.utils import activity_notification
Expand All @@ -24,22 +24,20 @@ class InlineProjectComments(admin.StackedInline):
class InlineProject(admin.StackedInline):
model = Project.staff_picks.through


class ImageAdmin(admin.ModelAdmin):
search_fields = ["project__title", "image_url"]
list_display = ["image_url"]
exclude = ["id"]
list_per_page = 50 ## paginate when more than 50 items

list_per_page = 50 ## paginate when more than 50 items

class CommentAdmin(TreeAdmin):
list_display = ["creator", "text", "created_on", "publish"]

search_fields = [
"project__tite", "creator__username", "text", "created_on"
]

search_fields = ["project__tite",
"creator__username", "text", "created_on"]
list_filter = ["created_on"]
list_per_page = 50 ## paginate when more than 50 items
list_per_page = 50 ## paginate when more than 50 items

form = movenodeform_factory(Comment)

Expand All @@ -53,24 +51,18 @@ def get_readonly_fields(self, request, obj=None):


class ProjectAdmin(admin.ModelAdmin):
list_display = [
"title", "creator", "views_count", "likes_count", "comments_count",
"created_on", "publish"
]

search_fields = [
"title", 'creator__username', 'creator__email', "created_on"
]
list_display = ["title", "creator", "views_count", "likes_count",
"comments_count", "created_on", "publish"]

search_fields = ["title", 'creator__username', 'creator__email',
"created_on"]
list_filter = ['created_on']
inlines = [InlineProjectImages, InlineProjectComments]
exclude = ["search_vector"]
list_per_page = 50 ## paginate when more than 50 items
list_per_page = 50 ## paginate when more than 50 items

def get_readonly_fields(self, request, obj=None):
return [
"id", "slug", "views_count", "likes_count", "comments_count",
"created_on"
]
return ["id", "slug", "views_count", "likes_count", "comments_count", "created_on"]

def save_model(self, request, obj, form, change):
if change:
Expand All @@ -80,12 +72,10 @@ def save_model(self, request, obj, form, change):

if change:
new = Project.objects.get(pk=obj.pk)
if old.video.find(
"cloudinary.com") > -1 and old.video != new.video:
if old.video.find("cloudinary.com") > -1 and old.video != new.video:
delete_file_task.delay(old.video)
elif old.video.startswith("{0}://{1}".format(
settings.DEFAULT_MEDIA_SERVER_PROTOCOL, settings.
DEFAULT_MEDIA_SERVER_DOMAIN)) and old.video != new.video:
elif old.video.startswith("{0}://{1}".format(settings.DEFAULT_MEDIA_SERVER_PROTOCOL,
settings.DEFAULT_MEDIA_SERVER_DOMAIN)) and old.video != new.video:
delete_file_task.delay(old.video)
if project_changed(old, new):
info = {
Expand All @@ -95,6 +85,8 @@ def save_model(self, request, obj, form, change):
activity_notification(["edited_project"], **info)




def projects_count(obj):
if obj:
return obj.projects.count()
Expand Down Expand Up @@ -144,19 +136,7 @@ class tagAdmin(admin.ModelAdmin):
search_fields = ["name"]
readonly_fields = ["slug"]
exclude = ["id", "search_vector"]
list_per_page = 50 ## paginate when more than 50 items


class ViolationReasonsAdmin(admin.ModelAdmin):
search_fields = ['description']
exclude = ["id"]
list_per_page = 50


class ViolationAdmin(admin.ModelAdmin):
search_fields = ["name"]
exclude = ["id"]
list_per_page = 50
list_per_page = 50 ## paginate when more than 50 items


admin.site.register(Project, ProjectAdmin)
Expand All @@ -165,5 +145,3 @@ class ViolationAdmin(admin.ModelAdmin):
admin.site.register(Category, categoryAdmin)
admin.site.register(Tag, tagAdmin)
admin.site.register(StaffPick, StaffPickAdmin)
admin.site.register(ViolationReason, ViolationReasonsAdmin)
admin.site.register(Violation, ViolationAdmin)

This file was deleted.

This file was deleted.

Loading

0 comments on commit d5eade1

Please sign in to comment.