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))