Пример #1
0
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
Пример #2
0
    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') 
Пример #3
0
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
Пример #4
0
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")
Пример #5
0
 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))
Пример #6
0
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)
Пример #7
0
    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()
Пример #8
0
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)
Пример #9
0
 def updateResource(self, point):
     """
     Call from controller.py.
     """
     if point not in self.resources:
         self.resources[point] = Resource(point)
Пример #10
0
 def _query_object(self, criteria, cursor):
     cursor.execute(self.__sql_query_by_uk, criteria)
     rec = cursor.fetchone()
     if rec:
         return Resource(**rec)