def invoice_tax_cost_breakdown(invoice): """return a breakdown of the form {resource.id:resource_tax} """ resource_tax = {} resource_cost = {} rusages_cost_and_tax = {} resources = Resource.select(AND(Resource.q.id==RUsage.q.resourceID, RUsage.q.invoiceID==invoice.id), distinct=True) get_resource_effective_vat = lambda resource: [resource.place.vat_default, resource.vat][type(resource.vat)==float] resource_vats = dict((resource, get_resource_effective_vat(resource)) for resource in resources) for resource in resources: res_cost = 0 percent_vat = resource_vats[resource] vat_included = resource.place.vat_included for ruse in (ruse for ruse in invoice.rusages if ruse.resource == resource): ruse_cost = ruse.effectivecost vat = calc_tax(ruse_cost, percent_vat, vat_included) res_cost += ruse_cost rusages_cost_and_tax[ruse.id] = (ruse_cost, vat) vat = calc_tax(res_cost, percent_vat, vat_included) resource_tax[resource.id] = (vat, percent_vat, vat_included) resource_cost[resource.id] = res_cost if not vat_included: resource_cost[resource.id] = res_cost + vat return resource_tax, resource_cost, rusages_cost_and_tax
def post(self): upload_files = self.get_uploads('file') studentid = self.request.get('studentid') password = self.request.get('password') users = User.all() user = None for u in users: if u.studentid == studentid: if u.password == password: user = u break else: break if user: title = self.request.get('title') course = Course.get_by_id(int(self.request.get('course'))) blob_info = upload_files[0] if blob_info: bly = bitly.BitLy('o_2tov7hc8mi', 'R_e863d338484e0fbb60cf1416ce3ae6de') uri = str(os.environ.get('SERVER_NAME')) uri = uri + '/resource/' + str(blob_info.key()) short = bly.shorten(uri) uri2 = 'http://%s' % uri short = short['results'][uri2]['shortUrl'] if short: pass else: short = 'uri2' resource = Resource(res_title=title, res_filekey=str(blob_info.key()), res_course=course, res_filekey2=str(blob_info.key()), res_short_uri=short, res_author = user) resource.put() self.redirect('/resource/%s' % str(blob_info.key())) else: self.redirect('/upload/wrong_file') else: self.redirect('/upload/wrong_user')
def create_resource(org_name, contact, address, location, category_id): """Create and return a new resource instance""" new_resource = Resource(org_name=org_name, contact=contact, address=address, location=location, category_id=category_id) db.session.add(new_resource) db.session.commit() return new_resource
def index(): if request.method == "POST": name = request.form["name"] href = request.form["href"] money = request.form["money"] resource = Resource() resource.name = name resource.href = href resource.Money = money resource.save() return render_template("index.html")
def post(self): resources = Resource.all() course = Course.get_by_id(int(self.request.get('course'))) selected_resources = [] for r in resources: if r.res_course.key().id() == course.key().id(): selected_resources.append(r) template_values = {'course' : course, 'resources' : selected_resources } path = os.path.join(os.path.dirname(__file__), 'html/results.html') self.response.out.write(template.render(path, template_values))
def main(): resource_postgres = Resource("rodo-eks-db", ResourceType.POSTGRES) resource_ssh = Resource("fake-ssh", ResourceType.SSHCert) resource_invalid = Resource("non-existy", ResourceType.SSHCert) users = [ User("*****@*****.**", "User1", "Test", [resource_postgres], []), User("*****@*****.**", "User2", "Test", [resource_ssh], []), User("*****@*****.**", "User3", "Test", [resource_invalid], []) ] print("Saving user resources") print(users) service.save_user_resources(users) print() users = [ User("*****@*****.**", "User1", "Test", [resource_ssh], [resource_postgres, resource_invalid]), User("*****@*****.**", "User2", "Test", [resource_postgres], [resource_ssh]), User("*****@*****.**", "User3", "Test", [], [resource_postgres]) ] print("Saving user resources") print(users) service.save_user_resources(users)
def __add(self, name: str): """Executed after creating of a new resource. :param name: Name of a new resource. """ res = Resource(name) self.__state.model.add_resource(res) self.__selected_resource = res self.__resource_combobox['values'] = sorted( self.__state.model.get_all_resources_names()) self.__resource_combobox_var.set(res.name) # Enable buttons change_controls_state(tk.NORMAL, self.__rename_resource_button, self.__remove_resource_button) # Show the taxonomy tree self.__taxonomy_tree.grid(row=0, column=1, sticky=tk.NSEW) self.__update_tree()
def onQQMessage(bot, contact, member, content): qqname = member.name qq = member.qq if "@ME" in content: print 'content:', content # 内容 print 'memeber:', member # qq号 print 'contact:', contact # 群号 if "签到" in content: try: user = User.get(qq=qq) except: user = User() user.qq = qq user.name = qqname user.Qqtime = datetime.date.today() user.Num = 1 user.Money = 2 user.Nca = 1 user.save() sendData = '恭喜%s[%s]第一次签到成功,获得2积分,连续签到%s次' % (qqname, qq, user.Nca) else: nexttime = user.Qqtime nowtime = datetime.date.today() yesterdaytime = nowtime - datetime.timedelta(days=1) if nexttime == nowtime: sendData = '%s[%s]今天已经签到过' % (qqname, qq) else: user.Qqtime = nowtime user.Num += 1 user.Money += 2 if nexttime == yesterdaytime: user.Nca += 1 else: user.Nca = 1 user.save() sendData = '恭喜%s[%s]第%s签到成功,当前积分%s,连续签到%s次' % ( qqname, qq, user.Num, user.Money, user.Nca) finally: bot.SendTo(contact, sendData) elif '查询' in content: data = Resource.select() res_list = ['%s %s %s' % (i.id, i.name, i.Money) for i in data] res_list.insert(0, 'ID 名称 积分') res_list.insert(0, '%s[%s]查询内容:' % (qqname, qq)) sendData = '\n'.join(res_list) bot.SendTo(contact, sendData) elif '兑换' in content: try: user = User.get(qq=qq) except: sendData = '%s[%s]没有签到记录,不能兑换' % (qqname, qq) else: try: data = Resource.get(id=int(content[-1])) except: sendData = '%s[%s]兑换失败,ID:%s不存在' % (qqname, qq, content[-1]) else: if user.Money >= data.Money: user.Money -= data.Money user.save() sendData = '%s[%s]兑换成功。\n%s已发送至您qq邮箱。' % (qqname, qq, data.name) tmail = qq + '@qq.com' sendzl(tmail, data.name, data.href) else: sendData = '%s[%s]兑换失败,积分不足' % (qqname, qq) finally: bot.SendTo(contact, sendData)
def updateResource(self, point): """ Call from controller.py. """ if point not in self.resources: self.resources[point] = Resource(point)
def _query_object(self, criteria, cursor): cursor.execute(self.__sql_query_by_uk, criteria) rec = cursor.fetchone() if rec: return Resource(**rec)