Ejemplo n.º 1
0
from django.db import models
from sigma_core.importer import load_ressource

GroupMember = load_ressource("GroupMember")


class AcknowledgmentInvitation(models.Model):
    """
        Modelize an invitation to acknowledge a group.
        Invitation can be issued both by the invitee and the inviter.
        Invitation have a short life-time.
        As soon as someone accepts or declines the invitation, the instance is destroyed.
    """

    #*********************************************************************************************#
    #**                                       Fields                                            **#
    #*********************************************************************************************#

    class Meta:
        unique_together = (("acknowledged", "acknowledged_by"), )

    acknowledged = models.ForeignKey(
        'Group', related_name='invitation_to_be_acknowledged')
    acknowledged_by = models.ForeignKey(
        'Group', related_name='invitation_to_acknowledge')
    """ Represents whether the invitation has been issued by the invitee or the inviter """
    issued_by_invitee = models.BooleanField(default=True)
    """ The date the invitation has been issued """
    date = models.DateTimeField(auto_now_add=True)

    #*********************************************************************************************#
Ejemplo n.º 2
0
from rest_framework import serializers
from sigma_core.importer import load_ressource

Event = load_ressource("Event")


class EventSerializer(serializers.ModelSerializer):
    class Meta:
        model = Event.model
        exclude = ()
Ejemplo n.º 3
0
from rest_framework import serializers
from sigma_core.importer import load_ressource

Publication = load_ressource("Publication")


class PublicationSerializer(serializers.ModelSerializer):
    class Meta:
        model = Publication.model
        exclude = ()
Ejemplo n.º 4
0
from rest_framework import status
from rest_framework.decorators import detail_route, list_route
from sigma_core.views.sigma_viewset import SigmaViewSet
from sigma_core.importer import Sigma, load_ressource

User = load_ressource("User")

from django.core.mail import send_mail
from rest_framework.permissions import AllowAny
import random

reset_mail = {
    'from_email':
    '*****@*****.**',
    'subject':
    'Mot de passe Sigma',
    'message':
    u"""
Bonjour,
Ton mot de passe Sigma a été réinitialisé.
C'est maintenant "{password}".
Cordialement,
L'équipe Sigma.
"""
}


class UserViewSet(SigmaViewSet):

    serializer_class = User.serializer
    queryset = User.model.objects.all()
Ejemplo n.º 5
0
from django.db import models
from sigma_core.importer import load_ressource

Chat = load_ressource("Chat")

class ChatMessage(models.Model):
    """
        Modelize a message in a chat of a group
    """

    #*********************************************************************************************#
    #**                                       Fields                                            **#
    #*********************************************************************************************#

    user = models.ForeignKey('User', related_name='my_chat_messages')
    chat = models.ForeignKey('Chat', related_name='messages')
    created_date = models.DateTimeField(auto_now_add=True)
    message = models.TextFIeld(Defaul="")



    #*********************************************************************************************#
    #**                                      Getters                                            **#
    #*********************************************************************************************#

    @staticmethod
    def get_group_chat_messages_qs(group):
        c_list = Chat.model.objects.get(group=group)
        return c_list.order_by('created_date')

Ejemplo n.º 6
0
from rest_framework import serializers
from sigma_core.importer import load_ressource

ChatMember = load_ressource("ChatMember")


class ChatMemberSerializer(serializers.ModelSerializer):
    """
        Basic default serializer for a ChatMember.
        Include all fields
    """
    class Meta:
        model = ChatMember.model
        exclude = ('join_date', )
Ejemplo n.º 7
0
from django.db import models
from sigma_core.importer import load_ressource

Participation = load_ressource("Participation")


class Event(models.Model):
    """
        This model is used to represent any kind of user's group (friends, coworkers, schools, etc...)
    """

    #*********************************************************************************************#
    #**                                       Fields                                            **#
    #*********************************************************************************************#

    author = models.ForeignKey("User", related_name='created')

    name = models.CharField(max_length=255)
    description = models.CharField(max_length=1400)

    date_start = models.DateTimeField()
    date_end = models.DateTimeField()
    place_name = models.CharField(max_length=255)

    def __str__(self):
        return self.name

    #*********************************************************************************************#
    #**                                      Setters                                            **#
    #*********************************************************************************************#
Ejemplo n.º 8
0
from django.db import models
from sigma_core.importer import load_ressource

SharedPublication = load_ressource("SharedPublication")

class Publication(models.Model):
    """
        An abstract publication
    """

    #*********************************************************************************************#
    #**                                       Fields                                            **#
    #*********************************************************************************************#

    group = models.ForeignKey("Group", related_name='publications')
    date = models.DateTimeField(auto_now_add=True)
    author = models.ForeignKey("User")

    title = models.CharField(max_length=144, blank=True)
    content = models.CharField(max_length=1500)

    related_event = models.ForeignKey("Event", blank=True, null=True)
    internal = models.BooleanField(default=True)
    last_commented = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.title

    #*********************************************************************************************#
    #**                                      Getters                                            **#
    #*********************************************************************************************#
Ejemplo n.º 9
0
from rest_framework import status
from rest_framework.decorators import detail_route
from sigma_core.views.sigma_viewset import SigmaViewSet
from sigma_core.importer import load_ressource

ChatMessage = load_ressource("ChatMessage")


class ChatMessageViewSet(SigmaViewSet):

    serializer_class = ChatMessage.serializer
    queryset = ChatMessage.model.objects.all()

    #*********************************************************************************************#
    #**                                   Read actions                                          **#
    #*********************************************************************************************#

    #*********************************************************************************************#
    #**                                  Write actions                                          **#
    #*********************************************************************************************#

    def create(self, request):
        """
            REST create action. Used to create an chat member.
            If succeeded, returns HTTP_201_CREATED with the corresponding ChatMember object.
        """
        return self.handle_action('create', request)
Ejemplo n.º 10
0
from django.db import models
from sigma_core.importer import load_ressource

Group = load_ressource("Group")
User = load_ressource("User")


class GroupMember(models.Model):
    """
        Modelize a membership relation between an User and a Group.
        A user is a member of a group if and only if the corresponding GroupMember object exists
    """

    #*********************************************************************************************#
    #**                                       Fields                                            **#
    #*********************************************************************************************#

    class Meta:
        unique_together = (("user", "group"), )

    user = models.ForeignKey('User', related_name='memberships')
    group = models.ForeignKey('Group', related_name='memberships')
    """ The date the user has been accepting into the group """
    created = models.DateTimeField(auto_now_add=True)
    """ If sets to True, you can't be seen by non-members, regardless of the group's members_visibility setting """
    hidden = models.BooleanField(default=False)
    """ An administrator has all rights, and can change other's rights (including other admins).
        Admins also have the power to acknowledge or ask for acknowledgment. """
    is_administrator = models.BooleanField(default=False)
    """ The superadministrator must be unique.
        He is an admin whose rights can't be changed by other admins. """
Ejemplo n.º 11
0
from django.db import models
from sigma_core.importer import load_ressource

GroupMember = load_ressource("GroupMember")
Publication = load_ressource("Publication")


class SharedPublication(models.Model):
    """
        This model is used to represent any kind of user's group (friends, coworkers, schools, etc...)
    """

    #*********************************************************************************************#
    #**                                       Fields                                            **#
    #*********************************************************************************************#

    # Liste des champs de l'objet
    publication = models.ForeignKey("Publication", related_name='shared')

    group = models.ForeignKey("Group", related_name='shared_publications')
    approved = models.BooleanField(default=True)
    date = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.publication.title

    #*********************************************************************************************#
    #**                                      Getters                                            **#
    #*********************************************************************************************#

    @staticmethod
from rest_framework import status
from rest_framework.decorators import detail_route
from rest_framework.exceptions import NotFound, PermissionDenied, ValidationError
from rest_framework.response import Response
from sigma_core.views.sigma_viewset import SigmaViewSet
from sigma_core.importer import load_ressource

Acknowledgment = load_ressource("Acknowledgment")
AcknowledgmentInvitation = load_ressource("AcknowledgmentInvitation")


class AcknowledgmentInvitationViewSet(SigmaViewSet):

    serializer_class = AcknowledgmentInvitation.serializer
    queryset = AcknowledgmentInvitation.model.objects.all()

    #*********************************************************************************************#
    #**                                   Read actions                                          **#
    #*********************************************************************************************#

    def retrieve(self, request, pk):
        """
            REST retrieve action. Used to retrieve an invitation.
        """
        return self.handle_action_pk('retrieve', request, pk)

    #*********************************************************************************************#
    #**                                  Write actions                                          **#
    #*********************************************************************************************#

    def create(self, request):
Ejemplo n.º 13
0
from rest_framework import serializers
from sigma_core.importer import load_ressource

Comment = load_ressource("Comment")


class CommentSerializer(serializers.ModelSerializer):
    class Meta:
        model = Comment.model
        exclude = ()
Ejemplo n.º 14
0
from rest_framework import status
from rest_framework.decorators import detail_route
from sigma_core.views.sigma_viewset import SigmaViewSet
from sigma_core.importer import load_ressource

GroupField = load_ressource("GroupField")


class GroupFieldViewSet(SigmaViewSet):

    serializer_class = GroupField.serializer
    queryset = GroupField.model.objects.all()

    #*********************************************************************************************#
    #**                                   Read actions                                          **#
    #*********************************************************************************************#

    def retrieve(self, request, pk):
        """
            REST retrieve action. Used to retrieve a group_field.
        """
        return self.handle_action_pk('retrieve', request, pk)

    #*********************************************************************************************#
    #**                                  Write actions                                          **#
    #*********************************************************************************************#

    def create(self, request):
        """
            REST create action. Used to create a Group Field.
            If succeeded, returns HTTP_201_CREATED with the newly created Group field object.
Ejemplo n.º 15
0
from django.db import models
from django.contrib.auth.models import AbstractBaseUser, BaseUserManager
from sigma_core.importer import load_ressource

UserConnection = load_ressource("UserConnection")

# TODO : Add unique username for frontends URLs


# Basic user manager required by Django
class UserManager(BaseUserManager):
    def get_queryset(self):
        return super().get_queryset()

    def create_user(self, email, lastname, firstname, password=None):
        if not email:
            raise ValueError('Users must have an email address')

        user = self.model(email=self.normalize_email(email),
                          lastname=lastname,
                          firstname=firstname)
        user.set_password(password)
        user.save()
        return user

    def create_superuser(self, email, lastname, firstname, password):
        user = self.create_user(email, lastname, firstname, password)
        user.is_superuser = True
        user.is_staff = True
        user.save()
        return user
Ejemplo n.º 16
0
from rest_framework import serializers
from sigma_core.importer import load_ressource

Search = load_ressource("Search")
Group = load_ressource("Group")
GroupMember = load_ressource("GroupMember")
User = load_ressource("User")


class SearchSerializer(serializers.Serializer):
    """
        Basic default serializer for a Search.
    """
    user = User.serializer(many=True)
    group = Group.serializer(many=True)
Ejemplo n.º 17
0
from django.db import models
from sigma_core.importer import load_ressource

GroupMember = load_ressource("GroupMember")
Acknowledgment = load_ressource("Acknowledgment")


class Group(models.Model):
    """
        This model is used to represent any kind of user's group (friends, coworkers, schools, etc...)
    """

    #*********************************************************************************************#
    #**                                       Fields                                            **#
    #*********************************************************************************************#

    name = models.CharField(max_length=254)
    description = models.TextField(blank=True)
    is_protected = models.BooleanField(
        default=False)  # if True, the Group cannot be deleted
    """ Determine whether one can ask to join the group, or must be invited """
    can_anyone_ask = models.BooleanField(default=False)
    """ Determine whether one can directly join the group, or must send an invitation """
    need_validation_to_join = models.BooleanField(default=False)

    VISIBILITY_PUBLIC = 0
    VISIBILITY_NORMAL = 1
    VISIBILITY_PRIVATE = 2
    POSSIBLE_VISIBILITIES = (
        (0, 'Public'),
        (1, 'Normal'),
Ejemplo n.º 18
0
from rest_framework import serializers
from sigma_core.importer import load_ressource

Group = load_ressource("Group")


class GroupSerializer(serializers.ModelSerializer):
    """
        Basic default serializer for a Group.
        Include all fields
    """
    class Meta:
        model = Group.model
        fields = ('pk', 'name', 'description', 'is_protected', 'can_anyone_ask', 'need_validation_to_join', 'members_visibility', 'group_visibility')
Ejemplo n.º 19
0
from rest_framework import status
from rest_framework.decorators import detail_route
from rest_framework.exceptions import NotFound, PermissionDenied, ValidationError
from rest_framework.response import Response
from sigma_core.views.sigma_viewset import SigmaViewSet
from sigma_core.importer import Sigma, load_ressource

GroupInvitation = load_ressource("GroupInvitation")
GroupMember = load_ressource("GroupMember")


class GroupInvitationViewSet(SigmaViewSet):

    serializer_class = GroupInvitation.serializer
    queryset = GroupInvitation.model.objects.all()

    #*********************************************************************************************#
    #**                                   Read actions                                          **#
    #*********************************************************************************************#

    def list(self, request):
        """
            REST list action. Used to list all of a user's invitation.
        """
        return self.handle_action_list(
            request, GroupInvitation.model.get_user_invitations_qs)

    def retrieve(self, request, pk):
        """
            REST retrieve action. Used to retrieve an invitation.
        """
Ejemplo n.º 20
0
from rest_framework import serializers
from sigma_core.importer import load_ressource

GroupInvitation = load_ressource("GroupInvitation")


class GroupInvitationSerializer(serializers.ModelSerializer):
    """
        Basic default serializer for an Invitation.
        Include all fields
    """
    class Meta:
        model = GroupInvitation.model
        fields = ('group', 'invitee', 'issued_by_invitee', 'date')
        required = ('group', 'invitee', 'issued_by_invitee')
Ejemplo n.º 21
0
from rest_framework import serializers
from sigma_core.importer import load_ressource

Tag = load_ressource("Tag")


class TagSerializer(serializers.ModelSerializer):
    class Meta:
        model = Tag.model
        exclude = ()
Ejemplo n.º 22
0
from rest_framework import status
from rest_framework.decorators import detail_route
from sigma_core.views.sigma_viewset import SigmaViewSet
from sigma_core.importer import Sigma, load_ressource

Group = load_ressource("Group")
GroupMember = load_ressource("GroupMember")
User = load_ressource("User")
Search = load_ressource("Search")
AcknowledgmentInvitation = load_ressource("AcknowledgmentInvitation")


class SearchViewSet(SigmaViewSet):

    serializer_class = Search.serializer
    queryset = Group.model.objects.all()  #to avoid errors

    #*********************************************************************************************#
    #**                                   Read actions                                          **#
    #*********************************************************************************************#

    def list(self, request):
        """
            REST list action. Used to list all groups a user can see.
        """
        word = request.data["string"]
        group_qs = Group.objects.filter(name__contains=word)
        user_qs = User.objects.filter(name__contains=word)

        group_serializer = Group.serializer(group_qs, many=True)
        user_serializer = User.serializer(user_qs, many=True)
Ejemplo n.º 23
0
from rest_framework import status
from rest_framework.decorators import detail_route
from sigma_core.views.sigma_viewset import SigmaViewSet
from sigma_core.importer import load_ressource

Chat = load_ressource("Chat")
ChatMember = load_ressource("ChatMember")
ChatMessage = load_ressource("ChatMessage")


class ChatViewSet(SigmaViewSet):

    serializer_class = Chat.serializer
    queryset = Chat.model.objects.all()

    #*********************************************************************************************#
    #**                                   Read actions                                          **#
    #*********************************************************************************************#

    def retrieve(self, request, pk):
        """
            REST retrieve action. Used to retrieve a chat.
        """
        return self.handle_action_pk('retrieve', request, pk)

    @detail_route(methods=['get'])
    def list_chat_members(self, request, pk):
        """
            REST list action. Used to list the chat members of a chat that contains the user.
        """
        return serialized_response(
Ejemplo n.º 24
0
from rest_framework import status
from rest_framework.decorators import detail_route
from rest_framework.exceptions import NotFound, PermissionDenied, ValidationError
from rest_framework.response import Response

from sigma_core.views.sigma_viewset import SigmaViewSet
from sigma_core.importer import Sigma, load_ressource

GroupMember = load_ressource("GroupMember")
UserConnection = load_ressource("UserConnection")


class GroupMemberViewSet(SigmaViewSet):

    serializer_class = GroupMember.serializer
    queryset = GroupMember.model.objects.all()

    #*********************************************************************************************#
    #**                                   Read actions                                          **#
    #*********************************************************************************************#

    def list(self, request):
        """
            REST list action. Used to list all of a user's membership.
        """
        return self.handle_action_list(
            request, GroupMember.model.get_user_memberships_qs)

    def retrieve(self, request, pk):
        """
            REST retrieve action. Used to retrieve a membership.
Ejemplo n.º 25
0
from rest_framework import status
from rest_framework.decorators import detail_route
from sigma_core.views.sigma_viewset import SigmaViewSet
from sigma_core.importer import Sigma, load_ressource

GroupFieldValue = load_ressource("GroupFieldValue")


class GroupFieldValueViewSet(SigmaViewSet):

    serializer_class = GroupFieldValue.serializer
    queryset = GroupFieldValue.model.objects.all()

    #*********************************************************************************************#
    #**                                   Read actions                                          **#
    #*********************************************************************************************#

    def retrieve(self, request, pk):
        """
            REST retrieve action. Used to retrieve a group field value.
        """
        return self.handle_action_pk('retrieve', request, pk)

    #*********************************************************************************************#
    #**                                  Write actions                                          **#
    #*********************************************************************************************#

    def create(self, request):
        """
            REST create action. Used to create a Group Field.
            If succeeded, returns HTTP_201_CREATED with the newly created Group field value object.         TODO : create possible only if multiple allowed
Ejemplo n.º 26
0
from rest_framework import status
from rest_framework.decorators import detail_route
from sigma_core.views.sigma_viewset import SigmaViewSet
from sigma_core.importer import load_ressource

Publication = load_ressource("Publication")
SharedPublication = load_ressource("SharedPublication")
Group = load_ressource("Group")


class SharedPublicationViewSet(SigmaViewSet):

    serializer_class = SharedPublication.serializer
    queryset = SharedPublication.model.objects.all()

    #*********************************************************************************************#
    #**                                   Read actions                                          **#
    #*********************************************************************************************#

    def list(self, request):
        return self.handle_action_list(
            request, SharedPublication.model.get_publications_user)

    def retrieve(self, request, pk):
        """
            REST retrieve action. Used to retrieve a chat.
        """
        return self.handle_action_pk('retrieve', request, pk)

    @detail_route(methods=['get'])
    def list_publications_group(self, request, pk):