def createNormalMeeting(request,clubid):
        try:
            exCount = 0
            exCount =  Meeting.objects.filter(meetingno__exact=request.DATA["meetingno"],club_id__exact=clubid).count()
            if exCount > 0:
                return (0,"Meeting is duplicated with meeting number!")
        except:
            pass
        
        try:
            exCount = 0            
            starttime = datetime.fromtimestamp(request.DATA["starttime"]/1000)
            sts = datetime(starttime.year,starttime.month,starttime.day)
            sTimeticks = int(time.mktime(sts.timetuple())*1000)
            eTimeticks = sTimeticks + 86400000 #24*3600000
            exCount = Meeting.objects.filter(starttime__gt =sTimeticks,starttime__lt =eTimeticks,club_id__exact=clubid).count()
            if exCount > 0:
                return (0,"Meeting is duplicated with meeting time!")
        except:
            pass
        
        #this user is on some term which is not finished
        try:
            term = Term.objects.filter(club_id__exact = clubid,finished__exact=False).order_by('startdate')[0]
        except:
            return (0,"Meeting is invalid as no related term is existed!")

        meeting = Meeting()
        meeting.meetingno = request.DATA["meetingno"]
        meeting.theme = request.DATA["theme"]
        meeting.venue = request.DATA["venue"]
        #meeting time : 3/13/2014 07:44
        meeting.starttime = request.DATA["starttime"]
        meeting.endtime = meeting.starttime + 2*3600000
        meeting.status = MeetingStatus.CREATED
        meeting.term = term
        meeting.club = term.club
        
        try:
            meeting.save()
        except:
            return (0,"Meeting is invalid as internal error!")
        
        # activity = {"sequence":1,"title":"Title","duration":5,"roles":null};
        CurRoles = []
        EFRoles = {RoleEnum.Speaker:[],RoleEnum.IE:[],RoleEnum.TTM:[],RoleEnum.TTE:[]}
        if "activities" in request.DATA and request.DATA["activities"] is not None \
        and len(request.DATA["activities"]) > 0:
            for reqActivity in request.DATA["activities"]:
                act = Activity()
                act.title = reqActivity["title"]
                act.expand = reqActivity["expand"]
                act.name = reqActivity["name"]
                act.duration = reqActivity["duration"]
                act.sequence = reqActivity["sequence"]
                act.meeting = meeting
                act.save()
                
                # role= {"sequence":1,"roletype":0,"title":"Title","minduration":1,"maxduration":2};
                if "roles" in reqActivity and reqActivity["roles"] is not None \
                and len(reqActivity["roles"]) > 0:
                    actduration = 0
                    for reqRole in reqActivity["roles"]:
                        mrole = None
                        for irole in CurRoles:
                            if irole.roletype == reqRole["roletype"] and irole.title == reqRole["title"]:
                                mrole = irole
                                break
                        if mrole is None:
                            mrole = RoleTaken()
                            mrole.roletype = reqRole["roletype"]
                            if reqRole["title"] and len(reqRole["title"])>1 :
                                mrole.title = reqRole["title"]
                            else:
                                mrole.title = RoleDesc[reqRole["roletype"]] 
                            if (mrole.roletype == RoleEnum.Speaker or mrole.roletype == RoleEnum.TTM \
                            or mrole.roletype == RoleEnum.Workshop) and (not ":" in mrole.title):
                                mrole.title = mrole.title + ":"
                            mrole.comment = ""
                            mrole.ctask = ""
                            mrole.ltask = ""
                            mrole.owner = None
                            mrole.iefor = None
                            mrole.meeting = meeting
                            mrole.save()
                            CurRoles.append(mrole)
                            
                        arr = ARRelation()
                        arr.ctitle = reqRole["ctitle"]
                        arr.activity = act
                        arr.roletaken = mrole                                            
                        arr.sequence = reqRole["sequence"]                            
                        arr.minduration = reqRole["minduration"]
                        arr.maxduration = reqRole["maxduration"]
                        arr.save()
                        
                        if mrole.roletype == RoleEnum.Speaker or mrole.roletype == RoleEnum.IE \
                        or mrole.roletype == RoleEnum.TTM or mrole.roletype == RoleEnum.TTE:
                            newef = True
                            for efrole in EFRoles[mrole.roletype]:
                                if efrole['role'].id == mrole.id:
                                    newef = False
                                    break
                            if newef:
                                EFRoles[mrole.roletype].append({'role':mrole,'iefor':reqRole["iefor"]})                        
                        
                        actduration = actduration + arr.maxduration
                
                    act.duration = actduration
                    #act.duration = 0
                    act.save()
                    
        for erole in EFRoles[RoleEnum.IE]:
            for efrole in EFRoles[RoleEnum.Speaker]:
                if len(erole['iefor'])>0 and erole['iefor'] == efrole['role'].title:
                    erole['role'].iefor_id = efrole['role'].id
                    erole['role'].title = erole['role'].title.split(":")[0]+":for " + efrole['role'].title.split(":")[0]
                    erole['role'].save()
                    break
        
        for erole in EFRoles[RoleEnum.TTE]:
            for efrole in EFRoles[RoleEnum.TTM]:
                if len(erole['iefor'])>0 and erole['iefor'] == efrole['role'].title:
                    erole['role'].iefor_id = efrole['role'].id
                    erole['role'].title = erole['role'].title.split(":")[0]+":for " + efrole['role'].title.split(":")[0]
                    erole['role'].save()
                    break
                    
        return (meeting.pk,"Meeting {} is created successfully!".format(meeting.meetingno))