コード例 #1
0
    def name(self, args):
        """Display and create a new Revision by name
        
        Parameters
        ----------
        args : list(str)
            List of strings with subcommands

        Returns
        -------
        list(str) - the response messages string array
        """

        if not self.can_edit:
            raise Exception('You do not have permission to add revision text')
        messages = []
        rev_name = ' '.join(args[1:])
        if args[1] == 'rename':
            if len(args) < 4:
                raise Exception(
                    'syntax: ```css\n.d revision rename "ORIGINAL NAME" "NEW NAME"```'
                )
            rev_name_orig = ' '.join(args[2])
            rev_name_new = ' '.join(args[3])
            revision_new = Revision().find(rev_name_new)
            if revision_new:
                raise Exception(
                    f'Cannot rename to _{rev_name_new}_. Revision already exists'
                )
            else:
                revision = Revision().find(rev_name_orig)
                if not rev_name_orig:
                    raise Exception(
                        f'Cannot find original revision named _{rev_name_orig}_'
                    )
                revision.name = rev_name_new
                revision_svc.save(revision, self.user)
                messages.append(revision.get_string(self.user))
        else:
            if len(args) < 4:
                raise Exception(
                    'syntax: ```css\n.d revision name "NAME" "NUMBER" "TEXT"```'
                )
            rev_name = args[1]
            rev_number = args[2]
            rev_text = args[3]
            params = {'name': rev_name, 'number': rev_number, 'text': rev_text}
            revision = Revision().create_new(**params)
            messages.append(revision.get_string(self.user))
        return messages
コード例 #2
0
ファイル: views.py プロジェクト: exoanalytic/django-wiki
def edit(request, name):
    """Allows users to edit wiki pages."""
    try:
        page = Page.objects.get(name=name)
    except Page.DoesNotExist:
        page = None

    if request.method == 'POST':
        form = PageForm(request.POST)
        if form.is_valid():
            if not page:
                page = Page()
            page.name = form.cleaned_data['name']
            page.save()

            revision = Revision()
            revision.page = page
            revision.content = form.cleaned_data['content']
            if request.user.is_authenticated():
                revision.editor = request.user
            revision.save()
            return HttpResponseRedirect(page.get_absolute_url())
    else:
        if page:
            revision = page.get_latest_revision()
            form = PageForm(initial={'name': page.name, 'content': revision.content})
        else:
            form = PageForm(initial={'name': name})

    ctx = { 'form': form }
    return render_to_response('wiki/edit.html', ctx, context_instance=RequestContext(request))
コード例 #3
0
ファイル: file.py プロジェクト: sqba/zentxt
    def post(self):
        #        if not self.check_user():
        #            return

        file_id = self.request.get("id")
        file = self.get_file(file_id)
        if file is None:
            self.response.out.write(file_id + " not found")
            return

        if self.get_file_permission(file) < base.ACCESS_WRITE:
            self.response.out.write("permission denied")
            return

        new_text = self.request.get('content')

        self.log_info("new_text = " + new_text)

        if self.has_text_changed(file, new_text):
            revision = Revision()
            revision.author = self.get_current_user()
            revision.content = new_text
            revision.file = file
            revision.prev = file.head
            revision.put()

            file.head = revision
            file.put()
コード例 #4
0
    def get(self):
        if not self.check_user(False):
            #self.logged_user_home()
            self.redirect('/')
            return

        max_results = 10
        tmp = self.request.get("max")
        if len(tmp):
            max_results = int(tmp)

        query = File.gql("WHERE author = :1", self.get_current_user())
        files = query.fetch(max_results)

        if len(files) > 0:
            head = files[0].head
        else:
            head = Revision()

        user = users.User(base.SUGGESTIONS_USER)
        query = File.gql("WHERE author = :1", user)
        public_files = query.fetch(50)
        files = files + public_files

        template_values = {
            'user': self.get_current_user(),
            'files': files,
            'head': head,
            'login_url': users.create_login_url(self.request.uri)
        }

        path = self.get_template_path('files.html')
        self.response.out.write(template.render(path, template_values))
コード例 #5
0
ファイル: app.py プロジェクト: BenjaminMalley/Notably
def get_entry_template():
    tmp = Entry()
    tmp.revisions.append(Revision(content='', rows=0))
    return render_template(
        'entry.html',
        #create a fake single entry so the template renders a single entry div
        entries=[tmp],
        standalone=True)  #prevent jinja2 from rendering the parent template
コード例 #6
0
ファイル: app.py プロジェクト: BenjaminMalley/Notably
def update_entry(entry_id=None):
    '''Update an existing entry at /update/entry_id/ or make a new one at /update/.
	Returns the entry_id of the new or updated entry.'''
    entry = Entry()
    if entry_id != None:
        entry = Entry.objects(id=entry_id)[0]
    revision = Revision(content=request.form['content'],
                        rows=request.form['rows'])
    entry.add_revision(revision)
    entry.save()
    return str(entry.id)
コード例 #7
0
ファイル: views.py プロジェクト: sujithqb/exegesis
def update_artboard(request):
    try:
        defs_elms = []
        project_name = request.session['project']
        redirection = '/exegesis/artboards?project=' + project_name
        artboard_uuid = request.POST.get('artboard-uuid')
        ArtBoard.objects.filter(project__project__contains=project_name, uuid=artboard_uuid).update(latest=False,
                                                                                                    last_updated=datetime.now())
        old_art = ArtBoard.objects.get(project__project__contains=project_name, uuid=artboard_uuid)
        revision = Revision(name=old_art.artboard, artboard=old_art)
        revision.save()
        images_path = os.path.join('parse_svg', 'templates', 'uploads')
        if not os.path.exists(images_path):
            os.makedirs(images_path)
        for f in request.FILES.getlist('svgfile'):
            filename = f.name
            print 'filename: ', filename
            img_data = f.read()
            uuid_name = uuid.uuid4()
            img_name = "%s.%s" % (uuid_name, 'svg')
            image_path = 'uploads/' + img_name
            url = image_path
            with open(os.path.join(images_path, img_name), "wb") as image:
                image.write(img_data)
            tree = ET.parse(os.path.join(settings.BASE_DIR, 'parse_svg', 'templates') + '/' + url)
            root = tree.getroot()
            for child in root.iter():
                if child.tag.split('}')[1] == 'defs':
                    for subchild in child.iter():
                        defs_elms.append(subchild)
            for child in root.iter():
                if child not in defs_elms:
                    attribute = child.attrib
                    if 'id' in child.attrib:
                        elem_id = check_for_id()
                        child.set('id', elem_id)
                    if child.tag.split('}')[1] == 'use' and 'id' not in attribute.keys() or child.tag.split('}')[
                        1] == 'text' and 'id' not in attribute.keys():
                        elem_id = check_for_id()
                        child.set('id', elem_id)
            tree.write(os.path.join(settings.BASE_DIR, 'parse_svg', 'templates') + '/' + url)
            Project.objects.filter(project=project_name, email=request.user.email).update(thumbnail=url)
            project = Project.objects.get(project=project_name, email=request.user.email)
            filename = filename.split('.')[0]
            new_entry = ArtBoard(project=project, artboard=filename, location=url, uuid=uuid_name, latest=True,
                                 created=datetime.now(), last_updated=datetime.now())
            new_entry.save()
            Project.objects.filter(project=project_name).update(last_updated=datetime.now())
            return redirect(redirection)
    except:
        print sys.exc_info()
        return render(request, 'wrong.html')
コード例 #8
0
 def post(self, page_name):
     page = Page.by_name(page_name)
     if self.user:
         body = self.request.get('content')
     else:  # if posted while not logged in.
         self.write('ERROR: not logged in.')
         self.abort()
     if not page:  # For creatubg a new page.
         page = Page(title=page_name)
         page.put()
     revision = Revision(body=body, user=self.user, parent=page)
     revision.put()
     page.revision = revision
     page.put()
     self.redirect_to('WikiPage', page_name=page_name)
コード例 #9
0
 def delete_revision(self, args, user):
     messages = []
     search = ''
     if len(args) <= 1:
         raise Exception(
             'Revision delte syntax\n```css\n.d revision delete "NAME"```')
     if len(args) > 1:
         search = ' '.join(args[2:])
         revision = Revision().find(search)
     if not revision:
         return [f'"{search}"" was not found. No changes made.']
     else:
         search = str(revision.name)
         revision.archived = True
         self.save(revision, user)
         messages.append(f'***{search}*** removed')
         return messages
コード例 #10
0
def commitRevision():
    # Get list all production in magazine, not SoldOut
    # Get List from magazine
    # All not SoldOut and FromMagazine OK
    # other not OK

    user_id = 1
    id_shop = 4
    bc_from_revision = [
        7895, 7896, 7897, 7898, 7899, 7900, 7901, 7902, 7903, 7904, 7905, 7906,
        7907, 7908, 7909, 7910, 7911, 7912, 7913, 7914, 7915, 7916, 7917, 7918,
        7919, 7920, 7921, 7922, 7923, 7924, 7925, 7926, 7927, 7928, 7929, 7930,
        7931, 7932, 7933, 7934, 7935, 8516, 8517, 8518, 8519, 8520, 8521, 8522,
        8523, 8524, 8525, 8526, 8527, 8528, 8529, 8530, 8531, 8532, 8533, 8534,
        8535, 8536, 8537, 8538, 8539, 8540, 8541, 8542, 8543, 8544, 8545, 8546,
        8547, 8548, 8549, 8550, 8551, 8552, 8553, 8554, 8555, 8556, 8557
    ]

    send_to_shops = SendToShop.objects.filter(Shop_id=Shop.objects.get(
        id=id_shop))
    productToShop = ProductToShop.objects.filter(
        SendToShop_id__in=send_to_shops)
    bar_codes = BarCode.objects.filter(ProductToShop_id__in=productToShop,
                                       SoldOut=False)

    revision = Revision(DateTime=datetime.datetime.now(),
                        User_id=User.objects.get(id=user_id))
    revision.save()

    for bar_code in bar_codes:
        if bar_code.id in bc_from_revision:
            revisionHasBarCode = RevisionHasBarCode(Revision_id=revision,
                                                    BarCode=bar_code,
                                                    OK=True)
        else:
            revisionHasBarCode = RevisionHasBarCode(Revision_id=revision,
                                                    BarCode=bar_code,
                                                    OK=False)

        revisionHasBarCode.save()
コード例 #11
0
ファイル: test_data.py プロジェクト: nprapps/playgrounds2
    def test_prepare_email(self):
        utils.load_test_playgrounds()

        playground = Playground.get(id=1)

        log = '''[{
            "field": "name",
            "from": "%s",
            "to": "Test Playground"
        }]''' % playground.name

        Revision(action='update',
                 timestamp=time.mktime(
                     datetime.datetime.now(pytz.utc).timetuple()),
                 playground=playground,
                 log=log,
                 headers='',
                 cookies='',
                 revision_group=1).save()

        body = app._prepare_email(1)

        self.assertTrue(body.find(playground.name) >= 0)
コード例 #12
0
ファイル: views.py プロジェクト: sujithqb/exegesis
def svg_images(request):
    defs_elms = []
    arts = []
    project_uuid = request.POST.get('project-uuid')
    project = Project.objects.get(uuid=project_uuid, email=request.session['email'])
    project_name = project.project
    redirection = '/exegesis/projects'
    artboards = ArtBoard.objects.filter(project__project__contains=project_name)
    for artboard in artboards:
        arts.append(artboard.artboard)
    images_path = os.path.join('parse_svg', 'templates', 'uploads')
    if not os.path.exists(images_path):
        os.makedirs(images_path)
    for f in request.FILES.getlist('svgfile'):
        filename = f.name
        print 'filename: ', filename
        if filename.endswith('zip'):
            archive = zipfile.ZipFile(f)
            for file in archive.namelist():
                print 'file: ', file
                if file.endswith('svg'):
                    img_data = archive.read(file)
                    uuid_name = uuid.uuid4()
                    img_name = "%s.%s" % (uuid_name, 'svg')
                    image_path = 'uploads/' + img_name
                    url = image_path
                    with open(os.path.join(images_path, img_name), "wb") as image:
                        image.write(img_data)
                    if '/' in file:
                        file = file.split('/')[1]

                    tree = ET.parse(os.path.join(settings.BASE_DIR, 'parse_svg', 'templates') + '/' + url)
                    root = tree.getroot()
                    for child in root.iter():
                        if child.tag.split('}')[1] == 'defs':
                            for subchild in child.iter():
                                defs_elms.append(subchild)
                    for child in root.iter():
                        if child not in defs_elms:
                            attribute = child.attrib
                            if 'id' in attribute:
                                elem_id = check_for_id()
                                child.set('id', elem_id)
                            if child.tag.split('}')[1] == 'use' and 'id' not in attribute.keys() or \
                                                    child.tag.split('}')[1] == 'text' and 'id' not in attribute.keys():
                                elem_id = check_for_id()
                                child.set('id', elem_id)
                    tree.write(os.path.join(settings.BASE_DIR, 'parse_svg', 'templates') + '/' + url)

                    Project.objects.filter(project=project_name, email=request.user.email).update(thumbnail=url)
                    project = Project.objects.get(project=project_name, email=request.user.email)
                    file = file.split('.')[0]
                    if file in arts:
                        old_art = ArtBoard.objects.get(artboard=file, project__project__contains=project_name,
                                                       latest=True)
                        ArtBoard.objects.filter(artboard=file, project__project__contains=project_name).update(
                            latest=False, last_updated=datetime.now())
                        revision_entry = Revision(name=file, artboard=old_art)
                        revision_entry.save()
                    new_entry = ArtBoard(project=project, artboard=file, location=url, uuid=uuid_name, latest=True,
                                         created=datetime.now(), last_updated=datetime.now())
                    new_entry.save()
                    Project.objects.filter(project=project_name).update(last_updated=datetime.now())
        else:
            img_data = f.read()
            uuid_name = uuid.uuid4()
            img_name = "%s.%s" % (uuid_name, 'svg')
            image_path = 'uploads/' + img_name
            url = image_path
            with open(os.path.join(images_path, img_name), "wb") as image:
                image.write(img_data)
            tree = ET.parse(os.path.join(settings.BASE_DIR, 'parse_svg', 'templates') + '/' + url)
            root = tree.getroot()
            for child in root.iter():
                if child.tag.split('}')[1] == 'defs':
                    for subchild in child.iter():
                        defs_elms.append(subchild)
            for child in root.iter():
                if child not in defs_elms:
                    attribute = child.attrib
                    if 'id' in child.attrib:
                        elem_id = check_for_id()
                        child.set('id', elem_id)
                    if child.tag.split('}')[1] == 'use' and 'id' not in attribute.keys() or child.tag.split('}')[
                        1] == 'text' and 'id' not in attribute.keys():
                        elem_id = check_for_id()
                        child.set('id', elem_id)
            tree.write(os.path.join(settings.BASE_DIR, 'parse_svg', 'templates') + '/' + url)
            Project.objects.filter(project=project_name, email=request.user.email).update(thumbnail=url)
            project = Project.objects.get(project=project_name, email=request.user.email)
            filename = filename.split('.')[0]
            if filename in arts:
                old_art = ArtBoard.objects.get(artboard=filename, project__project__contains=project_name, latest=True)
                ArtBoard.objects.filter(artboard=filename, project__project__contains=project_name).update(latest=False,
                                                                                                           last_updated=datetime.now())
                revision_entry = Revision(name=filename, artboard=old_art)
                revision_entry.save()
            new_entry = ArtBoard(project=project, artboard=filename, location=url, uuid=uuid_name, latest=True,
                                 created=datetime.now(), last_updated=datetime.now())
            new_entry.save()
            Project.objects.filter(project=project_name).update(last_updated=datetime.now())
    return redirect(redirection)