Esempio n. 1
0
def group(call):
    if not is_person(call.message.chat):
        return
    try:
        user = User.get(telegram_id=call.message.chat.id)
        if user not in User.select(User).join(Links).join(Group).where(Group.group_name == 'Admins'):
            raise Exception("Unauthorized user")
    except Exception:
        bot.send_message(text=get_unauthorized_user_start_message(), chat_id=call.message.chat.id)
        return
    group_to_add_to = Group.get(id=int(call.data.split('_')[1]))
    user_to_be_entered_to_group = User.get(id=int(call.data.split('_')[2]))
    Links.get_or_create(user=user_to_be_entered_to_group,
                        group=group_to_add_to)
    if user_to_be_entered_to_group in User.select(User).join(Links).join(Group).where(
            Group.group_name == 'Unauthorized'):
        temp_link = Links.get(user=user_to_be_entered_to_group,
                              group=Group.get(group_name='Unauthorized'))
        temp_link.delete_instance()
    logger.info(
        f'{user.first_name} {user.last_name} added user {user_to_be_entered_to_group.first_name} {user_to_be_entered_to_group.last_name} to group {group_to_add_to.group_name}')
    bot.send_message(chat_id=user_to_be_entered_to_group.telegram_id,
                     text=f'Вы авторизованы и добавлены в группу {group_to_add_to.group_name}',
                     reply_markup=get_start_keyboard(user))
    bot.send_message(chat_id=user_to_be_entered_to_group.telegram_id,
                     text='Список доступных Вам функций',
                     reply_markup=get_main_inline_keyboard(user_to_be_entered_to_group))
    bot.edit_message_text(message_id=call.message.message_id,
                          chat_id=call.message.chat.id,
                          text=user_info(user_to_be_entered_to_group),
                          reply_markup=keyboard_to_chose_users_groups(user_to_be_entered_to_group))
Esempio n. 2
0
def group(call):
    if not is_person(call.message.chat):
        return
    try:
        user = User.get(telegram_id=call.message.chat.id)
        if user not in User.select(User).join(Links).join(Group).where(Group.group_name == 'Admins'):
            raise Exception("Unauthorized user")
    except Exception:
        bot.send_message(text=get_unauthorized_user_start_message(), chat_id=call.message.chat.id)
        return
    group_to_remove_from = Group.get(id=int(call.data.split('_')[1]))
    user_to_be_removed_from_group = User.get(id=int(call.data.split('_')[2]))
    Links.get(user=user_to_be_removed_from_group,
              group=group_to_remove_from).delete_instance()
    logger.info(
        f'{user.first_name} {user.last_name} removed user {user_to_be_removed_from_group.first_name} {user_to_be_removed_from_group.last_name} from group {group_to_remove_from.group_name}')
    bot.send_message(chat_id=user_to_be_removed_from_group.telegram_id,
                     text=f'Вы удалены из группы {group_to_remove_from.group_name}',
                     reply_markup=get_start_keyboard(user))
    bot.send_message(chat_id=user_to_be_removed_from_group.telegram_id,
                     text='Список доступных Вам функций',
                     reply_markup=get_main_inline_keyboard(user_to_be_removed_from_group))
    if Group.select(Group).join(Links).join(User).where(User.id == user_to_be_removed_from_group.id).count() == 0:
        Links.get_or_create(user=user_to_be_removed_from_group,
                            group=Group.get(group_name='Unauthorized'))
        bot.send_message(chat_id=user_to_be_removed_from_group.telegram_id,
                         text='Вы были удалены из всех групп. Получите авторизацию у администратора, чтобы продолжить пользоваться этим ботом!',
                         reply_markup=None)
    bot.edit_message_text(message_id=call.message.message_id,
                          chat_id=call.message.chat.id,
                          text=user_info(user_to_be_removed_from_group),
                          reply_markup=keyboard_to_chose_users_groups(user_to_be_removed_from_group))
Esempio n. 3
0
 def delete(self, key):
     if auth.user_is_admin():
         Group.get(key).delete()
     else:
         Messages.add('Only an administrator may delete groups. This ' +
                      'incident has been logged.')
     return self.redirect('/groups')
Esempio n. 4
0
 def delete(self, key):
     """Deletes a group."""
     if auth.user_is_admin():
         Group.get(key).delete()
     else:
         Messages.add('Only an administrator may delete groups. This ' +
                      'incident has been logged.')
     return self.redirect('/groups')
Esempio n. 5
0
    def popup(self, pos):
        row = self.selectionModel().selection().indexes()[0].row()
        if row < 1:
            return
        menu = QMenu()
        delaction = menu.addAction("Supprimer")
        action = menu.exec_(self.mapToGlobal(pos))

        if action == delaction:
            Group.get(Group.name == self.item(row).text()).delete_instance()
            self.refresh_()
Esempio n. 6
0
 def show(self, key):
     if self.request.method == 'GET':
         return self.render('groups_show', { 'group': Group.get(key)})
     elif self.request.method == 'POST':
         self.update_group(key)
     else:
         return self.abort(405)  # all other methods not allowed
Esempio n. 7
0
def addEvent(user, cs, name, where, when, who, repeat):
	calendars = []
	if who:
		try:
			key = db.Key(who)
			group = Group.get(key)
		except:
			return JsonResponse({}, 404)
		gg = group.getAllChildren()
		#gg.append(group)
		for g in gg:
			if g.calendarId and len(g.calendarId) > 0 and g.type != 'user':
				calendars.append(g.calendarId)
	#try:
	calendars.append(user.calendarId)
	#return JsonResponse(calendars)
	#event = InsertSingleEvent(calendarService,
	#		user.calendarId, name, '', where, when[0], when[1])
	cs2 = CS(cs)
	for cal in calendars:
		event = cs2.InsertSingleEvent(cal, name, '',
				where, when[0], when[1], reccurence(when, repeat), 
				{	'name': user.name if cal != user.calendarId else group.name, 
					'email': getSystemAccount().email 
				})
	#except Exception, err:
	#	return JsonResponse(cal + ' ' + err.__str__())
	
	return JsonResponse({ 'id': event.id.text })
Esempio n. 8
0
def groups_put(request):
	try:
		try:
			r = GetParams(request)
		except:# Exception as e:
			return JsonResponse(sys.exc_info()[0].__str__())
		
		if (not 'id' in r or not 'name' in r):
			return JsonResponse({}, 400)
		
		id = r['id']
		name = r['name']
		try:
			key = db.Key(id)
			group = Group.get(key)
			if (group.type() == 'user'):
				if ('email' in r):
					group.account = users.User(r['email'])
		except: # Exception as e:
			return JsonResponse(sys.exc_info()[0].__str__(), 404) 
		if 'calId' in r:
			group.calendarId = r['calId'].strip() if r['calId'].strip().__len__() > 0 else None
		group.name = name
		group.put()
		return JsonResponse({})
	except:# Exception as e:
		return JsonResponse(sys.exc_info()[0].__str__()) 
Esempio n. 9
0
def get_character_skills(character_id, current_user=None):
    character = Character.get(character_id)
    character_application_access_check(current_user, character)
    skill_data = character.get_op(
        'get_characters_character_id_skills',
        character_id=character_id,
    )
    queue_data = character.get_op(
        'get_characters_character_id_skillqueue',
        character_id=character_id,
    )
    for skill_list in skill_data['skills'], queue_data:
        for entry in skill_list:
            skill = Type.get(entry['skill_id'])
            group = Group.get(skill.group_id)
            entry['skill_id'] = {
                'group_name': group.name,
                'skill_name': skill.name,
            }
    return {
        'info': {
            'skills': skill_data['skills'],
            'queue': queue_data,
            'total_sp': skill_data['total_sp']
        }
    }
Esempio n. 10
0
 def get_group(self, title):
     db.connect()
     try:
         g = Group.get(Group.title == title)
     except Group.DoesNotExist:
         g = Group.create(title = title)
     db.close()
     return g
Esempio n. 11
0
 def show(self, key):
     """Displays details about a group."""
     if self.request.method == 'GET':
         return self.render('groups_show', {'group': Group.get(key)})
     elif self.request.method == 'POST':
         self.update_group(key)
     else:
         return self.abort(405)  # all other methods not allowed
Esempio n. 12
0
 def get(self, id):
     try:
         group = Group.get(Group.id == id)
     except Exception as e:
         print(e)
         abort(404, message="Group not found")
     else:
         return group
Esempio n. 13
0
    def update_group(self, key):
        if not auth.logged_in():
            return self.redirect('/groups')
        
        user = auth.current_user()
        group = Group.get(key)
        if group.owner.user_id() != user.user_id() and not auth.user_is_admin():
            Messages.add('Only the owner of the group owner may modify it')
            return self.redirect('/groups')
        
        name = self.request.get('name')
        public = self.request.get('public') == 'public'
        abandon = self.request.get('abandon-project')
        sub_text = self.request.get('submission-text')
        sub_url = self.request.get('submission-url')
        remove_submission = self.request.get_all('remove-submission')
        remove = self.request.get_all('remove')
        owner = self.request.get('owner')
        delete = self.request.get('delete')
        
        if delete:
            group.delete()
            return self.redirect('/groups')
        
        group.name = name
        group.public = public
        
        if abandon:
            group.project = None
        
        if sub_text and sub_url:
            Submission(text=sub_text, url=sub_url, group=group).put()

        for sub in Submission.get(remove_submission):
            sub.delete()

        pending  = list(group.pending_users)
        for user in pending:
            approve = self.request.get("approve-%s" % user)
            if approve == "approve":
                group.members.append(user)
                group.pending_users.remove(user)
            elif approve == "refuse":
                group.pending_users.remove(user)
        
        group.owner = auth.user_from_email(owner)
        
        for user in remove:
            if auth.user_from_email(user) == group.owner:
                Messages.add('Cannot remove the group owner')
                return self.redirect('/groups/%s/edit' % key)
            else:
                group.members.remove(auth.user_from_email(user))
        
        group.put()
        return self.redirect('/groups/%s' % key)
Esempio n. 14
0
def group(group_name):
    group_answers = []
    for puzzle in Puzzle.select().order_by(Puzzle.name):
        puzzle_answers = (
            puzzle.answers.select().join(Player).join(Group).where(
                Group.name == group_name))
        group_answers.append((puzzle.name, puzzle_answers))

    return render_template('group.html',
                           group=Group.get(Group.name == group_name),
                           group_answers=group_answers)
Esempio n. 15
0
 def leave(self, key):
     group = Group.get(key)
     user = auth.User(auth.current_user())
     
     if user.group != group:
         Messages.add('You cannot leave a group you are not in')
         return self.redirect('/groups/%s' % key)
     
     group.members.remove(user.gae_user)
     group.put()
     return self.redirect('/groups')
Esempio n. 16
0
 def edit(self, key):
     if not auth.logged_in():
         return self.redirect('/groups')
     
     user = auth.current_user()
     group = Group.get(key)
     if group.owner.user_id() == user.user_id() or auth.user_is_admin():
         return self.render('groups_edit', { 'group': group })
     else:
         Messages.add('Only the owner of this group may edit it')
         return self.redirect('/groups/%s' % key)
Esempio n. 17
0
    def leave(self, key):
        """Removes the current user from the group's roster."""
        group = Group.get(key)
        user = auth.User(auth.current_user())

        if user.group != group:
            Messages.add('You cannot leave a group you are not in')
            return self.redirect('/groups/%s' % key)

        group.members.remove(user.gae_user)
        group.put()
        return self.redirect('/groups')
Esempio n. 18
0
    def edit(self, key):
        """Displays the group moderation form."""
        if not auth.logged_in():
            return self.redirect('/groups')

        user = auth.current_user()
        group = Group.get(key)
        if group.owner.user_id() == user.user_id() or auth.user_is_admin():
            return self.render('groups_edit', {'group': group})
        else:
            Messages.add('Only the owner of this group may edit it')
            return self.redirect('/groups/%s' % key)
Esempio n. 19
0
def send_image():
    """
    send image/photo to given telegram user
    """
    username = request.args.get("username", "")
    to_id = request.args.get("to", "")
    photo_file = request.files.get("photo", "")
    photo = request.form.get("photo", "")

    if not username:
        msg = "username missing"
        raise Error(msg)

    if not to_id:
        msg = "to id missing"
        raise Error(msg)

    if not any([photo_file, photo]):
        msg = "photo can not be blank"
        raise Error(msg)

    user_obj = User()
    user = user_obj.get(username=username)

    if not user:
        msg = "you dont have permisson to send notification"
        raise Error(msg)

    to = user_obj.get(username=to_id)
    if not to:
        group_obj = Group()
        to = group_obj.get(group_name=to_id)
        if not to:
            msg = "invalid to id"
            raise Error(msg)
        else:
            if photo:
                send_photo(my_bot, user["uid"], to["gid"], photo)
            else:
                out = BytesIO()
                out.write(photo_file.stream.read())
                out.seek(0)
                send_photo(my_bot, user["uid"], to["gid"], out)
            return jsonify({"ok": 1})
    if photo:
        send_photo(my_bot, user["uid"], to["uid"], photo)
    else:
        out = BytesIO()
        out.write(photo_file.stream.read())
        out.seek(0)
        send_photo(my_bot, user["uid"], to["uid"], out)
    return jsonify({"ok": 1})
Esempio n. 20
0
def group(group_name):
    group_answers = []
    for puzzle in Puzzle.select().order_by(Puzzle.name):
        puzzle_answers = (
            puzzle.answers.select()
            .join(Player).join(Group)
            .where(Group.name == group_name)
        )
        group_answers.append((puzzle.name, puzzle_answers))

    return render_template(
        'group.html',
        group=Group.get(Group.name == group_name),
        group_answers=group_answers)
Esempio n. 21
0
 def set_data_for(self, group_id=None, search=None):
     if isinstance(group_id, int):
         qs = ContactGroup.select().where(ContactGroup.group ==
                                          Group.get(Group.id == group_id))
         self.data = [("", contact_gp.contact.name, contact_gp.contact.number)
                      for contact_gp in qs]
     else:
         qs = Contact.select()
         if search:
             print(search)
             qs = qs.where(Contact.number.contains(search)
                           | Contact.name.contains(search))
             print(qs)
         self.data = [("", contact.name, contact.number) for contact in qs]
Esempio n. 22
0
def groups_newcal(request):
	if not 'id' in request.REQUEST:
		return JsonResponse({}, 400)
	id = request.REQUEST['id']
	try:
		key = db.Key(id)
		group = Group.get(key)
	except:
		return JsonResponse({}, 404)
	
	cs = getCalendarService(request)
	cal = createCalendar(cs, group.name)
	calendarId = cal.GetEventFeedLink()
	group.calendarId = calendarId
	group.put()
	return JsonResponse({ 'calId' : calendarId })
Esempio n. 23
0
def upload_document():
    """
    send document to given telegram user
    """
    username = request.args.get("username", "")
    to_id = request.args.get("to", "")
    document_file = request.files.get("document", "")

    if not username:
        msg = "username missing"
        raise Error(msg)

    if not to_id:
        msg = "to id missing"
        raise Error(msg)

    if not document_file:
        msg = "document can not be blank"
        raise Error(msg)

    user_obj = User()
    user = user_obj.get(username=username)

    if not user:
        msg = "you dont have permisson to send notification"
        raise Error(msg)

    to = user_obj.get(username=to_id)
    if not to:
        group_obj = Group()
        to = group_obj.get(group_name=to_id)
        if not to:
            msg = "invalid to id"
            raise Error(msg)
        else:
            out = BytesIO()
            out.write(document_file.stream.read())
            out.seek(0)
            send_document(my_bot, user["uid"], to[
                          "gid"], out, str(document_file.filename))
            return jsonify({"ok": 1})
    out = BytesIO()
    out.write(document_file.stream.read())
    out.seek(0)
    send_document(my_bot, user["uid"], to["uid"],
                  out, str(document_file.filename))
    return jsonify({"ok": 1})
Esempio n. 24
0
def save_group(request, group_id):
    if request.method == 'POST':
        form = GroupForm(request.POST)
        if form.is_valid():

            try:
                group = Group.get(group_id)
            except:
                return HttpResponseRedirect('/webconf/couchauth/show_groups/')

            users = request.POST.getlist('users')
            group.update_users(users)
            if group.name != form.cleaned_data['name']:
                group.name = form.cleaned_data['name']
                group.save()

    return HttpResponseRedirect('/webconf/couchauth/show_groups/')
Esempio n. 25
0
 def join(self, key):
     group = Group.get(key)
     user = auth.User(auth.current_user())
     if user.in_group():
         Messages.add('You are already in a group')
         return self.redirect('/groups/%s' % key)
     if user.pending_join():
         Messages.add('You have already applied to join a group')
         return self.redirect('/groups/%s' % key)
     if group.public:
         group.members.append(auth.current_user())
         Messages.add('You have joined the group')
     else:
         group.pending_users.append(auth.current_user())
         Messages.add('You have requested to join the group')
     group.put()
     return self.redirect('/groups/%s' % key)
Esempio n. 26
0
def addressbook_contactlist(group_id):
    try:
        group_id = int(group_id)
    except:
        group_id = ALL_CONTACTS

    if group_id == ALL_CONTACTS:
        qs = ContactGroup.filter().group_by('contact')
        group_dict = {'id': -1, 'name': u"Tous"}
    else:
        qs = ContactGroup.filter(group__id=group_id)
        group_dict = Group.get(id=group_id).to_dict()

    data = {'contacts': [contact_group.contact.to_dict()
                         for contact_group in qs],
            'group': group_dict}
    return json.dumps(data)
Esempio n. 27
0
def edit(group_id):
    """Úprava specifické skupiny včetně přidávání uživatelů"""
    
    user = getUser()
    group = Group.get( group_id )
    
    if not ( user.inRole("master") or group.lector == user.login):
        return unauthorized()
    
    # vložení studenta
    if request.forms.get("add"):
        try:
            usr = User.insertStudent( request.forms.get("add"), group_id )
            msg("Student %s vložen" % usr.login,"success")
        except Exception as e: 
            msg("Chyba při vkládání studenta - %s " % e,"error")                   
                

        redirect(request.path)
    
    # odstranění studenta
    if request.query.get("remove"):
        usr = User.get( request.query.get("remove") )

        if not usr:
            msg("Student nenalezen","error")
        elif usr.remove():
            msg("Student %s odstraněn"% usr.login ,"success")
        else:
            msg("Student nenalezen","error")

        redirect(request.path)
        
    form = GroupForm(request.forms.decode(), group)
    
    if request.method == 'POST' and form.validate():
        try:
            group.update( name = form.name.data )
            msg("Skupina aktualizována","success")
        except Exception as e:
            msg("Chyba při aktualizaci - %s" % e, "error")
        
        redirect(request.path)    

    return template("groups_edit", {"group" : group, "form": form_renderer(form) } )
Esempio n. 28
0
def delete(group_id):
    """Smaže skupinu"""

    user = getUser()
    group = Group.get( group_id )

    if not ( user.inRole("master") or group.lector == user.login):
        return unauthorized()

    answer = request.forms.get("answer") 
    if answer:
        if answer == "Ne": redirect("/groups")
        if answer == "Ano":
            group.remove()
            msg("Skupina smazána","success")
            redirect("/groups")
            
    return template("question", {"question":"Skutečně chcete smazat skupinu '%s'" % group.name } )            
Esempio n. 29
0
def save_group(request, group_id):
    if request.method == 'POST':
        form = GroupForm(request.POST)
        if form.is_valid():

            try:
                group = Group.get(group_id)
            except:
                return HttpResponseRedirect('/webconf/couchauth/show_groups/')

            users = request.POST.getlist('users')
            group.update_users(users)
            if group.name != form.cleaned_data['name']:
                group.name = form.cleaned_data['name']
                group.save()


    return HttpResponseRedirect('/webconf/couchauth/show_groups/')
Esempio n. 30
0
def register():
    group_name = request.form['group'].strip()
    player_name = request.form['player'].strip()

    try:
        # Perform case-insensitive search.
        group = Group.get(fn.Lower(Group.name) == group_name.lower())
    except:
        group = Group.create(name=group_name)

    try:
        # Perform case-insensitive search.
        player = Player.get(fn.lower(Player.name) == player_name.lower(), group=group)
    except Player.DoesNotExist:
        player = Player.create(
            group=group, name=player_name, order=group.players.count())

    return str(player.id)
Esempio n. 31
0
 def join(self, key):
     """Adds the current user to the group's roster."""
     group = Group.get(key)
     user = auth.User(auth.current_user())
     if user.in_group():
         Messages.add('You are already in a group')
         return self.redirect('/groups/%s' % key)
     if user.pending_join():
         Messages.add('You have already applied to join a group')
         return self.redirect('/groups/%s' % key)
     if group.public:
         group.members.append(auth.current_user())
         Messages.add('You have joined the group')
     else:
         group.pending_users.append(auth.current_user())
         Messages.add('You have requested to join the group')
     group.put()
     return self.redirect('/groups/%s' % key)
Esempio n. 32
0
def edit(group_id):
    """Úprava specifické skupiny včetně přidávání uživatelů"""

    user = getUser()
    group = Group.get(group_id)

    if not (user.inRole("master") or group.lector == user.login):
        return unauthorized()

    # vložení studenta
    if request.forms.get("add"):
        try:
            usr = User.insertStudent(request.forms.get("add"), group_id)
            msg("Student %s vložen" % usr.login, "success")
        except Exception as e:
            msg("Chyba při vkládání studenta - %s " % e, "error")

        redirect(request.path)

    # odstranění studenta
    if request.query.get("remove"):
        usr = User.get(request.query.get("remove"))

        if not usr:
            msg("Student nenalezen", "error")
        elif usr.remove():
            msg("Student %s odstraněn" % usr.login, "success")
        else:
            msg("Student nenalezen", "error")

        redirect(request.path)

    form = GroupForm(request.forms.decode(), group)

    if request.method == "POST" and form.validate():
        try:
            group.update(name=form.name.data)
            msg("Skupina aktualizována", "success")
        except Exception as e:
            msg("Chyba při aktualizaci - %s" % e, "error")

        redirect(request.path)

    return template("groups_edit", {"group": group, "form": form_renderer(form)})
Esempio n. 33
0
def delete(group_id):
    """Smaže skupinu"""

    user = getUser()
    group = Group.get(group_id)

    if not (user.inRole("master") or group.lector == user.login):
        return unauthorized()

    answer = request.forms.get("answer")
    if answer:
        if answer == "Ne":
            redirect("/groups")
        if answer == "Ano":
            group.remove()
            msg("Skupina smazána", "success")
            redirect("/groups")

    return template("question", {"question": "Skutečně chcete smazat skupinu '%s'" % group.name})
Esempio n. 34
0
def register():
    group_name = request.form['group'].strip()
    player_name = request.form['player'].strip()

    try:
        # Perform case-insensitive search.
        group = Group.get(fn.Lower(Group.name) == group_name.lower())
    except:
        group = Group.create(name=group_name)

    try:
        # Perform case-insensitive search.
        player = Player.get(fn.lower(Player.name) == player_name.lower(),
                            group=group)
    except Player.DoesNotExist:
        player = Player.create(group=group,
                               name=player_name,
                               order=group.players.count())

    return str(player.id)
Esempio n. 35
0
def send_notification():
    """
    send notification to given telegram user
    """
    username = request.args.get("username", "")
    to_id = request.args.get("to", "")
    text = request.args.get("msg", "")
    msg_type = request.args.get("type", None)  # "HTML" or "Markdown"

    if not username:
        msg = "required parameter username missing"
        raise Error(msg)

    if not to_id:
        msg = "required parameter to missing"
        raise Error(msg)

    if not text:
        msg = "message can not be blank"
        raise Error(msg)

    user_obj = User()
    user = user_obj.get(username=username)

    if not user:
        msg = "you dont have permisson to send notification"
        raise Error(msg)

    to = user_obj.get(username=to_id)
    if not to:
        group_obj = Group()
        to = group_obj.get(group_name=to_id)
        if not to:
            msg = "invalid to id"
            raise Error(msg)
        else:
            send_msg(my_bot, user["uid"], -to["gid"], text, msg_type)
            return jsonify({"ok": 1})
    send_msg(my_bot, user["uid"], to["uid"], text, msg_type)
    return jsonify({"ok": 1})
Esempio n. 36
0
def show_group(request, group_id):
    try:
        group = Group.get(group_id)
    except:
        return HttpResponseRedirect('/webconf/couchauth/show_groups/')

    form = GroupForm(instance=group)
    if form.is_valid():
        group = Group()
        group.name = form.cleaned_data['name']
        group.max_loan_days = form.cleaned_data['max_loan_days']
        group.save()
    form_url = "/webconf/couchauth/save_group/%s/" % group_id
    context = { 'form': form,
                'form_title': 'Editar Grupo',
                'group': group,
                'form_url': form_url,
                }
    return render_to_response('webconf/couchauth/form_group.html',
                              context,
                              context_instance=RequestContext(request)
                              )
    def post(self, key):
        user = self.getVolunteer(key)
        user.pending = self.request.get('volunteer[pending]') == "true"
        user.pending_code = self.request.get('volunteer[pending_code]')
        user.email = self.request.get('volunteer[email]')
        user.first_name = self.request.get('volunteer[first_name]')
        user.last_name = self.request.get('volunteer[last_name]')
        user.is_pc = self.request.get('volunteer[is_pc]') == "true"
        user.is_group_leader = self.request.get(
            'volunteer[is_group_leader]') == "true"
        user.phone = self.request.get('volunteer[phone]')

        group_key = self.request.get('volunteer[group]')
        group = Group.get(group_key) if group_key != "" else None
        user.setGroup(group)

        project_key = self.request.get('volunteer[project]')
        project = Project.get(project_key) if project_key != "" else None
        user.setProject(project)

        user.save()
        self.redirect('/admin/volunteers/{}'.format(user.key()), {'error': 1})
Esempio n. 38
0
def show_group(request, group_id):
    try:
        group = Group.get(group_id)
    except:
        return HttpResponseRedirect('/webconf/couchauth/show_groups/')

    form = GroupForm(instance=group)
    if form.is_valid():
        group = Group()
        group.name = form.cleaned_data['name']
        group.max_loan_days = form.cleaned_data['max_loan_days']
        group.save()
    form_url = "/webconf/couchauth/save_group/%s/" % group_id
    context = {
        'form': form,
        'form_title': 'Editar Grupo',
        'group': group,
        'form_url': form_url,
    }
    return render_to_response('webconf/couchauth/form_group.html',
                              context,
                              context_instance=RequestContext(request))
Esempio n. 39
0
def remove_group(call):
    if not is_person(call.message.chat):
        return
    try:
        user = User.get(telegram_id=call.message.chat.id)
        if user not in User.select(User).join(Links).join(Group).where(Group.group_name == 'Admins'):
            raise Exception("Unauthorized user")
    except Exception:
        bot.send_message(text=get_unauthorized_user_start_message(), chat_id=call.message.chat.id)
        return

    links = Links.select(Links).join(Group).where(Group.id == int(call.data.split('_')[1]))
    for link in links:
        link.delete_instance()
    logger.info(f"remove group - {Group.get(id=int(call.data.split('_')[1])).group_name}")
    group = Group.get(id=int(call.data.split('_')[1]))
    group.delete_instance()
    groups = Group.select()
    return_str = 'Список групп:\n'
    for group in groups:
        return_str += group.group_name + '\n'
    bot.edit_message_text(text=return_str, chat_id=call.message.chat.id, message_id=call.message.message_id)
    User.update(status='').where(User.id == user.id).execute()
Esempio n. 40
0
def addressbook_add_contact_to_group(group_id, contact_id):
    contact = Contact.get(id=int(contact_id))
    group = Group.get(id=int(group_id))

    data = {'contact': contact.to_dict(),
            'group': group.to_dict()}

    subst = {'contact': contact.display_name(),
             'group': group.display_name()}

    if ContactGroup.filter(contact=contact, group=group).count():
        dict_return(data, INFO,
                u"%(contact)s fait déjà parti du groupe %(group)s." % subst,
                message_html=u"<strong>%(contact)s</strong> fait déjà "
                             u"parti du groupe "
                             u"<strong>%(group)s</strong>." % subst)
    else:
        cg = ContactGroup(contact=contact, group=group)
        try:
            cg.save()
            dict_return(data, SUCCESS,
                    u"%(contact)s a été ajouté au groupe %(group)s." % subst,
                    message_html=u"<strong>%(contact)s</strong> a été "
                                 u"ajouté au groupe "
                                 u"<strong>%(group)s</strong>." % subst)
        except Exception as e:
            subst.update({'err': e.message})
            dict_return(data, ERROR,
                    u"Impossible d'ajouter %(contact)s au groupe "
                    u"%(group)s: %(err)r" % subst,
                    message_html=u"Impossible d'ajouter "
                                 u"<strong>%(contact)s</strong> au "
                                 u"groupe <strong>%(group)s</strong>:<br />"
                                 u"<em>%(err)r</em>" % subst)

    return json.dumps(data)
Esempio n. 41
0
def download(group_id):
    """Stažení výsledků skupiny ve wis formátu"""

    user = getUser()
    group = Group.get(group_id)

    if not (user.inRole("master") or group.lector == user.login):
        return unauthorized()

    headers = {}
    headers["Content-Type"] = "text/csv"
    headers["Content-Disposition"] = 'attachment; filename="%s.csv"' % slug(group.name)

    # Formát CSV: 1. ID, 2. jméno, 3. login, 4. body, 5. celk.body, 6. datum, 7. login zadávajícího
    # při importu musí být zachováno pořadí sloupců, stačí vyplnit sloupce 3. a 4., případně 6.
    date = today()
    data = []
    results = group.getResults()
    for login, points in results.items():
        data.append(";;%s;%s;;%s;%s;" % (login, points, date, group.lector))

    data = "\n".join(data)

    return HTTPResponse(data, **headers)
Esempio n. 42
0
    def get(self, group_key):
        # confirm participant id in cookie
        c_group_key = ChatTrait.get_group_key(self)
        participant_key = ChatTrait.get_participant_key(self)

        # get group
        group = Group.get(group_key)

        # if participant is none or login to another group, create new participant in group
        if not participant_key:
            participant = Participant()
            participant.store(group.key)
            participant_key = participant.key
            ChatTrait.store_participant_key(self, participant_key)

        if c_group_key:
            if c_group_key != group_key:
                group.participant(Participant.get(participant_key))
                ChatTrait.store_group_key(self, group.key)
        else:
            ChatTrait.store_group_key(self, group.key)

        # return response
        self.render("chat.html", group_name=group.name)
Esempio n. 43
0
def addressbook_delete_group(group_id):

    data = {}
    subst = {}
    try:
        group = Group.get(id=int(group_id))
        contact_groups = ContactGroup.filter(group__id=int(group_id))
    except Group.DoesNotExist as e:
        subst.update({'err': e.message,
                      'group': group_id})
        dict_return(data, ERROR,
                    u"Le groupe #%(group)s n'existe pas : %(err)r" % subst,
                    message_html=u"Le groupe "
                                 u"<strong>%(group)s</strong> n'existe pas.<br />"
                                 u"<em>%(err)r</em>" % subst)

        return json.dumps(data)

    subst.update({'group': group.display_name()})

    try:
        [cg.delete_instance() for cg in contact_groups]
        group.delete_instance()
        dict_return(data, SUCCESS,
                    u"%(group)s a été supprimé avec succès." % subst,
                    message_html=u"<strong>%(group)s</strong> "
                                 u"a été supprimé avec succès." % subst)
    except Exception as e:
        subst.update({'err': e.message})
        dict_return(data, ERROR,
                    u"Impossible de supprimer le groupe %(group)s : %(err)r" % subst,
                    message_html=u"Impossible de supprimer le groupe "
                                 u"<strong>%(group)s</strong><br />"
                                 u"<em>%(err)r</em>" % subst)

    return json.dumps(data)
Esempio n. 44
0
    def get(self, group_key):
        # confirm participant id in cookie
        c_group_key = ChatTrait.get_group_key(self)
        participant_key = ChatTrait.get_participant_key(self)

        # get group
        group = Group.get(group_key)

        # if participant is none or login to another group, create new participant in group
        if not participant_key:
            participant = Participant()
            participant.store(group.key)
            participant_key = participant.key
            ChatTrait.store_participant_key(self, participant_key)

        if c_group_key:
            if c_group_key != group_key:
                group.participant(Participant.get(participant_key))
                ChatTrait.store_group_key(self, group.key)
        else:
            ChatTrait.store_group_key(self, group.key)

        # return response
        self.render("chat.html", group_name=group.name)
Esempio n. 45
0
def download(group_id):
    """Stažení výsledků skupiny ve wis formátu"""
    
    user = getUser()
    group = Group.get( group_id )
    
    if not ( user.inRole("master") or group.lector == user.login):
        return unauthorized()

    headers = {}
    headers['Content-Type'] = "text/csv"
    headers['Content-Disposition'] = 'attachment; filename="%s.csv"' %  slug(group.name)

    #Formát CSV: 1. ID, 2. jméno, 3. login, 4. body, 5. celk.body, 6. datum, 7. login zadávajícího
    #při importu musí být zachováno pořadí sloupců, stačí vyplnit sloupce 3. a 4., případně 6.
    date = today()
    data = []
    results = group.getResults()
    for login, points in results.items():
        data.append(";;%s;%s;;%s;%s;" % (login, points, date, group.lector) );

    data = "\n".join(data)

    return HTTPResponse(data, **headers)
Esempio n. 46
0
 def add_grp(self, grpname):
     group = Group.get(Group.name == grpname.name)
     ContactGroup.get_or_create(group=group, contact=self.contact)
     self.refresh()
Esempio n. 47
0
 def del_grp(self, grp_ct):
     group = Group.get(Group.name == grp_ct.group.name)
     contactgrp = ContactGroup.select().where(ContactGroup.group == group,
                                              ContactGroup.contact == self.contact).get()
     contactgrp.delete_instance()
     self.refresh()
Esempio n. 48
0
 def get_group(self, title):
     try:
         g = Group.get(Group.title == title)
     except Group.DoesNotExist:
         g = Group.create(title = title)
     return g
Esempio n. 49
0
 def get(self, group_key):
     group = Group.get(group_key)
     chats = group.chats(0, 300)
     return self.write({"chats": list(map(lambda c: c.to_dict(), chats))})
Esempio n. 50
0
 def get(self, group_key):
     group = Group.get(group_key)
     chats = group.chats(0, 300)
     return self.write({"chats": list(map(lambda c: c.to_dict(), chats))})
Esempio n. 51
0
    def update_group(self, key):
        """Updates a group with information from the moderation form.

        Form Variables:
            name:              the name of the group
            public:            true if the group should be joinable by the
                               public
            abandon-project:   true if the group moderator wants to abandon the
                               current project
            submission-text:   the text to be displayed for the new submission
            submission-url:    the URL of the new submission
            remove-submission: a list of submissions to be removed
            remove:            a list of users to be removed from the group
            owner:             the owner of the group
            delete:            true if the group moderator wants to disband the
                               group
        """
        if not auth.logged_in():
            return self.redirect('/groups')

        user = auth.current_user()
        group = Group.get(key)
        if (group.owner.user_id() != user.user_id() and
                not auth.user_is_admin()):
            Messages.add('Only the owner of the group owner may modify it')
            return self.redirect('/groups')

        name = self.request.get('name')
        public = self.request.get('public') == 'public'
        abandon = self.request.get('abandon-project')
        sub_text = self.request.get('submission-text')
        sub_url = self.request.get('submission-url')
        remove_submission = self.request.get_all('remove-submission')
        remove = self.request.get_all('remove')
        owner = self.request.get('owner')
        delete = self.request.get('delete')

        if delete:
            group.delete()
            return self.redirect('/groups')

        group.name = name
        group.public = public

        if abandon:
            group.project = None

        if sub_text and sub_url:
            Submission(text=sub_text, url=sub_url, group=group).put()

        for sub in Submission.get(remove_submission):
            sub.delete()

        pending = list(group.pending_users)
        for user in pending:
            approve = self.request.get("approve-%s" % user)
            if approve == "approve":
                group.members.append(user)
                group.pending_users.remove(user)
            elif approve == "refuse":
                group.pending_users.remove(user)

        group.owner = auth.user_from_email(owner)

        for user in remove:
            if auth.user_from_email(user) == group.owner:
                Messages.add('Cannot remove the group owner')
                return self.redirect('/groups/%s/edit' % key)
            else:
                group.members.remove(auth.user_from_email(user))

        group.put()
        return self.redirect('/groups/%s' % key)
Esempio n. 52
0
 def getGroup(self, key):
     group = Group.get(key)
     self.throw404If(group is None)
     return group
Esempio n. 53
0
 def getGroup(self, key):
     if key == "new":
         return None
     group = Group.get(key)
     self.throw404If(group is None)
     return group