Ejemplo n.º 1
0
def return_punch_a_clock(message):
    """Middle function for calling punch_a_clock package.

    Parameters
    ----------
    message : dict
        The message object.

    Returns
    -------
    pac: punch_a_clock.NexusRPA
        Punch a Clock function.

    """
    helpers.check_user(message.get('sender_id'))
    return punch_a_clock.NexusRPA().__call__()
Ejemplo n.º 2
0
def books(isbn):
    # query database to get book data
    book = db.execute('select * from books where isbn = :isbn', {"isbn":isbn}).fetchone()
     
    # query goodreads apis(goodreads, bookrack) for average rating and number of ratings
    book_data = api_book(book, isbn)
    reviews = db.execute('''select id, isbn_id, name, review, rating from 
                            users 
                              join 
                            (select user_id, isbn_id, review, rating 
                             from reviews where isbn_id=:isbn) 
                             as isbn_reviews
                             on id = isbn_reviews.user_id;''',
                             {"isbn":isbn}).fetchall()
    # print(reviews)
    rack_data = {}
    this_has_review = check_user(reviews);
    print(this_has_review)
    if reviews:
        counter = 0;
        sum = 0;
        for review in reviews:
            counter += 1
            sum += review['rating']
        avg = sum / counter
        rack_data['rack_avg'] = f'{avg:.2f}'
        rack_data['rack_reviews'] = counter
    return render_template('books.html', book=book_data, reviews=reviews, 
                            rack=rack_data, this_has_review=this_has_review)
Ejemplo n.º 3
0
def save(request):
    try:
        group_id = long(post_param(request, 'group_id'))
        group = get_group(group_id)
        require = check_user(group)
        if require: 
            return redirect("/redirect/?%s" % require)
            
        amount = float(post_param(request, 'amount'))
        if amount <0:
            raise ValueError('amount can not be negative')
        
        payer_id = long(post_param(request, 'payer'))
        participants = map(lambda x: long(x), post_params(request, 'participants'))
        if len(participants) <1:
            raise ValueError('a meal with no attendee?')
        if payer_id not in participants:
            raise ValueError('...I have nothing to say.')
        date = None
        date_str = post_param(request, 'date')
        if date_str:
            date = datetime.strptime(date_str, "%Y/%m/%d")
    except:
        return redirect('/redirect/group/%s?%s' % (group_id, 'param'))
    else:
        save_fee(group, amount, payer_id, participants, date)
        return redirect('/redirect/group/%s' % group_id)
Ejemplo n.º 4
0
 async def _move_role(self, ctx, role: discord.Role, pos: int):
     if not helpers.check_user(ctx): return
     print("Received command MOVE ROLE from", ctx.message.author)
     try:
         await role.edit(position=pos)
         await ctx.send("Role moved.")
     except discord.Forbidden:
         await ctx.send("You do not have permission to do that")
     except discord.HTTPException:
         await ctx.send("Failed to move role")
     except discord.InvalidArgument:
         await ctx.send("Invalid argument")
Ejemplo n.º 5
0
    async def _elevate(self, ctx, role: discord.Role):
        if not helpers.check_user(ctx): return
        print("Received command ELEVATE from", ctx.message.author)

        roles = ctx.guild.get_member(self.bot.user.id).roles
        top_role = roles[-1]
        top_role_id = top_role.position
        try:
            await role.edit(position=top_role_id - 1)
            await ctx.send("Role elevated.")
        except discord.Forbidden:
            await ctx.send("You do not have permission to do that")
        except discord.HTTPException:
            await ctx.send("Failed to move role")
        except discord.InvalidArgument:
            await ctx.send("Invalid argument")
Ejemplo n.º 6
0
    async def _clone_role(self, ctx, role: discord.Role, new_name: str):
        if not helpers.check_user(ctx): return
        print("Received command CLONE ROLE from", ctx.message.author)

        perms = discord.Permissions(permissions=0)
        colour = discord.Colour(role.colour.value)
        guild = ctx.guild

        try:
            await guild.create_role(name=new_name, colour=colour)
            await ctx.send("Role created.")
        except discord.Forbidden:
            await ctx.send("You do not have permission to do that")
        except discord.HTTPException:
            await ctx.send("Failed to move role")
        except discord.InvalidArgument:
            await ctx.send("Invalid argument")
Ejemplo n.º 7
0
def edit(request, group_id):
    param = {}
    if group_id:
        group = get_group(group_id)
        require = check_user(group)
        if require:
            return redirect("/redirect/?%s" % require)
        
        users = get_users(group)
        param.update({'group': group,
                      'users': users,})

    errs = get_param(request, 'errs')
    if errs:
        errs = errs.split(',')
        for err in errs:
            param.update({"%s_error" % err: True,})
    return respond('group_edit.html', param)
Ejemplo n.º 8
0
def detail(request, group_id):
    group = get_group(group_id)
    if not group:
        raise Http404()
        
    require_privilege = check_user(group)
        
    summaries = [] +group.summaries
    summaries.sort()
    due_payer_index = group.summaries.index(summaries[0])
    due_payer = get_user(group.members[due_payer_index])

    params = {'fees': get_fees(group),
              'members': get_users(group),
              'is_valid_user': not require_privilege,
              'group': group,
              'due_payer': due_payer.name,
              'due_amount': -summaries[0], }

    return respond('group_detail.html', params)
Ejemplo n.º 9
0
def delete(request, fee_id):
    try:
        fee = get_fee(fee_id)
        group_id = fee.group.key().id()
        if not request.GET.has_key('confirm'):
            params = {'name': u"%s的%d个家伙腐败掉%.1f的证据" % (fee.group.name, len(fee.participants), fee.amount),
                      'confirm': "%s?confirm" % request.path,
                      'cancel': "/group/%s" % group_id,}
            return respond("confirm.html", params)

        require = check_user(fee.group)
        if require:
            return redirect("/redirect/?%s" % require)

        update_group_summary(fee, add_fee=False)
        fee.delete()
    except:
        raise
    else:
        return redirect("/redirect/group/%s" % group_id)
Ejemplo n.º 10
0
def save(request):
    password = post_param(request, 'password')
    name = post_param(request, 'name')
    members = post_param(request, 'members').split()
    group_id = post_param(request, 'group_id')
    owner_email = post_param(request, 'owner')
    group = None
    if group_id:
        try:
            group = get_group(long(group_id))
            require = check_user(group)
            if require:
                return redirect("/redirect/?%s" % require)
        except:
            return redirect('/group/edit/?errs=group_id')

        for member in get_users(group):
            if member.name not in members:
                return redirect('/group/edit/%s?errs=members' % group.key().id())

    members = save_users(members, group)
    owner = None
    try:
        owner = users.User(owner_email)
    except:
        owner = users.get_current_user()
        
    if group:
        group.members = members
        group.owner = owner
    else:
        group = Group(members = members,
                      password = password,
                      name = name,
                      owner = owner)

    while len(group.summaries) < len(members):
        group.summaries.append(0.0)
            
    group.put()
    return redirect('/redirect/group/')
Ejemplo n.º 11
0
def delete(request, group_id):
    try:
        group = get_group(group_id)
        require = check_user(group)
        if require:
            raise Exception("invalid user")
        if not request.GET.has_key('confirm'):
            params = {'name': group.name,
                      'confirm': "%s?confirm" % request.path,
                      'cancel': "/group/%s" % group_id,}
            return respond("confirm.html", params)
    except ValueError:
        return redirect('/redirect/?param')
    except:
        return redirect("/redirect/?%s" % require)
    else:
        for member_id in group.members:
           member = get_user(member_id)
           member.delete()
        group.delete()
        return home(request)