Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fb login #85

Merged
merged 34 commits into from Jul 22, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
7a28ee0
seo data added
Jul 18, 2016
c940236
Merge branch 'master' of github.com:MicroPyramid/django-blog-it into …
Jul 18, 2016
a377fd5
merge conflicts solved
Jul 18, 2016
9f985bf
FBV to CBV
Jul 18, 2016
f3f1962
test cases fixed
Jul 18, 2016
e161b3b
converted fbv to cbv
Jul 19, 2016
2375520
merge conflicts resolved
Jul 19, 2016
7cdcad8
travis fixed
Jul 19, 2016
91a71e7
migrations added
Jul 19, 2016
621a797
new migrations added
Jul 19, 2016
f72b836
redirected to dashboard blog page if user already logged in
Jul 20, 2016
dcbfa61
merge conflicts solved
Jul 20, 2016
7f6aad7
migrations changed
Jul 20, 2016
f71db38
sharing blog post in fb, g+, tw, Linkdin
Jul 20, 2016
07910fd
merge conflicts solved
Jul 20, 2016
5dcc776
share links added in new blog post view page
Jul 20, 2016
fc6c6fd
test case fixed
Jul 20, 2016
ec7a50e
meta data included in new_base.html
Jul 20, 2016
4ee57e2
Merge branch 'master' of github.com:MicroPyramid/django-blog-it into …
Jul 20, 2016
04098a0
google captcha added to blog contact page
Jul 20, 2016
70d918c
google analytics code added
Jul 20, 2016
4b71b61
Merge branch 'master' of github.com:MicroPyramid/django-blog-it into …
Jul 20, 2016
be8ccd5
email sent to admin and user contact us page
Jul 20, 2016
19bbfbd
Merge branch 'master' of github.com:MicroPyramid/django-blog-it into …
Jul 20, 2016
25efe92
favicon added
Jul 21, 2016
55b4ea8
merge conflict solved
Jul 21, 2016
8fad5a2
link added
Jul 21, 2016
007fbe2
Merge branch 'master' of github.com:MicroPyramid/django-blog-it into …
Jul 21, 2016
dd9aad5
Merge branch 'master' of github.com:MicroPyramid/django-blog-it into …
Jul 22, 2016
0e0e949
google login added
Jul 22, 2016
f42f5ca
migrations added
Jul 22, 2016
3523d81
Merge branch 'master' of github.com:MicroPyramid/django-blog-it into …
Jul 22, 2016
f8c30f9
login with fb [blog author]
Jul 22, 2016
6459b53
email sent to all admins on creation of blog post
Jul 22, 2016
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
14 changes: 8 additions & 6 deletions django_blog_it/django_blog_it/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,25 +68,27 @@ class Meta:
exclude = ('slug', 'user', 'tags')

def __init__(self, *args, **kwargs):
self.is_superuser = kwargs.pop('is_superuser', None)
self.user_role = kwargs.pop('user_role', None)
super(BlogPostForm, self).__init__(*args, **kwargs)
if self.is_superuser or self.user_role != 'Author':
pass
else:

if self.user_role == 'Author':
del self.fields['status']
for field in iter(self.fields):

for field in iter(self.fields):
if field == 'tags':
self.fields[field].widget.attrs.update({
'class': 'form-control myTags', "placeholder": "Please enter your Blog " + field.capitalize()
})

else:
self.fields[field].widget.attrs.update({
'class': 'form-control', "placeholder": "Please enter your Blog " + field.capitalize()
})

def clean_status(self):
if self.user_role == "Author":
raise forms.ValidationError("Admin and Publisher can change status only.")
return self.cleaned_data.get("status")


class BlogCategoryForm(forms.ModelForm):
class Meta:
Expand Down
39 changes: 39 additions & 0 deletions django_blog_it/django_blog_it/migrations/0013_facebook.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.6 on 2016-07-22 09:45
from __future__ import unicode_literals

from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('django_blog_it', '0012_auto_20160722_0657'),
]

operations = [
migrations.CreateModel(
name='Facebook',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('facebook_id', models.CharField(max_length=100)),
('facebook_url', models.CharField(default='', max_length=200)),
('first_name', models.CharField(default='', max_length=200)),
('last_name', models.CharField(default='', max_length=200)),
('verified', models.CharField(default='', max_length=200)),
('name', models.CharField(default='', max_length=200)),
('language', models.CharField(default='', max_length=200)),
('hometown', models.CharField(default='', max_length=200)),
('email', models.CharField(db_index=True, default='', max_length=200)),
('gender', models.CharField(default='', max_length=200)),
('dob', models.DateField(blank=True, null=True)),
('location', models.CharField(default='', max_length=200)),
('timezone', models.CharField(default='', max_length=200)),
('accesstoken', models.CharField(default='', max_length=2000)),
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='facebook', to=settings.AUTH_USER_MODEL)),
],
),
]
78 changes: 59 additions & 19 deletions django_blog_it/django_blog_it/models.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,29 @@
import datetime
import os
from django.db import models
from django.template.defaultfilters import slugify
from django.conf import settings
from django.core.exceptions import ObjectDoesNotExist
from django.core.mail import send_mail


ROLE_CHOICE = (
('Admin', 'Admin'),
('Publisher', 'Publisher'),
('Author', 'Author'),
)

STATUS_CHOICE = (
('Drafted', 'Drafted'),
('Published', 'Published'),
('Rejected', 'Rejected'),
('Trashed', 'Trashed'),
)


class UserRole(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL)
role = models.CharField(max_length=10, choices=STATUS_CHOICE)


class Theme(models.Model):
Expand Down Expand Up @@ -68,14 +89,6 @@ def create_tag_slug(tempslug):
return tempslug


STATUS_CHOICE = (
('Drafted', 'Drafted'),
('Published', 'Published'),
('Rejected', 'Rejected'),
('Trashed', 'Trashed'),
)


class Post(models.Model):
title = models.CharField(max_length=100, unique=True)
slug = models.SlugField(max_length=100, unique=True)
Expand All @@ -98,6 +111,7 @@ def save(self, *args, **kwargs):
self.slug = create_slug(tempslug)
else:
self.slug = create_slug(tempslug)
self.email_to_admins_on_post_create()

super(Post, self).save(*args, **kwargs)

Expand All @@ -122,6 +136,22 @@ def create_activity_instance(self, user, content):
def remove_activity(self):
self.history.all().delete()

def email_to_admins_on_post_create(self):
email = os.getenv("DEFAULT_EMAIL")
if not self.id and email:
admin_roles = UserRole.objects.select_related().filter(role="Admin")
admin_emails = [admin_role.user.email for admin_role in admin_roles]
user = self.user
author_name = user.first_name + user.last_name if user.first_name else user.email
text = "New blog post has been created by {0} with the name {1} in the category {2}.".format(author_name, self.title, self.category.name)
print(send_mail(
subject="New Blog Post created",
message=text,
from_email=email,
recipient_list=admin_emails,
fail_silently=False,
))


def create_slug(tempslug):
slugcount = 0
Expand Down Expand Up @@ -157,17 +187,6 @@ class Image_File(models.Model):
def __str__(self):
return self.date_created

ROLE_CHOICE = (
('Admin', 'Admin'),
('Publisher', 'Publisher'),
('Author', 'Author'),
)


class UserRole(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL)
role = models.CharField(max_length=10, choices=STATUS_CHOICE)


class Page(models.Model):
title = models.CharField(max_length=100)
Expand Down Expand Up @@ -236,3 +255,24 @@ class Google(models.Model):

def __str__(self):
return self.email


class Facebook(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='facebook')
facebook_id = models.CharField(max_length=100)
facebook_url = models.CharField(max_length=200, default='')
first_name = models.CharField(max_length=200, default='')
last_name = models.CharField(max_length=200, default='')
verified = models.CharField(max_length=200, default='')
name = models.CharField(max_length=200, default='')
language = models.CharField(max_length=200, default='')
hometown = models.CharField(max_length=200, default='')
email = models.CharField(max_length=200, default='', db_index=True)
gender = models.CharField(max_length=200, default='')
dob = models.DateField(null=True, blank=True)
location = models.CharField(max_length=200, default='')
timezone = models.CharField(max_length=200, default='')
accesstoken = models.CharField(max_length=2000, default='')

def __str__(self):
return self.email
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
</div>
{% endif %}
{% endfor %}
{% if form.instance.id %}
<div class="form-group">
<label>History:</label>
<div class="controls">
Expand All @@ -45,6 +46,7 @@
<p class="help-inline"><small>Revert to previous edits</small></p>
</div>
</div>
{% endif %}
</div>
<div class="col-md-6">
{% for field in form %}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@
{% if blog|is_deletable_by:request.user or request.user|get_user_role_name != 'Author' %}
<a href="{% url 'edit_blog' blog_slug=blog.slug %}" class="edit"><i class="fa fa-edit"></i> Edit</a>
{% endif %}
{% if request.user.is_superuser or request.user|get_user_role_name != 'Author' %}
{% if request.user.is_superuser or request.user|get_user_role_name != 'Author' or blog.user == request.user %}
{% ifequal blog.status "Trashed" %}
<a href='#' class="restore manage_blog" action="restore" title="Restore from trash"><i class="fa fa-refresh"></i> Restore</a>
<a href='#' class="delete manage_blog" action="delete" title="Permanently delete from trash" data-confirm="true"><i class="fa fa-trash-o"></i> Delete</a>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@
<div>
<a href="{% url 'google_login' %}"> sign in with Google </a>
</div>
<div>
<a href="{% url 'facebook_login' %}"> sign in with Facebook </a>
</div>
</form>
</div>
</div>
Expand Down