コード例 #1
0
ファイル: application.py プロジェクト: jimcraner/ckanext-apps
 def read(self, id):
     c.auth_for_update = self.authz.am_authorized(c, Action.CHANGE_STATE, System())
     c.auth_for_delete = self.authz.am_authorized(c, Action.PURGE, System())
     c.app = Application.by_name(id)
     if not c.app:
         abort(404)
     return render('app/read.html')
コード例 #2
0
ファイル: application.py プロジェクト: jimcraner/ckanext-apps
def delete_application(application_name):
    application = Application.by_name(application_name)
    if not application_name:
        abort(404)
    app_tags = Session.query(ApplicationTag) \
        .filter(ApplicationTag.application_id==application.id) \
        .all()
    for app_tag in app_tags:
        app_tag.delete()

    application.delete()
    Session.commit()
コード例 #3
0
def create_application(data_dict, image):
    if 'image' in data_dict:
        del data_dict['image']
    data, errors = validate(data_dict, application_schema())
    if errors:
        raise ValidationError(errors, error_summary(errors))

    application = Application(
            name=Application.generate_name(data.get('title')),
            title=data.get('title'),
            url=data.get('url'),
            description=data.get('description'),
            featured=data.get('featured'),
            submitter=data.get('submitter'),
            developer=data.get('developer'),
            developer_url=data.get('developer_url'),
            license=data.get('license'),
            code_url=data.get('code_url'),
            api_url=data.get('api_url'),
        )

    tags = data.get('tags', '').split(' ')
    application.update_tags(tags)

    if image and image.filename and image.file:
        image = ApplicationImage(name=image.filename, 
            data=image.file.read(),
            application=application)
        Session.add(image)
    application.save()
    return application
コード例 #4
0
ファイル: application.py プロジェクト: jimcraner/ckanext-apps
 def edit(self, id, data={}, errors={}, error_summary={}):
     c.auth_for_update = self.authorizer.am_authorized(c, Action.CHANGE_STATE, System())
     if not c.auth_for_update:
         abort(401, _('Unauthorized to edit application'))
     c.app = Application.by_name(id)
     if c.app is None:
         abort(404)
     data = c.app.as_dict()
     data['images'] = c.app.images
     data['tags'] = [t.tag.name for t in c.app.tags]
     if request.method == 'POST' and not errors:
         try:
             data_dict = dict(request.params)
             app = edit_application(c.app, data_dict,
                     request.POST.get('image'),
                     request.POST.getall('keep_images'))
             redirect('/app/%s' % app.name)
         except ValidationError, e:
             errors = e.error_dict
             error_summary = e.error_summary
             return self.edit(data_dict, errors, error_summary)
コード例 #5
0
def application_id_exists(id):
    return Application.by_id(id) is not None
コード例 #6
0
def delete_application(application_name):
    application = Application.by_name(application_name)
    if not application_name:
        abort(404)
    application.delete()
    Session.commit()