Exemplo n.º 1
0
 def get(self, request, **kwargs):
     """
     Get An Events Details given its ID
     OR slug
     """
     event = self.get_event(kwargs)
     return utils.json_response(event.__json__())
Exemplo n.º 2
0
 def delete(self, request):
     """Logout"""
     logout(request)
     return utils.json_response({
         'authenticated': False,
         'username': ""
     })
Exemplo n.º 3
0
    def put(self, request, **kwargs):
        """modifiey a group"""
        def getGroup(groupType):
            if (groupType == "user"):
                return db.UserGroup.objects.get(id=kwargs['title'])
            elif (groupType == "group"):
                return db.Group.objects.get(id=kwargs['title'])
            elif (groupType == "feed"):
                return db.feedGroup.objects.get(title=kwargs['title'])

        groupType = kwargs["type"]
        group = getGroup(groupType)
        if (groupType == "user"):
            if group.user != request.user:
                raise ApiException(
                    "Permission Denied, you do not have permission to edit",
                    401)
        elif (groupType == "group"):
            pass
        elif (groupType == "feed"):
            pass

        json_post = json.loads(request.raw_post_data)
        #if can edit

        form = forms.UserGroupForm(json_post, instance=group.abstractgroup_ptr)
        if form.is_valid():
            group = form.save()
            return utils.json_response({
                'success': True,
            })
        else:
            raise ApiException(utils.form_errors_to_json(form), 401)
Exemplo n.º 4
0
 def get(self, request, **kwargs):
     """
     Get An Events Details given its ID
     OR slug
     """
     event = self.get_event(kwargs)
     return utils.json_response(event.__json__())
Exemplo n.º 5
0
    def put(self, request, **kwargs):
        """modifiey a group"""
        def getGroup(groupType):
            if(groupType == "user"):
                return db.UserGroup.objects.get(id=kwargs['title'])
            elif(groupType == "group"):
                return db.Group.objects.get(id=kwargs['title'])
            elif(groupType == "feed"):
                return db.feedGroup.objects.get(title=kwargs['title'])

        groupType = kwargs["type"]
        group = getGroup(groupType)
        if(groupType == "user"):
            if group.user != request.user:
                raise ApiException("Permission Denied, you do not have permission to edit", 401)
        elif(groupType == "group"):
            pass
        elif(groupType == "feed"):
            pass

        json_post = json.loads(request.raw_post_data)
        #if can edit

        form = forms.UserGroupForm(json_post, instance=group.abstractgroup_ptr)
        if form.is_valid():
            group = form.save()
            return utils.json_response({
                'success': True,
            })
        else:
            raise ApiException(utils.form_errors_to_json(form), 401)
Exemplo n.º 6
0
def get_time(request=None):
    """@todo: Docstring for getTime

    :request: @todo
    :returns: @todo

    """
    return utils.json_response({"datetime": tz.now()})
Exemplo n.º 7
0
def get_time(request=None):
    """@todo: Docstring for getTime

    :request: @todo
    :returns: @todo

    """
    return utils.json_response({"datetime": tz.now()})
Exemplo n.º 8
0
 def post(self, request):
     """create an event"""
     if not request.user.is_authenticated():
         raise ApiException("User Is not Logged In", 401)
     json_post = json.loads(request.raw_post_data)
     form = forms.EventForm(request.user, json_post)
     if form.is_valid():
         event = form.save()
         return utils.json_response(event.__json__())
     else:
         raise ApiException(utils.form_errors_to_json(form), 401)
Exemplo n.º 9
0
 def post(self, request):
     """create an event"""
     if not request.user.is_authenticated():
         raise ApiException("User Is not Logged In", 401)
     json_post = json.loads(request.raw_post_data)
     form = forms.EventForm(request.user, json_post)
     if form.is_valid():
         event = form.save()
         return utils.json_response(event.__json__())
     else:
         raise ApiException(utils.form_errors_to_json(form), 401)
Exemplo n.º 10
0
 def delete(self, request, **kwargs):
     """Deletes An Event"""
     try:
         event = db.Event.objects.get(slug=kwargs['slug'])
         if event.author.user == request.user:
             event.delete()
             return utils.json_response({
                 'success': True,
             })
         else:
             raise ApiException("You don not have permission to delete this event", 401)
     except ObjectDoesNotExist:
         raise ApiException("Event Not Found", 404)
Exemplo n.º 11
0
 def delete(self, request, **kwargs):
     """Deletes An Event"""
     try:
         event = db.Event.objects.get(slug=kwargs['slug'])
         if event.author.user == request.user:
             event.delete()
             return utils.json_response({
                 'success': True,
             })
         else:
             raise ApiException(
                 "You don not have permission to delete this event", 401)
     except ObjectDoesNotExist:
         raise ApiException("Event Not Found", 404)
Exemplo n.º 12
0
 def post(self, request, **kwargs):
     """create an a group"""
     json_post = json.loads(request.raw_post_data)
     form = forms.GroupForm(request.user, json_post)
     if form.is_valid():
         group = form.save()
         assign_perm("group_admin", request.user, group.abstractgroup_ptr)
         response = {
             "id": group.id,
             "title": group.title,
             "description": group.description
         }
         return utils.json_response(response)
     else:
         raise ApiException(utils.form_errors_to_json(form), 401)
Exemplo n.º 13
0
 def put(self, request, **kwargs):
     """Modify an Event via a post based on it id"""
     json_post = json.loads(request.raw_post_data)
     event = self.get_event(kwargs)
     if event.author.user == request.user:
         form = forms.EventForm(request.user, json_post, instance=event)
         if form.is_valid():
             event = form.save()
             return utils.json_response({
                 'success': True,
             })
         else:
             raise ApiException(utils.form_errors_to_json(form), 401)
     else:
         raise ApiException("Permission Denied", 401)
Exemplo n.º 14
0
    def get(self, request):
        """
        check the users status, and we need to send the csrf cookie.
        """
        if request.user.is_authenticated():
            admin_groups = get_objects_for_user(request.user, "event_map.group_admin")
            admin_groups = [group.__json__() for group in admin_groups]
        else:
            admin_groups = "null"

        return utils.json_response({
            'admin_groups': admin_groups,
            'authenticated': request.user.is_authenticated(),
            'username': request.user.username,
            'id': request.user.id})
Exemplo n.º 15
0
 def put(self, request, **kwargs):
     """Modify an Event via a post based on it id"""
     json_post = json.loads(request.raw_post_data)
     event = self.get_event(kwargs)
     if event.author.user == request.user:
         form = forms.EventForm(request.user, json_post, instance=event)
         if form.is_valid():
             event = form.save()
             return utils.json_response({
                 'success': True,
             })
         else:
             raise ApiException(utils.form_errors_to_json(form), 401)
     else:
         raise ApiException("Permission Denied", 401)
Exemplo n.º 16
0
 def post(self, request, **kwargs):
     """create an a group"""
     json_post = json.loads(request.raw_post_data)
     form = forms.GroupForm(request.user, json_post)
     if form.is_valid():
         group = form.save()
         assign_perm("group_admin", request.user, group.abstractgroup_ptr)
         response = {
             "id": group.id,
             "title": group.title,
             "description": group.description
         }
         return utils.json_response(response)
     else:
         raise ApiException(utils.form_errors_to_json(form), 401)
Exemplo n.º 17
0
    def get(self, request, **kwargs):
        """Get info about a group"""
        def getGroup(groupType):
            if(groupType == "user"):
                return db.UserGroup.objects.get(title=kwargs['title'])
            elif(groupType == "group"):
                return db.Group.objects.get(id=kwargs['title'])
            elif(groupType == "feed"):
                return db.feedGroup.objects.get(title=kwargs['title'])

        group = getGroup(kwargs["type"])

        if request.user.is_authenticated():
            usergroup = request.user.usergroup
        else:
            usergroup = None
        return utils.json_response(group.__json__(usergroup))
Exemplo n.º 18
0
    def get(self, request, **kwargs):
        """Get info about a group"""
        def getGroup(groupType):
            if (groupType == "user"):
                return db.UserGroup.objects.get(title=kwargs['title'])
            elif (groupType == "group"):
                return db.Group.objects.get(id=kwargs['title'])
            elif (groupType == "feed"):
                return db.feedGroup.objects.get(title=kwargs['title'])

        group = getGroup(kwargs["type"])

        if request.user.is_authenticated():
            usergroup = request.user.usergroup
        else:
            usergroup = None
        return utils.json_response(group.__json__(usergroup))
Exemplo n.º 19
0
def import_ical(request, source):
    if request.method == 'POST':
        if source == 'url':
            content = importers.fetch_feed(request.POST['feed_url'])
        else:
            content = [rf.read() for rf in request.FILES.values()]
        if not isinstance(content, list):
            content = [content]
        all_events = list()
        for ical in content:
            created_events, old_events = importers.import_ical(ical, request.user.usergroup)
            if created_events:
                request.user.usergroup.bfs_propagation(created_events, created=True)
            if old_events:
                request.user.usergroup.bfs_propagation(old_events)
            #raise ApiException("invalid file type", 415)
            all_events = created_events + old_events + all_events
        return utils.json_response([event.__json__() for event in all_events])
    else:
        raise ApiException("invalid request type. only POST allowed", 405)
Exemplo n.º 20
0
 def post(self, request):
     """Create a new user"""
     json_post = json.loads(request.raw_post_data)
     form = forms.SignUpForm(json_post)
     if form.is_valid():
         #key = 'signup_' + request.META['REMOTE_ADDR']
         #if cache.get(key):
         #    return HttpResponse('please wait before signing up again')
         #cache.set(key, True, settings.OWS_LIMIT_SIGNUP)
         form.save()
         user = authenticate(username=form.cleaned_data.get('username'),
                             password=form.cleaned_data.get('password'))
         auth_login(request, user)
         return utils.json_response({
             'authenticated': True,
             'username': user.username,
             'id': user.id
         })
     else:
         raise ApiException(utils.form_errors_to_json(form), 401)
Exemplo n.º 21
0
    def get(self, request):
        """
        check the users status, and we need to send the csrf cookie.
        """
        if request.user.is_authenticated():
            admin_groups = get_objects_for_user(request.user,
                                                "event_map.group_admin")
            admin_groups = [group.__json__() for group in admin_groups]
        else:
            admin_groups = "null"

        return utils.json_response({
            'admin_groups':
            admin_groups,
            'authenticated':
            request.user.is_authenticated(),
            'username':
            request.user.username,
            'id':
            request.user.id
        })
Exemplo n.º 22
0
 def post(self, request):
     """Create a new user"""
     json_post = json.loads(request.raw_post_data)
     form = forms.SignUpForm(json_post)
     if form.is_valid():
         #key = 'signup_' + request.META['REMOTE_ADDR']
         #if cache.get(key):
         #    return HttpResponse('please wait before signing up again')
         #cache.set(key, True, settings.OWS_LIMIT_SIGNUP)
         form.save()
         user = authenticate(
             username=form.cleaned_data.get('username'),
             password=form.cleaned_data.get('password')
         )
         auth_login(request, user)
         return utils.json_response({
             'authenticated': True,
             'username': user.username,
             'id': user.id
         })
     else:
         raise ApiException(utils.form_errors_to_json(form), 401)
Exemplo n.º 23
0
def import_ical(request, source):
    if request.method == 'POST':
        if source == 'url':
            content = importers.fetch_feed(request.POST['feed_url'])
        else:
            content = [rf.read() for rf in request.FILES.values()]
        if not isinstance(content, list):
            content = [content]
        all_events = list()
        for ical in content:
            created_events, old_events = importers.import_ical(
                ical, request.user.usergroup)
            if created_events:
                request.user.usergroup.bfs_propagation(created_events,
                                                       created=True)
            if old_events:
                request.user.usergroup.bfs_propagation(old_events)
            #raise ApiException("invalid file type", 415)
            all_events = created_events + old_events + all_events
        return utils.json_response([event.__json__() for event in all_events])
    else:
        raise ApiException("invalid request type. only POST allowed", 405)
Exemplo n.º 24
0
 def get(self, request):
     """get Notifications"""
     notes = db.Notification.objects.filter(to=request.user)
     return utils.json_response([note.to_JSON() for note in notes])
Exemplo n.º 25
0
    def get(self, request):
        """
        Gets a list of events.
        GET[n] specifies the number of events
        GET[start] Where to start getting the events from
        GET[offset] How many events to skip
        GET[author] selects events by the an authors username
        GET[group] gets all the events in a particular group
        GET[me] get all of the events in the usergroup of the current user
        """
        sge = db.SubGroupEvent.objects.select_related('event')

        if request.GET.get('complete') and request.GET.get(
                'complete').lower() == 'false':
            sge = sge.filter(event__complete=False)
        else:
            sge = sge.filter(event__complete=True)

        if request.GET.get('start'):
            #change to use actully date
            try:
                begin = dateutil.parser.parse(
                    request.GET.get('start').replace("Z", ""))
            except (ValueError, OverflowError):
                raise ApiException("Invalid ISO date", 400, "start")
        else:
            begin = datetime.utcnow().replace(tzinfo=tz.utc)

        if request.GET.get('modified'):
            try:
                mod_date = dateutil.parser.parse(
                    request.GET.get('modified').replace("Z", ""))
            except (ValueError, OverflowError):
                raise ApiException("Invalid ISO date", 400, "start")
            sge = sge.filter(event__date__modified__gte=mod_date)

        if request.GET.get('author'):
            #gets events by the author's username
            sge = sge.filter(
                event__author__user__username=request.GET.get('author'))
        #get your personal user group
        elif request.GET.get('me'):
            sge = sge.filter(group_id=request.user)
        #get group
        elif request.GET.get('group'):
            sge = sge.filter(group_id=request.GET.get('group'))
        else:
            #if aggergating accross multiple groups then select distint events
            sge = sge.filter(subscription__isnull=True)

        if request.GET.get('offset'):
            offset = int(request.GET.get('offset'))
        else:
            offset = 0

        if request.GET.get('n'):
            end = int(request.GET.get('n'))
        else:
            end = 20
        #example end=1
        if offset >= 0:
            #3, 4 works
            if end >= 0:
                sge = sge.\
                    filter(event__start_date__gte=begin).\
                    order_by('event__start_date', 'event__start_date_index')[offset: offset + end]
            #3 -2 works
            elif offset + end >= 0:
                sge = sge.\
                    filter(event__start_date__gte=begin).\
                    order_by('event__start_date', 'event__start_date_index')[offset + end: offset]
                sge = list(sge)
                sge.reverse()
            #3 - 5 works
            else:
                before_sge = sge.\
                    filter(event__start_date__lte=begin).\
                    order_by('-event__start_date', '-event__start_date_index')[:abs(offset + end)]
                sge = sge.\
                    filter(event__start_date__gte=begin).\
                    order_by('event__start_date', 'event__start_date_index')[:offset]
                sge = list(sge)
                sge.reverse()
                sge.extend(before_sge)
        #-1,
        else:
            #-1 -5
            if end <= 0:
                sge = sge.\
                    filter(event__start_date__lte=begin).\
                    order_by('-event__start_date', '-event__start_date_index')[abs(offset): abs(offset + end)]
            #-1, 4
            elif end + offset >= 0:
                after_sge = sge.\
                    filter(event__start_date__gte=begin).\
                    order_by('event__start_date', 'event__start_date_index')[:abs(end + offset)]
                sge = sge.\
                    filter(event__start_date__lte=begin).\
                    order_by('-event__start_date', '-event__start_date_index')[:abs(offset)]
                sge = list(sge)
                sge.reverse()
                sge.extend(after_sge)
            #-10 6
            else:
                sge = sge.\
                    filter(event__start_date__lte=begin).\
                    order_by('-event__start_date', '-event__start_date_index')[abs(offset + end): abs(offset)]
                sge = list(sge)
                sge.reverse()
        return utils.json_response([_sge.__json__() for _sge in sge])
Exemplo n.º 26
0
 def get(self, request):
     """get Notifications"""
     notes = db.Notification.objects.filter(to=request.user)
     return utils.json_response([note.to_JSON() for note in notes])
Exemplo n.º 27
0
    def get(self, request):
        """
        Gets a list of events.
        GET[n] specifies the number of events
        GET[start] Where to start getting the events from
        GET[offset] How many events to skip
        GET[author] selects events by the an authors username
        GET[group] gets all the events in a particular group
        GET[me] get all of the events in the usergroup of the current user
        """
        sge = db.SubGroupEvent.objects.select_related('event')

        if request.GET.get('complete') and request.GET.get('complete').lower() == 'false':
            sge = sge.filter(event__complete=False)
        else:
            sge = sge.filter(event__complete=True)

        if request.GET.get('start'):
            #change to use actully date
            try:
                begin = dateutil.parser.parse(request.GET.get('start').replace("Z", ""))
            except (ValueError, OverflowError):
                raise ApiException("Invalid ISO date", 400, "start")
        else:
            begin = datetime.utcnow().replace(tzinfo=tz.utc)

        if request.GET.get('modified'):
            try:
                mod_date = dateutil.parser.parse(request.GET.get('modified').replace("Z", ""))
            except (ValueError, OverflowError):
                raise ApiException("Invalid ISO date", 400, "start")
            sge = sge.filter(event__date__modified__gte=mod_date)

        if request.GET.get('author'):
            #gets events by the author's username
            sge = sge.filter(
                event__author__user__username=request.GET.get('author'))
        #get your personal user group
        elif request.GET.get('me'):
            sge = sge.filter(group_id=request.user)
        #get group
        elif request.GET.get('group'):
            sge = sge.filter(group_id=request.GET.get('group'))
        else:
            #if aggergating accross multiple groups then select distint events
            sge = sge.filter(subscription__isnull=True)

        if request.GET.get('offset'):
            offset = int(request.GET.get('offset'))
        else:
            offset = 0

        if request.GET.get('n'):
            end = int(request.GET.get('n'))
        else:
            end = 20
        #example end=1
        if offset >= 0:
            #3, 4 works
            if end >= 0:
                sge = sge.\
                    filter(event__start_date__gte=begin).\
                    order_by('event__start_date', 'event__start_date_index')[offset: offset + end]
            #3 -2 works
            elif offset + end >= 0:
                sge = sge.\
                    filter(event__start_date__gte=begin).\
                    order_by('event__start_date', 'event__start_date_index')[offset + end: offset]
                sge = list(sge)
                sge.reverse()
            #3 - 5 works
            else:
                before_sge = sge.\
                    filter(event__start_date__lte=begin).\
                    order_by('-event__start_date', '-event__start_date_index')[:abs(offset + end)]
                sge = sge.\
                    filter(event__start_date__gte=begin).\
                    order_by('event__start_date', 'event__start_date_index')[:offset]
                sge = list(sge)
                sge.reverse()
                sge.extend(before_sge)
        #-1,
        else:
            #-1 -5
            if end <= 0:
                sge = sge.\
                    filter(event__start_date__lte=begin).\
                    order_by('-event__start_date', '-event__start_date_index')[abs(offset): abs(offset + end)]
            #-1, 4
            elif end + offset >= 0:
                after_sge = sge.\
                    filter(event__start_date__gte=begin).\
                    order_by('event__start_date', 'event__start_date_index')[:abs(end + offset)]
                sge = sge.\
                    filter(event__start_date__lte=begin).\
                    order_by('-event__start_date', '-event__start_date_index')[:abs(offset)]
                sge = list(sge)
                sge.reverse()
                sge.extend(after_sge)
            #-10 6
            else:
                sge = sge.\
                    filter(event__start_date__lte=begin).\
                    order_by('-event__start_date', '-event__start_date_index')[abs(offset + end): abs(offset)]
                sge = list(sge)
                sge.reverse()
        return utils.json_response([_sge.__json__() for _sge in sge])
Exemplo n.º 28
0
 def delete(self, request):
     """Logout"""
     logout(request)
     return utils.json_response({'authenticated': False, 'username': ""})