Esempio n. 1
0
def save_data(userid, namehash, name, notices, geom):
    """
    Inserts a notification area into the database.

    userid is the user id number of the row.
    namehash is the hash of the area name.
    name is the user-defined area name.
    notices is a json string of the notices object.
    geom is a json string of the geometry of the area.

    Returns True on success.
    """
    newnotice = Notice(userid=userid, 
                       namehash=namehash, 
                       name=name, 
                       notices=notices, 
                       geom=geom)
    try:
        db_session.add(newnotice)
        db_session.commit()
        success = True
    except Exception as e:
        msg = 'Error adding notification:\n' + e.message
        raise DataError(msg)
    return True
Esempio n. 2
0
def create_notice(user_id, text, attachment=''):
    new_notice = Notice()
    new_notice.text = text
    new_notice.attachment = attachment
    new_notice.date_of_create = datetime.now()
    new_notice.last_sending = datetime.now()
    new_notice.user_id = user_id
    new_notice.save()
Esempio n. 3
0
def send_all_user(self, request, queryset):
	all_user = User.objects.all()
	for notice_content in queryset:
		for user in all_user:
			if 'admin' == user.username or 'manager' == user.username or user.id == notice_content.owner_id:
				continue
			else:
				Notice(owner_id=user.id,title=notice_content.title,content=notice_content.content,create_time=notice_content.create_time,has_read=False).save()
Esempio n. 4
0
def new(request, node_slug):
    context = {}
    try:
        node = Node.objects.get(slug=node_slug)
    except Node.DoesNotExist:
        raise Http404

    if request.method == 'POST':
        form = TopicForm(request.POST)
        if form.is_valid():
            last_topic = Topic.objects.filter(
                author=request.user).order_by('-created_on')[:1]
            last_topic = last_topic.first()
            if last_topic and last_topic.title == form.clean()['title'] and (
                (timezone.now() - last_topic.created_on).seconds < 10):
                messages.error(request, '你是否正在尝试连续提交两次相同的内容?')
                return HttpResponseRedirect(
                    reverse("bbs:topic", args=(last_topic.id, )))
            else:
                topic = form.save(commit=False)
                topic.node = node
                request.user.topic_num += 1
                request.user.calculate_au()
                request.user.save()
                topic.author = request.user
                topic.last_reply = request.user
                topic.updated_on = timezone.now()
                topic.save()
                node.num_topics += 1
                node.save()

                # --- 解析@ ---

                team_name_pattern = re.compile('(?<=@)(\w+)', re.UNICODE)
                at_name_list = set(re.findall(team_name_pattern,
                                              topic.content))
                if at_name_list:
                    for at_name in at_name_list:
                        if at_name != topic.author.username:
                            try:
                                at_user = User.objects.get(username=at_name)
                                if at_user:
                                    notice = Notice(from_user=topic.author,
                                                    to_user=at_user,
                                                    topic=topic,
                                                    content='')
                                    notice.save()
                            except:
                                pass

                # --- 解析@ ---

                return HttpResponseRedirect(
                    reverse("bbs:topic", args=(topic.id, )))
    else:
        form = TopicForm()

    return render(request, 'bbs/new.html', {'node': node, 'form': form})
Esempio n. 5
0
def create_notice_for_user(user, notice_title, notice_content):
    try:
        Notice(owner_id=user.id,
               title=notice_title,
               content=notice_content,
               create_time=datetime.datetime.now(),
               has_read=False).save()
    except:
        return 0
Esempio n. 6
0
def create_notification():
    form = InfoForm()
    if form.validate_on_submit():
        create = Notice(name=form.name.data, content=form.content.data)
        db.session.add(create)
        db.session.commit()
        return redirect(url_for('dashboard'))
    return render_template('authentication/create_notification.html',
                           form=form)
Esempio n. 7
0
def addNotice():
    if request.method == 'GET':
        return render_template('T_add_notice.html')
    else:
        title = request.form.get('title')
        content = request.form.get('content')
        with app.app_context():
            notice = Notice(title=title, content=content)
            db.session.add(notice)
            # 事务提交
            db.session.commit()
        return redirect(url_for('noticeManage'))
def write_notice():
    if request.method == 'GET':
        return render_template('write_notice.html')
    else:
        # 写入数据库
        title = request.form.get('title')
        content = request.form.get('content')
        school = session.get('school')
        notice = Notice(title=title, content=content, school=school)
        user_id = session.get('user_id')  # 获取id
        user = User.query.filter(User.id == user_id).first()
        notice.author = user
        db.session.add(notice)
        db.session.commit()
        return redirect(url_for('notice'))
Esempio n. 9
0
    def parse_entry(self, entry):
        author_info = entry.find(self.ATOM + 'author')

        id = entry.find(self.STATUSNET + 'notice_info').attrib['local_id']
        author = author_info.find(self.ATOM + 'name').text
        tstamp = entry.find(self.ATOM + 'published').text
        message = entry.find(self.ATOM + 'title').text
        message = message.replace('&', '&amp;')

        avatar_url = ''
        for link in author_info.findall(self.ATOM + 'link'):
            if link.attrib['rel'] == 'avatar' \
                    and link.attrib[self.MEDIA + 'width'] == '48':
                avatar_url = link.attrib['href']

        return Notice(id, author, message, tstamp, avatar_url)
Esempio n. 10
0
def notice(id):
    course = Course.query.get(id)
    notices = course.notices.order_by(Notice.id.desc()).all()  #:获取课程公告,按时间从近到远
    form = NoticeForm()
    #:如果当前登录的教师没有教授这门课程,则禁止访问
    if current_user.id != course.teacher.id:
        abort(403)
    if form.validate_on_submit():
        notice = Notice(title=form.title.data,
                        content=form.content.data,
                        course_id=id)
        db.session.add(notice)
        db.session.commit()
        flash(u'发布公告成功!')
        return redirect(url_for('notice', id=id))
    return render_template('teacherNotice.html',
                           form=form,
                           course=course,
                           notices=notices)
Esempio n. 11
0
 def post(self):
     json_data = request.get_json()
     if not json_data:
         return {'message': 'Datos inválidos'}, 400
     # Validations
     try:
         title = json_data['title']
         url = json_data['url']
         user_id = json_data['user_id']
     except Exception as e:
         return {'message': 'No existen los campos necesarios'}, 400
     # Save data
     my_notice = Notice(title=title, url=url, user_id=user_id)
     db.session.add(my_notice)
     try:
         db.session.commit()
     except Exception as e:
         db.session.rollback()
         return {'message': 'No se ha podido guardar la información'}, 500
     return {'message': 'ok'}, 200
Esempio n. 12
0
    def post(self):
        parser = reqparse.RequestParser()

        parser.add_argument('titulo',
                            type=str,
                            required=True,
                            help="Por favor ingrese un titulo valido")
        parser.add_argument('descripcion',
                            type=str,
                            required=True,
                            help="Por favor ingrese una descripcion valida")
        parser.add_argument('resena',
                            type=str,
                            required=True,
                            help="Por favor ingrese una resena valida")
        parser.add_argument('imagen',
                            type=str,
                            required=True,
                            help="Por favor ingrese una imagen valida")
        parser.add_argument('autor',
                            type=str,
                            required=True,
                            help="Por favor ingrese un autor valido")
        parser.add_argument('categoria',
                            type=int,
                            required=True,
                            help="Por favor ingrese una categoria valido")

        args = parser.parse_args()

        global_f.base64_to_file(args)

        try:
            new_notice = Notice(**args)
            self.session.add(new_notice)
            self.session.flush()
            self.session.commit()
            return self._format_data_notice([(new_notice, )])
        except Exception as error:
            return {"message": error}, 400
Esempio n. 13
0
def like_shell():
    session = db_session()
    shell_id = request.json.get("shell_id")
    type = request.json.get("type")
    receiver_id = session.query(Shell).filter(Shell.id == shell_id).first().user_id
    # type = 'like'
    sender_id = g.user.id
    token = g.user.generate_auth_token().decode('ascii')
    notice = Notice(sender_id=sender_id, receiver_id=receiver_id, type=type)
    usr = session.query(UserShellRelationship).filter(UserShellRelationship.user_id == sender_id,
                                                      UserShellRelationship.shell_id == shell_id).first()
    if usr is None:
        usr = UserShellRelationship(user_id=sender_id, shell_id=shell_id, type=type)
        session.add(usr)
        session.add(notice)
    elif usr.type == type:
        print "delete!"
        session.query(Notice).filter(Notice.sender_id == sender_id, Notice.receiver_id == receiver_id,
                                     Notice.type == type).delete(synchronize_session=False)
        session.delete(usr)
    elif usr.type == "like_collection":
        session.query(Notice).filter(Notice.sender_id == sender_id, Notice.receiver_id == receiver_id,
                                     Notice.type == type).delete(synchronize_session=False)
        usr.type = "like" if type == "collection" else "collection"
    else:
        usr.type = 'like_collection'
        session.add(notice)
    try:
        session.commit()
    finally:
        session.close()
    return jsonify({
        'user_shell_relationship': {
            'id': sender_id,
            'token': token,
            'shell_id': shell_id
        },
        'info': generate_return_info(1, '操作成功')
    })
Esempio n. 14
0
 def save(self):
     notice = Notice(text=self.cleaned_data['text'],
                     user=self.user,
                     project=self.project)
     notice.save()
     return notice
Esempio n. 15
0
def reply(request, topic_id):

    try:
        topic = Topic.objects.get(id=topic_id)
        # comment ---
        comment_list = Comment.objects.filter(
            topic=topic).order_by('created_on')
        paginator = Paginator(comment_list, NUM_COMMENT_PER_PAGE)
        page = request.GET.get('page')
        if page == None:
            page = paginator.num_pages

        try:
            comment_list = paginator.page(page)
        except PageNotAnInteger:
            comment_list = paginator.page(1)
        except EmptyPage:
            comment_list = paginator.page(paginator.num_pages)
        # comment ---
    except Topic.DoesNotExist:
        raise Http404

    if request.method == 'POST':
        form = ReplyForm(request.POST)
        if form.is_valid():
            last_comment = Comment.objects.filter(
                author=request.user).order_by('-created_on')[:1]
            last_comment = last_comment.first()
            if last_comment and last_comment.content == form.clean(
            )['content'] and (
                (timezone.now() - last_comment.created_on).seconds < 10):
                messages.error(request, '你是否正在尝试连续提交两次相同的回复?')
            else:
                comment = form.save(commit=False)
                request.user.comment_num += 1
                request.user.calculate_au()
                request.user.save()
                comment.author = request.user

                try:
                    topic = Topic.objects.get(id=topic_id)
                except Topic.DoesNotExist:
                    raise Http404

                comment.topic = topic
                comment.save()

                # --- 解析@ ---

                #team_name_pattern = re.compile('(?<=@)(\w+)', re.UNICODE)
                team_name_pattern = re.compile('(?<=@)([0-9a-zA-Z_.]+)',
                                               re.UNICODE)
                at_name_list = set(
                    re.findall(team_name_pattern, comment.content))
                if at_name_list:
                    for at_name in at_name_list:
                        if at_name != comment.author.username and at_name != comment.topic.author.username:
                            try:
                                at_user = User.objects.get(username=at_name)
                                if at_user:
                                    notice = Notice(from_user=comment.author,
                                                    to_user=at_user,
                                                    topic=comment.topic,
                                                    content=comment.content)
                                    notice.save()
                            except:
                                pass

                # --- 解析@ ---

                topic.num_comments += 1
                topic.updated_on = timezone.now()
                topic.last_reply = request.user
                topic.save()
                return HttpResponseRedirect(
                    reverse("bbs:topic", args=(topic_id, )))
    else:
        form = ReplyForm()

    return render(
        request, "bbs/topic.html", {
            "node": node,
            "topic": topic,
            "form": form,
            "comment_list": comment_list,
            'paginator': paginator
        })
Esempio n. 16
0
    username = profile['username']
    mail = profile['mail']
    password = generate_password_hash('123')
    # Save in database
    my_user = User(username=username, mail=mail, password=password)
    db.session.add(my_user)

print('Users created')

# Make 1000 fake news
for num in range(1000):
    title = fake.sentence()
    url = fake.uri()
    user_id = randint(1, 100)
    # Save in database
    my_notice = Notice(title=title, url=url, user_id=user_id)
    db.session.add(my_notice)

print('News created')

# Make 10000 fake comments
for num in range(10000):
    text = fake.text()
    notice_id = randint(1, 1000)
    user_id = randint(1, 100)
    # Save in database
    my_comment = Comment(text=text, notice_id=notice_id, user_id=user_id)
    db.session.add(my_comment)

print('Comments created')