Ejemplo n.º 1
0
 def get(self, accountId):
     queryDeveloperApp = ApplicationDeveloper.query.filter_by(
         accountid=accountId).all()
     if not queryDeveloperApp:
         return res.resourceMissing(
             "No apps for developer with account {} found.".format(
                 accountId))
     developerapps, error = applicationdevelopers_schema.dump(
         queryDeveloperApp)
     if error:
         return res.internalServiceError(error)
     allapps = []
     for developerapp in developerapps:
         queryApplication = Application.query.filter(
             Application.id == developerapp["appid"]).filter(
                 or_(
                     Application.active == True,
                     and_(Application.active == False,
                          Application.runningversion == 0))).first()
         if queryApplication:
             queryAppVersion = ApplicationVersion.query.filter(
                 ApplicationVersion.app == queryApplication.id).first()
             developerapp["appDetails"] = application_schema.dump(
                 queryApplication).data
             if queryAppVersion:
                 developerapp["appDetails"][
                     "appversionDetails"] = applicationversion_schema.dump(
                         queryAppVersion).data
             allapps.append(developerapp)
     return res.getSuccess(data=allapps)
Ejemplo n.º 2
0
 def get(self):
     queryApps = Application.query.filter_by(active=True).all()
     print(queryApps)
     if not queryApps:
         return res.resourceMissing("No apps in AppStore yet. Brah!")
     apps, error = applications_schema.dump(queryApps)
     if error:
         return res.internalServiceError(error)
     for a in apps:
         queryAppVersion = ApplicationVersion.query.filter_by(
             id=a["runningversion"]).first()
         a["appversionDetails"] = applicationversion_schema.dump(
             queryAppVersion).data
     return res.getSuccess(data=apps)
Ejemplo n.º 3
0
 def get(self, appversionId):
     queryAppVersion = ApplicationVersion.query.filter_by(
         id=appversionId).first()
     if not queryAppVersion:
         return res.resourceMissing(
             "No version record {} exists.".format(appversionId))
     appVersion, error = applicationversion_schema.dump(queryAppVersion)
     if error:
         return res.internalServiceError(error)
     queryApp = Application.query.filter_by(id=queryAppVersion.app).first()
     if not queryApp:
         return res.resourceMissing("App {} does not exist.".format(
             queryAppVersion.app))
     appVersion["appDetails"] = application_schema.dump(queryApp).data
     return res.getSuccess(data=appVersion)
Ejemplo n.º 4
0
    def get(self, accountId):
        appRequestServ = requests.get(app.config['APPREQUEST_SERVICE'] +
                                      "customer/{}".format(accountId)).json()
        print(json.dumps(appRequestServ))
        if "success" not in appRequestServ["status"]:
            return res.internalServiceError("Sorry :(")
        allRequests = appRequestServ["data"]
        applications = []
        for req in allRequests:
            queryAppVersion = ApplicationVersion.query.filter_by(
                id=req["appversion"]).first()
            queryApp = Application.query.filter_by(
                id=queryAppVersion.app).first()
            thisapp = application_schema.dump(queryApp).data
            thisapp["appversionDetails"] = applicationversion_schema.dump(
                queryAppVersion).data
            applications.append(thisapp)

        return res.getSuccess(data=applications)
Ejemplo n.º 5
0
    def post(self, appId):
        data = request.form
        print(data)
        print(request.files)

        #   Verifies data required was sent in request
        if not data or not data.get("appName") or not data.get(
                "versionNumber") or not data.get("checksum") or not data.get(
                    "versionDescription"):
            return res.badRequestError("Missing data to process request.")

        #   Verifies app version file was sent in request
        if 'file' not in request.files:
            return res.badRequestError("Missing app file.")
        file = request.files['file']

        if "icon" not in request.files:
            return res.badRequestError("Send me an icon.")
        icon = request.files['icon']
        iconPath = os.path.join(app.config["UPLOAD_FOLDER"],
                                data.get("appName"), "Icon")
        print(iconPath)
        saved, msg = ServUtil.saveIcon(icon, iconPath)
        if not saved:
            return res.internalServiceError(msg)

        checksum = ServUtil.checksum_sha256(file)

        if data.get("checksum") == checksum:
            print("good checksum")
        else:
            return res.badRequestError("File corrupted.")
        file.seek(0)
        #   Verifies app exists
        queryApp = Application.query.filter_by(id=appId).first()
        if not queryApp:
            return res.resourceMissing("App {} not found.".format(appId))

        queryAppVersion = ApplicationVersion.query.filter_by(
            app=appId, version=data.get("versionNumber")).first()
        if queryAppVersion:
            return res.resourceExistsError(
                "Duplicate {} v.{} has already been submitted for review.".
                format(queryApp.appname, queryAppVersion.version))

        #   Validates data and creates application version
        appVersionDetails = {
            "app": appId,
            "version": data.get("versionNumber"),
            "description": data.get("versionDescription")
        }
        newappVersion, error = applicationversion_schema.load(
            appVersionDetails)
        if error:
            return res.internalServiceError(error)
        db.session.add(newappVersion)
        db.session.commit()

        #   Saves version files
        saved, msg = ServUtil.saveinAppVersion(app, file, data)
        if not saved:
            return res.internalServiceError(message=msg)

        return res.postSuccess(
            "{} v.{} successfully created !".format(queryApp.appname,
                                                    newappVersion.version),
            applicationversion_schema.dump(newappVersion).data)