Skip to content

Commit

Permalink
Merge pull request #10 from Persice/sprint_48
Browse files Browse the repository at this point in the history
Sprint 48
  • Loading branch information
Andrii Soldatenko committed Aug 24, 2015
2 parents 2d6c9f6 + 817c3d6 commit b6d9010
Show file tree
Hide file tree
Showing 59 changed files with 2,892 additions and 251 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
elastic/
media/
.DS_Store
venv
Expand Down
8 changes: 8 additions & 0 deletions backup.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#!/bin/bash

mkdir -p /Users/apple/work/beKindred.com/backup/
rsync -avzP persice.com:/etc/nginx/ssl /Users/apple/work/beKindred.com/backup/
rsync -avzP persice.com:/etc/nginx/sites-available/bekindred /Users/apple/work/beKindred.com/backup/
rsync -avzP persice.com:/webapps/bekindred/bin/celery_start /Users/apple/work/beKindred.com/backup/
rsync -avzP persice.com:/webapps/bekindred/bin/gunicorn_start /Users/apple/work/beKindred.com/backup/

3 changes: 2 additions & 1 deletion bekindred/events/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
import signals
from __future__ import absolute_import
from events.signals import *
2 changes: 1 addition & 1 deletion bekindred/events/signals.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import uuid
from django.db.models import signals
from events.models import CumulativeMatchScore, Membership
from events.models import Membership
from events.tasks import update_match_score


Expand Down
7 changes: 4 additions & 3 deletions bekindred/events/tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from celery import task
from django.db.models import signals

from events.models import Membership, CumulativeMatchScore
from events.models import Membership, CumulativeMatchScore, Event
from events.utils import calc_score
from members.models import FacebookCustomUserActive

Expand Down Expand Up @@ -31,9 +31,10 @@ def cum_score(event_id):
obj.score = calc_score(user.id, event_id)
obj.save()
except CumulativeMatchScore.DoesNotExist:
CumulativeMatchScore.objects.create(event=event_id, user=user,
event = Event.objects.get(id=event_id)
CumulativeMatchScore.objects.create(event=event, user=user,
score=calc_score(user.id,
event_id))
event))


def update_match_score(instance, **kwargs):
Expand Down
2 changes: 1 addition & 1 deletion bekindred/matchfeed/api/resources.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ class MatchedFeedResource(Resource):
friends_score = fields.IntegerField(attribute='friends_score', null=True)

class Meta:
max_limit = 1
# max_limit = 10
resource_name = 'matchfeed'
authentication = SessionAuthentication()
authorization = Authorization()
Expand Down
31 changes: 30 additions & 1 deletion bekindred/msgs/api/resources.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,10 @@
from tastypie import fields
from tastypie.authentication import SessionAuthentication
from tastypie.authorization import Authorization
from tastypie.constants import ALL_WITH_RELATIONS
from tastypie.resources import ModelResource, Resource
from events.api.resources import EventResource
from events.models import Event
from events.models import Event, Membership

from friends.models import Friend
from matchfeed.api.resources import A
Expand Down Expand Up @@ -202,5 +203,33 @@ class Meta:
allowed_methods = ['get', 'post']
always_return_data = True
fields = ['sender', 'body', 'sent_at']
filtering = {'event': ALL_WITH_RELATIONS}
authentication = SessionAuthentication()
authorization = Authorization()

def dehydrate(self, bundle):
bundle.data['facebook_id'] = bundle.obj.sender.facebook_id
bundle.data['first_name'] = bundle.obj.sender.first_name
return bundle

def get_object_list(self, request):
return super(ChatMessageResource, self).get_object_list(request). \
order_by('-sent_at')

def obj_create(self, bundle, **kwargs):
r = redis.StrictRedis(host='localhost', port=6379, db=0)
data = bundle.data
event_id = re.findall(r'/(\d+)/', bundle.data['event'])[0]
event = Event.objects.get(pk=int(event_id))

user_id = re.findall(r'/(\d+)/', bundle.data['sender'])[0]
sender = FacebookCustomUserActive.objects.get(pk=int(user_id))

members = Membership.objects.filter(event=event, rsvp='yes').\
exclude(user=sender.id)
for member in members:
data['facebook_id'] = member.user.facebook_id
data['sent_at'] = now().isoformat()
data['event_id'] = event_id
r.publish('chat_message.%s' % member.user.id, json.dumps(data))
return super(ChatMessageResource, self).obj_create(bundle, **kwargs)
21 changes: 21 additions & 0 deletions bekindred/msgs/tests/tests_resources.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
from datetime import timedelta
from django.utils.timezone import now
from django_facebook.models import FacebookCustomUser
from tastypie.test import ResourceTestCase
from events.models import Event, Membership
from msgs.models import ChatMessage
from postman.api import pm_write
from postman.models import Message

Expand Down Expand Up @@ -84,6 +88,9 @@ def get_credentials(self):
def setUp(self):
super(TestChatMessageResource, self).setUp()
self.user = FacebookCustomUser.objects.create_user(username='user_a', password='test')
self.user1 = FacebookCustomUser.objects.create_user(username='user_b', password='test')
self.user2 = FacebookCustomUser.objects.create_user(username='user_c', password='test')
self.user3 = FacebookCustomUser.objects.create_user(username='user_d', password='test')
self.resource_url = '/api/v1/chat/'

def login(self):
Expand All @@ -97,3 +104,17 @@ def test_get_list(self):
resp = self.api_client.get(self.resource_url, format='json')
self.assertEqual(self.deserialize(resp)['objects'], [])

def test_post_message(self):
self.response = self.login()
event1 = Event.objects.create(name="Play piano1", location=[7000, 22965.83],
starts_on=now(), ends_on=now() + timedelta(days=10))
Membership.objects.create(user=self.user, event=event1, is_organizer=True)
Membership.objects.create(user=self.user1, event=event1, rsvp='yes')
Membership.objects.create(user=self.user2, event=event1, rsvp='yes')
ChatMessage.objects.create(sender=self.user3, body='test', event=event1)
post_data = {
'body': "new",
'event': "/api/v1/event/{}/".format(event1.id),
'sender': "/api/v1/auth/user/{}/".format(self.user.id)
}
resp = self.api_client.post(self.resource_url, format='json', data=post_data)
Loading

0 comments on commit b6d9010

Please sign in to comment.