Commit 463f9aeb authored by Eryk Leniart's avatar Eryk Leniart

Merge remote-tracking branch 'origin/master'

parents 67a7428a ab0c7336
......@@ -10,6 +10,8 @@ https://docs.djangoproject.com/en/1.7/ref/settings/
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
......@@ -38,14 +40,21 @@ INSTALLED_APPS = (
'django.contrib.staticfiles',
'rest_framework',
'rest_framework.authtoken',
'app.API',
'app.Discussion',
'app.Event',
'app.Friendship',
'app.Localization',
'app.Tag',
'app.User',
)
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': ('rest_framework.permissions.AllowAny',),
'DEFAULT_PERMISSION_CLASSES': ('rest_framework.permissions.IsAuthenticated',),
'DEFAULT_FILTER_BACKENDS': ('rest_framework.filters.DjangoFilterBackend',),
'DEFAULT_AUTHENTICATION_CLASSES': (
#'rest_framework.authentication.SessionAuthentication',
#'rest_framework.authentication.TokenAuthentication',
'rest_framework.authentication.SessionAuthentication',
'rest_framework.authentication.TokenAuthentication',
),
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination',
'PAGE_SIZE': 10
......
......@@ -5,10 +5,30 @@ from rest_framework import routers
router = routers.DefaultRouter()
from app.API import views as api_views
from app.Discussion import views as discussion_views
from app.Event import views as event_views
from app.Friendship import views as friendship_views
from app.Localization import views as localization_views
from app.Tag import views as tag_views
from app.User import views as user_views
router.register(r'user', user_views.UserViewSet)
router.register(r'api', api_views.APIViewSet)
router.register(r'discussion', discussion_views.DiscussionViewSet)
router.register(r'text_message', discussion_views.TextMessageViewSet)
router.register(r'event', event_views.EventViewSet)
router.register(r'localization', localization_views.LocalizationViewSet)
router.register(r'tag', tag_views.TagViewSet)
router.register(r'user_friendship_request', friendship_views.FriendshipRequestViewSet)
router.register(r'user_friendship', user_views.UserFriendshipViewSet)
router.register(r'user_event_request', user_views.UserEventRequestViewSet)
router.register(r'user_event', user_views.UserEventViewSet)
router.register(r'user_api', user_views.UserAPIViewSet)
urlpatterns = patterns('',
# Examples:
# url(r'^$', 'JoinTheCityREST.views.home', name='home'),
# url(r'^blog/', include('blog.urls')),
url(r'^api/', include(router.urls)),
url(r'^api-auth/', include('rest_framework.urls',
namespace='rest_framework')),
......
from django.db import models
# Create your models here.
from django.shortcuts import render
# Create your views here.
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
class Migration(migrations.Migration):
dependencies = [
]
operations = [
migrations.CreateModel(
name='API',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
],
options={
},
bases=(models.Model,),
),
]
from django.db import models
# Create your models here.
from app.Tag.models import Tag
class API(models.Model):
name = models.CharField(max_length=100)
tag = models.ManyToManyField(Tag, related_name='API_tags', blank=False, null=False, default=None)
def __str__(self):
return self.name
\ No newline at end of file
from rest_framework import serializers
from app.API.models import API
class APISerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = API
fields = ('url', 'name', 'tag')
\ No newline at end of file
# Create your views here.
from rest_framework import viewsets, permissions
from app.API.models import API
from app.API.serializers import APISerializer
class APIViewSet(viewsets.ModelViewSet):
"""
API for articles
"""
queryset = API.objects.all()
serializer_class = APISerializer
permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
\ No newline at end of file
from django.contrib import admin
# Register your models here.
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
class Migration(migrations.Migration):
dependencies = [
]
operations = [
migrations.CreateModel(
name='Discussion',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
],
options={
},
bases=(models.Model,),
),
migrations.CreateModel(
name='Message',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
],
options={
},
bases=(models.Model,),
),
]
from django.contrib.auth.models import User
from django.db import models
from app.Tag.models import Tag
from django.utils.datetime_safe import datetime
class TextMessage(models.Model):
user = models.ForeignKey(User, related_name='user_creator_of_message',
blank=False, null=False, default=None)
text = models.CharField(max_length=1000)
created_at = models.DateTimeField(default=datetime.now)
def __str__(self):
return self.text
class Discussion(models.Model):
question = models.CharField(max_length=100)
message = models.ManyToManyField(TextMessage, blank=True, null=True, related_name="conversations_participant")
tag = models.ForeignKey(Tag, related_name='place_of_discussion', blank=False, null=False, default=None)
def __str__(self):
return self.question
from rest_framework import serializers
from app.Discussion.models import Discussion, TextMessage
from app.User.serializers import UserSerializer
class DiscussionSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Discussion
fields = ('url', 'question', 'message', 'tag')
class TextMessageSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = TextMessage
fields = ('url', 'user', 'text', 'created_at')
\ No newline at end of file
from django.test import TestCase
# Create your tests here.
# Create your views here.
from rest_framework import viewsets, permissions
from app.API.serializers import APISerializer
from app.Discussion.models import Discussion, TextMessage
from app.Discussion.serializers import TextMessageSerializer, DiscussionSerializer
class DiscussionViewSet(viewsets.ModelViewSet):
"""
API for articles
"""
queryset = Discussion.objects.all()
serializer_class = DiscussionSerializer
permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
class TextMessageViewSet(viewsets.ModelViewSet):
"""
API for articles
"""
queryset = TextMessage.objects.all()
serializer_class = TextMessageSerializer
permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
\ No newline at end of file
from django.contrib import admin
# Register your models here.
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
class Migration(migrations.Migration):
dependencies = [
]
operations = [
migrations.CreateModel(
name='Event',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
],
options={
},
bases=(models.Model,),
),
]
from django.contrib.auth.models import User
from django.db import models
# Create your models here.
from app.Localization.models import Localization
from app.Tag.models import Tag
class Event(models.Model):
name = models.CharField(max_length=100)
private = models.BooleanField(default=False)
tag = models.ManyToManyField(Tag, related_name='event_tag', blank=False, null=False, default=None)
localization = models.ForeignKey(Localization, related_name='event_tag',
blank=False, null=False, default=None)
user = models.ForeignKey(User, related_name='event_author',
blank=False, null=False, default=None)
def __str__(self):
return self.name
from rest_framework import serializers
from app.Event.models import Event
class EventSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Event
fields = ('url', 'name', 'private', 'localization', 'tag', 'user')
\ No newline at end of file
from django.test import TestCase
# Create your tests here.
# Create your views here.
from rest_framework import viewsets, permissions
from app.Event.models import Event
from app.Event.serializers import EventSerializer
class EventViewSet(viewsets.ModelViewSet):
"""
API for articles
"""
queryset = Event.objects.all()
serializer_class = EventSerializer
permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
\ No newline at end of file
from django.contrib import admin
# Register your models here.
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
class Migration(migrations.Migration):
dependencies = [
]
operations = [
migrations.CreateModel(
name='Friendship',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
],
options={
},
bases=(models.Model,),
),
migrations.CreateModel(
name='FriendshipRequest',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
],
options={
},
bases=(models.Model,),
),
]
from django.contrib.auth.models import User
from django.db import models
# Create your models here.
from app.User.models import UserFriendship
class FriendshipRequest(models.Model):
user = models.ForeignKey(User, related_name='user_friendship_request_target',
blank=False, null=False, default=None)
created_by = models.ForeignKey(User, related_name='user_friendship_request_creator',
blank=False, null=False, default=None)
def accept(self):
user_friendship = UserFriendship(user=self.user, friend=self.created_by)
user_friendship.save()
user_friendship = UserFriendship(friend=self.user, user=self.created_by)
user_friendship.save()
self.delete()
\ No newline at end of file
from rest_framework import serializers
from app.Friendship.models import FriendshipRequest
class FriendshipRequestSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = FriendshipRequest
fields = ('url', 'created_by', 'user')
from django.test import TestCase
# Create your tests here.
# Create your views here.
from django.shortcuts import get_object_or_404
from requests import Response
from rest_framework import viewsets, permissions
import rest_framework
from rest_framework.decorators import detail_route
from app.Friendship.models import FriendshipRequest
from app.Friendship.serializers import FriendshipRequestSerializer
class FriendshipRequestViewSet(viewsets.ModelViewSet):
"""
API for articles
"""
queryset = FriendshipRequest.objects.all()
serializer_class = FriendshipRequestSerializer
permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
def list(self, request):
user = request.user
queryset = FriendshipRequest.objects.filter(user=user).all()
page = self.paginate_queryset(queryset)
serializer = FriendshipRequestSerializer(page, many=True, context={'request': request})
return self.get_paginated_response(serializer.data)
@detail_route()
def accept(self, request, pk=None):
friendship_request = get_object_or_404(self.queryset, pk=pk)
friendship_request.accept()
return Response(status=rest_framework.status.HTTP_200_OK)
@detail_route()
def decline(self, request, pk=None):
friendship_request = get_object_or_404(self.queryset, pk=pk)
friendship_request.delete()
return Response(status=rest_framework.status.HTTP_200_OK)
from django.contrib import admin
# Register your models here.
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
class Migration(migrations.Migration):
dependencies = [
]
operations = [
migrations.CreateModel(
name='Localization',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
],
options={
},
bases=(models.Model,),
),
]
from django.db import models
# Create your models here.
class Localization(models.Model):
name = models.CharField(max_length=300)
longitude = models.DecimalField(max_digits=9, decimal_places=6, default=None)
latitude = models.DecimalField(max_digits=9, decimal_places=6, default=None)
def __str__(self):
return self.name
\ No newline at end of file
from rest_framework import serializers
from app.Localization.models import Localization
class LocalizationSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Localization
fields = ('url', 'name', 'longitude', 'latitude')
from django.test import TestCase
# Create your tests here.
from rest_framework import viewsets, permissions
from app.Localization.models import Localization
from app.Localization.serializers import LocalizationSerializer
class LocalizationViewSet(viewsets.ModelViewSet):
"""
API for articles
"""
queryset = Localization.objects.all()
serializer_class = LocalizationSerializer
permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
\ No newline at end of file
from django.contrib import admin
# Register your models here.
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
class Migration(migrations.Migration):
dependencies = [
]
operations = [
migrations.CreateModel(
name='Tag',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
],
options={
},
bases=(models.Model,),
),
]
from django.db import models
# Create your models here.
from app.Localization.models import Localization
class Tag(models.Model):
name = models.CharField(max_length=300)
localization = models.ForeignKey(Localization, related_name='tag_localization',
blank=False, null=False, default=None)
def __str__(self):
return self.name
\ No newline at end of file
from rest_framework import serializers
from app.Tag.models import Tag
class TagSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Tag
fields = ('url', 'name', 'localization')
from django.test import TestCase
# Create your tests here.
from rest_framework import viewsets, permissions
from app.Tag.models import Tag
from app.Tag.serializers import TagSerializer
class TagViewSet(viewsets.ModelViewSet):
"""
API for articles
"""
queryset = Tag.objects.all()
serializer_class = TagSerializer
permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
\ No newline at end of file
from django.contrib import admin
# Register your models here.
from django.contrib.auth.models import User
from django.db import models
# Create your models here.
from django.db.models.signals import post_save
from django.dispatch import receiver
from rest_framework.authtoken.models import Token
from JoinTheCityREST import settings
from app.API.models import API
from app.Event.models import Event
class UserFriendship(models.Model):
user = models.ForeignKey(User, related_name='user_friendship',
blank=False, null=False, default=None)
friend = models.ForeignKey(User, related_name='user_friend',
blank=False, null=False, default=None)
class UserAPI(models.Model):
user = models.ForeignKey(User, related_name='api_participant',
blank=False, null=False, default=None)
api = models.ForeignKey(API, related_name='api_choosen_by_user',
blank=False, null=False, default=None)
class UserEvent(models.Model):
user = models.ForeignKey(User, related_name='event_participant',
blank=False, null=False, default=None)
event = models.ForeignKey(Event, related_name='event_choosen_by_user',
blank=False, null=False, default=None)
class UserEventRequest(models.Model):
user = models.ForeignKey(User, related_name='user_event_request_recived',
blank=False, null=False, default=None)
created_by = models.ForeignKey(User, related_name='user_event_requeset_creator',
blank=False, null=False, default=None)
event = models.ForeignKey(Event, related_name='event',
blank=False, null=False, default=None)
def accept(self):
user_event = UserEvent(user=self.user, event=self.event)
user_event.save()
self.delete()
@receiver(post_save, sender=User)
def create_auth_token(sender, instance=None, created=False, **kwargs):
if created:
Token.objects.create(user=instance)
\ No newline at end of file
from django.contrib.auth.models import User
from rest_framework import serializers
from app.Event.serializers import EventSerializer
from app.User.models import UserFriendship, UserAPI, UserEvent, UserEventRequest
class UserSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = User
fields = ('url', 'id', 'username', 'email')
class UserFriendshipSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = UserFriendship
fields = ('url', 'friend')
class UserEventRequestSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = UserEventRequest
fields = ('url', 'event', 'created_by')
class UserAPISerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = UserAPI
fields = ('url','api')
class UserEventSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = UserEvent
fields = ('url', 'event')
\ No newline at end of file
from django.test import TestCase
# Create your tests here.
from django.contrib.auth.models import User
from django.shortcuts import get_object_or_404
from rest_framework import viewsets, permissions
import rest_framework
from rest_framework.decorators import list_route, detail_route
from rest_framework.response import Response
from app.User.models import UserFriendship, UserAPI, UserEvent, UserEventRequest
from app.User.serializers import UserFriendshipSerializer, UserAPISerializer, \
UserEventSerializer, UserEventRequestSerializer, UserSerializer
class UserViewSet(viewsets.ModelViewSet):
"""
API for articles
"""
queryset = User.objects.all()
serializer_class = UserSerializer
permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
@list_route(methods=['get'])
def me(self, request, pk=None):
user = User.objects.filter(pk=request.user.id)[0]
user_data = UserSerializer(user, context={'request': request}).data
return Response(status=rest_framework.status.HTTP_200_OK, data= user_data)
class UserFriendshipViewSet(viewsets.ModelViewSet):
"""
API for articles
"""
queryset = UserFriendship.objects.all()
serializer_class = UserFriendshipSerializer
permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
def perform_create(self, serializer):
serializer.save(user=self.request.user)
def list(self, request):
user = request.user
queryset = UserFriendship.objects.filter(user=user).all()
page = self.paginate_queryset(queryset)
serializer = UserFriendshipSerializer(page, many=True, context={'request': request})
return self.get_paginated_response(serializer.data)
class UserEventRequestViewSet(viewsets.ModelViewSet):
"""
User Friendships
"""
queryset = UserEventRequest.objects.all()
serializer_class = UserEventRequestSerializer
permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
def perform_create(self, serializer):
serializer.save(user=self.request.user)
def list(self, request):
user = request.user
queryset = UserEventRequest.objects.filter(user=user).all()
page = self.paginate_queryset(queryset)
serializer = UserEventRequestSerializer(page, many=True, context={'request': request})
return self.get_paginated_response(serializer.data)
@detail_route()
def accept(self, request, pk=None):
event_request = get_object_or_404(self.queryset, pk=pk)
event_request.accept()
return Response(status=rest_framework.status.HTTP_200_OK)
@detail_route()
def decline(self, request, pk=None):
event_request = get_object_or_404(self.queryset, pk=pk)
event_request.delete()
return Response(status=rest_framework.status.HTTP_200_OK)
class UserAPIViewSet(viewsets.ModelViewSet):
"""
User favorite api
"""
queryset = UserAPI.objects.all()
serializer_class = UserAPISerializer
permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
def perform_create(self, serializer):
serializer.save(user=self.request.user)
def list(self, request):
user = request.user
queryset = UserAPI.objects.filter(user=user).all()
page = self.paginate_queryset(queryset)
serializer = UserAPISerializer(page, many=True, context={'request': request})
return self.get_paginated_response(serializer.data)
class UserEventViewSet(viewsets.ModelViewSet):
"""
User participant in this event
"""
queryset = UserEvent.objects.all()
serializer_class = UserEventSerializer
permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
def perform_create(self, serializer):
serializer.save(user=self.request.user)
def list(self, request):
user = request.user
queryset = UserEvent.objects.filter(user=user).all()
page = self.paginate_queryset(queryset)
serializer = UserEventSerializer(page, many=True, context={'request': request})
return self.get_paginated_response(serializer.data)
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment