~launchpad-pqm/launchpad/devel

« back to all changes in this revision

Viewing changes to lib/lp/code/browser/branch.py

  • Committer: Launchpad Patch Queue Manager
  • Date: 2011-09-26 16:35:37 UTC
  • mfrom: (13995.1.6 add-longpoll)
  • Revision ID: launchpad@pqm.canonical.com-20110926163537-o17y6ic6g9i3g943
[r=julian-edwards][no-qa] Upgrade txlongpoll version.

Show diffs side-by-side

added added

removed removed

Lines of Context:
641
641
               (RevisionControlSystems.SVN, RevisionControlSystems.BZR_SVN)
642
642
 
643
643
    @property
644
 
    def url_is_web(self):
645
 
        """True if an imported branch's URL is HTTP or HTTPS."""
646
 
        # You should only be calling this if it's an SVN, BZR, GIT or HG code
647
 
        # import
 
644
    def svn_url_is_web(self):
 
645
        """True if an imported branch's SVN URL is HTTP or HTTPS."""
 
646
        # You should only be calling this if it's an SVN code import
648
647
        assert self.context.code_import
649
648
        url = self.context.code_import.url
650
649
        assert url
1147
1146
 
1148
1147
    class schema(Interface):
1149
1148
        use_template(
1150
 
            IBranch, include=['owner', 'name', 'lifecycle_status'])
 
1149
            IBranch, include=['owner', 'name', 'url', 'lifecycle_status'])
 
1150
        branch_type = copy_field(
 
1151
            IBranch['branch_type'], vocabulary=UICreatableBranchType)
1151
1152
 
1152
1153
    for_input = True
1153
 
    field_names = ['owner', 'name', 'lifecycle_status']
 
1154
    field_names = ['owner', 'name', 'branch_type', 'url', 'lifecycle_status']
1154
1155
 
1155
1156
    branch = None
 
1157
    custom_widget('branch_type', LaunchpadRadioWidgetWithDescription)
1156
1158
    custom_widget('lifecycle_status', LaunchpadRadioWidgetWithDescription)
1157
1159
 
1158
1160
    initial_focus_widget = 'name'
1181
1183
        """
1182
1184
        return IPerson(self.context, self.user)
1183
1185
 
 
1186
    def showOptionalMarker(self, field_name):
 
1187
        """Don't show the optional marker for url."""
 
1188
        if field_name == 'url':
 
1189
            return False
 
1190
        else:
 
1191
            return LaunchpadFormView.showOptionalMarker(self, field_name)
 
1192
 
1184
1193
    @action('Register Branch', name='add')
1185
1194
    def add_action(self, action, data):
1186
1195
        """Handle a request to create a new branch for this product."""
1187
1196
        try:
 
1197
            ui_branch_type = data['branch_type']
1188
1198
            namespace = self.target.getNamespace(data['owner'])
1189
1199
            self.branch = namespace.createBranch(
1190
 
                branch_type=BranchType.HOSTED,
 
1200
                branch_type=BranchType.items[ui_branch_type.name],
1191
1201
                name=data['name'],
1192
1202
                registrant=self.user,
1193
 
                url=None,
 
1203
                url=data.get('url'),
1194
1204
                lifecycle_status=data['lifecycle_status'])
 
1205
            if self.branch.branch_type == BranchType.MIRRORED:
 
1206
                self.branch.requestMirror()
1195
1207
        except BranchCreationForbidden:
1196
1208
            self.addError(
1197
1209
                "You are not allowed to create branches in %s." %
1209
1221
                'owner',
1210
1222
                'You are not a member of %s' % owner.displayname)
1211
1223
 
 
1224
        branch_type = data.get('branch_type')
 
1225
        # If branch_type failed to validate, then the rest of the method
 
1226
        # doesn't make any sense.
 
1227
        if branch_type is None:
 
1228
            return
 
1229
 
 
1230
        # If the branch is a MIRRORED branch, then the url
 
1231
        # must be supplied, and if HOSTED the url must *not*
 
1232
        # be supplied.
 
1233
        url = data.get('url')
 
1234
        if branch_type == UICreatableBranchType.MIRRORED:
 
1235
            if url is None:
 
1236
                # If the url is not set due to url validation errors,
 
1237
                # there will be an error set for it.
 
1238
                error = self.getFieldError('url')
 
1239
                if not error:
 
1240
                    self.setFieldError(
 
1241
                        'url',
 
1242
                        'Branch URLs are required for Mirrored branches.')
 
1243
        elif branch_type == UICreatableBranchType.HOSTED:
 
1244
            if url is not None:
 
1245
                self.setFieldError(
 
1246
                    'url',
 
1247
                    'Branch URLs cannot be set for Hosted branches.')
 
1248
        elif branch_type == UICreatableBranchType.REMOTE:
 
1249
            # A remote location can, but doesn't have to be set.
 
1250
            pass
 
1251
        else:
 
1252
            raise AssertionError('Unknown branch type')
 
1253
 
1212
1254
    @property
1213
1255
    def cancel_url(self):
1214
1256
        return canonical_url(self.context)