Пример #1
0
def create_new_apptour(post_text):
    if post_text.get("tour").get("status") == "incomplete":
        print("saving new tour")
    else:
        print("creating new tour")
    tour = Tour(
        tour_name=post_text.get("tour").get("tour_name"),
        status=post_text.get("tour").get("status"),
        tour_description=post_text.get("tour").get("tour_description"),
        tour_groups=transform_tour_groups_field(post_text.get("tour").get("tour_groups")),
        tour_image=post_text.get("tour").get("tour_image"),
        tour_create_date=datetime.now()
    )
    tour.save(force_insert=True)
    connect_apptour_to_users(tour_id=tour.id)
    for step in post_text.get("steps"):
        step = Step(
            placement=step.get('placement'),
            title=step.get('title'),
            element=step.get('element'),
            content=step.get('content'),
            path=step.get('path'),
            order=step.get('order'),
            tour=tour
        )
        step.save(force_insert=True)
Пример #2
0
 def iterate(self):
     self.move_particles()
     self.set_pbest()
     self.set_gbest()
     self.best = Tour(0, self.cost_map)
     solution = np.argsort(np.argsort(self.gbest_position))
     for i in solution:
         self.best.add(i)
Пример #3
0
 def tour_insert(self, request):
     if request.from_datastore:
         my_quote = request
     else:
         my_quote = Tour(sculpture_list=request.sculpture_list, description=request.description)
     
     my_quote.put()
     return my_quote
Пример #4
0
 def get_tour(self):
     if self._tour:
         return self._tour
     tour = Tour(0, self.cost_map)
     solution = np.argsort(np.argsort(self.position))
     for i in solution:
         tour.add(i)
     self._tour = tour
     return tour
Пример #5
0
class ParticleSwarmOptimization(Algorithm):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        total_cities = len(self.cities)
        self.particles = [
            Particle(total_cities, self.cost_map)
            for _ in range(number_particles)
        ]
        self.gbest_value = float('inf')
        self.gbest_position = None

        self.set_pbest()
        self.set_gbest()

    def set_pbest(self):
        for particle in self.particles:
            fitness_cadidate = particle.get_tour().cost
            if fitness_cadidate < particle.pbest_value:
                particle.pbest_value = fitness_cadidate
                particle.pbest_position = deepcopy(particle.position)

    def set_gbest(self):
        for particle in self.particles:
            best_fitness_cadidate = particle.get_tour().cost
            if best_fitness_cadidate < self.gbest_value:
                self.gbest_value = particle.get_tour().cost
                self.gbest_position = deepcopy(particle.position)

    def move_particles(self):
        for particle in self.particles:
            new_velocity = (W * particle.velocity)\
                           + c1 * random.random() * (particle.pbest_position - particle.position)\
                           + c2 * random.random() * (self.gbest_position - particle.position)
            particle.velocity = new_velocity
            particle.move()

    def get_tour(self):
        tour = Tour(0, self.cost_map)
        solution = np.argsort(np.argsort(self.gbest_position))
        for i in solution:
            tour.add(i)
        return tour

    def iterate(self):
        self.move_particles()
        self.set_pbest()
        self.set_gbest()
        self.best = Tour(0, self.cost_map)
        solution = np.argsort(np.argsort(self.gbest_position))
        for i in solution:
            self.best.add(i)
Пример #6
0
 def create(self, tour):
     """
     This function creates new tour object and adds it to DB
     :param tour: dictionary with tour's info
     """
     new_tour = Tour(**tour)
     self.session.add(new_tour)
     self.session.commit()
Пример #7
0
 def post(self):
     selected_sculpture_key = ndb.Key(urlsafe=self.request.get("sculpture_list")) 
     selected_sculpture = selected_sculpture_key.get()
     sculpture_to_add = selected_sculpture.entityKey
     if self.request.get("entityKey"):
         tour_key = ndb.Key(urlsafe=self.request.get("entityKey"))
         tour = tour_key.get()       
         tour.description = self.request.get("description")
         selected_sculpture_key = ndb.Key(urlsafe=self.request.get("sculpture_list")) 
         selected_sculpture = selected_sculpture_key.get()
         sculpture_list = tour.sculpture_list
         sculpture_list.append(sculpture_to_add)
         tour.sculpture_list = sculpture_list
         tour.put()
     else:
         new_tour = Tour(description = self.request.get("description"),
                         sculpture_list = [sculpture_to_add]) 
         new_tour.put()
     self.redirect(self.request.referer)
Пример #8
0
def update_existing_apptour(post_text):
    #check to se if creating a new apptour or making a previously incomplete(i.e., saved) apptour complete
    existing_tour = Tour.objects.get(id=post_text.get("tour").get("id"))
    if existing_tour.status == "incomplete":
        #creating new tour from existing saved tour
        if post_text.get("tour").get("status") == "incomplete":
            print("saving saved tour")
        else:
            print("creating saved tour")
        tour = Tour(
            tour_name=post_text.get("tour").get("tour_name"),
            id=post_text.get("tour").get("id"),
            status=post_text.get("tour").get("status"),
            tour_description=post_text.get("tour").get("tour_description"),
            tour_groups=transform_tour_groups_field(post_text.get("tour").get("tour_groups")),
            tour_image=post_text.get("tour").get("tour_image"),
            tour_create_date=datetime.now()
        )
        tour.save(force_update=True)
    else:
        #updaing an existing tour
        if post_text.get("tour").get("status") == "incomplete":
            print("saving previously created tour")
            print("warning: the previoius version and the newer version will both be unaccessable to the users at this time")
        else:
            print("updating previously created tour")
        tour = Tour(
            tour_name=post_text.get("tour").get("tour_name"),
            id=post_text.get("tour").get("id"),
            status=post_text.get("tour").get("status"),
            tour_description=post_text.get("tour").get("tour_description"),
            tour_groups=transform_tour_groups_field(post_text.get("tour").get("tour_groups")),
            tour_image=post_text.get("tour").get("tour_image"),
            tour_create_date=existing_tour.tour_create_date,
            tour_update_date=datetime.now()
        )
        tour.save(force_update=True)
    Step.objects.filter(tour__id=post_text.get("tour").get("id")).delete()
    for step in post_text.get("steps"):
        step = Step(
            placement=step.get('placement'),
            title=step.get('title'),
            element=step.get('element'),
            content=step.get('content'),
            path=step.get('path'),
            order=step.get('order'),
            tour=tour
        )
        step.save(force_insert=True)
def edit():
    is_valid = Tour.validate_edit(request.form)
    if is_valid:
        print(request.form)
        edit_tour = Tour.query.get(session["tour_id"])
        print("*" * 40)
        print(edit_tour)
        edit.artist = request.form['artist']
        edit.date = request.form['date']
        edit.city = request.form['city']
        db.session.commit()
        return redirect("/")
    else:
        return render_template("edit.html")
Пример #10
0
 def _tour(players):
     i=0
     last=len(players)/2
     res=[]
     while i<last:
         tour=Tour(tour=tour_num,player1=players[i],player2=players[last+i])
         tour.save()
         res.append(tour)
         i+=1
     l=len(players)
     if l%2:
         tour=Tour(tour=tour_num,player1=players[l-1],points=1)
         tour.save()
         res.append(tour)
     return res
Пример #11
0
 def get_tour(self):
     tour = Tour(0, self.cost_map)
     solution = np.argsort(np.argsort(self.gbest_position))
     for i in solution:
         tour.add(i)
     return tour
Пример #12
0
def tour(name):
    
    tour = Tour(name)
    return render_template('tour.html', tour=json.dumps(tour.load_tour()))
Пример #13
0
def tour(request):
    """
     Handles adding a tour
    """
    current_user = request.user
    #get class
    currentStudent = Student.objects.get(pk=current_user.entityId)
    studentClass = currentStudent.team.teacher.className
    students = Student.objects.filter(team__teacher__className=studentClass)

    SlideFormSet = formset_factory(forms.TourSlide,extra=1)
    if request.method == 'POST':
        #create forms
        tourForm = forms.TourForm(request.POST,request.FILES)
        slideFormset = SlideFormSet(request.POST,request.FILES)

        #validate forms
        if tourForm.is_valid() and slideFormset.is_valid():
            #create tour
            newTour = Tour(title=tourForm.cleaned_data['title'],teamPhoto=tourForm.cleaned_data["teamPhoto"],student=currentStudent)
            newTour.save()

            #create tour authors
            for authorId in request.POST.getlist('authors[]',[]):
                #get student
                student = Student.objects.get(pk=authorId)
                #create tour author
                author = TourAuthors(student=student,tour=newTour)
                author.save()

            #create tour slides
            slideIdx=1
            defaultCoverPhoto = slideFormset.forms[0].cleaned_data['image']
            for slide in slideFormset.forms:
                TourSlide(photo=slide.cleaned_data['image'],text=slide.cleaned_data['text'],
                          link=slide.cleaned_data['link'],tour=newTour,sequence=slideIdx,audio=slide.cleaned_data['audio']).save()
                if(slide.cleaned_data['isCoverPhoto']):
                    #set cover photo
                    newTour.coverPhoto = slide.cleaned_data['image']
                    newTour.save()
                slideIdx= slideIdx + 1

            if not newTour.coverPhoto:
                newTour.coverPhoto = defaultCoverPhoto
                newTour.save()



             #return response
            json_data = json.dumps({"HTTPRESPONSE": 200})
            return HttpResponse(json_data, mimetype="application/json")
        else:
            return render_to_response('add_a_tour.html',{'tour':tourForm,'slide_formset':slideFormset,'students':students},context_instance=RequestContext(request))

    else:
        #get request
        #tour form
        tour = forms.TourForm()
        #tour slides
        slide_formset = SlideFormSet()
        #students
        return render_to_response('add_a_tour.html',{'tour':tour,'slide_formset':slide_formset,'students':students},context_instance=RequestContext(request))
Пример #14
0
def tour(request):
    """
     Handles adding a tour
    """
    current_user = request.user
    #get class
    currentStudent = Student.objects.get(pk=current_user.entityId)
    studentClass = currentStudent.team.teacher.className
    students = Student.objects.filter(team__teacher__className=studentClass)

    SlideFormSet = formset_factory(forms.TourSlide, extra=1)
    if request.method == 'POST':
        #create forms
        tourForm = forms.TourForm(request.POST, request.FILES)
        slideFormset = SlideFormSet(request.POST, request.FILES)

        #validate forms
        if tourForm.is_valid() and slideFormset.is_valid():
            #create tour
            newTour = Tour(title=tourForm.cleaned_data['title'],
                           teamPhoto=tourForm.cleaned_data["teamPhoto"],
                           student=currentStudent)
            newTour.save()

            #create tour authors
            for authorId in request.POST.getlist('authors[]', []):
                #get student
                student = Student.objects.get(pk=authorId)
                #create tour author
                author = TourAuthors(student=student, tour=newTour)
                author.save()

            #create tour slides
            slideIdx = 1
            defaultCoverPhoto = slideFormset.forms[0].cleaned_data['image']
            for slide in slideFormset.forms:
                TourSlide(photo=slide.cleaned_data['image'],
                          text=slide.cleaned_data['text'],
                          link=slide.cleaned_data['link'],
                          tour=newTour,
                          sequence=slideIdx,
                          audio=slide.cleaned_data['audio']).save()
                if (slide.cleaned_data['isCoverPhoto']):
                    #set cover photo
                    newTour.coverPhoto = slide.cleaned_data['image']
                    newTour.save()
                slideIdx = slideIdx + 1

            if not newTour.coverPhoto:
                newTour.coverPhoto = defaultCoverPhoto
                newTour.save()

            #return response
            json_data = json.dumps({"HTTPRESPONSE": 200})
            return HttpResponse(json_data, mimetype="application/json")
        else:
            return render_to_response('add_a_tour.html', {
                'tour': tourForm,
                'slide_formset': slideFormset,
                'students': students
            },
                                      context_instance=RequestContext(request))

    else:
        #get request
        #tour form
        tour = forms.TourForm()
        #tour slides
        slide_formset = SlideFormSet()
        #students
        return render_to_response('add_a_tour.html', {
            'tour': tour,
            'slide_formset': slide_formset,
            'students': students
        },
                                  context_instance=RequestContext(request))
Пример #15
0
 def __init__(self, cities: List[City], cost_map):
     self.cities = deepcopy(cities)
     self.cost_map = cost_map
     self.best: Tour = Tour(0, cost_map)