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
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))
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()
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))
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
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)
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')
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)
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
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()
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)
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)