Ejemplo n.º 1
0
    def get_messages_by_subject_id(self, subject_id):
        """
        возвращает список всех сообщений для конкретного пользователя в формате:
        [(Unit, Unit, ...), ... ], где каждый кортеж соответствует одному сообщению.
        """
        try:
            connection = sqlite3.connect(self.__connection_string)
            cursor = connection.cursor()
            cursor.execute(
                """
                SELECT key, time, pack_id
                    FROM research_work_keyreleasetime AS kr_time,
                         (SELECT id
                            FROM research_work_pack AS pack
                            WHERE pack.subject_id = ?) AS pack
                    WHERE kr_time.pack_id = pack.id
                    ORDER BY time
                """, (subject_id, ))
            # интерпретируем эти юниты как нажатия
            messages = dict()
            for row in cursor.fetchall():
                if row[2] in messages.keys():
                    messages[row[2]].append(
                        Unit(row[1], row[0], KEY_PRESS_UNIT_TYPE))
                else:
                    messages[row[2]] = [
                        Unit(row[1], row[0], KEY_PRESS_UNIT_TYPE)
                    ]

            cursor.execute(
                """
                SELECT key, time, pack_id
                    FROM research_work_keypresstime AS kp_time,
                         (SELECT id
                            FROM research_work_pack AS pack
                            WHERE pack.subject_id = ?) AS pack
                    WHERE kp_time.pack_id = pack.id
                    ORDER BY time
                """, (subject_id, ))
            # интерпретируем эти юниты как отпускания
            for row in cursor.fetchall():
                if row[2] in messages.keys():
                    messages[row[2]].append(
                        Unit(row[1], row[0], KEY_RELEASE_UNIT_TYPE))
                else:
                    messages[row[2]] = [
                        Unit(row[1], row[0], KEY_RELEASE_UNIT_TYPE)
                    ]

            result = list()
            for key in messages.keys():
                result.append(
                    tuple(sorted(messages[key], key=(lambda x: x.time_stamp))))
            return result

        except Exception as e:
            print(e)
        finally:
            connection.close()
Ejemplo n.º 2
0
    def GetCountRow(self):
        count = 1
        xldb =  Unit()
        kq = xldb.DanhSach()
        if kq!=None:
            count = len(kq)

        return count
Ejemplo n.º 3
0
    def get_all_units_by_subject_id(self, subject_id):
        """
        возвращает список, отсортированных по дате создания, всех юнитов конкретного пользователя
        """
        try:
            connection = sqlite3.connect(self.__connection_string)
            cursor = connection.cursor()
            cursor.execute(
                """
                SELECT key, time
                    FROM research_work_keypresstime AS kp_time,
                         (SELECT id
                            FROM research_work_pack AS pack
                            WHERE pack.subject_id = ?) AS pack
                    WHERE kp_time.pack_id = pack.id
                """, (subject_id, ))
            #интерпретируем эти юниты как отпускания
            result_seq = [
                Unit(unit[1], unit[0], unit_type=KEY_RELEASE_UNIT_TYPE)
                for unit in cursor.fetchall()
            ]

            cursor.execute(
                """
                SELECT key, time
                    FROM research_work_keyreleasetime AS kr_time,
                         (SELECT id
                            FROM research_work_pack AS pack
                            WHERE pack.subject_id = ?) AS pack
                    WHERE kr_time.pack_id = pack.id
                """, (subject_id, ))
            #интерпретируем эти юниты как нажания
            result_seq += [
                Unit(unit[1], unit[0], unit_type=KEY_PRESS_UNIT_TYPE)
                for unit in cursor.fetchall()
            ]
            result_seq.sort(key=(lambda x: x.time_stamp))
            return result_seq

        except Exception as e:
            print(e)
        finally:
            connection.close()
Ejemplo n.º 4
0
    def test01(self):

        u1 = Unit(title="First Chapter")
        u1.save()
        self.assertEqual(u1.seq, 1)
        u = Unit(title="First Section", parent=u1)
        u.save()
        self.assertEqual(u.seq, 1)
        u = Unit(title="Second Section", parent=u1)
        u.save()
        self.assertEqual(u.seq, 2)

        self.assertEqual(u.pk, 3)
        try:
            #print "set parent to self"
            u.parent = u
            u.save()
            print "save() : done"
        except ModelValidationError, e:
            #s="\n".join([e.as_text() for m in e.messages])
            self.assertEqual(str(e), "Parent cannot be self")
Ejemplo n.º 5
0
    def OnLoadData(self):
        xldb =  Unit()
        dsAll =  xldb.DanhSach()
        if dsAll!=None:
            self.m_gridSource.ClearGrid()
            for i in range (0,len(dsAll)):
                cell = dsAll[i]
                self.m_gridSource.SetCellValue(i,0,str(cell['ID']))
                self.m_gridSource.SetCellValue(i,1,str(cell['unit_code']))
                self.m_gridSource.SetCellValue(i,2,str(cell['unit_name']))

        return
Ejemplo n.º 6
0
    def _populate_units(self, project_obj):
        """ Fill Units collections """

        unit_project = UnitProject()
        unit_project.title.value = project_obj.project_title.value
        unit_project.id.value = project_obj.project_id.value

        if project_obj.operating_unit_id.value in self.units.pks:
            self.units.collection[project_obj.operating_unit_id.value].projects.value.append(unit_project.to_dict())
        else:
            unit = Unit()
            unit.op_unit.value = project_obj.operating_unit_id.value
            unit.projects.value.append(unit_project.to_dict())
            self.units.add(project_obj.operating_unit_id.value, unit)
def get_units(total_intervals):
    f = open(units_dir)

    units_count = int(f.readline())
    units = []

    for index in range(units_count):
        unit_number = f.readline()
        unit_capacity = f.readline()
        unit_maintenance_count = f.readline()
        unit = Unit(unit_number, unit_capacity, unit_maintenance_count,
                    len(total_intervals))
        units.append(unit)

    return units
 def GetData(self, loai):
     if loai == 1:
         xldb = Unit()
         dsAll = xldb.DanhSach()
     else:
         xldb = ProductTypeModel()
         dsAll = xldb.DanhSach()
     celldata = []
     if dsAll != None:
         for i in range(0, len(dsAll)):
             cell = dsAll[i]
             if loai == 1 and str(cell['unit_name']) != "":
                 celldata.append(str(cell['unit_name']))
             elif loai == 2 and str(cell['product_type_name']) != "":
                 celldata.append(str(cell['product_type_name']))
     return celldata
Ejemplo n.º 9
0
 def m_btnXoaOnButtonClick( self, event ):
     try:
         cell_value = []
         row_index = self.m_gridSource.GetSelectedRows()[0]
         for i in range(0,3):
             cell_value.append(self.m_gridSource.GetCellValue(row_index,i))
         
         xldb =  Unit()
         Id =  str(cell_value[0])
         kq = xldb.Delete(Id)
         if kq>0:
             self.OnLoadData()
         else: 
             wx.MessageBox("Error when trying delete this record","Messages",wx.OK|wx.ICON_WARNING)
     except :
         wx.MessageBox("Please select record to delete")
Ejemplo n.º 10
0
    def get(self):
        units = Unit.gql("where user = :1", users.get_current_user() )

	if units.count() == 0:
	    unit = Unit()
	    unit.x = 20
	    unit.y = 20
	    unit.user = users.get_current_user()
	    unit.put()

        units = Unit.gql("where user = :1", users.get_current_user() )
	    
        json = {"units":[]}
        
        for unit in units:
            json["units"].append( {"x":unit.x, "y":unit.y, "id":unit.key().id(), "owner":unit.user.nickname() } )
            
        self.response.out.write(demjson.encode(json))
Ejemplo n.º 11
0
def details(request, bldg_tag, city_tag):


    city = City.objects.filter(tag=city_tag)
    #old way... this doesn't work very reliably:
    #address = re.sub('_', ' ', bldg_tag)
    #buildings = Building.objects.filter(city=city).filter(address=address)
    buildings = Building.objects.filter(city=city).filter(tag=bldg_tag)
    if buildings.count():
        building = buildings[0]

        if not building.units.count():
            #must have a building with no associated units...
            #may only have one unit
            #or others may have been incorrectly created as separate buildings
            #either way we can start by making a new unit here
            #(and then merging in any others manually)

            unit = Unit()
            unit.building = building
            unit.number = ''
            # don't want to set this unless it's different:
            #unit.address = building.address 

            ## bedrooms
            ## bathrooms
            ## sqft
            ## max_occupants
            unit.save()
    else:
        building = None

    #print building.units.all()[0].tag
    #unit_url = reverse('unit_details', kwargs={'city_tag':building.city.tag, 'bldg_tag':building.tag, 'unit_tag':building.units.all()[0].tag})
    #print unit_url

        
    context = { 'building': building,
                'units': building.units.all(),
                'user': request.user,
                'redirect_field': REDIRECT_FIELD_NAME,
                }
    return render(request, 'details.html', context)
Ejemplo n.º 12
0
 def m_btnSuaOnButtonClick( self, event ):
     try:
         cell_value = []
         row_index = self.m_gridSource.GetSelectedRows()[0]
         for i in range(0,3):
             cell_value.append(self.m_gridSource.GetCellValue(row_index,i))
         
         xldb =  Unit()
         Id =  str(cell_value[0])
         Ma =  str(cell_value[1])
         Ten =  str(cell_value[2])
         kq = xldb.Update(Id,Ma,Ten)
         if kq>0:
             self.OnLoadData()
             wx.MessageBox("Record added successfully","Messages",wx.OK|wx.ICON_INFORMATION)
         else: 
             wx.MessageBox("Error when trying add record","Messages",wx.OK|wx.ICON_WARNING)
     except :
         wx.MessageBox("Please select your record to update")
     event.Skip()
Ejemplo n.º 13
0
def get_units():
    units_object = []

    for url in urls.keys():
        file_path = f"cache/{url}"
        if not os.path.exists(file_path):
            html = requests.get(base_url + url).text
            print(f"requesting {base_url + url}")
            with open(file_path, "w") as f:
                f.write(html)
        with open(file_path, "r") as f:
            data = etree.HTML(f.read())

        for unit in data.xpath("//*[@id='content_container_']/ul/li"):
            code = unit.xpath(".//a/text()")[0].strip()
            name = unit.xpath("text()")
            if len(name) == 0:
                continue
            units_object.append(Unit(code, name[0].strip(), urls.get(url)))

    return units_object
Ejemplo n.º 14
0
def parse_csv(csv_record):
    """
    Parsing may be a little too strong of a description
    """
    # I'm not sure if this is a mistake in the csv file, the fact that it
    # was embedded in the PDF, or if it's just a gotcha
    price = float(csv_record[" Price "].strip().split("$")[1])
    cost = float(csv_record[" Cost"].strip().split("$")[1])
    shelf_life = int(csv_record["ShelfLife"].split("d")[0])
    last_sold = arrow.get(csv_record["lastSold"], "M/D/YYYY")

    return {
        "product_id": csv_record["ID"],
        "description": csv_record["Description"],
        "last_sold": last_sold,
        "shelf_life": shelf_life,
        "department": Department[csv_record["Department"]],
        "price": price,
        "unit": Unit(csv_record["Unit"]),
        "x_for": csv_record["xFor"],
        "cost": cost,
    }
Ejemplo n.º 15
0
 def InsertFromGrid(self):
     try:
         cell_value = []
         row_index = self.m_gridSource.GetSelectedRows()[0]
         for i in range(0,3):
             cell_value.append(self.m_gridSource.GetCellValue(row_index,i))
         
         xldb =  Unit()
         Id =  str(cell_value[0])
         Ma =  str(cell_value[1])
         Ten =  str(cell_value[2])
         if Ma == "":
             return 0
        
         self.m_gridSource.AppendRows(1)
         kq = xldb.Insert(Ma,Ten)
         if kq>0:
             return 1
         else: 
             return 0
     except :
         return 0
Ejemplo n.º 16
0
 def m_btnThemOnButtonClick( self, event):
     kq = 0
     if self.CheckValid()==False:
         kq = self.InsertFromGrid()
         if(kq == 0):
             wx.MessageBox("Please fill all required fields","Messages",wx.OK|wx.ICON_WARNING)
             self.m_textunit_code.SetFocus()
             return
     else :
         Ma = self.m_textunit_code.GetValue()
         Ten = self.m_textunit_name.GetValue()
         # if(self.GetCountRow()>14):
         self.m_gridSource.AppendRows(1)
         xldb =  Unit()
         kq = xldb.Insert(Ma,Ten)
     if kq>0:
         self.OnLoadData()
         wx.MessageBox("Record added successfully","Messages",wx.OK|wx.ICON_INFORMATION)
         self.m_textunit_code.SetValue("")
         self.m_textunit_name.SetValue("")
     else: 
         wx.MessageBox("Error when trying add record","Messages",wx.OK|wx.ICON_WARNING)
Ejemplo n.º 17
0
def change_unit(id, do):
    id = int(id)

    if do == "add":
        s = Unit()
    else:
        s = mydb.session.query(Unit).filter(Unit.id_unit == id).one_or_none()

    form = UnitForm(request.form, obj=s)

    if do == "delete":
        mydb.session.delete(s)
        mydb.session.flush()
        return redirect(url_for('unit'))

    if form.button_save.data:
        form.populate_obj(s)
        mydb.session.add(s)
        if s.id_unit != id:
            return redirect(url_for('unit', id=s.id_unit))

    return render_template('change_unit.html', form=form)
Ejemplo n.º 18
0
 def post(self):
   unit = Unit()
   unit.x = int(self.request.get("x"))
   unit.y = int(self.request.get("y"))
   unit.user = users.get_current_user()
   unit.put()
Ejemplo n.º 19
0
# add schools to DB from file
with open(data_dir + 'schools.csv', 'r') as fp:
    for line in fp:
        line = line.strip().split(',')[:2]
        if line[0] != '#':
            school = School(id=line[0], name=line[1])
            session.add(school)
    session.flush()

# add units to DB from file
with open(data_dir + 'units.csv', 'r') as fp:
    for line in fp:
        line = line.strip().split(',')[:1][0]
        if line[0] != '#':
            unit = Unit(name=line)
            session.add(unit)
    session.flush()

# add teachers to DB from file
with open(data_dir + 'teachers.csv', 'r') as fp:
    for line in fp:
        line = line.strip().split(',')[:3]
        if line[0] != '#':
            school = session.query(School).filter_by(name=line[2]).first()
            teacher = Teacher(id=line[0], name=line[1], school_id=school.id)
            session.add(teacher)
    session.flush()

# add students to DB from file
with open(data_dir + 'students.csv', 'r') as fp:
Ejemplo n.º 20
0
    def set_new_unit_data_into_db(data):
        new_unit_id = data["id"]
        new_unit_name = data['name']
        new_nuit_description = data['description'] if "description" in data else None
        new_unit_expansion = data['expansion']
        new_unit_age = data['age']
        new_unit_created_in = data['created_in']
        new_unit_cost = data['cost']
        #  ubit 43 reload_time constrain(not null) so I but any number to pass
        new_unit_build_time = data['build_time'] if "build_time" in data else 1
        # ubit 53  reload_time constrain not null, so I but any number to pass
        new_unit_reload_time = data['reload_time'] if "reload_time" in data else 1.2
        new_unit_attack_delay = data['attack_delay'] if "attack_delay" in data else None
        new_unit_movement_rate = data['movement_rate']
        new_unit_line_of_sight = data['line_of_sight']
        new_unit_hit_points = data['hit_points']
        new_unit_range = data['range'] if "range" in data else None
        #  ubit 53 attack constrain not null, so I but any number here to pass test
        new_unit_armor = data['armor']
        new_unit_attack = data['attack'] if "attack" in data else 1
        new_unit_armor = data['armor']
        new_unit_search_radius = data['search_radius'] if "search_radius" in data else None
        new_unit_accuracy = data['accuracy'] if "accuracy" in data else None
        new_unit_blast_radius = data['blast_radius'] if "blast_radius" in data else None
        new_unit_attack_bonuses = data['attack_bonus'].copy() if "attack_bonus" in data else None
        new_unit_armor_bonuses = data['armor_bonus'].copy() if "armor_bonus" in data else None

        #  see if the unit has attack/armor bounses
        attack_bonus = has_attack_bonus(new_unit_attack_bonuses)
        armor_bonus = has_armor_bonus(new_unit_armor_bonuses)

        try:
            #  save unit data into unit table
            new_unit = Unit(id=new_unit_id, name=new_unit_name, description=new_nuit_description, expansion=new_unit_expansion, age=new_unit_age, created_in=new_unit_created_in, cost=new_unit_cost, build_time=new_unit_build_time, reload_time=new_unit_reload_time, attack_delay=new_unit_attack_delay, movement_rate=new_unit_movement_rate, line_of_sight=new_unit_line_of_sight, hit_points=new_unit_hit_points, unit_range=new_unit_range, attack=new_unit_attack, armor=new_unit_armor, search_radius=new_unit_search_radius, accuracy=new_unit_accuracy, blast_radius=new_unit_blast_radius)
            new_unit.insert()
            #  in case unit has poth attack and armor bouns
            if ((attack_bonus is True) and (armor_bonus is True)):
                new_attack_bouns = AttackBouns(attackBouns=new_unit_attack_bonuses)
                new_armor_bouns = ArmorBouns(armorBouns=new_unit_armor_bonuses)
                new_unit.attack_bonuses = [new_attack_bouns]
                new_unit.armor_bonuses = [new_armor_bouns]
                new_attack_bouns.insert()
                new_armor_bouns.insert()

            #  in case unit has only armor bouns
            elif((attack_bonus is False) and (armor_bonus is True)):
                new_armor_bouns = ArmorBouns(armorBouns=new_unit_armor_bonuses)
                new_unit.armor_bonuses = [new_armor_bouns]
                new_armor_bouns.insert()

            #  in case unit has only attack bouns
            elif((attack_bonus is True) and (armor_bonus is False)):
                new_attack_bouns = AttackBouns(attackBouns=new_unit_attack_bonuses)
                new_unit.attack_bonuses = [new_attack_bouns]
                new_attack_bouns.insert()

        except (Exception, psycopg2.DatabaseError) as error:
            print('error during saving into database')
            print(error)
            return error
        finally:
            db.session.close()
Ejemplo n.º 21
0
def edit():
    if request.method == 'GET':
        unit_models = Unit.query.all()
        class_models = Class.query.all()
        carousel_item_models = CarouselItem.query.all()
        main_link_models = MainLink.query.all()

        #Construct all the JSON maps
        content = [unit_model.toJSON() for unit_model in unit_models]
        dates = [
            class_model.pst_datetime.strftime('%m/%d/%y')
            for class_model in class_models
        ]
        carousel_items = [
            carousel_item_model.toJSON()
            for carousel_item_model in carousel_item_models
        ]
        main_links = [
            main_link_model.toJSON() for main_link_model in main_link_models
        ]

        return render_template('edit.html',
                               content=formatJSON(content),
                               carousel_items=formatJSON(carousel_items),
                               main_links=formatJSON(main_links),
                               dates=formatJSON(dates),
                               title="Edit JSON")
    else:  #POST method
        # try: #Todo - better error catching
        data = json.loads(request.form['all'])

        # for key, value in data.iteritems():
        #   print key, value
        content, dates, carousel_items, main_links = data['content'], data[
            'dates'], data['carousel_items'], data['main_links']
        print content, dates, carousel_items, main_links
        #Seconds since epoch at which a new PST day w/ physics begins
        epoch_day_offsets = [
            timegm(time.strptime(t, "%m/%d/%y")) for t in dates
        ]

        #Zip time info into the topics dictionary
        date_iter = iter(epoch_day_offsets)

        new_units = []
        #Populate the topics into their respective units, with the dates loaded in too
        for unit in content:
            unit_model = Unit()
            unit_model.title = unit['title']
            unit_model.description = unit['description']
            unit_model.visible = unit['visible']
            for cl in unit['classes']:
                class_model = Class()  #Make an empty model

                #Fill it with topical values
                for item in cl['items']:
                    class_model.addItem(item)
                class_model.homework = cl['homework']
                if 'additional' in cl:
                    class_model.additional = cl['additional']

                #Fill it with time values (could mess up here)
                t = date_iter.next(
                )  #Seconds since epoch of a new UTC day - could throw an error
                pst_dt = dt.utcfromtimestamp(
                    t)  #Datetime representing the local date and time
                class_model.epoch_time = t + PST_OFFSET  #Seconds since epoch of a new PST day
                class_model.pst_datetime = pst_dt
                class_model.day_of_week = int(pst_dt.strftime(
                    "%w"))  #1 = Monday, 2 = Tuesday, ..., 5 = Friday
                class_model.week_of_year = int(pst_dt.strftime("%W"))

                unit_model.addClass(class_model)
            new_units.append(unit_model)

        new_carousel_items = []
        #Add carousel items
        for item in carousel_items:
            new_item = CarouselItem()
            if 'title' in item:
                new_item.title = item['title']
            if 'description' in item:
                new_item.description = item['description']
            if 'src' in item:
                new_item.src = item['src']
            if 'alt' in item:
                new_item.alt = item['alt']
            new_carousel_items.append(new_item)

        new_main_links = []
        for link in main_links:
            new_link = MainLink()
            if 'link' in link:
                new_link.link = link['link']
            if 'media-type' in link:
                new_link.media_type = link['media-type']
            new_main_links.append(new_link)

        #Now that we have all the models, clear the database and push all the new values on
        Unit.query.delete()
        Class.query.delete()
        CarouselItem.query.delete()
        MainLink.query.delete()

        for unit_model in new_units:
            db.session.add(unit_model)
        for carousel_item_model in new_carousel_items:
            db.session.add(carousel_item_model)
        for main_link_model in new_main_links:
            db.session.add(main_link_model)
        db.session.commit()
        flash('Successfully updated database to reflect changes')
        # # except Exception as e:
        #   print "Error: " + repr(e)
        #   flash('Uncaught Exception: {0}'.format(e), category='error')
        return redirect(url_for('admin'))
Ejemplo n.º 22
0
    def process_data_tag(self, data):

        id = data.find('id').text
        name = data.find('name').text
        description = data.find('description').text
        updated_at = data.find('updated_at').text
        created_at = data.find('created_at').text

        category = []
        units = []
        images = []
        logo = []

        # processing all child tags of data
        for child in data:

            # getting <category> from data
            if child.tag == 'category':
                id = child.find('id').text
                name = child.find('name').text
                category.append(Category(id, name))

            # getting <units> from data
            if child.tag == 'units':
                for data_tag in child:
                    id = data_tag.find('id').text
                    name = data_tag.find('name').text
                    key = data_tag.find('key').text
                    value = data_tag.find('value').text
                    units.append(Unit(id, name, key, value))

            # getting <images> from data
            if child.tag == 'images':
                for data_tag in child:

                    id = data_tag.find('id').text
                    name = data_tag.find('name').text
                    thumb = data_tag.find('thumb').text
                    aspectRatio = data_tag.find('aspectRatio').text
                    listing_medium = data_tag.find('listing_medium').text
                    listing_small = data_tag.find('listing_small').text
                    listing_large = data_tag.find('listing_large').text
                    square_medium = data_tag.find('square_medium').text
                    square_small = data_tag.find('square_small').text
                    square_large = data_tag.find('square_large').text

                    images.append(
                        Image(id, name, thumb, aspectRatio, listing_medium,
                              listing_small, listing_large, square_medium,
                              square_small, square_large))

            # getting <logo> from data
            if child.tag == 'logo':
                for data_tag in child:

                    id = data_tag.find('id').text
                    name = data_tag.find('name').text
                    thumb = data_tag.find('thumb').text
                    aspectRatio = data_tag.find('aspectRatio').text
                    listing_medium = data_tag.find('listing_medium').text
                    listing_small = data_tag.find('listing_small').text
                    listing_large = data_tag.find('listing_large').text
                    square_medium = data_tag.find('square_medium').text
                    square_small = data_tag.find('square_small').text
                    square_large = data_tag.find('square_large').text

                    logo.append(
                        Logo(id, name, thumb, aspectRatio, listing_medium,
                             listing_small, listing_large, square_medium,
                             square_small, square_large))

        return Data(id, name, description, category, units, images, updated_at,
                    created_at, logo)