Example #1
0
    def forms_valid(self, forms):
        forms['poster_form'].save()
        date = forms['date_form'].save()
        info = forms['show_info_form'].save(commit=False)

        if self.request.FILES.get('image'):
            info.poster, created = Image.objects.get_or_create(
                image=self.request.FILES.get('image'),
                title="Poster",
                user=self.request.user)
        elif self.request.POST.get('poster'):
            imageId = self.request.POST.get('poster')
            info.poster = get_object_or_None(Image, id=imageId)

        if not info.location:
            if info.venue_id:
                info.location = info.venue.profile.contact_info.location
            else:
                info.location = self.request.user.profile.contact_info.location
        info.save()
        forms['show_info_form'].save_m2m()
        participants = info.participants()
        thread = create_thread(
            participants=participants,
            sender=self.request.user,
            subject="Event Thread",
            body=str(self.request.user.profile) + " added you in an event",
        )
        show = Show(info=info, date=date, thread=thread, approved=False)
        show.save()

        # create or edit event for each particpent in show
        for user in participants:
            if self.request.user != user:
                event = get_object_or_None(Event,
                                           show=show,
                                           calendar=user.calendar)
                if not event:
                    event = Event(show=show, calendar=user.calendar)
            else:
                event = forms['event_form'].save(commit=False)
                event.show = show
                event.calendar = user.calendar
                event.approved = True
            event.save()
        show.save()
        return self.get_success_url()
Example #2
0
def change_meeting(request):
    #print("come here")
    meetingid = request.POST.get('id')
    meeting = Meeting.objects.get(id=meetingid)
    # delete original meeting event relationship and events
    #mres = MeetingEventRelationship.objects.filter(meeting=meeting)
    #for mre in mres:
     #   event = mre.event
     #   event.delete()
     #   mre.delete()
    description = "Notice! Meeting information is changed !! Please decide whether  \
                you will attend again!! (original meeting event is deleted automatically)\n"

    _deletemeeting(meeting)
    group_name = request.POST.get('group_name')
    group = Group.objects.get(name=group_name)
    admin = group.admin
    title = request.POST.get('changed_title')
    description += request.POST.get('changed_description')
    start_time = request.POST.get('changed_start_time')
    end_time = request.POST.get('changed_end_time')

    meeting = Meeting(group=group, title=title, description=description,
                      start_time=start_time, end_time=end_time)
    meeting.save()

    event = Event(title=meeting.title,
                  description=meeting.description, start=meeting.start_time, end=meeting.end_time)
    event.creator = admin
    calendar = Calendar.objects.get(slug=admin.username)
    event.calendar = calendar
    event.save()
    mer = MeetingEventRelationship(meeting=meeting, event=event)
    mer.save()

    memberlist = find_all_members(group, True)
    result = 'true'
    for member in memberlist:
        if member == admin:
            continue
        status = sendmeetinginvitation(admin, member, group, meeting)
        if status is False:
            result = 'false'
    data = {'valid': result}
    data = json.dumps(data)
    mimetype = 'application/json'
    return HttpResponse(data, mimetype)
Example #3
0
def add_meeting(request):
    group_name = request.POST.get('group_name')
    title = request.POST.get('title')
    description = request.POST.get('description')
    start_time = request.POST.get('start_time')
    end_time = request.POST.get('end_time')
    group = Group.objects.get(name=group_name)
    admin = group.admin
    #find time convertor
    ##save this meeting into meeting table
    meeting = Meeting(group=group, title=title,
                      description=description, start_time=start_time, end_time=end_time)
    meeting.save()
    #bai! save event for the admin
    event = Event(title=title, description=description, start=start_time, end=end_time)
    event.creator = admin
    calendar = Calendar.objects.get(slug=admin.username)
    event.calendar = calendar
    event.save()
    #bai! save meetingeventrelationship for admin
    mer = MeetingEventRelationship(meeting=meeting, event=event)
    mer.save()

    ##send invitation to all member
    ###find all member
    memberlist = find_all_members(group, True)
    result = 'false'
    for member in memberlist:
        if member == admin:
            continue
        status = sendmeetinginvitation(admin, member, group, meeting)
        if status == True:
            result = 'true'
        else:
            result = 'false'
    data = {'valid': result}
    data = json.dumps(data)
    mimetype = 'application/json'
    return HttpResponse(data, mimetype)
Example #4
0
def accept_meeting(request):
    meeting_info = request.POST.getlist('meeting_info[]')
    username = request.POST.get('username')
    group_name = meeting_info[2]
    title = meeting_info[0]
    description = meeting_info[1]
    start_time = meeting_info[3]
    end_time = meeting_info[4]
    meetingid = meeting_info[5]

    # judge whether the member is in the meeting already
    meeting = Meeting.objects.get(id=meetingid)
    mers = MeetingEventRelationship.objects.filter(meeting=meeting)
    result = 'false'
    for mer in mers:
        if mer.event.creator.username == username:
            result = 'true'
            break

    if result == 'false':
        group = Group.objects.get(name=group_name)
        #send notification to admin
        admin = Group.objects.get(name=group_name).admin
        member = User.objects.get(username=username)
        message = username+ ' will attend the meeting ' + title + 'of group ' + group_name + '.'
        status = messageHandler.send_message(member, admin, message)
        if status == 200:
            result = 'true'
        else:
            result = 'false'
        if '-' in start_time:
            def convert(ddatetime):
                if ddatetime:
                    # ddatetime = ddatetime.split(' ')[0]
                    ddatetime = ddatetime.split('+')[0]
                    print("ddatetime is " + ddatetime)
                    time = datetime.datetime.strptime(ddatetime, '%Y-%m-%dT%H:%M:%S')
                    return time
        else:
            def convert(ddatetime):
                return datetime.datetime.utcfromtimestamp(float(ddatetime))

        #store an event of that user
        ##add event
        start_time = convert(start_time)
        end_time = convert(end_time)
        if settings.USE_TZ:
        # If USE_TZ is True, make start and end dates aware in UTC timezone
            utc = pytz.UTC
            start_time = utc.localize(start_time)
            end_time = utc.localize(end_time)
        event = Event(title=title, description=description, start=start_time, end=end_time)
        user = User.objects.get(username=username)
        calendar = Calendar.objects.get(slug=username)
        event.creator = user
        event.calendar = calendar
        event.save()

        # accept the invitation
        messageHandler.set_meetinginvitation_accept(member, group, meeting)
        #increase attendees

        # add meeting event relationship
        mer = MeetingEventRelationship(meeting=meeting, event=event)
        mer.save()
    res = {'valid': result}
    res = json.dumps(res)
    mimetype = 'application/json'
    return HttpResponse(res, mimetype)