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()
def GetCountRow(self): count = 1 xldb = Unit() kq = xldb.DanhSach() if kq!=None: count = len(kq) return count
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()
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")
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
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
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")
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))
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)
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()
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
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, }
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
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)
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)
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()
# 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:
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()
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'))
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)