コード例 #1
0
def response():
	action = cgi_get("action", choices=["schema", "get", "edit", "delete"])

	# edit/delete always require credentials; getters do configurably
	if not config.db.public or action in ["edit", "delete"]:
		if cgi_get("pw") != config.admin.pw:
			fail("wrong")

	if action == "schema":
		succeed(get_schema())
	elif action == "get":
		sig = cgi_dump()
		res = getmem(sig, False)
		if not res:
			mname = cgi_get("modelName", required=False)
			keys = cgi_get("keys", required=False)
			if mname:
				res = get_page(mname, cgi_get("limit"), cgi_get("offset"),
					cgi_get("order", default="index"), cgi_get("filters", default={}))
			elif keys:
				res = [d.data() for d in get_multi(keys)]
			else:
				res = get(cgi_get("key")).data()
			if config.memcache.db:
				setmem(sig, res, False)
		succeed(res)
	elif action == "edit":
		if config.memcache.db:
			clearmem()
		succeed(edit(cgi_get("data")).data())
	elif action == "delete":
		get(cgi_get("key")).rm()
		succeed()
コード例 #2
0
def payCal():
    log("payCal!", important=True)
    today = datetime.now()
    tomorrow = today + timedelta(1)
    reminders = {}
    cbatch = PayBatch(variety="calendar")
    cbatch.put()
    deetz = []
    for stew in Stewardship.query().all():
        task = stew.task()
        pod = task2pod(task)
        person = db.get(stew.steward)
        slot = stew.happening(today)
        if slot:
            log("confirm: %s (%s)" % (task.name, task.mode))
            if task.mode == "automatic":
                cbatch.count += 1
                deetz.append("%s - %s hours" % (task.name, slot.duration))
                pod.deposit(person, slot.duration, cbatch,
                            "task: %s" % (task.name, ), task.description)
            elif task.mode == "email confirmation":
                appointment(slot, task, pod, person)
        if person.remind:
            slot = stew.happening(tomorrow)
            if slot:
                log("remind: %s (%s)" % (task.name, task.mode))
                remember(slot, task, pod, person, reminders)
    cbatch.details = "\n".join(deetz)
    cbatch.put()
    remind(reminders)
コード例 #3
0
ファイル: coders.py プロジェクト: bubbleboy14/ctcomp
 def membership(self):
     from .core import Person, Membership
     person = Person.query(
         Person.contributors.contains(self.contributor.urlsafe())).get()
     pod = db.get(self.codebase).pod
     return person and pod and Membership.query(
         Membership.pod == pod, Membership.person == person.key).get()
コード例 #4
0
ファイル: model.py プロジェクト: bubbleboy14/ctman
 def secs(self, sections=None, depth=0, novars=False, page_breaks=False):
     return "\r\n\r\n".join(sections and [
         db.get(s['key']).content(s['sections'], depth, novars, page_breaks)
         for s in sections
     ] or [
         s.content(depth=depth, novars=novars, page_breaks=page_breaks)
         for s in db.get_multi(self.sections)
     ])
コード例 #5
0
def manage(agent, membership, identifier, memberships=None):
    memship = db.get(membership or memberships[0])
    pod = db.get(memship.pod)
    if pod.agent.urlsafe() != (agent or global_pod().agent.urlsafe()):
        error("wrong!")
    conq = Content.query(Content.identifier == identifier)
    if memberships:
        conq.filter(Content.memberships == memberships)
    else:
        conq.filter(Content.membership == membership)
    con = conq.get()
    if not con:
        con = Content(identifier=identifier)
        if memberships:
            con.memberships = memberships
        else:
            con.membership = membership
        con.put()
    return con
コード例 #6
0
def edit(data, session=session):
    from cantools.db import get, get_model
    ent = "key" in data and get(data["key"], session) or get_model(
        data["modelName"])()
    for propname, val in data.items():
        if propname in ent._schema:
            if val:
                if propname in ent._schema["_kinds"]:  # foreignkey
                    val = KeyWrapper(val)
                elif ent._schema[
                        propname] == "datetimeautostamper" and not isinstance(
                            val, datetime):
                    val = datetime.strptime(val, "%Y-%m-%d %H:%M:%S")
            setattr(ent, propname, val)
    ent.put()
    return ent
コード例 #7
0
 def get(self, session=None):
     from cantools.db import get
     if not session:
         from cantools.db import session
     return get(self.value, session)
コード例 #8
0
def enroll(agent, pkey, person):
    pod = db.get(pkey)
    if pod.agent.urlsafe() != agent:
        error("wrong!")
    return db.get(person).enroll(pod)